@webority-technologies/mobile 0.0.5 → 0.0.7
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/README.md +3 -435
- package/lib/commonjs/components/Accordion/Accordion.js +20 -1
- package/lib/commonjs/components/Banner/Banner.js +17 -5
- package/lib/commonjs/components/Button/Button.js +5 -2
- package/lib/commonjs/components/Carousel/Carousel.js +18 -1
- package/lib/commonjs/components/Chip/Chip.js +27 -15
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +19 -9
- package/lib/commonjs/components/Rating/Rating.js +11 -1
- package/lib/commonjs/components/Skeleton/Skeleton.js +20 -12
- package/lib/commonjs/components/Skeleton/SkeletonContent.js +25 -9
- package/lib/commonjs/components/Skeleton/SkeletonList.js +7 -2
- package/lib/commonjs/components/Skeleton/SkeletonProvider.js +48 -0
- package/lib/commonjs/components/Skeleton/SkeletonSkip.js +37 -0
- package/lib/commonjs/components/Skeleton/index.js +20 -0
- package/lib/commonjs/components/Stepper/Stepper.js +13 -3
- package/lib/commonjs/components/index.js +18 -0
- package/lib/module/components/Accordion/Accordion.js +20 -1
- package/lib/module/components/Banner/Banner.js +17 -5
- package/lib/module/components/Button/Button.js +6 -3
- package/lib/module/components/Carousel/Carousel.js +18 -1
- package/lib/module/components/Chip/Chip.js +27 -15
- package/lib/module/components/ImageGallery/ImageGallery.js +11 -1
- package/lib/module/components/Rating/Rating.js +11 -1
- package/lib/module/components/Skeleton/Skeleton.js +20 -12
- package/lib/module/components/Skeleton/SkeletonContent.js +25 -9
- package/lib/module/components/Skeleton/SkeletonList.js +7 -2
- package/lib/module/components/Skeleton/SkeletonProvider.js +41 -0
- package/lib/module/components/Skeleton/SkeletonSkip.js +31 -0
- package/lib/module/components/Skeleton/index.js +2 -0
- package/lib/module/components/Stepper/Stepper.js +13 -3
- package/lib/module/components/index.js +1 -1
- package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +7 -0
- package/lib/typescript/commonjs/components/Banner/Banner.d.ts +6 -0
- package/lib/typescript/commonjs/components/Button/Button.d.ts +5 -0
- package/lib/typescript/commonjs/components/Carousel/Carousel.d.ts +7 -0
- package/lib/typescript/commonjs/components/Chip/Chip.d.ts +6 -0
- package/lib/typescript/commonjs/components/ImageGallery/ImageGallery.d.ts +6 -0
- package/lib/typescript/commonjs/components/Rating/Rating.d.ts +6 -0
- package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +9 -0
- package/lib/typescript/commonjs/components/Skeleton/SkeletonContent.d.ts +6 -0
- package/lib/typescript/commonjs/components/Skeleton/SkeletonList.d.ts +3 -0
- package/lib/typescript/commonjs/components/Skeleton/SkeletonProvider.d.ts +32 -0
- package/lib/typescript/commonjs/components/Skeleton/SkeletonSkip.d.ts +25 -0
- package/lib/typescript/commonjs/components/Skeleton/index.d.ts +4 -0
- package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +6 -0
- package/lib/typescript/commonjs/components/index.d.ts +2 -2
- package/lib/typescript/module/components/Accordion/Accordion.d.ts +7 -0
- package/lib/typescript/module/components/Banner/Banner.d.ts +6 -0
- package/lib/typescript/module/components/Button/Button.d.ts +5 -0
- package/lib/typescript/module/components/Carousel/Carousel.d.ts +7 -0
- package/lib/typescript/module/components/Chip/Chip.d.ts +6 -0
- package/lib/typescript/module/components/ImageGallery/ImageGallery.d.ts +6 -0
- package/lib/typescript/module/components/Rating/Rating.d.ts +6 -0
- package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +9 -0
- package/lib/typescript/module/components/Skeleton/SkeletonContent.d.ts +6 -0
- package/lib/typescript/module/components/Skeleton/SkeletonList.d.ts +3 -0
- package/lib/typescript/module/components/Skeleton/SkeletonProvider.d.ts +32 -0
- package/lib/typescript/module/components/Skeleton/SkeletonSkip.d.ts +25 -0
- package/lib/typescript/module/components/Skeleton/index.d.ts +4 -0
- package/lib/typescript/module/components/Stepper/Stepper.d.ts +6 -0
- package/lib/typescript/module/components/index.d.ts +2 -2
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ var _reactNative = require("react-native");
|
|
|
9
9
|
var _index = require("../../theme/index.js");
|
|
10
10
|
var _usePressAnimation = require("../../hooks/usePressAnimation.js");
|
|
11
11
|
var _hapticUtils = require("../../utils/hapticUtils.js");
|
|
12
|
+
var _index2 = require("../Skeleton/index.js");
|
|
12
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
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); }
|
|
14
15
|
const toneFor = (theme, tone) => {
|
|
@@ -101,6 +102,7 @@ const Chip = exports.Chip = /*#__PURE__*/(0, _react.forwardRef)((props, ref) =>
|
|
|
101
102
|
tone = 'neutral',
|
|
102
103
|
size = 'md',
|
|
103
104
|
disabled = false,
|
|
105
|
+
loading = false,
|
|
104
106
|
accessibilityLabel,
|
|
105
107
|
style,
|
|
106
108
|
textStyle,
|
|
@@ -159,7 +161,7 @@ const Chip = exports.Chip = /*#__PURE__*/(0, _react.forwardRef)((props, ref) =>
|
|
|
159
161
|
fontWeight: theme.typography.fontWeight.medium
|
|
160
162
|
}, textStyle],
|
|
161
163
|
numberOfLines: 1,
|
|
162
|
-
children: label
|
|
164
|
+
children: label ?? ' '
|
|
163
165
|
}), onClose ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
164
166
|
onPress: handleClose,
|
|
165
167
|
disabled: disabled,
|
|
@@ -200,8 +202,9 @@ const Chip = exports.Chip = /*#__PURE__*/(0, _react.forwardRef)((props, ref) =>
|
|
|
200
202
|
borderColor,
|
|
201
203
|
opacity: disabled ? 0.55 : 1
|
|
202
204
|
};
|
|
205
|
+
let rendered;
|
|
203
206
|
if (isPressable) {
|
|
204
|
-
|
|
207
|
+
rendered = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
205
208
|
style: {
|
|
206
209
|
transform: [{
|
|
207
210
|
scale
|
|
@@ -233,20 +236,29 @@ const Chip = exports.Chip = /*#__PURE__*/(0, _react.forwardRef)((props, ref) =>
|
|
|
233
236
|
children: content
|
|
234
237
|
})
|
|
235
238
|
});
|
|
239
|
+
} else {
|
|
240
|
+
rendered = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
241
|
+
ref: ref,
|
|
242
|
+
style: [styles.base, baseStyle, style],
|
|
243
|
+
accessible: true,
|
|
244
|
+
accessibilityRole: "text",
|
|
245
|
+
accessibilityLabel: a11yLabel,
|
|
246
|
+
accessibilityState: {
|
|
247
|
+
selected,
|
|
248
|
+
disabled
|
|
249
|
+
},
|
|
250
|
+
testID: testID,
|
|
251
|
+
children: content
|
|
252
|
+
});
|
|
236
253
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
disabled
|
|
246
|
-
},
|
|
247
|
-
testID: testID,
|
|
248
|
-
children: content
|
|
249
|
-
});
|
|
254
|
+
if (loading) {
|
|
255
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.SkeletonContent, {
|
|
256
|
+
loading: true,
|
|
257
|
+
mode: "auto",
|
|
258
|
+
children: rendered
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return rendered;
|
|
250
262
|
});
|
|
251
263
|
Chip.displayName = 'Chip';
|
|
252
264
|
const styles = _reactNative.StyleSheet.create({
|
|
@@ -10,8 +10,9 @@ var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
|
10
10
|
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
11
11
|
var _index = require("../Carousel/index.js");
|
|
12
12
|
var _index2 = require("../AppIcon/index.js");
|
|
13
|
-
var _index3 = require("
|
|
14
|
-
var _index4 = require("../../
|
|
13
|
+
var _index3 = require("../Skeleton/index.js");
|
|
14
|
+
var _index4 = require("../../theme/index.js");
|
|
15
|
+
var _index5 = require("../../utils/index.js");
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
17
|
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); }
|
|
17
18
|
/**
|
|
@@ -49,11 +50,12 @@ const ImageGallery = ({
|
|
|
49
50
|
enableLightbox = true,
|
|
50
51
|
enablePinchZoom = true,
|
|
51
52
|
onIndexChange,
|
|
53
|
+
loading = false,
|
|
52
54
|
accessibilityLabel,
|
|
53
55
|
containerStyle,
|
|
54
56
|
testID
|
|
55
57
|
}) => {
|
|
56
|
-
const theme = (0,
|
|
58
|
+
const theme = (0, _index4.useTheme)();
|
|
57
59
|
const styles = (0, _react.useMemo)(() => buildStyles(theme), [theme]);
|
|
58
60
|
const [currentIndex, setCurrentIndex] = (0, _react.useState)(clamp(initialIndex, 0, Math.max(0, images.length - 1)));
|
|
59
61
|
const [lightboxOpen, setLightboxOpen] = (0, _react.useState)(false);
|
|
@@ -63,11 +65,11 @@ const ImageGallery = ({
|
|
|
63
65
|
}, [onIndexChange]);
|
|
64
66
|
const openLightbox = (0, _react.useCallback)(() => {
|
|
65
67
|
if (!enableLightbox) return;
|
|
66
|
-
(0,
|
|
68
|
+
(0, _index5.triggerHaptic)('selection');
|
|
67
69
|
setLightboxOpen(true);
|
|
68
70
|
}, [enableLightbox]);
|
|
69
71
|
const closeLightbox = (0, _react.useCallback)(() => {
|
|
70
|
-
(0,
|
|
72
|
+
(0, _index5.triggerHaptic)('selection');
|
|
71
73
|
setLightboxOpen(false);
|
|
72
74
|
}, []);
|
|
73
75
|
const renderImage = (0, _react.useCallback)((image, idx) => {
|
|
@@ -90,7 +92,7 @@ const ImageGallery = ({
|
|
|
90
92
|
style: styles.thumbnailImage,
|
|
91
93
|
resizeMode: "cover"
|
|
92
94
|
}), [styles]);
|
|
93
|
-
|
|
95
|
+
const rendered = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
94
96
|
style: [styles.container, containerStyle],
|
|
95
97
|
testID: testID,
|
|
96
98
|
accessibilityLabel: accessibilityLabel ?? 'Image gallery',
|
|
@@ -125,6 +127,14 @@ const ImageGallery = ({
|
|
|
125
127
|
onIndexChange: handleIndexChange
|
|
126
128
|
}) : null]
|
|
127
129
|
});
|
|
130
|
+
if (loading) {
|
|
131
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index3.SkeletonContent, {
|
|
132
|
+
loading: true,
|
|
133
|
+
mode: "auto",
|
|
134
|
+
children: rendered
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return rendered;
|
|
128
138
|
};
|
|
129
139
|
exports.ImageGallery = ImageGallery;
|
|
130
140
|
ImageGallery.displayName = 'ImageGallery';
|
|
@@ -140,13 +150,13 @@ const Lightbox = ({
|
|
|
140
150
|
onClose,
|
|
141
151
|
onIndexChange
|
|
142
152
|
}) => {
|
|
143
|
-
const theme = (0,
|
|
153
|
+
const theme = (0, _index4.useTheme)();
|
|
144
154
|
const styles = (0, _react.useMemo)(() => buildLightboxStyles(theme), [theme]);
|
|
145
155
|
const carouselRef = (0, _react.useRef)(null);
|
|
146
156
|
const [activeIndex, setActiveIndex] = (0, _react.useState)(initialIndex);
|
|
147
157
|
const handleSwipe = (0, _react.useCallback)(idx => {
|
|
148
158
|
if (idx !== activeIndex) {
|
|
149
|
-
(0,
|
|
159
|
+
(0, _index5.triggerHaptic)('selection');
|
|
150
160
|
setActiveIndex(idx);
|
|
151
161
|
onIndexChange(idx);
|
|
152
162
|
}
|
|
@@ -255,7 +265,7 @@ const ZoomableImage = ({
|
|
|
255
265
|
savedTranslateY.value = 0;
|
|
256
266
|
}
|
|
257
267
|
}, [active, scale, translateX, translateY, savedScale, savedTranslateX, savedTranslateY]);
|
|
258
|
-
const triggerImpact = (0, _react.useCallback)(() => (0,
|
|
268
|
+
const triggerImpact = (0, _react.useCallback)(() => (0, _index5.triggerHaptic)('impactLight'), []);
|
|
259
269
|
const pinch = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Pinch().enabled(enabled).onStart(() => {
|
|
260
270
|
'worklet';
|
|
261
271
|
|
|
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _index = require("../../theme/index.js");
|
|
10
10
|
var _hapticUtils = require("../../utils/hapticUtils.js");
|
|
11
|
+
var _index2 = require("../Skeleton/index.js");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
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); }
|
|
13
14
|
const sizePxMap = {
|
|
@@ -83,6 +84,7 @@ const Rating = exports.Rating = /*#__PURE__*/(0, _react.forwardRef)((props, ref)
|
|
|
83
84
|
size = 'md',
|
|
84
85
|
tone = 'warning',
|
|
85
86
|
label,
|
|
87
|
+
loading = false,
|
|
86
88
|
accessibilityLabel,
|
|
87
89
|
style,
|
|
88
90
|
testID
|
|
@@ -168,7 +170,7 @@ const Rating = exports.Rating = /*#__PURE__*/(0, _react.forwardRef)((props, ref)
|
|
|
168
170
|
children: star
|
|
169
171
|
}, i));
|
|
170
172
|
}
|
|
171
|
-
|
|
173
|
+
const rendered = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
172
174
|
style: [styles.wrapper, style],
|
|
173
175
|
ref: ref,
|
|
174
176
|
testID: testID,
|
|
@@ -198,6 +200,14 @@ const Rating = exports.Rating = /*#__PURE__*/(0, _react.forwardRef)((props, ref)
|
|
|
198
200
|
children: stars
|
|
199
201
|
})]
|
|
200
202
|
});
|
|
203
|
+
if (loading) {
|
|
204
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.SkeletonContent, {
|
|
205
|
+
loading: true,
|
|
206
|
+
mode: "auto",
|
|
207
|
+
children: rendered
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return rendered;
|
|
201
211
|
});
|
|
202
212
|
Rating.displayName = 'Rating';
|
|
203
213
|
const starStyles = _reactNative.StyleSheet.create({
|
|
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _index = require("../../theme/index.js");
|
|
10
10
|
var _index2 = require("../../utils/index.js");
|
|
11
|
+
var _SkeletonProvider = require("./SkeletonProvider.js");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
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); }
|
|
13
14
|
const SPEED_DURATION = {
|
|
@@ -33,23 +34,30 @@ const resolveWidth = width => {
|
|
|
33
34
|
const Skeleton = ({
|
|
34
35
|
width = '100%',
|
|
35
36
|
height = 16,
|
|
36
|
-
radius
|
|
37
|
-
variant
|
|
38
|
-
speed
|
|
37
|
+
radius,
|
|
38
|
+
variant,
|
|
39
|
+
speed,
|
|
40
|
+
colors,
|
|
39
41
|
style,
|
|
40
42
|
testID
|
|
41
43
|
}) => {
|
|
42
44
|
const theme = (0, _index.useTheme)();
|
|
45
|
+
const defaults = (0, _SkeletonProvider.useSkeletonDefaults)();
|
|
46
|
+
const resolvedVariant = variant ?? defaults.variant ?? 'shimmer';
|
|
47
|
+
const resolvedSpeed = speed ?? defaults.speed ?? 'normal';
|
|
48
|
+
const resolvedRadiusToken = radius ?? defaults.radius ?? 'sm';
|
|
49
|
+
const backgroundColor = colors?.background ?? defaults.colors?.background ?? theme.colors.skeleton.background;
|
|
50
|
+
const highlightColor = colors?.highlight ?? defaults.colors?.highlight ?? theme.colors.skeleton.highlight;
|
|
43
51
|
const styles = (0, _react.useMemo)(() => buildStyles(theme), [theme]);
|
|
44
|
-
const borderRadius = resolveRadius(theme,
|
|
52
|
+
const borderRadius = resolveRadius(theme, resolvedRadiusToken);
|
|
45
53
|
const resolvedWidth = resolveWidth(width);
|
|
46
54
|
const resolvedHeight = _index2.Responsive.size(height);
|
|
47
55
|
const progress = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
|
|
48
56
|
const [containerWidth, setContainerWidth] = (0, _react.useState)(0);
|
|
49
57
|
(0, _react.useEffect)(() => {
|
|
50
58
|
progress.setValue(0);
|
|
51
|
-
const duration =
|
|
52
|
-
const animation =
|
|
59
|
+
const duration = resolvedVariant === 'pulse' ? PULSE_DURATION : SPEED_DURATION[resolvedSpeed];
|
|
60
|
+
const animation = resolvedVariant === 'pulse' ? _reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(progress, {
|
|
53
61
|
toValue: 1,
|
|
54
62
|
duration: duration / 2,
|
|
55
63
|
easing: _reactNative.Easing.inOut(_reactNative.Easing.ease),
|
|
@@ -69,17 +77,17 @@ const Skeleton = ({
|
|
|
69
77
|
return () => {
|
|
70
78
|
animation.stop();
|
|
71
79
|
};
|
|
72
|
-
}, [progress,
|
|
80
|
+
}, [progress, resolvedSpeed, resolvedVariant]);
|
|
73
81
|
const handleLayout = event => {
|
|
74
82
|
const next = event.nativeEvent.layout.width;
|
|
75
83
|
if (next !== containerWidth) setContainerWidth(next);
|
|
76
84
|
};
|
|
77
85
|
const overlay = (0, _react.useMemo)(() => {
|
|
78
|
-
if (
|
|
86
|
+
if (resolvedVariant === 'pulse') {
|
|
79
87
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
80
88
|
pointerEvents: "none",
|
|
81
89
|
style: [_reactNative.StyleSheet.absoluteFillObject, {
|
|
82
|
-
backgroundColor:
|
|
90
|
+
backgroundColor: highlightColor,
|
|
83
91
|
opacity: progress.interpolate({
|
|
84
92
|
inputRange: [0, 1],
|
|
85
93
|
outputRange: [0, 0.6]
|
|
@@ -97,13 +105,13 @@ const Skeleton = ({
|
|
|
97
105
|
pointerEvents: "none",
|
|
98
106
|
style: [styles.shimmer, {
|
|
99
107
|
width: highlightWidth,
|
|
100
|
-
backgroundColor:
|
|
108
|
+
backgroundColor: highlightColor,
|
|
101
109
|
transform: [{
|
|
102
110
|
translateX
|
|
103
111
|
}]
|
|
104
112
|
}]
|
|
105
113
|
});
|
|
106
|
-
}, [containerWidth, progress, styles.shimmer,
|
|
114
|
+
}, [containerWidth, progress, styles.shimmer, highlightColor, resolvedVariant]);
|
|
107
115
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
108
116
|
onLayout: handleLayout,
|
|
109
117
|
accessible: true,
|
|
@@ -115,7 +123,7 @@ const Skeleton = ({
|
|
|
115
123
|
width: resolvedWidth,
|
|
116
124
|
height: resolvedHeight,
|
|
117
125
|
borderRadius,
|
|
118
|
-
backgroundColor
|
|
126
|
+
backgroundColor
|
|
119
127
|
}, style],
|
|
120
128
|
children: overlay
|
|
121
129
|
});
|
|
@@ -7,6 +7,7 @@ exports.default = exports.SkeletonContent = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _Skeleton = require("./Skeleton.js");
|
|
10
|
+
var _SkeletonSkip = require("./SkeletonSkip.js");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
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); }
|
|
12
13
|
const flattenStyle = style => {
|
|
@@ -27,7 +28,7 @@ const resolveRadius = (raw, fallback) => {
|
|
|
27
28
|
if (typeof raw === 'number') return raw;
|
|
28
29
|
return fallback;
|
|
29
30
|
};
|
|
30
|
-
const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
31
|
+
const skeletonizeNode = (node, variant, speed, colors, keyHint = 'r') => {
|
|
31
32
|
if (node == null || typeof node === 'boolean') return null;
|
|
32
33
|
if (typeof node === 'string' || typeof node === 'number') {
|
|
33
34
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.Skeleton, {
|
|
@@ -35,11 +36,12 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
35
36
|
height: 14,
|
|
36
37
|
radius: "sm",
|
|
37
38
|
variant: variant,
|
|
38
|
-
speed: speed
|
|
39
|
+
speed: speed,
|
|
40
|
+
colors: colors
|
|
39
41
|
}, `${keyHint}-text`);
|
|
40
42
|
}
|
|
41
43
|
if (Array.isArray(node)) {
|
|
42
|
-
return _react.Children.map(node, (child, index) => skeletonizeNode(child, variant, speed, `${keyHint}-${index}`));
|
|
44
|
+
return _react.Children.map(node, (child, index) => skeletonizeNode(child, variant, speed, colors, `${keyHint}-${index}`));
|
|
43
45
|
}
|
|
44
46
|
if (! /*#__PURE__*/(0, _react.isValidElement)(node)) return null;
|
|
45
47
|
const element = node;
|
|
@@ -47,6 +49,13 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
47
49
|
const elementStyle = flattenStyle(props.style);
|
|
48
50
|
const elementType = element.type;
|
|
49
51
|
|
|
52
|
+
// <SkeletonSkip /> → opt-out marker; render its children unchanged
|
|
53
|
+
if (elementType === _SkeletonSkip.SkeletonSkip) {
|
|
54
|
+
return /*#__PURE__*/(0, _react.cloneElement)(element, {
|
|
55
|
+
key: `${keyHint}-skip`
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
50
59
|
// <Image /> → fixed-size skeleton block matching style.width/height/borderRadius
|
|
51
60
|
if (elementType === _reactNative.Image) {
|
|
52
61
|
const width = resolveWidth(elementStyle.width, '100%');
|
|
@@ -58,6 +67,7 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
58
67
|
radius: radius,
|
|
59
68
|
variant: variant,
|
|
60
69
|
speed: speed,
|
|
70
|
+
colors: colors,
|
|
61
71
|
style: {
|
|
62
72
|
margin: typeof elementStyle.margin === 'number' ? elementStyle.margin : undefined
|
|
63
73
|
}
|
|
@@ -74,6 +84,7 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
74
84
|
radius: "sm",
|
|
75
85
|
variant: variant,
|
|
76
86
|
speed: speed,
|
|
87
|
+
colors: colors,
|
|
77
88
|
style: {
|
|
78
89
|
marginVertical: 2
|
|
79
90
|
}
|
|
@@ -84,7 +95,7 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
84
95
|
if (props.children != null) {
|
|
85
96
|
return /*#__PURE__*/(0, _react.cloneElement)(element, {
|
|
86
97
|
key: `${keyHint}-w`
|
|
87
|
-
}, skeletonizeNode(props.children, variant, speed, `${keyHint}-c`));
|
|
98
|
+
}, skeletonizeNode(props.children, variant, speed, colors, `${keyHint}-c`));
|
|
88
99
|
}
|
|
89
100
|
|
|
90
101
|
// Leaf <View /> with explicit dimensions → skeleton block
|
|
@@ -97,7 +108,8 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
97
108
|
height: height,
|
|
98
109
|
radius: radius,
|
|
99
110
|
variant: variant,
|
|
100
|
-
speed: speed
|
|
111
|
+
speed: speed,
|
|
112
|
+
colors: colors
|
|
101
113
|
}, `${keyHint}-vw`);
|
|
102
114
|
}
|
|
103
115
|
|
|
@@ -110,10 +122,11 @@ const skeletonizeNode = (node, variant, speed, keyHint = 'r') => {
|
|
|
110
122
|
const SkeletonContent = ({
|
|
111
123
|
loading,
|
|
112
124
|
children,
|
|
113
|
-
variant
|
|
114
|
-
speed
|
|
125
|
+
variant,
|
|
126
|
+
speed,
|
|
115
127
|
mode = 'auto',
|
|
116
128
|
count = 1,
|
|
129
|
+
colors,
|
|
117
130
|
style,
|
|
118
131
|
testID
|
|
119
132
|
}) => {
|
|
@@ -133,6 +146,7 @@ const SkeletonContent = ({
|
|
|
133
146
|
testID: testID,
|
|
134
147
|
variant: variant,
|
|
135
148
|
speed: speed,
|
|
149
|
+
colors: colors,
|
|
136
150
|
children: repeated
|
|
137
151
|
});
|
|
138
152
|
}
|
|
@@ -143,7 +157,7 @@ const SkeletonContent = ({
|
|
|
143
157
|
accessibilityLabel: "Loading",
|
|
144
158
|
accessibilityRole: "progressbar",
|
|
145
159
|
accessibilityLiveRegion: "polite",
|
|
146
|
-
children: skeletonizeNode(repeated, variant, speed)
|
|
160
|
+
children: skeletonizeNode(repeated, variant, speed, colors)
|
|
147
161
|
});
|
|
148
162
|
};
|
|
149
163
|
exports.SkeletonContent = SkeletonContent;
|
|
@@ -152,6 +166,7 @@ const BlockSkeleton = ({
|
|
|
152
166
|
children,
|
|
153
167
|
variant,
|
|
154
168
|
speed,
|
|
169
|
+
colors,
|
|
155
170
|
style,
|
|
156
171
|
testID
|
|
157
172
|
}) => {
|
|
@@ -188,7 +203,8 @@ const BlockSkeleton = ({
|
|
|
188
203
|
height: size.height,
|
|
189
204
|
radius: "md",
|
|
190
205
|
variant: variant,
|
|
191
|
-
speed: speed
|
|
206
|
+
speed: speed,
|
|
207
|
+
colors: colors
|
|
192
208
|
})
|
|
193
209
|
}) : null]
|
|
194
210
|
});
|
|
@@ -7,6 +7,7 @@ exports.SkeletonList = void 0;
|
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _SkeletonContent = require("./SkeletonContent.js");
|
|
10
|
+
var _SkeletonProvider = require("./SkeletonProvider.js");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
13
|
/**
|
|
@@ -32,9 +33,10 @@ function SkeletonListInner(props) {
|
|
|
32
33
|
data,
|
|
33
34
|
renderItem,
|
|
34
35
|
renderPlaceholder,
|
|
35
|
-
placeholderCount
|
|
36
|
+
placeholderCount,
|
|
36
37
|
variant,
|
|
37
38
|
speed,
|
|
39
|
+
colors,
|
|
38
40
|
placeholderContainerStyle,
|
|
39
41
|
horizontal,
|
|
40
42
|
contentContainerStyle,
|
|
@@ -42,9 +44,11 @@ function SkeletonListInner(props) {
|
|
|
42
44
|
testID,
|
|
43
45
|
...rest
|
|
44
46
|
} = props;
|
|
47
|
+
const defaults = (0, _SkeletonProvider.useSkeletonDefaults)();
|
|
48
|
+
const resolvedCount = placeholderCount ?? defaults.placeholderCount ?? 3;
|
|
45
49
|
if (loading) {
|
|
46
50
|
const slots = Array.from({
|
|
47
|
-
length: Math.max(0,
|
|
51
|
+
length: Math.max(0, resolvedCount)
|
|
48
52
|
}, (_, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
|
|
49
53
|
children: renderPlaceholder ? renderPlaceholder(index) : null
|
|
50
54
|
}, `sk-list-${index}`));
|
|
@@ -52,6 +56,7 @@ function SkeletonListInner(props) {
|
|
|
52
56
|
loading: true,
|
|
53
57
|
variant: variant,
|
|
54
58
|
speed: speed,
|
|
59
|
+
colors: colors,
|
|
55
60
|
style: style,
|
|
56
61
|
testID: testID,
|
|
57
62
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSkeletonDefaults = exports.SkeletonProvider = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
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); }
|
|
10
|
+
/**
|
|
11
|
+
* Per-instance color override for a skeleton. `background` is the resting tone
|
|
12
|
+
* of the placeholder; `highlight` is the moving shimmer band (or pulse fade).
|
|
13
|
+
* Either can be omitted — missing keys fall back to the active theme.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const SkeletonDefaultsContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
17
|
+
const SkeletonProvider = ({
|
|
18
|
+
children,
|
|
19
|
+
variant,
|
|
20
|
+
speed,
|
|
21
|
+
placeholderCount,
|
|
22
|
+
radius,
|
|
23
|
+
colors
|
|
24
|
+
}) => {
|
|
25
|
+
const value = (0, _react.useMemo)(() => ({
|
|
26
|
+
variant,
|
|
27
|
+
speed,
|
|
28
|
+
placeholderCount,
|
|
29
|
+
radius,
|
|
30
|
+
colors
|
|
31
|
+
}), [variant, speed, placeholderCount, radius, colors]);
|
|
32
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonDefaultsContext.Provider, {
|
|
33
|
+
value: value,
|
|
34
|
+
children: children
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
exports.SkeletonProvider = SkeletonProvider;
|
|
38
|
+
SkeletonProvider.displayName = 'SkeletonProvider';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Read the current SkeletonProvider defaults. Returns an empty object when no
|
|
42
|
+
* provider is mounted, so the skeleton primitives still work outside of one.
|
|
43
|
+
*/
|
|
44
|
+
const useSkeletonDefaults = () => {
|
|
45
|
+
return (0, _react.useContext)(SkeletonDefaultsContext);
|
|
46
|
+
};
|
|
47
|
+
exports.useSkeletonDefaults = useSkeletonDefaults;
|
|
48
|
+
//# sourceMappingURL=SkeletonProvider.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SkeletonSkip = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/**
|
|
11
|
+
* Pass-through marker that opts a subtree out of `SkeletonContent`'s auto walker.
|
|
12
|
+
*
|
|
13
|
+
* The walker recognizes this element type and returns its children unchanged
|
|
14
|
+
* even while `loading` is true. Use it to keep a specific Text/Image/View
|
|
15
|
+
* visible inside a skeleton block — e.g., a brand mark, a status icon, or a
|
|
16
|
+
* decorative element that should never shimmer.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <SkeletonContent loading>
|
|
20
|
+
* <View style={styles.card}>
|
|
21
|
+
* <SkeletonSkip>
|
|
22
|
+
* <Image source={Logo} style={styles.brandMark} />
|
|
23
|
+
* </SkeletonSkip>
|
|
24
|
+
* <Text>Loading…</Text>
|
|
25
|
+
* </View>
|
|
26
|
+
* </SkeletonContent>
|
|
27
|
+
*/
|
|
28
|
+
const SkeletonSkip = ({
|
|
29
|
+
children
|
|
30
|
+
}) => {
|
|
31
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
32
|
+
children: children
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.SkeletonSkip = SkeletonSkip;
|
|
36
|
+
SkeletonSkip.displayName = 'SkeletonSkip';
|
|
37
|
+
//# sourceMappingURL=SkeletonSkip.js.map
|
|
@@ -45,6 +45,18 @@ Object.defineProperty(exports, "SkeletonListItem", {
|
|
|
45
45
|
return _Skeleton.SkeletonListItem;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
+
Object.defineProperty(exports, "SkeletonProvider", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _SkeletonProvider.SkeletonProvider;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "SkeletonSkip", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _SkeletonSkip.SkeletonSkip;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
48
60
|
Object.defineProperty(exports, "SkeletonText", {
|
|
49
61
|
enumerable: true,
|
|
50
62
|
get: function () {
|
|
@@ -57,8 +69,16 @@ Object.defineProperty(exports, "default", {
|
|
|
57
69
|
return _Skeleton.default;
|
|
58
70
|
}
|
|
59
71
|
});
|
|
72
|
+
Object.defineProperty(exports, "useSkeletonDefaults", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _SkeletonProvider.useSkeletonDefaults;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
60
78
|
var _Skeleton = _interopRequireWildcard(require("./Skeleton.js"));
|
|
61
79
|
var _SkeletonContent = require("./SkeletonContent.js");
|
|
62
80
|
var _SkeletonList = require("./SkeletonList.js");
|
|
81
|
+
var _SkeletonProvider = require("./SkeletonProvider.js");
|
|
82
|
+
var _SkeletonSkip = require("./SkeletonSkip.js");
|
|
63
83
|
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); }
|
|
64
84
|
//# sourceMappingURL=index.js.map
|
|
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _index = require("../../theme/index.js");
|
|
10
10
|
var _hapticUtils = require("../../utils/hapticUtils.js");
|
|
11
|
+
var _index2 = require("../Skeleton/index.js");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
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); }
|
|
13
14
|
const CIRCLE_SIZE = 24;
|
|
@@ -164,6 +165,7 @@ const Stepper = exports.Stepper = /*#__PURE__*/(0, _react.forwardRef)((props, re
|
|
|
164
165
|
onStepPress,
|
|
165
166
|
variant = 'horizontal',
|
|
166
167
|
tone = 'primary',
|
|
168
|
+
loading = false,
|
|
167
169
|
accessibilityLabel,
|
|
168
170
|
style,
|
|
169
171
|
testID
|
|
@@ -238,7 +240,7 @@ const Stepper = exports.Stepper = /*#__PURE__*/(0, _react.forwardRef)((props, re
|
|
|
238
240
|
fontSize: theme.typography.fontSize.xs
|
|
239
241
|
}],
|
|
240
242
|
numberOfLines: 1,
|
|
241
|
-
children: step
|
|
243
|
+
children: step?.label ?? ' '
|
|
242
244
|
})]
|
|
243
245
|
}, step.key);
|
|
244
246
|
})]
|
|
@@ -286,7 +288,7 @@ const Stepper = exports.Stepper = /*#__PURE__*/(0, _react.forwardRef)((props, re
|
|
|
286
288
|
fontWeight: theme.typography.fontWeight.semibold
|
|
287
289
|
}],
|
|
288
290
|
numberOfLines: 1,
|
|
289
|
-
children: step
|
|
291
|
+
children: step?.label ?? ' '
|
|
290
292
|
}), step.description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
291
293
|
style: [styles.vDescription, {
|
|
292
294
|
color: theme.colors.text.secondary,
|
|
@@ -299,7 +301,7 @@ const Stepper = exports.Stepper = /*#__PURE__*/(0, _react.forwardRef)((props, re
|
|
|
299
301
|
}, step.key);
|
|
300
302
|
})
|
|
301
303
|
});
|
|
302
|
-
|
|
304
|
+
const rendered = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
303
305
|
ref: ref,
|
|
304
306
|
style: [styles.container, style],
|
|
305
307
|
testID: testID,
|
|
@@ -312,6 +314,14 @@ const Stepper = exports.Stepper = /*#__PURE__*/(0, _react.forwardRef)((props, re
|
|
|
312
314
|
},
|
|
313
315
|
children: variant === 'horizontal' ? renderHorizontal() : renderVertical()
|
|
314
316
|
});
|
|
317
|
+
if (loading) {
|
|
318
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.SkeletonContent, {
|
|
319
|
+
loading: true,
|
|
320
|
+
mode: "auto",
|
|
321
|
+
children: rendered
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
return rendered;
|
|
315
325
|
});
|
|
316
326
|
Stepper.displayName = 'Stepper';
|
|
317
327
|
const buildStyles = theme => _reactNative.StyleSheet.create({
|