jfs-components 0.0.21 → 0.0.25

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 (174) hide show
  1. package/lib/commonjs/assets/fonts/JioType Var.ttf +0 -0
  2. package/lib/commonjs/components/Accordion/Accordion.js +1 -1
  3. package/lib/commonjs/components/Accordion/Accordion.js.map +1 -1
  4. package/lib/commonjs/components/ActionFooter/ActionFooter.js +2 -2
  5. package/lib/commonjs/components/ActionFooter/ActionFooter.js.map +1 -1
  6. package/lib/commonjs/components/AppBar/AppBar.js +2 -2
  7. package/lib/commonjs/components/AppBar/AppBar.js.map +1 -1
  8. package/lib/commonjs/components/Avatar/Avatar.js +2 -2
  9. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  10. package/lib/commonjs/components/Badge/Badge.js +1 -1
  11. package/lib/commonjs/components/Badge/Badge.js.map +1 -1
  12. package/lib/commonjs/components/BottomNav/BottomNav.js +2 -2
  13. package/lib/commonjs/components/BottomNav/BottomNav.js.map +1 -1
  14. package/lib/commonjs/components/BottomNavItem/BottomNavItem.js +2 -2
  15. package/lib/commonjs/components/BottomNavItem/BottomNavItem.js.map +1 -1
  16. package/lib/commonjs/components/Button/Button.js +1 -1
  17. package/lib/commonjs/components/Button/Button.js.map +1 -1
  18. package/lib/commonjs/components/Carousel/Carousel.js +341 -0
  19. package/lib/commonjs/components/Carousel/Carousel.js.map +1 -0
  20. package/lib/commonjs/components/Carousel/Carousel.mdx +154 -0
  21. package/lib/commonjs/components/Disclaimer/Disclaimer.js +1 -1
  22. package/lib/commonjs/components/Disclaimer/Disclaimer.js.map +1 -1
  23. package/lib/commonjs/components/Divider/Divider.js +2 -2
  24. package/lib/commonjs/components/Divider/Divider.js.map +1 -1
  25. package/lib/commonjs/components/Drawer/Drawer.js +10 -3
  26. package/lib/commonjs/components/Drawer/Drawer.js.map +1 -1
  27. package/lib/commonjs/components/FilterBar/FilterBar.js +2 -2
  28. package/lib/commonjs/components/FilterBar/FilterBar.js.map +1 -1
  29. package/lib/commonjs/components/IconButton/IconButton.js +2 -2
  30. package/lib/commonjs/components/IconButton/IconButton.js.map +1 -1
  31. package/lib/commonjs/components/IconCapsule/IconCapsule.js +2 -2
  32. package/lib/commonjs/components/IconCapsule/IconCapsule.js.map +1 -1
  33. package/lib/commonjs/components/LazyList/LazyList.js +2 -2
  34. package/lib/commonjs/components/LazyList/LazyList.js.map +1 -1
  35. package/lib/commonjs/components/ListGroup/ListGroup.js +1 -1
  36. package/lib/commonjs/components/ListGroup/ListGroup.js.map +1 -1
  37. package/lib/commonjs/components/ListItem/ListItem.js +5 -5
  38. package/lib/commonjs/components/ListItem/ListItem.js.map +1 -1
  39. package/lib/commonjs/components/MerchantProfile/MerchantProfile.js +1 -1
  40. package/lib/commonjs/components/MerchantProfile/MerchantProfile.js.map +1 -1
  41. package/lib/commonjs/components/MoneyValue/MoneyValue.js +1 -1
  42. package/lib/commonjs/components/MoneyValue/MoneyValue.js.map +1 -1
  43. package/lib/commonjs/components/NavArrow/NavArrow.js +1 -1
  44. package/lib/commonjs/components/NavArrow/NavArrow.js.map +1 -1
  45. package/lib/commonjs/components/PageTitle/PageTitle.js +1 -1
  46. package/lib/commonjs/components/PageTitle/PageTitle.js.map +1 -1
  47. package/lib/commonjs/components/RadioButton/RadioButton.js +194 -0
  48. package/lib/commonjs/components/RadioButton/RadioButton.js.map +1 -0
  49. package/lib/commonjs/components/RadioButton/RadioButton.mdx +92 -0
  50. package/lib/commonjs/components/Section/Section.js +4 -4
  51. package/lib/commonjs/components/Section/Section.js.map +1 -1
  52. package/lib/commonjs/components/TextInput/TextInput.js +1 -1
  53. package/lib/commonjs/components/TextInput/TextInput.js.map +1 -1
  54. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +2 -2
  55. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js.map +1 -1
  56. package/lib/commonjs/components/UpiHandle/UpiHandle.js +4 -2
  57. package/lib/commonjs/components/UpiHandle/UpiHandle.js.map +1 -1
  58. package/lib/commonjs/components/index.js +7 -0
  59. package/lib/commonjs/components/index.js.map +1 -1
  60. package/lib/commonjs/design-tokens/figma-variables-resolver.js +9 -3
  61. package/lib/commonjs/design-tokens/figma-variables-resolver.js.map +2 -1
  62. package/lib/commonjs/icons/registry.js +1 -1
  63. package/lib/module/assets/fonts/JioType Var.ttf +0 -0
  64. package/lib/module/components/Accordion/Accordion.js +1 -1
  65. package/lib/module/components/Accordion/Accordion.js.map +1 -1
  66. package/lib/module/components/ActionFooter/ActionFooter.js +2 -2
  67. package/lib/module/components/ActionFooter/ActionFooter.js.map +1 -1
  68. package/lib/module/components/AppBar/AppBar.js +2 -2
  69. package/lib/module/components/AppBar/AppBar.js.map +1 -1
  70. package/lib/module/components/Avatar/Avatar.js +2 -2
  71. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  72. package/lib/module/components/Badge/Badge.js +1 -1
  73. package/lib/module/components/Badge/Badge.js.map +1 -1
  74. package/lib/module/components/BottomNav/BottomNav.js +2 -2
  75. package/lib/module/components/BottomNav/BottomNav.js.map +1 -1
  76. package/lib/module/components/BottomNavItem/BottomNavItem.js +2 -2
  77. package/lib/module/components/BottomNavItem/BottomNavItem.js.map +1 -1
  78. package/lib/module/components/Button/Button.js +1 -1
  79. package/lib/module/components/Button/Button.js.map +1 -1
  80. package/lib/module/components/Carousel/Carousel.js +333 -0
  81. package/lib/module/components/Carousel/Carousel.js.map +1 -0
  82. package/lib/module/components/Carousel/Carousel.mdx +154 -0
  83. package/lib/module/components/Disclaimer/Disclaimer.js +1 -1
  84. package/lib/module/components/Disclaimer/Disclaimer.js.map +1 -1
  85. package/lib/module/components/Divider/Divider.js +2 -2
  86. package/lib/module/components/Divider/Divider.js.map +1 -1
  87. package/lib/module/components/Drawer/Drawer.js +11 -4
  88. package/lib/module/components/Drawer/Drawer.js.map +1 -1
  89. package/lib/module/components/FilterBar/FilterBar.js +2 -2
  90. package/lib/module/components/FilterBar/FilterBar.js.map +1 -1
  91. package/lib/module/components/IconButton/IconButton.js +2 -2
  92. package/lib/module/components/IconButton/IconButton.js.map +1 -1
  93. package/lib/module/components/IconCapsule/IconCapsule.js +2 -2
  94. package/lib/module/components/IconCapsule/IconCapsule.js.map +1 -1
  95. package/lib/module/components/LazyList/LazyList.js +2 -2
  96. package/lib/module/components/LazyList/LazyList.js.map +1 -1
  97. package/lib/module/components/ListGroup/ListGroup.js +1 -1
  98. package/lib/module/components/ListGroup/ListGroup.js.map +1 -1
  99. package/lib/module/components/ListItem/ListItem.js +5 -5
  100. package/lib/module/components/ListItem/ListItem.js.map +1 -1
  101. package/lib/module/components/MerchantProfile/MerchantProfile.js +1 -1
  102. package/lib/module/components/MerchantProfile/MerchantProfile.js.map +1 -1
  103. package/lib/module/components/MoneyValue/MoneyValue.js +1 -1
  104. package/lib/module/components/MoneyValue/MoneyValue.js.map +1 -1
  105. package/lib/module/components/NavArrow/NavArrow.js +1 -1
  106. package/lib/module/components/NavArrow/NavArrow.js.map +1 -1
  107. package/lib/module/components/PageTitle/PageTitle.js +1 -1
  108. package/lib/module/components/PageTitle/PageTitle.js.map +1 -1
  109. package/lib/module/components/RadioButton/RadioButton.js +188 -0
  110. package/lib/module/components/RadioButton/RadioButton.js.map +1 -0
  111. package/lib/module/components/RadioButton/RadioButton.mdx +92 -0
  112. package/lib/module/components/Section/Section.js +4 -4
  113. package/lib/module/components/Section/Section.js.map +1 -1
  114. package/lib/module/components/TextInput/TextInput.js +1 -1
  115. package/lib/module/components/TextInput/TextInput.js.map +1 -1
  116. package/lib/module/components/TransactionDetails/TransactionDetails.js +2 -2
  117. package/lib/module/components/TransactionDetails/TransactionDetails.js.map +1 -1
  118. package/lib/module/components/UpiHandle/UpiHandle.js +4 -2
  119. package/lib/module/components/UpiHandle/UpiHandle.js.map +1 -1
  120. package/lib/module/components/index.js +1 -0
  121. package/lib/module/components/index.js.map +1 -1
  122. package/lib/module/design-tokens/figma-variables-resolver.js +2 -2
  123. package/lib/module/design-tokens/figma-variables-resolver.js.map +1 -2
  124. package/lib/module/icons/registry.js +1 -1
  125. package/lib/typescript/components/ActionFooter/ActionFooter.d.ts.map +1 -1
  126. package/lib/typescript/components/BottomNav/BottomNav.d.ts.map +1 -1
  127. package/lib/typescript/components/Carousel/Carousel.d.ts +48 -0
  128. package/lib/typescript/components/Carousel/Carousel.d.ts.map +1 -0
  129. package/lib/typescript/components/Drawer/Drawer.d.ts.map +1 -1
  130. package/lib/typescript/components/IconButton/IconButton.d.ts +1 -1
  131. package/lib/typescript/components/IconCapsule/IconCapsule.d.ts +1 -1
  132. package/lib/typescript/components/LazyList/LazyList.d.ts.map +1 -1
  133. package/lib/typescript/components/RadioButton/RadioButton.d.ts +30 -0
  134. package/lib/typescript/components/RadioButton/RadioButton.d.ts.map +1 -0
  135. package/lib/typescript/components/Section/Section.d.ts.map +1 -1
  136. package/lib/typescript/components/UpiHandle/UpiHandle.d.ts +4 -2
  137. package/lib/typescript/components/UpiHandle/UpiHandle.d.ts.map +1 -1
  138. package/lib/typescript/components/index.d.ts +1 -0
  139. package/lib/typescript/components/index.d.ts.map +1 -1
  140. package/lib/typescript/icons/registry.d.ts +1 -1
  141. package/package.json +2 -2
  142. package/src/assets/fonts/JioType Var.ttf +0 -0
  143. package/src/components/.token-metadata.json +72 -0
  144. package/src/components/Accordion/Accordion.tsx +1 -1
  145. package/src/components/ActionFooter/ActionFooter.tsx +2 -2
  146. package/src/components/AppBar/AppBar.tsx +2 -2
  147. package/src/components/Avatar/Avatar.tsx +2 -2
  148. package/src/components/Badge/Badge.tsx +1 -1
  149. package/src/components/BottomNav/BottomNav.tsx +2 -2
  150. package/src/components/BottomNavItem/BottomNavItem.tsx +2 -2
  151. package/src/components/Button/Button.tsx +1 -1
  152. package/src/components/Carousel/Carousel.mdx +154 -0
  153. package/src/components/Carousel/Carousel.tsx +472 -0
  154. package/src/components/Disclaimer/Disclaimer.tsx +1 -1
  155. package/src/components/Divider/Divider.tsx +2 -2
  156. package/src/components/Drawer/Drawer.tsx +11 -3
  157. package/src/components/FilterBar/FilterBar.tsx +2 -2
  158. package/src/components/IconButton/IconButton.tsx +2 -2
  159. package/src/components/IconCapsule/IconCapsule.tsx +2 -2
  160. package/src/components/LazyList/LazyList.tsx +2 -2
  161. package/src/components/ListGroup/ListGroup.tsx +1 -1
  162. package/src/components/ListItem/ListItem.tsx +5 -5
  163. package/src/components/MerchantProfile/MerchantProfile.tsx +1 -1
  164. package/src/components/MoneyValue/MoneyValue.tsx +1 -1
  165. package/src/components/NavArrow/NavArrow.tsx +1 -1
  166. package/src/components/PageTitle/PageTitle.tsx +1 -1
  167. package/src/components/RadioButton/RadioButton.mdx +92 -0
  168. package/src/components/RadioButton/RadioButton.tsx +226 -0
  169. package/src/components/Section/Section.tsx +4 -4
  170. package/src/components/TextInput/TextInput.tsx +1 -1
  171. package/src/components/TransactionDetails/TransactionDetails.tsx +2 -2
  172. package/src/components/UpiHandle/UpiHandle.tsx +6 -3
  173. package/src/components/index.ts +1 -0
  174. package/src/icons/registry.ts +1 -1
