@times-components/ts-components 1.145.1-76ee0965069e2a17bc1f8dcf02d24e8fefd6869a.0 → 1.145.1-7e7a12feaf05c514789e802bf49cadca92e6a2b9.10

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 (143) hide show
  1. package/dist/components/carousel-component/CarouselComponent.stories.js +146 -0
  2. package/dist/components/carousel-component/CarouselItem.d.ts +3 -0
  3. package/dist/components/carousel-component/CarouselItem.js +11 -0
  4. package/dist/components/carousel-component/DefaultNavigationArrow.d.ts +8 -0
  5. package/dist/components/carousel-component/DefaultNavigationArrow.js +6 -0
  6. package/dist/components/carousel-component/DefaultPageDot.d.ts +8 -0
  7. package/dist/components/carousel-component/DefaultPageDot.js +4 -0
  8. package/dist/components/{opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.d.ts → carousel-component/__tests__/CarouselComponent.test.d.ts} +0 -1
  9. package/dist/components/carousel-component/__tests__/CarouselComponent.test.js +163 -0
  10. package/dist/components/carousel-component/__tests__/CarouselItem.test.d.ts +1 -0
  11. package/dist/components/carousel-component/__tests__/CarouselItem.test.js +80 -0
  12. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.d.ts +1 -0
  13. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.js +62 -0
  14. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.d.ts +1 -0
  15. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.js +68 -0
  16. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.d.ts +1 -0
  17. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.js +459 -0
  18. package/dist/components/carousel-component/hooks/useCarousel.d.ts +2 -0
  19. package/dist/components/carousel-component/hooks/useCarousel.js +175 -0
  20. package/dist/components/carousel-component/index.d.ts +4 -0
  21. package/dist/components/carousel-component/index.js +20 -0
  22. package/dist/components/carousel-component/styles.d.ts +27 -0
  23. package/dist/components/carousel-component/styles.js +169 -0
  24. package/dist/components/carousel-component/types.d.ts +53 -0
  25. package/dist/components/carousel-component/types.js +2 -0
  26. package/dist/components/opta/football/opta-match-stats/shared/styles.js +1 -8
  27. package/dist/components/trip-cards/SkeletonCard.d.ts +6 -0
  28. package/dist/components/trip-cards/SkeletonCard.js +21 -0
  29. package/dist/components/trip-cards/TripCard.d.ts +3 -0
  30. package/dist/components/trip-cards/TripCard.js +49 -0
  31. package/dist/components/trip-cards/TripCards.stories.d.ts +1 -0
  32. package/dist/components/trip-cards/TripCards.stories.js +189 -0
  33. package/dist/components/trip-cards/TripCardsLayout.d.ts +3 -0
  34. package/dist/components/trip-cards/TripCardsLayout.js +37 -0
  35. package/dist/components/trip-cards/__tests__/SkeletonCard.test.d.ts +1 -0
  36. package/dist/components/trip-cards/__tests__/SkeletonCard.test.js +139 -0
  37. package/dist/components/trip-cards/__tests__/TripCard.test.d.ts +1 -0
  38. package/dist/components/trip-cards/__tests__/TripCard.test.js +95 -0
  39. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.d.ts +1 -0
  40. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.js +277 -0
  41. package/dist/components/trip-cards/__tests__/assets.test.d.ts +1 -0
  42. package/dist/components/trip-cards/__tests__/assets.test.js +165 -0
  43. package/dist/components/trip-cards/__tests__/helpers.test.d.ts +1 -0
  44. package/dist/components/trip-cards/__tests__/helpers.test.js +216 -0
  45. package/dist/components/trip-cards/__tests__/index.test.d.ts +1 -0
  46. package/dist/components/trip-cards/__tests__/index.test.js +433 -0
  47. package/dist/components/trip-cards/__tests__/mockData.test.d.ts +1 -0
  48. package/dist/components/trip-cards/__tests__/mockData.test.js +57 -0
  49. package/dist/components/trip-cards/__tests__/skeletonStyles.test.d.ts +1 -0
  50. package/dist/components/trip-cards/__tests__/skeletonStyles.test.js +194 -0
  51. package/dist/components/trip-cards/assets/BoatIcon.d.ts +1 -0
  52. package/dist/components/trip-cards/assets/BoatIcon.js +4 -0
  53. package/dist/components/trip-cards/assets/CalendarIcon.d.ts +1 -0
  54. package/dist/components/trip-cards/assets/CalendarIcon.js +4 -0
  55. package/dist/components/trip-cards/assets/ChevronRightIcon.d.ts +1 -0
  56. package/dist/components/trip-cards/assets/ChevronRightIcon.js +4 -0
  57. package/dist/components/trip-cards/assets/LocationIcon.d.ts +1 -0
  58. package/dist/components/trip-cards/assets/LocationIcon.js +4 -0
  59. package/dist/components/trip-cards/assets/MoonIcon.d.ts +1 -0
  60. package/dist/components/trip-cards/assets/MoonIcon.js +4 -0
  61. package/dist/components/trip-cards/assets/index.d.ts +6 -0
  62. package/dist/components/trip-cards/assets/index.js +7 -0
  63. package/dist/components/trip-cards/helpers.d.ts +4 -0
  64. package/dist/components/trip-cards/helpers.js +115 -0
  65. package/dist/components/trip-cards/index.d.ts +4 -0
  66. package/dist/components/trip-cards/index.js +70 -0
  67. package/dist/components/trip-cards/mockData.d.ts +3 -0
  68. package/dist/components/trip-cards/mockData.js +317 -0
  69. package/dist/components/trip-cards/skeletonStyles.d.ts +9 -0
  70. package/dist/components/trip-cards/skeletonStyles.js +37 -0
  71. package/dist/components/trip-cards/styles.d.ts +38 -0
  72. package/dist/components/trip-cards/styles.js +401 -0
  73. package/dist/components/trip-cards/types.d.ts +119 -0
  74. package/dist/components/trip-cards/types.js +2 -0
  75. package/dist/index.d.ts +1 -0
  76. package/dist/index.js +2 -4
  77. package/package.json +3 -3
  78. package/rnw.js +1 -1
  79. package/src/components/carousel-component/CarouselComponent.stories.tsx +220 -0
  80. package/src/components/carousel-component/CarouselItem.tsx +25 -0
  81. package/src/components/carousel-component/DefaultNavigationArrow.tsx +37 -0
  82. package/src/components/carousel-component/DefaultPageDot.tsx +20 -0
  83. package/src/components/carousel-component/__tests__/CarouselComponent.test.tsx +259 -0
  84. package/src/components/carousel-component/__tests__/CarouselItem.test.tsx +140 -0
  85. package/src/components/carousel-component/__tests__/DefaultNavigationArrow.test.tsx +153 -0
  86. package/src/components/carousel-component/__tests__/DefaultPageDot.test.tsx +105 -0
  87. package/src/components/carousel-component/hooks/__tests__/useCarousel.test.ts +625 -0
  88. package/src/components/carousel-component/hooks/useCarousel.ts +231 -0
  89. package/src/components/carousel-component/index.tsx +92 -0
  90. package/src/components/carousel-component/styles.ts +185 -0
  91. package/src/components/carousel-component/types.ts +62 -0
  92. package/src/components/opta/football/opta-match-stats/commentary/__tests__/__snapshots__/OptaMatchStatsCommentary.test.tsx.snap +1 -1
  93. package/src/components/opta/football/opta-match-stats/shared/styles.ts +0 -8
  94. package/src/components/opta/football/opta-match-stats/stats-graphs/__tests__/__snapshots__/OptaMatchStatsGraphs.test.tsx.snap +1 -1
  95. package/src/components/trip-cards/SkeletonCard.tsx +62 -0
  96. package/src/components/trip-cards/TripCard.tsx +143 -0
  97. package/src/components/trip-cards/TripCards.stories.tsx +254 -0
  98. package/src/components/trip-cards/TripCardsLayout.tsx +108 -0
  99. package/src/components/trip-cards/__tests__/SkeletonCard.test.tsx +169 -0
  100. package/src/components/trip-cards/__tests__/TripCard.test.tsx +120 -0
  101. package/src/components/trip-cards/__tests__/TripCardsLayout.test.tsx +532 -0
  102. package/src/components/trip-cards/__tests__/assets.test.tsx +206 -0
  103. package/src/components/trip-cards/__tests__/helpers.test.ts +266 -0
  104. package/src/components/trip-cards/__tests__/index.test.tsx +495 -0
  105. package/src/components/trip-cards/__tests__/mockData.test.ts +67 -0
  106. package/src/components/trip-cards/__tests__/skeletonStyles.test.tsx +256 -0
  107. package/src/components/trip-cards/assets/BoatIcon.tsx +17 -0
  108. package/src/components/trip-cards/assets/CalendarIcon.tsx +17 -0
  109. package/src/components/trip-cards/assets/ChevronRightIcon.tsx +20 -0
  110. package/src/components/trip-cards/assets/LocationIcon.tsx +17 -0
  111. package/src/components/trip-cards/assets/MoonIcon.tsx +17 -0
  112. package/src/components/trip-cards/assets/index.ts +7 -0
  113. package/src/components/trip-cards/helpers.ts +150 -0
  114. package/src/components/trip-cards/index.tsx +119 -0
  115. package/src/components/trip-cards/mockData.ts +345 -0
  116. package/src/components/trip-cards/skeletonStyles.ts +46 -0
  117. package/src/components/trip-cards/styles.ts +446 -0
  118. package/src/components/trip-cards/types.ts +128 -0
  119. package/src/index.ts +2 -3
  120. package/dist/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.d.ts +0 -10
  121. package/dist/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.js +0 -69
  122. package/dist/components/opta/football/opta-match-stats/matchday-live/MobileWidget.d.ts +0 -12
  123. package/dist/components/opta/football/opta-match-stats/matchday-live/MobileWidget.js +0 -90
  124. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.d.ts +0 -12
  125. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.js +0 -10
  126. package/dist/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.js +0 -24
  127. package/dist/components/opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.js +0 -48
  128. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.d.ts +0 -1
  129. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.js +0 -19
  130. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.d.ts +0 -12
  131. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.js +0 -67
  132. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.d.ts +0 -6
  133. package/dist/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.js +0 -714
  134. package/src/components/opta/football/opta-match-stats/matchday-live/DesktopWidget.tsx +0 -108
  135. package/src/components/opta/football/opta-match-stats/matchday-live/MobileWidget.tsx +0 -158
  136. package/src/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.tsx +0 -38
  137. package/src/components/opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.tsx +0 -23
  138. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/OptaMatchStatsMatchdayLive.test.tsx +0 -61
  139. package/src/components/opta/football/opta-match-stats/matchday-live/__tests__/__snapshots__/OptaMatchStatsMatchdayLive.test.tsx.snap +0 -61
  140. package/src/components/opta/football/opta-match-stats/matchday-live/styles/MatchdayLiveController.tsx +0 -19
  141. package/src/components/opta/football/opta-match-stats/matchday-live/styles/NavigationWrapper.tsx +0 -81
  142. package/src/components/opta/football/opta-match-stats/matchday-live/styles/WidgetContainer.tsx +0 -745
  143. /package/dist/components/{opta/football/opta-match-stats/matchday-live/OptaMatchStatsMatchdayLive.stories.d.ts → carousel-component/CarouselComponent.stories.d.ts} +0 -0
