@times-components/ts-components 1.145.1-cfea81c4084e6f91221ea00fec9fc730d5b933cb.4 → 1.145.1-e871182934034874ea6a75e1e684090e5504df44.2

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 (136) hide show
  1. package/dist/components/travel-mini-cta/index.d.ts +3 -0
  2. package/dist/components/travel-mini-cta/index.js +86 -0
  3. package/dist/components/travel-mini-cta/styles.d.ts +42 -0
  4. package/dist/components/travel-mini-cta/styles.js +273 -0
  5. package/dist/components/travel-mini-cta/travel-mini-cta.stories.d.ts +110 -0
  6. package/dist/components/travel-mini-cta/travel-mini-cta.stories.js +121 -0
  7. package/dist/components/travel-mini-cta/types.d.ts +10 -0
  8. package/dist/components/{trip-cards → travel-mini-cta}/types.js +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/utils/applyDarkMode.d.ts +1 -0
  12. package/dist/utils/applyDarkMode.js +12 -0
  13. package/dist/utils/getMediaQuery.d.ts +11 -0
  14. package/dist/utils/getMediaQuery.js +19 -0
  15. package/dist/utils/index.d.ts +2 -0
  16. package/dist/utils/index.js +3 -0
  17. package/package.json +3 -3
  18. package/rnw.js +1 -1
  19. package/src/components/travel-mini-cta/index.tsx +164 -0
  20. package/src/components/travel-mini-cta/styles.ts +336 -0
  21. package/src/components/travel-mini-cta/travel-mini-cta.stories.tsx +157 -0
  22. package/src/components/travel-mini-cta/types.ts +10 -0
  23. package/src/index.ts +1 -2
  24. package/src/utils/applyDarkMode.ts +12 -0
  25. package/src/utils/getMediaQuery.ts +25 -0
  26. package/src/utils/index.ts +2 -0
  27. package/dist/components/carousel-component/CarouselComponent.stories.d.ts +0 -1
  28. package/dist/components/carousel-component/CarouselComponent.stories.js +0 -146
  29. package/dist/components/carousel-component/CarouselItem.d.ts +0 -3
  30. package/dist/components/carousel-component/CarouselItem.js +0 -11
  31. package/dist/components/carousel-component/DefaultNavigationArrow.d.ts +0 -8
  32. package/dist/components/carousel-component/DefaultNavigationArrow.js +0 -6
  33. package/dist/components/carousel-component/DefaultPageDot.d.ts +0 -8
  34. package/dist/components/carousel-component/DefaultPageDot.js +0 -4
  35. package/dist/components/carousel-component/__tests__/CarouselComponent.test.d.ts +0 -1
  36. package/dist/components/carousel-component/__tests__/CarouselComponent.test.js +0 -163
  37. package/dist/components/carousel-component/__tests__/CarouselItem.test.d.ts +0 -1
  38. package/dist/components/carousel-component/__tests__/CarouselItem.test.js +0 -80
  39. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.d.ts +0 -1
  40. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.js +0 -62
  41. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.d.ts +0 -1
  42. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.js +0 -68
  43. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.d.ts +0 -1
  44. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.js +0 -314
  45. package/dist/components/carousel-component/hooks/useCarousel.d.ts +0 -2
  46. package/dist/components/carousel-component/hooks/useCarousel.js +0 -140
  47. package/dist/components/carousel-component/index.d.ts +0 -4
  48. package/dist/components/carousel-component/index.js +0 -20
  49. package/dist/components/carousel-component/styles.d.ts +0 -30
  50. package/dist/components/carousel-component/styles.js +0 -120
  51. package/dist/components/carousel-component/types.d.ts +0 -46
  52. package/dist/components/carousel-component/types.js +0 -2
  53. package/dist/components/trip-cards/SkeletonCard.d.ts +0 -2
  54. package/dist/components/trip-cards/SkeletonCard.js +0 -21
  55. package/dist/components/trip-cards/TripCard.d.ts +0 -3
  56. package/dist/components/trip-cards/TripCard.js +0 -47
  57. package/dist/components/trip-cards/TripCards.stories.d.ts +0 -1
  58. package/dist/components/trip-cards/TripCards.stories.js +0 -40
  59. package/dist/components/trip-cards/TripCardsLayout.d.ts +0 -3
  60. package/dist/components/trip-cards/TripCardsLayout.js +0 -26
  61. package/dist/components/trip-cards/__tests__/SkeletonCard.test.d.ts +0 -1
  62. package/dist/components/trip-cards/__tests__/SkeletonCard.test.js +0 -139
  63. package/dist/components/trip-cards/__tests__/TripCard.test.d.ts +0 -1
  64. package/dist/components/trip-cards/__tests__/TripCard.test.js +0 -95
  65. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.d.ts +0 -1
  66. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.js +0 -277
  67. package/dist/components/trip-cards/__tests__/assets.test.d.ts +0 -1
  68. package/dist/components/trip-cards/__tests__/assets.test.js +0 -165
  69. package/dist/components/trip-cards/__tests__/helpers.test.d.ts +0 -1
  70. package/dist/components/trip-cards/__tests__/helpers.test.js +0 -135
  71. package/dist/components/trip-cards/__tests__/index.test.d.ts +0 -1
  72. package/dist/components/trip-cards/__tests__/index.test.js +0 -437
  73. package/dist/components/trip-cards/__tests__/mockData.test.d.ts +0 -1
  74. package/dist/components/trip-cards/__tests__/mockData.test.js +0 -57
  75. package/dist/components/trip-cards/__tests__/skeletonStyles.test.d.ts +0 -1
  76. package/dist/components/trip-cards/__tests__/skeletonStyles.test.js +0 -194
  77. package/dist/components/trip-cards/assets/BoatIcon.d.ts +0 -1
  78. package/dist/components/trip-cards/assets/BoatIcon.js +0 -4
  79. package/dist/components/trip-cards/assets/CalendarIcon.d.ts +0 -1
  80. package/dist/components/trip-cards/assets/CalendarIcon.js +0 -4
  81. package/dist/components/trip-cards/assets/ChevronRightIcon.d.ts +0 -1
  82. package/dist/components/trip-cards/assets/ChevronRightIcon.js +0 -4
  83. package/dist/components/trip-cards/assets/LocationIcon.d.ts +0 -1
  84. package/dist/components/trip-cards/assets/LocationIcon.js +0 -4
  85. package/dist/components/trip-cards/assets/MoonIcon.d.ts +0 -1
  86. package/dist/components/trip-cards/assets/MoonIcon.js +0 -4
  87. package/dist/components/trip-cards/assets/index.d.ts +0 -6
  88. package/dist/components/trip-cards/assets/index.js +0 -7
  89. package/dist/components/trip-cards/helpers.d.ts +0 -4
  90. package/dist/components/trip-cards/helpers.js +0 -74
  91. package/dist/components/trip-cards/index.d.ts +0 -4
  92. package/dist/components/trip-cards/index.js +0 -70
  93. package/dist/components/trip-cards/mockData.d.ts +0 -3
  94. package/dist/components/trip-cards/mockData.js +0 -323
  95. package/dist/components/trip-cards/skeletonStyles.d.ts +0 -9
  96. package/dist/components/trip-cards/skeletonStyles.js +0 -37
  97. package/dist/components/trip-cards/styles.d.ts +0 -39
  98. package/dist/components/trip-cards/styles.js +0 -387
  99. package/dist/components/trip-cards/types.d.ts +0 -87
  100. package/src/components/carousel-component/CarouselComponent.stories.tsx +0 -220
  101. package/src/components/carousel-component/CarouselItem.tsx +0 -20
  102. package/src/components/carousel-component/DefaultNavigationArrow.tsx +0 -37
  103. package/src/components/carousel-component/DefaultPageDot.tsx +0 -20
  104. package/src/components/carousel-component/__tests__/CarouselComponent.test.tsx +0 -259
  105. package/src/components/carousel-component/__tests__/CarouselItem.test.tsx +0 -140
  106. package/src/components/carousel-component/__tests__/DefaultNavigationArrow.test.tsx +0 -153
  107. package/src/components/carousel-component/__tests__/DefaultPageDot.test.tsx +0 -105
  108. package/src/components/carousel-component/hooks/__tests__/useCarousel.test.ts +0 -438
  109. package/src/components/carousel-component/hooks/useCarousel.ts +0 -187
  110. package/src/components/carousel-component/index.tsx +0 -88
  111. package/src/components/carousel-component/styles.ts +0 -140
  112. package/src/components/carousel-component/types.ts +0 -51
  113. package/src/components/trip-cards/SkeletonCard.tsx +0 -54
  114. package/src/components/trip-cards/TripCard.tsx +0 -135
  115. package/src/components/trip-cards/TripCards.stories.tsx +0 -67
  116. package/src/components/trip-cards/TripCardsLayout.tsx +0 -75
  117. package/src/components/trip-cards/__tests__/SkeletonCard.test.tsx +0 -169
  118. package/src/components/trip-cards/__tests__/TripCard.test.tsx +0 -120
  119. package/src/components/trip-cards/__tests__/TripCardsLayout.test.tsx +0 -532
  120. package/src/components/trip-cards/__tests__/assets.test.tsx +0 -206
  121. package/src/components/trip-cards/__tests__/helpers.test.ts +0 -165
  122. package/src/components/trip-cards/__tests__/index.test.tsx +0 -499
  123. package/src/components/trip-cards/__tests__/mockData.test.ts +0 -67
  124. package/src/components/trip-cards/__tests__/skeletonStyles.test.tsx +0 -256
  125. package/src/components/trip-cards/assets/BoatIcon.tsx +0 -17
  126. package/src/components/trip-cards/assets/CalendarIcon.tsx +0 -17
  127. package/src/components/trip-cards/assets/ChevronRightIcon.tsx +0 -20
  128. package/src/components/trip-cards/assets/LocationIcon.tsx +0 -17
  129. package/src/components/trip-cards/assets/MoonIcon.tsx +0 -17
  130. package/src/components/trip-cards/assets/index.ts +0 -7
  131. package/src/components/trip-cards/helpers.ts +0 -99
  132. package/src/components/trip-cards/index.tsx +0 -104
  133. package/src/components/trip-cards/mockData.ts +0 -351
  134. package/src/components/trip-cards/skeletonStyles.ts +0 -46
  135. package/src/components/trip-cards/styles.ts +0 -426
  136. package/src/components/trip-cards/types.ts +0 -91
