@unif/react-native-design 0.4.35 → 0.4.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/lib/module/components/ui/Reveal/Reveal.js +28 -0
  2. package/lib/module/components/ui/Reveal/Reveal.js.map +1 -0
  3. package/lib/module/components/ui/Reveal/Reveal.web.js +48 -0
  4. package/lib/module/components/ui/Reveal/Reveal.web.js.map +1 -0
  5. package/lib/module/components/ui/Reveal/index.js +4 -0
  6. package/lib/module/components/ui/Reveal/index.js.map +1 -0
  7. package/lib/module/components/ui/Reveal/types.js +4 -0
  8. package/lib/module/components/ui/Reveal/types.js.map +1 -0
  9. package/lib/module/components/ui/index.js +1 -0
  10. package/lib/module/components/ui/index.js.map +1 -1
  11. package/lib/typescript/src/components/ui/Reveal/Reveal.d.ts +11 -0
  12. package/lib/typescript/src/components/ui/Reveal/Reveal.d.ts.map +1 -0
  13. package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts +10 -0
  14. package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts.map +1 -0
  15. package/lib/typescript/src/components/ui/Reveal/index.d.ts +3 -0
  16. package/lib/typescript/src/components/ui/Reveal/index.d.ts.map +1 -0
  17. package/lib/typescript/src/components/ui/Reveal/types.d.ts +12 -0
  18. package/lib/typescript/src/components/ui/Reveal/types.d.ts.map +1 -0
  19. package/lib/typescript/src/components/ui/index.d.ts +2 -0
  20. package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
  21. package/package.json +2 -2
  22. package/src/components/ui/Reveal/Reveal.tsx +29 -0
  23. package/src/components/ui/Reveal/Reveal.web.tsx +46 -0
  24. package/src/components/ui/Reveal/index.ts +2 -0
  25. package/src/components/ui/Reveal/types.ts +12 -0
  26. package/src/components/ui/index.ts +2 -0
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
5
+ import { motion } from "../../../theme/index.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * 内容入/出场淡入淡出容器。native 走 reanimated 的 FadeIn/FadeOut layout 动画。
9
+ *
10
+ * web 走 Reveal.web.tsx —— reanimated 的 layout 动画在 react-native-web 运行时会崩
11
+ * (layoutReanimation/web 的 _updatePropsJS 里 Object.keys 抛 TypeError),那边用
12
+ * React state + CSS transition 复刻入场淡入。
13
+ */
14
+ export function Reveal({
15
+ children,
16
+ style,
17
+ duration = motion.base,
18
+ testID
19
+ }) {
20
+ return /*#__PURE__*/_jsx(Animated.View, {
21
+ entering: FadeIn.duration(duration),
22
+ exiting: FadeOut.duration(duration),
23
+ style: style,
24
+ testID: testID,
25
+ children: children
26
+ });
27
+ }
28
+ //# sourceMappingURL=Reveal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Animated","FadeIn","FadeOut","motion","jsx","_jsx","Reveal","children","style","duration","base","testID","View","entering","exiting"],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/Reveal.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,IAAIC,MAAM,EAAEC,OAAO,QAAQ,yBAAyB;AACnE,SAASC,MAAM,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,QAAQ;EACRC,KAAK;EACLC,QAAQ,GAAGN,MAAM,CAACO,IAAI;EACtBC;AACW,CAAC,EAAqB;EACjC,oBACEN,IAAA,CAACL,QAAQ,CAACY,IAAI;IACZC,QAAQ,EAAEZ,MAAM,CAACQ,QAAQ,CAACA,QAAQ,CAAE;IACpCK,OAAO,EAAEZ,OAAO,CAACO,QAAQ,CAACA,QAAQ,CAAE;IACpCD,KAAK,EAAEA,KAAM;IACbG,MAAM,EAAEA,MAAO;IAAAJ,QAAA,EAEdA;EAAQ,CACI,CAAC;AAEpB","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useRef, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { motion } from "../../../theme/index.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * Web 端 Reveal —— RN-Web 上 reanimated 4 的 layout 动画(FadeIn/FadeOut)会在
9
+ * _updatePropsJS 里 Object.keys 抛 TypeError(layoutReanimation/web,渲染即每帧崩),
10
+ * 改用 React state + CSS transition 复刻入场淡入。退场在 web 省略(消费者卸载即移除);
11
+ * native 走 Reveal.tsx 的 reanimated 实现。
12
+ */
13
+ export function Reveal({
14
+ children,
15
+ style,
16
+ duration = motion.base,
17
+ testID
18
+ }) {
19
+ const [visible, setVisible] = useState(false);
20
+ const rafRef = useRef(null);
21
+ useEffect(() => {
22
+ let cancelled = false;
23
+ // 双 RAF 过一帧 commit/paint,确保 CSS transition 有 opacity:0 起点(仿 ToastHost.web)。
24
+ rafRef.current = requestAnimationFrame(() => {
25
+ if (cancelled) return;
26
+ rafRef.current = requestAnimationFrame(() => {
27
+ if (!cancelled) setVisible(true);
28
+ });
29
+ });
30
+ return () => {
31
+ cancelled = true;
32
+ if (rafRef.current != null) cancelAnimationFrame(rafRef.current);
33
+ };
34
+ }, []);
35
+ const animatedWebStyle = {
36
+ opacity: visible ? 1 : 0,
37
+ transition: `opacity ${duration}ms ease-out`
38
+ };
39
+ return /*#__PURE__*/_jsx(View, {
40
+ style: style,
41
+ testID: testID,
42
+ children: /*#__PURE__*/_jsx("div", {
43
+ style: animatedWebStyle,
44
+ children: children
45
+ })
46
+ });
47
+ }
48
+ //# sourceMappingURL=Reveal.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","View","motion","jsx","_jsx","Reveal","children","style","duration","base","testID","visible","setVisible","rafRef","cancelled","current","requestAnimationFrame","cancelAnimationFrame","animatedWebStyle","opacity","transition"],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/Reveal.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,MAAM,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,QAAQ;EACRC,KAAK;EACLC,QAAQ,GAAGN,MAAM,CAACO,IAAI;EACtBC;AACW,CAAC,EAAqB;EACjC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMa,MAAM,GAAGd,MAAM,CAAgB,IAAI,CAAC;EAE1CD,SAAS,CAAC,MAAM;IACd,IAAIgB,SAAS,GAAG,KAAK;IACrB;IACAD,MAAM,CAACE,OAAO,GAAGC,qBAAqB,CAAC,MAAM;MAC3C,IAAIF,SAAS,EAAE;MACfD,MAAM,CAACE,OAAO,GAAGC,qBAAqB,CAAC,MAAM;QAC3C,IAAI,CAACF,SAAS,EAAEF,UAAU,CAAC,IAAI,CAAC;MAClC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,MAAM;MACXE,SAAS,GAAG,IAAI;MAChB,IAAID,MAAM,CAACE,OAAO,IAAI,IAAI,EAAEE,oBAAoB,CAACJ,MAAM,CAACE,OAAO,CAAC;IAClE,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,gBAAqC,GAAG;IAC5CC,OAAO,EAAER,OAAO,GAAG,CAAC,GAAG,CAAC;IACxBS,UAAU,EAAE,WAAWZ,QAAQ;EACjC,CAAC;EAED,oBACEJ,IAAA,CAACH,IAAI;IAACM,KAAK,EAAEA,KAAM;IAACG,MAAM,EAAEA,MAAO;IAAAJ,QAAA,eACjCF,IAAA;MAAKG,KAAK,EAAEW,gBAAiB;MAAAZ,QAAA,EAAEA;IAAQ,CAAM;EAAC,CAC1C,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { Reveal } from './Reveal';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Reveal"],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/ui/Reveal/types.ts"],"mappings":"","ignoreList":[]}
@@ -23,6 +23,7 @@ export { NavBar } from "./NavBar/index.js";
23
23
  export { PasswordInput } from "./PasswordInput/index.js";
