@unif/react-native-hms-scan 2.1.0 → 3.0.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.
Files changed (35) hide show
  1. package/lib/module/Scanner/DeniedOverlay.js +3 -2
  2. package/lib/module/Scanner/DeniedOverlay.js.map +1 -1
  3. package/lib/module/Scanner/ResultFail.js +35 -20
  4. package/lib/module/Scanner/ResultFail.js.map +1 -1
  5. package/lib/module/Scanner/ResultFocus/ResultFocus.js +8 -9
  6. package/lib/module/Scanner/ResultFocus/ResultFocus.js.map +1 -1
  7. package/lib/module/Scanner/ResultFocus/styles.js +17 -1
  8. package/lib/module/Scanner/ResultFocus/styles.js.map +1 -1
  9. package/lib/module/Scanner/ScanErrorOverlay.js +2 -1
  10. package/lib/module/Scanner/ScanErrorOverlay.js.map +1 -1
  11. package/lib/module/Scanner/ScanToolbar.js +26 -19
  12. package/lib/module/Scanner/ScanToolbar.js.map +1 -1
  13. package/lib/module/Scanner/Viewfinder.js +3 -3
  14. package/lib/module/Scanner/Viewfinder.js.map +1 -1
  15. package/lib/module/Scanner/scanChrome.js +0 -6
  16. package/lib/module/Scanner/scanChrome.js.map +1 -1
  17. package/lib/typescript/src/Scanner/DeniedOverlay.d.ts.map +1 -1
  18. package/lib/typescript/src/Scanner/ResultFail.d.ts.map +1 -1
  19. package/lib/typescript/src/Scanner/ResultFocus/ResultFocus.d.ts.map +1 -1
  20. package/lib/typescript/src/Scanner/ResultFocus/styles.d.ts +25 -2
  21. package/lib/typescript/src/Scanner/ResultFocus/styles.d.ts.map +1 -1
  22. package/lib/typescript/src/Scanner/ScanErrorOverlay.d.ts.map +1 -1
  23. package/lib/typescript/src/Scanner/ScanToolbar.d.ts.map +1 -1
  24. package/lib/typescript/src/Scanner/Viewfinder.d.ts.map +1 -1
  25. package/lib/typescript/src/Scanner/scanChrome.d.ts +0 -6
  26. package/lib/typescript/src/Scanner/scanChrome.d.ts.map +1 -1
  27. package/package.json +5 -3
  28. package/src/Scanner/DeniedOverlay.tsx +6 -2
  29. package/src/Scanner/ResultFail.tsx +24 -14
  30. package/src/Scanner/ResultFocus/ResultFocus.tsx +5 -11
  31. package/src/Scanner/ResultFocus/styles.ts +11 -1
  32. package/src/Scanner/ScanErrorOverlay.tsx +5 -2
  33. package/src/Scanner/ScanToolbar.tsx +36 -18
  34. package/src/Scanner/Viewfinder.tsx +34 -7
  35. package/src/Scanner/scanChrome.ts +0 -6
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import { PermissionDeniedOutlined, SettingsOutlined } from '@unif/react-native-icons';
3
4
  import { StyleSheet, View } from 'react-native';
4
5
  import { Button, Empty, useThemedStyles, r } from '@unif/react-native-design';
