@unif/react-native-design 0.34.0 → 0.36.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 (96) hide show
  1. package/jest-preset.js +1 -1
  2. package/jest-setup.js +16 -1
  3. package/lib/module/components/business/GlassStats/GlassStats.js +6 -7
  4. package/lib/module/components/business/GlassStats/GlassStats.js.map +1 -1
  5. package/lib/module/components/business/GlassStats/styles.js +5 -1
  6. package/lib/module/components/business/GlassStats/styles.js.map +1 -1
  7. package/lib/module/components/ui/GlassLayer/GlassLayer.js +39 -0
  8. package/lib/module/components/ui/GlassLayer/GlassLayer.js.map +1 -0
  9. package/lib/module/components/ui/GlassLayer/GlassLayer.web.js +36 -0
  10. package/lib/module/components/ui/GlassLayer/GlassLayer.web.js.map +1 -0
  11. package/lib/module/components/ui/GlassLayer/constants.js +8 -0
  12. package/lib/module/components/ui/GlassLayer/constants.js.map +1 -0
  13. package/lib/module/components/ui/GlassLayer/index.js +4 -0
  14. package/lib/module/components/ui/GlassLayer/index.js.map +1 -0
  15. package/lib/module/components/ui/GlassLayer/types.js.map +1 -0
  16. package/lib/module/components/ui/TextField/TextFieldBase.js +20 -6
  17. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  18. package/lib/module/components/ui/TextField/constants.js +2 -2
  19. package/lib/module/components/ui/TextField/constants.js.map +1 -1
  20. package/lib/module/components/ui/TextField/styles.js +10 -0
  21. package/lib/module/components/ui/TextField/styles.js.map +1 -1
  22. package/lib/module/components/ui/index.js +1 -1
  23. package/lib/module/components/ui/index.js.map +1 -1
  24. package/lib/module/theme/colors.js +4 -7
  25. package/lib/module/theme/colors.js.map +1 -1
  26. package/lib/module/theme/index.js +0 -1
  27. package/lib/module/theme/index.js.map +1 -1
  28. package/lib/typescript/src/components/business/GlassStats/GlassStats.d.ts +2 -4
  29. package/lib/typescript/src/components/business/GlassStats/GlassStats.d.ts.map +1 -1
  30. package/lib/typescript/src/components/business/GlassStats/styles.d.ts +4 -1
  31. package/lib/typescript/src/components/business/GlassStats/styles.d.ts.map +1 -1
  32. package/lib/typescript/src/components/ui/GlassLayer/GlassLayer.d.ts +5 -0
  33. package/lib/typescript/src/components/ui/GlassLayer/GlassLayer.d.ts.map +1 -0
  34. package/lib/typescript/src/components/ui/GlassLayer/GlassLayer.web.d.ts +5 -0
  35. package/lib/typescript/src/components/ui/GlassLayer/GlassLayer.web.d.ts.map +1 -0
  36. package/lib/typescript/src/components/ui/GlassLayer/constants.d.ts +6 -0
  37. package/lib/typescript/src/components/ui/GlassLayer/constants.d.ts.map +1 -0
  38. package/lib/typescript/src/components/ui/GlassLayer/index.d.ts +3 -0
  39. package/lib/typescript/src/components/ui/GlassLayer/index.d.ts.map +1 -0
  40. package/lib/typescript/src/components/ui/GlassLayer/types.d.ts +13 -0
  41. package/lib/typescript/src/components/ui/GlassLayer/types.d.ts.map +1 -0
  42. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  43. package/lib/typescript/src/components/ui/TextField/constants.d.ts.map +1 -1
  44. package/lib/typescript/src/components/ui/TextField/styles.d.ts +16 -0
  45. package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
  46. package/lib/typescript/src/components/ui/TextField/types.d.ts +2 -0
  47. package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
  48. package/lib/typescript/src/components/ui/Textarea/types.d.ts +2 -0
  49. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  50. package/lib/typescript/src/components/ui/index.d.ts +2 -2
  51. package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
  52. package/lib/typescript/src/theme/colors.d.ts +2 -5
  53. package/lib/typescript/src/theme/colors.d.ts.map +1 -1
  54. package/lib/typescript/src/theme/index.d.ts +0 -2
  55. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  56. package/package.json +3 -3
  57. package/src/components/business/GlassStats/GlassStats.tsx +4 -6
  58. package/src/components/business/GlassStats/styles.ts +3 -1
  59. package/src/components/ui/GlassLayer/GlassLayer.tsx +42 -0
  60. package/src/components/ui/GlassLayer/GlassLayer.web.tsx +37 -0
  61. package/src/components/ui/GlassLayer/constants.ts +2 -0
  62. package/src/components/ui/GlassLayer/index.ts +2 -0
  63. package/src/components/ui/GlassLayer/types.ts +14 -0
  64. package/src/components/ui/TextField/TextFieldBase.tsx +24 -5
  65. package/src/components/ui/TextField/constants.ts +2 -2
  66. package/src/components/ui/TextField/styles.ts +5 -0
  67. package/src/components/ui/TextField/types.ts +2 -0
  68. package/src/components/ui/Textarea/types.ts +2 -0
  69. package/src/components/ui/index.ts +2 -2
  70. package/src/theme/colors.ts +4 -7
  71. package/src/theme/index.ts +0 -3
  72. package/lib/module/components/ui/BlurLayer/BlurLayer.js +0 -45
  73. package/lib/module/components/ui/BlurLayer/BlurLayer.js.map +0 -1
  74. package/lib/module/components/ui/BlurLayer/BlurLayer.web.js +0 -46
  75. package/lib/module/components/ui/BlurLayer/BlurLayer.web.js.map +0 -1
  76. package/lib/module/components/ui/BlurLayer/index.js +0 -4
  77. package/lib/module/components/ui/BlurLayer/index.js.map +0 -1
  78. package/lib/module/components/ui/BlurLayer/types.js.map +0 -1
  79. package/lib/module/theme/blur.js +0 -12
  80. package/lib/module/theme/blur.js.map +0 -1
  81. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.d.ts +0 -10
  82. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.d.ts.map +0 -1
  83. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.web.d.ts +0 -12
  84. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.web.d.ts.map +0 -1
  85. package/lib/typescript/src/components/ui/BlurLayer/index.d.ts +0 -3
  86. package/lib/typescript/src/components/ui/BlurLayer/index.d.ts.map +0 -1
  87. package/lib/typescript/src/components/ui/BlurLayer/types.d.ts +0 -15
  88. package/lib/typescript/src/components/ui/BlurLayer/types.d.ts.map +0 -1
  89. package/lib/typescript/src/theme/blur.d.ts +0 -11
  90. package/lib/typescript/src/theme/blur.d.ts.map +0 -1
  91. package/src/components/ui/BlurLayer/BlurLayer.tsx +0 -47
  92. package/src/components/ui/BlurLayer/BlurLayer.web.tsx +0 -46
  93. package/src/components/ui/BlurLayer/index.ts +0 -2
  94. package/src/components/ui/BlurLayer/types.ts +0 -15
  95. package/src/theme/blur.ts +0 -11
  96. /package/lib/module/components/ui/{BlurLayer → GlassLayer}/types.js +0 -0
