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.
- package/lib/commonjs/assets/fonts/JioType Var.ttf +0 -0
- package/lib/commonjs/components/Accordion/Accordion.js +1 -1
- package/lib/commonjs/components/Accordion/Accordion.js.map +1 -1
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +2 -2
- package/lib/commonjs/components/ActionFooter/ActionFooter.js.map +1 -1
- package/lib/commonjs/components/AppBar/AppBar.js +2 -2
- package/lib/commonjs/components/AppBar/AppBar.js.map +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js +2 -2
- package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/Badge/Badge.js +1 -1
- package/lib/commonjs/components/Badge/Badge.js.map +1 -1
- package/lib/commonjs/components/BottomNav/BottomNav.js +2 -2
- package/lib/commonjs/components/BottomNav/BottomNav.js.map +1 -1
- package/lib/commonjs/components/BottomNavItem/BottomNavItem.js +2 -2
- package/lib/commonjs/components/BottomNavItem/BottomNavItem.js.map +1 -1
- package/lib/commonjs/components/Button/Button.js +1 -1
- package/lib/commonjs/components/Button/Button.js.map +1 -1
- package/lib/commonjs/components/Carousel/Carousel.js +341 -0
- package/lib/commonjs/components/Carousel/Carousel.js.map +1 -0
- package/lib/commonjs/components/Carousel/Carousel.mdx +154 -0
- package/lib/commonjs/components/Disclaimer/Disclaimer.js +1 -1
- package/lib/commonjs/components/Disclaimer/Disclaimer.js.map +1 -1
- package/lib/commonjs/components/Divider/Divider.js +2 -2
- package/lib/commonjs/components/Divider/Divider.js.map +1 -1
- package/lib/commonjs/components/Drawer/Drawer.js +10 -3
- package/lib/commonjs/components/Drawer/Drawer.js.map +1 -1
- package/lib/commonjs/components/FilterBar/FilterBar.js +2 -2
- package/lib/commonjs/components/FilterBar/FilterBar.js.map +1 -1
- package/lib/commonjs/components/IconButton/IconButton.js +2 -2
- package/lib/commonjs/components/IconButton/IconButton.js.map +1 -1
- package/lib/commonjs/components/IconCapsule/IconCapsule.js +2 -2
- package/lib/commonjs/components/IconCapsule/IconCapsule.js.map +1 -1
- package/lib/commonjs/components/LazyList/LazyList.js +2 -2
- package/lib/commonjs/components/LazyList/LazyList.js.map +1 -1
- package/lib/commonjs/components/ListGroup/ListGroup.js +1 -1
- package/lib/commonjs/components/ListGroup/ListGroup.js.map +1 -1
- package/lib/commonjs/components/ListItem/ListItem.js +5 -5
- package/lib/commonjs/components/ListItem/ListItem.js.map +1 -1
- package/lib/commonjs/components/MerchantProfile/MerchantProfile.js +1 -1
- package/lib/commonjs/components/MerchantProfile/MerchantProfile.js.map +1 -1
- package/lib/commonjs/components/MoneyValue/MoneyValue.js +1 -1
- package/lib/commonjs/components/MoneyValue/MoneyValue.js.map +1 -1
- package/lib/commonjs/components/NavArrow/NavArrow.js +1 -1
- package/lib/commonjs/components/NavArrow/NavArrow.js.map +1 -1
- package/lib/commonjs/components/PageTitle/PageTitle.js +1 -1
- package/lib/commonjs/components/PageTitle/PageTitle.js.map +1 -1
- package/lib/commonjs/components/RadioButton/RadioButton.js +194 -0
- package/lib/commonjs/components/RadioButton/RadioButton.js.map +1 -0
- package/lib/commonjs/components/RadioButton/RadioButton.mdx +92 -0
- package/lib/commonjs/components/Section/Section.js +4 -4
- package/lib/commonjs/components/Section/Section.js.map +1 -1
- package/lib/commonjs/components/TextInput/TextInput.js +1 -1
- package/lib/commonjs/components/TextInput/TextInput.js.map +1 -1
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +2 -2
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.js.map +1 -1
- package/lib/commonjs/components/UpiHandle/UpiHandle.js +4 -2
- package/lib/commonjs/components/UpiHandle/UpiHandle.js.map +1 -1
- package/lib/commonjs/components/index.js +7 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/design-tokens/figma-variables-resolver.js +9 -3
- package/lib/commonjs/design-tokens/figma-variables-resolver.js.map +2 -1
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/module/assets/fonts/JioType Var.ttf +0 -0
- package/lib/module/components/Accordion/Accordion.js +1 -1
- package/lib/module/components/Accordion/Accordion.js.map +1 -1
- package/lib/module/components/ActionFooter/ActionFooter.js +2 -2
- package/lib/module/components/ActionFooter/ActionFooter.js.map +1 -1
- package/lib/module/components/AppBar/AppBar.js +2 -2
- package/lib/module/components/AppBar/AppBar.js.map +1 -1
- package/lib/module/components/Avatar/Avatar.js +2 -2
- package/lib/module/components/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/Badge/Badge.js +1 -1
- package/lib/module/components/Badge/Badge.js.map +1 -1
- package/lib/module/components/BottomNav/BottomNav.js +2 -2
- package/lib/module/components/BottomNav/BottomNav.js.map +1 -1
- package/lib/module/components/BottomNavItem/BottomNavItem.js +2 -2
- package/lib/module/components/BottomNavItem/BottomNavItem.js.map +1 -1
- package/lib/module/components/Button/Button.js +1 -1
- package/lib/module/components/Button/Button.js.map +1 -1
- package/lib/module/components/Carousel/Carousel.js +333 -0
- package/lib/module/components/Carousel/Carousel.js.map +1 -0
- package/lib/module/components/Carousel/Carousel.mdx +154 -0
- package/lib/module/components/Disclaimer/Disclaimer.js +1 -1
- package/lib/module/components/Disclaimer/Disclaimer.js.map +1 -1
- package/lib/module/components/Divider/Divider.js +2 -2
- package/lib/module/components/Divider/Divider.js.map +1 -1
- package/lib/module/components/Drawer/Drawer.js +11 -4
- package/lib/module/components/Drawer/Drawer.js.map +1 -1
- package/lib/module/components/FilterBar/FilterBar.js +2 -2
- package/lib/module/components/FilterBar/FilterBar.js.map +1 -1
- package/lib/module/components/IconButton/IconButton.js +2 -2
- package/lib/module/components/IconButton/IconButton.js.map +1 -1
- package/lib/module/components/IconCapsule/IconCapsule.js +2 -2
- package/lib/module/components/IconCapsule/IconCapsule.js.map +1 -1
- package/lib/module/components/LazyList/LazyList.js +2 -2
- package/lib/module/components/LazyList/LazyList.js.map +1 -1
- package/lib/module/components/ListGroup/ListGroup.js +1 -1
- package/lib/module/components/ListGroup/ListGroup.js.map +1 -1
- package/lib/module/components/ListItem/ListItem.js +5 -5
- package/lib/module/components/ListItem/ListItem.js.map +1 -1
- package/lib/module/components/MerchantProfile/MerchantProfile.js +1 -1
- package/lib/module/components/MerchantProfile/MerchantProfile.js.map +1 -1
- package/lib/module/components/MoneyValue/MoneyValue.js +1 -1
- package/lib/module/components/MoneyValue/MoneyValue.js.map +1 -1
- package/lib/module/components/NavArrow/NavArrow.js +1 -1
- package/lib/module/components/NavArrow/NavArrow.js.map +1 -1
- package/lib/module/components/PageTitle/PageTitle.js +1 -1
- package/lib/module/components/PageTitle/PageTitle.js.map +1 -1
- package/lib/module/components/RadioButton/RadioButton.js +188 -0
- package/lib/module/components/RadioButton/RadioButton.js.map +1 -0
- package/lib/module/components/RadioButton/RadioButton.mdx +92 -0
- package/lib/module/components/Section/Section.js +4 -4
- package/lib/module/components/Section/Section.js.map +1 -1
- package/lib/module/components/TextInput/TextInput.js +1 -1
- package/lib/module/components/TextInput/TextInput.js.map +1 -1
- package/lib/module/components/TransactionDetails/TransactionDetails.js +2 -2
- package/lib/module/components/TransactionDetails/TransactionDetails.js.map +1 -1
- package/lib/module/components/UpiHandle/UpiHandle.js +4 -2
- package/lib/module/components/UpiHandle/UpiHandle.js.map +1 -1
- package/lib/module/components/index.js +1 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/design-tokens/figma-variables-resolver.js +2 -2
- package/lib/module/design-tokens/figma-variables-resolver.js.map +1 -2
- package/lib/module/icons/registry.js +1 -1
- package/lib/typescript/components/ActionFooter/ActionFooter.d.ts.map +1 -1
- package/lib/typescript/components/BottomNav/BottomNav.d.ts.map +1 -1
- package/lib/typescript/components/Carousel/Carousel.d.ts +48 -0
- package/lib/typescript/components/Carousel/Carousel.d.ts.map +1 -0
- package/lib/typescript/components/Drawer/Drawer.d.ts.map +1 -1
- package/lib/typescript/components/IconButton/IconButton.d.ts +1 -1
- package/lib/typescript/components/IconCapsule/IconCapsule.d.ts +1 -1
- package/lib/typescript/components/LazyList/LazyList.d.ts.map +1 -1
- package/lib/typescript/components/RadioButton/RadioButton.d.ts +30 -0
- package/lib/typescript/components/RadioButton/RadioButton.d.ts.map +1 -0
- package/lib/typescript/components/Section/Section.d.ts.map +1 -1
- package/lib/typescript/components/UpiHandle/UpiHandle.d.ts +4 -2
- package/lib/typescript/components/UpiHandle/UpiHandle.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +1 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/icons/registry.d.ts +1 -1
- package/package.json +2 -2
- package/src/assets/fonts/JioType Var.ttf +0 -0
- package/src/components/.token-metadata.json +72 -0
- package/src/components/Accordion/Accordion.tsx +1 -1
- package/src/components/ActionFooter/ActionFooter.tsx +2 -2
- package/src/components/AppBar/AppBar.tsx +2 -2
- package/src/components/Avatar/Avatar.tsx +2 -2
- package/src/components/Badge/Badge.tsx +1 -1
- package/src/components/BottomNav/BottomNav.tsx +2 -2
- package/src/components/BottomNavItem/BottomNavItem.tsx +2 -2
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Carousel/Carousel.mdx +154 -0
- package/src/components/Carousel/Carousel.tsx +472 -0
- package/src/components/Disclaimer/Disclaimer.tsx +1 -1
- package/src/components/Divider/Divider.tsx +2 -2
- package/src/components/Drawer/Drawer.tsx +11 -3
- package/src/components/FilterBar/FilterBar.tsx +2 -2
- package/src/components/IconButton/IconButton.tsx +2 -2
- package/src/components/IconCapsule/IconCapsule.tsx +2 -2
- package/src/components/LazyList/LazyList.tsx +2 -2
- package/src/components/ListGroup/ListGroup.tsx +1 -1
- package/src/components/ListItem/ListItem.tsx +5 -5
- package/src/components/MerchantProfile/MerchantProfile.tsx +1 -1
- package/src/components/MoneyValue/MoneyValue.tsx +1 -1
- package/src/components/NavArrow/NavArrow.tsx +1 -1
- package/src/components/PageTitle/PageTitle.tsx +1 -1
- package/src/components/RadioButton/RadioButton.mdx +92 -0
- package/src/components/RadioButton/RadioButton.tsx +226 -0
- package/src/components/Section/Section.tsx +4 -4
- package/src/components/TextInput/TextInput.tsx +1 -1
- package/src/components/TransactionDetails/TransactionDetails.tsx +2 -2
- package/src/components/UpiHandle/UpiHandle.tsx +6 -3
- package/src/components/index.ts +1 -0
- 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":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AASA,IAAAC,YAAA,GAAAD,OAAA;AAWA,IAAAE,uBAAA,GAAAF,OAAA;AAAgF,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEhF;AACA;AACA;;AAWA,MAAMkB,eAAe,gBAAG,IAAAC,oBAAa,EAAuB;EAC1DC,KAAK,EAAE,CAAC,CAAC;EACTC,WAAW,EAAE,CAAC;EACdC,UAAU,EAAE,CAAC;EACbC,IAAI,EAAEA,CAAA,KAAM,CAAC,CAAC;EACdC,MAAM,EAAEA,CAAA,KAAM,CAAC,CAAC;EAChBC,MAAM,EAAEA,CAAA,KAAM,CAAC;AACjB,CAAC,CAAC;;AAEF;AACA;AACA;;AA2BA;AACA;AACA;;AAEO,SAASC,QAAQA,CAAC;EACvBC,QAAQ;EACRP,KAAK,GAAG,CAAC,CAAC;EACVQ,QAAQ,GAAG,KAAK;EAChBC,gBAAgB,GAAG,IAAI;EACvBC,cAAc,GAAG,IAAI;EACrBC,IAAI,GAAG,IAAI;EACXC,GAAG,EAAEC,OAAO;EACZC,SAAS,EAAEC,aAAa;EACxBC,UAAU,EAAEC,cAAc;EAC1BC,aAAa;EACbC;AACa,CAAC,EAAE;EAChB;EACA,MAAMC,QAAQ,GAAGC,UAAU,CACzB,IAAAC,yCAAiB,EAAC,cAAc,EAAEtB,KAAK,CAAC,IAAI,IAC9C,CAAC;EACD,MAAMY,GAAG,GAAGC,OAAO,IAAIO,QAAQ;EAE/B,MAAMG,eAAe,GAAGF,UAAU,CAChC,IAAAC,yCAAiB,EAAC,qBAAqB,EAAEtB,KAAK,CAAC,IAAI,GACrD,CAAC;EACD,MAAMgB,UAAU,GAAGC,cAAc,IAAIM,eAAe;EAEpD,MAAMC,iBAAiB,GAAGH,UAAU,CAClC,IAAAC,yCAAiB,EAAC,6BAA6B,EAAEtB,KAAK,CAAC,IAAI,GAC7D,CAAC;EACD,MAAMyB,iBAAiB,GAAGJ,UAAU,CAClC,IAAAC,yCAAiB,EAAC,2BAA2B,EAAEtB,KAAK,CAAC,IAAI,GAC3D,CAAC;EACD,MAAM0B,aAAa,GAAGL,UAAU,CAC9B,IAAAC,yCAAiB,EAAC,yBAAyB,EAAEtB,KAAK,CAAC,IAAI,IACzD,CAAC;;EAED;EACA,MAAM2B,SAAS,GAAG,IAAAC,aAAM,EAAa,IAAI,CAAC;EAC1C,MAAM,CAAC3B,WAAW,EAAE4B,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EACjD,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAF,eAAQ,EAAC,CAAC,CAAC;EACvD,MAAMG,aAAa,GAAG,IAAAL,aAAM,EAAwC,IAAI,CAAC;EACzE,MAAMM,eAAe,GAAG,IAAAN,aAAM,EAAC,KAAK,CAAC;;EAErC;EACA,MAAMO,KAAK,GAAG,IAAAC,cAAO,EACnB,MAAMC,cAAK,CAACC,QAAQ,CAACC,OAAO,CAAChC,QAAQ,CAAC,CAACiC,MAAM,CAACH,cAAK,CAACI,cAAc,CAAC,EACnE,CAAClC,QAAQ,CACX,CAAC;EAED,MAAML,UAAU,GAAGiC,KAAK,CAACO,MAAM;;EAE/B;EACA,MAAMC,kBAAkB,GAAG,IAAAP,cAAO,EAAC,MAAM;IACvC,IAAIrB,aAAa,IAAI,IAAI,EAAE,OAAOA,aAAa;IAC/C,IAAIgB,cAAc,KAAK,CAAC,EAAE,OAAO,CAAC;IAClC;IACA,OAAOA,cAAc,GAAGf,UAAU,GAAG,CAAC,GAAGQ,iBAAiB,GAAG,CAAC;EAChE,CAAC,EAAE,CAACT,aAAa,EAAEgB,cAAc,EAAEf,UAAU,EAAEQ,iBAAiB,CAAC,CAAC;;EAElE;EACA,MAAMoB,YAAY,GAAGD,kBAAkB,GAAG/B,GAAG;;EAE7C;EACA,MAAMiC,aAAa,GAAG,IAAAC,kBAAW,EAC/B,CAACC,KAAa,EAAEC,QAAQ,GAAG,IAAI,KAAK;IAClC,IAAI9C,UAAU,KAAK,CAAC,IAAI0C,YAAY,KAAK,CAAC,EAAE;IAC5C,IAAIK,WAAW,GAAGF,KAAK;IACvB,IAAIpC,IAAI,EAAE;MACRsC,WAAW,GAAG,CAAEF,KAAK,GAAG7C,UAAU,GAAIA,UAAU,IAAIA,UAAU;IAChE,CAAC,MAAM;MACL+C,WAAW,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACL,KAAK,EAAE7C,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5D;IACAyB,SAAS,CAAC0B,OAAO,EAAEC,QAAQ,CAAC;MAC1BC,CAAC,EAAEN,WAAW,GAAGL,YAAY;MAC7BI;IACF,CAAC,CAAC;IACFnB,cAAc,CAACoB,WAAW,CAAC;IAC3B/B,aAAa,GAAG+B,WAAW,CAAC;EAC9B,CAAC,EACD,CAAC/C,UAAU,EAAE0C,YAAY,EAAEjC,IAAI,EAAEO,aAAa,CAChD,CAAC;EAED,MAAMf,IAAI,GAAG,IAAA2C,kBAAW,EACrBC,KAAa,IAAKF,aAAa,CAACE,KAAK,CAAC,EACvC,CAACF,aAAa,CAChB,CAAC;EACD,MAAMzC,MAAM,GAAG,IAAA0C,kBAAW,EACxB,MAAMD,aAAa,CAAC5C,WAAW,GAAG,CAAC,CAAC,EACpC,CAAC4C,aAAa,EAAE5C,WAAW,CAC7B,CAAC;EACD,MAAMI,MAAM,GAAG,IAAAyC,kBAAW,EACxB,MAAMD,aAAa,CAAC5C,WAAW,GAAG,CAAC,CAAC,EACpC,CAAC4C,aAAa,EAAE5C,WAAW,CAC7B,CAAC;;EAED;EACA,MAAMuD,YAAY,GAAG,IAAAV,kBAAW,EAC7BW,KAA8C,IAAK;IAClD,IAAIb,YAAY,KAAK,CAAC,EAAE;IACxB,MAAMc,OAAO,GAAGD,KAAK,CAACE,WAAW,CAACC,aAAa,CAACL,CAAC;IACjD,MAAMM,QAAQ,GAAGX,IAAI,CAACY,KAAK,CAACJ,OAAO,GAAGd,YAAY,CAAC;IACnD,MAAMmB,YAAY,GAAGb,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACS,QAAQ,EAAE3D,UAAU,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI6D,YAAY,KAAK9D,WAAW,EAAE;MAChC4B,cAAc,CAACkC,YAAY,CAAC;MAC5B7C,aAAa,GAAG6C,YAAY,CAAC;IAC/B;EACF,CAAC,EACD,CAACnB,YAAY,EAAE1C,UAAU,EAAED,WAAW,EAAEiB,aAAa,CACvD,CAAC;;EAED;EACA,MAAM8C,aAAa,GAAG,IAAAlB,kBAAW,EAAC,MAAM;IACtC,IAAIb,aAAa,CAACoB,OAAO,IAAI,IAAI,EAAE;MACjCY,aAAa,CAAChC,aAAa,CAACoB,OAAO,CAAC;MACpCpB,aAAa,CAACoB,OAAO,GAAG,IAAI;IAC9B;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMa,aAAa,GAAG,IAAApB,kBAAW,EAAC,MAAM;IACtC,IAAI,CAACtC,QAAQ,IAAIN,UAAU,IAAI,CAAC,EAAE;IAClC8D,aAAa,CAAC,CAAC;IACf/B,aAAa,CAACoB,OAAO,GAAGc,WAAW,CAAC,MAAM;MACxC,IAAI,CAACjC,eAAe,CAACmB,OAAO,EAAE;QAC5BxB,cAAc,CAAEuC,IAAI,IAAK;UACvB,MAAMC,IAAI,GAAG1D,IAAI,GACb,CAACyD,IAAI,GAAG,CAAC,IAAIlE,UAAU,GACvBgD,IAAI,CAACE,GAAG,CAACgB,IAAI,GAAG,CAAC,EAAElE,UAAU,GAAG,CAAC,CAAC;UACtCyB,SAAS,CAAC0B,OAAO,EAAEC,QAAQ,CAAC;YAC1BC,CAAC,EAAEc,IAAI,GAAGzB,YAAY;YACtBI,QAAQ,EAAE;UACZ,CAAC,CAAC;UACF9B,aAAa,GAAGmD,IAAI,CAAC;UACrB,OAAOA,IAAI;QACb,CAAC,CAAC;MACJ;IACF,CAAC,EAAE5D,gBAAgB,CAAC;EACtB,CAAC,EAAE,CACDD,QAAQ,EACRN,UAAU,EACVS,IAAI,EACJiC,YAAY,EACZnC,gBAAgB,EAChBuD,aAAa,EACb9C,aAAa,CACd,CAAC;EAEF,IAAAoD,gBAAS,EAAC,MAAM;IACdJ,aAAa,CAAC,CAAC;IACf,OAAOF,aAAa;EACtB,CAAC,EAAE,CAACE,aAAa,EAAEF,aAAa,CAAC,CAAC;EAElC,MAAMO,qBAAqB,GAAG,IAAAzB,kBAAW,EAAC,MAAM;IAC9CZ,eAAe,CAACmB,OAAO,GAAG,IAAI;EAChC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,mBAAmB,GAAG,IAAA1B,kBAAW,EAAC,MAAM;IAC5CZ,eAAe,CAACmB,OAAO,GAAG,KAAK;IAC/B;IACA,IAAI7C,QAAQ,EAAE0D,aAAa,CAAC,CAAC;EAC/B,CAAC,EAAE,CAAC1D,QAAQ,EAAE0D,aAAa,CAAC,CAAC;;EAE7B;EACA,MAAMO,YAAY,GAAG,IAAA3B,kBAAW,EAAEnE,CAAoB,IAAK;IACzDqD,iBAAiB,CAACrD,CAAC,CAACgF,WAAW,CAACe,MAAM,CAACC,KAAK,CAAC;EAC/C,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMC,YAAY,GAAG,IAAAxC,cAAO,EAC1B,OAAO;IACLpC,KAAK;IACLC,WAAW;IACXC,UAAU;IACVC,IAAI;IACJC,MAAM;IACNC;EACF,CAAC,CAAC,EACF,CAACL,KAAK,EAAEC,WAAW,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CACvD,CAAC;;EAED;EACA,MAAMwE,UAAqB,GAAG;IAC5BC,eAAe,EAAErD;EACnB,CAAC;EAED,MAAMsD,qBAAgC,GAAG;IACvCC,iBAAiB,EAAEhE,UAAU,GAAGQ,iBAAiB;IACjDZ,GAAG;IACH;IACAqE,UAAU,EAAE;EACd,CAAC;EAED,oBACE,IAAAvG,WAAA,CAAAwG,GAAA,EAACpF,eAAe,CAACqF,QAAQ;IAACC,KAAK,EAAER,YAAa;IAAArE,QAAA,eAC5C,IAAA7B,WAAA,CAAA2G,IAAA,EAAC7G,YAAA,CAAA8G,IAAI;MAACnE,KAAK,EAAE,CAAC0D,UAAU,EAAE1D,KAAK,CAAE;MAACoE,QAAQ,EAAEd,YAAa;MAAAlE,QAAA,gBACvD,IAAA7B,WAAA,CAAAwG,GAAA,EAAC1G,YAAA,CAAAgH,UAAU;QACTC,GAAG,EAAE9D,SAAU;QACf+D,UAAU;QACVC,aAAa,EAAE,KAAM;QACrBC,8BAA8B,EAAE,KAAM;QACtCC,gBAAgB,EAAC,MAAM;QACvBC,cAAc,EAAElD,YAAY,GAAG,CAAC,GAAGA,YAAY,GAAGmD,SAAU;QAC5DC,eAAe,EAAC,OAAO;QACvBjB,qBAAqB,EAAEA,qBAAsB;QAC7CkB,QAAQ,EAAEzC,YAAa;QACvB0C,mBAAmB,EAAE,EAAG;QACxBC,iBAAiB,EAAE5B,qBAAsB;QACzC6B,eAAe,EAAE5B,mBAAoB;QAAAjE,QAAA,EAGpC4B,KAAK,CAACkE,GAAG,CAAC,CAACC,KAAK,EAAEvD,KAAK,KAAK;UAC3B,MAAMwD,SAAoB,GAAG;YAC3B5B,KAAK,EAAEhC,kBAAkB,GAAG,CAAC,GAAGA,kBAAkB,GAAGoD;UACvD,CAAC;;UAED;UACA,MAAMS,cAAc,GAAG,aAAAnE,cAAK,CAACI,cAAc,CAAC6D,KAAK,CAAC,gBAC9CjE,cAAK,CAACoE,YAAY,CAACH,KAAK,EAA6B;YACnDtG,KAAK,EAAE;cACL,IAAKsG,KAAK,CAACI,KAAK,EAAU1G,KAAK,IAAI,CAAC,CAAC,CAAC;cACtC,GAAGA;YACL,CAAC;YACDmB,KAAK,EAAE,CAACoF,SAAS,EAAGD,KAAK,CAACI,KAAK,EAAUvF,KAAK;UAChD,CAAC,CAAC,GACFmF,KAAK;UAET,oBACE,IAAA5H,WAAA,CAAAwG,GAAA,EAAC1G,YAAA,CAAA8G,IAAI;YAAanE,KAAK,EAAEoF,SAAU;YAAAhG,QAAA,EAChCiG;UAAc,GADNzD,KAEL,CAAC;QAEX,CAAC;MAAC,CACQ,CAAC,EAEZrC,cAAc,IAAIR,UAAU,GAAG,CAAC,iBAC/B,IAAAxB,WAAA,CAAAwG,GAAA,EAACyB,UAAU;QACT3G,KAAK,EAAEA,KAAM;QACbmB,KAAK,EAAE;UAAEyF,SAAS,EAAElF;QAAc;MAAE,CACrC,CACF;IAAA,CACG;EAAC,CACiB,CAAC;AAE/B;;AAEA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACO,SAASmF,IAAIA,CAAC;EAAEtG,QAAQ;EAAEP,KAAK,EAAE8G,MAAM;EAAE3F;AAAyB,CAAC,EAAE;EAC1E,oBAAO,IAAAzC,WAAA,CAAAwG,GAAA,EAAC1G,YAAA,CAAA8G,IAAI;IAACnE,KAAK,EAAEA,KAAM;IAAAZ,QAAA,EAAEA;EAAQ,CAAO,CAAC;AAC9C;;AAEA;AACA;AACA;;AAOO,SAASoG,UAAUA,CAAC;EAAE3G,KAAK,EAAE+G,SAAS;EAAE5F;AAAuB,CAAC,EAAE;EACvE,MAAM;IAAEnB,KAAK,EAAEgH,QAAQ;IAAE/G,WAAW;IAAEC,UAAU;IAAEC;EAAK,CAAC,GACtD,IAAA8G,iBAAU,EAACnH,eAAe,CAAC;EAC7B,MAAME,KAAK,GAAG+G,SAAS,IAAIC,QAAQ,IAAI,CAAC,CAAC;;EAEzC;EACA,MAAME,OAAO,GAAG7F,UAAU,CACxB,IAAAC,yCAAiB,EAAC,6BAA6B,EAAEtB,KAAK,CAAC,IAAI,GAC7D,CAAC;EACD,MAAMmH,cAAc,GAAG9F,UAAU,CAC/B,IAAAC,yCAAiB,EAAC,oCAAoC,EAAEtB,KAAK,CAAC,IAAI,IACpE,CAAC;EACD,MAAMoH,MAAM,GAAG/F,UAAU,CACvB,IAAAC,yCAAiB,EAAC,4BAA4B,EAAEtB,KAAK,CAAC,IAAI,GAC5D,CAAC;EACD,MAAMqH,QAAQ,GACX,IAAA/F,yCAAiB,EAAC,8BAA8B,EAAEtB,KAAK,CAAC,IACzD,wBAAwB;EAC1B,MAAMsH,cAAc,GACjB,IAAAhG,yCAAiB,EAChB,oCAAoC,EACpCtB,KACF,CAAC,IAAe,SAAS;EAC3B,MAAMuH,SAAS,GAAGlG,UAAU,CAC1B,IAAAC,yCAAiB,EAAC,+BAA+B,EAAEtB,KAAK,CAAC,IAAI,GAC/D,CAAC;EAED,MAAMwH,cAAyB,GAAG;IAChCC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,QAAQ;IACxBzC,UAAU,EAAE,QAAQ;IACpBrE,GAAG,EAAEwG;EACP,CAAC;EAED,oBACE,IAAA1I,WAAA,CAAAwG,GAAA,EAAC1G,YAAA,CAAA8G,IAAI;IACHnE,KAAK,EAAE,CAACqG,cAAc,EAAErG,KAAK,CAAE;IAC/BwG,iBAAiB,EAAC,SAAS;IAC3BC,kBAAkB,EAAE7B,SAAU;IAAAxF,QAAA,EAE7BsH,KAAK,CAACC,IAAI,CAAC;MAAEpF,MAAM,EAAExC;IAAW,CAAC,CAAC,CAACmG,GAAG,CAAC,CAAC0B,CAAC,EAAE7I,CAAC,KAAK;MAChD,MAAM8I,QAAQ,GAAG9I,CAAC,KAAKe,WAAW;MAClC,oBACE,IAAAvB,WAAA,CAAAwG,GAAA,EAAC1G,YAAA,CAAAyJ,SAAS;QAERC,OAAO,EAAEA,CAAA,KAAM/H,IAAI,CAACjB,CAAC,CAAE;QACvByI,iBAAiB,EAAC,KAAK;QACvBQ,kBAAkB,EAAE;UAAEC,QAAQ,EAAEJ;QAAS,CAAE;QAC3CJ,kBAAkB,EAAE7B,SAAU;QAAAxF,QAAA,eAE9B,IAAA7B,WAAA,CAAAwG,GAAA,EAACmD,WAAW;UACVL,QAAQ,EAAEA,QAAS;UACnBM,IAAI,EAAEpB,OAAQ;UACdqB,WAAW,EAAEpB,cAAe;UAC5BqB,MAAM,EAAEjB,SAAU;UAClBkB,KAAK,EAAEpB,QAAS;UAChBqB,WAAW,EAAEpB;QAAe,CAC7B;MAAC,GAbGpI,CAcI,CAAC;IAEhB,CAAC;EAAC,CACE,CAAC;AAEX;;AAEA;AACA;AACA;;AAWA,SAASmJ,WAAWA,CAAC;EACnBL,QAAQ;EACRM,IAAI;EACJC,WAAW;EACXC,MAAM;EACNC,KAAK;EACLC;AACgB,CAAC,EAAE;EACnB,MAAMC,SAAS,GAAG,IAAA/G,aAAM,EAAC,IAAIgH,qBAAQ,CAACC,KAAK,CAACb,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC3E,OAAO;EAEtE,IAAAiB,gBAAS,EAAC,MAAM;IACdsE,qBAAQ,CAACE,MAAM,CAACH,SAAS,EAAE;MACzBI,OAAO,EAAEf,QAAQ,GAAG,CAAC,GAAG,CAAC;MACzBgB,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EACZ,CAAC,EAAE,CAAClB,QAAQ,EAAEW,SAAS,CAAC,CAAC;EAEzB,MAAMhE,KAAK,GAAGgE,SAAS,CAACQ,WAAW,CAAC;IAClCC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClBC,WAAW,EAAE,CAACf,IAAI,EAAEC,WAAW;EACjC,CAAC,CAAC;EAEF,MAAMe,eAAe,GAAGX,SAAS,CAACQ,WAAW,CAAC;IAC5CC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClBC,WAAW,EAAE,CAACZ,KAAK,EAAEC,WAAW;EAClC,CAAC,CAAC;EAEF,oBACE,IAAAhK,WAAA,CAAAwG,GAAA,EAAC1G,YAAA,CAAAoK,QAAQ,CAACtD,IAAI;IACZnE,KAAK,EAAE;MACLwD,KAAK;MACL4E,MAAM,EAAEjB,IAAI;MACZkB,YAAY,EAAEhB,MAAM;MACpBc;IACF;EAAE,CACH,CAAC;AAEN;;AAEA;AACA;AACA;;AAEAhJ,QAAQ,CAACuG,IAAI,GAAGA,IAAI;AACpBvG,QAAQ,CAACqG,UAAU,GAAGA,UAAU;AAAA,IAAA8C,QAAA,GAAAC,OAAA,CAAArK,OAAA,GAEjBiB,QAAQ","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:
|
|
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,
|
|
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 =
|
|
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:
|
|
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,
|
|
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:
|
|
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
|
-
|
|
275
|
-
alwaysBounceVertical:
|
|
281
|
+
animatedProps: animatedScrollProps,
|
|
282
|
+
alwaysBounceVertical: false,
|
|
276
283
|
overScrollMode: "always",
|
|
277
284
|
onScroll: (0, _reactNativeReanimated.useAnimatedScrollHandler)(event => {
|
|
278
285
|
scrollY.value = event.contentOffset.y;
|