@unif/react-native-design 0.5.1 → 0.7.0
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 +60 -10
- package/lib/module/components/ui/Confirm/ConfirmHost.js +57 -83
- package/lib/module/components/ui/Confirm/ConfirmHost.js.map +1 -1
- package/lib/module/components/ui/Confirm/styles.js +14 -8
- package/lib/module/components/ui/Confirm/styles.js.map +1 -1
- package/lib/module/components/ui/Toast/ToastHost.js +23 -3
- package/lib/module/components/ui/Toast/ToastHost.js.map +1 -1
- package/lib/module/components/ui/Toast/styles.js +1 -1
- package/lib/module/components/ui/Toast/styles.js.map +1 -1
- package/lib/module/components/ui/Toast/toast.js +4 -2
- package/lib/module/components/ui/Toast/toast.js.map +1 -1
- package/lib/module/components/ui/index.js +0 -1
- package/lib/module/components/ui/index.js.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts +4 -3
- package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Confirm/styles.d.ts +11 -5
- package/lib/typescript/src/components/ui/Confirm/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Input/Input.d.ts +3 -3
- package/lib/typescript/src/components/ui/Search/Search.d.ts +3 -3
- package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts +3 -3
- package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts +3 -3
- package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts +3 -0
- package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/Toast/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/styles.d.ts +0 -1
- package/lib/typescript/src/components/ui/Toast/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/toast.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Toast/types.d.ts +9 -3
- package/lib/typescript/src/components/ui/Toast/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/index.d.ts +1 -3
- package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/components/ui/Confirm/ConfirmHost.tsx +60 -103
- package/src/components/ui/Confirm/styles.ts +14 -8
- package/src/components/ui/Toast/ToastHost.tsx +20 -3
- package/src/components/ui/Toast/index.ts +1 -0
- package/src/components/ui/Toast/styles.ts +1 -1
- package/src/components/ui/Toast/toast.ts +2 -1
- package/src/components/ui/Toast/types.ts +10 -3
- package/src/components/ui/index.ts +1 -2
- package/lib/module/components/ui/BottomSheet/BottomSheet.js +0 -104
- package/lib/module/components/ui/BottomSheet/BottomSheet.js.map +0 -1
- package/lib/module/components/ui/BottomSheet/index.js +0 -4
- package/lib/module/components/ui/BottomSheet/index.js.map +0 -1
- package/lib/module/components/ui/BottomSheet/styles.js +0 -26
- package/lib/module/components/ui/BottomSheet/styles.js.map +0 -1
- package/lib/module/components/ui/BottomSheet/types.js +0 -4
- package/lib/module/components/ui/BottomSheet/types.js.map +0 -1
- package/lib/typescript/src/components/ui/BottomSheet/BottomSheet.d.ts +0 -4
- package/lib/typescript/src/components/ui/BottomSheet/BottomSheet.d.ts.map +0 -1
- package/lib/typescript/src/components/ui/BottomSheet/index.d.ts +0 -3
- package/lib/typescript/src/components/ui/BottomSheet/index.d.ts.map +0 -1
- package/lib/typescript/src/components/ui/BottomSheet/styles.d.ts +0 -23
- package/lib/typescript/src/components/ui/BottomSheet/styles.d.ts.map +0 -1
- package/lib/typescript/src/components/ui/BottomSheet/types.d.ts +0 -26
- package/lib/typescript/src/components/ui/BottomSheet/types.d.ts.map +0 -1
- package/src/components/ui/BottomSheet/BottomSheet.tsx +0 -117
- package/src/components/ui/BottomSheet/index.ts +0 -2
- package/src/components/ui/BottomSheet/styles.ts +0 -20
- package/src/components/ui/BottomSheet/types.ts +0 -26
package/README.md
CHANGED
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
[](https://unif-design.github.io/react-native-design/)
|
|
7
7
|
|
|
8
|
-
Unif
|
|
8
|
+
Unif 设计系统 —— theme(设计令牌)+ 组件 + 图标 + utils,面向 React Native 0.85 新架构(Fabric + TurboModule)。所有 Unif 应用与端能力包的 UI 基座。
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
## 特性
|
|
11
|
+
|
|
12
|
+
- **运行时主题**:`useColors()` 角色 token 跟随系统 light/dark 自动切换;`useThemedStyles` + 模块顶层 `makeStyles` 缓存样式,绝不内联 hex。
|
|
13
|
+
- **40+ 组件**:Button、Card、Cell、NavBar、BottomSheet、Toast 等原子组件 + AvatarWithRing、GlassStats 等通用复合组件,全部从包根 barrel 导出,无需深路径。
|
|
14
|
+
- **a11y 内建**:交互组件预设 `accessibilityRole`;`IconButton` 的 `accessibilityLabel` 为类型必填。
|
|
15
|
+
- **图标集 + 严格 TS**:`IconName` 闭集类型、`<Icon>` 自动继承主题色;`strict` + `noUncheckedIndexedAccess`,类型随包发布。
|
|
12
16
|
|
|
13
17
|
## 安装
|
|
14
18
|
|
|
@@ -16,20 +20,66 @@ Unif 设计系统:theme(设计令牌)+ 组件 + 图标 + utils,面向 RN 0.8
|
|
|
16
20
|
yarn add @unif/react-native-design
|
|
17
21
|
```
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
本库不打包原生依赖,宿主工程需自行安装下列 peer 并完成原生侧配置:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
yarn add react-native-svg \
|
|
27
|
+
react-native-gesture-handler \
|
|
28
|
+
react-native-reanimated \
|
|
29
|
+
react-native-worklets \
|
|
30
|
+
react-native-safe-area-context \
|
|
31
|
+
react-native-reanimated-carousel \
|
|
32
|
+
@gorhom/bottom-sheet \
|
|
33
|
+
@sbaiahmed1/react-native-blur
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
iOS 另需在 `ios/` 执行 `bundle exec pod install`。完整步骤见[文档站 · 快速开始](https://unif-design.github.io/react-native-design/docs/getting-started)。
|
|
37
|
+
|
|
38
|
+
## 快速开始
|
|
20
39
|
|
|
21
|
-
|
|
40
|
+
在 App 根挂一次 `ThemeProvider`,命令式 host(`ToastHost` / `ConfirmHost`)按需添加;`makeStyles` 必须写在模块顶层:
|
|
22
41
|
|
|
23
42
|
```tsx
|
|
24
|
-
import {
|
|
43
|
+
import {
|
|
44
|
+
ThemeProvider, ToastHost, Button, useThemedStyles, type ColorTokens,
|
|
45
|
+
} from '@unif/react-native-design';
|
|
46
|
+
import { View } from 'react-native';
|
|
25
47
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
48
|
+
// inline 会破坏 useThemedStyles 的样式缓存
|
|
49
|
+
const makeStyles = (c: ColorTokens) => ({
|
|
50
|
+
wrap: { padding: 16, backgroundColor: c.surface },
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
function Demo() {
|
|
54
|
+
const styles = useThemedStyles(makeStyles);
|
|
55
|
+
return (
|
|
56
|
+
<View style={styles.wrap}>
|
|
57
|
+
<Button label="保存" onPress={() => {}} />
|
|
58
|
+
</View>
|
|
59
|
+
);
|
|
29
60
|
}
|
|
61
|
+
|
|
62
|
+
export const App = () => (
|
|
63
|
+
<ThemeProvider>
|
|
64
|
+
<Demo />
|
|
65
|
+
<ToastHost />
|
|
66
|
+
</ThemeProvider>
|
|
67
|
+
);
|
|
30
68
|
```
|
|
31
69
|
|
|
32
|
-
|
|
70
|
+
## 文档
|
|
71
|
+
|
|
72
|
+
- **文档站**(快速开始 · 组件 API · 设计令牌 · 设计原则):https://unif-design.github.io/react-native-design/
|
|
73
|
+
- **AI / LLM**(纯 Markdown,按需 fetch,别凭记忆猜 API):
|
|
74
|
+
[llms.txt 索引](https://unif-design.github.io/react-native-design/llms.txt) · [llms-full.txt 全文](https://unif-design.github.io/react-native-design/llms-full.txt)
|
|
75
|
+
- **Agent Skill** `using-unif-design`(覆盖组件 API、token 规则、与原生 RN 的关键差异):
|
|
76
|
+
`/plugin marketplace add unif-design/react-native-skills` → `/plugin install unif-react-native@unif-react-native-skills`
|
|
77
|
+
|
|
78
|
+
## 兼容性
|
|
79
|
+
|
|
80
|
+
- React Native **0.85+**(新架构 Fabric + TurboModule;随 RN 0.85 对应 concurrent React)
|
|
81
|
+
- React 19、TypeScript 6
|
|
82
|
+
- Node.js ≥ 24.13(见 `.nvmrc`)
|
|
33
83
|
|
|
34
84
|
## 许可
|
|
35
85
|
|
|
@@ -1,110 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useCallback, useEffect,
|
|
4
|
-
import { Text, View } from 'react-native';
|
|
5
|
-
import {
|
|
6
|
-
import { useThemedStyles } from "../../../theme/index.js";
|
|
3
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
4
|
+
import { Modal, Pressable, Text, View } from 'react-native';
|
|
5
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
6
|
+
import { space, useThemedStyles } from "../../../theme/index.js";
|
|
7
7
|
import { Button } from "../Button/index.js";
|
|
8
8
|
import { _subs } from "./confirm.js";
|
|
9
9
|
import { makeStyles } from "./styles.js";
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
|
-
/** Scrim backdrop —— 单色半透黑 opacity 0.5 */
|
|
12
|
-
function ScrimBackdrop(props) {
|
|
13
|
-
return /*#__PURE__*/_jsx(BottomSheetBackdrop, {
|
|
14
|
-
...props,
|
|
15
|
-
appearsOnIndex: 0,
|
|
16
|
-
disappearsOnIndex: -1,
|
|
17
|
-
opacity: 0.5
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
11
|
/**
|
|
22
|
-
* Confirm
|
|
12
|
+
* Confirm 对话框宿主 —— App 根挂一次,监听 `confirm()` 调用并渲染。
|
|
23
13
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
14
|
+
* 原生 RN `Modal`(transparent + animationType slide)从底部滑入,backdrop 点击
|
|
15
|
+
* 取消、内层 sheet 拦截点击不冒泡。**不依赖 @gorhom**(0.6.0 去 @gorhom 后改为
|
|
16
|
+
* 纯 RN Modal + pub/sub 实现)。
|
|
26
17
|
*/
|
|
27
18
|
export function ConfirmHost() {
|
|
28
19
|
const styles = useThemedStyles(makeStyles);
|
|
29
|
-
const
|
|
20
|
+
const insets = useSafeAreaInsets();
|
|
30
21
|
const [entry, setEntry] = useState(null);
|
|
31
22
|
useEffect(() => {
|
|
32
|
-
const sub = next =>
|
|
33
|
-
setEntry(next);
|
|
34
|
-
if (next) {
|
|
35
|
-
modalRef.current?.present();
|
|
36
|
-
} else {
|
|
37
|
-
modalRef.current?.dismiss();
|
|
38
|
-
}
|
|
39
|
-
};
|
|
23
|
+
const sub = next => setEntry(next);
|
|
40
24
|
_subs.add(sub);
|
|
41
25
|
return () => {
|
|
42
26
|
_subs.delete(sub);
|
|
43
27
|
};
|
|
44
28
|
}, []);
|
|
45
|
-
|
|
46
|
-
// onDismiss:drag-to-close / backdrop tap / 程序 dismiss 都触发,entry 还在视为取消
|
|
47
|
-
// 三个 handler 都用 useCallback + [entry] deps —— 让 renderFooter 的 useCallback
|
|
48
|
-
// deps 能正确锁定它们,引用稳定 = @gorhom 不会因 backdrop 重生成而抖动。
|
|
49
|
-
const handleDismiss = useCallback(() => {
|
|
50
|
-
if (entry) {
|
|
51
|
-
entry.resolve(false);
|
|
52
|
-
setEntry(null);
|
|
53
|
-
}
|
|
54
|
-
}, [entry]);
|
|
55
29
|
const handleConfirm = useCallback(() => {
|
|
56
30
|
entry?.resolve(true);
|
|
57
|
-
|
|
31
|
+
setEntry(null);
|
|
58
32
|
}, [entry]);
|
|
59
33
|
const handleCancel = useCallback(() => {
|
|
60
34
|
entry?.resolve(false);
|
|
61
|
-
|
|
35
|
+
setEntry(null);
|
|
62
36
|
}, [entry]);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}) : null
|
|
107
|
-
})
|
|
37
|
+
return /*#__PURE__*/_jsx(Modal, {
|
|
38
|
+
visible: !!entry,
|
|
39
|
+
transparent: true,
|
|
40
|
+
animationType: "slide",
|
|
41
|
+
statusBarTranslucent: true,
|
|
42
|
+
onRequestClose: handleCancel,
|
|
43
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
44
|
+
style: styles.backdrop,
|
|
45
|
+
onPress: handleCancel,
|
|
46
|
+
accessibilityRole: "button",
|
|
47
|
+
accessibilityLabel: "\u5173\u95ED",
|
|
48
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
49
|
+
style: [styles.sheet, {
|
|
50
|
+
paddingBottom: insets.bottom + space['7']
|
|
51
|
+
}],
|
|
52
|
+
onPress: () => {},
|
|
53
|
+
children: entry ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
54
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
55
|
+
style: styles.body,
|
|
56
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
57
|
+
style: styles.title,
|
|
58
|
+
accessibilityRole: "header",
|
|
59
|
+
children: entry.title
|
|
60
|
+
}), entry.message ? /*#__PURE__*/_jsx(Text, {
|
|
61
|
+
style: styles.message,
|
|
62
|
+
children: entry.message
|
|
63
|
+
}) : null]
|
|
64
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
65
|
+
style: styles.actions,
|
|
66
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
67
|
+
testID: "confirm-cancel",
|
|
68
|
+
label: entry.cancelLabel ?? '取消',
|
|
69
|
+
variant: "secondary",
|
|
70
|
+
block: true,
|
|
71
|
+
onPress: handleCancel
|
|
72
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
73
|
+
testID: "confirm-ok",
|
|
74
|
+
label: entry.confirmLabel ?? '确认',
|
|
75
|
+
variant: entry.destructive ? 'danger' : 'primary',
|
|
76
|
+
block: true,
|
|
77
|
+
onPress: handleConfirm
|
|
78
|
+
})]
|
|
79
|
+
})]
|
|
80
|
+
}) : null
|
|
81
|
+
})
|
|
108
82
|
})
|
|
109
83
|
});
|
|
110
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useState","Modal","Pressable","Text","View","useSafeAreaInsets","space","useThemedStyles","Button","_subs","makeStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ConfirmHost","styles","insets","entry","setEntry","sub","next","add","delete","handleConfirm","resolve","handleCancel","visible","transparent","animationType","statusBarTranslucent","onRequestClose","children","style","backdrop","onPress","accessibilityRole","accessibilityLabel","sheet","paddingBottom","bottom","body","title","message","actions","testID","label","cancelLabel","variant","block","confirmLabel","destructive"],"sourceRoot":"../../../../../src","sources":["components/ui/Confirm/ConfirmHost.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
|
-
import { fw, space, type as t } from "../../../theme/index.js";
|
|
5
|
-
/** Confirm 对话框 styles ——
|
|
6
|
-
*
|
|
4
|
+
import { fw, r, space, type as t } from "../../../theme/index.js";
|
|
5
|
+
/** Confirm 对话框 styles —— 原生 Modal(transparent + slide)底部弹出卡片:
|
|
6
|
+
* backdrop 半透黑铺满、点击取消;sheet 贴底圆角顶。不依赖 @gorhom。 */
|
|
7
7
|
export const makeStyles = c => StyleSheet.create({
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
backdrop: {
|
|
9
|
+
flex: 1,
|
|
10
|
+
backgroundColor: c.scrim,
|
|
11
|
+
justifyContent: 'flex-end'
|
|
10
12
|
},
|
|
11
13
|
sheet: {
|
|
14
|
+
backgroundColor: c.surface,
|
|
15
|
+
borderTopLeftRadius: r(20),
|
|
16
|
+
borderTopRightRadius: r(20),
|
|
17
|
+
paddingTop: space['7']
|
|
18
|
+
},
|
|
19
|
+
body: {
|
|
12
20
|
paddingHorizontal: space['9'],
|
|
13
|
-
paddingTop: space['4'],
|
|
14
21
|
gap: space['5']
|
|
15
22
|
},
|
|
16
23
|
title: {
|
|
@@ -28,8 +35,7 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
28
35
|
flexDirection: 'row',
|
|
29
36
|
gap: space['4'],
|
|
30
37
|
paddingHorizontal: space['9'],
|
|
31
|
-
paddingTop: space['
|
|
32
|
-
paddingBottom: space['7']
|
|
38
|
+
paddingTop: space['7']
|
|
33
39
|
}
|
|
34
40
|
});
|
|
35
41
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fw","space","type","t","makeStyles","c","create","
|
|
1
|
+
{"version":3,"names":["StyleSheet","fw","r","space","type","t","makeStyles","c","create","backdrop","flex","backgroundColor","scrim","justifyContent","sheet","surface","borderTopLeftRadius","borderTopRightRadius","paddingTop","body","paddingHorizontal","gap","title","fontSize","heroSm","fontWeight","semi","color","foreground","letterSpacing","message","foregroundMuted","lineHeight","actions","flexDirection"],"sourceRoot":"../../../../../src","sources":["components/ui/Confirm/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,CAAC,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;AAGxD;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCP,UAAU,CAACQ,MAAM,CAAC;EAChBC,QAAQ,EAAE;IACRC,IAAI,EAAE,CAAC;IACPC,eAAe,EAAEJ,CAAC,CAACK,KAAK;IACxBC,cAAc,EAAE;EAClB,CAAC;EACDC,KAAK,EAAE;IACLH,eAAe,EAAEJ,CAAC,CAACQ,OAAO;IAC1BC,mBAAmB,EAAEd,CAAC,CAAC,EAAE,CAAC;IAC1Be,oBAAoB,EAAEf,CAAC,CAAC,EAAE,CAAC;IAC3BgB,UAAU,EAAEf,KAAK,CAAC,GAAG;EACvB,CAAC;EACDgB,IAAI,EAAE;IACJC,iBAAiB,EAAEjB,KAAK,CAAC,GAAG,CAAC;IAC7BkB,GAAG,EAAElB,KAAK,CAAC,GAAG;EAChB,CAAC;EACDmB,KAAK,EAAE;IACLC,QAAQ,EAAElB,CAAC,CAACmB,MAAM;IAClBC,UAAU,EAAExB,EAAE,CAACyB,IAAI;IACnBC,KAAK,EAAEpB,CAAC,CAACqB,UAAU;IACnBC,aAAa,EAAE,CAAC;EAClB,CAAC;EACDC,OAAO,EAAE;IACPP,QAAQ,EAAElB,CAAC,CAACc,IAAI;IAChBQ,KAAK,EAAEpB,CAAC,CAACwB,eAAe;IACxBC,UAAU,EAAE3B,CAAC,CAACc,IAAI,GAAG;EACvB,CAAC;EACDc,OAAO,EAAE;IACPC,aAAa,EAAE,KAAK;IACpBb,GAAG,EAAElB,KAAK,CAAC,GAAG,CAAC;IACfiB,iBAAiB,EAAEjB,KAAK,CAAC,GAAG,CAAC;IAC7Be,UAAU,EAAEf,KAAK,CAAC,GAAG;EACvB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { Text, View } from 'react-native';
|
|
5
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
5
6
|
import Animated, { cancelAnimation, runOnJS, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
|
|
6
|
-
import { useColors, useThemedStyles, motion } from "../../../theme/index.js";
|
|
7
|
+
import { useColors, useThemedStyles, motion, space } from "../../../theme/index.js";
|
|
7
8
|
import { dotColorFor, makeStyles } from "./styles.js";
|
|
8
9
|
import { _subs } from "./toast.js";
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
/**
|
|
11
12
|
* 在根附近挂一次。监听 toast() 调用并渲染当前 toast。
|
|
12
13
|
* 同一时间只显示一条 —— 新的会替换旧的。
|
|
14
|
+
*
|
|
15
|
+
* 位置由 `entry.position`('top' / 'bottom' / 'center')决定,top/bottom 自动避让
|
|
16
|
+
* safe-area;进入动画方向随位置(top 从上滑、bottom/center 从下滑)。
|
|
13
17
|
*/
|
|
14
18
|
export function ToastHost({
|
|
15
19
|
testID
|
|
16
20
|
} = {}) {
|
|
17
21
|
const c = useColors();
|
|
18
22
|
const styles = useThemedStyles(makeStyles);
|
|
23
|
+
const insets = useSafeAreaInsets();
|
|
19
24
|
const [entry, setEntry] = useState(null);
|
|
20
25
|
const op = useSharedValue(0);
|
|
21
26
|
const ty = useSharedValue(8);
|
|
@@ -32,8 +37,12 @@ export function ToastHost({
|
|
|
32
37
|
}, []);
|
|
33
38
|
useEffect(() => {
|
|
34
39
|
if (!entry) return;
|
|
40
|
+
// 进入方向:top 从上(-8)滑入,bottom / center 从下(8)滑入
|
|
41
|
+
const from = entry.position === 'top' ? -8 : 8;
|
|
35
42
|
cancelAnimation(op);
|
|
36
43
|
cancelAnimation(ty);
|
|
44
|
+
op.value = 0;
|
|
45
|
+
ty.value = from;
|
|
37
46
|
op.value = withTiming(1, {
|
|
38
47
|
duration: motion.base
|
|
39
48
|
});
|
|
@@ -44,7 +53,7 @@ export function ToastHost({
|
|
|
44
53
|
op.value = withTiming(0, {
|
|
45
54
|
duration: motion.base
|
|
46
55
|
});
|
|
47
|
-
ty.value = withTiming(
|
|
56
|
+
ty.value = withTiming(from, {
|
|
48
57
|
duration: motion.base
|
|
49
58
|
}, finished => {
|
|
50
59
|
if (finished) runOnJS(setEntry)(null);
|
|
@@ -63,9 +72,20 @@ export function ToastHost({
|
|
|
63
72
|
}]
|
|
64
73
|
}));
|
|
65
74
|
if (!entry) return null;
|
|
75
|
+
|
|
76
|
+
// 位置:top=顶部(safe-area + 间距)/ center=屏幕居中 / bottom=底部(默认)
|
|
77
|
+
const posStyle = entry.position === 'top' ? {
|
|
78
|
+
top: insets.top + space[10]
|
|
79
|
+
} : entry.position === 'center' ? {
|
|
80
|
+
top: 0,
|
|
81
|
+
bottom: 0,
|
|
82
|
+
justifyContent: 'center'
|
|
83
|
+
} : {
|
|
84
|
+
bottom: insets.bottom + space[10]
|
|
85
|
+
};
|
|
66
86
|
const dotColor = dotColorFor(entry.kind, c);
|
|
67
87
|
return /*#__PURE__*/_jsx(View, {
|
|
68
|
-
style: styles.host,
|
|
88
|
+
style: [styles.host, posStyle],
|
|
69
89
|
pointerEvents: "none",
|
|
70
90
|
testID: testID,
|
|
71
91
|
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","Text","View","Animated","cancelAnimation","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useColors","useThemedStyles","motion","dotColorFor","makeStyles","_subs","jsx","_jsx","jsxs","_jsxs","ToastHost","testID","c","styles","entry","setEntry","op","ty","dismissTimer","sub","next","current","clearTimeout","add","delete","value","duration","base","setTimeout","finished","animatedStyle","opacity","transform","translateY","dotColor","kind","style","host","pointerEvents","children","toast","dot","backgroundColor","text","undefined","message"],"sourceRoot":"../../../../../src","sources":["components/ui/Toast/ToastHost.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,OAAOC,QAAQ,IACbC,eAAe,EACfC,OAAO,EACPC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,QACL,yBAAyB;AAChC,SAASC,SAAS,EAAEC,eAAe,EAAEC,MAAM,QAAQ,yBAAgB;
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","Text","View","useSafeAreaInsets","Animated","cancelAnimation","runOnJS","useAnimatedStyle","useSharedValue","withTiming","useColors","useThemedStyles","motion","space","dotColorFor","makeStyles","_subs","jsx","_jsx","jsxs","_jsxs","ToastHost","testID","c","styles","insets","entry","setEntry","op","ty","dismissTimer","sub","next","current","clearTimeout","add","delete","from","position","value","duration","base","setTimeout","finished","animatedStyle","opacity","transform","translateY","posStyle","top","bottom","justifyContent","dotColor","kind","style","host","pointerEvents","children","toast","dot","backgroundColor","text","undefined","message"],"sourceRoot":"../../../../../src","sources":["components/ui/Toast/ToastHost.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,10 +4,10 @@ import { StyleSheet } from 'react-native';
|
|
|
4
4
|
import { fw, r, radius, space, type as t } from "../../../theme/index.js";
|
|
5
5
|
export const makeStyles = c => StyleSheet.create({
|
|
6
6
|
host: {
|
|
7
|
+
// 定位(top/bottom/center)由 ToastHost 按 entry.position 注入,这里只留通用
|
|
7
8
|
position: 'absolute',
|
|
8
9
|
left: 0,
|
|
9
10
|
right: 0,
|
|
10
|
-
bottom: space[10],
|
|
11
11
|
alignItems: 'center',
|
|
12
12
|
// zIndex: toast 浮层 —— 盖在 Screen 内容之上(navigator / overlay 之下)。
|
|
13
13
|
// 同级兄弟节点无 z 顺序需求,但作为 absolute 浮岛对其他屏内 absolute 节点
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fw","r","radius","space","type","t","makeStyles","c","create","host","position","left","right","
|
|
1
|
+
{"version":3,"names":["StyleSheet","fw","r","radius","space","type","t","makeStyles","c","create","host","position","left","right","alignItems","zIndex","toast","flexDirection","gap","backgroundColor","inverseSurface","borderRadius","md","paddingHorizontal","paddingVertical","maxWidth","dot","width","height","text","color","inverseOnSurface","fontSize","sm","fontWeight","medium","flexShrink","dotColorFor","kind","success","error"],"sourceRoot":"../../../../../src","sources":["components/ui/Toast/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,SAASC,EAAE,EAAEC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;AAGhE,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCR,UAAU,CAACS,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJ;IACAC,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,UAAU,EAAE,QAAQ;IACpB;IACA;IACA;IACAC,MAAM,EAAE;EACV,CAAC;EACDC,KAAK,EAAE;IACLC,aAAa,EAAE,KAAK;IACpBH,UAAU,EAAE,QAAQ;IACpBI,GAAG,EAAEd,KAAK,CAAC,CAAC,CAAC;IACbe,eAAe,EAAEX,CAAC,CAACY,cAAc;IACjCC,YAAY,EAAElB,MAAM,CAACmB,EAAE;IACvBC,iBAAiB,EAAEnB,KAAK,CAAC,CAAC,CAAC;IAC3BoB,eAAe,EAAEpB,KAAK,CAAC,CAAC,CAAC;IACzBqB,QAAQ,EAAE;EACZ,CAAC;EACDC,GAAG,EAAE;IACH;IACAC,KAAK,EAAEzB,CAAC,CAAC,CAAC,CAAC;IACX0B,MAAM,EAAE1B,CAAC,CAAC,CAAC,CAAC;IACZmB,YAAY,EAAEnB,CAAC,CAAC,CAAC;EACnB,CAAC;EACD2B,IAAI,EAAE;IACJC,KAAK,EAAEtB,CAAC,CAACuB,gBAAgB;IACzBC,QAAQ,EAAE1B,CAAC,CAAC2B,EAAE;IACdC,UAAU,EAAEjC,EAAE,CAACkC,MAAM;IACrBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;;AAEJ;AACA;AACA,OAAO,SAASC,WAAWA,CAACC,IAAe,EAAE9B,CAAc,EAAiB;EAC1E,QAAQ8B,IAAI;IACV,KAAK,SAAS;MACZ,OAAO9B,CAAC,CAAC+B,OAAO;IAClB,KAAK,OAAO;MACV,OAAO/B,CAAC,CAACgC,KAAK;IAChB,KAAK,MAAM;MACT,OAAO,IAAI;EACf;AACF","ignoreList":[]}
|
|
@@ -13,12 +13,14 @@ function emit(input, kind = 'info') {
|
|
|
13
13
|
id: ++_id,
|
|
14
14
|
message: input,
|
|
15
15
|
kind,
|
|
16
|
-
duration: 3000
|
|
16
|
+
duration: 3000,
|
|
17
|
+
position: 'bottom'
|
|
17
18
|
} : {
|
|
18
19
|
id: ++_id,
|
|
19
20
|
message: input.message,
|
|
20
21
|
kind: input.kind ?? kind,
|
|
21
|
-
duration: input.duration ?? 3000
|
|
22
|
+
duration: input.duration ?? 3000,
|
|
23
|
+
position: input.position ?? 'bottom'
|
|
22
24
|
};
|
|
23
25
|
_subs.forEach(s => s(entry));
|
|
24
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_id","_subs","Set","emit","input","kind","entry","id","message","duration","forEach","s","toast","Object","assign","info","success","error"],"sourceRoot":"../../../../../src","sources":["components/ui/Toast/toast.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAGA,IAAIA,GAAG,GAAG,CAAC;AACX,OAAO,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAAa,CAAC;AAE1C,SAASC,IAAIA,CAACC,KAAiB,EAAEC,IAAe,GAAG,MAAM,EAAE;EACzD,MAAMC,KAAiB,GACrB,OAAOF,KAAK,KAAK,QAAQ,GACrB;IAAEG,EAAE,EAAE,EAAEP,GAAG;IAAEQ,OAAO,EAAEJ,KAAK;IAAEC,IAAI;IAAEI,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"names":["_id","_subs","Set","emit","input","kind","entry","id","message","duration","position","forEach","s","toast","Object","assign","info","success","error"],"sourceRoot":"../../../../../src","sources":["components/ui/Toast/toast.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAGA,IAAIA,GAAG,GAAG,CAAC;AACX,OAAO,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAAa,CAAC;AAE1C,SAASC,IAAIA,CAACC,KAAiB,EAAEC,IAAe,GAAG,MAAM,EAAE;EACzD,MAAMC,KAAiB,GACrB,OAAOF,KAAK,KAAK,QAAQ,GACrB;IAAEG,EAAE,EAAE,EAAEP,GAAG;IAAEQ,OAAO,EAAEJ,KAAK;IAAEC,IAAI;IAAEI,QAAQ,EAAE,IAAI;IAAEC,QAAQ,EAAE;EAAS,CAAC,GACvE;IACEH,EAAE,EAAE,EAAEP,GAAG;IACTQ,OAAO,EAAEJ,KAAK,CAACI,OAAO;IACtBH,IAAI,EAAED,KAAK,CAACC,IAAI,IAAIA,IAAI;IACxBI,QAAQ,EAAEL,KAAK,CAACK,QAAQ,IAAI,IAAI;IAChCC,QAAQ,EAAEN,KAAK,CAACM,QAAQ,IAAI;EAC9B,CAAC;EACPT,KAAK,CAACU,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACN,KAAK,CAAC,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,KAAK,GAAGC,MAAM,CAACC,MAAM,CAAEX,KAAiB,IAAKD,IAAI,CAACC,KAAK,EAAE,MAAM,CAAC,EAAE;EAC7EY,IAAI,EAAGZ,KAAiB,IAAKD,IAAI,CAACC,KAAK,EAAE,MAAM,CAAC;EAChDa,OAAO,EAAGb,KAAiB,IAAKD,IAAI,CAACC,KAAK,EAAE,SAAS,CAAC;EACtDc,KAAK,EAAGd,KAAiB,IAAKD,IAAI,CAACC,KAAK,EAAE,OAAO;AACnD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Avatar","
|
|
1
|
+
{"version":3,"names":["Avatar","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,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":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
/**
|
|
3
|
-
* Confirm
|
|
3
|
+
* Confirm 对话框宿主 —— App 根挂一次,监听 `confirm()` 调用并渲染。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* 原生 RN `Modal`(transparent + animationType slide)从底部滑入,backdrop 点击
|
|
6
|
+
* 取消、内层 sheet 拦截点击不冒泡。**不依赖 @gorhom**(0.6.0 去 @gorhom 后改为
|
|
7
|
+
* 纯 RN Modal + pub/sub 实现)。
|
|
7
8
|
*/
|
|
8
9
|
export declare function ConfirmHost(): React.JSX.Element | null;
|
|
9
10
|
//# sourceMappingURL=ConfirmHost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmHost.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Confirm/ConfirmHost.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ConfirmHost.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Confirm/ConfirmHost.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAShE;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0EtD"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import type { ColorTokens } from '../../../theme';
|
|
2
|
-
/** Confirm 对话框 styles ——
|
|
3
|
-
*
|
|
2
|
+
/** Confirm 对话框 styles —— 原生 Modal(transparent + slide)底部弹出卡片:
|
|
3
|
+
* backdrop 半透黑铺满、点击取消;sheet 贴底圆角顶。不依赖 @gorhom。 */
|
|
4
4
|
export declare const makeStyles: (c: ColorTokens) => Readonly<{
|
|
5
|
-
|
|
5
|
+
backdrop: {
|
|
6
|
+
flex: number;
|
|
6
7
|
backgroundColor: string;
|
|
8
|
+
justifyContent: "flex-end";
|
|
7
9
|
};
|
|
8
10
|
sheet: {
|
|
9
|
-
|
|
11
|
+
backgroundColor: string;
|
|
12
|
+
borderTopLeftRadius: number;
|
|
13
|
+
borderTopRightRadius: number;
|
|
10
14
|
paddingTop: number;
|
|
15
|
+
};
|
|
16
|
+
body: {
|
|
17
|
+
paddingHorizontal: number;
|
|
11
18
|
gap: number;
|
|
12
19
|
};
|
|
13
20
|
title: {
|
|
@@ -26,7 +33,6 @@ export declare const makeStyles: (c: ColorTokens) => Readonly<{
|
|
|
26
33
|
gap: number;
|
|
27
34
|
paddingHorizontal: number;
|
|
28
35
|
paddingTop: number;
|
|
29
|
-
paddingBottom: number;
|
|
30
36
|
};
|
|
31
37
|
}>;
|
|
32
38
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Confirm/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Confirm/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;mDACmD;AACnD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCrC,CAAC"}
|