@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,216 @@
1
+ import { transformApiResult, fetchCruiseCards } from '../helpers';
2
+ const mockApiResult = {
3
+ post_id: 34246,
4
+ cruise_id: 2074350,
5
+ cruise_title: 'Mediterranean from Barcelona',
6
+ cruise_line: {
7
+ name: 'MSC Cruises',
8
+ link: 'https://example.com/cruise-lines/msc-cruises/',
9
+ logo: 'https://example.com/msc-logo.png'
10
+ },
11
+ ship: {
12
+ name: 'MSC Seaside',
13
+ link: 'https://example.com/ships/msc-seaside/',
14
+ image: 'https://example.com/ship-image.jpg'
15
+ },
16
+ departs: '2025-10-21',
17
+ ends: '2025-10-28',
18
+ date_label: 'Oct 21 - Oct 28, 2025',
19
+ destination: ['Mediterranean'],
20
+ duration: 7,
21
+ itinerary: ['Barcelona', 'Naples', 'Rome', 'Marseille'],
22
+ prices: {
23
+ cheapest_price: 2000,
24
+ inside: 'Enquire now',
25
+ outside: 'Enquire now',
26
+ balcony: '2000',
27
+ suite: 'Enquire now'
28
+ },
29
+ was_prices: {
30
+ inside: 0,
31
+ outside: 0,
32
+ balcony: 2500,
33
+ suite: 0
34
+ },
35
+ link: 'https://example.com/cruises/mediterranean-from-barcelona',
36
+ campaigns: ['Special Offer'],
37
+ extras: {
38
+ date: 'Oct 2025 - Oct 2025',
39
+ duration: 'Seven Days',
40
+ destination: 'Mediterranean',
41
+ info: 'Seven nights onboard a four-star ship'
42
+ }
43
+ };
44
+ describe('transformApiResult', () => {
45
+ it('transforms API result to TripCardApiData format', () => {
46
+ const result = transformApiResult(mockApiResult);
47
+ expect(result).toEqual({
48
+ cruise_id: '2074350',
49
+ image: 'https://example.com/ship-image.jpg',
50
+ offer_label: 'Special Offer',
51
+ headline: 'Mediterranean from Barcelona',
52
+ date: 'Oct 2025 - Oct 2025',
53
+ duration: 'Seven Days',
54
+ route: 'Barcelona → Marseille',
55
+ ship: 'MSC Seaside',
56
+ original_price: '£2500',
57
+ price: '£2000',
58
+ logo: 'https://example.com/msc-logo.png',
59
+ logo_url: 'https://example.com/cruise-lines/msc-cruises/',
60
+ cta_url: 'https://example.com/cruises/mediterranean-from-barcelona',
61
+ cta_text: 'View Itinerary'
62
+ });
63
+ });
64
+ it('formats price as "Enquire now" when price is 0', () => {
65
+ const resultWithZeroPrice = {
66
+ ...mockApiResult,
67
+ prices: { ...mockApiResult.prices, cheapest_price: 0 }
68
+ };
69
+ const result = transformApiResult(resultWithZeroPrice);
70
+ expect(result.price).toBe('Enquire now');
71
+ });
72
+ it('formats price as "Enquire now" when price is "Enquire now"', () => {
73
+ const resultWithEnquire = {
74
+ ...mockApiResult,
75
+ prices: { ...mockApiResult.prices, cheapest_price: 'Enquire now' }
76
+ };
77
+ const result = transformApiResult(resultWithEnquire);
78
+ expect(result.price).toBe('Enquire now');
79
+ });
80
+ it('formats numeric price with £ symbol', () => {
81
+ const result = transformApiResult(mockApiResult);
82
+ expect(result.price).toBe('£2000');
83
+ });
84
+ it('returns undefined original_price when was_price is 0', () => {
85
+ const resultWithZeroWasPrice = {
86
+ ...mockApiResult,
87
+ was_prices: { ...mockApiResult.was_prices, balcony: 0 }
88
+ };
89
+ const result = transformApiResult(resultWithZeroWasPrice);
90
+ expect(result.original_price).toBeUndefined();
91
+ });
92
+ it('returns undefined original_price when was_price is "Enquire now"', () => {
93
+ const resultWithEnquireWasPrice = {
94
+ ...mockApiResult,
95
+ was_prices: { ...mockApiResult.was_prices, balcony: 0 },
96
+ prices: {
97
+ ...mockApiResult.prices,
98
+ cheapest_price: 'Enquire now',
99
+ balcony: 'Enquire now'
100
+ }
101
+ };
102
+ const result = transformApiResult(resultWithEnquireWasPrice);
103
+ expect(result.original_price).toBeUndefined();
104
+ });
105
+ it('formats route with start and end for long itineraries', () => {
106
+ const result = transformApiResult(mockApiResult);
107
+ expect(result.route).toBe('Barcelona → Marseille');
108
+ });
109
+ it('formats route with all stops for short itineraries', () => {
110
+ const resultWithShortItinerary = {
111
+ ...mockApiResult,
112
+ itinerary: ['Barcelona', 'Rome']
113
+ };
114
+ const result = transformApiResult(resultWithShortItinerary);
115
+ expect(result.route).toBe('Barcelona → Rome');
116
+ });
117
+ it('returns undefined offer_label when no campaigns', () => {
118
+ const resultWithNoCampaigns = {
119
+ ...mockApiResult,
120
+ campaigns: []
121
+ };
122
+ const result = transformApiResult(resultWithNoCampaigns);
123
+ expect(result.offer_label).toBeUndefined();
124
+ });
125
+ it('uses data from extras object', () => {
126
+ const result = transformApiResult(mockApiResult);
127
+ expect(result.date).toBe('Oct 2025 - Oct 2025');
128
+ expect(result.duration).toBe('Seven Days');
129
+ });
130
+ it('handles string prices correctly', () => {
131
+ const resultWithStringPrice = {
132
+ ...mockApiResult,
133
+ prices: { ...mockApiResult.prices, cheapest_price: '£1500pp' }
134
+ };
135
+ const result = transformApiResult(resultWithStringPrice);
136
+ expect(result.price).toBe('£1500pp');
137
+ });
138
+ });
139
+ describe('fetchCruiseCards', () => {
140
+ beforeEach(() => {
141
+ global.fetch = jest.fn();
142
+ });
143
+ afterEach(() => {
144
+ jest.resetAllMocks();
145
+ });
146
+ it('filters out offers with past departure dates', async () => {
147
+ const validOffer = {
148
+ ...mockApiResult,
149
+ cruise_id: 1,
150
+ departs: '2026-12-25' // Future date
151
+ };
152
+ const pastOffer = {
153
+ ...mockApiResult,
154
+ cruise_id: 2,
155
+ departs: '2024-01-01' // Past date
156
+ };
157
+ const mockResponse = {
158
+ results: [validOffer, pastOffer]
159
+ };
160
+ global.fetch.mockResolvedValueOnce({
161
+ ok: true,
162
+ json: async () => mockResponse
163
+ });
164
+ const result = await fetchCruiseCards([1, 2]);
165
+ // Should only include the valid offer with future date
166
+ expect(result).toHaveLength(2);
167
+ expect(result[0]).toBeDefined();
168
+ expect(result[0].cruise_id).toBe('1');
169
+ expect(result[1]).toBeUndefined(); // Past offer was filtered out
170
+ });
171
+ it('filters out offers with invalid date format', async () => {
172
+ const validOffer = {
173
+ ...mockApiResult,
174
+ cruise_id: 1,
175
+ departs: '2026-12-25'
176
+ };
177
+ const invalidDateOffer = {
178
+ ...mockApiResult,
179
+ cruise_id: 2,
180
+ departs: 'invalid-date'
181
+ };
182
+ const mockResponse = {
183
+ results: [validOffer, invalidDateOffer]
184
+ };
185
+ global.fetch.mockResolvedValueOnce({
186
+ ok: true,
187
+ json: async () => mockResponse
188
+ });
189
+ const result = await fetchCruiseCards([1, 2]);
190
+ expect(result).toHaveLength(2);
191
+ expect(result[0]).toBeDefined();
192
+ expect(result[0].cruise_id).toBe('1');
193
+ expect(result[1]).toBeUndefined(); // Invalid date offer was filtered out
194
+ });
195
+ it('includes offers departing today', async () => {
196
+ const today = new Date();
197
+ const todayString = today.toISOString().split('T')[0];
198
+ const todayOffer = {
199
+ ...mockApiResult,
200
+ cruise_id: 1,
201
+ departs: todayString
202
+ };
203
+ const mockResponse = {
204
+ results: [todayOffer]
205
+ };
206
+ global.fetch.mockResolvedValueOnce({
207
+ ok: true,
208
+ json: async () => mockResponse
209
+ });
210
+ const result = await fetchCruiseCards([1]);
211
+ expect(result).toHaveLength(1);
212
+ expect(result[0]).toBeDefined();
213
+ expect(result[0].cruise_id).toBe('1');
214
+ });
215
+ });
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHJpcC1jYXJkcy9fX3Rlc3RzX18vaGVscGVycy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdsRSxNQUFNLGFBQWEsR0FBb0I7SUFDckMsT0FBTyxFQUFFLEtBQUs7SUFDZCxTQUFTLEVBQUUsT0FBTztJQUNsQixZQUFZLEVBQUUsOEJBQThCO0lBQzVDLFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSwrQ0FBK0M7UUFDckQsSUFBSSxFQUFFLGtDQUFrQztLQUN6QztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSx3Q0FBd0M7UUFDOUMsS0FBSyxFQUFFLG9DQUFvQztLQUM1QztJQUNELE9BQU8sRUFBRSxZQUFZO0lBQ3JCLElBQUksRUFBRSxZQUFZO0lBQ2xCLFVBQVUsRUFBRSx1QkFBdUI7SUFDbkMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDO0lBQzlCLFFBQVEsRUFBRSxDQUFDO0lBQ1gsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3ZELE1BQU0sRUFBRTtRQUNOLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsS0FBSyxFQUFFLGFBQWE7S0FDckI7SUFDRCxVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUUsQ0FBQztRQUNULE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsQ0FBQztLQUNUO0lBQ0QsSUFBSSxFQUFFLDBEQUEwRDtJQUNoRSxT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
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';