5
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -12,7 +13,7 @@ export function DeniedOverlay({
12
13
  return /*#__PURE__*/_jsxs(View, {
13
14
  style: s.overlay,
14
15
  children: [/*#__PURE__*/_jsx(Empty, {
15
- icon: "permission-denied",
16
+ icon: PermissionDeniedOutlined,
16
17
  title: "\u9700\u8981\u76F8\u673A\u6743\u9650",
17
18
  desc: "\u5F00\u542F\u76F8\u673A\u540E\uFF0C\u624D\u80FD\u626B\u63CF\u6761\u7801\u4E0E\u4E8C\u7EF4\u7801\u3002\u8BF7\u524D\u5F80\u7CFB\u7EDF\u8BBE\u7F6E\u6388\u6743\u3002"
18
19
  }), /*#__PURE__*/_jsxs(View, {
@@ -25,7 +26,7 @@ export function DeniedOverlay({
25
26
  }), /*#__PURE__*/_jsx(Button, {
26
27
  label: "\u53BB\u8BBE\u7F6E\u5F00\u542F",
27
28
  variant: "primary",
28
- leftIcon: "settings",
29
+ leftIcon: SettingsOutlined,
29
30
  block: true,
30
31
  onPress: onSettings
31
32
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","DeniedOverlay","onClose","onSettings","s","makeStyles","style","overlay","children","icon","title","desc","styles","row","label","variant","block","onPress","leftIcon","create","flexDirection","columnGap","marginTop","c","position","top","left","right","bottom","zIndex","backgroundColor","background","alignItems","justifyContent","paddingHorizontal","rowGap"],"sourceRoot":"../../../src","sources":["Scanner/DeniedOverlay.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,MAAM,EACNC,KAAK,EACLC,eAAe,EACfC,CAAC,QAEI,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOnC;AACA,OAAO,SAASC,aAAaA,CAAC;EAAEC,OAAO;EAAEC;AAA+B,CAAC,EAAE;EACzE,MAAMC,CAAC,GAAGT,eAAe,CAACU,UAAU,CAAC;EACrC,oBACEL,KAAA,CAACR,IAAI;IAACc,KAAK,EAAEF,CAAC,CAACG,OAAQ;IAAAC,QAAA,gBACrBV,IAAA,CAACJ,KAAK;MACJe,IAAI,EAAC,mBAAmB;MACxBC,KAAK,EAAC,sCAAQ;MACdC,IAAI,EAAC;IAA6B,CACnC,CAAC,eAGFX,KAAA,CAACR,IAAI;MAACc,KAAK,EAAEM,MAAM,CAACC,GAAI;MAAAL,QAAA,GACrBN,OAAO,iBACNJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,OAAO;QAACC,KAAK;QAACC,OAAO,EAAEf;MAAQ,CAAE,CAC7D,eACDJ,IAAA,CAACL,MAAM;QACLqB,KAAK,EAAC,gCAAO;QACbC,OAAO,EAAC,SAAS;QACjBG,QAAQ,EAAC,UAAU;QACnBF,KAAK;QACLC,OAAO,EAAEd;MAAW,CACrB,CAAC;IAAA,CACE,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMS,MAAM,GAAGrB,UAAU,CAAC4B,MAAM,CAAC;EAC/BN,GAAG,EAAE;IAAEO,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAEzB,CAAC,CAAC,EAAE,CAAC;IAAE0B,SAAS,EAAE1B,CAAC,CAAC,CAAC;EAAE;AACjE,CAAC,CAAC;AAEF,MAAMS,UAAU,GAAIkB,CAAc,IAChChC,UAAU,CAAC4B,MAAM,CAAC;EAChBZ,OAAO,EAAE;IACPiB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,EAAE;IACVC,eAAe,EAAEP,CAAC,CAACQ,UAAU;IAC7BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAEtC,CAAC,CAAC,EAAE,CAAC;IACxBuC,MAAM,EAAEvC,CAAC,CAAC,CAAC;EACb;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["PermissionDeniedOutlined","SettingsOutlined","StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","DeniedOverlay","onClose","onSettings","s","makeStyles","style","overlay","children","icon","title","desc","styles","row","label","variant","block","onPress","leftIcon","create","flexDirection","columnGap","marginTop","c","position","top","left","right","bottom","zIndex","backgroundColor","background","alignItems","justifyContent","paddingHorizontal","rowGap"],"sourceRoot":"../../../src","sources":["Scanner/DeniedOverlay.tsx"],"mappings":";;AAAA,SACEA,wBAAwB,EACxBC,gBAAgB,QACX,0BAA0B;AACjC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,MAAM,EACNC,KAAK,EACLC,eAAe,EACfC,CAAC,QAEI,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOnC;AACA,OAAO,SAASC,aAAaA,CAAC;EAAEC,OAAO;EAAEC;AAA+B,CAAC,EAAE;EACzE,MAAMC,CAAC,GAAGT,eAAe,CAACU,UAAU,CAAC;EACrC,oBACEL,KAAA,CAACR,IAAI;IAACc,KAAK,EAAEF,CAAC,CAACG,OAAQ;IAAAC,QAAA,gBACrBV,IAAA,CAACJ,KAAK;MACJe,IAAI,EAAEpB,wBAAyB;MAC/BqB,KAAK,EAAC,sCAAQ;MACdC,IAAI,EAAC;IAA6B,CACnC,CAAC,eAGFX,KAAA,CAACR,IAAI;MAACc,KAAK,EAAEM,MAAM,CAACC,GAAI;MAAAL,QAAA,GACrBN,OAAO,iBACNJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,OAAO;QAACC,KAAK;QAACC,OAAO,EAAEf;MAAQ,CAAE,CAC7D,eACDJ,IAAA,CAACL,MAAM;QACLqB,KAAK,EAAC,gCAAO;QACbC,OAAO,EAAC,SAAS;QACjBG,QAAQ,EAAE5B,gBAAiB;QAC3B0B,KAAK;QACLC,OAAO,EAAEd;MAAW,CACrB,CAAC;IAAA,CACE,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMS,MAAM,GAAGrB,UAAU,CAAC4B,MAAM,CAAC;EAC/BN,GAAG,EAAE;IAAEO,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAEzB,CAAC,CAAC,EAAE,CAAC;IAAE0B,SAAS,EAAE1B,CAAC,CAAC,CAAC;EAAE;AACjE,CAAC,CAAC;AAEF,MAAMS,UAAU,GAAIkB,CAAc,IAChChC,UAAU,CAAC4B,MAAM,CAAC;EAChBZ,OAAO,EAAE;IACPiB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,EAAE;IACVC,eAAe,EAAEP,CAAC,CAACQ,UAAU;IAC7BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAEtC,CAAC,CAAC,EAAE,CAAC;IACxBuC,MAAM,EAAEvC,CAAC,CAAC,CAAC;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ import { ErrorAlertOutlined } from '@unif/react-native-icons';
3
4
  import { useEffect, useRef } from 'react';
4
5
  import { Animated, StyleSheet, View } from 'react-native';
5
- import { Button, Empty, useThemedStyles, r } from '@unif/react-native-design';
6
+ import { Button, Empty, GlassLayer, useThemedStyles, r } from '@unif/react-native-design';
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
8
  // 未识别失败的底部弹层:design 的 Empty(error-alert)+ Button(重扫)。
8
9
  // 聚焦款不加背景遮罩,与浮层确认卡保持一致。
@@ -20,7 +21,7 @@ export function ResultFail({
20
21
  useNativeDriver: true
21
22
  }).start();
22
23
  }, [anim]);
23
- return /*#__PURE__*/_jsxs(Animated.View, {
24
+ return /*#__PURE__*/_jsx(Animated.View, {
24
25
  style: [s.sheet, {
25
26
  transform: [{
26
27
  translateY: anim.interpolate({
@@ -29,26 +30,42 @@ export function ResultFail({
29
30
  })
30
31
  }]
31
32
  }],
32
- children: [/*#__PURE__*/_jsx(View, {
33
- style: s.grabber
34
- }), /*#__PURE__*/_jsxs(View, {
35
- style: [styles.inner, {
36
- paddingBottom: bottomInset + r(14)
37
- }],
38
- children: [/*#__PURE__*/_jsx(Empty, {
39
- icon: "error-alert",
40
- title: failed ? '图片识别失败' : '未识别到条码',
41
- desc: failed ? '无法读取或解码图片,请重试。' : '请将条码完整置于框内、保持平整并对准光线后重试。'
42
- }), /*#__PURE__*/_jsx(Button, {
43
- label: "\u91CD\u626B",
44
- variant: "primary",
45
- block: true,
46
- onPress: onRescan
33
+ children: /*#__PURE__*/_jsxs(View, {
34
+ style: styles.surface,
35
+ children: [/*#__PURE__*/_jsx(GlassLayer, {
36
+ style: styles.glass,
37
+ testID: "scan-failure-glass"
38
+ }), /*#__PURE__*/_jsx(View, {
39
+ style: s.grabber
40
+ }), /*#__PURE__*/_jsxs(View, {
41
+ style: [styles.inner, {
42
+ paddingBottom: bottomInset + r(14)
43
+ }],
44
+ children: [/*#__PURE__*/_jsx(Empty, {
45
+ icon: ErrorAlertOutlined,
46
+ title: failed ? '图片识别失败' : '未识别到条码',
47
+ desc: failed ? '无法读取或解码图片,请重试。' : '请将条码完整置于框内、保持平整并对准光线后重试。'
48
+ }), /*#__PURE__*/_jsx(Button, {
49
+ label: "\u91CD\u626B",
50
+ variant: "primary",
51
+ block: true,
52
+ onPress: onRescan
53
+ })]
47
54
  })]
48
- })]
55
+ })
49
56
  });
50
57
  }
51
58
  const styles = StyleSheet.create({
59
+ glass: {
60
+ borderTopLeftRadius: r(20),
61
+ borderTopRightRadius: r(20)
62
+ },
63
+ surface: {
64
+ borderTopLeftRadius: r(20),
65
+ borderTopRightRadius: r(20),
66
+ paddingTop: r(10),
67
+ overflow: 'hidden'
68
+ },
52
69
  inner: {
53
70
  paddingHorizontal: r(18),
54
71
  paddingTop: r(8),
@@ -62,10 +79,8 @@ const makeStyles = (c, shadow) => StyleSheet.create({
62
79
  right: 0,
63
80
  bottom: 0,
64
81
  zIndex: 50,
65
- backgroundColor: c.surface,
66
82
  borderTopLeftRadius: r(20),
67
83
  borderTopRightRadius: r(20),
68
- paddingTop: r(10),
69
84
  ...shadow.floating
70
85
  },
71
86
  grabber: {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","Animated","StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","ResultFail","bottomInset","failed","onRescan","s","makeStyles","anim","Value","current","timing","toValue","duration","useNativeDriver","start","style","sheet","transform","translateY","interpolate","inputRange","outputRange","children","grabber","styles","inner","paddingBottom","icon","title","desc","label","variant","block","onPress","create","paddingHorizontal","paddingTop","rowGap","c","shadow","position","left","right","bottom","zIndex","backgroundColor","surface","borderTopLeftRadius","borderTopRightRadius","floating","width","height","borderRadius","surfaceContainerHighest","alignSelf"],"sourceRoot":"../../../src","sources":["Scanner/ResultFail.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ErrorAlertOutlined","useEffect","useRef","Animated","StyleSheet","View","Button","Empty","GlassLayer","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","ResultFail","bottomInset","failed","onRescan","s","makeStyles","anim","Value","current","timing","toValue","duration","useNativeDriver","start","style","sheet","transform","translateY","interpolate","inputRange","outputRange","children","styles","surface","glass","testID","grabber","inner","paddingBottom","icon","title","desc","label","variant","block","onPress","create","borderTopLeftRadius","borderTopRightRadius","paddingTop","overflow","paddingHorizontal","rowGap","c","shadow","position","left","right","bottom","zIndex","floating","width","height","borderRadius","backgroundColor","surfaceContainerHighest","alignSelf"],"sourceRoot":"../../../src","sources":["Scanner/ResultFail.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { ScrollView, Text, View } from 'react-native';
4
- import { Button, Card, useColors, useThemedStyles, r } from '@unif/react-native-design';
4
+ import { Button, GlassLayer, useThemedStyles, r } from '@unif/react-native-design';
5
5
  import { styles, makeStyles } from "./styles.js";
6
6
 
7
7
  /** A raw result is selected here; interpreting it belongs to the consumer. */
@@ -12,18 +12,17 @@ export function ResultFocus({
12
12
  onRescan,
13
13
  onConfirm
14
14
  }) {
15
- const colors = useColors();
16
15
  const themed = useThemedStyles(makeStyles);
17
16
  return /*#__PURE__*/_jsx(View, {
18
- style: [styles.wrap, {
17
+ style: [styles.wrap, themed.shadow, {
19
18
  bottom: bottomInset + r(18)
20
19
  }],
21
- children: /*#__PURE__*/_jsxs(Card, {
22
- borderColor: colors.primary,
23
- borderWidth: 2,
24
- borderRadius: r(16),
25
- padding: r(14),
26
- children: [/*#__PURE__*/_jsx(Text, {
20
+ children: /*#__PURE__*/_jsxs(View, {
21
+ style: [styles.surface, themed.border],
22
+ children: [/*#__PURE__*/_jsx(GlassLayer, {
23
+ style: styles.glass,
24
+ testID: "scan-result-glass"
25
+ }), /*#__PURE__*/_jsx(Text, {
27
26
  style: themed.badge,
28
27
  children: "\u5DF2\u8BC6\u522B"
29
28
  }), /*#__PURE__*/_jsx(Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["ScrollView","Text","View","Button","Card","useColors","useThemedStyles","r","styles","makeStyles","jsx","_jsx","jsxs","_jsxs","ResultFocus","result","bottomInset","onRescan","onConfirm","colors","themed","style","wrap","bottom","children","borderColor","primary","borderWidth","borderRadius","padding","badge","format","content","selectable","value","actions","label","variant","block","onPress"],"sourceRoot":"../../../../src","sources":["Scanner/ResultFocus/ResultFocus.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SACEC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,eAAe,EACfC,CAAC,QACI,2BAA2B;AAElC,SAASC,MAAM,EAAEC,UAAU,QAAQ,aAAU;;AAE7C;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AACA,OAAO,SAASC,WAAWA,CAAC;EAC1BC,MAAM;EACNC,WAAW;EACXC,QAAQ;EACRC;AACgB,CAAC,EAAE;EACnB,MAAMC,MAAM,GAAGd,SAAS,CAAC,CAAC;EAC1B,MAAMe,MAAM,GAAGd,eAAe,CAACG,UAAU,CAAC;EAC1C,oBACEE,IAAA,CAACT,IAAI;IAACmB,KAAK,EAAE,CAACb,MAAM,CAACc,IAAI,EAAE;MAAEC,MAAM,EAAEP,WAAW,GAAGT,CAAC,CAAC,EAAE;IAAE,CAAC,CAAE;IAAAiB,QAAA,eAC1DX,KAAA,CAACT,IAAI;MACHqB,WAAW,EAAEN,MAAM,CAACO,OAAQ;MAC5BC,WAAW,EAAE,CAAE;MACfC,YAAY,EAAErB,CAAC,CAAC,EAAE,CAAE;MACpBsB,OAAO,EAAEtB,CAAC,CAAC,EAAE,CAAE;MAAAiB,QAAA,gBAEfb,IAAA,CAACV,IAAI;QAACoB,KAAK,EAAED,MAAM,CAACU,KAAM;QAAAN,QAAA,EAAC;MAAG,CAAM,CAAC,eACrCb,IAAA,CAACV,IAAI;QAACoB,KAAK,EAAED,MAAM,CAACW,MAAO;QAAAP,QAAA,EAAET,MAAM,CAACgB;MAAM,CAAO,CAAC,eAClDpB,IAAA,CAACX,UAAU;QAACqB,KAAK,EAAEb,MAAM,CAACwB,OAAQ;QAAAR,QAAA,eAChCb,IAAA,CAACV,IAAI;UAACgC,UAAU;UAACZ,KAAK,EAAED,MAAM,CAACc,KAAM;UAAAV,QAAA,EAClCT,MAAM,CAACmB;QAAK,CACT;MAAC,CACG,CAAC,eACbrB,KAAA,CAACX,IAAI;QAACmB,KAAK,EAAEb,MAAM,CAAC2B,OAAQ;QAAAX,QAAA,gBAC1Bb,IAAA,CAACR,MAAM;UAACiC,KAAK,EAAC,cAAI;UAACC,OAAO,EAAC,WAAW;UAACC,KAAK;UAACC,OAAO,EAAEtB;QAAS,CAAE,CAAC,eAClEN,IAAA,CAACR,MAAM;UAACiC,KAAK,EAAC,cAAI;UAACC,OAAO,EAAC,SAAS;UAACC,KAAK;UAACC,OAAO,EAAErB;QAAU,CAAE,CAAC;MAAA,CAC7D,CAAC;IAAA,CACH;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["ScrollView","Text","View","Button","GlassLayer","useThemedStyles","r","styles","makeStyles","jsx","_jsx","jsxs","_jsxs","ResultFocus","result","bottomInset","onRescan","onConfirm","themed","style","wrap","shadow","bottom","children","surface","border","glass","testID","badge","format","content","selectable","value","actions","label","variant","block","onPress"],"sourceRoot":"../../../../src","sources":["Scanner/ResultFocus/ResultFocus.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SACEC,MAAM,EACNC,UAAU,EACVC,eAAe,EACfC,CAAC,QACI,2BAA2B;AAElC,SAASC,MAAM,EAAEC,UAAU,QAAQ,aAAU;;AAE7C;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AACA,OAAO,SAASC,WAAWA,CAAC;EAC1BC,MAAM;EACNC,WAAW;EACXC,QAAQ;EACRC;AACgB,CAAC,EAAE;EACnB,MAAMC,MAAM,GAAGb,eAAe,CAACG,UAAU,CAAC;EAC1C,oBACEE,IAAA,CAACR,IAAI;IAACiB,KAAK,EAAE,CAACZ,MAAM,CAACa,IAAI,EAAEF,MAAM,CAACG,MAAM,EAAE;MAAEC,MAAM,EAAEP,WAAW,GAAGT,CAAC,CAAC,EAAE;IAAE,CAAC,CAAE;IAAAiB,QAAA,eACzEX,KAAA,CAACV,IAAI;MAACiB,KAAK,EAAE,CAACZ,MAAM,CAACiB,OAAO,EAAEN,MAAM,CAACO,MAAM,CAAE;MAAAF,QAAA,gBAC3Cb,IAAA,CAACN,UAAU;QAACe,KAAK,EAAEZ,MAAM,CAACmB,KAAM;QAACC,MAAM,EAAC;MAAmB,CAAE,CAAC,eAC9DjB,IAAA,CAACT,IAAI;QAACkB,KAAK,EAAED,MAAM,CAACU,KAAM;QAAAL,QAAA,EAAC;MAAG,CAAM,CAAC,eACrCb,IAAA,CAACT,IAAI;QAACkB,KAAK,EAAED,MAAM,CAACW,MAAO;QAAAN,QAAA,EAAET,MAAM,CAACe;MAAM,CAAO,CAAC,eAClDnB,IAAA,CAACV,UAAU;QAACmB,KAAK,EAAEZ,MAAM,CAACuB,OAAQ;QAAAP,QAAA,eAChCb,IAAA,CAACT,IAAI;UAAC8B,UAAU;UAACZ,KAAK,EAAED,MAAM,CAACc,KAAM;UAAAT,QAAA,EAClCT,MAAM,CAACkB;QAAK,CACT;MAAC,CACG,CAAC,eACbpB,KAAA,CAACV,IAAI;QAACiB,KAAK,EAAEZ,MAAM,CAAC0B,OAAQ;QAAAV,QAAA,gBAC1Bb,IAAA,CAACP,MAAM;UAAC+B,KAAK,EAAC,cAAI;UAACC,OAAO,EAAC,WAAW;UAACC,KAAK;UAACC,OAAO,EAAErB;QAAS,CAAE,CAAC,eAClEN,IAAA,CAACP,MAAM;UAAC+B,KAAK,EAAC,cAAI;UAACC,OAAO,EAAC,SAAS;UAACC,KAAK;UAACC,OAAO,EAAEpB;QAAU,CAAE,CAAC;MAAA,CAC7D,CAAC;IAAA,CACH;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
@@ -9,6 +9,15 @@ export const styles = StyleSheet.create({
9
9
  right: r(16),
10
10
  zIndex: 50
11
11
  },
12
+ glass: {
13
+ borderRadius: r(16)
14
+ },
15
+ surface: {
16
+ borderRadius: r(16),
17
+ borderWidth: 2,
18
+ padding: r(14),
19
+ overflow: 'hidden'
20
+ },
12
21
  content: {
13
22
  maxHeight: r(220),
14
23
  marginVertical: r(14)
@@ -18,7 +27,14 @@ export const styles = StyleSheet.create({
18
27
  columnGap: r(10)
19
28
  }
20
29
  });
21
- export const makeStyles = colors => StyleSheet.create({
30
+ export const makeStyles = (colors, shadow) => StyleSheet.create({
31
+ shadow: {
32
+ borderRadius: r(16),
33
+ ...shadow.card
34
+ },
35
+ border: {
36
+ borderColor: colors.primary
37
+ },
22
38
  badge: {
23
39
  fontSize: rf(13),
24
40
  fontWeight: fw.semi,
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","r","rf","fw","fontMono","styles","create","wrap","position","left","right","zIndex","content","maxHeight","marginVertical","actions","flexDirection","columnGap","makeStyles","colors","badge","fontSize","fontWeight","semi","color","foreground","format","foregroundMuted","fontFamily","marginTop","value","lineHeight"],"sourceRoot":"../../../../src","sources":["Scanner/ResultFocus/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SACEC,CAAC,EACDC,EAAE,EACFC,EAAE,EACFC,QAAQ,QAEH,2BAA2B;AAElC,OAAO,MAAMC,MAAM,GAAGL,UAAU,CAACM,MAAM,CAAC;EACtCC,IAAI,EAAE;IAAEC,QAAQ,EAAE,UAAU;IAAEC,IAAI,EAAER,CAAC,CAAC,EAAE,CAAC;IAAES,KAAK,EAAET,CAAC,CAAC,EAAE,CAAC;IAAEU,MAAM,EAAE;EAAG,CAAC;EACrEC,OAAO,EAAE;IAAEC,SAAS,EAAEZ,CAAC,CAAC,GAAG,CAAC;IAAEa,cAAc,EAAEb,CAAC,CAAC,EAAE;EAAE,CAAC;EACrDc,OAAO,EAAE;IAAEC,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAEhB,CAAC,CAAC,EAAE;EAAE;AACpD,CAAC,CAAC;AACF,OAAO,MAAMiB,UAAU,GAAIC,MAAmB,IAC5CnB,UAAU,CAACM,MAAM,CAAC;EAChBc,KAAK,EAAE;IAAEC,QAAQ,EAAEnB,EAAE,CAAC,EAAE,CAAC;IAAEoB,UAAU,EAAEnB,EAAE,CAACoB,IAAI;IAAEC,KAAK,EAAEL,MAAM,CAACM;EAAW,CAAC;EAC1EC,MAAM,EAAE;IACNL,QAAQ,EAAEnB,EAAE,CAAC,EAAE,CAAC;IAChBsB,KAAK,EAAEL,MAAM,CAACQ,eAAe;IAC7BC,UAAU,EAAExB,QAAQ;IACpByB,SAAS,EAAE5B,CAAC,CAAC,CAAC;EAChB,CAAC;EACD6B,KAAK,EAAE;IAAET,QAAQ,EAAEnB,EAAE,CAAC,EAAE,CAAC;IAAE6B,UAAU,EAAE7B,EAAE,CAAC,EAAE,CAAC;IAAEsB,KAAK,EAAEL,MAAM,CAACM;EAAW;AAC1E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","r","rf","fw","fontMono","styles","create","wrap","position","left","right","zIndex","glass","borderRadius","surface","borderWidth","padding","overflow","content","maxHeight","marginVertical","actions","flexDirection","columnGap","makeStyles","colors","shadow","card","border","borderColor","primary","badge","fontSize","fontWeight","semi","color","foreground","format","foregroundMuted","fontFamily","marginTop","value","lineHeight"],"sourceRoot":"../../../../src","sources":["Scanner/ResultFocus/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SACEC,CAAC,EACDC,EAAE,EACFC,EAAE,EACFC,QAAQ,QAGH,2BAA2B;AAElC,OAAO,MAAMC,MAAM,GAAGL,UAAU,CAACM,MAAM,CAAC;EACtCC,IAAI,EAAE;IAAEC,QAAQ,EAAE,UAAU;IAAEC,IAAI,EAAER,CAAC,CAAC,EAAE,CAAC;IAAES,KAAK,EAAET,CAAC,CAAC,EAAE,CAAC;IAAEU,MAAM,EAAE;EAAG,CAAC;EACrEC,KAAK,EAAE;IAAEC,YAAY,EAAEZ,CAAC,CAAC,EAAE;EAAE,CAAC;EAC9Ba,OAAO,EAAE;IACPD,YAAY,EAAEZ,CAAC,CAAC,EAAE,CAAC;IACnBc,WAAW,EAAE,CAAC;IACdC,OAAO,EAAEf,CAAC,CAAC,EAAE,CAAC;IACdgB,QAAQ,EAAE;EACZ,CAAC;EACDC,OAAO,EAAE;IAAEC,SAAS,EAAElB,CAAC,CAAC,GAAG,CAAC;IAAEmB,cAAc,EAAEnB,CAAC,CAAC,EAAE;EAAE,CAAC;EACrDoB,OAAO,EAAE;IAAEC,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAEtB,CAAC,CAAC,EAAE;EAAE;AACpD,CAAC,CAAC;AACF,OAAO,MAAMuB,UAAU,GAAGA,CAACC,MAAmB,EAAEC,MAAoB,KAClE1B,UAAU,CAACM,MAAM,CAAC;EAChBoB,MAAM,EAAE;IAAEb,YAAY,EAAEZ,CAAC,CAAC,EAAE,CAAC;IAAE,GAAGyB,MAAM,CAACC;EAAK,CAAC;EAC/CC,MAAM,EAAE;IAAEC,WAAW,EAAEJ,MAAM,CAACK;EAAQ,CAAC;EACvCC,KAAK,EAAE;IAAEC,QAAQ,EAAE9B,EAAE,CAAC,EAAE,CAAC;IAAE+B,UAAU,EAAE9B,EAAE,CAAC+B,IAAI;IAAEC,KAAK,EAAEV,MAAM,CAACW;EAAW,CAAC;EAC1EC,MAAM,EAAE;IACNL,QAAQ,EAAE9B,EAAE,CAAC,EAAE,CAAC;IAChBiC,KAAK,EAAEV,MAAM,CAACa,eAAe;IAC7BC,UAAU,EAAEnC,QAAQ;IACpBoC,SAAS,EAAEvC,CAAC,CAAC,CAAC;EAChB,CAAC;EACDwC,KAAK,EAAE;IAAET,QAAQ,EAAE9B,EAAE,CAAC,EAAE,CAAC;IAAEwC,UAAU,EAAExC,EAAE,CAAC,EAAE,CAAC;IAAEiC,KAAK,EAAEV,MAAM,CAACW;EAAW;AAC1E,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import { ErrorAlertOutlined } from '@unif/react-native-icons';
3
4
  import { StyleSheet, View } from 'react-native';
4
5
  import { Button, Empty, useThemedStyles, r } from '@unif/react-native-design';
5
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -11,7 +12,7 @@ export function ScanErrorOverlay({
11
12
  return /*#__PURE__*/_jsxs(View, {
12
13
  style: s.overlay,
13
14
  children: [/*#__PURE__*/_jsx(Empty, {
14
- icon: "error-alert",
15
+ icon: ErrorAlertOutlined,
15
16
  title: "\u76F8\u673A\u542F\u52A8\u5931\u8D25",
16
17
  desc: "\u65E0\u6CD5\u542F\u52A8\u626B\u7801\u76F8\u673A\uFF0C\u8BF7\u786E\u8BA4\u6743\u9650\u4E0E\u8BBE\u5907\u72B6\u6001\u540E\u91CD\u8BD5\u3002"
17
18
  }), /*#__PURE__*/_jsxs(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","ScanErrorOverlay","onClose","onRetry","s","makeStyles","style","overlay","children","icon","title","desc","styles","row","label","variant","block","onPress","create","flexDirection","columnGap","marginTop","c","position","top","left","right","bottom","zIndex","backgroundColor","background","alignItems","justifyContent","paddingHorizontal","rowGap"],"sourceRoot":"../../../src","sources":["Scanner/ScanErrorOverlay.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,MAAM,EACNC,KAAK,EACLC,eAAe,EACfC,CAAC,QAEI,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOnC,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,OAAO;EAAEC;AAA+B,CAAC,EAAE;EAC5E,MAAMC,CAAC,GAAGT,eAAe,CAACU,UAAU,CAAC;EACrC,oBACEL,KAAA,CAACR,IAAI;IAACc,KAAK,EAAEF,CAAC,CAACG,OAAQ;IAAAC,QAAA,gBACrBV,IAAA,CAACJ,KAAK;MACJe,IAAI,EAAC,aAAa;MAClBC,KAAK,EAAC,sCAAQ;MACdC,IAAI,EAAC;IAAyB,CAC/B,CAAC,eACFX,KAAA,CAACR,IAAI;MAACc,KAAK,EAAEM,MAAM,CAACC,GAAI;MAAAL,QAAA,GACrBN,OAAO,iBAAIJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,OAAO;QAACC,KAAK;QAACC,OAAO,EAAEf;MAAQ,CAAE,CAAC,eACzEJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,SAAS;QAACC,KAAK;QAACC,OAAO,EAAEd;MAAQ,CAAE,CAAC;IAAA,CAC3D,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMS,MAAM,GAAGrB,UAAU,CAAC2B,MAAM,CAAC;EAC/BL,GAAG,EAAE;IAAEM,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAExB,CAAC,CAAC,EAAE,CAAC;IAAEyB,SAAS,EAAEzB,CAAC,CAAC,CAAC;EAAE;AACjE,CAAC,CAAC;AAEF,MAAMS,UAAU,GAAIiB,CAAc,IAChC/B,UAAU,CAAC2B,MAAM,CAAC;EAChBX,OAAO,EAAE;IACPgB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,EAAE;IACVC,eAAe,EAAEP,CAAC,CAACQ,UAAU;IAC7BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAErC,CAAC,CAAC,EAAE,CAAC;IACxBsC,MAAM,EAAEtC,CAAC,CAAC,CAAC;EACb;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ErrorAlertOutlined","StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","ScanErrorOverlay","onClose","onRetry","s","makeStyles","style","overlay","children","icon","title","desc","styles","row","label","variant","block","onPress","create","flexDirection","columnGap","marginTop","c","position","top","left","right","bottom","zIndex","backgroundColor","background","alignItems","justifyContent","paddingHorizontal","rowGap"],"sourceRoot":"../../../src","sources":["Scanner/ScanErrorOverlay.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,MAAM,EACNC,KAAK,EACLC,eAAe,EACfC,CAAC,QAEI,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOnC,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,OAAO;EAAEC;AAA+B,CAAC,EAAE;EAC5E,MAAMC,CAAC,GAAGT,eAAe,CAACU,UAAU,CAAC;EACrC,oBACEL,KAAA,CAACR,IAAI;IAACc,KAAK,EAAEF,CAAC,CAACG,OAAQ;IAAAC,QAAA,gBACrBV,IAAA,CAACJ,KAAK;MACJe,IAAI,EAAEnB,kBAAmB;MACzBoB,KAAK,EAAC,sCAAQ;MACdC,IAAI,EAAC;IAAyB,CAC/B,CAAC,eACFX,KAAA,CAACR,IAAI;MAACc,KAAK,EAAEM,MAAM,CAACC,GAAI;MAAAL,QAAA,GACrBN,OAAO,iBACNJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,OAAO;QAACC,KAAK;QAACC,OAAO,EAAEf;MAAQ,CAAE,CAC7D,eACDJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,SAAS;QAACC,KAAK;QAACC,OAAO,EAAEd;MAAQ,CAAE,CAAC;IAAA,CAC3D,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMS,MAAM,GAAGrB,UAAU,CAAC2B,MAAM,CAAC;EAC/BL,GAAG,EAAE;IAAEM,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAExB,CAAC,CAAC,EAAE,CAAC;IAAEyB,SAAS,EAAEzB,CAAC,CAAC,CAAC;EAAE;AACjE,CAAC,CAAC;AAEF,MAAMS,UAAU,GAAIiB,CAAc,IAChC/B,UAAU,CAAC2B,MAAM,CAAC;EAChBX,OAAO,EAAE;IACPgB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,EAAE;IACVC,eAAe,EAAEP,CAAC,CAACQ,UAAU;IAC7BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAErC,CAAC,CAAC,EAAE,CAAC;IACxBsC,MAAM,EAAEtC,CAAC,CAAC,CAAC;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import { FlashOffOutlined, FlashOnOutlined, ImageOutlined, UndoOutlined } from '@unif/react-native-icons';
3
4
  import { Pressable, StyleSheet, Text, View } from 'react-native';
4
- import { Icon, useColors, r, rf, useThemedStyles, fw } from '@unif/react-native-design';
5
+ import { GlassLayer, darkColors, useColors, r, rf, useThemedStyles, fw } from '@unif/react-native-design';
5
6
  import { scanChrome } from "./scanChrome.js";
6
7
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
8
  // 底部工具栏:返回 · 手电筒 · 相册。点亮态用主题主色。
@@ -19,28 +20,29 @@ export function ScanToolbar({
19
20
  }],
20
21
  pointerEvents: "box-none",
21
22
  children: [onClose && /*#__PURE__*/_jsx(ToolbarItem, {
22
- icon: "undo",
23
+ icon: UndoOutlined,
23
24
  label: "\u8FD4\u56DE",
24
25
  onPress: onClose
25
26
  }), onFlash && /*#__PURE__*/_jsx(ToolbarItem, {
26
- icon: flash ? 'flash-on' : 'flash-off',
27
+ icon: flash ? FlashOnOutlined : FlashOffOutlined,
27
28
  label: flash ? '已开灯' : '手电筒',
28
29
  activeColor: flash ? c.primary : undefined,
29
30
  onPress: onFlash
30
31
  }), onAlbum && /*#__PURE__*/_jsx(ToolbarItem, {
31
- icon: "image",
32
+ icon: ImageOutlined,
32
33
  label: "\u76F8\u518C",
33
34
  onPress: onAlbum
34
35
  })]
35
36
  });
36
37
  }
37
38
  function ToolbarItem({
38
- icon,
39
+ icon: Icon,
39
40
  label,
40
41
  activeColor,
41
42
  onPress
42
43
  }) {
43
44
  const s = useThemedStyles(makeTextStyles);
45
+ const c = useColors();
44
46
  return /*#__PURE__*/_jsx(Pressable, {
45
47
  onPress: onPress,
46
48
  style: styles.item,
@@ -49,21 +51,21 @@ function ToolbarItem({
49
51
  children: ({
50
52
  pressed
51
53
  }) => /*#__PURE__*/_jsxs(_Fragment, {
52
- children: [/*#__PURE__*/_jsx(View, {
54
+ children: [/*#__PURE__*/_jsxs(View, {
53
55
  style: [styles.circle, activeColor ? {
54
- backgroundColor: activeColor,
55
- borderColor: scanChrome.glassBorderActive
56
- } : {
57
- backgroundColor: scanChrome.glassDisc2,
58
- borderColor: scanChrome.glassBorder
59
- }, pressed && {
60
- opacity: 0.7
61
- }],
62
- children: /*#__PURE__*/_jsx(Icon, {
63
- name: icon,
56
+ backgroundColor: activeColor
57
+ } : undefined],
58
+ children: [!activeColor && /*#__PURE__*/_jsx(GlassLayer, {
59
+ colorScheme: "dark",
60
+ style: styles.glass,
61
+ testID: "scan-toolbar-glass"
62
+ }), /*#__PURE__*/_jsx(Icon, {
64
63
  size: r(23),
65
- color: scanChrome.white
66
- })
64
+ color: activeColor ? c.onPrimary : scanChrome.white,
65
+ style: pressed && {
66
+ opacity: 0.7
67
+ }
68
+ })]
67
69
  }), /*#__PURE__*/_jsx(Text, {
68
70
  style: s.label,
69
71
  children: label
@@ -86,13 +88,18 @@ const styles = StyleSheet.create({
86
88
  alignItems: 'center',
87
89
  rowGap: r(7)
88
90
  },
91
+ glass: {
92
+ borderRadius: 999
93
+ },
89
94
  circle: {
90
95
  width: r(54),
91
96
  height: r(54),
92
97
  borderRadius: 999,
93
98
  alignItems: 'center',
94
99
  justifyContent: 'center',
95
- borderWidth: StyleSheet.hairlineWidth
100
+ borderWidth: StyleSheet.hairlineWidth,
101
+ borderColor: darkColors.glassBorder,
102
+ overflow: 'hidden'
96
103
  }
97
104
  });
98
105
  const makeTextStyles = () => StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"names":["Pressable","StyleSheet","Text","View","Icon","useColors","r","rf","useThemedStyles","fw","scanChrome","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ScanToolbar","flash","bottomInset","onFlash","onAlbum","onClose","c","style","styles","bar","bottom","pointerEvents","children","ToolbarItem","icon","label","onPress","activeColor","primary","undefined","s","makeTextStyles","item","accessibilityRole","accessibilityLabel","pressed","circle","backgroundColor","borderColor","glassBorderActive","glassDisc2","glassBorder","opacity","name","size","color","white","create","position","left","right","zIndex","flexDirection","justifyContent","columnGap","width","alignItems","rowGap","height","borderRadius","borderWidth","hairlineWidth","fontSize","fontWeight","medium","toolbarLabel","textShadowColor","textShadowOffset","textShadowRadius"],"sourceRoot":"../../../src","sources":["Scanner/ScanToolbar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["FlashOffOutlined","FlashOnOutlined","ImageOutlined","UndoOutlined","Pressable","StyleSheet","Text","View","GlassLayer","darkColors","useColors","r","rf","useThemedStyles","fw","scanChrome","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ScanToolbar","flash","bottomInset","onFlash","onAlbum","onClose","c","style","styles","bar","bottom","pointerEvents","children","ToolbarItem","icon","label","onPress","activeColor","primary","undefined","Icon","s","makeTextStyles","item","accessibilityRole","accessibilityLabel","pressed","circle","backgroundColor","colorScheme","glass","testID","size","color","onPrimary","white","opacity","create","position","left","right","zIndex","flexDirection","justifyContent","columnGap","width","alignItems","rowGap","borderRadius","height","borderWidth","hairlineWidth","borderColor","glassBorder","overflow","fontSize","fontWeight","medium","toolbarLabel","textShadowColor","textShadowOffset","textShadowRadius"],"sourceRoot":"../../../src","sources":["Scanner/ScanToolbar.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ import { ScanOutlined } from '@unif/react-native-icons';
3
4
  import { useEffect, useRef } from 'react';
4
5
  import { Animated, Easing, StyleSheet, View } from 'react-native';
5
- import { Icon, useColors, r } from '@unif/react-native-design';
6
+ import { useColors, r } from '@unif/react-native-design';
6
7
  import { scanChrome } from "./scanChrome.js";
7
8
  import { ScanHint } from "./ScanHint.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -88,8 +89,7 @@ export function Viewfinder({
88
89
  }]
89
90
  }), /*#__PURE__*/_jsx(View, {
90
91
  style: styles.crosshair,
91
- children: /*#__PURE__*/_jsx(Icon, {
92
- name: "scan",
92
+ children: /*#__PURE__*/_jsx(ScanOutlined, {
93
93
  size: r(30),
94
94
  color: scanChrome.crosshair
95
95
  })
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","Animated","Easing","StyleSheet","View","Icon","useColors","r","scanChrome","ScanHint","jsx","_jsx","jsxs","_jsxs","WINDOW_RADIUS","Viewfinder","size","detecting","hintText","c","windowH","Math","round","scale","Value","current","pulse","setValue","ease","inOut","breathe","loop","sequence","timing","toValue","duration","easing","useNativeDriver","reticle","start","stop","style","styles","overlay","pointerEvents","children","spacerTop","window","width","height","transform","boxShadow","offsetX","offsetY","blurRadius","spreadDistance","color","scrim","windowBorder","borderColor","primary","opacity","crosshair","name","spacerBottom","text","create","position","top","left","right","bottom","zIndex","alignItems","flex","borderRadius","borderWidth","marginTop","marginLeft","justifyContent"],"sourceRoot":"../../../src","sources":["Scanner/Viewfinder.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,QAAQ,EAAEC,MAAM,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AACjE,SAASC,IAAI,EAAEC,SAAS,EAAEC,CAAC,QAAQ,2BAA2B;AAC9D,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,QAAQ,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWtC;AACA,MAAMC,aAAa,GAAGP,CAAC,CAAC,EAAE,CAAC;;AAE3B;AACA;AACA;AACA;AACA,OAAO,SAASQ,UAAUA,CAAC;EAAEC,IAAI;EAAEC,SAAS;EAAEC;AAA0B,CAAC,EAAE;EACzE,MAAMC,CAAC,GAAGb,SAAS,CAAC,CAAC;EACrB,MAAMc,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACN,IAAI,GAAG,IAAI,CAAC;EACvC,MAAMO,KAAK,GAAGvB,MAAM,CAAC,IAAIC,QAAQ,CAACuB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACnD,MAAMC,KAAK,GAAG1B,MAAM,CAAC,IAAIC,QAAQ,CAACuB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEnD1B,SAAS,CAAC,MAAM;IACd,IAAIkB,SAAS,EAAE;MACbM,KAAK,CAACI,QAAQ,CAAC,CAAC,CAAC;MACjBD,KAAK,CAACC,QAAQ,CAAC,IAAI,CAAC;MACpB;IACF;IACA,MAAMC,IAAI,GAAG1B,MAAM,CAAC2B,KAAK,CAAC3B,MAAM,CAAC0B,IAAI,CAAC;IACtC,MAAME,OAAO,GAAG7B,QAAQ,CAAC8B,IAAI,CAC3B9B,QAAQ,CAAC+B,QAAQ,CAAC,CAChB/B,QAAQ,CAACgC,MAAM,CAACV,KAAK,EAAE;MAAEW,OAAO,EAAE,KAAK;MAAEC,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAER,IAAI;MAAES,eAAe,EAAE;IAAK,CAAC,CAAC,EAC/FpC,QAAQ,CAACgC,MAAM,CAACV,KAAK,EAAE;MAAEW,OAAO,EAAE,CAAC;MAAEC,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAER,IAAI;MAAES,eAAe,EAAE;IAAK,CAAC,CAAC,CAC5F,CACH,CAAC;IACD,MAAMC,OAAO,GAAGrC,QAAQ,CAAC8B,IAAI,CAC3B9B,QAAQ,CAAC+B,QAAQ,CAAC,CAChB/B,QAAQ,CAACgC,MAAM,CAACP,KAAK,EAAE;MAAEQ,OAAO,EAAE,IAAI;MAAEC,QAAQ,EAAE,GAAG;MAAEC,MAAM,EAAER,IAAI;MAAES,eAAe,EAAE;IAAK,CAAC,CAAC,EAC7FpC,QAAQ,CAACgC,MAAM,CAACP,KAAK,EAAE;MAAEQ,OAAO,EAAE,CAAC;MAAEC,QAAQ,EAAE,GAAG;MAAEC,MAAM,EAAER,IAAI;MAAES,eAAe,EAAE;IAAK,CAAC,CAAC,CAC3F,CACH,CAAC;IACDP,OAAO,CAACS,KAAK,CAAC,CAAC;IACfD,OAAO,CAACC,KAAK,CAAC,CAAC;IACf,OAAO,MAAM;MACXT,OAAO,CAACU,IAAI,CAAC,CAAC;MACdF,OAAO,CAACE,IAAI,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACvB,SAAS,EAAEM,KAAK,EAAEG,KAAK,CAAC,CAAC;EAE7B,oBACEb,KAAA,CAACT,IAAI;IAACqC,KAAK,EAAEC,MAAM,CAACC,OAAQ;IAACC,aAAa,EAAC,MAAM;IAAAC,QAAA,gBAE/ClC,IAAA,CAACP,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACI;IAAU,CAAE,CAAC,eAEjCjC,KAAA,CAACZ,QAAQ,CAACG,IAAI;MACZqC,KAAK,EAAE,CACLC,MAAM,CAACK,MAAM,EACb;QACEC,KAAK,EAAEhC,IAAI;QACXiC,MAAM,EAAE7B,OAAO;QACf8B,SAAS,EAAE,CAAC;UAAE3B;QAAM,CAAC,CAAC;QACtB;QACA4B,SAAS,EAAE,CACT;UAAEC,OAAO,EAAE,CAAC;UAAEC,OAAO,EAAE,CAAC;UAAEC,UAAU,EAAE,CAAC;UAAEC,cAAc,EAAE,IAAI;UAAEC,KAAK,EAAErC,CAAC,CAACsC;QAAM,CAAC;MAEnF,CAAC,CACD;MAAAZ,QAAA,gBAEFlC,IAAA,CAACP,IAAI;QAACqC,KAAK,EAAEC,MAAM,CAACgB;MAAa,CAAE,CAAC,eACpC/C,IAAA,CAACV,QAAQ,CAACG,IAAI;QACZqC,KAAK,EAAE,CAACC,MAAM,CAACJ,OAAO,EAAE;UAAEqB,WAAW,EAAExC,CAAC,CAACyC,OAAO;UAAEC,OAAO,EAAEnC;QAAM,CAAC;MAAE,CACrE,CAAC,eACFf,IAAA,CAACP,IAAI;QAACqC,KAAK,EAAEC,MAAM,CAACoB,SAAU;QAAAjB,QAAA,eAC5BlC,IAAA,CAACN,IAAI;UAAC0D,IAAI,EAAC,MAAM;UAAC/C,IAAI,EAAET,CAAC,CAAC,EAAE,CAAE;UAACiD,KAAK,EAAEhD,UAAU,CAACsD;QAAU,CAAE;MAAC,CAC1D,CAAC;IAAA,CACM,CAAC,eAEhBnD,IAAA,CAACP,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACsB,YAAa;MAAAnB,QAAA,eAC/BlC,IAAA,CAACF,QAAQ;QAACQ,SAAS,EAAEA,SAAU;QAACgD,IAAI,EAAE/C;MAAS,CAAE;IAAC,CAC9C,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMwB,MAAM,GAAGvC,UAAU,CAAC+D,MAAM,CAAC;EAC/BvB,OAAO,EAAE;IACPwB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE;EACd,CAAC;EACD3B,SAAS,EAAE;IAAE4B,IAAI,EAAE;EAAE,CAAC;EACtBV,YAAY,EAAE;IAAEU,IAAI,EAAE,IAAI;IAAED,UAAU,EAAE;EAAS,CAAC;EAClD1B,MAAM,EAAE;IAAE4B,YAAY,EAAE7D;EAAc,CAAC;EACvC4C,YAAY,EAAE;IACZS,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTI,YAAY,EAAE7D,aAAa;IAC3B8D,WAAW,EAAE,GAAG;IAChBjB,WAAW,EAAEnD,UAAU,CAACkD;EAC1B,CAAC;EACDpB,OAAO,EAAE;IACP6B,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTI,YAAY,EAAE7D,aAAa;IAC3B8D,WAAW,EAAE;EACf,CAAC;EACDd,SAAS,EAAE;IACTK,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXrB,KAAK,EAAEzC,CAAC,CAAC,EAAE,CAAC;IACZ0C,MAAM,EAAE1C,CAAC,CAAC,EAAE,CAAC;IACbsE,SAAS,EAAEtE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjBuE,UAAU,EAAEvE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClBkE,UAAU,EAAE,QAAQ;IACpBM,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ScanOutlined","useEffect","useRef","Animated","Easing","StyleSheet","View","useColors","r","scanChrome","ScanHint","jsx","_jsx","jsxs","_jsxs","WINDOW_RADIUS","Viewfinder","size","detecting","hintText","c","windowH","Math","round","scale","Value","current","pulse","setValue","ease","inOut","breathe","loop","sequence","timing","toValue","duration","easing","useNativeDriver","reticle","start","stop","style","styles","overlay","pointerEvents","children","spacerTop","window","width","height","transform","boxShadow","offsetX","offsetY","blurRadius","spreadDistance","color","scrim","windowBorder","borderColor","primary","opacity","crosshair","spacerBottom","text","create","position","top","left","right","bottom","zIndex","alignItems","flex","borderRadius","borderWidth","marginTop","marginLeft","justifyContent"],"sourceRoot":"../../../src","sources":["Scanner/Viewfinder.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,12 +6,6 @@ export const scanChrome = {
6
6
  /** 相机未就绪时的底色(深色实景占位)。 */
7
7
  cameraBg: '#0c0b0a',
8
8
  white: '#FFFFFF',
9
- /** 顶栏关闭键玻璃底。 */
10
- glassDisc: 'rgba(20,18,16,0.42)',
11
- /** 工具栏未点亮玻璃底。 */
12
- glassDisc2: 'rgba(28,26,24,0.5)',
13
- glassBorder: 'rgba(255,255,255,0.16)',
14
- glassBorderActive: 'rgba(255,255,255,0.25)',
15
9
  /** 取景提示文字。 */
16
10
  hintText: 'rgba(255,255,255,0.86)',
17
11
  toolbarLabel: 'rgba(255,255,255,0.82)',
@@ -1 +1 @@
1
- {"version":3,"names":["scanChrome","cameraBg","white","glassDisc","glassDisc2","glassBorder","glassBorderActive","hintText","toolbarLabel","windowBorder","crosshair","textShadow"],"sourceRoot":"../../../src","sources":["Scanner/scanChrome.ts"],"mappings":";;AAAA;AACA;AACA,OAAO,MAAMA,UAAU,GAAG;EACxB;EACAC,QAAQ,EAAE,SAAS;EACnBC,KAAK,EAAE,SAAS;EAChB;EACAC,SAAS,EAAE,qBAAqB;EAChC;EACAC,UAAU,EAAE,oBAAoB;EAChCC,WAAW,EAAE,wBAAwB;EACrCC,iBAAiB,EAAE,wBAAwB;EAC3C;EACAC,QAAQ,EAAE,wBAAwB;EAClCC,YAAY,EAAE,wBAAwB;EACtC;EACAC,YAAY,EAAE,wBAAwB;EACtCC,SAAS,EAAE,uBAAuB;EAClCC,UAAU,EAAE;AACd,CAAU","ignoreList":[]}
1
+ {"version":3,"names":["scanChrome","cameraBg","white","hintText","toolbarLabel","windowBorder","crosshair","textShadow"],"sourceRoot":"../../../src","sources":["Scanner/scanChrome.ts"],"mappings":";;AAAA;AACA;AACA,OAAO,MAAMA,UAAU,GAAG;EACxB;EACAC,QAAQ,EAAE,SAAS;EACnBC,KAAK,EAAE,SAAS;EAChB;EACAC,QAAQ,EAAE,wBAAwB;EAClCC,YAAY,EAAE,wBAAwB;EACtC;EACAC,YAAY,EAAE,wBAAwB;EACtCC,SAAS,EAAE,uBAAuB;EAClCC,UAAU,EAAE;AACd,CAAU","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DeniedOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/DeniedOverlay.tsx"],"names":[],"mappings":"AASA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAyBxE"}
1
+ {"version":3,"file":"DeniedOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/DeniedOverlay.tsx"],"names":[],"mappings":"AAaA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAyBxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResultFail.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ResultFail.tsx"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA0C5E"}
1
+ {"version":3,"file":"ResultFail.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ResultFail.tsx"],"names":[],"mappings":"AAaA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA6C5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResultFocus.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/ResultFocus.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAyBlB"}
1
+ {"version":3,"file":"ResultFocus.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/ResultFocus.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAoBlB"}
@@ -1,4 +1,4 @@
1
- import { type ColorTokens } from '@unif/react-native-design';
1
+ import { type ColorTokens, type ShadowTokens } from '@unif/react-native-design';
2
2
  export declare const styles: {
3
3
  wrap: {
4
4
  position: "absolute";
@@ -6,6 +6,15 @@ export declare const styles: {
6
6
  right: number;
7
7
  zIndex: number;
8
8
  };
9
+ glass: {
10
+ borderRadius: number;
11
+ };
12
+ surface: {
13
+ borderRadius: number;
14
+ borderWidth: number;
15
+ padding: number;
16
+ overflow: "hidden";
17
+ };
9
18
  content: {
10
19
  maxHeight: number;
11
20
  marginVertical: number;
@@ -15,7 +24,21 @@ export declare const styles: {
15
24
  columnGap: number;
16
25
  };
17
26
  };
18
- export declare const makeStyles: (colors: ColorTokens) => {
27
+ export declare const makeStyles: (colors: ColorTokens, shadow: ShadowTokens) => {
28
+ shadow: {
29
+ shadowColor: string;
30
+ shadowOffset: {
31
+ readonly width: number;
32
+ readonly height: number;
33
+ };
34
+ shadowOpacity: number;
35
+ shadowRadius: number;
36
+ elevation: number;
37
+ borderRadius: number;
38
+ };
39
+ border: {
40
+ borderColor: string;
41
+ };
19
42
  badge: {
20
43
  fontSize: number;
21
44
  fontWeight: "600";
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAIjB,CAAC;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;CAU1C,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAWjB,CAAC;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYhE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScanErrorOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ScanErrorOverlay.tsx"],"names":[],"mappings":"AASA,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CAe3E"}
1
+ {"version":3,"file":"ScanErrorOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ScanErrorOverlay.tsx"],"names":[],"mappings":"AAUA,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CAiB3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScanToolbar.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ScanToolbar.tsx"],"names":[],"mappings":"AAYA,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAGD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE,gBAAgB,2CAmBlB"}
1
+ {"version":3,"file":"ScanToolbar.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ScanToolbar.tsx"],"names":[],"mappings":"AAoBA,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAGD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE,gBAAgB,2CAuBlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Viewfinder.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Viewfinder.tsx"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AASD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAkExE"}
1
+ {"version":3,"file":"Viewfinder.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Viewfinder.tsx"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AASD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA4FxE"}
@@ -2,12 +2,6 @@ export declare const scanChrome: {
2
2
  /** 相机未就绪时的底色(深色实景占位)。 */
3
3
  readonly cameraBg: "#0c0b0a";
4
4
  readonly white: "#FFFFFF";
5
- /** 顶栏关闭键玻璃底。 */
6
- readonly glassDisc: "rgba(20,18,16,0.42)";
7
- /** 工具栏未点亮玻璃底。 */
8
- readonly glassDisc2: "rgba(28,26,24,0.5)";
9
- readonly glassBorder: "rgba(255,255,255,0.16)";
10
- readonly glassBorderActive: "rgba(255,255,255,0.25)";
11
5
  /** 取景提示文字。 */
12
6
  readonly hintText: "rgba(255,255,255,0.86)";
13
7
  readonly toolbarLabel: "rgba(255,255,255,0.82)";
@@ -1 +1 @@
1
- {"version":3,"file":"scanChrome.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/scanChrome.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;IACrB,yBAAyB;;;IAGzB,gBAAgB;;IAEhB,iBAAiB;;;;IAIjB,cAAc;;;IAGd,eAAe;;;;CAIP,CAAC"}
1
+ {"version":3,"file":"scanChrome.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/scanChrome.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;IACrB,yBAAyB;;;IAGzB,cAAc;;;IAGd,eAAe;;;;CAIP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-hms-scan",
3
- "version": "2.1.0",
3
+ "version": "3.0.0",
4
4
  "description": "Unif React Native 扫码:实时预览、二维码、条码和本地图片识别",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -92,7 +92,8 @@
92
92
  "@types/jest": "^29.5.0",
93
93
  "@types/react": "^19.2.0",
94
94
  "@types/react-test-renderer": "^19",
95
- "@unif/react-native-design": "0.36.0",
95
+ "@unif/react-native-design": ">=1.0.0",
96
+ "@unif/react-native-icons": ">=0.1.0",
96
97
  "commitlint": "^20.5.0",
97
98
  "del-cli": "^7.0.0",
98
99
  "eslint": "^8.57.1",
@@ -118,7 +119,8 @@
118
119
  },
119
120
  "peerDependencies": {
120
121
  "@callstack/liquid-glass": ">=0.8.2 <0.9.0",
121
- "@unif/react-native-design": ">=0.35.0",
122
+ "@unif/react-native-design": ">=1.0.0",
123
+ "@unif/react-native-icons": ">=0.1.0",
122
124
  "react": ">=19.2.3 <20.0.0",
123
125
  "react-native": ">=0.86.0",
124
126
  "react-native-gesture-handler": ">=3.0.0 <4.0.0",
@@ -1,3 +1,7 @@
1
+ import {
2
+ PermissionDeniedOutlined,
3
+ SettingsOutlined,
4
+ } from '@unif/react-native-icons';
1
5
  import { StyleSheet, View } from 'react-native';
2
6
  import {
3
7
  Button,
@@ -18,7 +22,7 @@ export function DeniedOverlay({ onClose, onSettings }: DeniedOverlayProps) {
18
22
  return (
19
23
  <View style={s.overlay}>
20
24
  <Empty
21
- icon="permission-denied"
25
+ icon={PermissionDeniedOutlined}
22
26
  title="需要相机权限"
23
27
  desc="开启相机后,才能扫描条码与二维码。请前往系统设置授权。"
24
28
  />
@@ -31,7 +35,7 @@ export function DeniedOverlay({ onClose, onSettings }: DeniedOverlayProps) {
31
35
  <Button
32
36
  label="去设置开启"
33
37
  variant="primary"
34
- leftIcon="settings"
38
+ leftIcon={SettingsOutlined}
35
39
  block
36
40
  onPress={onSettings}
37
41
  />
@@ -1,8 +1,10 @@
1
+ import { ErrorAlertOutlined } from '@unif/react-native-icons';
1
2
  import { useEffect, useRef } from 'react';
2
3
  import { Animated, StyleSheet, View } from 'react-native';
3
4
  import {
4
5
  Button,
5
6
  Empty,
7
+ GlassLayer,
6
8
  useThemedStyles,
7
9
  r,
8
10
  type ColorTokens,
@@ -45,24 +47,34 @@ export function ResultFail({ bottomInset, failed, onRescan }: ResultFailProps) {
45
47
  },
46
48
  ]}
47
49
  >
48
- <View style={s.grabber} />
49
- <View style={[styles.inner, { paddingBottom: bottomInset + r(14) }]}>
50
- <Empty
51
- icon="error-alert"
52
- title={failed ? '图片识别失败' : '未识别到条码'}
53
- desc={
54
- failed
55
- ? '无法读取或解码图片,请重试。'
56
- : '请将条码完整置于框内、保持平整并对准光线后重试。'
57
- }
58
- />
59
- <Button label="重扫" variant="primary" block onPress={onRescan} />
50
+ <View style={styles.surface}>
51
+ <GlassLayer style={styles.glass} testID="scan-failure-glass" />
52
+ <View style={s.grabber} />
53
+ <View style={[styles.inner, { paddingBottom: bottomInset + r(14) }]}>
54
+ <Empty
55
+ icon={ErrorAlertOutlined}
56
+ title={failed ? '图片识别失败' : '未识别到条码'}
57
+ desc={
58
+ failed
59
+ ? '无法读取或解码图片,请重试。'
60
+ : '请将条码完整置于框内、保持平整并对准光线后重试。'
61
+ }
62
+ />
63
+ <Button label="重扫" variant="primary" block onPress={onRescan} />
64
+ </View>
60
65
  </View>
61
66
  </Animated.View>
62
67
  );
63
68
  }
64
69
 
65
70
  const styles = StyleSheet.create({
71
+ glass: { borderTopLeftRadius: r(20), borderTopRightRadius: r(20) },
72
+ surface: {
73
+ borderTopLeftRadius: r(20),
74
+ borderTopRightRadius: r(20),
75
+ paddingTop: r(10),
76
+ overflow: 'hidden',
77
+ },
66
78
  inner: { paddingHorizontal: r(18), paddingTop: r(8), rowGap: r(16) },
67
79
  });
68
80
 
@@ -74,10 +86,8 @@ const makeStyles = (c: ColorTokens, shadow: ShadowTokens) =>
74
86
  right: 0,
75
87
  bottom: 0,
76
88
  zIndex: 50,
77
- backgroundColor: c.surface,
78
89
  borderTopLeftRadius: r(20),
79
90
  borderTopRightRadius: r(20),
80
- paddingTop: r(10),
81
91
  ...shadow.floating,
82
92
  },
83
93
  grabber: {
@@ -1,8 +1,7 @@
1
1
  import { ScrollView, Text, View } from 'react-native';
2
2
  import {
3
3
  Button,
4
- Card,
5
- useColors,
4
+ GlassLayer,
6
5
  useThemedStyles,
7
6
  r,
8
7
  } from '@unif/react-native-design';
@@ -16,16 +15,11 @@ export function ResultFocus({
16
15
  onRescan,
17
16
  onConfirm,
18
17
  }: ResultFocusProps) {
19
- const colors = useColors();
20
18
  const themed = useThemedStyles(makeStyles);
21
19
  return (
22
- <View style={[styles.wrap, { bottom: bottomInset + r(18) }]}>
23
- <Card
24
- borderColor={colors.primary}
25
- borderWidth={2}
26
- borderRadius={r(16)}
27
- padding={r(14)}
28
- >
20
+ <View style={[styles.wrap, themed.shadow, { bottom: bottomInset + r(18) }]}>
21
+ <View style={[styles.surface, themed.border]}>
22
+ <GlassLayer style={styles.glass} testID="scan-result-glass" />
29
23
  <Text style={themed.badge}>已识别</Text>
30
24
  <Text style={themed.format}>{result.format}</Text>
31
25
  <ScrollView style={styles.content}>
@@ -37,7 +31,7 @@ export function ResultFocus({
37
31
  <Button label="重扫" variant="secondary" block onPress={onRescan} />
38
32
  <Button label="选用" variant="primary" block onPress={onConfirm} />
39
33
  </View>
40
- </Card>
34
+ </View>
41
35
  </View>
42
36
  );
43
37
  }
@@ -5,15 +5,25 @@ import {
5
5
  fw,
6
6
  fontMono,
7
7
  type ColorTokens,
8
+ type ShadowTokens,
8
9
  } from '@unif/react-native-design';
9
10
 
10
11
  export const styles = StyleSheet.create({
11
12
  wrap: { position: 'absolute', left: r(16), right: r(16), zIndex: 50 },
13
+ glass: { borderRadius: r(16) },
14
+ surface: {
15
+ borderRadius: r(16),
16
+ borderWidth: 2,
17
+ padding: r(14),
18
+ overflow: 'hidden',
19
+ },
12
20
  content: { maxHeight: r(220), marginVertical: r(14) },
13
21
  actions: { flexDirection: 'row', columnGap: r(10) },
14
22
  });
15
- export const makeStyles = (colors: ColorTokens) =>
23
+ export const makeStyles = (colors: ColorTokens, shadow: ShadowTokens) =>
16
24
  StyleSheet.create({
25
+ shadow: { borderRadius: r(16), ...shadow.card },
26
+ border: { borderColor: colors.primary },
17
27
  badge: { fontSize: rf(13), fontWeight: fw.semi, color: colors.foreground },
18
28
  format: {
19
29
  fontSize: rf(12),
@@ -1,3 +1,4 @@
1
+ import { ErrorAlertOutlined } from '@unif/react-native-icons';
1
2
  import { StyleSheet, View } from 'react-native';
2
3
  import {
3
4
  Button,
@@ -17,12 +18,14 @@ export function ScanErrorOverlay({ onClose, onRetry }: ScanErrorOverlayProps) {
17
18
  return (
18
19
  <View style={s.overlay}>
19
20
  <Empty
20
- icon="error-alert"
21
+ icon={ErrorAlertOutlined}
21
22
  title="相机启动失败"
22
23
  desc="无法启动扫码相机,请确认权限与设备状态后重试。"
23
24
  />
24
25
  <View style={styles.row}>
25
- {onClose && <Button label="取消" variant="ghost" block onPress={onClose} />}
26
+ {onClose && (
27
+ <Button label="取消" variant="ghost" block onPress={onClose} />
28
+ )}
26
29
  <Button label="重试" variant="primary" block onPress={onRetry} />
27
30
  </View>
28
31
  </View>
@@ -1,12 +1,20 @@
1
+ import {
2
+ FlashOffOutlined,
3
+ FlashOnOutlined,
4
+ ImageOutlined,
5
+ UndoOutlined,
6
+ } from '@unif/react-native-icons';
7
+ import type { ComponentType } from 'react';
8
+ import type { IconProps } from '@unif/react-native-icons';
1
9
  import { Pressable, StyleSheet, Text, View } from 'react-native';
2
10
  import {
3
- Icon,
11
+ GlassLayer,
12
+ darkColors,
4
13
  useColors,
5
14
  r,
6
15
  rf,
7
16
  useThemedStyles,
8
17
  fw,
9
- type IconName,
10
18
  } from '@unif/react-native-design';
11
19
  import { scanChrome } from './scanChrome';
12
20
 
@@ -35,32 +43,37 @@ export function ScanToolbar({
35
43
  style={[styles.bar, { bottom: bottomInset + r(50) }]}
36
44
  pointerEvents="box-none"
37
45
  >
38
- {onClose && <ToolbarItem icon="undo" label="返回" onPress={onClose} />}
46
+ {onClose && (
47
+ <ToolbarItem icon={UndoOutlined} label="返回" onPress={onClose} />
48
+ )}
39
49
  {onFlash && (
40
50
  <ToolbarItem
41
- icon={flash ? 'flash-on' : 'flash-off'}
51
+ icon={flash ? FlashOnOutlined : FlashOffOutlined}
42
52
  label={flash ? '已开灯' : '手电筒'}
43
53
  activeColor={flash ? c.primary : undefined}
44
54
  onPress={onFlash}
45
55
  />
46
56
  )}
47
- {onAlbum && <ToolbarItem icon="image" label="相册" onPress={onAlbum} />}
57
+ {onAlbum && (
58
+ <ToolbarItem icon={ImageOutlined} label="相册" onPress={onAlbum} />
59
+ )}
48
60
  </View>
49
61
  );
50
62
  }
51
63
 
52
64
  function ToolbarItem({
53
- icon,
65
+ icon: Icon,
54
66
  label,
55
67
  activeColor,
56
68
  onPress,
57
69
  }: {
58
- icon: IconName;
70
+ icon: ComponentType<IconProps>;
59
71
  label: string;
60
72
  activeColor?: string;
61
73
  onPress: () => void;
62
74
  }) {
63
75
  const s = useThemedStyles(makeTextStyles);
76
+ const c = useColors();
64
77
  return (
65
78
  <Pressable
66
79
  onPress={onPress}
@@ -73,19 +86,21 @@ function ToolbarItem({
73
86
  <View
74
87
  style={[
75
88
  styles.circle,
76
- activeColor
77
- ? {
78
- backgroundColor: activeColor,
79
- borderColor: scanChrome.glassBorderActive,
80
- }
81
- : {
82
- backgroundColor: scanChrome.glassDisc2,
83
- borderColor: scanChrome.glassBorder,
84
- },
85
- pressed && { opacity: 0.7 },
89
+ activeColor ? { backgroundColor: activeColor } : undefined,
86
90
  ]}
87
91
  >
88
- <Icon name={icon} size={r(23)} color={scanChrome.white} />
92
+ {!activeColor && (
93
+ <GlassLayer
94
+ colorScheme="dark"
95
+ style={styles.glass}
96
+ testID="scan-toolbar-glass"
97
+ />
98
+ )}
99
+ <Icon
100
+ size={r(23)}
101
+ color={activeColor ? c.onPrimary : scanChrome.white}
102
+ style={pressed && { opacity: 0.7 }}
103
+ />
89
104
  </View>
90
105
  <Text style={s.label}>{label}</Text>
91
106
  </>
@@ -105,6 +120,7 @@ const styles = StyleSheet.create({
105
120
  columnGap: r(40),
106
121
  },
107
122
  item: { width: r(72), alignItems: 'center', rowGap: r(7) },
123
+ glass: { borderRadius: 999 },
108
124
  circle: {
109
125
  width: r(54),
110
126
  height: r(54),
@@ -112,6 +128,8 @@ const styles = StyleSheet.create({
112
128
  alignItems: 'center',
113
129
  justifyContent: 'center',
114
130
  borderWidth: StyleSheet.hairlineWidth,
131
+ borderColor: darkColors.glassBorder,
132
+ overflow: 'hidden',
115
133
  },
116
134
  });
117
135
 
@@ -1,6 +1,7 @@
1
+ import { ScanOutlined } from '@unif/react-native-icons';
1
2
  import { useEffect, useRef } from 'react';
2
3
  import { Animated, Easing, StyleSheet, View } from 'react-native';
3
- import { Icon, useColors, r } from '@unif/react-native-design';
4
+ import { useColors, r } from '@unif/react-native-design';
4
5
  import { scanChrome } from './scanChrome';
5
6
  import { ScanHint } from './ScanHint';
6
7
 
@@ -35,14 +36,34 @@ export function Viewfinder({ size, detecting, hintText }: ViewfinderProps) {
35
36
  const ease = Easing.inOut(Easing.ease);
36
37
  const breathe = Animated.loop(
37
38
  Animated.sequence([
38
- Animated.timing(scale, { toValue: 1.012, duration: 1300, easing: ease, useNativeDriver: true }),
39
- Animated.timing(scale, { toValue: 1, duration: 1300, easing: ease, useNativeDriver: true }),
39
+ Animated.timing(scale, {
40
+ toValue: 1.012,
41
+ duration: 1300,
42
+ easing: ease,
43
+ useNativeDriver: true,
44
+ }),
45
+ Animated.timing(scale, {
46
+ toValue: 1,
47
+ duration: 1300,
48
+ easing: ease,
49
+ useNativeDriver: true,
50
+ }),
40
51
  ])
41
52
  );
42
53
  const reticle = Animated.loop(
43
54
  Animated.sequence([
44
- Animated.timing(pulse, { toValue: 0.55, duration: 900, easing: ease, useNativeDriver: true }),
45
- Animated.timing(pulse, { toValue: 1, duration: 900, easing: ease, useNativeDriver: true }),
55
+ Animated.timing(pulse, {
56
+ toValue: 0.55,
57
+ duration: 900,
58
+ easing: ease,
59
+ useNativeDriver: true,
60
+ }),
61
+ Animated.timing(pulse, {
62
+ toValue: 1,
63
+ duration: 900,
64
+ easing: ease,
65
+ useNativeDriver: true,
66
+ }),
46
67
  ])
47
68
  );
48
69
  breathe.start();
@@ -67,7 +88,13 @@ export function Viewfinder({ size, detecting, hintText }: ViewfinderProps) {
67
88
  transform: [{ scale }],
68
89
  // spread 铺满全屏的纯色硬边阴影 = 圆角洞之外的暗化遮罩(blur 0 → 不晕开)。
69
90
  boxShadow: [
70
- { offsetX: 0, offsetY: 0, blurRadius: 0, spreadDistance: 9999, color: c.scrim },
91
+ {
92
+ offsetX: 0,
93
+ offsetY: 0,
94
+ blurRadius: 0,
95
+ spreadDistance: 9999,
96
+ color: c.scrim,
97
+ },
71
98
  ],
72
99
  },
73
100
  ]}
@@ -77,7 +104,7 @@ export function Viewfinder({ size, detecting, hintText }: ViewfinderProps) {
77
104
  style={[styles.reticle, { borderColor: c.primary, opacity: pulse }]}
78
105
  />
79
106
  <View style={styles.crosshair}>
80
- <Icon name="scan" size={r(30)} color={scanChrome.crosshair} />
107
+ <ScanOutlined size={r(30)} color={scanChrome.crosshair} />
81
108
  </View>
82
109
  </Animated.View>
83
110
 
@@ -4,12 +4,6 @@ export const scanChrome = {
4
4
  /** 相机未就绪时的底色(深色实景占位)。 */
5
5
  cameraBg: '#0c0b0a',
6
6
  white: '#FFFFFF',
7
- /** 顶栏关闭键玻璃底。 */
8
- glassDisc: 'rgba(20,18,16,0.42)',
9
- /** 工具栏未点亮玻璃底。 */
10
- glassDisc2: 'rgba(28,26,24,0.5)',
11
- glassBorder: 'rgba(255,255,255,0.16)',
12
- glassBorderActive: 'rgba(255,255,255,0.25)',
13
7
  /** 取景提示文字。 */
14
8
  hintText: 'rgba(255,255,255,0.86)',
15
9
  toolbarLabel: 'rgba(255,255,255,0.82)',