@oxyhq/bloom 0.6.10 → 0.6.12
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 -1
- package/lib/commonjs/dialog/CenteredDialog.js +9 -1
- package/lib/commonjs/dialog/CenteredDialog.js.map +1 -1
- package/lib/commonjs/index.js +36 -36
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +38 -38
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/loading/Loading.js +1 -1
- package/lib/commonjs/loading/Loading.web.js +237 -0
- package/lib/commonjs/loading/Loading.web.js.map +1 -0
- package/lib/commonjs/loading/SpinnerIcon.web.js +144 -0
- package/lib/commonjs/loading/SpinnerIcon.web.js.map +1 -0
- package/lib/commonjs/loading/index.js +2 -2
- package/lib/commonjs/loading/index.web.js +20 -0
- package/lib/commonjs/loading/index.web.js.map +1 -0
- package/lib/module/dialog/CenteredDialog.js +9 -1
- package/lib/module/dialog/CenteredDialog.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/loading/Loading.js +1 -1
- package/lib/module/loading/Loading.js.map +1 -1
- package/lib/module/loading/Loading.web.js +232 -0
- package/lib/module/loading/Loading.web.js.map +1 -0
- package/lib/module/loading/SpinnerIcon.web.js +138 -0
- package/lib/module/loading/SpinnerIcon.web.js.map +1 -0
- package/lib/module/loading/index.js +2 -2
- package/lib/module/loading/index.js.map +1 -1
- package/lib/module/loading/index.web.js +18 -0
- package/lib/module/loading/index.web.js.map +1 -0
- package/lib/typescript/commonjs/index.web.d.ts +1 -1
- package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/Loading.web.d.ts +4 -0
- package/lib/typescript/commonjs/loading/Loading.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/loading/SpinnerIcon.web.d.ts +17 -0
- package/lib/typescript/commonjs/loading/SpinnerIcon.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/loading/index.web.d.ts +4 -0
- package/lib/typescript/commonjs/loading/index.web.d.ts.map +1 -0
- package/lib/typescript/module/index.web.d.ts +1 -1
- package/lib/typescript/module/index.web.d.ts.map +1 -1
- package/lib/typescript/module/loading/Loading.web.d.ts +4 -0
- package/lib/typescript/module/loading/Loading.web.d.ts.map +1 -0
- package/lib/typescript/module/loading/SpinnerIcon.web.d.ts +17 -0
- package/lib/typescript/module/loading/SpinnerIcon.web.d.ts.map +1 -0
- package/lib/typescript/module/loading/index.web.d.ts +4 -0
- package/lib/typescript/module/loading/index.web.d.ts.map +1 -0
- package/package.json +6 -1
- package/src/dialog/CenteredDialog.tsx +9 -1
- package/src/index.web.ts +1 -1
- package/src/loading/Loading.web.tsx +244 -0
- package/src/loading/SpinnerIcon.web.tsx +134 -0
- package/src/loading/index.web.ts +24 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useMemo } from 'react';
|
|
4
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
5
|
+
import { useTheme } from "../theme/use-theme.js";
|
|
6
|
+
import { animation } from "../styles/tokens.js";
|
|
7
|
+
import { SpinnerIcon } from "./SpinnerIcon.web.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const SIZE_CONFIG = {
|
|
10
|
+
small: {
|
|
11
|
+
spinner: 20,
|
|
12
|
+
text: 13
|
|
13
|
+
},
|
|
14
|
+
medium: {
|
|
15
|
+
spinner: 24,
|
|
16
|
+
text: 15
|
|
17
|
+
},
|
|
18
|
+
large: {
|
|
19
|
+
spinner: 44,
|
|
20
|
+
text: 16
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const SpinnerLoading = ({
|
|
24
|
+
size = 'medium',
|
|
25
|
+
color,
|
|
26
|
+
className,
|
|
27
|
+
text,
|
|
28
|
+
textStyle,
|
|
29
|
+
style,
|
|
30
|
+
showText = true,
|
|
31
|
+
iconSize,
|
|
32
|
+
spinnerIcon,
|
|
33
|
+
testID
|
|
34
|
+
}) => {
|
|
35
|
+
const theme = useTheme();
|
|
36
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
37
|
+
const effectiveIconSize = iconSize ?? sizeConfig.spinner;
|
|
38
|
+
const spinnerColor = className ? 'currentColor' : color ?? theme.colors.primary;
|
|
39
|
+
const textColor = color ?? theme.colors.textSecondary;
|
|
40
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
41
|
+
style: [styles.container, style],
|
|
42
|
+
testID: testID,
|
|
43
|
+
children: [spinnerIcon ?? /*#__PURE__*/_jsx(SpinnerIcon, {
|
|
44
|
+
size: effectiveIconSize,
|
|
45
|
+
color: spinnerColor,
|
|
46
|
+
className: className
|
|
47
|
+
}), showText && text && /*#__PURE__*/_jsx(Text, {
|
|
48
|
+
style: [styles.text, {
|
|
49
|
+
color: textColor,
|
|
50
|
+
fontSize: sizeConfig.text,
|
|
51
|
+
marginTop: 8
|
|
52
|
+
}, textStyle],
|
|
53
|
+
children: text
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Web fork of the `top` variant.
|
|
60
|
+
*
|
|
61
|
+
* The native variant collapses/expands the container height and slides the
|
|
62
|
+
* spinner in/out with `react-native-reanimated`. Reanimated can't ship to a
|
|
63
|
+
* web bundle (its worklets Babel plugin has no web equivalent and importing it
|
|
64
|
+
* statically breaks the bundler), so this fork drives the same motion with CSS
|
|
65
|
+
* transitions — react-native-web emits `transition-*` style props to the DOM.
|
|
66
|
+
* The element stays mounted across `showLoading` toggles so both directions
|
|
67
|
+
* animate, exactly like the native `withTiming` on `height`, `opacity`, and
|
|
68
|
+
* `translateY`.
|
|
69
|
+
*/
|
|
70
|
+
const TopLoading = ({
|
|
71
|
+
size = 'medium',
|
|
72
|
+
color,
|
|
73
|
+
style,
|
|
74
|
+
showLoading = true,
|
|
75
|
+
iconSize,
|
|
76
|
+
heightOffset = 0,
|
|
77
|
+
spinnerIcon,
|
|
78
|
+
testID
|
|
79
|
+
}) => {
|
|
80
|
+
const theme = useTheme();
|
|
81
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
82
|
+
const effectiveIconSize = iconSize ?? sizeConfig.spinner;
|
|
83
|
+
const targetHeight = Math.max(0, effectiveIconSize + sizeConfig.spinner + heightOffset);
|
|
84
|
+
const spinnerColor = color ?? theme.colors.primary;
|
|
85
|
+
const duration = animation.duration.slow;
|
|
86
|
+
// `cubic-bezier(0.33, 1, 0.68, 1)` is the standard CSS approximation of
|
|
87
|
+
// reanimated's `Easing.out(Easing.cubic)` used by the native variant.
|
|
88
|
+
const easing = 'cubic-bezier(0.33, 1, 0.68, 1)';
|
|
89
|
+
const containerTransition = {
|
|
90
|
+
transitionProperty: 'height',
|
|
91
|
+
transitionDuration: `${duration}ms`,
|
|
92
|
+
transitionTimingFunction: easing
|
|
93
|
+
};
|
|
94
|
+
const innerTransition = {
|
|
95
|
+
transitionProperty: 'opacity, transform',
|
|
96
|
+
transitionDuration: `${duration}ms`,
|
|
97
|
+
transitionTimingFunction: easing
|
|
98
|
+
};
|
|
99
|
+
return /*#__PURE__*/_jsx(View, {
|
|
100
|
+
style: [styles.topContainer, {
|
|
101
|
+
height: showLoading ? targetHeight : 0
|
|
102
|
+
}, containerTransition],
|
|
103
|
+
testID: testID,
|
|
104
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
105
|
+
style: [styles.topLoadingView, {
|
|
106
|
+
height: targetHeight
|
|
107
|
+
}, {
|
|
108
|
+
opacity: showLoading ? 1 : 0,
|
|
109
|
+
transform: [{
|
|
110
|
+
translateY: showLoading ? 0 : -targetHeight
|
|
111
|
+
}]
|
|
112
|
+
}, innerTransition, style],
|
|
113
|
+
children: spinnerIcon ?? /*#__PURE__*/_jsx(SpinnerIcon, {
|
|
114
|
+
size: effectiveIconSize,
|
|
115
|
+
color: spinnerColor
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const SkeletonLoading = ({
|
|
121
|
+
lines = 3,
|
|
122
|
+
width = '100%',
|
|
123
|
+
lineHeight = 16,
|
|
124
|
+
style,
|
|
125
|
+
testID
|
|
126
|
+
}) => {
|
|
127
|
+
const theme = useTheme();
|
|
128
|
+
const skeletonColor = theme.colors.backgroundSecondary;
|
|
129
|
+
const skeletonLines = useMemo(() => Array.from({
|
|
130
|
+
length: lines
|
|
131
|
+
}, (_, index) => /*#__PURE__*/_jsx(View, {
|
|
132
|
+
style: [styles.skeletonLine, {
|
|
133
|
+
width: typeof width === 'string' ? width : `${width}%`,
|
|
134
|
+
height: lineHeight,
|
|
135
|
+
backgroundColor: skeletonColor,
|
|
136
|
+
marginBottom: index < lines - 1 ? 8 : 0
|
|
137
|
+
}]
|
|
138
|
+
}, index)), [lines, width, lineHeight, skeletonColor]);
|
|
139
|
+
return /*#__PURE__*/_jsx(View, {
|
|
140
|
+
style: [styles.skeletonContainer, style],
|
|
141
|
+
testID: testID,
|
|
142
|
+
children: skeletonLines
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
const InlineLoading = ({
|
|
146
|
+
size = 'small',
|
|
147
|
+
color,
|
|
148
|
+
text,
|
|
149
|
+
style,
|
|
150
|
+
textStyle,
|
|
151
|
+
spinnerIcon,
|
|
152
|
+
testID
|
|
153
|
+
}) => {
|
|
154
|
+
const theme = useTheme();
|
|
155
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
156
|
+
const spinnerColor = color ?? theme.colors.primary;
|
|
157
|
+
const textColor = theme.colors.textSecondary;
|
|
158
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
159
|
+
style: [styles.inlineContainer, style],
|
|
160
|
+
testID: testID,
|
|
161
|
+
children: [spinnerIcon ?? /*#__PURE__*/_jsx(SpinnerIcon, {
|
|
162
|
+
size: SIZE_CONFIG.small.spinner,
|
|
163
|
+
color: spinnerColor
|
|
164
|
+
}), text && /*#__PURE__*/_jsx(Text, {
|
|
165
|
+
style: [{
|
|
166
|
+
color: textColor,
|
|
167
|
+
fontSize: sizeConfig.text,
|
|
168
|
+
marginLeft: 8
|
|
169
|
+
}, textStyle],
|
|
170
|
+
children: text
|
|
171
|
+
})]
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
const LoadingComponent = props => {
|
|
175
|
+
const variant = props.variant ?? 'spinner';
|
|
176
|
+
switch (variant) {
|
|
177
|
+
case 'top':
|
|
178
|
+
return /*#__PURE__*/_jsx(TopLoading, {
|
|
179
|
+
...props
|
|
180
|
+
});
|
|
181
|
+
case 'skeleton':
|
|
182
|
+
return /*#__PURE__*/_jsx(SkeletonLoading, {
|
|
183
|
+
...props
|
|
184
|
+
});
|
|
185
|
+
case 'inline':
|
|
186
|
+
return /*#__PURE__*/_jsx(InlineLoading, {
|
|
187
|
+
...props
|
|
188
|
+
});
|
|
189
|
+
case 'spinner':
|
|
190
|
+
default:
|
|
191
|
+
return /*#__PURE__*/_jsx(SpinnerLoading, {
|
|
192
|
+
...props
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
export const Loading = /*#__PURE__*/memo(LoadingComponent);
|
|
197
|
+
Loading.displayName = 'Loading';
|
|
198
|
+
const styles = StyleSheet.create({
|
|
199
|
+
container: {
|
|
200
|
+
alignItems: 'center',
|
|
201
|
+
justifyContent: 'center',
|
|
202
|
+
padding: 16
|
|
203
|
+
},
|
|
204
|
+
text: {
|
|
205
|
+
textAlign: 'center'
|
|
206
|
+
},
|
|
207
|
+
topContainer: {
|
|
208
|
+
width: '100%',
|
|
209
|
+
position: 'relative',
|
|
210
|
+
overflow: 'hidden'
|
|
211
|
+
},
|
|
212
|
+
topLoadingView: {
|
|
213
|
+
width: '100%',
|
|
214
|
+
alignItems: 'center',
|
|
215
|
+
justifyContent: 'center',
|
|
216
|
+
position: 'absolute',
|
|
217
|
+
top: 0,
|
|
218
|
+
left: 0
|
|
219
|
+
},
|
|
220
|
+
skeletonContainer: {
|
|
221
|
+
width: '100%'
|
|
222
|
+
},
|
|
223
|
+
skeletonLine: {
|
|
224
|
+
borderRadius: 4
|
|
225
|
+
},
|
|
226
|
+
inlineContainer: {
|
|
227
|
+
flexDirection: 'row',
|
|
228
|
+
alignItems: 'center',
|
|
229
|
+
justifyContent: 'center'
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
//# sourceMappingURL=Loading.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","View","Text","StyleSheet","useTheme","animation","SpinnerIcon","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","spinner","text","medium","large","SpinnerLoading","size","color","className","textStyle","style","showText","iconSize","spinnerIcon","testID","theme","sizeConfig","effectiveIconSize","spinnerColor","colors","primary","textColor","textSecondary","styles","container","children","fontSize","marginTop","TopLoading","showLoading","heightOffset","targetHeight","Math","max","duration","slow","easing","containerTransition","transitionProperty","transitionDuration","transitionTimingFunction","innerTransition","topContainer","height","topLoadingView","opacity","transform","translateY","SkeletonLoading","lines","width","lineHeight","skeletonColor","backgroundSecondary","skeletonLines","Array","from","length","_","index","skeletonLine","backgroundColor","marginBottom","skeletonContainer","InlineLoading","inlineContainer","marginLeft","LoadingComponent","props","variant","Loading","displayName","create","alignItems","justifyContent","padding","textAlign","position","overflow","top","left","borderRadius","flexDirection"],"sourceRoot":"../../../src","sources":["loading/Loading.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect } from 'react';
|
|
4
|
+
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
/**
|
|
7
|
+
* iOS-style spinner — 8 rotating blades with an opacity-gradient trail.
|
|
8
|
+
*
|
|
9
|
+
* Web fork of `./SpinnerIcon`. The native variant draws the blades with
|
|
10
|
+
* `react-native-svg` and spins them with `react-native-reanimated`. Neither
|
|
11
|
+
* dependency exists in a plain web bundle (and importing reanimated statically
|
|
12
|
+
* breaks any web bundler — its Babel worklets plugin has no web equivalent), so
|
|
13
|
+
* this fork renders the blades as plain `View`s and spins the container with a
|
|
14
|
+
* CSS `@keyframes` rotation injected once into `<head>`.
|
|
15
|
+
*
|
|
16
|
+
* The geometry mirrors the native SVG exactly. The SVG draws each blade on a
|
|
17
|
+
* 100×100 canvas as a `28×10` rounded rect with its top-left at `(67, 45)` —
|
|
18
|
+
* i.e. a blade whose centre sits `31` units to the right of the canvas centre
|
|
19
|
+
* `(50, 50)` — then rotates copies of it about the centre at
|
|
20
|
+
* `-90…225°` in `45°` steps with opacities `0…0.875`. Here each blade is a
|
|
21
|
+
* `View` centred on the container, then `rotate(θ) translateX(radius)` places
|
|
22
|
+
* its centre at distance `radius` from the container centre at angle `θ`. All
|
|
23
|
+
* lengths scale by `size / 100` so any `size` is pixel-identical to native.
|
|
24
|
+
*/
|
|
25
|
+
const SVG_CANVAS = 100;
|
|
26
|
+
const BLADE_WIDTH = 28;
|
|
27
|
+
const BLADE_HEIGHT = 10;
|
|
28
|
+
/** Distance from canvas centre to a blade's centre: (67 + 28/2) − 50 = 31. */
|
|
29
|
+
const BLADE_RADIUS = 31;
|
|
30
|
+
const BLADE_RADIUS_CORNER = BLADE_HEIGHT / 2;
|
|
31
|
+
|
|
32
|
+
/** Angle (deg) / opacity for each of the 8 blades, matching the native SVG. */
|
|
33
|
+
const BLADES = [{
|
|
34
|
+
angle: -90,
|
|
35
|
+
opacity: 0
|
|
36
|
+
}, {
|
|
37
|
+
angle: -45,
|
|
38
|
+
opacity: 0.125
|
|
39
|
+
}, {
|
|
40
|
+
angle: 0,
|
|
41
|
+
opacity: 0.25
|
|
42
|
+
}, {
|
|
43
|
+
angle: 45,
|
|
44
|
+
opacity: 0.375
|
|
45
|
+
}, {
|
|
46
|
+
angle: 90,
|
|
47
|
+
opacity: 0.5
|
|
48
|
+
}, {
|
|
49
|
+
angle: 135,
|
|
50
|
+
opacity: 0.625
|
|
51
|
+
}, {
|
|
52
|
+
angle: 180,
|
|
53
|
+
opacity: 0.75
|
|
54
|
+
}, {
|
|
55
|
+
angle: 225,
|
|
56
|
+
opacity: 0.875
|
|
57
|
+
}];
|
|
58
|
+
const SPIN_DURATION_MS = 400;
|
|
59
|
+
const KEYFRAMES_ID = 'bloom-spinner-keyframes';
|
|
60
|
+
const SPIN_ANIMATION_NAME = 'bloomSpinnerRotate';
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* CSS keyframes powering the spin. Injected once into `<head>` (keyed by id so
|
|
64
|
+
* multiple spinners and re-mounts don't duplicate the rule). Mirrors the
|
|
65
|
+
* native `withRepeat(withTiming(360, { duration: 400, easing: linear }))`.
|
|
66
|
+
*/
|
|
67
|
+
export const BLOOM_SPINNER_CSS = `
|
|
68
|
+
@keyframes ${SPIN_ANIMATION_NAME} { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
|
|
69
|
+
`;
|
|
70
|
+
function useKeyframes() {
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (typeof document === 'undefined') return;
|
|
73
|
+
if (document.getElementById(KEYFRAMES_ID)) return;
|
|
74
|
+
const style = document.createElement('style');
|
|
75
|
+
style.id = KEYFRAMES_ID;
|
|
76
|
+
style.textContent = BLOOM_SPINNER_CSS;
|
|
77
|
+
document.head.appendChild(style);
|
|
78
|
+
}, []);
|
|
79
|
+
}
|
|
80
|
+
export const SpinnerIcon = ({
|
|
81
|
+
color = 'currentColor',
|
|
82
|
+
size = 26,
|
|
83
|
+
className,
|
|
84
|
+
style
|
|
85
|
+
}) => {
|
|
86
|
+
useKeyframes();
|
|
87
|
+
const scale = size / SVG_CANVAS;
|
|
88
|
+
const bladeWidth = BLADE_WIDTH * scale;
|
|
89
|
+
const bladeHeight = BLADE_HEIGHT * scale;
|
|
90
|
+
const bladeRadius = BLADE_RADIUS * scale;
|
|
91
|
+
const bladeCorner = BLADE_RADIUS_CORNER * scale;
|
|
92
|
+
return /*#__PURE__*/_jsx(View, {
|
|
93
|
+
...(className ? {
|
|
94
|
+
className
|
|
95
|
+
} : {}),
|
|
96
|
+
// `animation` is a real CSS prop on web; react-native-web passes it
|
|
97
|
+
// through to the DOM node. Typed as a cast because RN's ViewStyle has no
|
|
98
|
+
// `animation` key.
|
|
99
|
+
style: [styles.container, {
|
|
100
|
+
width: size,
|
|
101
|
+
height: size
|
|
102
|
+
}, {
|
|
103
|
+
animation: `${SPIN_ANIMATION_NAME} ${SPIN_DURATION_MS}ms linear infinite`
|
|
104
|
+
}, style],
|
|
105
|
+
children: BLADES.map(({
|
|
106
|
+
angle,
|
|
107
|
+
opacity
|
|
108
|
+
}) => /*#__PURE__*/_jsx(View, {
|
|
109
|
+
style: [styles.blade, {
|
|
110
|
+
width: bladeWidth,
|
|
111
|
+
height: bladeHeight,
|
|
112
|
+
borderRadius: bladeCorner,
|
|
113
|
+
backgroundColor: color,
|
|
114
|
+
opacity,
|
|
115
|
+
marginLeft: -bladeWidth / 2,
|
|
116
|
+
marginTop: -bladeHeight / 2,
|
|
117
|
+
transform: [{
|
|
118
|
+
rotate: `${angle}deg`
|
|
119
|
+
}, {
|
|
120
|
+
translateX: bladeRadius
|
|
121
|
+
}]
|
|
122
|
+
}]
|
|
123
|
+
}, angle))
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
SpinnerIcon.displayName = 'SpinnerIcon';
|
|
127
|
+
const styles = StyleSheet.create({
|
|
128
|
+
container: {
|
|
129
|
+
alignItems: 'center',
|
|
130
|
+
justifyContent: 'center'
|
|
131
|
+
},
|
|
132
|
+
blade: {
|
|
133
|
+
position: 'absolute',
|
|
134
|
+
top: '50%',
|
|
135
|
+
left: '50%'
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
//# sourceMappingURL=SpinnerIcon.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","StyleSheet","View","jsx","_jsx","SVG_CANVAS","BLADE_WIDTH","BLADE_HEIGHT","BLADE_RADIUS","BLADE_RADIUS_CORNER","BLADES","angle","opacity","SPIN_DURATION_MS","KEYFRAMES_ID","SPIN_ANIMATION_NAME","BLOOM_SPINNER_CSS","useKeyframes","document","getElementById","style","createElement","id","textContent","head","appendChild","SpinnerIcon","color","size","className","scale","bladeWidth","bladeHeight","bladeRadius","bladeCorner","styles","container","width","height","animation","children","map","blade","borderRadius","backgroundColor","marginLeft","marginTop","transform","rotate","translateX","displayName","create","alignItems","justifyContent","position","top","left"],"sourceRoot":"../../../src","sources":["loading/SpinnerIcon.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Loading","SpinnerIcon"],"sourceRoot":"../../../src","sources":["loading/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,
|
|
1
|
+
{"version":3,"names":["Loading","SpinnerIcon"],"sourceRoot":"../../../src","sources":["loading/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Web variant of the `./loading` barrel.
|
|
4
|
+
//
|
|
5
|
+
// The default barrel (`./index.ts`) re-exports from `./Loading` and
|
|
6
|
+
// `./SpinnerIcon`, which statically import `react-native-reanimated` (and lazily
|
|
7
|
+
// `react-native-svg`). Reanimated has no web build — its worklets Babel plugin
|
|
8
|
+
// is native-only and importing it statically breaks every web bundler (Vite,
|
|
9
|
+
// webpack, Metro-web). The web forks (`./Loading.web`, `./SpinnerIcon.web`)
|
|
10
|
+
// render the same components with CSS keyframes/transitions and no native deps.
|
|
11
|
+
//
|
|
12
|
+
// Web bundlers select this file via the `"browser"` export condition in
|
|
13
|
+
// `package.json`'s `exports['./loading']`; native bundlers fall through to the
|
|
14
|
+
// React Native build above. Types are platform-agnostic, so they come straight
|
|
15
|
+
// from `./types`.
|
|
16
|
+
export { Loading } from "./Loading.web.js";
|
|
17
|
+
export { SpinnerIcon } from "./SpinnerIcon.web.js";
|
|
18
|
+
//# sourceMappingURL=index.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Loading","SpinnerIcon"],"sourceRoot":"../../../src","sources":["loading/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,kBAAe;AACvC,SAASC,WAAW,QAAQ,sBAAmB","ignoreList":[]}
|
|
@@ -19,7 +19,7 @@ export * from './collapsible';
|
|
|
19
19
|
export { ErrorBoundary } from './error-boundary';
|
|
20
20
|
export type { ErrorBoundaryProps, ErrorBoundaryFallback, ErrorBoundaryFallbackContext, } from './error-boundary';
|
|
21
21
|
export * from './avatar';
|
|
22
|
-
export * from './loading';
|
|
22
|
+
export * from './loading/index.web';
|
|
23
23
|
export * as PromptInput from './prompt-input';
|
|
24
24
|
export * from './switch';
|
|
25
25
|
export { toast, type Toast } from './toast/index.web';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"AAMA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGhG,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,MAAM,EACN,cAAc,EACd,+BAA+B,EAC/B,mBAAmB,EACnB,KAAK,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loading.web.d.ts","sourceRoot":"","sources":["../../../../src/loading/Loading.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAM7C,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,SAAS,CAAC;AAmMjB,eAAO,MAAM,OAAO,0CAAyB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ViewStyle } from 'react-native';
|
|
3
|
+
interface SpinnerIconProps {
|
|
4
|
+
size?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: ViewStyle;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* CSS keyframes powering the spin. Injected once into `<head>` (keyed by id so
|
|
11
|
+
* multiple spinners and re-mounts don't duplicate the rule). Mirrors the
|
|
12
|
+
* native `withRepeat(withTiming(360, { duration: 400, easing: linear }))`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const BLOOM_SPINNER_CSS = "\n@keyframes bloomSpinnerRotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n";
|
|
15
|
+
export declare const SpinnerIcon: React.FC<SpinnerIconProps>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=SpinnerIcon.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpinnerIcon.web.d.ts","sourceRoot":"","sources":["../../../../src/loading/SpinnerIcon.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA4CD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8GAE7B,CAAC;AAaF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+ClD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Loading } from './Loading.web';
|
|
2
|
+
export { SpinnerIcon } from './SpinnerIcon.web';
|
|
3
|
+
export type { LoadingProps, LoadingVariant, LoadingSize, SpinnerLoadingProps, TopLoadingProps, SkeletonLoadingProps, InlineLoadingProps, } from './types';
|
|
4
|
+
//# sourceMappingURL=index.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/loading/index.web.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
|
|
@@ -19,7 +19,7 @@ export * from './collapsible';
|
|
|
19
19
|
export { ErrorBoundary } from './error-boundary';
|
|
20
20
|
export type { ErrorBoundaryProps, ErrorBoundaryFallback, ErrorBoundaryFallbackContext, } from './error-boundary';
|
|
21
21
|
export * from './avatar';
|
|
22
|
-
export * from './loading';
|
|
22
|
+
export * from './loading/index.web';
|
|
23
23
|
export * as PromptInput from './prompt-input';
|
|
24
24
|
export * from './switch';
|
|
25
25
|
export { toast, type Toast } from './toast/index.web';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"AAMA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGhG,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,MAAM,EACN,cAAc,EACd,+BAA+B,EAC/B,mBAAmB,EACnB,KAAK,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loading.web.d.ts","sourceRoot":"","sources":["../../../../src/loading/Loading.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAM7C,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,SAAS,CAAC;AAmMjB,eAAO,MAAM,OAAO,0CAAyB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ViewStyle } from 'react-native';
|
|
3
|
+
interface SpinnerIconProps {
|
|
4
|
+
size?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: ViewStyle;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* CSS keyframes powering the spin. Injected once into `<head>` (keyed by id so
|
|
11
|
+
* multiple spinners and re-mounts don't duplicate the rule). Mirrors the
|
|
12
|
+
* native `withRepeat(withTiming(360, { duration: 400, easing: linear }))`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const BLOOM_SPINNER_CSS = "\n@keyframes bloomSpinnerRotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n";
|
|
15
|
+
export declare const SpinnerIcon: React.FC<SpinnerIconProps>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=SpinnerIcon.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpinnerIcon.web.d.ts","sourceRoot":"","sources":["../../../../src/loading/SpinnerIcon.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA4CD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8GAE7B,CAAC;AAaF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+ClD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Loading } from './Loading.web';
|
|
2
|
+
export { SpinnerIcon } from './SpinnerIcon.web';
|
|
3
|
+
export type { LoadingProps, LoadingVariant, LoadingSize, SpinnerLoadingProps, TopLoadingProps, SkeletonLoadingProps, InlineLoadingProps, } from './types';
|
|
4
|
+
//# sourceMappingURL=index.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/loading/index.web.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/bloom",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.12",
|
|
4
4
|
"description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -172,6 +172,11 @@
|
|
|
172
172
|
},
|
|
173
173
|
"./loading": {
|
|
174
174
|
"react-native": "./src/loading/index.ts",
|
|
175
|
+
"browser": {
|
|
176
|
+
"types": "./lib/typescript/module/loading/index.web.d.ts",
|
|
177
|
+
"import": "./lib/module/loading/index.web.js",
|
|
178
|
+
"require": "./lib/commonjs/loading/index.web.js"
|
|
179
|
+
},
|
|
175
180
|
"import": {
|
|
176
181
|
"types": "./lib/typescript/module/loading/index.d.ts",
|
|
177
182
|
"default": "./lib/module/loading/index.js"
|
|
@@ -245,7 +245,15 @@ const styles = StyleSheet.create({
|
|
|
245
245
|
justifyContent: 'center',
|
|
246
246
|
},
|
|
247
247
|
backdrop: {
|
|
248
|
-
|
|
248
|
+
// Spell out the absolute-fill rect (matches `Fill`'s canonical style)
|
|
249
|
+
// rather than spreading the deprecated `StyleSheet.absoluteFillObject`,
|
|
250
|
+
// which RN 0.83's generated types no longer surface on the `StyleSheet`
|
|
251
|
+
// namespace and which downstream type-checks reject.
|
|
252
|
+
position: 'absolute',
|
|
253
|
+
top: 0,
|
|
254
|
+
right: 0,
|
|
255
|
+
bottom: 0,
|
|
256
|
+
left: 0,
|
|
249
257
|
},
|
|
250
258
|
// A subtle deepening on press confirms the tap-to-dismiss affordance.
|
|
251
259
|
backdropPressed: {
|
package/src/index.web.ts
CHANGED
|
@@ -54,7 +54,7 @@ export type {
|
|
|
54
54
|
ErrorBoundaryFallbackContext,
|
|
55
55
|
} from './error-boundary';
|
|
56
56
|
export * from './avatar';
|
|
57
|
-
export * from './loading';
|
|
57
|
+
export * from './loading/index.web';
|
|
58
58
|
export * as PromptInput from './prompt-input';
|
|
59
59
|
export * from './switch';
|
|
60
60
|
export { toast, type Toast } from './toast/index.web';
|