@unif/react-native-design 0.31.3 → 0.32.1

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 (165) hide show
  1. package/README.md +23 -171
  2. package/lib/module/components/ui/Avatar/Avatar.js +2 -1
  3. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  4. package/lib/module/components/ui/Avatar/geometry.js +43 -0
  5. package/lib/module/components/ui/Avatar/geometry.js.map +1 -0
  6. package/lib/module/components/ui/Avatar/styles.js +1 -41
  7. package/lib/module/components/ui/Avatar/styles.js.map +1 -1
  8. package/lib/module/components/ui/AvatarGroup/AvatarGroup.js +1 -1
  9. package/lib/module/components/ui/AvatarGroup/AvatarGroup.js.map +1 -1
  10. package/lib/module/components/ui/CircularProgress/CircularProgress.js +14 -25
  11. package/lib/module/components/ui/CircularProgress/CircularProgress.js.map +1 -1
  12. package/lib/module/components/ui/CircularProgress/normalizeCircularProgress.js.map +1 -1
  13. package/lib/module/components/ui/CircularProgress/styles.js +24 -0
  14. package/lib/module/components/ui/CircularProgress/styles.js.map +1 -0
  15. package/lib/module/components/ui/Pulse/PulseDot.js +5 -5
  16. package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
  17. package/lib/module/components/ui/Pulse/constants.js +15 -0
  18. package/lib/module/components/ui/Pulse/constants.js.map +1 -0
  19. package/lib/module/components/ui/Pulse/usePulse.js +4 -62
  20. package/lib/module/components/ui/Pulse/usePulse.js.map +1 -1
  21. package/lib/module/components/ui/Skeleton/Skeleton.js +6 -2
  22. package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
  23. package/lib/module/components/ui/Skeleton/constants.js +9 -0
  24. package/lib/module/components/ui/Skeleton/constants.js.map +1 -0
  25. package/lib/module/components/ui/TextField/TextFieldBase.js +21 -4
  26. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  27. package/lib/module/components/ui/TextField/constants.js +7 -0
  28. package/lib/module/components/ui/TextField/constants.js.map +1 -0
  29. package/lib/module/components/ui/TextField/styles.js +10 -2
  30. package/lib/module/components/ui/TextField/styles.js.map +1 -1
  31. package/lib/module/components/ui/TextField/useMultilineLayout.js +18 -0
  32. package/lib/module/components/ui/TextField/useMultilineLayout.js.map +1 -0
  33. package/lib/module/components/ui/TextField/useMultilineLayout.web.js +44 -0
  34. package/lib/module/components/ui/TextField/useMultilineLayout.web.js.map +1 -0
  35. package/lib/module/components/ui/Thumbnail/Thumbnail.js +13 -6
  36. package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
  37. package/lib/module/components/ui/Thumbnail/constants.js +22 -0
  38. package/lib/module/components/ui/Thumbnail/constants.js.map +1 -0
  39. package/lib/module/components/ui/Thumbnail/normalize.js +30 -1
  40. package/lib/module/components/ui/Thumbnail/normalize.js.map +1 -1
  41. package/lib/module/components/ui/Thumbnail/styles.js +5 -28
  42. package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
  43. package/lib/module/components/ui/index.js.map +1 -1
  44. package/lib/module/components/ui/shared/pulse/constants.js +5 -0
  45. package/lib/module/components/ui/shared/pulse/constants.js.map +1 -0
  46. package/lib/module/components/ui/{Pulse → shared/pulse}/normalizePulseOptions.js +2 -12
  47. package/lib/module/components/ui/shared/pulse/normalizePulseOptions.js.map +1 -0
  48. package/lib/module/components/ui/shared/pulse/types.js +2 -0
  49. package/lib/module/components/ui/shared/pulse/types.js.map +1 -0
  50. package/lib/module/components/ui/shared/pulse/usePulseAnimation.js +30 -0
  51. package/lib/module/components/ui/shared/pulse/usePulseAnimation.js.map +1 -0
  52. package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.js +1 -1
  53. package/lib/module/components/ui/shared/pulse/usePulseDriver.js.map +1 -0
  54. package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.js +2 -17
  55. package/lib/module/components/ui/shared/pulse/usePulseDriver.web.js.map +1 -0
  56. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
  57. package/lib/typescript/src/components/ui/Avatar/geometry.d.ts +7 -0
  58. package/lib/typescript/src/components/ui/Avatar/geometry.d.ts.map +1 -0
  59. package/lib/typescript/src/components/ui/Avatar/styles.d.ts +1 -9
  60. package/lib/typescript/src/components/ui/Avatar/styles.d.ts.map +1 -1
  61. package/lib/typescript/src/components/ui/Avatar/types.d.ts +7 -2
  62. package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
  63. package/lib/typescript/src/components/ui/CircularProgress/CircularProgress.d.ts.map +1 -1
  64. package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts +2 -14
  65. package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts.map +1 -1
  66. package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts +19 -0
  67. package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts.map +1 -0
  68. package/lib/typescript/src/components/ui/CircularProgress/types.d.ts +17 -2
  69. package/lib/typescript/src/components/ui/CircularProgress/types.d.ts.map +1 -1
  70. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
  71. package/lib/typescript/src/components/ui/Pulse/constants.d.ts +4 -0
  72. package/lib/typescript/src/components/ui/Pulse/constants.d.ts.map +1 -0
  73. package/lib/typescript/src/components/ui/Pulse/types.d.ts +6 -6
  74. package/lib/typescript/src/components/ui/Pulse/types.d.ts.map +1 -1
  75. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts +0 -9
  76. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts.map +1 -1
  77. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
  78. package/lib/typescript/src/components/ui/Skeleton/constants.d.ts +3 -0
  79. package/lib/typescript/src/components/ui/Skeleton/constants.d.ts.map +1 -0
  80. package/lib/typescript/src/components/ui/Skeleton/types.d.ts +2 -2
  81. package/lib/typescript/src/components/ui/Skeleton/types.d.ts.map +1 -1
  82. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  83. package/lib/typescript/src/components/ui/TextField/constants.d.ts +4 -0
  84. package/lib/typescript/src/components/ui/TextField/constants.d.ts.map +1 -0
  85. package/lib/typescript/src/components/ui/TextField/styles.d.ts +6 -0
  86. package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
  87. package/lib/typescript/src/components/ui/TextField/types.d.ts +36 -11
  88. package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
  89. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts +4 -0
  90. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts.map +1 -0
  91. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts +4 -0
  92. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts.map +1 -0
  93. package/lib/typescript/src/components/ui/Textarea/types.d.ts +4 -2
  94. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  95. package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
  96. package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts +4 -0
  97. package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts.map +1 -0
  98. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts +1 -1
  99. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts.map +1 -1
  100. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts +2 -6
  101. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts.map +1 -1
  102. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +9 -8
  103. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
  104. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts +23 -5
  105. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts.map +1 -1
  106. package/lib/typescript/src/components/ui/index.d.ts +1 -1
  107. package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
  108. package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts +2 -0
  109. package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts.map +1 -0
  110. package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts +7 -0
  111. package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts.map +1 -0
  112. package/lib/typescript/src/components/ui/shared/pulse/types.d.ts +17 -0
  113. package/lib/typescript/src/components/ui/shared/pulse/types.d.ts.map +1 -0
  114. package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts +8 -0
  115. package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts.map +1 -0
  116. package/lib/typescript/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.d.ts +1 -1
  117. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.d.ts.map +1 -0
  118. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts +7 -0
  119. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts.map +1 -0
  120. package/package.json +2 -2
  121. package/src/components/ui/Avatar/Avatar.tsx +2 -6
  122. package/src/components/ui/Avatar/geometry.ts +30 -0
  123. package/src/components/ui/Avatar/styles.ts +2 -30
  124. package/src/components/ui/Avatar/types.ts +8 -2
  125. package/src/components/ui/AvatarGroup/AvatarGroup.tsx +1 -1
  126. package/src/components/ui/CircularProgress/CircularProgress.tsx +20 -26
  127. package/src/components/ui/CircularProgress/normalizeCircularProgress.ts +7 -15
  128. package/src/components/ui/CircularProgress/styles.ts +13 -0
  129. package/src/components/ui/CircularProgress/types.ts +19 -2
  130. package/src/components/ui/Pulse/PulseDot.tsx +6 -5
  131. package/src/components/ui/Pulse/constants.ts +14 -0
  132. package/src/components/ui/Pulse/types.ts +6 -6
  133. package/src/components/ui/Pulse/usePulse.ts +4 -81
  134. package/src/components/ui/Skeleton/Skeleton.tsx +6 -6
  135. package/src/components/ui/Skeleton/constants.ts +8 -0
  136. package/src/components/ui/Skeleton/types.ts +2 -2
  137. package/src/components/ui/TextField/TextFieldBase.tsx +28 -4
  138. package/src/components/ui/TextField/constants.ts +6 -0
  139. package/src/components/ui/TextField/styles.ts +8 -2
  140. package/src/components/ui/TextField/types.ts +41 -11
  141. package/src/components/ui/TextField/useMultilineLayout.ts +20 -0
  142. package/src/components/ui/TextField/useMultilineLayout.web.ts +59 -0
  143. package/src/components/ui/Textarea/types.ts +9 -6
  144. package/src/components/ui/Thumbnail/Thumbnail.tsx +19 -5
  145. package/src/components/ui/Thumbnail/constants.ts +24 -0
  146. package/src/components/ui/Thumbnail/index.ts +1 -0
  147. package/src/components/ui/Thumbnail/normalize.ts +38 -19
  148. package/src/components/ui/Thumbnail/styles.ts +6 -17
  149. package/src/components/ui/Thumbnail/types.ts +27 -5
  150. package/src/components/ui/index.ts +1 -0
  151. package/src/components/ui/shared/pulse/constants.ts +2 -0
  152. package/src/components/ui/shared/pulse/normalizePulseOptions.ts +48 -0
  153. package/src/components/ui/shared/pulse/types.ts +18 -0
  154. package/src/components/ui/shared/pulse/usePulseAnimation.ts +29 -0
  155. package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.ts +2 -2
  156. package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.ts +4 -19
  157. package/lib/module/components/ui/Pulse/normalizePulseOptions.js.map +0 -1
  158. package/lib/module/components/ui/Pulse/usePulseDriver.js.map +0 -1
  159. package/lib/module/components/ui/Pulse/usePulseDriver.web.js.map +0 -1
  160. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts +0 -32
  161. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts.map +0 -1
  162. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts.map +0 -1
  163. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts +0 -18
  164. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts.map +0 -1
  165. package/src/components/ui/Pulse/normalizePulseOptions.ts +0 -76