@@ -0,0 +1,341 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Carousel = Carousel;
7
+ exports.Item = Item;
8
+ exports.Pagination = Pagination;
9
+ exports.default = void 0;
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactNative = require("react-native");
12
+ var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ // ---------------------------------------------------------------------------
16
+ // Context
17
+ // ---------------------------------------------------------------------------
18
+
19
+ const CarouselContext = /*#__PURE__*/(0, _react.createContext)({
20
+ modes: {},
21
+ activeIndex: 0,
22
+ totalItems: 0,
23
+ goTo: () => {},
24
+ goNext: () => {},
25
+ goPrev: () => {}
26
+ });
27
+
28
+ // ---------------------------------------------------------------------------
29
+ // Types
30
+ // ---------------------------------------------------------------------------
31
+
32
+ // ---------------------------------------------------------------------------
33
+ // Carousel
34
+ // ---------------------------------------------------------------------------
35
+
36
+ function Carousel({
37
+ children,
38
+ modes = {},
39
+ autoPlay = false,
40
+ autoPlayInterval = 4000,
41
+ showPagination = true,
42
+ loop = true,
43
+ gap: gapProp,
44
+ itemWidth: itemWidthProp,
45
+ peekOffset: peekOffsetProp,
46
+ onIndexChange,
47
+ style
48
+ }) {
49
+ // ---- Token resolution ----
50
+ const tokenGap = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/gap', modes) || '12');
51
+ const gap = gapProp ?? tokenGap;
52
+ const tokenPeekOffset = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/peekOffset', modes) || '0');
53
+ const peekOffset = peekOffsetProp ?? tokenPeekOffset;
54
+ const containerPaddingH = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/padding/horizontal', modes) || '0');
55
+ const containerPaddingV = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/padding/vertical', modes) || '0');
56
+ const paginationGap = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/gap', modes) || '12');
57
+
58
+ // ---- Refs & state ----
59
+ const scrollRef = (0, _react.useRef)(null);
60
+ const [activeIndex, setActiveIndex] = (0, _react.useState)(0);
61
+ const [containerWidth, setContainerWidth] = (0, _react.useState)(0);
62
+ const autoPlayTimer = (0, _react.useRef)(null);
63
+ const userInteracting = (0, _react.useRef)(false);
64
+
65
+ // Flatten children so we can count items
66
+ const items = (0, _react.useMemo)(() => _react.default.Children.toArray(children).filter(_react.default.isValidElement), [children]);
67
+ const totalItems = items.length;
68
+
69
+ // Effective item width: provided prop, or full container width minus peek offsets
70
+ const effectiveItemWidth = (0, _react.useMemo)(() => {
71
+ if (itemWidthProp != null) return itemWidthProp;
72
+ if (containerWidth === 0) return 0;
73
+ // Full-width minus peekOffset on each side
74
+ return containerWidth - peekOffset * 2 - containerPaddingH * 2;
75
+ }, [itemWidthProp, containerWidth, peekOffset, containerPaddingH]);
76
+
77
+ // Snap interval = item width + gap
78
+ const snapInterval = effectiveItemWidth + gap;
79
+
80
+ // ---- Navigation helpers ----
81
+ const scrollToIndex = (0, _react.useCallback)((index, animated = true) => {
82
+ if (totalItems === 0 || snapInterval === 0) return;
83
+ let targetIndex = index;
84
+ if (loop) {
85
+ targetIndex = (index % totalItems + totalItems) % totalItems;
86
+ } else {
87
+ targetIndex = Math.max(0, Math.min(index, totalItems - 1));
88
+ }
89
+ scrollRef.current?.scrollTo({
90
+ x: targetIndex * snapInterval,
91
+ animated
92
+ });
93
+ setActiveIndex(targetIndex);
94
+ onIndexChange?.(targetIndex);
95
+ }, [totalItems, snapInterval, loop, onIndexChange]);
96
+ const goTo = (0, _react.useCallback)(index => scrollToIndex(index), [scrollToIndex]);
97
+ const goNext = (0, _react.useCallback)(() => scrollToIndex(activeIndex + 1), [scrollToIndex, activeIndex]);
98
+ const goPrev = (0, _react.useCallback)(() => scrollToIndex(activeIndex - 1), [scrollToIndex, activeIndex]);
99
+
100
+ // ---- Scroll event handler ----
101
+ const handleScroll = (0, _react.useCallback)(event => {
102
+ if (snapInterval === 0) return;
103
+ const offsetX = event.nativeEvent.contentOffset.x;
104
+ const newIndex = Math.round(offsetX / snapInterval);
105
+ const clampedIndex = Math.max(0, Math.min(newIndex, totalItems - 1));
106
+ if (clampedIndex !== activeIndex) {
107
+ setActiveIndex(clampedIndex);
108
+ onIndexChange?.(clampedIndex);
109
+ }
110
+ }, [snapInterval, totalItems, activeIndex, onIndexChange]);
111
+
112
+ // ---- Auto-play ----
113
+ const clearAutoPlay = (0, _react.useCallback)(() => {
114
+ if (autoPlayTimer.current != null) {
115
+ clearInterval(autoPlayTimer.current);
116
+ autoPlayTimer.current = null;
117
+ }
118
+ }, []);
119
+ const startAutoPlay = (0, _react.useCallback)(() => {
120
+ if (!autoPlay || totalItems <= 1) return;
121
+ clearAutoPlay();
122
+ autoPlayTimer.current = setInterval(() => {
123
+ if (!userInteracting.current) {
124
+ setActiveIndex(prev => {
125
+ const next = loop ? (prev + 1) % totalItems : Math.min(prev + 1, totalItems - 1);
126
+ scrollRef.current?.scrollTo({
127
+ x: next * snapInterval,
128
+ animated: true
129
+ });
130
+ onIndexChange?.(next);
131
+ return next;
132
+ });
133
+ }
134
+ }, autoPlayInterval);
135
+ }, [autoPlay, totalItems, loop, snapInterval, autoPlayInterval, clearAutoPlay, onIndexChange]);
136
+ (0, _react.useEffect)(() => {
137
+ startAutoPlay();
138
+ return clearAutoPlay;
139
+ }, [startAutoPlay, clearAutoPlay]);
140
+ const handleScrollBeginDrag = (0, _react.useCallback)(() => {
141
+ userInteracting.current = true;
142
+ }, []);
143
+ const handleScrollEndDrag = (0, _react.useCallback)(() => {
144
+ userInteracting.current = false;
145
+ // Reset autoplay timer after interaction
146
+ if (autoPlay) startAutoPlay();
147
+ }, [autoPlay, startAutoPlay]);
148
+
149
+ // ---- Layout ----
150
+ const handleLayout = (0, _react.useCallback)(e => {
151
+ setContainerWidth(e.nativeEvent.layout.width);
152
+ }, []);
153
+
154
+ // ---- Context value ----
155
+ const contextValue = (0, _react.useMemo)(() => ({
156
+ modes,
157
+ activeIndex,
158
+ totalItems,
159
+ goTo,
160
+ goNext,
161
+ goPrev
162
+ }), [modes, activeIndex, totalItems, goTo, goNext, goPrev]);
163
+
164
+ // ---- Render ----
165
+ const outerStyle = {
166
+ paddingVertical: containerPaddingV
167
+ };
168
+ const contentContainerStyle = {
169
+ paddingHorizontal: peekOffset + containerPaddingH,
170
+ gap,
171
+ // Align items to the start so snap works correctly
172
+ alignItems: 'flex-start'
173
+ };
174
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(CarouselContext.Provider, {
175
+ value: contextValue,
176
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
177
+ style: [outerStyle, style],
178
+ onLayout: handleLayout,
179
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
180
+ ref: scrollRef,
181
+ horizontal: true,
182
+ pagingEnabled: false,
183
+ showsHorizontalScrollIndicator: false,
184
+ decelerationRate: "fast",
185
+ snapToInterval: snapInterval > 0 ? snapInterval : undefined,
186
+ snapToAlignment: "start",
187
+ contentContainerStyle: contentContainerStyle,
188
+ onScroll: handleScroll,
189
+ scrollEventThrottle: 16,
190
+ onScrollBeginDrag: handleScrollBeginDrag,
191
+ onScrollEndDrag: handleScrollEndDrag,
192
+ children: items.map((child, index) => {
193
+ const itemStyle = {
194
+ width: effectiveItemWidth > 0 ? effectiveItemWidth : undefined
195
+ };
196
+
197
+ // Pass modes down to children
198
+ const childWithModes = /*#__PURE__*/_react.default.isValidElement(child) ? /*#__PURE__*/_react.default.cloneElement(child, {
199
+ modes: {
200
+ ...(child.props?.modes || {}),
201
+ ...modes
202
+ },
203
+ style: [itemStyle, child.props?.style]
204
+ }) : child;
205
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
206
+ style: itemStyle,
207
+ children: childWithModes
208
+ }, index);
209
+ })
210
+ }), showPagination && totalItems > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(Pagination, {
211
+ modes: modes,
212
+ style: {
213
+ marginTop: paginationGap
214
+ }
215
+ })]
216
+ })
217
+ });
218
+ }
219
+
220
+ // ---------------------------------------------------------------------------
221
+ // Carousel.Item
222
+ // ---------------------------------------------------------------------------
223
+
224
+ /**
225
+ * Optional wrapper for carousel items. Not strictly required — any
226
+ * React node works as a direct child of `<Carousel>`.
227
+ */
228
+ function Item({
229
+ children,
230
+ modes: _modes,
231
+ style
232
+ }) {
233
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
234
+ style: style,
235
+ children: children
236
+ });
237
+ }
238
+
239
+ // ---------------------------------------------------------------------------
240
+ // Carousel.Pagination
241
+ // ---------------------------------------------------------------------------
242
+
243
+ function Pagination({
244
+ modes: propModes,
245
+ style
246
+ }) {
247
+ const {
248
+ modes: ctxModes,
249
+ activeIndex,
250
+ totalItems,
251
+ goTo
252
+ } = (0, _react.useContext)(CarouselContext);
253
+ const modes = propModes || ctxModes || {};
254
+
255
+ // Token resolution for dots
256
+ const dotSize = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/dotSize', modes) || '8');
257
+ const dotActiveWidth = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/dotActiveWidth', modes) || '24');
258
+ const dotGap = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/dotGap', modes) || '8');
259
+ const dotColor = (0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/dotColor', modes) || 'rgba(255,255,255,0.35)';
260
+ const dotActiveColor = (0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/dotActiveColor', modes) || '#ffffff';
261
+ const dotRadius = parseFloat((0, _figmaVariablesResolver.getVariableByName)('carousel/pagination/dotRadius', modes) || '4');
262
+ const containerStyle = {
263
+ flexDirection: 'row',
264
+ justifyContent: 'center',
265
+ alignItems: 'center',
266
+ gap: dotGap
267
+ };
268
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
269
+ style: [containerStyle, style],
270
+ accessibilityRole: "tablist",
271
+ accessibilityLabel: undefined,
272
+ children: Array.from({
273
+ length: totalItems
274
+ }).map((_, i) => {
275
+ const isActive = i === activeIndex;
276
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
277
+ onPress: () => goTo(i),
278
+ accessibilityRole: "tab",
279
+ accessibilityState: {
280
+ selected: isActive
281
+ },
282
+ accessibilityLabel: undefined,
283
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedDot, {
284
+ isActive: isActive,
285
+ size: dotSize,
286
+ activeWidth: dotActiveWidth,
287
+ radius: dotRadius,
288
+ color: dotColor,
289
+ activeColor: dotActiveColor
290
+ })
291
+ }, i);
292
+ })
293
+ });
294
+ }
295
+
296
+ // ---------------------------------------------------------------------------
297
+ // AnimatedDot (internal)
298
+ // ---------------------------------------------------------------------------
299
+
300
+ function AnimatedDot({
301
+ isActive,
302
+ size,
303
+ activeWidth,
304
+ radius,
305
+ color,
306
+ activeColor
307
+ }) {
308
+ const animValue = (0, _react.useRef)(new _reactNative.Animated.Value(isActive ? 1 : 0)).current;
309
+ (0, _react.useEffect)(() => {
310
+ _reactNative.Animated.timing(animValue, {
311
+ toValue: isActive ? 1 : 0,
312
+ duration: 250,
313
+ useNativeDriver: false
314
+ }).start();
315
+ }, [isActive, animValue]);
316
+ const width = animValue.interpolate({
317
+ inputRange: [0, 1],
318
+ outputRange: [size, activeWidth]
319
+ });
320
+ const backgroundColor = animValue.interpolate({
321
+ inputRange: [0, 1],
322
+ outputRange: [color, activeColor]
323
+ });
324
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
325
+ style: {
326
+ width,
327
+ height: size,
328
+ borderRadius: radius,
329
+ backgroundColor
330
+ }
331
+ });
332
+ }
333
+
334
+ // ---------------------------------------------------------------------------
335
+ // Attach sub-components
336
+ // ---------------------------------------------------------------------------
337
+
338
+ Carousel.Item = Item;
339
+ Carousel.Pagination = Pagination;
340
+ var _default = exports.default = Carousel;
341
+ //# sourceMappingURL=Carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_figmaVariablesResolver","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CarouselContext","createContext","modes","activeIndex","totalItems","goTo","goNext","goPrev","Carousel","children","autoPlay","autoPlayInterval","showPagination","loop","gap","gapProp","itemWidth","itemWidthProp","peekOffset","peekOffsetProp","onIndexChange","style","tokenGap","parseFloat","getVariableByName","tokenPeekOffset","containerPaddingH","containerPaddingV","paginationGap","scrollRef","useRef","setActiveIndex","useState","containerWidth","setContainerWidth","autoPlayTimer","userInteracting","items","useMemo","React","Children","toArray","filter","isValidElement","length","effectiveItemWidth","snapInterval","scrollToIndex","useCallback","index","animated","targetIndex","Math","max","min","current","scrollTo","x","handleScroll","event","offsetX","nativeEvent","contentOffset","newIndex","round","clampedIndex","clearAutoPlay","clearInterval","startAutoPlay","setInterval","prev","next","useEffect","handleScrollBeginDrag","handleScrollEndDrag","handleLayout","layout","width","contextValue","outerStyle","paddingVertical","contentContainerStyle","paddingHorizontal","alignItems","jsx","Provider","value","jsxs","View","onLayout","ScrollView","ref","horizontal","pagingEnabled","showsHorizontalScrollIndicator","decelerationRate","snapToInterval","undefined","snapToAlignment","onScroll","scrollEventThrottle","onScrollBeginDrag","onScrollEndDrag","map","child","itemStyle","childWithModes","cloneElement","props","Pagination","marginTop","Item","_modes","propModes","ctxModes","useContext","dotSize","dotActiveWidth","dotGap","dotColor","dotActiveColor","dotRadius","containerStyle","flexDirection","justifyContent","accessibilityRole","accessibilityLabel","Array","from","_","isActive","Pressable","onPress","accessibilityState","selected","AnimatedDot","size","activeWidth","radius","color","activeColor","animValue","Animated","Value","timing","toValue","duration","useNativeDriver","start","interpolate","inputRange","outputRange","backgroundColor","height","borderRadius","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,154 @@
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
+ import * as CarouselStories from './Carousel.stories';
3
+ import Carousel from './Carousel';
4
+ import { AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
5
+ import { View, Image, Text } from 'react-native';
6
+
7
+ <Meta of={CarouselStories} />
8
+
9
+ ## Available Collections and Modes
10
+
11
+ This component does not use any design token collections with multiple modes.
12
+ ## Usage
13
+
14
+ <Canvas>
15
+ <Story of={CarouselStories.Default} />
16
+ </Canvas>
17
+
18
+ ### Example Usage
19
+
20
+ ```tsx
21
+ import { Image, View } from 'react-native';
22
+ import Carousel from './components/Carousel/Carousel';
23
+ import MediaCard from './components/MediaCard/MediaCard';
24
+ import Avatar from './components/Avatar/Avatar';
25
+ import Button from './components/Button/Button';
26
+
27
+ function MyCarousel() {
28
+ const modes = {
29
+ 'Contrast Context': 'on dark',
30
+ 'Colors Router': 'POC',
31
+ };
32
+
33
+ return (
34
+ <Carousel
35
+ modes={modes}
36
+ autoPlay
37
+ autoPlayInterval={4000}
38
+ showPagination
39
+ loop
40
+ >
41
+ <Carousel.Item>
42
+ <MediaCard
43
+ modes={modes}
44
+ media={
45
+ <Image
46
+ source={{ uri: 'https://picsum.photos/400/400' }}
47
+ style={{ width: '100%', height: '100%' }}
48
+ resizeMode="cover"
49
+ />
50
+ }
51
+ >
52
+ <MediaCard.Header>
53
+ <MediaCard.Title>Huge Title</MediaCard.Title>
54
+ </MediaCard.Header>
55
+ <MediaCard.Footer>
56
+ <Avatar
57
+ initials="JS"
58
+ modes={{ 'Avatar / Size': 'S' }}
59
+ />
60
+ <View style={{ flex: 1 }}>
61
+ <MediaCard.FooterTitle>Subscribed</MediaCard.FooterTitle>
62
+ <MediaCard.FooterSubtitle>Active now</MediaCard.FooterSubtitle>
63
+ </View>
64
+ <Button
65
+ label="Open"
66
+ modes={{ 'Button / Size': 'S' }}
67
+ onPress={() => console.log('Open')}
68
+ />
69
+ </MediaCard.Footer>
70
+ </MediaCard>
71
+ </Carousel.Item>
72
+
73
+ <Carousel.Item>
74
+ <MediaCard
75
+ modes={modes}
76
+ media={
77
+ <Image
78
+ source={{ uri: 'https://picsum.photos/seed/two/400/400' }}
79
+ style={{ width: '100%', height: '100%' }}
80
+ resizeMode="cover"
81
+ />
82
+ }
83
+ >
84
+ <MediaCard.Header>
85
+ <MediaCard.Title>Discover</MediaCard.Title>
86
+ </MediaCard.Header>
87
+ <MediaCard.Footer>
88
+ <MediaCard.FooterTitle>Mutual Fund Insights</MediaCard.FooterTitle>
89
+ </MediaCard.Footer>
90
+ </MediaCard>
91
+ </Carousel.Item>
92
+ </Carousel>
93
+ );
94
+ }
95
+ ```
96
+
97
+ ### Peek Cards (adjacent items visible)
98
+
99
+ <Canvas>
100
+ <Story of={CarouselStories.PeekCards} />
101
+ </Canvas>
102
+
103
+ ### Auto-play
104
+
105
+ <Canvas>
106
+ <Story of={CarouselStories.AutoPlay} />
107
+ </Canvas>
108
+
109
+ ### Fixed-width items
110
+
111
+ <Canvas>
112
+ <Story of={CarouselStories.FixedWidth} />
113
+ </Canvas>
114
+
115
+ <AnatomySection>
116
+ <ul>
117
+ <li><strong>Container</strong> — Outer <code>View</code> that measures width and holds the scroll track + pagination.</li>
118
+ <li><strong>ScrollView Track</strong> — Horizontal <code>ScrollView</code> with snap-to-interval behavior and optional CSS scroll-snap on web.</li>
119
+ <li><strong>Carousel.Item</strong> — Optional wrapper for each slide. Any React node works as a direct child.</li>
120
+ <li><strong>Pagination</strong> — Row of animated dots. Active dot widens and changes color. Each dot is pressable to navigate.</li>
121
+ </ul>
122
+ </AnatomySection>
123
+
124
+ <UsageConstraintsSection>
125
+ <ul>
126
+ <li>Each child of <code>Carousel</code> becomes one slide. Use <code>Carousel.Item</code> for semantic clarity.</li>
127
+ <li>When <code>itemWidth</code> is not provided, items expand to fill the container width minus <code>peekOffset</code>.</li>
128
+ <li>Auto-play pauses automatically while the user is dragging.</li>
129
+ <li>The <code>modes</code> prop is forwarded to all children via <code>cloneElement</code>.</li>
130
+ <li>On web, CSS <code>scroll-snap-type</code> is applied for native-feeling snap behavior.</li>
131
+ </ul>
132
+ </UsageConstraintsSection>
133
+
134
+ ## Props
135
+
136
+ <Controls />
137
+
138
+ ## Design Tokens
139
+
140
+ This component uses the following design tokens, resolved through `getVariableByName`:
141
+
142
+ - **`carousel/gap`**
143
+ - **`carousel/padding/horizontal`**
144
+ - **`carousel/padding/vertical`**
145
+ - **`carousel/pagination/dotActiveColor`**
146
+ - **`carousel/pagination/dotActiveWidth`**
147
+ - **`carousel/pagination/dotColor`**
148
+ - **`carousel/pagination/dotGap`**
149
+ - **`carousel/pagination/dotRadius`**
150
+ - **`carousel/pagination/dotSize`**
151
+ - **`carousel/pagination/gap`**
152
+ - **`carousel/peekOffset`**
153
+
154
+ All tokens support mode-based theming through the `modes` prop.
@@ -75,7 +75,7 @@ function Disclaimer({
75
75
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
76
76
  style: [containerStyle, style],
77
77
  accessibilityRole: "text",
78
- accessibilityLabel: defaultAccessibilityLabel,
78
+ accessibilityLabel: undefined,
79
79
  accessibilityHint: accessibilityHint,
80
80
  ...rest,
81
81
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_figmaVariablesResolver","_JFSThemeProvider","_jsxRuntime","e","__esModule","default","Disclaimer","disclaimer","modes","propModes","style","textStyle","accessibilityLabel","accessibilityHint","rest","globalModes","useTokens","color","getVariableByName","fontSize","lineHeight","fontFamily","fontWeightRaw","fontWeight","toString","baseTextStyle","textAlign","containerStyle","alignSelf","alignItems","justifyContent","maxWidth","defaultAccessibilityLabel","jsx","View","accessibilityRole","children","jsxs","Text","accessibilityElementsHidden","importantForAccessibility","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Disclaimer/Disclaimer.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAAgE,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAWhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,UAAUA,CAAC;EAClBC,UAAU,GAAG,oEAAoE;EACjFC,KAAK,EAAEC,SAAS,GAAG,CAAC,CAAC;EACrBC,KAAK;EACLC,SAAS;EACTC,kBAAkB;EAClBC,iBAAiB;EACjB,GAAGC;AACY,CAAC,EAAE;EAClB,MAAM;IAAEN,KAAK,EAAEO;EAAY,CAAC,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAC1C,MAAMR,KAAK,GAAG;IAAE,GAAGO,WAAW;IAAE,GAAGN;EAAU,CAAC;EAC9C;EACA,MAAMQ,KAAK,GAAG,IAAAC,yCAAiB,EAAC,kBAAkB,EAAEV,KAAK,CAAC,IAAI,SAAS;EACvE,MAAMW,QAAQ,GACZ,IAAAD,yCAAiB,EAAC,2BAA2B,EAAEV,KAAK,CAAC,IAAI,EAAE;EAC7D,MAAMY,UAAU,GACd,IAAAF,yCAAiB,EAAC,6BAA6B,EAAEV,KAAK,CAAC,IAAI,EAAE;EAC/D,MAAMa,UAAU,GACd,IAAAH,yCAAiB,EAAC,6BAA6B,EAAEV,KAAK,CAAC,IAAI,QAAQ;EACrE,MAAMc,aAAa,GACjB,IAAAJ,yCAAiB,EAAC,6BAA6B,EAAEV,KAAK,CAAC,IAAI,GAAG;EAChE,MAAMe,UAAU,GACd,OAAOD,aAAa,KAAK,QAAQ,GAC7BA,aAAa,CAACE,QAAQ,CAAC,CAAC,GACxBF,aAAa;EAEnB,MAAMG,aAAwB,GAAG;IAC/BR,KAAK;IACLE,QAAQ;IACRC,UAAU;IACVC,UAAU;IACVE,UAAU;IACVG,SAAS,EAAE;EACb,CAAC;EAED,MAAMC,cAAyB,GAAG;IAChCC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxB;IACAC,QAAQ,EAAE;EACZ,CAAC;;EAED;EACA,MAAMC,yBAAyB,GAAGpB,kBAAkB,IAAIL,UAAU;EAElE,oBACE,IAAAL,WAAA,CAAA+B,GAAA,EAAClC,YAAA,CAAAmC,IAAI;IACHxB,KAAK,EAAE,CAACiB,cAAc,EAAEjB,KAAK,CAAE;IAC/ByB,iBAAiB,EAAC,MAAM;IACxBvB,kBAAkB,EAAEoB,yBAA0B;IAC9CnB,iBAAiB,EAAEA,iBAAkB;IAAA,GACjCC,IAAI;IAAAsB,QAAA,eAER,IAAAlC,WAAA,CAAAmC,IAAA,EAACtC,YAAA,CAAAuC,IAAI;MACH5B,KAAK,EAAE,CAACe,aAAa,EAAEd,SAAS,CAAE;MAClC4B,2BAA2B,EAAE,IAAK;MAClCC,yBAAyB,EAAC,IAAI;MAAAJ,QAAA,GAE7B7B,UAAU,EACV,IAAI;IAAA,CACD;EAAC,CACH,CAAC;AAEX;AAAC,IAAAkC,QAAA,GAAAC,OAAA,CAAArC,OAAA,GAEcC,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_figmaVariablesResolver","_JFSThemeProvider","_jsxRuntime","e","__esModule","default","Disclaimer","disclaimer","modes","propModes","style","textStyle","accessibilityLabel","accessibilityHint","rest","globalModes","useTokens","color","getVariableByName","fontSize","lineHeight","fontFamily","fontWeightRaw","fontWeight","toString","baseTextStyle","textAlign","containerStyle","alignSelf","alignItems","justifyContent","maxWidth","defaultAccessibilityLabel","jsx","View","accessibilityRole","undefined","children","jsxs","Text","accessibilityElementsHidden","importantForAccessibility","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Disclaimer/Disclaimer.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAAgE,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAWhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,UAAUA,CAAC;EAClBC,UAAU,GAAG,oEAAoE;EACjFC,KAAK,EAAEC,SAAS,GAAG,CAAC,CAAC;EACrBC,KAAK;EACLC,SAAS;EACTC,kBAAkB;EAClBC,iBAAiB;EACjB,GAAGC;AACY,CAAC,EAAE;EAClB,MAAM;IAAEN,KAAK,EAAEO;EAAY,CAAC,GAAG,IAAAC,2BAAS,EAAC,CAAC;EAC1C,MAAMR,KAAK,GAAG;IAAE,GAAGO,WAAW;IAAE,GAAGN;EAAU,CAAC;EAC9C;EACA,MAAMQ,KAAK,GAAG,IAAAC,yCAAiB,EAAC,kBAAkB,EAAEV,KAAK,CAAC,IAAI,SAAS;EACvE,MAAMW,QAAQ,GACZ,IAAAD,yCAAiB,EAAC,2BAA2B,EAAEV,KAAK,CAAC,IAAI,EAAE;EAC7D,MAAMY,UAAU,GACd,IAAAF,yCAAiB,EAAC,6BAA6B,EAAEV,KAAK,CAAC,IAAI,EAAE;EAC/D,MAAMa,UAAU,GACd,IAAAH,yCAAiB,EAAC,6BAA6B,EAAEV,KAAK,CAAC,IAAI,QAAQ;EACrE,MAAMc,aAAa,GACjB,IAAAJ,yCAAiB,EAAC,6BAA6B,EAAEV,KAAK,CAAC,IAAI,GAAG;EAChE,MAAMe,UAAU,GACd,OAAOD,aAAa,KAAK,QAAQ,GAC7BA,aAAa,CAACE,QAAQ,CAAC,CAAC,GACxBF,aAAa;EAEnB,MAAMG,aAAwB,GAAG;IAC/BR,KAAK;IACLE,QAAQ;IACRC,UAAU;IACVC,UAAU;IACVE,UAAU;IACVG,SAAS,EAAE;EACb,CAAC;EAED,MAAMC,cAAyB,GAAG;IAChCC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxB;IACAC,QAAQ,EAAE;EACZ,CAAC;;EAED;EACA,MAAMC,yBAAyB,GAAGpB,kBAAkB,IAAIL,UAAU;EAElE,oBACE,IAAAL,WAAA,CAAA+B,GAAA,EAAClC,YAAA,CAAAmC,IAAI;IACHxB,KAAK,EAAE,CAACiB,cAAc,EAAEjB,KAAK,CAAE;IAC/ByB,iBAAiB,EAAC,MAAM;IACxBvB,kBAAkB,EAAEwB,SAAU;IAC9BvB,iBAAiB,EAAEA,iBAAkB;IAAA,GACjCC,IAAI;IAAAuB,QAAA,eAER,IAAAnC,WAAA,CAAAoC,IAAA,EAACvC,YAAA,CAAAwC,IAAI;MACH7B,KAAK,EAAE,CAACe,aAAa,EAAEd,SAAS,CAAE;MAClC6B,2BAA2B,EAAE,IAAK;MAClCC,yBAAyB,EAAC,IAAI;MAAAJ,QAAA,GAE7B9B,UAAU,EACV,IAAI;IAAA,CACD;EAAC,CACH,CAAC;AAEX;AAAC,IAAAmC,QAAA,GAAAC,OAAA,CAAAtC,OAAA,GAEcC,UAAU","ignoreList":[]}
@@ -38,7 +38,7 @@ function Divider({
38
38
  direction = 'horizontal',
39
39
  modes = {},
40
40
  style,
41
- accessibilityLabel = 'Divider'
41
+ accessibilityLabel = undefined
42
42
  }) {
43
43
  // Resolve design tokens
44
44
  const size = (0, _figmaVariablesResolver.getVariableByName)('divider/size', modes) ?? 1;
@@ -56,7 +56,7 @@ function Divider({
56
56
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
57
57
  style: [dividerStyle, style],
58
58
  accessibilityRole: "none",
59
- accessibilityLabel: accessibilityLabel
59
+ accessibilityLabel: undefined
60
60
  });
61
61
  }
62
62
  var _default = exports.default = Divider;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_figmaVariablesResolver","_jsxRuntime","e","__esModule","default","Divider","direction","modes","style","accessibilityLabel","size","getVariableByName","color","isVertical","dividerStyle","width","backgroundColor","alignSelf","height","jsx","View","accessibilityRole","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Divider/Divider.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,uBAAA,GAAAF,OAAA;AAAgF,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAyBhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,OAAOA,CAAC;EACfC,SAAS,GAAG,YAAY;EACxBC,KAAK,GAAG,CAAC,CAAC;EACVC,KAAK;EACLC,kBAAkB,GAAG;AACT,CAAC,EAAE;EACf;EACA,MAAMC,IAAI,GAAG,IAAAC,yCAAiB,EAAC,cAAc,EAAEJ,KAAK,CAAC,IAAI,CAAC;EAC1D,MAAMK,KAAK,GAAG,IAAAD,yCAAiB,EAAC,eAAe,EAAEJ,KAAK,CAAC,IAAI,SAAS;EAEpE,MAAMM,UAAU,GAAGP,SAAS,KAAK,UAAU;EAE3C,MAAMQ,YAAuB,GAAGD,UAAU,GACtC;IACEE,KAAK,EAAEL,IAAI;IACXM,eAAe,EAAEJ,KAAK;IACtBK,SAAS,EAAE;EACb,CAAC,GACD;IACEC,MAAM,EAAER,IAAI;IACZM,eAAe,EAAEJ,KAAK;IACtBK,SAAS,EAAE;EACb,CAAC;EAEL,oBACE,IAAAhB,WAAA,CAAAkB,GAAA,EAACpB,YAAA,CAAAqB,IAAI;IACHZ,KAAK,EAAE,CAACM,YAAY,EAAEN,KAAK,CAAE;IAC7Ba,iBAAiB,EAAC,MAAM;IACxBZ,kBAAkB,EAAEA;EAAmB,CACxC,CAAC;AAEN;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEcC,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_figmaVariablesResolver","_jsxRuntime","e","__esModule","default","Divider","direction","modes","style","accessibilityLabel","undefined","size","getVariableByName","color","isVertical","dividerStyle","width","backgroundColor","alignSelf","height","jsx","View","accessibilityRole","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Divider/Divider.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,uBAAA,GAAAF,OAAA;AAAgF,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAyBhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,OAAOA,CAAC;EACfC,SAAS,GAAG,YAAY;EACxBC,KAAK,GAAG,CAAC,CAAC;EACVC,KAAK;EACLC,kBAAkB,GAAGC;AACT,CAAC,EAAE;EACf;EACA,MAAMC,IAAI,GAAG,IAAAC,yCAAiB,EAAC,cAAc,EAAEL,KAAK,CAAC,IAAI,CAAC;EAC1D,MAAMM,KAAK,GAAG,IAAAD,yCAAiB,EAAC,eAAe,EAAEL,KAAK,CAAC,IAAI,SAAS;EAEpE,MAAMO,UAAU,GAAGR,SAAS,KAAK,UAAU;EAE3C,MAAMS,YAAuB,GAAGD,UAAU,GACtC;IACEE,KAAK,EAAEL,IAAI;IACXM,eAAe,EAAEJ,KAAK;IACtBK,SAAS,EAAE;EACb,CAAC,GACD;IACEC,MAAM,EAAER,IAAI;IACZM,eAAe,EAAEJ,KAAK;IACtBK,SAAS,EAAE;EACb,CAAC;EAEL,oBACE,IAAAjB,WAAA,CAAAmB,GAAA,EAACrB,YAAA,CAAAsB,IAAI;IACHb,KAAK,EAAE,CAACO,YAAY,EAAEP,KAAK,CAAE;IAC7Bc,iBAAiB,EAAC,MAAM;IACxBb,kBAAkB,EAAEC;EAAU,CAC/B,CAAC;AAEN;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAApB,OAAA,GAEcC,OAAO","ignoreList":[]}
@@ -83,6 +83,13 @@ function Drawer({
83
83
  const scrollY = (0, _reactNativeReanimated.useSharedValue)(0);
84
84
  const scrollRef = (0, _react.useRef)(null);
85
85
 
86
+ // Dynamically disable top bounce so a downward swipe at the top of
87
+ // the content drags the whole drawer instead of rubber-banding the
88
+ // scroll view. Bottom bounce is preserved when the user has scrolled.
89
+ const animatedScrollProps = (0, _reactNativeReanimated.useAnimatedProps)(() => ({
90
+ bounces: scrollY.value > 1
91
+ }));
92
+
86
93
  // We need to know if we are currently dragging the drawer or scrolling the content
87
94
  // to prevent conflict.
88
95
  const isDrawerActive = (0, _reactNativeReanimated.useSharedValue)(false);
@@ -238,7 +245,7 @@ function Drawer({
238
245
  }, sheetStyle, animatedStyle],
239
246
  accessible: true,
240
247
  accessibilityRole: 'dialog',
241
- accessibilityLabel: defaultAccessibilityLabel,
248
+ accessibilityLabel: undefined,
242
249
  accessibilityHint: accessibilityHint || 'Swipe up to expand, swipe down to collapse',
243
250
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
244
251
  style: [styles.handleArea, !title && !header && {
@@ -271,8 +278,8 @@ function Drawer({
271
278
  alignItems: 'stretch'
272
279
  }, contentContainerStyle],
273
280
  showsVerticalScrollIndicator: showsVerticalScrollIndicator,
274
- bounces: true,
275
- alwaysBounceVertical: true,
281
+ animatedProps: animatedScrollProps,
282
+ alwaysBounceVertical: false,
276
283
  overScrollMode: "always",
277
284
  onScroll: (0, _reactNativeReanimated.useAnimatedScrollHandler)(event => {
278
285
  scrollY.value = event.contentOffset.y;