@@ -0,0 +1,3 @@
1
+ export { GlassLayer } from './GlassLayer';
2
+ export type { GlassEffect, GlassLayerProps } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/GlassLayer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ColorValue, StyleProp, ViewStyle } from 'react-native';
2
+ export type GlassEffect = 'clear' | 'regular';
3
+ export interface GlassLayerProps {
4
+ /** 玻璃材质,默认 regular;clear 更通透。Web 使用对应的 CSS 近似效果。 */
5
+ effect?: GlassEffect;
6
+ /** 默认 clear 使用 glassTintLight,regular 使用 sheetBackdrop;降级时作为背景色。 */
7
+ tintColor?: ColorValue;
8
+ /** 布局、定位与圆角;默认 absoluteFill,材质颜色通过 tintColor 设置。 */
9
+ style?: StyleProp<ViewStyle>;
10
+ /** E2E / 测试定位。 */
11
+ testID?: string;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/GlassLayer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oEAAoE;IACpE,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,oDAAoD;IACpD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextFieldBase.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/TextFieldBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAcnE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,4FAgPzB,CAAC"}
1
+ {"version":3,"file":"TextFieldBase.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/TextFieldBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAcnE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,4FAmQzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAW,CAAC;AAClD,eAAO,MAAM,6BAA6B,QAAgC,CAAC;AAC3E,eAAO,MAAM,uBAAuB,QACyB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAW,CAAC;AAClD,eAAO,MAAM,6BAA6B,QAAe,CAAC;AAC1D,eAAO,MAAM,uBAAuB,QACyB,CAAC"}
@@ -13,7 +13,23 @@ export declare const makeStyles: (c: ColorTokens) => Readonly<{
13
13
  paddingVertical: number;
14
14
  alignItems: "flex-start";
15
15
  };
16
+ wrapCentered: {
17
+ alignItems: "center";
18
+ };
19
+ focusSurface: Readonly<{
20
+ position: "absolute";
21
+ left: 0;
22
+ right: 0;
23
+ top: 0;
24
+ bottom: 0;
25
+ }>;
26
+ inputCentered: {
27
+ position: "relative";
28
+ zIndex: number;
29
+ };
16
30
  wrapPlain: {
31
+ paddingHorizontal: number;
32
+ paddingVertical: number;
17
33
  backgroundColor: string;
18
34
  borderWidth: number;
19
35
  borderRadius: number;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,yDAAyD;AACzD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;;;;;;IAmBrC,+BAA+B;;;;;;;;;;;;;;;IAe/B,qEAAqE;;;;;;;;;;;;;;;;;;;;;;IAuBrE,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDtC,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,yDAAyD;AACzD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwBrC,+BAA+B;;;;;;;;;;;;;;;IAe/B,qEAAqE;;;;;;;;;;;;;;;;;;;;;;IAuBrE,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDtC,CAAC"}
@@ -111,6 +111,8 @@ export type TextFieldBaseProps = Omit<TextInputProps, RemovedTextInputProps> & T
111
111
  searchLayout?: SearchFieldLayout;
112
112
  /** internal:仅由 Textarea 的公开 surface 选择,无独立表面的多行输入。 */
113
113
  plainSurface?: boolean;
114
+ /** internal:Textarea 的文字对齐;不改变单行控件。 */
115
+ contentAlignment?: 'start' | 'center';
114
116
  };
115
117
  export interface MultilineLayoutInput {
116
118
  enabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/types.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export type TextareaProps = Omit<TextInputProps, RemovedTextInputProps> & TextFi
10
10
  interface TextareaLayoutProps {
11
11
  /** default 绘制独立输入表面;plain 嵌入复合输入,保留文字内边距但不绘制表面。 */
12
12
  surface?: 'default' | 'plain';
13
+ /** start 顶对齐;center 以原生自然文字高度居中,保留外层最小触达范围。 */
14
+ contentAlignment?: 'start' | 'center';
13
15
  /** 最小高度,默认 96(约 5 行) */
14
16
  minHeight?: number;
15
17
  /** 最大高度(超过后内部滚动),默认不限制 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,GACrE,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,CAAC;AAEtB,UAAU,mBAAmB;IAC3B,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,GACrE,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,CAAC;AAEtB,UAAU,mBAAmB;IAC3B,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACtC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -2,8 +2,8 @@ export { Avatar } from './Avatar';
2
2
  export type { AvatarProps, AvatarShape, AvatarSize, AvatarVariant, } from './Avatar';
3
3
  export { AvatarGroup } from './AvatarGroup';
4
4
  export type { AvatarGroupItem, AvatarGroupProps } from './AvatarGroup';
5
- export { BlurLayer } from './BlurLayer';
6
- export type { BlurLayerProps } from './BlurLayer';
5
+ export { GlassLayer } from './GlassLayer';
6
+ export type { GlassEffect, GlassLayerProps } from './GlassLayer';
7
7
  export { Button } from './Button';
8
8
  export type { ButtonProps, ButtonSize, ButtonVariant } from './Button';
9
9
  export { Card } from './Card';
@@ -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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"}
@@ -45,12 +45,9 @@ export declare const lightColors: {
45
45
  readonly glassTintLight: "rgba(255,255,255,0.55)";
46
46
  /** 玻璃容器内部分隔线 —— 暗色翻成对应低透白,保证暗底可见。 */
47
47
  readonly glassSeparator: "rgba(0,0,0,0.08)";
48
- /** 浮动玻璃胶囊外区 tint(TabBar 滚动玻璃门)。
49
- * 数值配合 blur.strong(blurAmount=40) 让"玻璃门外区滚动内容透过模糊显示"达成。
50
- * 跟 glassTintLight 区分:此 token 给"玻璃门外区"语义。 */
48
+ /** 玻璃容器的半透明背景,与轻薄染色 glassTintLight 分别表达表面与覆盖层。 */
51
49
  readonly glassSurface: "rgba(255,255,255,0.20)";
52
- /** TabBar 玻璃门 tint —— 跟 glassSurface 区分,真机实测 0.20 太厚看不清滚动内容,
53
- * TabBar 场景配合 blur.soft(blurAmount=10) 主导,语义不同不可复用同一个 alpha。 */
50
+ /** TabBar 的轻薄主题背景;只表达颜色,不定义原生玻璃材质或模糊半径。 */
54
51
  readonly tabBarGlassTint: "rgba(255,255,255,0.10)";
55
52
  /** 玻璃胶囊边框(亮 0.18 / 暗 0.14 白透)。 */
56
53
  readonly glassBorder: "rgba(255,255,255,0.18)";
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/colors.ts"],"names":[],"mappings":"AAEA;wBACwB;AACxB,eAAO,MAAM,YAAY,YAAY,CAAC;AAEtC,eAAO,MAAM,WAAW;;;;;IAMtB,+CAA+C;;IAE/C,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCjC,mDAAmD;;IAEnD;2CACuC;;IAEvC,yDAAyD;;IAEzD,qCAAqC;;IAErC;;kDAE8C;;IAE9C;qEACiE;;IAEjE,kCAAkC;;IAElC,qCAAqC;;IAErC;wDACoD;;IAEpD;+BAC2B;;IAE3B,gEAAgE;;IAIhE,uDAAuD;;IAEvD,wBAAwB;;IAExB,+BAA+B;;IAG/B,+DAA+D;;IAE/D,oDAAoD;;IAOpD,yBAAyB;;IAEzB,sCAAsC;;IAEtC,2EAA2E;;IAG3E;qCACiC;;IAEjC,+BAA+B;;CAEvB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;KAAG,CAAC,IAAI,MAAM,OAAO,WAAW,GAAG,MAAM;CAAE,CAAC;AAEtE,eAAO,MAAM,UAAU,EAAE,WA6FxB,CAAC;AAEF;;kCAEkC;AAClC,eAAO,MAAM,cAAc,iCAAqC,CAAC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/colors.ts"],"names":[],"mappings":"AAEA;wBACwB;AACxB,eAAO,MAAM,YAAY,YAAY,CAAC;AAEtC,eAAO,MAAM,WAAW;;;;;IAMtB,+CAA+C;;IAE/C,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCjC,mDAAmD;;IAEnD;2CACuC;;IAEvC,yDAAyD;;IAEzD,qCAAqC;;IAErC,kDAAkD;;IAElD,2CAA2C;;IAE3C,kCAAkC;;IAElC,qCAAqC;;IAErC;wDACoD;;IAEpD;+BAC2B;;IAE3B,gEAAgE;;IAIhE,uDAAuD;;IAEvD,wBAAwB;;IAExB,+BAA+B;;IAG/B,+DAA+D;;IAE/D,oDAAoD;;IAOpD,yBAAyB;;IAEzB,sCAAsC;;IAEtC,2EAA2E;;IAG3E;qCACiC;;IAEjC,+BAA+B;;CAEvB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;KAAG,CAAC,IAAI,MAAM,OAAO,WAAW,GAAG,MAAM;CAAE,CAAC;AAEtE,eAAO,MAAM,UAAU,EAAE,WA6FxB,CAAC;AAEF;;kCAEkC;AAClC,eAAO,MAAM,cAAc,iCAAqC,CAAC"}
@@ -11,7 +11,5 @@ export { useThemedStyles } from './useThemedStyles';
11
11
  export type { StylesMaker } from './useThemedStyles';
12
12
  export { usePrefersReducedMotion } from './usePrefersReducedMotion';
13
13
  export { fontMono, type, fw, space, radius, avatar, icon, control, dim, fixed, motion, pressedOpacity, } from './tokens';
14
- export { blur } from './blur';
15
- export type { BlurIntensity } from './blur';
16
14
  export { r, rf } from './scale';
17
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,EAAE,EACF,KAAK,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,EACL,MAAM,EACN,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,EAAE,EACF,KAAK,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,EACL,MAAM,EACN,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-design",
3
- "version": "0.34.0",
3
+ "version": "0.36.0",
4
4
  "description": "Unif React Native 设计系统:基础组件、主题、字体和图标",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -79,6 +79,7 @@
79
79
  },
80
80
  "devDependencies": {
81
81
  "@babel/core": "^7.29.7",
82
+ "@callstack/liquid-glass": "0.8.2",
82
83
  "@commitlint/config-conventional": "^21.0.1",
83
84
  "@eslint/compat": "^2.0.3",
84
85
  "@eslint/eslintrc": "^3.3.5",
@@ -91,7 +92,6 @@
91
92
  "@react-native/jest-preset": "0.86.3",
92
93
  "@react-native/metro-config": "0.86.3",
93
94
  "@release-it/conventional-changelog": "^11.0.0",
94
- "@sbaiahmed1/react-native-blur": "6.0.1",
95
95
  "@types/react": "^19.2.0",
96
96
  "commitlint": "^21.0.1",
97
97
  "del-cli": "^7.0.0",
@@ -118,7 +118,7 @@
118
118
  "typescript": "^6.0.2"
119
119
  },
120
120
  "peerDependencies": {
121
- "@sbaiahmed1/react-native-blur": ">=4",
121
+ "@callstack/liquid-glass": ">=0.8.2 <0.9.0",
122
122
  "react": ">=19.2.3 <20.0.0",
123
123
  "react-native": ">=0.86.0",
124
124
  "react-native-gesture-handler": ">=3.0.0 <4.0.0",
@@ -1,15 +1,13 @@
1
1
  import React from 'react';
2
2
  import { Text, View } from 'react-native';
3
- import { BlurLayer } from '../../ui/BlurLayer';
3
+ import { GlassLayer } from '../../ui/GlassLayer';
4
4
  import { useThemedStyles } from '../../../theme';
5
5
  import { makeGlassStatsStyles } from './styles';
6
6
  import type { GlassStatsProps } from './types';
7
7
 
8
8
  /**
9
- * 玻璃数据条 —— BlurLayer 真 backdrop blur + 内部 N 列数据。
10
- *
11
- * BlurLayer 接管 backdrop 双层结构(BlurView soft + glassTintLight tint),
12
- * blurType 跟 scheme 自动切。
9
+ * 玻璃数据条 —— GlassLayer 通透材质 + 内部 N 列数据。
10
+ * 材质、主题和平台降级由 GlassLayer 接管。
13
11
  */
14
12
  export function GlassStats({
15
13
  items,
@@ -23,7 +21,7 @@ export function GlassStats({
23
21
  // 单层 overflow + shadow 在 iOS 上 shadow 完全不可见。
24
22
  <View style={[styles.glassShell, style]} testID={testID}>
25
23
  <View style={styles.glass}>
26
- <BlurLayer intensity="soft" />
24
+ <GlassLayer effect="clear" style={styles.glassLayer} />
27
25
  {/* 顶部 1px inset 白高光,让数据条顶部"凸起" */}
28
26
  <View style={styles.topHighlight} pointerEvents="none" />
29
27
  <View style={styles.inner}>
@@ -9,11 +9,13 @@ import type { ColorTokens, ShadowTokens } from '../../../theme';
9
9
  * iOS Core Animation `masksToBounds=true` 会裁掉 outer shadow。
10
10
  * - `glass`:内层承担 borderRadius + overflow:hidden + border 边线。
11
11
  *
12
- * BlurView + tint 双层由 `<BlurLayer intensity="soft"/>` 接管。 */
12
+ * 玻璃材质与平台降级由 `<GlassLayer effect="clear"/>` 接管。 */
13
13
  export const makeGlassStatsStyles = (c: ColorTokens, s: ShadowTokens) => {
14
14
  /** count 数字 mono display 字号,无对应 type token,保留 rf(20) 走字号缩放(非 r)。 */
15
15
  const countSize = rf(20);
16
16
  return StyleSheet.create({
17
+ // LiquidGlassView 需要自身圆角,父容器的 overflow 裁切不足以定义材质轮廓。
18
+ glassLayer: { borderRadius: radius['2xl'] },
17
19
  glassShell: {
18
20
  borderRadius: radius['2xl'],
19
21
  ...s.glassBar,
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import {
4
+ LiquidGlassView,
5
+ isLiquidGlassSupported,
6
+ } from '@callstack/liquid-glass';
7
+ import { useColors, useTheme } from '../../../theme';
8
+ import type { GlassLayerProps } from './types';
9
+
10
+ /** 装饰玻璃层;不支持原生材质的平台使用主题半透明背景。 */
11
+ export function GlassLayer({
12
+ effect = 'regular',
13
+ tintColor,
14
+ style,
15
+ testID,
16
+ }: GlassLayerProps): React.JSX.Element {
17
+ const c = useColors();
18
+ const { scheme } = useTheme();
19
+ const resolvedTint =
20
+ tintColor ?? (effect === 'clear' ? c.glassTintLight : c.sheetBackdrop);
21
+
22
+ return (
23
+ <LiquidGlassView
24
+ // 支持标记也可能因宿主设计兼容设置关闭,必须显式禁用原生材质。
25
+ effect={isLiquidGlassSupported ? effect : 'none'}
26
+ tintColor={resolvedTint}
27
+ colorScheme={scheme}
28
+ // 纯装饰层无需材质切换动画,也不引入减少动态效果的额外状态。
29
+ animated={false}
30
+ style={[
31
+ StyleSheet.absoluteFill,
32
+ style,
33
+ !isLiquidGlassSupported && { backgroundColor: resolvedTint },
34
+ ]}
35
+ pointerEvents="none"
36
+ accessible={false}
37
+ accessibilityElementsHidden
38
+ importantForAccessibility="no-hide-descendants"
39
+ testID={testID}
40
+ />
41
+ );
42
+ }
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View, type ViewStyle } from 'react-native';
3
+ import { useColors, useTheme } from '../../../theme';
4
+ import { webGlassBlur } from './constants';
5
+ import type { GlassLayerProps } from './types';
6
+
7
+ /** Web 保留 CSS 玻璃近似效果,不加载原生 Liquid Glass 模块。 */
8
+ export function GlassLayer({
9
+ effect = 'regular',
10
+ tintColor,
11
+ style,
12
+ testID,
13
+ }: GlassLayerProps): React.JSX.Element {
14
+ const c = useColors();
15
+ const { scheme } = useTheme();
16
+ const resolvedTint =
17
+ tintColor ?? (effect === 'clear' ? c.glassTintLight : c.sheetBackdrop);
18
+ // RN 类型不含 CSS backdrop-filter。保留原有饱和度和暗色透明度近似值。
19
+ const webGlassStyle: ViewStyle &
20
+ Pick<React.CSSProperties, 'backdropFilter' | 'WebkitBackdropFilter'> = {
21
+ backdropFilter: `blur(${webGlassBlur[effect]}px) saturate(180%)`,
22
+ WebkitBackdropFilter: `blur(${webGlassBlur[effect]}px) saturate(180%)`,
23
+ backgroundColor: resolvedTint,
24
+ opacity: scheme === 'dark' ? 0.96 : 1,
25
+ };
26
+
27
+ return (
28
+ <View
29
+ style={[StyleSheet.absoluteFill, style, webGlassStyle]}
30
+ pointerEvents="none"
31
+ accessible={false}
32
+ accessibilityElementsHidden
33
+ importantForAccessibility="no-hide-descendants"
34
+ testID={testID}
35
+ />
36
+ );
37
+ }
@@ -0,0 +1,2 @@
1
+ /** 仅用于 Web CSS 近似效果的像素值,不表示原生材质的模糊半径。 */
2
+ export const webGlassBlur = { clear: 10, regular: 40 } as const;
@@ -0,0 +1,2 @@
1
+ export { GlassLayer } from './GlassLayer';
2
+ export type { GlassEffect, GlassLayerProps } from './types';
@@ -0,0 +1,14 @@
1
+ import type { ColorValue, StyleProp, ViewStyle } from 'react-native';
2
+
3
+ export type GlassEffect = 'clear' | 'regular';
4
+
5
+ export interface GlassLayerProps {
6
+ /** 玻璃材质,默认 regular;clear 更通透。Web 使用对应的 CSS 近似效果。 */
7
+ effect?: GlassEffect;
8
+ /** 默认 clear 使用 glassTintLight,regular 使用 sheetBackdrop;降级时作为背景色。 */
9
+ tintColor?: ColorValue;
10
+ /** 布局、定位与圆角;默认 absoluteFill,材质颜色通过 tintColor 设置。 */
11
+ style?: StyleProp<ViewStyle>;
12
+ /** E2E / 测试定位。 */
13
+ testID?: string;
14
+ }
@@ -5,7 +5,7 @@ import React, {
5
5
  useImperativeHandle,
6
6
  useState,
7
7
  } from 'react';
8
- import { Platform, Text, TextInput, View } from 'react-native';
8
+ import { Platform, Pressable, Text, TextInput, View } from 'react-native';
9
9
  import type { TextInputProps } from 'react-native';
10
10
  import { fixed, useColors, useThemedStyles } from '../../../theme';
11
11
  import { childTestID } from '../../../utils/testID';
@@ -41,6 +41,7 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
41
41
  maxHeight,
42
42
  searchLayout,
43
43
  plainSurface,
44
+ contentAlignment = 'start',
44
45
  leading,
45
46
  trailing,
46
47
  error,
@@ -105,14 +106,16 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
105
106
  maxHeight
106
107
  );
107
108
  const plain = multiline && plainSurface === true;
109
+ const centered = multiline && contentAlignment === 'center';
110
+ const verticalInset = plain
111
+ ? TEXTAREA_PLAIN_VERTICAL_INSET
112
+ : TEXTAREA_VERTICAL_INSET;
108
113
  const multilineLayout = useMultilineLayout({
109
114
  enabled: multiline,
110
115
  value: controller.value,
111
- minHeight: normalizedTextareaHeights.minHeight,
116
+ minHeight: centered ? verticalInset : normalizedTextareaHeights.minHeight,
112
117
  maxHeight: normalizedTextareaHeights.maxHeight,
113
- verticalInset: plain
114
- ? TEXTAREA_PLAIN_VERTICAL_INSET
115
- : TEXTAREA_VERTICAL_INSET,
118
+ verticalInset,
116
119
  fontSize: styles.input.fontSize,
117
120
  placeholder: allowedNativeProps.placeholder as string | undefined,
118
121
  inputRef: nativeRef,
@@ -179,6 +182,7 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
179
182
  style={[
180
183
  styles.wrap,
181
184
  multiline && styles.wrapMultiline,
185
+ centered && styles.wrapCentered,
182
186
  searchLayout === undefined && !plain && wrapStateStyles,
183
187
  searchLayout !== undefined && styles.searchInteractiveRow,
184
188
  plain && styles.wrapPlain,
@@ -192,6 +196,20 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
192
196
  : { height: interactiveHeight },
193
197
  ]}
194
198
  >
199
+ {centered ? (
200
+ <Pressable
201
+ accessible={false}
202
+ focusable={false}
203
+ tabIndex={-1}
204
+ importantForAccessibility="no"
205
+ style={styles.focusSurface}
206
+ disabled={!effectiveEditable}
207
+ onPress={() => {
208
+ if (effectiveEditable) nativeRef.current?.focus();
209
+ }}
210
+ testID={childTestID(testID, 'focus-surface')}
211
+ />
212
+ ) : null}
195
213
  {searchLayout ? (
196
214
  <View
197
215
  pointerEvents="none"
@@ -236,6 +254,7 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
236
254
  }}
237
255
  style={[
238
256
  styles.input,
257
+ centered && styles.inputCentered,
239
258
  multiline && styles.inputMultiline,
240
259
  multiline &&
241
260
  (multilineLayout.scrollEnabled
@@ -2,6 +2,6 @@ import { space } from '../../../theme';
2
2
 
3
3
  export const TEXT_FIELD_BORDER_WIDTH = 1;
4
4
  export const TEXTAREA_VERTICAL_PADDING = space[4];
5
- export const TEXTAREA_PLAIN_VERTICAL_INSET = 2 * TEXTAREA_VERTICAL_PADDING;
5
+ export const TEXTAREA_PLAIN_VERTICAL_INSET = 2 * space[3];
6
6
  export const TEXTAREA_VERTICAL_INSET =
7
- TEXTAREA_PLAIN_VERTICAL_INSET + 2 * TEXT_FIELD_BORDER_WIDTH;
7
+ 2 * TEXTAREA_VERTICAL_PADDING + 2 * TEXT_FIELD_BORDER_WIDTH;
@@ -21,7 +21,12 @@ export const makeStyles = (c: ColorTokens) =>
21
21
  paddingVertical: TEXTAREA_VERTICAL_PADDING,
22
22
  alignItems: 'flex-start',
23
23
  },
24
+ wrapCentered: { alignItems: 'center' },
25
+ focusSurface: StyleSheet.absoluteFill,
26
+ inputCentered: { position: 'relative', zIndex: 1 },
24
27
  wrapPlain: {
28
+ paddingHorizontal: space[3],
29
+ paddingVertical: space[3],
25
30
  backgroundColor: 'transparent',
26
31
  borderWidth: 0,
27
32
  borderRadius: 0,
@@ -135,6 +135,8 @@ export type TextFieldBaseProps = Omit<TextInputProps, RemovedTextInputProps> &
135
135
  searchLayout?: SearchFieldLayout;
136
136
  /** internal:仅由 Textarea 的公开 surface 选择,无独立表面的多行输入。 */
137
137
  plainSurface?: boolean;
138
+ /** internal:Textarea 的文字对齐;不改变单行控件。 */
139
+ contentAlignment?: 'start' | 'center';
138
140
  };
139
141
 
140
142
  export interface MultilineLayoutInput {
@@ -19,6 +19,8 @@ export type TextareaProps = Omit<TextInputProps, RemovedTextInputProps> &
19
19
  interface TextareaLayoutProps {
20
20
  /** default 绘制独立输入表面;plain 嵌入复合输入,保留文字内边距但不绘制表面。 */
21
21
  surface?: 'default' | 'plain';
22
+ /** start 顶对齐;center 以原生自然文字高度居中,保留外层最小触达范围。 */
23
+ contentAlignment?: 'start' | 'center';
22
24
  /** 最小高度,默认 96(约 5 行) */
23
25
  minHeight?: number;
24
26
  /** 最大高度(超过后内部滚动),默认不限制 */
@@ -7,8 +7,8 @@ export type {
7
7
  } from './Avatar';
8
8
  export { AvatarGroup } from './AvatarGroup';
9
9
  export type { AvatarGroupItem, AvatarGroupProps } from './AvatarGroup';
10
- export { BlurLayer } from './BlurLayer';
11
- export type { BlurLayerProps } from './BlurLayer';
10
+ export { GlassLayer } from './GlassLayer';
11
+ export type { GlassEffect, GlassLayerProps } from './GlassLayer';
12
12
  export { Button } from './Button';
13
13
  export type { ButtonProps, ButtonSize, ButtonVariant } from './Button';
14
14
  export { Card } from './Card';
@@ -61,12 +61,9 @@ export const lightColors = {
61
61
  glassTintLight: 'rgba(255,255,255,0.55)',
62
62
  /** 玻璃容器内部分隔线 —— 暗色翻成对应低透白,保证暗底可见。 */
63
63
  glassSeparator: 'rgba(0,0,0,0.08)',
64
- /** 浮动玻璃胶囊外区 tint(TabBar 滚动玻璃门)。
65
- * 数值配合 blur.strong(blurAmount=40) 让"玻璃门外区滚动内容透过模糊显示"达成。
66
- * 跟 glassTintLight 区分:此 token 给"玻璃门外区"语义。 */
64
+ /** 玻璃容器的半透明背景,与轻薄染色 glassTintLight 分别表达表面与覆盖层。 */
67
65
  glassSurface: 'rgba(255,255,255,0.20)',
68
- /** TabBar 玻璃门 tint —— 跟 glassSurface 区分,真机实测 0.20 太厚看不清滚动内容,
69
- * TabBar 场景配合 blur.soft(blurAmount=10) 主导,语义不同不可复用同一个 alpha。 */
66
+ /** TabBar 的轻薄主题背景;只表达颜色,不定义原生玻璃材质或模糊半径。 */
70
67
  tabBarGlassTint: 'rgba(255,255,255,0.10)',
71
68
  /** 玻璃胶囊边框(亮 0.18 / 暗 0.14 白透)。 */
72
69
  glassBorder: 'rgba(255,255,255,0.18)',
@@ -170,9 +167,9 @@ export const darkColors: ColorTokens = {
170
167
  // 暗色 0.06 白透,凸起感由 glassBar 暗色黑 0.35 shadow 补
171
168
  glassTintLight: 'rgba(255,255,255,0.06)',
172
169
  glassSeparator: 'rgba(255,255,255,0.10)',
173
- // 深灰半透 0.30,配合 blur.strong(blurAmount=40) 让"玻璃门"语义达成
170
+ // 暗色玻璃容器沿用深灰半透明背景。
174
171
  glassSurface: 'rgba(28,28,30,0.30)',
175
- // 配合 blur.soft(blurAmount=10) 让内容透过模糊带 alpha 染色
172
+ // TabBar 沿用独立的轻薄染色。
176
173
  tabBarGlassTint: 'rgba(28,28,30,0.18)',
177
174
  glassBorder: 'rgba(255,255,255,0.14)',
178
175
  glassHighlight: 'rgba(255,255,255,0.24)',
@@ -35,7 +35,4 @@ export {
35
35
  pressedOpacity,
36
36
  } from './tokens';
37
37
 
38
- export { blur } from './blur';
39
- export type { BlurIntensity } from './blur';
40
-
41
38
  export { r, rf } from './scale';
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- import React from 'react';
4
- import { StyleSheet, View } from 'react-native';
5
- import { BlurView } from '@sbaiahmed1/react-native-blur';
6
- import { blur as blurTokens, useColors, useTheme } from "../../../theme/index.js";
7
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
- /** Blur backdrop 双层 —— BlurView + tint。
9
- *
10
- * blurType 跟 scheme 自动切(亮 'light' / 暗 'dark',避免暗色奶白雾)。
11
- *
12
- * - `'soft'` 玻璃数据条 / 小区域
13
- * - `'strong'` 焦点引导 backdrop(sheet 类浮层) */
14
- export function BlurLayer({
15
- intensity,
16
- tint,
17
- style,
18
- testID
19
- }) {
20
- const c = useColors();
21
- const {
22
- scheme
23
- } = useTheme();
24
- const blurType = scheme === 'dark' ? 'dark' : 'light';
25
- const defaultTint = intensity === 'strong' ? c.sheetBackdrop : c.glassTintLight;
26
- return /*#__PURE__*/_jsxs(View, {
27
- style: [StyleSheet.absoluteFill, style],
28
- pointerEvents: "none",
29
- testID: testID,
30
- children: [/*#__PURE__*/_jsx(BlurView, {
31
- style: StyleSheet.absoluteFill,
32
- blurType: blurType,
33
- blurAmount: blurTokens[intensity]
34
- // iOS「降低透明度」开启时 BlurView 用纯色替换模糊;库默认 #FFFFFF 在暗色 scheme
35
- // 下整面刺眼白底。传随 scheme 的 surface 色,与下方 tint 层视觉一致([M-6])。
36
- ,
37
- reducedTransparencyFallbackColor: c.surface
38
- }), /*#__PURE__*/_jsx(View, {
39
- style: [StyleSheet.absoluteFill, {
40
- backgroundColor: tint ?? defaultTint
41
- }]
42
- })]
43
- });
44
- }
45
- //# sourceMappingURL=BlurLayer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","StyleSheet","View","BlurView","blur","blurTokens","useColors","useTheme","jsx","_jsx","jsxs","_jsxs","BlurLayer","intensity","tint","style","testID","c","scheme","blurType","defaultTint","sheetBackdrop","glassTintLight","absoluteFill","pointerEvents","children","blurAmount","reducedTransparencyFallbackColor","surface","backgroundColor"],"sourceRoot":"../../../../../src","sources":["components/ui/BlurLayer/BlurLayer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,QAAQ,QAAQ,+BAA+B;AACxD,SAASC,IAAI,IAAIC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGzE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAC;EACxBC,SAAS;EACTC,IAAI;EACJC,KAAK;EACLC;AACc,CAAC,EAAqB;EACpC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAM;IAAEY;EAAO,CAAC,GAAGX,QAAQ,CAAC,CAAC;EAC7B,MAAMY,QAAQ,GAAGD,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;EACrD,MAAME,WAAW,GACfP,SAAS,KAAK,QAAQ,GAAGI,CAAC,CAACI,aAAa,GAAGJ,CAAC,CAACK,cAAc;EAE7D,oBACEX,KAAA,CAACT,IAAI;IACHa,KAAK,EAAE,CAACd,UAAU,CAACsB,YAAY,EAAER,KAAK,CAAE;IACxCS,aAAa,EAAC,MAAM;IACpBR,MAAM,EAAEA,MAAO;IAAAS,QAAA,gBAEfhB,IAAA,CAACN,QAAQ;MACPY,KAAK,EAAEd,UAAU,CAACsB,YAAa;MAC/BJ,QAAQ,EAAEA,QAAS;MACnBO,UAAU,EAAErB,UAAU,CAACQ,SAAS;MAChC;MACA;MAAA;MACAc,gCAAgC,EAAEV,CAAC,CAACW;IAAQ,CAC7C,CAAC,eACFnB,IAAA,CAACP,IAAI;MACHa,KAAK,EAAE,CACLd,UAAU,CAACsB,YAAY,EACvB;QAAEM,eAAe,EAAEf,IAAI,IAAIM;MAAY,CAAC;IACxC,CACH,CAAC;EAAA,CACE,CAAC;AAEX","ignoreList":[]}