package/README.md CHANGED
@@ -1,18 +1,8 @@
1
1
  # @unif/react-native-design
2
2
 
3
- [![npm](https://img.shields.io/npm/v/@unif/react-native-design.svg?color=cb3837&logo=npm)](https://www.npmjs.com/package/@unif/react-native-design)
4
- [![CI](https://github.com/unif-design/react-native-design/actions/workflows/ci.yml/badge.svg)](https://github.com/unif-design/react-native-design/actions/workflows/ci.yml)
5
- [![License](https://img.shields.io/npm/l/@unif/react-native-design.svg?color=blue)](LICENSE)
6
- [![Docs](https://img.shields.io/badge/docs-unif--design.github.io-orange.svg)](https://unif-design.github.io/react-native-design/)
3
+ Unif 的 React Native 设计系统,提供基础组件、主题、字体、图标和通用 UI 组合。
7
4
 
8
- Unif 设计系统 —— theme(设计令牌)+ 组件 + 图标 + utils,面向 React Native 0.86+ 新架构(Fabric + TurboModule)。所有 Unif 应用与端能力包的 UI 基座。
9
-
10
- ## 特性
11
-
12
- - **运行时主题**:`useColors()` 角色 token 跟随系统 light/dark 自动切换;`useThemedStyles` + 模块顶层 `makeStyles` 缓存样式,绝不内联 hex。
13
- - **40+ 组件**:Button、Card、Ribbon、Cell、NavBar、Toast 等原子组件 + AvatarWithRing、GlassStats 等通用复合组件,全部从包根 barrel 导出,无需深路径。
14
- - **a11y 内建**:交互组件预设 `accessibilityRole`;`IconButton` 的 `accessibilityLabel` 为类型必填。
15
- - **图标集 + 严格 TS**:`IconName` 闭集类型、`<Icon>` 自动继承主题色;`strict` + `noUncheckedIndexedAccess`,类型随包发布。
5
+ [文档站](https://unif-design.github.io/react-native-design/) · [npm](https://www.npmjs.com/package/@unif/react-native-design) · [组件展厅](example/README.md)
16
6
 
17
7
  ## 安装
18
8
 
@@ -20,178 +10,40 @@ Unif 设计系统 —— theme(设计令牌)+ 组件 + 图标 + utils,面向 Rea
20
10
  yarn add @unif/react-native-design
21
11
  ```
22
12
 
23
- 本库不打包原生依赖,宿主工程需自行安装下列 peer 并完成原生侧配置:
24
-
25
- ```sh
26
- yarn add react-native-svg \
27
- react-native-gesture-handler \
28
- react-native-reanimated \
29
- react-native-worklets \
30
- react-native-safe-area-context \
31
- react-native-reanimated-carousel \
32
- @sbaiahmed1/react-native-blur
33
- ```
34
-
35
- iOS 另需在 `ios/` 执行 `bundle exec pod install`。完整步骤见[文档站 · 快速开始](https://unif-design.github.io/react-native-design/docs/getting-started)。
36
-
37
- `react-native-worklets` 的 Babel 插件与 Metro transformer 由宿主工程提供,不随本库分发 —— 宿主需自备与自身 RN 版本匹配的 `@babel/core`、`@react-native/babel-preset`、`@react-native/metro-config`;本仓验证组合为 RN `0.86.3` 与对应的 `0.86.3` 工具链。
38
-
39
- `react-native-reanimated-carousel@5.0.0` 发布的 RNGH peer 是 `>=2.9.0 <3.0.0`,与本包要求的 `>=3.0.0 <4.0.0` 无交集;该组合已实测适配。消费端只能**接受这条警告**或加**只作用于 Carousel 的窄 override**(npm `overrides`、pnpm `peerDependencyRules.allowedVersions`、Yarn scoped `logFilters`),不要用全局 peer 忽略、`--force` 或 `--legacy-peer-deps`。本仓不使用全局 `logFilters`;`yarn check:runtime-peers` 只接受 root、example、website 三条精确的 RNRC 5 / RNGH 3 例外。
13
+ 按[接入指南](website/docs/getting-started.md)安装 peer 依赖并完成原生与 Worklets 配置。支持范围见 [package.json](package.json),本库面向 React Native 新架构。
40
14
 
41
15
  ## 快速开始
42
16
 
43
- App 根必须按 `GestureHandlerRootView → SafeAreaProvider → ThemeProvider → App 内容 + Hosts` 装配;`SafeAreaProvider` 从其 peer 包导入,设计系统 API 继续只从包根导入。`makeStyles` 必须写在模块顶层:
17
+ 应用根接入主题、手势和安全区,再从包根导入组件:
44
18
 
45
19
  ```tsx
46
- import {
47
- ThemeProvider,
48
- ToastHost,
49
- ConfirmHost,
50
- Button,
51
- useThemedStyles,
52
- type ColorTokens,
53
- } from '@unif/react-native-design';
54
- import { View } from 'react-native';
20
+ import { Button, ThemeProvider } from '@unif/react-native-design';
55
21
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
56
22
  import { SafeAreaProvider } from 'react-native-safe-area-context';
57
23
 
58
- // inline 会破坏 useThemedStyles 的样式缓存
59
- const makeStyles = (c: ColorTokens) => ({
60
- wrap: { padding: 16, backgroundColor: c.surface },
61
- });
62
-
63
- function Demo() {
64
- const styles = useThemedStyles(makeStyles);
24
+ export function App() {
65
25
  return (
66
- <View style={styles.wrap}>
67
- <Button label="保存" onPress={() => {}} />
68
- </View>
26
+ <GestureHandlerRootView style={{ flex: 1 }}>
27
+ <SafeAreaProvider>
28
+ <ThemeProvider>
29
+ <Button label="保存" onPress={() => {}} />
30
+ </ThemeProvider>
31
+ </SafeAreaProvider>
32
+ </GestureHandlerRootView>
69
33
  );
70
34
  }
71
-
72
- export const App = () => (
73
- <GestureHandlerRootView style={{ flex: 1 }}>
74
- <SafeAreaProvider>
75
- <ThemeProvider>
76
- <Demo />
77
- <ToastHost />
78
- <ConfirmHost />
79
- </ThemeProvider>
80
- </SafeAreaProvider>
81
- </GestureHandlerRootView>
82
- );
83
- ```
84
-
85
- ## RN 0.86.3 组件展厅
86
-
87
- 仓库内的持久 `example/` 是 `@unif/react-native-design-example` workspace:它精确使用
88
- React Native `0.86.3`、React `19.2.3`、New Architecture 和 Hermes,并通过 Metro
89
- 直接消费本仓 public package root。展厅只挂载当前路由,共有以下 8 个 scene:
90
-
91
- | Scene ID | 标题 | 主要覆盖 |
92
- | ------------- | -------------- | --------------------------------------------- |
93
- | `foundation` | 基础能力与图标 | Theme、token、Icon、logger、testID |
94
- | `actions` | 操作与状态 | Button、IconButton、Chip、Tag、StatusDot |
95
- | `feedback` | 反馈与浮层 | Empty、动效、Blur、Toast、Confirm |
96
- | `forms` | 表单与输入 | 文本输入、选择控件、Stepper(xs 为横向触控 < 44pt 的紧凑档)、Form |
97
- | `navigation` | 导航组件 | NavBar、DrawerHeader、Tabs、Segmented、TabBar |
98
- | `collections` | 容器与集合 | Card、Ribbon、Cell、List、Grid、EntryCard、Carousel |
99
- | `media` | 媒体展示 | Avatar、AvatarGroup、Thumbnail、Logo 与图片失败边界 |
100
- | `business` | 业务复合组件 | 渐变、背景、统计、头像环、版本状态 |
101
-
102
- 从仓库根目录执行:
103
-
104
- ```sh
105
- yarn install --immutable
106
- yarn example start
107
- yarn example android
108
- yarn example ios
109
-
110
- yarn verify:example-showcase
111
- yarn example typecheck
112
- yarn example lint
113
- yarn example test --maxWorkers=2
114
- ```
115
-
116
- iOS 首次运行或 native 依赖变化后,先执行
117
- `cd example && bundle install`,再执行
118
- `cd example && bundle exec pod install --project-directory=ios`。完整启动步骤、主题与
119
- fontScale 操作,以及 VoiceOver/TalkBack、真机、旋转、remote image failure 等尚需人工
120
- 执行的矩阵见 [`example/README.md`](example/README.md)。自动化结果不等同于真机或 a11y
121
- 验收通过。
122
-
123
- Media 默认 success fixture 是项目部署的
124
- `https://unif-design.github.io/react-native-design/img/logo.png`,failure specimen 使用固定的
125
- invalid-image fixture
126
- `https://unif-design.github.io/react-native-design/example-fixtures/media-decode-failure-v1.png`,
127
- 确保 HTTP 成功后仍稳定进入 native decode failure/fallback 分支。
128
- Jest 只证明 source wiring 以及合成 load/error event 后的组件状态;真实 HTTPS、缓存和 native
129
- decode 仍按 `example/README.md` 的 Android/iOS 手工矩阵标记为待执行。
130
-
131
- ## 文档
132
-
133
- - **文档站**(快速开始 · 组件 API · 设计令牌 · 设计原则):https://unif-design.github.io/react-native-design/
134
- - **在宿主工程里测试**(一行接入 `@unif/react-native-design/jest-preset`):
135
- https://unif-design.github.io/react-native-design/docs/testing
136
- - **AI / LLM**(纯 Markdown,按需 fetch,别凭记忆猜 API):
137
- [llms.txt 索引](https://unif-design.github.io/react-native-design/llms.txt) · [llms-full.txt 全文](https://unif-design.github.io/react-native-design/llms-full.txt)
138
- - **Agent Skill** `design`(`unif` plugin,覆盖组件 API、token 规则、与原生 RN 的关键差异):
139
- `/plugin marketplace add unif-design/skills` → `/plugin install unif@skills`
140
-
141
- ## 临时原生验证宿主(runtime harness)
142
-
143
- ```sh
144
- yarn create:runtime-harness
145
35
  ```
146
36
 
147
- 该命令**现场生成**一个一次性的 RN `0.86.3` app,用于人工验证 Jest 覆盖不到的部分:真实 native / Web 结构、44pt 命中框、a11y tree、reduced motion 与命令式 API 的竞态。
148
-
149
- 它做的事:
150
-
151
- 1. `yarn prepare` + `yarn pack` 打包**当前源码**,harness 装的是 `file:` tarball,不是 registry 上的版本;
152
- 2. 用 `yarn.lock` 里钉死的官方 `@react-native-community/cli@20.1.0` + `@react-native-community/template@0.86.3` 生成脚手架 —— 两者的版本、template 自带的 React / RN / CLI 版本、以及锁文件里的 `checksum` 都会先校验,任一不符立即失败;
153
- 3. 枚举根 `peerDependencies` 的**每一个**非 optional 项,从根 direct range 精确匹配 `yarn.lock` locator,并交叉验证 installed version 与 peer range;`@babel/core` / `@react-native/metro-config` 也走同一链路,在首次安装前写成精确版本;
154
- 4. 配好 Babel(`react-native-worklets/plugin` 排最后)、Metro、RNGH root import,拷入 `manual-tests/runtime-api/RuntimeApiScreen.tsx`,并逐文件核对生成的 Podfile / Android Gradle 文件与 installed template 捕获的摘要;
155
- 5. 首次 `yarn install` 只在脚本自持的临时 app 内生成 `yarn.lock`,随后立即以同一 manifest / lock 执行 `yarn install --immutable` 最终复验,再执行 `bundle install` + `bundle exec pod install`;完整流程成功后才保留并打印绝对路径与全部 provider 版本。
156
-
157
- 边界:
158
-
159
- - app 只建在**脚本自持的系统临时目录**里(`fs.mkdtempSync`),**不接受调用方传目录**;脚手架之后的任一步失败也会递归删除自己那一个临时路径,只有完整成功才保留。
160
- - **完全不读、不写、不复制持久 `example/`** —— 两者职责不同:`example/` 提供公共面
161
- coverage 与可运行 RN `0.86.3` native shell;临时 runtime harness 专门验证 packed
162
- tarball、负向路径与竞态,不替代展厅。
163
- - 生成物不入库。
164
-
165
- 随后在**打印出来的那个目录**里执行(不是在本仓):
166
-
167
- ```sh
168
- yarn android
169
- yarn ios
170
- ```
171
-
172
- harness 不继承本仓 `check:runtime-peers` 的 workspace 精确 allowlist;安装输出会如实暴露这条已知的 RNRC / RNGH peer warning,等同消费端实际可见结果。
173
-
174
- ## 兼容性
175
-
176
- 支持范围严格来自 `package.json#peerDependencies`;本仓直接验证的版本是 RN `0.86.3` + React `19.2.3`。
177
-
178
- | 依赖 | 支持范围 | 本仓验证版本 |
179
- | ---------------------------------- | ------------------ | ------------ |
180
- | `react-native` | `>=0.86.0` | `0.86.3` |
181
- | `react` | `>=19.2.3 <20.0.0` | `19.2.3` |
182
- | `react-native-gesture-handler` | `>=3.0.0 <4.0.0` | `3.1.0` |
183
- | `react-native-reanimated` | `>=4.5.2 <4.7.0` | `4.6.0` |
184
- | `react-native-worklets` | `>=0.11.0 <0.13.0` | `0.12.1` |
185
- | `react-native-reanimated-carousel` | `>=5.0.0 <6.0.0` | `5.0.0` |
186
- | `react-native-safe-area-context` | `>=5` | `5.8.0` |
187
- | `react-native-svg` | `>=15` | `15.15.5` |
188
- | `@sbaiahmed1/react-native-blur` | `>=4` | `6.0.1` |
37
+ 需要 Toast 或 Confirm 时再接入对应 Host。组件继承主题与应用字号;主题 API、组件参数和宿主配置见文档站。
189
38
 
190
- - 新架构(Fabric + TurboModule)必须开启;旧架构 Bridge、RN `0.85` 及更低版本不在支持范围。
191
- - `react-native` peer 不封顶;当前验证基线是 RN `0.86.3`,同时保留对 Portal 所用 RN `0.86.3` 的安装兼容。
192
- - Node.js `^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0`(`package.json#engines`;本仓 `.nvmrc` 固定 `v24.13.0`)
193
- - TypeScript 6、Yarn 4
39
+ ## 按需阅读
194
40
 
195
- ## 许可
41
+ | 想做什么 | 入口 |
42
+ | -------------------- | ----------------------------------------------- |
43
+ | 查组件与 API | [组件索引](website/docs/components/overview.md) |
44
+ | 运行展厅 | [example](example/README.md) |
45
+ | 验证场景与平台行为 | [展厅指南](example/GUIDE.md) |
46
+ | 在应用里编写测试 | [测试接入](website/docs/testing.md) |
47
+ | 修改库或了解目标架构 | [开发资料](docs/DEVELOPMENT.md) |
196
48
 
197
- MIT
49
+ [AI 文档索引](https://unif-design.github.io/react-native-design/llms.txt) · [研发技能](https://github.com/unif-skill/unif-portal-dev-skills) · [MIT 许可](LICENSE)
@@ -5,7 +5,8 @@ import { Text, View } from 'react-native';
5
5
  import { scaleFontMetric, useColors, useFontScale } from "../../../theme/index.js";
6
6
  import { resolveImageSource } from "../../../utils/imageSource.js";
7
7
  import { ImageAttempt } from "../shared/ImageAttempt.js";
8
- import { paletteFor, resolveAvatarBorderRadius, sizingFor, styles } from "./styles.js";
8
+ import { paletteFor, styles } from "./styles.js";
9
+ import { resolveAvatarBorderRadius, sizingFor } from "./geometry.js";
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  /**
11
12
  * 头像 —— 2 种形态 × 5 档尺寸 × 4 种配色 × 可选图片 source。
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","scaleFontMetric","useColors","useFontScale","resolveImageSource","ImageAttempt","paletteFor","resolveAvatarBorderRadius","sizingFor","styles","jsx","_jsx","Avatar","label","size","shape","variant","source","style","testID","c","fontScale","dims","palette","labelFontSize","fs","resolvedSource","fallback","fontSize","color","fg","numberOfLines","children","base","width","box","height","borderRadius","backgroundColor","bg","accessible","accessibilityLabel","undefined","image","resizeMode","key"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,eAAe,EAAEC,SAAS,EAAEC,YAAY,QAAQ,yBAAgB;AACzE,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SACEC,UAAU,EACVC,yBAAyB,EACzBC,SAAS,EACTC,MAAM,QACD,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,QAAQ;EAChBC,OAAO,GAAG,SAAS;EACnBC,MAAM;EACNC,KAAK;EACLC;AACW,CAAC,EAAqB;EACjC,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,SAAS,GAAGlB,YAAY,CAAC,CAAC;EAChC,MAAMmB,IAAI,GAAGd,SAAS,CAACM,IAAI,CAAC;EAC5B,MAAMS,OAAO,GAAGjB,UAAU,CAACU,OAAO,EAAEI,CAAC,CAAC;EACtC,MAAMI,aAAa,GAAGvB,eAAe,CAACqB,IAAI,CAACG,EAAE,EAAEJ,SAAS,CAAC;EACzD,MAAMK,cAAc,GAAGtB,kBAAkB,CAACa,MAAM,CAAC;EACjD,MAAMU,QAAQ,gBACZhB,IAAA,CAACZ,IAAI;IACHmB,KAAK,EAAE,CAACT,MAAM,CAACI,KAAK,EAAE;MAAEe,QAAQ,EAAEJ,aAAa;MAAEK,KAAK,EAAEN,OAAO,CAACO;IAAG,CAAC,CAAE;IACtEC,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBnB;EAAK,CACF,CACP;EAED,oBACEF,IAAA,CAACX,IAAI;IACHkB,KAAK,EAAE,CACLT,MAAM,CAACwB,IAAI,EACX;MACEC,KAAK,EAAEZ,IAAI,CAACa,GAAG;MACfC,MAAM,EAAEd,IAAI,CAACa,GAAG;MAChBE,YAAY,EAAE9B,yBAAyB,CAACO,IAAI,EAAEC,KAAK,CAAC;MACpDuB,eAAe,EAAEf,OAAO,CAACgB;IAC3B,CAAC,EACDrB,KAAK,CACL;IACFsB,UAAU,EAAE,CAAC,CAAC3B,KAAM;IACpB4B,kBAAkB,EAAE5B,KAAM;IAC1BM,MAAM,EAAEA,MAAO;IAAAa,QAAA,EAEdN,cAAc,KAAKgB,SAAS,GAC3Bf,QAAQ,gBAERhB,IAAA,CAACN,YAAY;MAEXY,MAAM,EAAES,cAAc,CAACT,MAAO;MAC9BU,QAAQ,EAAEA,QAAS;MACnBT,KAAK,EAAET,MAAM,CAACkC,KAAM;MACpBC,UAAU,EAAC;IAAO,GAJblB,cAAc,CAACmB,GAKrB;EACF,CACG,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","View","scaleFontMetric","useColors","useFontScale","resolveImageSource","ImageAttempt","paletteFor","styles","resolveAvatarBorderRadius","sizingFor","jsx","_jsx","Avatar","label","size","shape","variant","source","style","testID","c","fontScale","dims","palette","labelFontSize","fs","resolvedSource","fallback","fontSize","color","fg","numberOfLines","children","base","width","box","height","borderRadius","backgroundColor","bg","accessible","accessibilityLabel","undefined","image","resizeMode","key"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,eAAe,EAAEC,SAAS,EAAEC,YAAY,QAAQ,yBAAgB;AACzE,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SAASC,UAAU,EAAEC,MAAM,QAAQ,aAAU;AAC7C,SAASC,yBAAyB,EAAEC,SAAS,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,QAAQ;EAChBC,OAAO,GAAG,SAAS;EACnBC,MAAM;EACNC,KAAK;EACLC;AACW,CAAC,EAAqB;EACjC,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,SAAS,GAAGlB,YAAY,CAAC,CAAC;EAChC,MAAMmB,IAAI,GAAGb,SAAS,CAACK,IAAI,CAAC;EAC5B,MAAMS,OAAO,GAAGjB,UAAU,CAACU,OAAO,EAAEI,CAAC,CAAC;EACtC,MAAMI,aAAa,GAAGvB,eAAe,CAACqB,IAAI,CAACG,EAAE,EAAEJ,SAAS,CAAC;EACzD,MAAMK,cAAc,GAAGtB,kBAAkB,CAACa,MAAM,CAAC;EACjD,MAAMU,QAAQ,gBACZhB,IAAA,CAACZ,IAAI;IACHmB,KAAK,EAAE,CAACX,MAAM,CAACM,KAAK,EAAE;MAAEe,QAAQ,EAAEJ,aAAa;MAAEK,KAAK,EAAEN,OAAO,CAACO;IAAG,CAAC,CAAE;IACtEC,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBnB;EAAK,CACF,CACP;EAED,oBACEF,IAAA,CAACX,IAAI;IACHkB,KAAK,EAAE,CACLX,MAAM,CAAC0B,IAAI,EACX;MACEC,KAAK,EAAEZ,IAAI,CAACa,GAAG;MACfC,MAAM,EAAEd,IAAI,CAACa,GAAG;MAChBE,YAAY,EAAE7B,yBAAyB,CAACM,IAAI,EAAEC,KAAK,CAAC;MACpDuB,eAAe,EAAEf,OAAO,CAACgB;IAC3B,CAAC,EACDrB,KAAK,CACL;IACFsB,UAAU,EAAE,CAAC,CAAC3B,KAAM;IACpB4B,kBAAkB,EAAE5B,KAAM;IAC1BM,MAAM,EAAEA,MAAO;IAAAa,QAAA,EAEdN,cAAc,KAAKgB,SAAS,GAC3Bf,QAAQ,gBAERhB,IAAA,CAACN,YAAY;MAEXY,MAAM,EAAES,cAAc,CAACT,MAAO;MAC9BU,QAAQ,EAAEA,QAAS;MACnBT,KAAK,EAAEX,MAAM,CAACoC,KAAM;MACpBC,UAAU,EAAC;IAAO,GAJblB,cAAc,CAACmB,GAKrB;EACF,CACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ import { avatar, radius, rf } from "../../../theme/index.js";
4
+ /** Avatar 尺寸推导:5 档 size → { box, fs }。box 走 avatar.<size> token。
5
+ * 新增 size 在 types.ts 加 union + 这里加 case + tokens.ts 补 avatar.<key>。 */
6
+ export function sizingFor(size) {
7
+ switch (size) {
8
+ case 'xs':
9
+ return {
10
+ box: avatar.xs,
11
+ fs: rf(10)
12
+ };
13
+ case 'sm':
14
+ return {
15
+ box: avatar.sm,
16
+ fs: rf(12)
17
+ };
18
+ case 'md':
19
+ return {
20
+ box: avatar.md,
21
+ fs: rf(13)
22
+ };
23
+ case 'lg':
24
+ return {
25
+ box: avatar.lg,
26
+ fs: rf(15)
27
+ };
28
+ case 'xl':
29
+ return {
30
+ box: avatar.xl,
31
+ fs: rf(20)
32
+ };
33
+ }
34
+ }
35
+
36
+ /** circle 保留直径一半的现有视觉;square 按尺寸使用既有圆角 token。 */
37
+ export function resolveAvatarBorderRadius(size, shape) {
38
+ if (shape === 'circle') return sizingFor(size).box / 2;
39
+ if (size === 'xs' || size === 'sm') return radius.xs;
40
+ if (size === 'xl') return radius.md;
41
+ return radius.sm;
42
+ }
43
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["avatar","radius","rf","sizingFor","size","box","xs","fs","sm","md","lg","xl","resolveAvatarBorderRadius","shape"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/geometry.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,MAAM,EAAEC,EAAE,QAAQ,yBAAgB;AAGnD;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAAkB;EAC1D,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QAAEC,GAAG,EAAEL,MAAM,CAACM,EAAE;QAAEC,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACQ,EAAE;QAAED,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACS,EAAE;QAAEF,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACU,EAAE;QAAEH,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACW,EAAE;QAAEJ,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;EACzC;AACF;;AAEA;AACA,OAAO,SAASU,yBAAyBA,CACvCR,IAAgB,EAChBS,KAAkB,EACV;EACR,IAAIA,KAAK,KAAK,QAAQ,EAAE,OAAOV,SAAS,CAACC,IAAI,CAAC,CAACC,GAAG,GAAG,CAAC;EACtD,IAAID,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,EAAE,OAAOH,MAAM,CAACK,EAAE;EACpD,IAAIF,IAAI,KAAK,IAAI,EAAE,OAAOH,MAAM,CAACQ,EAAE;EACnC,OAAOR,MAAM,CAACO,EAAE;AAClB","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { StyleSheet } from 'react-native';
4
- import { avatar, fw, radius, rf } from "../../../theme/index.js";
4
+ import { fw } from "../../../theme/index.js";
5
5
  /** Avatar 静态 base —— 容器圆角 / 尺寸由 resolver 派生。 */
6
6
  export const styles = StyleSheet.create({
7
7
  base: {
@@ -19,46 +19,6 @@ export const styles = StyleSheet.create({
19
19
  }
20
20
  });
21
21
 
22
- /** Avatar 尺寸推导:5 档 size → { box, fs }。box 走 avatar.<size> token。
23
- * 新增 size 在 types.ts 加 union + 这里加 case + tokens.ts 补 avatar.<key>。 */
24
- export function sizingFor(size) {
25
- switch (size) {
26
- case 'xs':
27
- return {
28
- box: avatar.xs,
29
- fs: rf(10)
30
- };
31
- case 'sm':
32
- return {
33
- box: avatar.sm,
34
- fs: rf(12)
35
- };
36
- case 'md':
37
- return {
38
- box: avatar.md,
39
- fs: rf(13)
40
- };
41
- case 'lg':
42
- return {
43
- box: avatar.lg,
44
- fs: rf(15)
45
- };
46
- case 'xl':
47
- return {
48
- box: avatar.xl,
49
- fs: rf(20)
50
- };
51
- }
52
- }
53
-
54
- /** circle 保留直径一半的现有视觉;square 按尺寸使用既有圆角 token。 */
55
- export function resolveAvatarBorderRadius(size, shape) {
56
- if (shape === 'circle') return sizingFor(size).box / 2;
57
- if (size === 'xs' || size === 'sm') return radius.xs;
58
- if (size === 'xl') return radius.md;
59
- return radius.sm;
60
- }
61
-
62
22
  /** Avatar 配色推导:4 种 variant → { bg, fg }。签名与 Tag/Button 的 paletteFor 一致。 */
63
23
  export function paletteFor(variant, c) {
64
24
  switch (variant) {
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","avatar","fw","radius","rf","styles","create","base","alignItems","justifyContent","overflow","label","fontWeight","semi","lineHeight","undefined","image","width","height","sizingFor","size","box","xs","fs","sm","md","lg","xl","resolveAvatarBorderRadius","shape","paletteFor","variant","c","bg","primary","fg","onPrimary","info","onInfo","primaryContainer","surfaceContainerHighest","foreground"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,MAAM,EAAEC,EAAE,EAAEC,MAAM,EAAEC,EAAE,QAA0B,yBAAgB;AAGzE;AACA,OAAO,MAAMC,MAAM,GAAGL,UAAU,CAACM,MAAM,CAAC;EACtCC,IAAI,EAAE;IACJC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAEV,EAAE,CAACW,IAAI;IACnBC,UAAU,EAAEC;EACd,CAAC;EACDC,KAAK,EAAE;IACLC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;;AAEF;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAA+B;EACvE,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QAAEC,GAAG,EAAEpB,MAAM,CAACqB,EAAE;QAAEC,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAACuB,EAAE;QAAED,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAACwB,EAAE;QAAEF,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAACyB,EAAE;QAAEH,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAAC0B,EAAE;QAAEJ,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;EACzC;AACF;;AAEA;AACA,OAAO,SAASwB,yBAAyBA,CACvCR,IAAgB,EAChBS,KAAkB,EACV;EACR,IAAIA,KAAK,KAAK,QAAQ,EAAE,OAAOV,SAAS,CAACC,IAAI,CAAC,CAACC,GAAG,GAAG,CAAC;EACtD,IAAID,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,EAAE,OAAOjB,MAAM,CAACmB,EAAE;EACpD,IAAIF,IAAI,KAAK,IAAI,EAAE,OAAOjB,MAAM,CAACsB,EAAE;EACnC,OAAOtB,MAAM,CAACqB,EAAE;AAClB;;AAEA;AACA,OAAO,SAASM,UAAUA,CACxBC,OAAsB,EACtBC,CAAc,EACc;EAC5B,QAAQD,OAAO;IACb,KAAK,OAAO;MACV,OAAO;QAAEE,EAAE,EAAED,CAAC,CAACE,OAAO;QAAEC,EAAE,EAAEH,CAAC,CAACI;MAAU,CAAC;IAC3C,KAAK,MAAM;MACT,OAAO;QAAEH,EAAE,EAAED,CAAC,CAACK,IAAI;QAAEF,EAAE,EAAEH,CAAC,CAACM;MAAO,CAAC;IACrC,KAAK,MAAM;MACT,OAAO;QAAEL,EAAE,EAAED,CAAC,CAACO,gBAAgB;QAAEJ,EAAE,EAAEH,CAAC,CAACE;MAAQ,CAAC;IAClD,KAAK,SAAS;MACZ,OAAO;QAAED,EAAE,EAAED,CAAC,CAACQ,uBAAuB;QAAEL,EAAE,EAAEH,CAAC,CAACS;MAAW,CAAC;EAC9D;AACF","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","fw","styles","create","base","alignItems","justifyContent","overflow","label","fontWeight","semi","lineHeight","undefined","image","width","height","paletteFor","variant","c","bg","primary","fg","onPrimary","info","onInfo","primaryContainer","surfaceContainerHighest","foreground"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,QAA0B,yBAAgB;AAGrD;AACA,OAAO,MAAMC,MAAM,GAAGF,UAAU,CAACG,MAAM,CAAC;EACtCC,IAAI,EAAE;IACJC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAER,EAAE,CAACS,IAAI;IACnBC,UAAU,EAAEC;EACd,CAAC;EACDC,KAAK,EAAE;IACLC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;;AAEF;AACA,OAAO,SAASC,UAAUA,CACxBC,OAAsB,EACtBC,CAAc,EACc;EAC5B,QAAQD,OAAO;IACb,KAAK,OAAO;MACV,OAAO;QAAEE,EAAE,EAAED,CAAC,CAACE,OAAO;QAAEC,EAAE,EAAEH,CAAC,CAACI;MAAU,CAAC;IAC3C,KAAK,MAAM;MACT,OAAO;QAAEH,EAAE,EAAED,CAAC,CAACK,IAAI;QAAEF,EAAE,EAAEH,CAAC,CAACM;MAAO,CAAC;IACrC,KAAK,MAAM;MACT,OAAO;QAAEL,EAAE,EAAED,CAAC,CAACO,gBAAgB;QAAEJ,EAAE,EAAEH,CAAC,CAACE;MAAQ,CAAC;IAClD,KAAK,SAAS;MACZ,OAAO;QAAED,EAAE,EAAED,CAAC,CAACQ,uBAAuB;QAAEL,EAAE,EAAEH,CAAC,CAACS;MAAW,CAAC;EAC9D;AACF","ignoreList":[]}
@@ -7,7 +7,7 @@ import { pressedOpacity, scaleFontMetric, useColors, useFontScale, useThemedStyl
7
7
  import { createLogger } from "../../../utils/logger/index.js";
8
8
  import { childTestID } from "../../../utils/testID/index.js";
9
9
  import { Avatar } from "../Avatar/index.js";
10
- import { resolveAvatarBorderRadius, sizingFor } from "../Avatar/styles.js";
10
+ import { resolveAvatarBorderRadius, sizingFor } from "../Avatar/geometry.js";
11
11
  import { normalizeNonBlankText } from "../shared/accessibilityName.js";
12
12
  import { resolveAvatarGroupLayout } from "./layout.js";
13
13
  import { normalizeAvatarGroup } from "./normalize.js";
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","Text","View","Pressable","pressedOpacity","scaleFontMetric","useColors","useFontScale","useThemedStyles","createLogger","childTestID","Avatar","resolveAvatarBorderRadius","sizingFor","normalizeNonBlankText","resolveAvatarGroupLayout","normalizeAvatarGroup","makeStyles","jsx","_jsx","jsxs","_jsxs","log","warned","Set","warnOnce","key","message","has","add","warn","AvatarGroup","items","size","shape","max","style","testID","onOverflowPress","overflowAccessibilityLabel","overflowAccessibilityHint","colors","fontScale","styles","normalized","layout","avatarSizing","overflowFontSize","fs","customOverflowLabel","hasBlankOverflowLabel","overflowCount","undefined","__DEV__","invalidMax","String","length","slotStyle","index","borderColor","surface","borderWidth","marginStart","overlap","zIndex","overflowLabel","overflowA11yLabel","overflowStyle","visibleItems","width","box","height","borderRadius","backgroundColor","primaryContainer","overflowText","color","primary","fontSize","numberOfLines","children","root","map","item","label","source","variant","accessible","accessibilityLabel","overflow","accessibilityRole","accessibilityHint","onPress","hitSlop","pressed","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/AvatarGroup/AvatarGroup.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,IAAI,EAAEC,IAAI,QAAwB,cAAc;AACzD,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SACEC,cAAc,EACdC,eAAe,EACfC,SAAS,EACTC,YAAY,EACZC,eAAe,QACV,yBAAgB;AACvB,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,WAAW,QAAQ,gCAAuB;AACnD,SAASC,MAAM,QAAQ,oBAAW;AAClC,SAASC,yBAAyB,EAAEC,SAAS,QAAQ,qBAAkB;AACvE,SAASC,qBAAqB,QAAQ,gCAA6B;AACnE,SAASC,wBAAwB,QAAQ,aAAU;AACnD,SAASC,oBAAoB,QAAQ,gBAAa;AAClD,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,MAAMC,GAAG,GAAGb,YAAY,CAAC,aAAa,CAAC;AACvC,MAAMc,MAAM,GAAG,IAAIC,GAAG,CAAS,CAAC;AAEhC,SAASC,QAAQA,CAACC,GAAW,EAAEC,OAAe,EAAQ;EACpD,IAAIJ,MAAM,CAACK,GAAG,CAACF,GAAG,CAAC,EAAE;EACrBH,MAAM,CAACM,GAAG,CAACH,GAAG,CAAC;EACfJ,GAAG,CAACQ,IAAI,CAACH,OAAO,CAAC;AACnB;;AAEA;AACA,OAAO,SAASI,WAAWA,CAAC;EAC1BC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,QAAQ;EAChBC,GAAG;EACHC,KAAK;EACLC,MAAM;EACNC,eAAe;EACfC,0BAA0B;EAC1BC;AACgB,CAAC,EAA4B;EAC7C,MAAMC,MAAM,GAAGnC,SAAS,CAAC,CAAC;EAC1B,MAAMoC,SAAS,GAAGnC,YAAY,CAAC,CAAC;EAChC,MAAMoC,MAAM,GAAGnC,eAAe,CAACS,UAAU,CAAC;EAC1C,MAAM2B,UAAU,GAAG5B,oBAAoB,CAACgB,KAAK,EAAEG,GAAG,CAAC;EACnD,MAAMU,MAAM,GAAG9B,wBAAwB,CAACkB,IAAI,CAAC;EAC7C,MAAMa,YAAY,GAAGjC,SAAS,CAACoB,IAAI,CAAC;EACpC,MAAMc,gBAAgB,GAAG1C,eAAe,CAACyC,YAAY,CAACE,EAAE,EAAEN,SAAS,CAAC;EACpE,MAAMO,mBAAmB,GAAGnC,qBAAqB,CAACyB,0BAA0B,CAAC;EAC7E,MAAMW,qBAAqB,GACzBN,UAAU,CAACO,aAAa,GAAG,CAAC,IAC5Bb,eAAe,KAAKc,SAAS,IAC7Bb,0BAA0B,KAAKa,SAAS,IACxCH,mBAAmB,KAAKG,SAAS;EAEnCpD,SAAS,CAAC,MAAM;IACd,IAAI,OAAOqD,OAAO,KAAK,WAAW,IAAI,CAACA,OAAO,EAAE;IAChD,IAAIT,UAAU,CAACU,UAAU,EAAE;MACzB7B,QAAQ,CACN,OAAO8B,MAAM,CAACpB,GAAG,CAAC,EAAE,EACpB,0BAA0BoB,MAAM,CAACpB,GAAG,CAAC,WACvC,CAAC;IACH;IACA,IAAIe,qBAAqB,EAAE;MACzBzB,QAAQ,CACN,kCAAkC,EAClC,2CACF,CAAC;IACH;EACF,CAAC,EAAE,CAACyB,qBAAqB,EAAEf,GAAG,EAAES,UAAU,CAACU,UAAU,CAAC,CAAC;EAEvD,IAAItB,KAAK,CAACwB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAEnC,MAAMC,SAAS,GAAIC,KAAa,KAAiB;IAC/CC,WAAW,EAAElB,MAAM,CAACmB,OAAO;IAC3BC,WAAW,EAAEhB,MAAM,CAACgB,WAAW;IAC/BC,WAAW,EAAEJ,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAACb,MAAM,CAACkB,OAAO;IAC9CC,MAAM,EAAEN;EACV,CAAC,CAAC;EACF,MAAMP,aAAa,GAAGP,UAAU,CAACO,aAAa;EAC9C,MAAMc,aAAa,GAAG,IAAId,aAAa,EAAE;EACzC,MAAMe,iBAAiB,GACrB5B,eAAe,KAAKc,SAAS,GACzB,MAAMD,aAAa,MAAM,GACxBF,mBAAmB,IAAI,QAAQE,aAAa,MAAO;EAC1D,MAAMgB,aAAwB,GAAG;IAC/B,GAAGV,SAAS,CAACb,UAAU,CAACwB,YAAY,CAACZ,MAAM,CAAC;IAC5Ca,KAAK,EAAExB,MAAM,CAACyB,GAAG;IACjBC,MAAM,EAAE1B,MAAM,CAACyB,GAAG;IAClBE,YAAY,EAAE5D,yBAAyB,CAACqB,IAAI,EAAEC,KAAK,CAAC;IACpDuC,eAAe,EAAEhC,MAAM,CAACiC;EAC1B,CAAC;EACD,MAAMC,YAAY,gBAChBxD,IAAA,CAAClB,IAAI;IACHmC,KAAK,EAAE,CACLO,MAAM,CAACgC,YAAY,EACnB;MAAEC,KAAK,EAAEnC,MAAM,CAACoC,OAAO;MAAEC,QAAQ,EAAE/B;IAAiB,CAAC,CACrD;IACFgC,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBf;EAAa,CACV,CACP;EAED,oBACE5C,KAAA,CAACnB,IAAI;IAACkC,KAAK,EAAE,CAACO,MAAM,CAACsC,IAAI,EAAE7C,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAA2C,QAAA,GAC/CpC,UAAU,CAACwB,YAAY,CAACc,GAAG,CAAC,CAACC,IAAI,EAAEzB,KAAK,kBACvCvC,IAAA,CAACR,MAAM;MAELyE,KAAK,EAAED,IAAI,CAACC,KAAM;MAClBC,MAAM,EAAEF,IAAI,CAACE,MAAO;MACpBC,OAAO,EAAEH,IAAI,CAACG,OAAQ;MACtBrD,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACbE,KAAK,EAAEqB,SAAS,CAACC,KAAK;IAAE,GANnByB,IAAI,CAACzD,GAOX,CACF,CAAC,EACDyB,aAAa,KAAK,CAAC,GAAG,IAAI,GAAGb,eAAe,KAAKc,SAAS,gBACzDjC,IAAA,CAACjB,IAAI;MACHqF,UAAU;MACVC,kBAAkB,EAAEtB,iBAAkB;MACtC9B,KAAK,EAAE,CAACO,MAAM,CAAC8C,QAAQ,EAAEtB,aAAa,CAAE;MACxC9B,MAAM,EAAE3B,WAAW,CAAC2B,MAAM,EAAE,UAAU,CAAE;MAAA2C,QAAA,EAEvCL;IAAY,CACT,CAAC,gBAEPxD,IAAA,CAAChB,SAAS;MACRoF,UAAU;MACVG,iBAAiB,EAAC,QAAQ;MAC1BF,kBAAkB,EAAEtB,iBAAkB;MACtCyB,iBAAiB,EAAEnD,yBAA0B;MAC7CoD,OAAO,EAAEtD,eAAgB;MACzBuD,OAAO,EAAEhD,MAAM,CAACgD,OAAQ;MACxBzD,KAAK,EAAEA,CAAC;QAAE0D;MAAQ,CAAC,KAAK,CACtBnD,MAAM,CAAC8C,QAAQ,EACftB,aAAa,EACb;QAAE4B,OAAO,EAAED,OAAO,GAAG1F,cAAc,GAAG;MAAE,CAAC,CACzC;MACFiC,MAAM,EAAE3B,WAAW,CAAC2B,MAAM,EAAE,UAAU,CAAE;MAAA2C,QAAA,EAEvCL;IAAY,CACJ,CACZ;EAAA,CACG,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","Text","View","Pressable","pressedOpacity","scaleFontMetric","useColors","useFontScale","useThemedStyles","createLogger","childTestID","Avatar","resolveAvatarBorderRadius","sizingFor","normalizeNonBlankText","resolveAvatarGroupLayout","normalizeAvatarGroup","makeStyles","jsx","_jsx","jsxs","_jsxs","log","warned","Set","warnOnce","key","message","has","add","warn","AvatarGroup","items","size","shape","max","style","testID","onOverflowPress","overflowAccessibilityLabel","overflowAccessibilityHint","colors","fontScale","styles","normalized","layout","avatarSizing","overflowFontSize","fs","customOverflowLabel","hasBlankOverflowLabel","overflowCount","undefined","__DEV__","invalidMax","String","length","slotStyle","index","borderColor","surface","borderWidth","marginStart","overlap","zIndex","overflowLabel","overflowA11yLabel","overflowStyle","visibleItems","width","box","height","borderRadius","backgroundColor","primaryContainer","overflowText","color","primary","fontSize","numberOfLines","children","root","map","item","label","source","variant","accessible","accessibilityLabel","overflow","accessibilityRole","accessibilityHint","onPress","hitSlop","pressed","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/AvatarGroup/AvatarGroup.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,IAAI,EAAEC,IAAI,QAAwB,cAAc;AACzD,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SACEC,cAAc,EACdC,eAAe,EACfC,SAAS,EACTC,YAAY,EACZC,eAAe,QACV,yBAAgB;AACvB,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,WAAW,QAAQ,gCAAuB;AACnD,SAASC,MAAM,QAAQ,oBAAW;AAClC,SAASC,yBAAyB,EAAEC,SAAS,QAAQ,uBAAoB;AACzE,SAASC,qBAAqB,QAAQ,gCAA6B;AACnE,SAASC,wBAAwB,QAAQ,aAAU;AACnD,SAASC,oBAAoB,QAAQ,gBAAa;AAClD,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,MAAMC,GAAG,GAAGb,YAAY,CAAC,aAAa,CAAC;AACvC,MAAMc,MAAM,GAAG,IAAIC,GAAG,CAAS,CAAC;AAEhC,SAASC,QAAQA,CAACC,GAAW,EAAEC,OAAe,EAAQ;EACpD,IAAIJ,MAAM,CAACK,GAAG,CAACF,GAAG,CAAC,EAAE;EACrBH,MAAM,CAACM,GAAG,CAACH,GAAG,CAAC;EACfJ,GAAG,CAACQ,IAAI,CAACH,OAAO,CAAC;AACnB;;AAEA;AACA,OAAO,SAASI,WAAWA,CAAC;EAC1BC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,QAAQ;EAChBC,GAAG;EACHC,KAAK;EACLC,MAAM;EACNC,eAAe;EACfC,0BAA0B;EAC1BC;AACgB,CAAC,EAA4B;EAC7C,MAAMC,MAAM,GAAGnC,SAAS,CAAC,CAAC;EAC1B,MAAMoC,SAAS,GAAGnC,YAAY,CAAC,CAAC;EAChC,MAAMoC,MAAM,GAAGnC,eAAe,CAACS,UAAU,CAAC;EAC1C,MAAM2B,UAAU,GAAG5B,oBAAoB,CAACgB,KAAK,EAAEG,GAAG,CAAC;EACnD,MAAMU,MAAM,GAAG9B,wBAAwB,CAACkB,IAAI,CAAC;EAC7C,MAAMa,YAAY,GAAGjC,SAAS,CAACoB,IAAI,CAAC;EACpC,MAAMc,gBAAgB,GAAG1C,eAAe,CAACyC,YAAY,CAACE,EAAE,EAAEN,SAAS,CAAC;EACpE,MAAMO,mBAAmB,GAAGnC,qBAAqB,CAACyB,0BAA0B,CAAC;EAC7E,MAAMW,qBAAqB,GACzBN,UAAU,CAACO,aAAa,GAAG,CAAC,IAC5Bb,eAAe,KAAKc,SAAS,IAC7Bb,0BAA0B,KAAKa,SAAS,IACxCH,mBAAmB,KAAKG,SAAS;EAEnCpD,SAAS,CAAC,MAAM;IACd,IAAI,OAAOqD,OAAO,KAAK,WAAW,IAAI,CAACA,OAAO,EAAE;IAChD,IAAIT,UAAU,CAACU,UAAU,EAAE;MACzB7B,QAAQ,CACN,OAAO8B,MAAM,CAACpB,GAAG,CAAC,EAAE,EACpB,0BAA0BoB,MAAM,CAACpB,GAAG,CAAC,WACvC,CAAC;IACH;IACA,IAAIe,qBAAqB,EAAE;MACzBzB,QAAQ,CACN,kCAAkC,EAClC,2CACF,CAAC;IACH;EACF,CAAC,EAAE,CAACyB,qBAAqB,EAAEf,GAAG,EAAES,UAAU,CAACU,UAAU,CAAC,CAAC;EAEvD,IAAItB,KAAK,CAACwB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAEnC,MAAMC,SAAS,GAAIC,KAAa,KAAiB;IAC/CC,WAAW,EAAElB,MAAM,CAACmB,OAAO;IAC3BC,WAAW,EAAEhB,MAAM,CAACgB,WAAW;IAC/BC,WAAW,EAAEJ,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAACb,MAAM,CAACkB,OAAO;IAC9CC,MAAM,EAAEN;EACV,CAAC,CAAC;EACF,MAAMP,aAAa,GAAGP,UAAU,CAACO,aAAa;EAC9C,MAAMc,aAAa,GAAG,IAAId,aAAa,EAAE;EACzC,MAAMe,iBAAiB,GACrB5B,eAAe,KAAKc,SAAS,GACzB,MAAMD,aAAa,MAAM,GACxBF,mBAAmB,IAAI,QAAQE,aAAa,MAAO;EAC1D,MAAMgB,aAAwB,GAAG;IAC/B,GAAGV,SAAS,CAACb,UAAU,CAACwB,YAAY,CAACZ,MAAM,CAAC;IAC5Ca,KAAK,EAAExB,MAAM,CAACyB,GAAG;IACjBC,MAAM,EAAE1B,MAAM,CAACyB,GAAG;IAClBE,YAAY,EAAE5D,yBAAyB,CAACqB,IAAI,EAAEC,KAAK,CAAC;IACpDuC,eAAe,EAAEhC,MAAM,CAACiC;EAC1B,CAAC;EACD,MAAMC,YAAY,gBAChBxD,IAAA,CAAClB,IAAI;IACHmC,KAAK,EAAE,CACLO,MAAM,CAACgC,YAAY,EACnB;MAAEC,KAAK,EAAEnC,MAAM,CAACoC,OAAO;MAAEC,QAAQ,EAAE/B;IAAiB,CAAC,CACrD;IACFgC,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBf;EAAa,CACV,CACP;EAED,oBACE5C,KAAA,CAACnB,IAAI;IAACkC,KAAK,EAAE,CAACO,MAAM,CAACsC,IAAI,EAAE7C,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAA2C,QAAA,GAC/CpC,UAAU,CAACwB,YAAY,CAACc,GAAG,CAAC,CAACC,IAAI,EAAEzB,KAAK,kBACvCvC,IAAA,CAACR,MAAM;MAELyE,KAAK,EAAED,IAAI,CAACC,KAAM;MAClBC,MAAM,EAAEF,IAAI,CAACE,MAAO;MACpBC,OAAO,EAAEH,IAAI,CAACG,OAAQ;MACtBrD,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACbE,KAAK,EAAEqB,SAAS,CAACC,KAAK;IAAE,GANnByB,IAAI,CAACzD,GAOX,CACF,CAAC,EACDyB,aAAa,KAAK,CAAC,GAAG,IAAI,GAAGb,eAAe,KAAKc,SAAS,gBACzDjC,IAAA,CAACjB,IAAI;MACHqF,UAAU;MACVC,kBAAkB,EAAEtB,iBAAkB;MACtC9B,KAAK,EAAE,CAACO,MAAM,CAAC8C,QAAQ,EAAEtB,aAAa,CAAE;MACxC9B,MAAM,EAAE3B,WAAW,CAAC2B,MAAM,EAAE,UAAU,CAAE;MAAA2C,QAAA,EAEvCL;IAAY,CACT,CAAC,gBAEPxD,IAAA,CAAChB,SAAS;MACRoF,UAAU;MACVG,iBAAiB,EAAC,QAAQ;MAC1BF,kBAAkB,EAAEtB,iBAAkB;MACtCyB,iBAAiB,EAAEnD,yBAA0B;MAC7CoD,OAAO,EAAEtD,eAAgB;MACzBuD,OAAO,EAAEhD,MAAM,CAACgD,OAAQ;MACxBzD,KAAK,EAAEA,CAAC;QAAE0D;MAAQ,CAAC,KAAK,CACtBnD,MAAM,CAAC8C,QAAQ,EACftB,aAAa,EACb;QAAE4B,OAAO,EAAED,OAAO,GAAG1F,cAAc,GAAG;MAAE,CAAC,CACzC;MACFiC,MAAM,EAAE3B,WAAW,CAAC2B,MAAM,EAAE,UAAU,CAAE;MAAA2C,QAAA,EAEvCL;IAAY,CACJ,CACZ;EAAA,CACG,CAAC;AAEX","ignoreList":[]}
@@ -2,24 +2,11 @@
2
2
 
3
3
  import { Text, View } from 'react-native';
4
4
  import Svg, { Circle } from 'react-native-svg';
5
- import { r, type, useColors } from "../../../theme/index.js";
5
+ import { r, type, useColors, useFontScale, scaleFontMetric } from "../../../theme/index.js";
6
6
  import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
7
7
  import { normalizeCircularProgress } from "./normalizeCircularProgress.js";
8
+ import { styles } from "./styles.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- const OUTER_CENTER_STYLE = {
10
- alignItems: 'center',
11
- justifyContent: 'center'
12
- };
13
- const VISUAL_CONTAINER_STYLE = {
14
- position: 'relative'
15
- };
16
- const LABEL_CENTER_STYLE = {
17
- fontWeight: '600',
18
- left: 0,
19
- position: 'absolute',
20
- textAlign: 'center',
21
- top: 0
22
- };
23
10
  export function CircularProgress({
24
11
  value,
25
12
  size = r(32),
@@ -33,6 +20,7 @@ export function CircularProgress({
33
20
  testID
34
21
  }) {
35
22
  const colors = useColors();
23
+ const fontScale = useFontScale();
36
24
  const normalized = normalizeCircularProgress({
37
25
  value,
38
26
  size,
@@ -57,20 +45,24 @@ export function CircularProgress({
57
45
  now: percentage,
58
46
  text: `${percentage}%`
59
47
  },
60
- style: [{
48
+ style: [showLabel ? [styles.contentSize, {
49
+ minHeight: safeSize,
50
+ minWidth: safeSize
51
+ }] : {
61
52
  height: safeSize,
62
53
  width: safeSize
63
- }, style, OUTER_CENTER_STYLE],
54
+ }, style, styles.center],
64
55
  testID: testID,
65
56
  children: /*#__PURE__*/_jsxs(View, {
66
57
  style: [{
67
- height: safeSize,
68
- width: safeSize
69
- }, VISUAL_CONTAINER_STYLE],
58
+ minHeight: safeSize,
59
+ minWidth: safeSize
60
+ }, styles.center],
70
61
  ...A11Y_HIDDEN_PROPS,
71
62
  children: [/*#__PURE__*/_jsxs(Svg, {
72
63
  height: safeSize,
73
64
  width: safeSize,
65
+ style: styles.ring,
74
66
  children: [/*#__PURE__*/_jsx(Circle, {
75
67
  cx: center,
76
68
  cy: center,
@@ -95,11 +87,8 @@ export function CircularProgress({
95
87
  }), showLabel ? /*#__PURE__*/_jsx(Text, {
96
88
  style: [{
97
89
  color: labelColor ?? colors.foreground,
98
- fontSize: type.nano,
99
- height: safeSize,
100
- lineHeight: safeSize,
101
- width: safeSize
102
- }, LABEL_CENTER_STYLE],
90
+ fontSize: scaleFontMetric(type.nano, fontScale)
91
+ }, styles.label],
103
92
  children: `${percentage}%`
104
93
  }) : null]
105
94
  })
@@ -1 +1 @@
1
- {"version":3,"names":["Text","View","Svg","Circle","r","type","useColors","A11Y_HIDDEN_PROPS","normalizeCircularProgress","jsx","_jsx","jsxs","_jsxs","OUTER_CENTER_STYLE","alignItems","justifyContent","VISUAL_CONTAINER_STYLE","position","LABEL_CENTER_STYLE","fontWeight","left","textAlign","top","CircularProgress","value","size","thickness","color","trackColor","showLabel","labelColor","accessibilityLabel","style","testID","colors","normalized","circumference","dashOffset","percentage","radius","safeSize","safeThickness","center","accessible","accessibilityRole","accessibilityValue","min","max","now","text","height","width","children","cx","cy","fill","stroke","outline","strokeWidth","rotation","originX","originY","primary","strokeDasharray","strokeDashoffset","strokeLinecap","foreground","fontSize","nano","lineHeight"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/CircularProgress.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Text","View","Svg","Circle","r","type","useColors","useFontScale","scaleFontMetric","A11Y_HIDDEN_PROPS","normalizeCircularProgress","styles","jsx","_jsx","jsxs","_jsxs","CircularProgress","value","size","thickness","color","trackColor","showLabel","labelColor","accessibilityLabel","style","testID","colors","fontScale","normalized","circumference","dashOffset","percentage","radius","safeSize","safeThickness","center","accessible","accessibilityRole","accessibilityValue","min","max","now","text","contentSize","minHeight","minWidth","height","width","children","ring","cx","cy","fill","stroke","outline","strokeWidth","rotation","originX","originY","primary","strokeDasharray","strokeDashoffset","strokeLinecap","foreground","fontSize","nano","label"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/CircularProgress.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,OAAOC,GAAG,IAAIC,MAAM,QAAQ,kBAAkB;AAC9C,SACEC,CAAC,EACDC,IAAI,EACJC,SAAS,EACTC,YAAY,EACZC,eAAe,QACV,yBAAgB;AACvB,SAASC,iBAAiB,QAAQ,mBAAgB;AAClD,SAASC,yBAAyB,QAAQ,gCAA6B;AAGvE,SAASC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElC,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,KAAK;EACLC,IAAI,GAAGd,CAAC,CAAC,EAAE,CAAC;EACZe,SAAS,GAAGf,CAAC,CAAC,CAAC,CAAC;EAChBgB,KAAK;EACLC,UAAU;EACVC,SAAS,GAAG,KAAK;EACjBC,UAAU;EACVC,kBAAkB,GAAG,IAAI;EACzBC,KAAK;EACLC;AACqB,CAAC,EAAqB;EAC3C,MAAMC,MAAM,GAAGrB,SAAS,CAAC,CAAC;EAC1B,MAAMsB,SAAS,GAAGrB,YAAY,CAAC,CAAC;EAChC,MAAMsB,UAAU,GAAGnB,yBAAyB,CAAC;IAAEO,KAAK;IAAEC,IAAI;IAAEC;EAAU,CAAC,CAAC;EACxE,MAAM;IACJW,aAAa;IACbC,UAAU;IACVC,UAAU;IACVC,MAAM;IACNC,QAAQ;IACRC;EACF,CAAC,GAAGN,UAAU;EACd,MAAMO,MAAM,GAAGF,QAAQ,GAAG,CAAC;EAE3B,oBACErB,IAAA,CAACZ,IAAI;IACHoC,UAAU;IACVb,kBAAkB,EAAEA,kBAAmB;IACvCc,iBAAiB,EAAC,aAAa;IAC/BC,kBAAkB,EAAE;MAClBC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,GAAG;MACRC,GAAG,EAAEV,UAAU;MACfW,IAAI,EAAE,GAAGX,UAAU;IACrB,CAAE;IACFP,KAAK,EAAE,CACLH,SAAS,GACL,CAACX,MAAM,CAACiC,WAAW,EAAE;MAAEC,SAAS,EAAEX,QAAQ;MAAEY,QAAQ,EAAEZ;IAAS,CAAC,CAAC,GACjE;MAAEa,MAAM,EAAEb,QAAQ;MAAEc,KAAK,EAAEd;IAAS,CAAC,EACzCT,KAAK,EACLd,MAAM,CAACyB,MAAM,CACb;IACFV,MAAM,EAAEA,MAAO;IAAAuB,QAAA,eAEflC,KAAA,CAACd,IAAI;MACHwB,KAAK,EAAE,CAAC;QAAEoB,SAAS,EAAEX,QAAQ;QAAEY,QAAQ,EAAEZ;MAAS,CAAC,EAAEvB,MAAM,CAACyB,MAAM,CAAE;MAAA,GAChE3B,iBAAiB;MAAAwC,QAAA,gBAErBlC,KAAA,CAACb,GAAG;QAAC6C,MAAM,EAAEb,QAAS;QAACc,KAAK,EAAEd,QAAS;QAACT,KAAK,EAAEd,MAAM,CAACuC,IAAK;QAAAD,QAAA,gBACzDpC,IAAA,CAACV,MAAM;UACLgD,EAAE,EAAEf,MAAO;UACXgB,EAAE,EAAEhB,MAAO;UACXiB,IAAI,EAAC,MAAM;UACXjD,CAAC,EAAE6B,MAAO;UACVqB,MAAM,EAAEjC,UAAU,IAAIM,MAAM,CAAC4B,OAAQ;UACrCC,WAAW,EAAErB;QAAc,CAC5B,CAAC,eACFtB,IAAA,CAACV,MAAM;UACLgD,EAAE,EAAEf,MAAO;UACXgB,EAAE,EAAEhB,MAAO;UACXiB,IAAI,EAAC,MAAM;UACXjD,CAAC,EAAE6B,MAAO;UACVwB,QAAQ,EAAE,CAAC,EAAG;UACdC,OAAO,EAAEtB,MAAO;UAChBuB,OAAO,EAAEvB,MAAO;UAChBkB,MAAM,EAAElC,KAAK,IAAIO,MAAM,CAACiC,OAAQ;UAChCC,eAAe,EAAE/B,aAAc;UAC/BgC,gBAAgB,EAAE/B,UAAW;UAC7BgC,aAAa,EAAC,OAAO;UACrBP,WAAW,EAAErB;QAAc,CAC5B,CAAC;MAAA,CACC,CAAC,EACLb,SAAS,gBACRT,IAAA,CAACb,IAAI;QACHyB,KAAK,EAAE,CACL;UACEL,KAAK,EAAEG,UAAU,IAAII,MAAM,CAACqC,UAAU;UACtCC,QAAQ,EAAEzD,eAAe,CAACH,IAAI,CAAC6D,IAAI,EAAEtC,SAAS;QAChD,CAAC,EACDjB,MAAM,CAACwD,KAAK,CACZ;QAAAlB,QAAA,EAED,GAAGjB,UAAU;MAAG,CACb,CAAC,GACL,IAAI;IAAA,CACJ;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["createLogger","log","warnedKeys","Set","warnOnce","key","message","has","add","warn","normalizeCircularProgress","input","value","size","thickness","Number","isFinite","safeValue","Math","min","max","safeSize","fallbackThickness","safeThickness","radius","circumference","PI","percentage","round","dashOffset"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/normalizeCircularProgress.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gCAAuB;AAEpD,MAAMC,GAAG,GAAGD,YAAY,CAAC,kBAAkB,CAAC;AAC5C,MAAME,UAAU,GAAG,IAAIC,GAAG,CAAS,CAAC;AAYpC,SAASC,QAAQA,CAACC,GAAW,EAAEC,OAAe,EAAQ;EACpD,IAAIJ,UAAU,CAACK,GAAG,CAACF,GAAG,CAAC,EAAE;EACzBH,UAAU,CAACM,GAAG,CAACH,GAAG,CAAC;EACnBJ,GAAG,CAACQ,IAAI,CAACH,OAAO,CAAC;AACnB;AAEA,OAAO,SAASI,yBAAyBA,CAACC,KAIzC,EAA8B;EAC7B,MAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAU,CAAC,GAAGH,KAAK;EAExC,IAAI,CAACI,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACrDR,QAAQ,CACN,SAASQ,KAAK,EAAE,EAChB,yBAAyBA,KAAK,WAChC,CAAC;EACH;EACA,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,GAAG,EAAE,EAAE;IACvCT,QAAQ,CAAC,QAAQS,IAAI,EAAE,EAAE,uBAAuBA,IAAI,SAAS,CAAC;EAChE;EACA,IAAI,CAACE,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC,EAAE;IACjDV,QAAQ,CACN,aAAaU,SAAS,EAAE,EACxB,uBAAuBA,SAAS,iBAClC,CAAC;EACH;EAEA,MAAMG,SAAS,GAAGF,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,GACpCM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,EAAER,KAAK,CAAC,CAAC,GAC/B,CAAC;EACL,MAAMS,QAAQ,GAAGN,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,IAAI,EAAE,GAAGA,IAAI,GAAG,EAAE;EAChE,MAAMS,iBAAiB,GACrBP,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAGA,SAAS,GAAG,CAAC;EAC7D,MAAMS,aAAa,GAAGL,IAAI,CAACC,GAAG,CAACG,iBAAiB,EAAED,QAAQ,GAAG,CAAC,CAAC;EAC/D,MAAMG,MAAM,GAAG,CAACH,QAAQ,GAAGE,aAAa,IAAI,CAAC;EAC7C,MAAME,aAAa,GAAG,CAAC,GAAGP,IAAI,CAACQ,EAAE,GAAGF,MAAM;EAE1C,OAAO;IACLP,SAAS;IACTU,UAAU,EAAET,IAAI,CAACU,KAAK,CAACX,SAAS,GAAG,GAAG,CAAC;IACvCI,QAAQ;IACRE,aAAa;IACbC,MAAM;IACNC,aAAa;IACbI,UAAU,EAAEJ,aAAa,IAAI,CAAC,GAAGR,SAAS;EAC5C,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["createLogger","log","warnedKeys","Set","warnOnce","key","message","has","add","warn","normalizeCircularProgress","input","value","size","thickness","Number","isFinite","safeValue","Math","min","max","safeSize","fallbackThickness","safeThickness","radius","circumference","PI","percentage","round","dashOffset"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/normalizeCircularProgress.ts"],"mappings":";;AAIA,SAASA,YAAY,QAAQ,gCAAuB;AAEpD,MAAMC,GAAG,GAAGD,YAAY,CAAC,kBAAkB,CAAC;AAC5C,MAAME,UAAU,GAAG,IAAIC,GAAG,CAAS,CAAC;AAEpC,SAASC,QAAQA,CAACC,GAAW,EAAEC,OAAe,EAAQ;EACpD,IAAIJ,UAAU,CAACK,GAAG,CAACF,GAAG,CAAC,EAAE;EACzBH,UAAU,CAACM,GAAG,CAACH,GAAG,CAAC;EACnBJ,GAAG,CAACQ,IAAI,CAACH,OAAO,CAAC;AACnB;AAEA,OAAO,SAASI,yBAAyBA,CACvCC,KAA4B,EACA;EAC5B,MAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAU,CAAC,GAAGH,KAAK;EAExC,IAAI,CAACI,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACrDR,QAAQ,CACN,SAASQ,KAAK,EAAE,EAChB,yBAAyBA,KAAK,WAChC,CAAC;EACH;EACA,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,GAAG,EAAE,EAAE;IACvCT,QAAQ,CAAC,QAAQS,IAAI,EAAE,EAAE,uBAAuBA,IAAI,SAAS,CAAC;EAChE;EACA,IAAI,CAACE,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC,EAAE;IACjDV,QAAQ,CACN,aAAaU,SAAS,EAAE,EACxB,uBAAuBA,SAAS,iBAClC,CAAC;EACH;EAEA,MAAMG,SAAS,GAAGF,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,GACpCM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,EAAER,KAAK,CAAC,CAAC,GAC/B,CAAC;EACL,MAAMS,QAAQ,GAAGN,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,IAAI,EAAE,GAAGA,IAAI,GAAG,EAAE;EAChE,MAAMS,iBAAiB,GACrBP,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAGA,SAAS,GAAG,CAAC;EAC7D,MAAMS,aAAa,GAAGL,IAAI,CAACC,GAAG,CAACG,iBAAiB,EAAED,QAAQ,GAAG,CAAC,CAAC;EAC/D,MAAMG,MAAM,GAAG,CAACH,QAAQ,GAAGE,aAAa,IAAI,CAAC;EAC7C,MAAME,aAAa,GAAG,CAAC,GAAGP,IAAI,CAACQ,EAAE,GAAGF,MAAM;EAE1C,OAAO;IACLP,SAAS;IACTU,UAAU,EAAET,IAAI,CAACU,KAAK,CAACX,SAAS,GAAG,GAAG,CAAC;IACvCI,QAAQ;IACRE,aAAa;IACbC,MAAM;IACNC,aAAa;IACbI,UAAU,EAAEJ,aAAa,IAAI,CAAC,GAAGR,SAAS;EAC5C,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet } from 'react-native';
4
+ export const styles = StyleSheet.create({
5
+ center: {
6
+ alignItems: 'center',
7
+ justifyContent: 'center'
8
+ },
9
+ // 固有尺寸避免父级 stretch 拉宽圆环,文字按自然尺寸占位。
10
+ contentSize: {
11
+ width: 'max-content',
12
+ height: 'max-content'
13
+ },
14
+ // 环不参与文字测量,保持显式直径;文字自然撑开最小容器。
15
+ ring: {
16
+ position: 'absolute'
17
+ },
18
+ label: {
19
+ fontWeight: '600',
20
+ textAlign: 'center',
21
+ flexShrink: 0
22
+ }
23
+ });
24
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","styles","create","center","alignItems","justifyContent","contentSize","width","height","ring","position","label","fontWeight","textAlign","flexShrink"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,MAAM,GAAGD,UAAU,CAACE,MAAM,CAAC;EACtCC,MAAM,EAAE;IAAEC,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS,CAAC;EAC1D;EACAC,WAAW,EAAE;IACXC,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE;EACV,CAAC;EACD;EACAC,IAAI,EAAE;IAAEC,QAAQ,EAAE;EAAW,CAAC;EAC9BC,KAAK,EAAE;IAAEC,UAAU,EAAE,KAAK;IAAEC,SAAS,EAAE,QAAQ;IAAEC,UAAU,EAAE;EAAE;AACjE,CAAC,CAAC","ignoreList":[]}
@@ -3,8 +3,11 @@
3
3
  import React from 'react';
4
4
  import Animated from 'react-native-reanimated';
5
5
  import { r, useColors } from "../../../theme/index.js";
6
- import { DOT_DEFAULTS, usePulseWithDefaults } from "./usePulse.js";
6
+ import { createLogger } from "../../../utils/logger/index.js";
7
+ import { usePulseAnimation } from "../shared/pulse/usePulseAnimation.js";
8
+ import { PULSE_DOT_DEFAULTS } from "./constants.js";
7
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
+ const log = createLogger('PulseDot');
8
11
  export function PulseDot({
9
12
  size = r(6),
10
13
  color,
@@ -14,10 +17,7 @@ export function PulseDot({
14
17
  } = {}) {
15
18
  const c = useColors();
16
19
  const fill = color ?? c.primary;
17
- // [L-93] 圆点的 from 默认 0.5(比 <Pulse> 的 0.6 更淡)。默认值交给共享的
18
- // DOT_DEFAULTS,不再在解构里写 `from = 0.5` —— 那样 from 会先被默认值填满,
19
- // 归一化层再也分不清「调用方没传」和「调用方传了 0.5」。
20
- const animatedStyle = usePulseWithDefaults(opts, DOT_DEFAULTS, 'PulseDot');
20
+ const animatedStyle = usePulseAnimation(opts, PULSE_DOT_DEFAULTS, log);
21
21
  return /*#__PURE__*/_jsx(Animated.View, {
22
22
  style: [{
23
23
  width: size,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Animated","r","useColors","DOT_DEFAULTS","usePulseWithDefaults","jsx","_jsx","PulseDot","size","color","style","testID","opts","c","fill","primary","animatedStyle","View","width","height","borderRadius","backgroundColor","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/PulseDot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7C,SAASC,YAAY,EAAEC,oBAAoB,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGhE,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI,GAAGP,CAAC,CAAC,CAAC,CAAC;EACXQ,KAAK;EACLC,KAAK;EACLC,MAAM;EACN,GAAGC;AACU,CAAC,GAAG,CAAC,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAMY,IAAI,GAAGL,KAAK,IAAII,CAAC,CAACE,OAAO;EAC/B;EACA;EACA;EACA,MAAMC,aAAa,GAAGZ,oBAAoB,CAACQ,IAAI,EAAET,YAAY,EAAE,UAAU,CAAC;EAC1E,oBACEG,IAAA,CAACN,QAAQ,CAACiB,IAAI;IACZP,KAAK,EAAE,CACL;MACEQ,KAAK,EAAEV,IAAI;MACXW,MAAM,EAAEX,IAAI;MACZY,YAAY,EAAEZ,IAAI,GAAG,CAAC;MACtBa,eAAe,EAAEP;IACnB,CAAC,EACDE,aAAa,EACbN,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfW,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","Animated","r","useColors","createLogger","usePulseAnimation","PULSE_DOT_DEFAULTS","jsx","_jsx","log","PulseDot","size","color","style","testID","opts","c","fill","primary","animatedStyle","View","width","height","borderRadius","backgroundColor","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/PulseDot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7C,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,iBAAiB,QAAQ,sCAAmC;AACrE,SAASC,kBAAkB,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGjD,MAAMC,GAAG,GAAGL,YAAY,CAAC,UAAU,CAAC;AAEpC,OAAO,SAASM,QAAQA,CAAC;EACvBC,IAAI,GAAGT,CAAC,CAAC,CAAC,CAAC;EACXU,KAAK;EACLC,KAAK;EACLC,MAAM;EACN,GAAGC;AACU,CAAC,GAAG,CAAC,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGb,SAAS,CAAC,CAAC;EACrB,MAAMc,IAAI,GAAGL,KAAK,IAAII,CAAC,CAACE,OAAO;EAC/B,MAAMC,aAAa,GAAGd,iBAAiB,CAACU,IAAI,EAAET,kBAAkB,EAAEG,GAAG,CAAC;EACtE,oBACED,IAAA,CAACP,QAAQ,CAACmB,IAAI;IACZP,KAAK,EAAE,CACL;MACEQ,KAAK,EAAEV,IAAI;MACXW,MAAM,EAAEX,IAAI;MACZY,YAAY,EAAEZ,IAAI,GAAG,CAAC;MACtBa,eAAe,EAAEP;IACnB,CAAC,EACDE,aAAa,EACbN,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfW,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ export const PULSE_DEFAULTS = {
4
+ duration: 700,
5
+ delay: 0,
6
+ from: 0.6,
7
+ to: 1
8
+ };
9
+ export const PULSE_DOT_DEFAULTS = {
10
+ duration: 700,
11
+ delay: 0,
12
+ from: 0.5,
13
+ to: 1
14
+ };
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PULSE_DEFAULTS","duration","delay","from","to","PULSE_DOT_DEFAULTS"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/constants.ts"],"mappings":";;AAEA,OAAO,MAAMA,cAAuC,GAAG;EACrDC,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC;AACD,OAAO,MAAMC,kBAA2C,GAAG;EACzDJ,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC","ignoreList":[]}