24
24
  export { Pulse, PulseDot, usePulse } from "./Pulse/index.js";
25
25
  export { Radio } from "./Radio/index.js";
26
+ export { Reveal } from "./Reveal/index.js";
26
27
  export { Search } from "./Search/index.js";
27
28
  export { Skeleton } from "./Skeleton/index.js";
28
29
  export { Segmented } from "./Segmented/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Avatar","BottomSheet","BlurLayer","Button","Card","Carousel","Cell","List","Checkbox","Chip","confirm","ConfirmHost","DrawerHeader","Empty","EntryCard","Form","FormGroup","FormRow","Grid","Icon","IconButton","Input","Logo","NavBar","PasswordInput","Pulse","PulseDot","usePulse","Radio","Search","Skeleton","Segmented","Spinner","StatusDot","Stepper","Switch","TabBar","Tabs","Tag","Textarea","Thumbnail","toast","ToastHost"],"sourceRoot":"../../../../src","sources":["components/ui/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAU;AAEjC,SAASC,WAAW,QAAQ,wBAAe;AAE3C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,EAAEC,IAAI,QAAQ,iBAAQ;AAEnC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAW;AAEhD,SAASC,YAAY,QAAQ,yBAAgB;AAE7C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,iBAAQ;AAEjD,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,aAAa,QAAQ,0BAAiB;AAE/C,SAASC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,kBAAS;AAEnD,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,SAAS,QAAQ,sBAAa;AAMvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAE3B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,KAAK,EAAEC,SAAS,QAAQ,kBAAS","ignoreList":[]}