@@ -0,0 +1,146 @@
1
+ import React from 'react';
2
+ import { storiesOf } from '@storybook/react';
3
+ import { CarouselComponent, CarouselItem } from './index';
4
+ import styled from 'styled-components';
5
+ // Simple card component for demos
6
+ const SimpleCard = styled.div `
7
+ background: ${props => props.color};
8
+ height: 300px;
9
+ border-radius: 8px;
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ color: white;
14
+ font-size: 24px;
15
+ font-weight: 600;
16
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
17
+ `;
18
+ const Container = styled.div `
19
+ max-width: 1200px;
20
+ margin: 40px auto;
21
+ padding: 0 20px;
22
+ `;
23
+ const Title = styled.h2 `
24
+ margin-bottom: 24px;
25
+ font-size: 24px;
26
+ font-weight: 600;
27
+ `;
28
+ storiesOf('Typescript Component/CarouselComponent', module)
29
+ .add('Two Cards Per Page', () => {
30
+ const colors = [
31
+ '#005C8A',
32
+ '#FF6B6B',
33
+ '#4ECDC4',
34
+ '#45B7D1',
35
+ '#96CEB4',
36
+ '#FFEAA7'
37
+ ];
38
+ const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
39
+ mobile: '90%',
40
+ tablet: '70%',
41
+ desktop: 'calc(47% - 10px)'
42
+ } },
43
+ React.createElement(SimpleCard, { color: color },
44
+ "Card ",
45
+ index + 1))));
46
+ return (React.createElement(Container, null,
47
+ React.createElement(Title, null, "Two Cards Per Page (with peek)"),
48
+ React.createElement(CarouselComponent, { items: items, options: {
49
+ itemsPerPage: 2
50
+ }, showArrows: true, showDots: true })));
51
+ })
52
+ .add('Three Cards Per Page', () => {
53
+ const colors = [
54
+ '#005C8A',
55
+ '#FF6B6B',
56
+ '#4ECDC4',
57
+ '#45B7D1',
58
+ '#96CEB4',
59
+ '#FFEAA7',
60
+ '#DFE6E9',
61
+ '#74B9FF',
62
+ '#A29BFE'
63
+ ];
64
+ const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
65
+ mobile: '85%',
66
+ tablet: '40%',
67
+ desktop: 'calc(31% - 14px)'
68
+ } },
69
+ React.createElement(SimpleCard, { color: color },
70
+ "Card ",
71
+ index + 1))));
72
+ return (React.createElement(Container, null,
73
+ React.createElement(Title, null, "Three Cards Per Page (with peek)"),
74
+ React.createElement(CarouselComponent, { items: items, options: {
75
+ itemsPerPage: 3
76
+ }, showArrows: true, showDots: true })));
77
+ })
78
+ .add('Minimal Example', () => {
79
+ const items = [
80
+ React.createElement(CarouselItem, { key: "1", widthItemConfig: {
81
+ mobile: '90%',
82
+ tablet: '70%',
83
+ desktop: 'calc(47% - 10px)'
84
+ } },
85
+ React.createElement(SimpleCard, { color: "#005C8A" }, "Card 1")),
86
+ React.createElement(CarouselItem, { key: "2", widthItemConfig: {
87
+ mobile: '90%',
88
+ tablet: '70%',
89
+ desktop: 'calc(47% - 10px)'
90
+ } },
91
+ React.createElement(SimpleCard, { color: "#FF6B6B" }, "Card 2")),
92
+ React.createElement(CarouselItem, { key: "3", widthItemConfig: {
93
+ mobile: '90%',
94
+ tablet: '70%',
95
+ desktop: 'calc(47% - 10px)'
96
+ } },
97
+ React.createElement(SimpleCard, { color: "#4ECDC4" }, "Card 3")),
98
+ React.createElement(CarouselItem, { key: "4", widthItemConfig: {
99
+ mobile: '90%',
100
+ tablet: '70%',
101
+ desktop: 'calc(47% - 10px)'
102
+ } },
103
+ React.createElement(SimpleCard, { color: "#45B7D1" }, "Card 4"))
104
+ ];
105
+ return (React.createElement(Container, null,
106
+ React.createElement(Title, null, "Simple 4 Cards"),
107
+ React.createElement(CarouselComponent, { items: items })));
108
+ })
109
+ .add('Without Navigation', () => {
110
+ const colors = ['#005C8A', '#FF6B6B', '#4ECDC4', '#45B7D1'];
111
+ const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
112
+ mobile: '90%',
113
+ tablet: '70%',
114
+ desktop: 'calc(47% - 10px)'
115
+ } },
116
+ React.createElement(SimpleCard, { color: color },
117
+ "Card ",
118
+ index + 1))));
119
+ return (React.createElement(Container, null,
120
+ React.createElement(Title, null, "Scroll Only (No Arrows/Dots)"),
121
+ React.createElement(CarouselComponent, { items: items, showArrows: false, showDots: false })));
122
+ })
123
+ .add('Three Cards Exact Width (No Peek)', () => {
124
+ const colors = [
125
+ '#005C8A',
126
+ '#FF6B6B',
127
+ '#4ECDC4',
128
+ '#45B7D1',
129
+ '#96CEB4',
130
+ '#FFEAA7'
131
+ ];
132
+ const items = colors.map((color, index) => (React.createElement(CarouselItem, { key: index, widthItemConfig: {
133
+ mobile: '90%',
134
+ tablet: '70%',
135
+ desktop: 'calc(33% - 10px)'
136
+ } },
137
+ React.createElement(SimpleCard, { color: color },
138
+ "Card ",
139
+ index + 1))));
140
+ return (React.createElement(Container, null,
141
+ React.createElement(Title, null, "Three Cards Per Page (exact width, no peek)"),
142
+ React.createElement(CarouselComponent, { items: items, options: {
143
+ itemsPerPage: 3
144
+ }, showArrows: true, showDots: true })));
145
+ });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxDb21wb25lbnQuc3Rvcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9DYXJvdXNlbENvbXBvbmVudC5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUQsT0FBTyxNQUFNLE1BQU0sbUJBQW1CLENBQUM7QUFFdkMsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQW1CO2dCQUNoQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLOzs7Ozs7Ozs7O0NBVW5DLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBOzs7O0NBSTNCLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBOzs7O0NBSXRCLENBQUM7QUFFRixTQUFTLENBQUMsd0NBQXdDLEVBQUUsTUFBTSxDQUFDO0tBQ3hELEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsTUFBTSxNQUFNLEdBQUc7UUFDYixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVixDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3pDLG9CQUFDLFlBQVksSUFDWCxHQUFHLEVBQUUsS0FBSyxFQUNWLGVBQWUsRUFBRTtZQUNmLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsa0JBQWtCO1NBQzVCO1FBRUQsb0JBQUMsVUFBVSxJQUFDLEtBQUssRUFBRSxLQUFLOztZQUFRLEtBQUssR0FBRyxDQUFDLENBQWMsQ0FDMUMsQ0FDaEIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUNMLG9CQUFDLFNBQVM7UUFDUixvQkFBQyxLQUFLLHlDQUF1QztRQUM3QyxvQkFBQyxpQkFBaUIsSUFDaEIsS0FBSyxFQUFFLEtBQUssRUFDWixPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLENBQUM7YUFDaEIsRUFDRCxVQUFVLEVBQUUsSUFBSSxFQUNoQixRQUFRLEVBQUUsSUFBSSxHQUNkLENBQ1EsQ0FDYixDQUFDO0FBQ0osQ0FBQyxDQUFDO0tBQ0QsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxNQUFNLE1BQU0sR0FBRztRQUNiLFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWLENBQUM7SUFFRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDekMsb0JBQUMsWUFBWSxJQUNYLEdBQUcsRUFBRSxLQUFLLEVBQ1YsZUFBZSxFQUFFO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxrQkFBa0I7U0FDNUI7UUFFRCxvQkFBQyxVQUFVLElBQUMsS0FBSyxFQUFFLEtBQUs7O1lBQVEsS0FBSyxHQUFHLENBQUMsQ0FBYyxDQUMxQyxDQUNoQixDQUFDLENBQUM7SUFFSCxPQUFPLENBQ0wsb0JBQUMsU0FBUztRQUNSLG9CQUFDLEtBQUssMkNBQXlDO1FBQy9DLG9CQUFDLGlCQUFpQixJQUNoQixLQUFLLEVBQUUsS0FBSyxFQUNaLE9BQU8sRUFBRTtnQkFDUCxZQUFZLEVBQUUsQ0FBQzthQUNoQixFQUNELFVBQVUsRUFBRSxJQUFJLEVBQ2hCLFFBQVEsRUFBRSxJQUFJLEdBQ2QsQ0FDUSxDQUNiLENBQUM7QUFDSixDQUFDLENBQUM7S0FDRCxHQUFHLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQzNCLE1BQU0sS0FBSyxHQUFHO1FBQ1osb0JBQUMsWUFBWSxJQUNYLEdBQUcsRUFBQyxHQUFHLEVBQ1AsZUFBZSxFQUFFO2dCQUNmLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxrQkFBa0I7YUFDNUI7WUFFRCxvQkFBQyxVQUFVLElBQUMsS0FBSyxFQUFDLFNBQVMsYUFBb0IsQ0FDbEM7UUFDZixvQkFBQyxZQUFZLElBQ1gsR0FBRyxFQUFDLEdBQUcsRUFDUCxlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLGtCQUFrQjthQUM1QjtZQUVELG9CQUFDLFVBQVUsSUFBQyxLQUFLLEVBQUMsU0FBUyxhQUFvQixDQUNsQztRQUNmLG9CQUFDLFlBQVksSUFDWCxHQUFHLEVBQUMsR0FBRyxFQUNQLGVBQWUsRUFBRTtnQkFDZixNQUFNLEVBQUUsS0FBSztnQkFDYixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsa0JBQWtCO2FBQzVCO1lBRUQsb0JBQUMsVUFBVSxJQUFDLEtBQUssRUFBQyxTQUFTLGFBQW9CLENBQ2xDO1FBQ2Ysb0JBQUMsWUFBWSxJQUNYLEdBQUcsRUFBQyxHQUFHLEVBQ1AsZUFBZSxFQUFFO2dCQUNmLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxrQkFBa0I7YUFDNUI7WUFFRCxvQkFBQyxVQUFVLElBQUMsS0FBSyxFQUFDLFNBQVMsYUFBb0IsQ0FDbEM7S0FDaEIsQ0FBQztJQUVGLE9BQU8sQ0FDTCxvQkFBQyxTQUFTO1FBQ1Isb0JBQUMsS0FBSyx5QkFBdUI7UUFDN0Isb0JBQUMsaUJBQWlCLElBQUMsS0FBSyxFQUFFLEtBQUssR0FBSSxDQUN6QixDQUNiLENBQUM7QUFDSixDQUFDLENBQUM7S0FDRCxHQUFHLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQzlCLE1BQU0sTUFBTSxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFNUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3pDLG9CQUFDLFlBQVksSUFDWCxHQUFHLEVBQUUsS0FBSyxFQUNWLGVBQWUsRUFBRTtZQUNmLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsa0JBQWtCO1NBQzVCO1FBRUQsb0JBQUMsVUFBVSxJQUFDLEtBQUssRUFBRSxLQUFLOztZQUFRLEtBQUssR0FBRyxDQUFDLENBQWMsQ0FDMUMsQ0FDaEIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUNMLG9CQUFDLFNBQVM7UUFDUixvQkFBQyxLQUFLLHVDQUFxQztRQUMzQyxvQkFBQyxpQkFBaUIsSUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBSSxDQUM3RCxDQUNiLENBQUM7QUFDSixDQUFDLENBQUM7S0FDRCxHQUFHLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO0lBQzdDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1YsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUN6QyxvQkFBQyxZQUFZLElBQ1gsR0FBRyxFQUFFLEtBQUssRUFDVixlQUFlLEVBQUU7WUFDZixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFLGtCQUFrQjtTQUM1QjtRQUVELG9CQUFDLFVBQVUsSUFBQyxLQUFLLEVBQUUsS0FBSzs7WUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFjLENBQzFDLENBQ2hCLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FDTCxvQkFBQyxTQUFTO1FBQ1Isb0JBQUMsS0FBSyxzREFBb0Q7UUFDMUQsb0JBQUMsaUJBQWlCLElBQ2hCLEtBQUssRUFBRSxLQUFLLEVBQ1osT0FBTyxFQUFFO2dCQUNQLFlBQVksRUFBRSxDQUFDO2FBQ2hCLEVBQ0QsVUFBVSxFQUFFLElBQUksRUFDaEIsUUFBUSxFQUFFLElBQUksR0FDZCxDQUNRLENBQ2IsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { CarouselItemProps } from './types';
3
+ export declare const CarouselItem: React.FC<CarouselItemProps>;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ItemContainer } from './styles';
3
+ export const CarouselItem = ({ children, widthItemConfig = {
4
+ mobile: '90%',
5
+ tablet: '70%',
6
+ desktop: 'calc(50% - 10px)',
7
+ xl: 'calc(50% - 10px)'
8
+ }, maxWidthItemConfig, className }) => {
9
+ return (React.createElement(ItemContainer, { widthItemConfig: widthItemConfig, maxWidthItemConfig: maxWidthItemConfig, className: className }, children));
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxJdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2Fyb3VzZWwtY29tcG9uZW50L0Nhcm91c2VsSXRlbS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHekMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxDQUFDLEVBQ3hELFFBQVEsRUFDUixlQUFlLEdBQUc7SUFDaEIsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsRUFBRSxFQUFFLGtCQUFrQjtDQUN2QixFQUNELGtCQUFrQixFQUNsQixTQUFTLEVBQ1YsRUFBRSxFQUFFO0lBQ0gsT0FBTyxDQUNMLG9CQUFDLGFBQWEsSUFDWixlQUFlLEVBQUUsZUFBZSxFQUNoQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFDdEMsU0FBUyxFQUFFLFNBQVMsSUFFbkIsUUFBUSxDQUNLLENBQ2pCLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface NavigationArrowProps {
3
+ direction: 'left' | 'right';
4
+ onClick: () => void;
5
+ disabled: boolean;
6
+ }
7
+ export declare const DefaultNavigationArrow: React.FC<NavigationArrowProps>;
8
+ export {};
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { NavigationArrowButton } from './styles';
3
+ export const DefaultNavigationArrow = ({ direction, onClick, disabled }) => (React.createElement(NavigationArrowButton, { direction: direction, onClick: onClick, disabled: disabled, "aria-label": `${direction === 'left' ? 'Previous' : 'Next'} items` },
4
+ React.createElement("svg", { width: "24", height: "24", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("path", { d: direction === 'left' ? 'M10 12L6 8L10 4' : 'M6 12L10 8L6 4', stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }))));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdE5hdmlnYXRpb25BcnJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9EZWZhdWx0TmF2aWdhdGlvbkFycm93LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBUWpELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFtQyxDQUFDLEVBQ3JFLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNULEVBQUUsRUFBRSxDQUFDLENBQ0osb0JBQUMscUJBQXFCLElBQ3BCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsRUFBRSxRQUFRLGdCQUNOLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVE7SUFFakUsNkJBQ0UsS0FBSyxFQUFDLElBQUksRUFDVixNQUFNLEVBQUMsSUFBSSxFQUNYLE9BQU8sRUFBQyxXQUFXLEVBQ25CLElBQUksRUFBQyxNQUFNLEVBQ1gsS0FBSyxFQUFDLDRCQUE0QjtRQUVsQyw4QkFDRSxDQUFDLEVBQUUsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUM5RCxNQUFNLEVBQUMsY0FBYyxFQUNyQixXQUFXLEVBQUMsS0FBSyxFQUNqQixhQUFhLEVBQUMsT0FBTyxFQUNyQixjQUFjLEVBQUMsT0FBTyxHQUN0QixDQUNFLENBQ2dCLENBQ3pCLENBQUMifQ==
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface PageDotProps {
3
+ active: boolean;
4
+ onClick: () => void;
5
+ index: number;
6
+ }
7
+ export declare const DefaultPageDot: React.FC<PageDotProps>;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { PageDotButton } from './styles';
3
+ export const DefaultPageDot = ({ active, onClick, index }) => (React.createElement(PageDotButton, { active: active, onClick: onClick, "aria-label": `Go to page ${index + 1}` }));
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFBhZ2VEb3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jYXJvdXNlbC1jb21wb25lbnQvRGVmYXVsdFBhZ2VEb3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBUXpDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBMkIsQ0FBQyxFQUNyRCxNQUFNLEVBQ04sT0FBTyxFQUNQLEtBQUssRUFDTixFQUFFLEVBQUUsQ0FBQyxDQUNKLG9CQUFDLGFBQWEsSUFDWixNQUFNLEVBQUUsTUFBTSxFQUNkLE9BQU8sRUFBRSxPQUFPLGdCQUNKLGNBQWMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUNyQyxDQUNILENBQUMifQ==
@@ -0,0 +1,163 @@
1
+ import React from 'react';
2
+ import { render, screen, fireEvent } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import { CarouselComponent } from '../index';
5
+ describe('CarouselComponent', () => {
6
+ const mockItems = [
7
+ React.createElement("div", { key: "1" }, "Item 1"),
8
+ React.createElement("div", { key: "2" }, "Item 2"),
9
+ React.createElement("div", { key: "3" }, "Item 3"),
10
+ React.createElement("div", { key: "4" }, "Item 4")
11
+ ];
12
+ beforeEach(() => {
13
+ Element.prototype.scrollTo = jest.fn();
14
+ });
15
+ it('renders all items', () => {
16
+ render(React.createElement(CarouselComponent, { items: mockItems }));
17
+ expect(screen.getByText('Item 1')).toBeInTheDocument();
18
+ expect(screen.getByText('Item 2')).toBeInTheDocument();
19
+ expect(screen.getByText('Item 3')).toBeInTheDocument();
20
+ expect(screen.getByText('Item 4')).toBeInTheDocument();
21
+ });
22
+ it('renders navigation arrows by default', () => {
23
+ render(React.createElement(CarouselComponent, { items: mockItems }));
24
+ const prevButton = screen.getByLabelText('Previous items');
25
+ const nextButton = screen.getByLabelText('Next items');
26
+ expect(prevButton).toBeInTheDocument();
27
+ expect(nextButton).toBeInTheDocument();
28
+ });
29
+ it('hides navigation arrows when showArrows is false', () => {
30
+ render(React.createElement(CarouselComponent, { items: mockItems, showArrows: false }));
31
+ const buttons = screen.getAllByRole('button');
32
+ expect(buttons.length).toBe(2);
33
+ });
34
+ it('renders pagination dots by default', () => {
35
+ render(React.createElement(CarouselComponent, { items: mockItems }));
36
+ const dots = screen
37
+ .getAllByRole('button')
38
+ .filter(btn => !btn.querySelector('svg'));
39
+ expect(dots.length).toBeGreaterThan(0);
40
+ });
41
+ it('hides pagination dots when showDots is false', () => {
42
+ render(React.createElement(CarouselComponent, { items: mockItems, showDots: false, showArrows: false }));
43
+ const buttons = screen.queryAllByRole('button');
44
+ expect(buttons.length).toBe(0);
45
+ });
46
+ it('applies custom className', () => {
47
+ const { container } = render(React.createElement(CarouselComponent, { items: mockItems, className: "custom-carousel" }));
48
+ expect(container.querySelector('.custom-carousel')).toBeInTheDocument();
49
+ });
50
+ it('handles itemsPerPage option', () => {
51
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 1 } }));
52
+ const dots = screen
53
+ .getAllByRole('button')
54
+ .filter(btn => !btn.querySelector('svg'));
55
+ expect(dots.length).toBe(4);
56
+ });
57
+ it('handles empty items array', () => {
58
+ const { container } = render(React.createElement(CarouselComponent, { items: [] }));
59
+ expect(container.querySelector('[role="button"]')).not.toBeInTheDocument();
60
+ });
61
+ it('handles single item', () => {
62
+ render(React.createElement(CarouselComponent, { items: [React.createElement("div", { key: "1" }, "Single Item")] }));
63
+ expect(screen.getByText('Single Item')).toBeInTheDocument();
64
+ });
65
+ it('calls onPageChange callback when provided', () => {
66
+ const onPageChange = jest.fn();
67
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { onPageChange } }));
68
+ const nextButton = screen
69
+ .getAllByRole('button')
70
+ .find(btn => btn.querySelector('svg'));
71
+ if (nextButton) {
72
+ fireEvent.click(nextButton);
73
+ expect(onPageChange).toHaveBeenCalled();
74
+ }
75
+ });
76
+ it('renders with custom arrow component', () => {
77
+ const CustomArrow = ({ direction }) => (React.createElement("button", null,
78
+ "Custom ",
79
+ direction));
80
+ render(React.createElement(CarouselComponent, { items: mockItems, arrowComponent: CustomArrow }));
81
+ const customArrows = screen.getAllByText(/Custom/);
82
+ expect(customArrows.length).toBe(2);
83
+ expect(customArrows[0]).toBeInTheDocument();
84
+ });
85
+ it('renders with custom dot component', () => {
86
+ const CustomDot = ({ index }) => (React.createElement("button", null,
87
+ "Dot ",
88
+ index));
89
+ render(React.createElement(CarouselComponent, { items: mockItems, dotComponent: CustomDot }));
90
+ const customDots = screen.getAllByText(/Dot/);
91
+ expect(customDots.length).toBe(2);
92
+ expect(customDots[0]).toBeInTheDocument();
93
+ });
94
+ it('navigates to next page when next arrow is clicked', () => {
95
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
96
+ const nextButton = screen.getByLabelText('Next items');
97
+ fireEvent.click(nextButton);
98
+ expect(Element.prototype.scrollTo).toHaveBeenCalled();
99
+ });
100
+ it('navigates to previous page when previous arrow is clicked', () => {
101
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
102
+ const nextButton = screen.getByLabelText('Next items');
103
+ const prevButton = screen.getByLabelText('Previous items');
104
+ fireEvent.click(nextButton);
105
+ fireEvent.click(prevButton);
106
+ expect(Element.prototype.scrollTo).toHaveBeenCalled();
107
+ });
108
+ it('handles mouse drag events', () => {
109
+ const { container } = render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
110
+ const carouselRow = container.querySelector('div > div > div');
111
+ if (carouselRow) {
112
+ fireEvent.mouseDown(carouselRow, { pageX: 100 });
113
+ fireEvent.mouseMove(carouselRow, { pageX: 50 });
114
+ fireEvent.mouseUp(carouselRow);
115
+ }
116
+ expect(carouselRow).toBeInTheDocument();
117
+ });
118
+ it('disables previous arrow on first page', () => {
119
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
120
+ const prevButton = screen.getByLabelText('Previous items');
121
+ expect(prevButton).toBeDisabled();
122
+ });
123
+ it('renders correct number of page dots', () => {
124
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
125
+ const dots = screen
126
+ .getAllByRole('button')
127
+ .filter(btn => !btn.querySelector('svg'));
128
+ expect(dots.length).toBe(2);
129
+ });
130
+ it('handles page dot click', () => {
131
+ render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
132
+ const dots = screen
133
+ .getAllByRole('button')
134
+ .filter(btn => !btn.querySelector('svg'));
135
+ if (dots[1]) {
136
+ fireEvent.click(dots[1]);
137
+ expect(Element.prototype.scrollTo).toHaveBeenCalled();
138
+ }
139
+ });
140
+ it('hides dots when there is only one page', () => {
141
+ render(React.createElement(CarouselComponent, { items: [React.createElement("div", { key: "1" }, "Item 1")], options: { itemsPerPage: 2 } }));
142
+ const dots = screen
143
+ .queryAllByRole('button')
144
+ .filter(btn => !btn.querySelector('svg'));
145
+ expect(dots.length).toBe(0);
146
+ });
147
+ it('handles mouse leave event during drag', () => {
148
+ const { container } = render(React.createElement(CarouselComponent, { items: mockItems, options: { itemsPerPage: 2 } }));
149
+ const carouselRow = container.querySelector('div > div > div');
150
+ if (carouselRow) {
151
+ fireEvent.mouseDown(carouselRow, { pageX: 100 });
152
+ fireEvent.mouseMove(carouselRow, { pageX: 50 });
153
+ fireEvent.mouseLeave(carouselRow);
154
+ }
155
+ expect(carouselRow).toBeInTheDocument();
156
+ });
157
+ it('applies correct styles to carousel container', () => {
158
+ const { container } = render(React.createElement(CarouselComponent, { items: mockItems }));
159
+ const carouselContainer = container.firstChild;
160
+ expect(carouselContainer).toBeInTheDocument();
161
+ });
162
+ });
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxDb21wb25lbnQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9fX3Rlc3RzX18vQ2Fyb3VzZWxDb21wb25lbnQudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxTQUFTLEdBQUc7UUFDaEIsNkJBQUssR0FBRyxFQUFDLEdBQUcsYUFBYTtRQUN6Qiw2QkFBSyxHQUFHLEVBQUMsR0FBRyxhQUFhO1FBQ3pCLDZCQUFLLEdBQUcsRUFBQyxHQUFHLGFBQWE7UUFDekIsNkJBQUssR0FBRyxFQUFDLEdBQUcsYUFBYTtLQUMxQixDQUFDO0lBRUYsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDM0IsTUFBTSxDQUFDLG9CQUFDLGlCQUFpQixJQUFDLEtBQUssRUFBRSxTQUFTLEdBQUksQ0FBQyxDQUFDO1FBRWhELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkQs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
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import { CarouselItem } from '../CarouselItem';
5
+ describe('CarouselItem', () => {
6
+ it('renders children correctly', () => {
7
+ render(React.createElement(CarouselItem, null,
8
+ React.createElement("div", null, "Test Content")));
9
+ expect(screen.getByText('Test Content')).toBeInTheDocument();
10
+ });
11
+ it('applies custom className', () => {
12
+ const { container } = render(React.createElement(CarouselItem, { className: "custom-class" },
13
+ React.createElement("div", null, "Test Content")));
14
+ expect(container.firstChild).toHaveClass('custom-class');
15
+ });
16
+ it('uses default widthConfig when not provided', () => {
17
+ const { container } = render(React.createElement(CarouselItem, null,
18
+ React.createElement("div", null, "Test Content")));
19
+ expect(container.firstChild).toBeInTheDocument();
20
+ });
21
+ it('accepts custom widthConfig', () => {
22
+ render(React.createElement(CarouselItem, { widthItemConfig: {
23
+ xs: '70%',
24
+ mobile: '90%',
25
+ tablet: '45%',
26
+ desktop: '30%',
27
+ xl: '25%'
28
+ } },
29
+ React.createElement("div", null, "Test Content")));
30
+ expect(screen.getByText('Test Content')).toBeInTheDocument();
31
+ });
32
+ it('accepts partial widthConfig', () => {
33
+ render(React.createElement(CarouselItem, { widthItemConfig: {
34
+ mobile: '80%',
35
+ desktop: '40%'
36
+ } },
37
+ React.createElement("div", null, "Test Content")));
38
+ expect(screen.getByText('Test Content')).toBeInTheDocument();
39
+ });
40
+ it('renders multiple children correctly', () => {
41
+ render(React.createElement(CarouselItem, null,
42
+ React.createElement("div", null, "Child 1"),
43
+ React.createElement("div", null, "Child 2"),
44
+ React.createElement("div", null, "Child 3")));
45
+ expect(screen.getByText('Child 1')).toBeInTheDocument();
46
+ expect(screen.getByText('Child 2')).toBeInTheDocument();
47
+ expect(screen.getByText('Child 3')).toBeInTheDocument();
48
+ });
49
+ it('handles complex child components', () => {
50
+ const ComplexChild = () => (React.createElement("div", null,
51
+ React.createElement("h1", null, "Title"),
52
+ React.createElement("p", null, "Description"),
53
+ React.createElement("button", null, "Action")));
54
+ render(React.createElement(CarouselItem, null,
55
+ React.createElement(ComplexChild, null)));
56
+ expect(screen.getByText('Title')).toBeInTheDocument();
57
+ expect(screen.getByText('Description')).toBeInTheDocument();
58
+ expect(screen.getByText('Action')).toBeInTheDocument();
59
+ });
60
+ it('applies className along with widthConfig', () => {
61
+ const { container } = render(React.createElement(CarouselItem, { className: "custom-item", widthItemConfig: {
62
+ mobile: '90%',
63
+ desktop: '45%'
64
+ } },
65
+ React.createElement("div", null, "Test Content")));
66
+ expect(container.firstChild).toHaveClass('custom-item');
67
+ expect(screen.getByText('Test Content')).toBeInTheDocument();
68
+ });
69
+ it('renders with no props except children', () => {
70
+ render(React.createElement(CarouselItem, null,
71
+ React.createElement("div", null, "Minimal Content")));
72
+ expect(screen.getByText('Minimal Content')).toBeInTheDocument();
73
+ });
74
+ it('handles empty widthConfig object', () => {
75
+ render(React.createElement(CarouselItem, { widthItemConfig: {} },
76
+ React.createElement("div", null, "Test Content")));
77
+ expect(screen.getByText('Test Content')).toBeInTheDocument();
78
+ });
79
+ });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWxJdGVtLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jYXJvdXNlbC1jb21wb25lbnQvX190ZXN0c19fL0Nhcm91c2VsSXRlbS50ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixFQUFFLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLE1BQU0sQ0FDSixvQkFBQyxZQUFZO1lBQ1gsZ0RBQXVCLENBQ1YsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7UUFDbEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FDMUIsb0JBQUMsWUFBWSxJQUFDLFNBQVMsRUFBQyxjQUFjO1lBQ3BDLGdEQUF1QixDQUNWLENBQ2hCLENBQUM7UUFFRixNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7UUFDcEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FDMUIsb0JBQUMsWUFBWTtZQUNYLGdEQUF1QixDQUNWLENBQ2hCLENBQUM7UUFFRixNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLE1BQU0sQ0FDSixvQkFBQyxZQUFZLElBQ1gsZUFBZSxFQUFFO2dCQUNmLEVBQUUsRUFBRSxLQUFLO2dCQUNULE1BQU0sRUFBRSxLQUFLO2dCQUNiLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEVBQUUsRUFBRSxLQUFLO2FBQ1Y7WUFFRCxnREFBdUIsQ0FDVixDQUNoQixDQUFDO1FBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxNQUFNLENBQ0osb0JBQUMsWUFBWSxJQUNYLGVBQWUsRUFBRTtnQkFDZixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsS0FBSzthQUNmO1lBRUQsZ0RBQXVCLENBQ1YsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7UUFDN0MsTUFBTSxDQUNKLG9CQUFDLFlBQVk7WUFDWCwyQ0FBa0I7WUFDbEIsMkNBQWtCO1lBQ2xCLDJDQUFrQixDQUNMLENBQ2hCLENBQUM7UUFFRixNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDMUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FDekI7WUFDRSx3Q0FBYztZQUNkLDZDQUFrQjtZQUNsQiw2Q0FBdUIsQ0FDbkIsQ0FDUCxDQUFDO1FBRUYsTUFBTSxDQUNKLG9CQUFDLFlBQVk7WUFDWCxvQkFBQyxZQUFZLE9BQUcsQ0FDSCxDQUNoQixDQUFDO1FBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1FBQ2xELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQzFCLG9CQUFDLFlBQVksSUFDWCxTQUFTLEVBQUMsYUFBYSxFQUN2QixlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLEtBQUs7YUFDZjtZQUVELGdEQUF1QixDQUNWLENBQ2hCLENBQUM7UUFFRixNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLE1BQU0sQ0FDSixvQkFBQyxZQUFZO1lBQ1gsbURBQTBCLENBQ2IsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtRQUMxQyxNQUFNLENBQ0osb0JBQUMsWUFBWSxJQUFDLGVBQWUsRUFBRSxFQUFFO1lBQy9CLGdEQUF1QixDQUNWLENBQ2hCLENBQUM7UUFFRixNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import { render, screen, fireEvent } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import { DefaultNavigationArrow } from '../DefaultNavigationArrow';
5
+ describe('DefaultNavigationArrow', () => {
6
+ const mockOnClick = jest.fn();
7
+ beforeEach(() => {
8
+ mockOnClick.mockClear();
9
+ });
10
+ it('renders left arrow', () => {
11
+ render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: false }));
12
+ const button = screen.getByLabelText('Previous items');
13
+ expect(button).toBeInTheDocument();
14
+ });
15
+ it('renders right arrow', () => {
16
+ render(React.createElement(DefaultNavigationArrow, { direction: "right", onClick: mockOnClick, disabled: false }));
17
+ const button = screen.getByLabelText('Next items');
18
+ expect(button).toBeInTheDocument();
19
+ });
20
+ it('calls onClick when clicked', () => {
21
+ render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: false }));
22
+ const button = screen.getByLabelText('Previous items');
23
+ fireEvent.click(button);
24
+ expect(mockOnClick).toHaveBeenCalledTimes(1);
25
+ });
26
+ it('does not call onClick when disabled', () => {
27
+ render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: true }));
28
+ const button = screen.getByLabelText('Previous items');
29
+ fireEvent.click(button);
30
+ expect(mockOnClick).not.toHaveBeenCalled();
31
+ });
32
+ it('applies disabled styling when disabled', () => {
33
+ render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: true }));
34
+ const button = screen.getByLabelText('Previous items');
35
+ expect(button).toHaveAttribute('disabled');
36
+ });
37
+ it('renders SVG icon', () => {
38
+ const { container } = render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: false }));
39
+ const svg = container.querySelector('svg');
40
+ expect(svg).toBeInTheDocument();
41
+ });
42
+ it('has correct aria-label for accessibility', () => {
43
+ const { rerender } = render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: false }));
44
+ expect(screen.getByLabelText('Previous items')).toBeInTheDocument();
45
+ rerender(React.createElement(DefaultNavigationArrow, { direction: "right", onClick: mockOnClick, disabled: false }));
46
+ expect(screen.getByLabelText('Next items')).toBeInTheDocument();
47
+ });
48
+ it('renders as a button element', () => {
49
+ render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: false }));
50
+ const button = screen.getByLabelText('Previous items');
51
+ expect(button.tagName).toBe('BUTTON');
52
+ });
53
+ it('applies correct styles based on direction', () => {
54
+ const { container, rerender } = render(React.createElement(DefaultNavigationArrow, { direction: "left", onClick: mockOnClick, disabled: false }));
55
+ let button = container.querySelector('button');
56
+ expect(button).toBeInTheDocument();
57
+ rerender(React.createElement(DefaultNavigationArrow, { direction: "right", onClick: mockOnClick, disabled: false }));
58
+ button = container.querySelector('button');
59
+ expect(button).toBeInTheDocument();
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdE5hdmlnYXRpb25BcnJvdy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2Fyb3VzZWwtY29tcG9uZW50L19fdGVzdHNfXy9EZWZhdWx0TmF2aWdhdGlvbkFycm93LnRlc3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRTlCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQzVCLE1BQU0sQ0FDSixvQkFBQyxzQkFBc0IsSUFDckIsU0FBUyxFQUFDLE1BQU0sRUFDaEIsT0FBTyxFQUFFLFdBQVcsRUFDcEIsUUFBUSxFQUFFLEtBQUssR0FDZixDQUNILENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQzdCLE1BQU0sQ0FDSixvQkFBQyxzQkFBc0IsSUFDckIsU0FBUyxFQUFDLE9BQU8sRUFDakIsT0FBTyxFQUFFLFdBQVcsRUFDcEIs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
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';