@@ -1,68 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import { DefaultPageDot } from '../DefaultPageDot';
5
- describe('DefaultPageDot', () => {
6
- const mockOnClick = jest.fn();
7
- beforeEach(() => {
8
- mockOnClick.mockClear();
9
- });
10
- it('renders active dot', () => {
11
- render(React.createElement(DefaultPageDot, { active: true, onClick: mockOnClick, index: 0 }));
12
- const button = screen.getByRole('button');
13
- expect(button).toBeInTheDocument();
14
- });
15
- it('renders inactive dot', () => {
16
- render(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 0 }));
17
- const button = screen.getByRole('button');
18
- expect(button).toBeInTheDocument();
19
- });
20
- it('calls onClick when clicked', () => {
21
- render(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 0 }));
22
- const button = screen.getByRole('button');
23
- fireEvent.click(button);
24
- expect(mockOnClick).toHaveBeenCalledTimes(1);
25
- });
26
- it('renders multiple dots with different indices', () => {
27
- const { rerender } = render(React.createElement(DefaultPageDot, { active: true, onClick: mockOnClick, index: 0 }));
28
- expect(screen.getByRole('button')).toBeInTheDocument();
29
- rerender(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 1 }));
30
- expect(screen.getByRole('button')).toBeInTheDocument();
31
- });
32
- it('handles active state changes', () => {
33
- const { rerender } = render(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 0 }));
34
- const button = screen.getByRole('button');
35
- expect(button).toBeInTheDocument();
36
- rerender(React.createElement(DefaultPageDot, { active: true, onClick: mockOnClick, index: 0 }));
37
- expect(button).toBeInTheDocument();
38
- });
39
- it('applies different styling for active vs inactive state', () => {
40
- const { container, rerender } = render(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 0 }));
41
- const inactiveButton = container.querySelector('button');
42
- expect(inactiveButton).toBeInTheDocument();
43
- rerender(React.createElement(DefaultPageDot, { active: true, onClick: mockOnClick, index: 0 }));
44
- const activeButton = container.querySelector('button');
45
- expect(activeButton).toBeInTheDocument();
46
- });
47
- it('renders as a button element', () => {
48
- render(React.createElement(DefaultPageDot, { active: true, onClick: mockOnClick, index: 0 }));
49
- const button = screen.getByRole('button');
50
- expect(button.tagName).toBe('BUTTON');
51
- });
52
- it('passes correct index to onClick handler', () => {
53
- const { rerender } = render(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 2 }));
54
- const button = screen.getByRole('button');
55
- fireEvent.click(button);
56
- expect(mockOnClick).toHaveBeenCalledTimes(1);
57
- rerender(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 5 }));
58
- fireEvent.click(button);
59
- expect(mockOnClick).toHaveBeenCalledTimes(2);
60
- });
61
- it('is focusable for keyboard navigation', () => {
62
- render(React.createElement(DefaultPageDot, { active: false, onClick: mockOnClick, index: 0 }));
63
- const button = screen.getByRole('button');
64
- button.focus();
65
- expect(document.activeElement).toBe(button);
66
- });
67
- });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFBhZ2VEb3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9fX3Rlc3RzX18vRGVmYXVsdFBhZ2VEb3QudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRTlCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQzVCLE1BQU0sQ0FBQyxvQkFBQyxjQUFjLElBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUksQ0FBQyxDQUFDO1FBRXpFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxvQkFBQyxjQUFjLElBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUksQ0FBQyxDQUFD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
@@ -1,314 +0,0 @@
1
- import { renderHook, act } from '@testing-library/react-hooks';
2
- import { useCarousel } from '../useCarousel';
3
- describe('useCarousel', () => {
4
- beforeEach(() => {
5
- jest.useFakeTimers();
6
- });
7
- afterEach(() => {
8
- jest.runOnlyPendingTimers();
9
- jest.useRealTimers();
10
- });
11
- it('initializes with correct default values', () => {
12
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
13
- expect(result.current.currentPage).toBe(0);
14
- expect(result.current.totalPages).toBe(5);
15
- expect(result.current.isScrolling).toBe(false);
16
- });
17
- it('calculates correct totalPages', () => {
18
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 3 }));
19
- expect(result.current.totalPages).toBe(4);
20
- });
21
- it('provides navigation functions', () => {
22
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
23
- expect(typeof result.current.handleNext).toBe('function');
24
- expect(typeof result.current.handlePrevious).toBe('function');
25
- expect(typeof result.current.scrollToPage).toBe('function');
26
- });
27
- it('provides mouse event handlers for drag functionality', () => {
28
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
29
- expect(typeof result.current.handleMouseDown).toBe('function');
30
- expect(typeof result.current.handleMouseMove).toBe('function');
31
- expect(typeof result.current.handleMouseUp).toBe('function');
32
- expect(typeof result.current.handleMouseLeave).toBe('function');
33
- });
34
- it('handles single page correctly', () => {
35
- const { result } = renderHook(() => useCarousel(2, { itemsPerPage: 2 }));
36
- expect(result.current.totalPages).toBe(1);
37
- act(() => {
38
- result.current.handleNext();
39
- });
40
- expect(result.current.currentPage).toBe(0);
41
- });
42
- it('handles empty items', () => {
43
- const { result } = renderHook(() => useCarousel(0, { itemsPerPage: 2 }));
44
- expect(result.current.totalPages).toBe(0);
45
- expect(result.current.currentPage).toBe(0);
46
- });
47
- it('updates totalPages when totalItems changes', () => {
48
- const { result, rerender } = renderHook(({ total }) => useCarousel(total, { itemsPerPage: 2 }), { initialProps: { total: 10 } });
49
- expect(result.current.totalPages).toBe(5);
50
- rerender({ total: 6 });
51
- expect(result.current.totalPages).toBe(3);
52
- });
53
- it('cleans up timeout on unmount', () => {
54
- const { unmount } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
55
- unmount();
56
- expect(jest.getTimerCount()).toBe(0);
57
- });
58
- it('defaults to itemsPerPage of 2 when not provided', () => {
59
- const { result } = renderHook(() => useCarousel(10, {}));
60
- expect(result.current.totalPages).toBe(5);
61
- });
62
- it('handles itemsPerPage of 1', () => {
63
- const { result } = renderHook(() => useCarousel(5, { itemsPerPage: 1 }));
64
- expect(result.current.totalPages).toBe(5);
65
- });
66
- it('handles large number of items', () => {
67
- const { result } = renderHook(() => useCarousel(1000, { itemsPerPage: 10 }));
68
- expect(result.current.totalPages).toBe(100);
69
- });
70
- it('handles odd number of items with even itemsPerPage', () => {
71
- const { result } = renderHook(() => useCarousel(5, { itemsPerPage: 2 }));
72
- expect(result.current.totalPages).toBe(3);
73
- });
74
- it('provides carouselRef', () => {
75
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
76
- expect(result.current.carouselRef).toBeDefined();
77
- expect(typeof result.current.carouselRef).toBe('object');
78
- });
79
- it('updates when itemsPerPage option changes', () => {
80
- const { result, rerender } = renderHook(({ itemsPerPage }) => useCarousel(10, { itemsPerPage }), { initialProps: { itemsPerPage: 2 } });
81
- expect(result.current.totalPages).toBe(5);
82
- rerender({ itemsPerPage: 5 });
83
- expect(result.current.totalPages).toBe(2);
84
- });
85
- it('handles itemsPerPage greater than total items', () => {
86
- const { result } = renderHook(() => useCarousel(3, { itemsPerPage: 10 }));
87
- expect(result.current.totalPages).toBe(1);
88
- });
89
- it('calls onPageChange when provided in options', () => {
90
- const onPageChange = jest.fn();
91
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2, onPageChange }));
92
- expect(result.current.currentPage).toBe(0);
93
- expect(onPageChange).not.toHaveBeenCalled();
94
- });
95
- it('handles mouseDown without carouselRef', () => {
96
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
97
- const mockEvent = {
98
- preventDefault: jest.fn(),
99
- pageX: 100
100
- };
101
- expect(result.current.carouselRef.current).toBeNull();
102
- act(() => {
103
- result.current.handleMouseDown(mockEvent);
104
- });
105
- expect(mockEvent.preventDefault).not.toHaveBeenCalled();
106
- });
107
- it('calls onPageChange when scrolling to a page', () => {
108
- const onPageChange = jest.fn();
109
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2, onPageChange }));
110
- const mockCard1 = { offsetLeft: 0 };
111
- const mockCard2 = { offsetLeft: 400 };
112
- const mockChildren = [
113
- mockCard1,
114
- mockCard2,
115
- mockCard1,
116
- mockCard2,
117
- mockCard1
118
- ];
119
- const mockCarousel = {
120
- scrollLeft: 0,
121
- children: mockChildren,
122
- scrollTo: jest.fn(),
123
- addEventListener: jest.fn(),
124
- removeEventListener: jest.fn()
125
- };
126
- result.current.carouselRef.current = mockCarousel;
127
- act(() => {
128
- result.current.scrollToPage(1);
129
- jest.runAllTimers();
130
- });
131
- expect(onPageChange).toHaveBeenCalledWith(1);
132
- expect(mockCarousel.scrollTo).toHaveBeenCalled();
133
- });
134
- it('returns undefined cleanup when carousel is not mounted', () => {
135
- const { result, unmount } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
136
- expect(result.current.carouselRef.current).toBeNull();
137
- unmount();
138
- });
139
- it('handles handleMouseMove when not dragging', () => {
140
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
141
- const mockEvent = {
142
- preventDefault: jest.fn(),
143
- pageX: 100
144
- };
145
- act(() => {
146
- result.current.handleMouseMove(mockEvent);
147
- });
148
- expect(mockEvent.preventDefault).not.toHaveBeenCalled();
149
- });
150
- it('handles handleMouseUp when not dragging', () => {
151
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
152
- const mockEvent = {
153
- pageX: 100
154
- };
155
- act(() => {
156
- result.current.handleMouseUp(mockEvent);
157
- });
158
- expect(result.current.currentPage).toBe(0);
159
- });
160
- it('handles handleMouseLeave when not dragging', () => {
161
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
162
- act(() => {
163
- result.current.handleMouseLeave();
164
- });
165
- expect(result.current.currentPage).toBe(0);
166
- });
167
- it('handles complete mouse drag interaction', () => {
168
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
169
- const mockCarousel = {
170
- scrollLeft: 0,
171
- children: [],
172
- scrollTo: jest.fn(),
173
- style: { cursor: 'grab' },
174
- addEventListener: jest.fn(),
175
- removeEventListener: jest.fn()
176
- };
177
- result.current.carouselRef.current = mockCarousel;
178
- const mouseDownEvent = {
179
- preventDefault: jest.fn(),
180
- pageX: 200
181
- };
182
- const mouseMoveEvent = {
183
- preventDefault: jest.fn(),
184
- pageX: 150
185
- };
186
- const mouseUpEvent = {
187
- pageX: 100
188
- };
189
- act(() => {
190
- result.current.handleMouseDown(mouseDownEvent);
191
- });
192
- expect(mouseDownEvent.preventDefault).toHaveBeenCalled();
193
- expect(mockCarousel.style.cursor).toBe('grabbing');
194
- act(() => {
195
- result.current.handleMouseMove(mouseMoveEvent);
196
- });
197
- expect(mouseMoveEvent.preventDefault).toHaveBeenCalled();
198
- act(() => {
199
- result.current.handleMouseUp(mouseUpEvent);
200
- });
201
- expect(mockCarousel.style.cursor).toBe('grab');
202
- });
203
- it('handles mouseUp with small drag distance', () => {
204
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
205
- const mockCarousel = {
206
- scrollLeft: 0,
207
- children: [],
208
- scrollTo: jest.fn(),
209
- style: { cursor: 'grab' },
210
- addEventListener: jest.fn(),
211
- removeEventListener: jest.fn()
212
- };
213
- result.current.carouselRef.current = mockCarousel;
214
- act(() => {
215
- result.current.handleMouseDown({
216
- preventDefault: jest.fn(),
217
- pageX: 100
218
- });
219
- });
220
- act(() => {
221
- result.current.handleMouseUp({
222
- pageX: 90
223
- });
224
- });
225
- expect(result.current.currentPage).toBe(0);
226
- });
227
- it('handles mouseLeave during active drag', () => {
228
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
229
- const mockCarousel = {
230
- style: { cursor: 'grab' },
231
- addEventListener: jest.fn(),
232
- removeEventListener: jest.fn()
233
- };
234
- result.current.carouselRef.current = mockCarousel;
235
- act(() => {
236
- result.current.handleMouseDown({
237
- preventDefault: jest.fn(),
238
- pageX: 100
239
- });
240
- });
241
- expect(mockCarousel.style.cursor).toBe('grabbing');
242
- act(() => {
243
- result.current.handleMouseLeave();
244
- });
245
- expect(mockCarousel.style.cursor).toBe('grab');
246
- });
247
- it('scrollToPage handles case with no children', () => {
248
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
249
- const mockCarousel = {
250
- children: [],
251
- scrollTo: jest.fn(),
252
- addEventListener: jest.fn(),
253
- removeEventListener: jest.fn()
254
- };
255
- result.current.carouselRef.current = mockCarousel;
256
- act(() => {
257
- result.current.scrollToPage(1);
258
- });
259
- expect(mockCarousel.scrollTo).not.toHaveBeenCalled();
260
- });
261
- it('handlePrevious and handleNext navigate correctly', () => {
262
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
263
- const mockCards = Array.from({ length: 5 }, (_, i) => ({
264
- offsetLeft: i * 200
265
- }));
266
- const mockCarousel = {
267
- children: mockCards,
268
- scrollTo: jest.fn(),
269
- addEventListener: jest.fn(),
270
- removeEventListener: jest.fn()
271
- };
272
- result.current.carouselRef.current = mockCarousel;
273
- act(() => {
274
- result.current.handleNext();
275
- jest.runAllTimers();
276
- });
277
- expect(result.current.currentPage).toBe(1);
278
- act(() => {
279
- result.current.handlePrevious();
280
- jest.runAllTimers();
281
- });
282
- expect(result.current.currentPage).toBe(0);
283
- });
284
- it('drag triggers navigation', () => {
285
- const { result } = renderHook(() => useCarousel(10, { itemsPerPage: 2 }));
286
- const mockCards = Array.from({ length: 5 }, (_, i) => ({
287
- offsetLeft: i * 200
288
- }));
289
- const mockCarousel = {
290
- children: mockCards,
291
- scrollTo: jest.fn(),
292
- style: { cursor: 'grab' },
293
- addEventListener: jest.fn(),
294
- removeEventListener: jest.fn()
295
- };
296
- result.current.carouselRef.current = mockCarousel;
297
- act(() => {
298
- result.current.handleMouseDown({
299
- preventDefault: jest.fn(),
300
- pageX: 200
301
- });
302
- });
303
- act(() => {
304
- result.current.handleMouseUp({
305
- pageX: 100
306
- });
307
- });
308
- act(() => {
309
- jest.runAllTimers();
310
- });
311
- expect(result.current.currentPage).toBe(1);
312
- });
313
- });
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQ2Fyb3VzZWwudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nhcm91c2VsLWNvbXBvbmVudC9ob29rcy9fX3Rlc3RzX18vdXNlQ2Fyb3VzZWwudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUxRSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJ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
@@ -1,2 +0,0 @@
1
- import { UseCarouselOptions, UseCarouselReturn } from '../types';
2
- export declare const useCarousel: (totalItems: number, options?: UseCarouselOptions) => UseCarouselReturn;
@@ -1,140 +0,0 @@
1
- import { useState, useEffect, useRef, useCallback } from 'react';
2
- export const useCarousel = (totalItems, options = {}) => {
3
- const { itemsPerPage = 2, onPageChange } = options;
4
- const [currentPage, setCurrentPage] = useState(0);
5
- const carouselRef = useRef(null);
6
- const isScrollingRef = useRef(false);
7
- const isDraggingRef = useRef(false);
8
- const startXRef = useRef(0);
9
- const totalPages = Math.ceil(totalItems / itemsPerPage);
10
- const scrollToPage = useCallback((page) => {
11
- if (carouselRef.current) {
12
- const cardElements = carouselRef.current.children;
13
- if (cardElements.length > 0) {
14
- isScrollingRef.current = true;
15
- const container = carouselRef.current;
16
- const targetCardIndex = page * itemsPerPage;
17
- const targetCard = cardElements[targetCardIndex];
18
- if (targetCard) {
19
- const targetScroll = targetCard.offsetLeft;
20
- container.scrollTo({
21
- left: targetScroll,
22
- behavior: 'smooth'
23
- });
24
- setCurrentPage(page);
25
- if (onPageChange) {
26
- onPageChange(page);
27
- }
28
- setTimeout(() => {
29
- isScrollingRef.current = false;
30
- }, 800);
31
- }
32
- }
33
- }
34
- }, [itemsPerPage, onPageChange]);
35
- const handlePrevious = useCallback(() => {
36
- const newPage = Math.max(0, currentPage - 1);
37
- scrollToPage(newPage);
38
- }, [currentPage, scrollToPage]);
39
- const handleNext = useCallback(() => {
40
- const newPage = Math.min(totalPages - 1, currentPage + 1);
41
- scrollToPage(newPage);
42
- }, [currentPage, totalPages, scrollToPage]);
43
- const handleMouseDown = useCallback((e) => {
44
- if (!carouselRef.current) {
45
- return;
46
- }
47
- e.preventDefault();
48
- isDraggingRef.current = true;
49
- startXRef.current = e.pageX;
50
- carouselRef.current.style.cursor = 'grabbing';
51
- }, []);
52
- const handleMouseMove = useCallback((e) => {
53
- if (!isDraggingRef.current) {
54
- return;
55
- }
56
- e.preventDefault();
57
- }, []);
58
- const handleMouseUp = useCallback((e) => {
59
- if (!isDraggingRef.current) {
60
- return;
61
- }
62
- isDraggingRef.current = false;
63
- if (carouselRef.current) {
64
- carouselRef.current.style.cursor = 'grab';
65
- const endX = e.pageX;
66
- const diff = startXRef.current - endX;
67
- if (Math.abs(diff) > 30) {
68
- if (diff > 0) {
69
- handleNext();
70
- }
71
- else {
72
- handlePrevious();
73
- }
74
- }
75
- }
76
- }, [handleNext, handlePrevious]);
77
- const handleMouseLeave = useCallback(() => {
78
- if (!isDraggingRef.current) {
79
- return;
80
- }
81
- isDraggingRef.current = false;
82
- if (carouselRef.current) {
83
- carouselRef.current.style.cursor = 'grab';
84
- }
85
- }, []);
86
- const handleScroll = useCallback(() => {
87
- if (isScrollingRef.current) {
88
- return;
89
- }
90
- if (carouselRef.current) {
91
- const container = carouselRef.current;
92
- const children = container.children;
93
- if (children.length === 0) {
94
- return;
95
- }
96
- const scrollLeft = container.scrollLeft;
97
- let closestPage = 0;
98
- let closestDistance = Infinity;
99
- for (let page = 0; page < totalPages; page++) {
100
- const cardIndex = page * itemsPerPage;
101
- if (cardIndex < children.length) {
102
- const card = children[cardIndex];
103
- const distance = Math.abs(card.offsetLeft - scrollLeft);
104
- if (distance < closestDistance) {
105
- closestDistance = distance;
106
- closestPage = page;
107
- }
108
- }
109
- }
110
- if (closestPage !== currentPage) {
111
- setCurrentPage(closestPage);
112
- if (onPageChange) {
113
- onPageChange(closestPage);
114
- }
115
- }
116
- }
117
- }, [currentPage, totalPages, itemsPerPage, onPageChange]);
118
- useEffect(() => {
119
- const carousel = carouselRef.current;
120
- if (carousel) {
121
- carousel.addEventListener('scroll', handleScroll);
122
- return () => carousel.removeEventListener('scroll', handleScroll);
123
- }
124
- return undefined;
125
- }, [handleScroll]);
126
- return {
127
- currentPage,
128
- totalPages,
129
- carouselRef,
130
- isScrolling: isScrollingRef.current,
131
- handlePrevious,
132
- handleNext,
133
- scrollToPage,
134
- handleMouseDown,
135
- handleMouseMove,
136
- handleMouseUp,
137
- handleMouseLeave
138
- };
139
- };
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQ2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jYXJvdXNlbC1jb21wb25lbnQvaG9va3MvdXNlQ2Fyb3VzZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUdqRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDekIsVUFBa0IsRUFDbEIsVUFBOEIsRUFBRSxFQUNiLEVBQUU7SUFDckIsTUFBTSxFQUFFLFlBQVksR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRW5ELE1BQU0sQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFFeEQsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUM5QixDQUFDLElBQVksRUFBRSxFQUFFO1FBQ2YsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBRWxELElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLGNBQWMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUU5QixNQUFNLFNB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
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import { CarouselComponentProps } from './types';
3
- export declare const CarouselComponent: React.FC<CarouselComponentProps>;
4
- export { CarouselItem } from './CarouselItem';
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import { useCarousel } from './hooks/useCarousel';
3
- import { CarouselContainer, CarouselWrapper, CarouselContent, CardsRow, PageControl } from './styles';
4
- import { DefaultNavigationArrow } from './DefaultNavigationArrow';
5
- import { DefaultPageDot } from './DefaultPageDot';
6
- export const CarouselComponent = ({ items, options, showArrows = true, showDots = true, arrowComponent: CustomArrow, dotComponent: CustomDot, className }) => {
7
- const { currentPage, totalPages, carouselRef, handlePrevious, handleNext, scrollToPage, handleMouseDown, handleMouseMove, handleMouseUp, handleMouseLeave } = useCarousel(items.length, options);
8
- const ArrowComponent = CustomArrow || DefaultNavigationArrow;
9
- const DotComponent = CustomDot || DefaultPageDot;
10
- return (React.createElement(CarouselContainer, { className: className },
11
- React.createElement(CarouselWrapper, null,
12
- showArrows && (React.createElement(ArrowComponent, { direction: "left", onClick: handlePrevious, disabled: currentPage === 0 })),
13
- React.createElement(CarouselContent, null,
14
- React.createElement(CardsRow, { ref: carouselRef, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, onMouseLeave: handleMouseLeave }, items)),
15
- showArrows && (React.createElement(ArrowComponent, { direction: "right", onClick: handleNext, disabled: currentPage >= totalPages - 1 }))),
16
- showDots &&
17
- totalPages > 1 && (React.createElement(PageControl, null, Array.from({ length: totalPages }).map((_, pageIndex) => (React.createElement(DotComponent, { key: pageIndex, active: pageIndex === currentPage, onClick: () => scrollToPage(pageIndex), index: pageIndex })))))));
18
- };
19
- export { CarouselItem } from './CarouselItem';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jYXJvdXNlbC1jb21wb25lbnQvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZUFBZSxFQUNmLFFBQVEsRUFDUixXQUFXLEVBQ1osTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2xELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFxQyxDQUFDLEVBQ2xFLEtBQUssRUFDTCxPQUFPLEVBQ1AsVUFBVSxHQUFHLElBQUksRUFDakIsUUFBUSxHQUFHLElBQUksRUFDZixjQUFjLEVBQUUsV0FBVyxFQUMzQixZQUFZLEVBQUUsU0FBUyxFQUN2QixTQUFTLEVBQ1YsRUFBRSxFQUFFO0lBQ0gsTUFBTSxFQUNKLFdBQVcsRUFDWCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGNBQWMsRUFDZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixlQUFlLEVBQ2YsYUFBYSxFQUNiLGdCQUFnQixFQUNqQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLE1BQU0sY0FBYyxHQUFHLFdBQVcsSUFBSSxzQkFBc0IsQ0FBQztJQUM3RCxNQUFNLFlBQVksR0FBRyxTQUFTLElBQUksY0FBYyxDQUFDO0lBRWpELE9BQU8sQ0FDTCxvQkFBQyxpQkFBaUIsSUFBQyxTQUFTLEVBQUUsU0FBUztRQUNyQyxvQkFBQyxlQUFlO1lBQ2IsVUFBVSxJQUFJLENBQ2Isb0JBQUMsY0FBYyxJQUNiLFNBQVMsRUFBQyxNQUFNLEVBQ2hCLE9BQU8sRUFBRSxjQUFjLEVBQ3ZCLFFBQVEsRUFBRSxXQUFXLEtBQUssQ0FBQyxHQUMzQixDQUNIO1lBRUQsb0JBQUMsZUFBZTtnQkFDZCxvQkFBQyxRQUFRLElBQ1AsR0FBRyxFQUFFLFdBQVcsRUFDaEIsV0FBVyxFQUFFLGVBQWUsRUFDNUIsV0FBVyxFQUFFLGVBQWUsRUFDNUIsU0FBUyxFQUFFLGFBQWEsRUFDeEIsWUFBWSxFQUFFLGdCQUFnQixJQUU3QixLQUFLLENBQ0csQ0FDSztZQUVqQixVQUFVLElBQUksQ0FDYixvQkFBQyxjQUFjLElBQ2IsU0FBUyxFQUFDLE9BQU8sRUFDakIsT0FBTyxFQUFFLFVBQVUsRUFDbkIsUUFBUSxFQUFFLFdBQVcsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUN2QyxDQUNILENBQ2U7UUFFakIsUUFBUTtZQUNQLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FDaEIsb0JBQUMsV0FBVyxRQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUN4RCxvQkFBQyxZQUFZLElBQ1gsR0FBRyxFQUFFLFNBQVMsRUFDZCxNQUFNLEVBQUUsU0FBUyxLQUFLLFdBQVcsRUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFDdEMsS0FBSyxFQUFFLFNBQVMsR0FDaEIsQ0FDSCxDQUFDLENBQ1UsQ0FDZixDQUNlLENBQ3JCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUMifQ==
@@ -1,30 +0,0 @@
1
- export declare const breakpoints: {
2
- sm: string;
3
- md: string;
4
- lg: string;
5
- xl: string;
6
- };
7
- export declare const colors: {
8
- primary: string;
9
- white: string;
10
- };
11
- export declare const ItemContainer: import("styled-components").StyledComponent<"div", any, {
12
- widthConfig: {
13
- mobile?: string;
14
- tablet?: string;
15
- desktop?: string;
16
- xl?: string;
17
- };
18
- }, never>;
19
- export declare const CarouselContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
20
- export declare const CarouselWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
21
- export declare const CarouselContent: import("styled-components").StyledComponent<"div", any, {}, never>;
22
- export declare const CardsRow: import("styled-components").StyledComponent<"div", any, {}, never>;
23
- export declare const PageControl: import("styled-components").StyledComponent<"div", any, {}, never>;
24
- export declare const NavigationArrowButton: import("styled-components").StyledComponent<"button", any, {
25
- direction: 'left' | 'right';
26
- disabled?: boolean | undefined;
27
- }, never>;
28
- export declare const PageDotButton: import("styled-components").StyledComponent<"button", any, {
29
- active: boolean;
30
- }, never>;