1
+ {"version":3,"names":["Avatar","BottomSheet","BlurLayer","Button","Card","Carousel","Cell","List","Checkbox","Chip","confirm","ConfirmHost","DrawerHeader","Empty","EntryCard","Form","FormGroup","FormRow","Grid","Icon","IconButton","Input","Logo","NavBar","PasswordInput","Pulse","PulseDot","usePulse","Radio","Reveal","Search","Skeleton","Segmented","Spinner","StatusDot","Stepper","Switch","TabBar","Tabs","Tag","Textarea","Thumbnail","toast","ToastHost"],"sourceRoot":"../../../../src","sources":["components/ui/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAU;AAEjC,SAASC,WAAW,QAAQ,wBAAe;AAE3C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,EAAEC,IAAI,QAAQ,iBAAQ;AAEnC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAW;AAEhD,SAASC,YAAY,QAAQ,yBAAgB;AAE7C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,iBAAQ;AAEjD,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,aAAa,QAAQ,0BAAiB;AAE/C,SAASC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,kBAAS;AAEnD,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,SAAS,QAAQ,sBAAa;AAMvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAE3B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,KAAK,EAAEC,SAAS,QAAQ,kBAAS","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { RevealProps } from './types';
3
+ /**
4
+ * 内容入/出场淡入淡出容器。native 走 reanimated 的 FadeIn/FadeOut layout 动画。
5
+ *
6
+ * web 走 Reveal.web.tsx —— reanimated 的 layout 动画在 react-native-web 运行时会崩
7
+ * (layoutReanimation/web 的 _updatePropsJS 里 Object.keys 抛 TypeError),那边用
8
+ * React state + CSS transition 复刻入场淡入。
9
+ */
10
+ export declare function Reveal({ children, style, duration, testID, }: RevealProps): React.JSX.Element;
11
+ //# sourceMappingURL=Reveal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reveal.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/Reveal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,QAAsB,EACtB,MAAM,GACP,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWjC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { RevealProps } from './types';
3
+ /**
4
+ * Web 端 Reveal —— RN-Web 上 reanimated 4 的 layout 动画(FadeIn/FadeOut)会在
5
+ * _updatePropsJS 里 Object.keys 抛 TypeError(layoutReanimation/web,渲染即每帧崩),
6
+ * 改用 React state + CSS transition 复刻入场淡入。退场在 web 省略(消费者卸载即移除);
7
+ * native 走 Reveal.tsx 的 reanimated 实现。
8
+ */
9
+ export declare function Reveal({ children, style, duration, testID, }: RevealProps): React.JSX.Element;
10
+ //# sourceMappingURL=Reveal.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reveal.web.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/Reveal.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,QAAsB,EACtB,MAAM,GACP,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6BjC"}
@@ -0,0 +1,3 @@
1
+ export { Reveal } from './Reveal';
2
+ export type { RevealProps } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ export type RevealProps = {
4
+ children: ReactNode;
5
+ /** 容器样式 */
6
+ style?: StyleProp<ViewStyle>;
7
+ /** 入/出场时长(毫秒,默认 motion.base = 200) */
8
+ duration?: number;
9
+ /** E2E / 测试定位 */
10
+ testID?: string;
11
+ };
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Reveal/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW;IACX,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -44,6 +44,8 @@ export { Pulse, PulseDot, usePulse } from './Pulse';
44
44
  export type { PulseOptions, PulseProps, PulseDotProps } from './Pulse';
45
45
  export { Radio } from './Radio';
46
46
  export type { GroupProps as RadioGroupProps, RadioProps } from './Radio';
47
+ export { Reveal } from './Reveal';
48
+ export type { RevealProps } from './Reveal';
47
49
  export { Search } from './Search';
48
50
  export type { SearchProps } from './Search';
49
51
  export { Skeleton } from './Skeleton';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-design",
3
- "version": "0.4.35",
3
+ "version": "0.4.37",
4
4
  "description": "Unif 设计系统:theme + icons + utils + components",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -84,7 +84,7 @@
84
84
  "react": "19.2.3",
85
85
  "react-native": "0.85.3",
86
86
  "react-native-builder-bob": "^0.41.0",
87
- "react-native-gesture-handler": "^2.31.2",
87
+ "react-native-gesture-handler": "^3.0.0",
88
88
  "react-native-reanimated": "^4.4.0",
89
89
  "react-native-reanimated-carousel": "^5.0.0-beta.5",
90
90
  "react-native-safe-area-context": "^5.7.0",
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import Animated, { FadeIn, FadeOut } from 'react-native-reanimated';
3
+ import { motion } from '../../../theme';
4
+ import type { RevealProps } from './types';
5
+
6
+ /**
7
+ * 内容入/出场淡入淡出容器。native 走 reanimated 的 FadeIn/FadeOut layout 动画。
8
+ *
9
+ * web 走 Reveal.web.tsx —— reanimated 的 layout 动画在 react-native-web 运行时会崩
10
+ * (layoutReanimation/web 的 _updatePropsJS 里 Object.keys 抛 TypeError),那边用
11
+ * React state + CSS transition 复刻入场淡入。
12
+ */
13
+ export function Reveal({
14
+ children,
15
+ style,
16
+ duration = motion.base,
17
+ testID,
18
+ }: RevealProps): React.JSX.Element {
19
+ return (
20
+ <Animated.View
21
+ entering={FadeIn.duration(duration)}
22
+ exiting={FadeOut.duration(duration)}
23
+ style={style}
24
+ testID={testID}
25
+ >
26
+ {children}
27
+ </Animated.View>
28
+ );
29
+ }
@@ -0,0 +1,46 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { View } from 'react-native';
3
+ import { motion } from '../../../theme';
4
+ import type { RevealProps } from './types';
5
+
6
+ /**
7
+ * Web 端 Reveal —— RN-Web 上 reanimated 4 的 layout 动画(FadeIn/FadeOut)会在
8
+ * _updatePropsJS 里 Object.keys 抛 TypeError(layoutReanimation/web,渲染即每帧崩),
9
+ * 改用 React state + CSS transition 复刻入场淡入。退场在 web 省略(消费者卸载即移除);
10
+ * native 走 Reveal.tsx 的 reanimated 实现。
11
+ */
12
+ export function Reveal({
13
+ children,
14
+ style,
15
+ duration = motion.base,
16
+ testID,
17
+ }: RevealProps): React.JSX.Element {
18
+ const [visible, setVisible] = useState(false);
19
+ const rafRef = useRef<number | null>(null);
20
+
21
+ useEffect(() => {
22
+ let cancelled = false;
23
+ // 双 RAF 过一帧 commit/paint,确保 CSS transition 有 opacity:0 起点(仿 ToastHost.web)。
24
+ rafRef.current = requestAnimationFrame(() => {
25
+ if (cancelled) return;
26
+ rafRef.current = requestAnimationFrame(() => {
27
+ if (!cancelled) setVisible(true);
28
+ });
29
+ });
30
+ return () => {
31
+ cancelled = true;
32
+ if (rafRef.current != null) cancelAnimationFrame(rafRef.current);
33
+ };
34
+ }, []);
35
+
36
+ const animatedWebStyle: React.CSSProperties = {
37
+ opacity: visible ? 1 : 0,
38
+ transition: `opacity ${duration}ms ease-out`,
39
+ };
40
+
41
+ return (
42
+ <View style={style} testID={testID}>
43
+ <div style={animatedWebStyle}>{children}</div>
44
+ </View>
45
+ );
46
+ }
@@ -0,0 +1,2 @@
1
+ export { Reveal } from './Reveal';
2
+ export type { RevealProps } from './types';
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+
4
+ export type RevealProps = {
5
+ children: ReactNode;
6
+ /** 容器样式 */
7
+ style?: StyleProp<ViewStyle>;
8
+ /** 入/出场时长(毫秒,默认 motion.base = 200) */
9
+ duration?: number;
10
+ /** E2E / 测试定位 */
11
+ testID?: string;
12
+ };
@@ -44,6 +44,8 @@ export { Pulse, PulseDot, usePulse } from './Pulse';
44
44
  export type { PulseOptions, PulseProps, PulseDotProps } from './Pulse';
45
45
  export { Radio } from './Radio';
46
46
  export type { GroupProps as RadioGroupProps, RadioProps } from './Radio';
47
+ export { Reveal } from './Reveal';
48
+ export type { RevealProps } from './Reveal';
47
49
  export { Search } from './Search';
48
50
  export type { SearchProps } from './Search';
49
51
  export { Skeleton } from './Skeleton';