@unif/react-native-design 0.8.2 → 0.10.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 (513) hide show
  1. package/README.md +1 -2
  2. package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js +6 -4
  3. package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js.map +1 -1
  4. package/lib/module/components/business/AvatarWithRing/styles.js +15 -3
  5. package/lib/module/components/business/AvatarWithRing/styles.js.map +1 -1
  6. package/lib/module/components/business/Decorations/GradientWash.js +50 -36
  7. package/lib/module/components/business/Decorations/GradientWash.js.map +1 -1
  8. package/lib/module/components/business/Decorations/RadialHalo.js +10 -4
  9. package/lib/module/components/business/Decorations/RadialHalo.js.map +1 -1
  10. package/lib/module/components/business/Decorations/ScreenBackdrop.js +22 -14
  11. package/lib/module/components/business/Decorations/ScreenBackdrop.js.map +1 -1
  12. package/lib/module/components/business/Decorations/index.js +3 -0
  13. package/lib/module/components/business/Decorations/index.js.map +1 -1
  14. package/lib/module/components/business/GlassStats/GlassStats.js +7 -4
  15. package/lib/module/components/business/GlassStats/GlassStats.js.map +1 -1
  16. package/lib/module/components/business/GlassStats/types.js +2 -0
  17. package/lib/module/components/business/VersionPill/VersionPill.js +23 -5
  18. package/lib/module/components/business/VersionPill/VersionPill.js.map +1 -1
  19. package/lib/module/components/business/VersionPill/styles.js +1 -1
  20. package/lib/module/components/business/index.js.map +1 -1
  21. package/lib/module/components/business/useSvgId.js +20 -0
  22. package/lib/module/components/business/useSvgId.js.map +1 -0
  23. package/lib/module/components/ui/Avatar/Avatar.js +13 -8
  24. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  25. package/lib/module/components/ui/Avatar/styles.js +7 -7
  26. package/lib/module/components/ui/Avatar/styles.js.map +1 -1
  27. package/lib/module/components/ui/BlurLayer/BlurLayer.js +5 -1
  28. package/lib/module/components/ui/BlurLayer/BlurLayer.js.map +1 -1
  29. package/lib/module/components/ui/BlurLayer/BlurLayer.web.js +7 -1
  30. package/lib/module/components/ui/BlurLayer/BlurLayer.web.js.map +1 -1
  31. package/lib/module/components/ui/Button/Button.js +2 -1
  32. package/lib/module/components/ui/Button/Button.js.map +1 -1
  33. package/lib/module/components/ui/Button/ButtonBase.js +36 -2
  34. package/lib/module/components/ui/Button/ButtonBase.js.map +1 -1
  35. package/lib/module/components/ui/Button/styles.js +27 -25
  36. package/lib/module/components/ui/Button/styles.js.map +1 -1
  37. package/lib/module/components/ui/Card/Card.js +17 -8
  38. package/lib/module/components/ui/Card/Card.js.map +1 -1
  39. package/lib/module/components/ui/Card/styles.js +6 -1
  40. package/lib/module/components/ui/Card/styles.js.map +1 -1
  41. package/lib/module/components/ui/Carousel/Carousel.js +36 -6
  42. package/lib/module/components/ui/Carousel/Carousel.js.map +1 -1
  43. package/lib/module/components/ui/Cell/Cell.js +23 -5
  44. package/lib/module/components/ui/Cell/Cell.js.map +1 -1
  45. package/lib/module/components/ui/Cell/Leading.js +2 -2
  46. package/lib/module/components/ui/Cell/Leading.js.map +1 -1
  47. package/lib/module/components/ui/Cell/List.js +10 -5
  48. package/lib/module/components/ui/Cell/List.js.map +1 -1
  49. package/lib/module/components/ui/Cell/styles.js +7 -6
  50. package/lib/module/components/ui/Cell/styles.js.map +1 -1
  51. package/lib/module/components/ui/Checkbox/Checkbox.js +10 -8
  52. package/lib/module/components/ui/Checkbox/Checkbox.js.map +1 -1
  53. package/lib/module/components/ui/Checkbox/styles.js +9 -1
  54. package/lib/module/components/ui/Checkbox/styles.js.map +1 -1
  55. package/lib/module/components/ui/Chip/Chip.js +19 -5
  56. package/lib/module/components/ui/Chip/Chip.js.map +1 -1
  57. package/lib/module/components/ui/Confirm/ConfirmHost.js +28 -11
  58. package/lib/module/components/ui/Confirm/ConfirmHost.js.map +1 -1
  59. package/lib/module/components/ui/Confirm/confirm.js +6 -0
  60. package/lib/module/components/ui/Confirm/confirm.js.map +1 -1
  61. package/lib/module/components/ui/DrawerHeader/DrawerHeader.js +14 -9
  62. package/lib/module/components/ui/DrawerHeader/DrawerHeader.js.map +1 -1
  63. package/lib/module/components/ui/DrawerHeader/styles.js +10 -6
  64. package/lib/module/components/ui/DrawerHeader/styles.js.map +1 -1
  65. package/lib/module/components/ui/Empty/Empty.js +5 -4
  66. package/lib/module/components/ui/Empty/Empty.js.map +1 -1
  67. package/lib/module/components/ui/EntryCard/EntryCard.js +5 -3
  68. package/lib/module/components/ui/EntryCard/EntryCard.js.map +1 -1
  69. package/lib/module/components/ui/EntryCard/styles.js +4 -4
  70. package/lib/module/components/ui/EntryCard/styles.js.map +1 -1
  71. package/lib/module/components/ui/Form/FormRow.js +1 -0
  72. package/lib/module/components/ui/Form/FormRow.js.map +1 -1
  73. package/lib/module/components/ui/Form/styles.js +3 -1
  74. package/lib/module/components/ui/Form/styles.js.map +1 -1
  75. package/lib/module/components/ui/Grid/Grid.js +39 -24
  76. package/lib/module/components/ui/Grid/Grid.js.map +1 -1
  77. package/lib/module/components/ui/Grid/styles.js +35 -46
  78. package/lib/module/components/ui/Grid/styles.js.map +1 -1
  79. package/lib/module/components/ui/Icon/Icon.js +46 -29
  80. package/lib/module/components/ui/Icon/Icon.js.map +1 -1
  81. package/lib/module/components/ui/IconButton/IconButton.js +2 -0
  82. package/lib/module/components/ui/IconButton/IconButton.js.map +1 -1
  83. package/lib/module/components/ui/Logo/Logo.js +2 -1
  84. package/lib/module/components/ui/Logo/Logo.js.map +1 -1
  85. package/lib/module/components/ui/NavBar/NavBar.js +15 -3
  86. package/lib/module/components/ui/NavBar/NavBar.js.map +1 -1
  87. package/lib/module/components/ui/PasswordInput/PasswordInput.js +43 -14
  88. package/lib/module/components/ui/PasswordInput/PasswordInput.js.map +1 -1
  89. package/lib/module/components/ui/PasswordInput/styles.js +1 -1
  90. package/lib/module/components/ui/Pulse/Pulse.js +2 -1
  91. package/lib/module/components/ui/Pulse/Pulse.js.map +1 -1
  92. package/lib/module/components/ui/Pulse/PulseDot.js +8 -10
  93. package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
  94. package/lib/module/components/ui/Pulse/types.js +2 -0
  95. package/lib/module/components/ui/Pulse/usePulse.web.js +51 -30
  96. package/lib/module/components/ui/Pulse/usePulse.web.js.map +1 -1
  97. package/lib/module/components/ui/Radio/Radio.js +19 -5
  98. package/lib/module/components/ui/Radio/Radio.js.map +1 -1
  99. package/lib/module/components/ui/Radio/RadioGroup.js +10 -6
  100. package/lib/module/components/ui/Radio/RadioGroup.js.map +1 -1
  101. package/lib/module/components/ui/Radio/styles.js +10 -3
  102. package/lib/module/components/ui/Radio/styles.js.map +1 -1
  103. package/lib/module/components/ui/Reveal/Reveal.web.js +18 -3
  104. package/lib/module/components/ui/Reveal/Reveal.web.js.map +1 -1
  105. package/lib/module/components/ui/Search/Search.js +26 -10
  106. package/lib/module/components/ui/Search/Search.js.map +1 -1
  107. package/lib/module/components/ui/Segmented/Segmented.js +40 -30
  108. package/lib/module/components/ui/Segmented/Segmented.js.map +1 -1
  109. package/lib/module/components/ui/Segmented/styles.js +4 -2
  110. package/lib/module/components/ui/Segmented/styles.js.map +1 -1
  111. package/lib/module/components/ui/Skeleton/Skeleton.js +9 -8
  112. package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
  113. package/lib/module/components/ui/Spinner/Spinner.js +15 -16
  114. package/lib/module/components/ui/Spinner/Spinner.js.map +1 -1
  115. package/lib/module/components/ui/Spinner/Spinner.web.js +10 -14
  116. package/lib/module/components/ui/Spinner/Spinner.web.js.map +1 -1
  117. package/lib/module/components/ui/Spinner/shared.js +31 -0
  118. package/lib/module/components/ui/Spinner/shared.js.map +1 -0
  119. package/lib/module/components/ui/StatusDot/StatusDot.js +21 -4
  120. package/lib/module/components/ui/StatusDot/StatusDot.js.map +1 -1
  121. package/lib/module/components/ui/StatusDot/styles.js +1 -1
  122. package/lib/module/components/ui/StatusDot/types.js +2 -0
  123. package/lib/module/components/ui/Stepper/Stepper.js +46 -10
  124. package/lib/module/components/ui/Stepper/Stepper.js.map +1 -1
  125. package/lib/module/components/ui/Switch/Switch.js +6 -11
  126. package/lib/module/components/ui/Switch/Switch.js.map +1 -1
  127. package/lib/module/components/ui/Switch/Switch.web.js +2 -8
  128. package/lib/module/components/ui/Switch/Switch.web.js.map +1 -1
  129. package/lib/module/components/ui/Switch/styles.js +12 -3
  130. package/lib/module/components/ui/Switch/styles.js.map +1 -1
  131. package/lib/module/components/ui/TabBar/TabBar.js +10 -6
  132. package/lib/module/components/ui/TabBar/TabBar.js.map +1 -1
  133. package/lib/module/components/ui/TabBar/styles.js +28 -39
  134. package/lib/module/components/ui/TabBar/styles.js.map +1 -1
  135. package/lib/module/components/ui/Tabs/Tabs.js +19 -5
  136. package/lib/module/components/ui/Tabs/Tabs.js.map +1 -1
  137. package/lib/module/components/ui/Tabs/styles.js +6 -2
  138. package/lib/module/components/ui/Tabs/styles.js.map +1 -1
  139. package/lib/module/components/ui/Tabs/types.js +2 -0
  140. package/lib/module/components/ui/Tag/styles.js +15 -14
  141. package/lib/module/components/ui/Tag/styles.js.map +1 -1
  142. package/lib/module/components/ui/TextField/TextFieldBase.js +24 -6
  143. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  144. package/lib/module/components/ui/Thumbnail/Thumbnail.js +11 -3
  145. package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
  146. package/lib/module/components/ui/Thumbnail/styles.js +6 -2
  147. package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
  148. package/lib/module/components/ui/Toast/ToastHost.js +16 -5
  149. package/lib/module/components/ui/Toast/ToastHost.js.map +1 -1
  150. package/lib/module/components/ui/Toast/ToastHost.web.js +21 -4
  151. package/lib/module/components/ui/Toast/ToastHost.web.js.map +1 -1
  152. package/lib/module/components/ui/Toast/styles.js +2 -0
  153. package/lib/module/components/ui/Toast/styles.js.map +1 -1
  154. package/lib/module/components/ui/Toast/toast.js +23 -3
  155. package/lib/module/components/ui/Toast/toast.js.map +1 -1
  156. package/lib/module/components/ui/shared/badgeStyles.js +31 -0
  157. package/lib/module/components/ui/shared/badgeStyles.js.map +1 -0
  158. package/lib/module/icons/data.js +45 -19
  159. package/lib/module/icons/data.js.map +1 -1
  160. package/lib/module/theme/colors.js +28 -10
  161. package/lib/module/theme/colors.js.map +1 -1
  162. package/lib/module/theme/index.js +6 -2
  163. package/lib/module/theme/index.js.map +1 -1
  164. package/lib/module/theme/scale.js +9 -1
  165. package/lib/module/theme/scale.js.map +1 -1
  166. package/lib/module/theme/shadow.js +24 -41
  167. package/lib/module/theme/shadow.js.map +1 -1
  168. package/lib/module/theme/tokens.js +10 -5
  169. package/lib/module/theme/tokens.js.map +1 -1
  170. package/lib/module/theme/usePrefersReducedMotion.js +12 -0
  171. package/lib/module/theme/usePrefersReducedMotion.js.map +1 -0
  172. package/lib/module/theme/usePrefersReducedMotion.web.js +25 -0
  173. package/lib/module/theme/usePrefersReducedMotion.web.js.map +1 -0
  174. package/lib/module/theme/useTheme.js +13 -0
  175. package/lib/module/theme/useTheme.js.map +1 -1
  176. package/lib/module/utils/logger/logger.js +5 -1
  177. package/lib/module/utils/logger/logger.js.map +1 -1
  178. package/lib/module/utils/testID/testID.js +6 -3
  179. package/lib/module/utils/testID/testID.js.map +1 -1
  180. package/lib/typescript/src/components/business/AvatarWithRing/AvatarWithRing.d.ts +1 -1
  181. package/lib/typescript/src/components/business/AvatarWithRing/AvatarWithRing.d.ts.map +1 -1
  182. package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts +5 -5
  183. package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts.map +1 -1
  184. package/lib/typescript/src/components/business/AvatarWithRing/types.d.ts +3 -1
  185. package/lib/typescript/src/components/business/AvatarWithRing/types.d.ts.map +1 -1
  186. package/lib/typescript/src/components/business/Decorations/GradientWash.d.ts +25 -0
  187. package/lib/typescript/src/components/business/Decorations/GradientWash.d.ts.map +1 -1
  188. package/lib/typescript/src/components/business/Decorations/RadialHalo.d.ts.map +1 -1
  189. package/lib/typescript/src/components/business/Decorations/ScreenBackdrop.d.ts +1 -1
  190. package/lib/typescript/src/components/business/Decorations/ScreenBackdrop.d.ts.map +1 -1
  191. package/lib/typescript/src/components/business/Decorations/index.d.ts +1 -1
  192. package/lib/typescript/src/components/business/Decorations/index.d.ts.map +1 -1
  193. package/lib/typescript/src/components/business/Decorations/types.d.ts +2 -0
  194. package/lib/typescript/src/components/business/Decorations/types.d.ts.map +1 -1
  195. package/lib/typescript/src/components/business/GlassStats/GlassStats.d.ts +1 -1
  196. package/lib/typescript/src/components/business/GlassStats/GlassStats.d.ts.map +1 -1
  197. package/lib/typescript/src/components/business/GlassStats/styles.d.ts +2 -2
  198. package/lib/typescript/src/components/business/GlassStats/types.d.ts +5 -0
  199. package/lib/typescript/src/components/business/GlassStats/types.d.ts.map +1 -1
  200. package/lib/typescript/src/components/business/VersionPill/VersionPill.d.ts +1 -1
  201. package/lib/typescript/src/components/business/VersionPill/VersionPill.d.ts.map +1 -1
  202. package/lib/typescript/src/components/business/VersionPill/styles.d.ts +1 -1
  203. package/lib/typescript/src/components/business/VersionPill/styles.d.ts.map +1 -1
  204. package/lib/typescript/src/components/business/VersionPill/types.d.ts +13 -1
  205. package/lib/typescript/src/components/business/VersionPill/types.d.ts.map +1 -1
  206. package/lib/typescript/src/components/business/index.d.ts +1 -1
  207. package/lib/typescript/src/components/business/index.d.ts.map +1 -1
  208. package/lib/typescript/src/components/business/useSvgId.d.ts +12 -0
  209. package/lib/typescript/src/components/business/useSvgId.d.ts.map +1 -0
  210. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts +1 -1
  211. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
  212. package/lib/typescript/src/components/ui/Avatar/styles.d.ts +1 -1
  213. package/lib/typescript/src/components/ui/Avatar/styles.d.ts.map +1 -1
  214. package/lib/typescript/src/components/ui/Avatar/types.d.ts +3 -1
  215. package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
  216. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.d.ts +1 -1
  217. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.d.ts.map +1 -1
  218. package/lib/typescript/src/components/ui/BlurLayer/BlurLayer.web.d.ts.map +1 -1
  219. package/lib/typescript/src/components/ui/Button/Button.d.ts +1 -1
  220. package/lib/typescript/src/components/ui/Button/Button.d.ts.map +1 -1
  221. package/lib/typescript/src/components/ui/Button/ButtonBase.d.ts.map +1 -1
  222. package/lib/typescript/src/components/ui/Button/styles.d.ts +2 -1
  223. package/lib/typescript/src/components/ui/Button/styles.d.ts.map +1 -1
  224. package/lib/typescript/src/components/ui/Button/types.d.ts +1 -1
  225. package/lib/typescript/src/components/ui/Button/types.d.ts.map +1 -1
  226. package/lib/typescript/src/components/ui/Card/Card.d.ts.map +1 -1
  227. package/lib/typescript/src/components/ui/Card/styles.d.ts +2 -0
  228. package/lib/typescript/src/components/ui/Card/styles.d.ts.map +1 -1
  229. package/lib/typescript/src/components/ui/Card/types.d.ts +4 -4
  230. package/lib/typescript/src/components/ui/Card/types.d.ts.map +1 -1
  231. package/lib/typescript/src/components/ui/Carousel/Carousel.d.ts +4 -11
  232. package/lib/typescript/src/components/ui/Carousel/Carousel.d.ts.map +1 -1
  233. package/lib/typescript/src/components/ui/Carousel/index.d.ts +1 -1
  234. package/lib/typescript/src/components/ui/Carousel/index.d.ts.map +1 -1
  235. package/lib/typescript/src/components/ui/Carousel/types.d.ts +4 -0
  236. package/lib/typescript/src/components/ui/Carousel/types.d.ts.map +1 -1
  237. package/lib/typescript/src/components/ui/Cell/Cell.d.ts.map +1 -1
  238. package/lib/typescript/src/components/ui/Cell/List.d.ts.map +1 -1
  239. package/lib/typescript/src/components/ui/Cell/styles.d.ts +1 -1
  240. package/lib/typescript/src/components/ui/Cell/styles.d.ts.map +1 -1
  241. package/lib/typescript/src/components/ui/Cell/types.d.ts +5 -2
  242. package/lib/typescript/src/components/ui/Cell/types.d.ts.map +1 -1
  243. package/lib/typescript/src/components/ui/Checkbox/Checkbox.d.ts.map +1 -1
  244. package/lib/typescript/src/components/ui/Checkbox/styles.d.ts +6 -0
  245. package/lib/typescript/src/components/ui/Checkbox/styles.d.ts.map +1 -1
  246. package/lib/typescript/src/components/ui/Chip/Chip.d.ts +4 -3
  247. package/lib/typescript/src/components/ui/Chip/Chip.d.ts.map +1 -1
  248. package/lib/typescript/src/components/ui/Chip/types.d.ts +2 -0
  249. package/lib/typescript/src/components/ui/Chip/types.d.ts.map +1 -1
  250. package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts.map +1 -1
  251. package/lib/typescript/src/components/ui/Confirm/confirm.d.ts.map +1 -1
  252. package/lib/typescript/src/components/ui/Confirm/types.d.ts +4 -2
  253. package/lib/typescript/src/components/ui/Confirm/types.d.ts.map +1 -1
  254. package/lib/typescript/src/components/ui/DrawerHeader/DrawerHeader.d.ts +1 -1
  255. package/lib/typescript/src/components/ui/DrawerHeader/DrawerHeader.d.ts.map +1 -1
  256. package/lib/typescript/src/components/ui/DrawerHeader/styles.d.ts.map +1 -1
  257. package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts +3 -1
  258. package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts.map +1 -1
  259. package/lib/typescript/src/components/ui/Empty/Empty.d.ts +2 -2
  260. package/lib/typescript/src/components/ui/Empty/Empty.d.ts.map +1 -1
  261. package/lib/typescript/src/components/ui/Empty/types.d.ts +3 -0
  262. package/lib/typescript/src/components/ui/Empty/types.d.ts.map +1 -1
  263. package/lib/typescript/src/components/ui/EntryCard/EntryCard.d.ts.map +1 -1
  264. package/lib/typescript/src/components/ui/EntryCard/styles.d.ts.map +1 -1
  265. package/lib/typescript/src/components/ui/EntryCard/types.d.ts +2 -2
  266. package/lib/typescript/src/components/ui/EntryCard/types.d.ts.map +1 -1
  267. package/lib/typescript/src/components/ui/Form/FormRow.d.ts.map +1 -1
  268. package/lib/typescript/src/components/ui/Form/styles.d.ts +1 -0
  269. package/lib/typescript/src/components/ui/Form/styles.d.ts.map +1 -1
  270. package/lib/typescript/src/components/ui/Form/types.d.ts +7 -2
  271. package/lib/typescript/src/components/ui/Form/types.d.ts.map +1 -1
  272. package/lib/typescript/src/components/ui/Grid/Grid.d.ts +1 -1
  273. package/lib/typescript/src/components/ui/Grid/Grid.d.ts.map +1 -1
  274. package/lib/typescript/src/components/ui/Grid/styles.d.ts.map +1 -1
  275. package/lib/typescript/src/components/ui/Grid/types.d.ts +4 -1
  276. package/lib/typescript/src/components/ui/Grid/types.d.ts.map +1 -1
  277. package/lib/typescript/src/components/ui/Icon/Icon.d.ts.map +1 -1
  278. package/lib/typescript/src/components/ui/IconButton/IconButton.d.ts +1 -1
  279. package/lib/typescript/src/components/ui/IconButton/IconButton.d.ts.map +1 -1
  280. package/lib/typescript/src/components/ui/IconButton/types.d.ts +7 -2
  281. package/lib/typescript/src/components/ui/IconButton/types.d.ts.map +1 -1
  282. package/lib/typescript/src/components/ui/Input/Input.d.ts +16 -16
  283. package/lib/typescript/src/components/ui/Input/types.d.ts +3 -2
  284. package/lib/typescript/src/components/ui/Input/types.d.ts.map +1 -1
  285. package/lib/typescript/src/components/ui/Logo/Logo.d.ts.map +1 -1
  286. package/lib/typescript/src/components/ui/NavBar/NavBar.d.ts +8 -1
  287. package/lib/typescript/src/components/ui/NavBar/NavBar.d.ts.map +1 -1
  288. package/lib/typescript/src/components/ui/NavBar/types.d.ts +5 -1
  289. package/lib/typescript/src/components/ui/NavBar/types.d.ts.map +1 -1
  290. package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts +13 -5
  291. package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts.map +1 -1
  292. package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts +1 -1
  293. package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts.map +1 -1
  294. package/lib/typescript/src/components/ui/PasswordInput/types.d.ts +7 -2
  295. package/lib/typescript/src/components/ui/PasswordInput/types.d.ts.map +1 -1
  296. package/lib/typescript/src/components/ui/Pulse/Pulse.d.ts +1 -1
  297. package/lib/typescript/src/components/ui/Pulse/Pulse.d.ts.map +1 -1
  298. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts +1 -1
  299. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
  300. package/lib/typescript/src/components/ui/Pulse/types.d.ts +5 -0
  301. package/lib/typescript/src/components/ui/Pulse/types.d.ts.map +1 -1
  302. package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts +12 -8
  303. package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts.map +1 -1
  304. package/lib/typescript/src/components/ui/Radio/Radio.d.ts.map +1 -1
  305. package/lib/typescript/src/components/ui/Radio/RadioGroup.d.ts.map +1 -1
  306. package/lib/typescript/src/components/ui/Radio/styles.d.ts +4 -2
  307. package/lib/typescript/src/components/ui/Radio/styles.d.ts.map +1 -1
  308. package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts +9 -0
  309. package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts.map +1 -1
  310. package/lib/typescript/src/components/ui/Search/Search.d.ts +16 -15
  311. package/lib/typescript/src/components/ui/Search/Search.d.ts.map +1 -1
  312. package/lib/typescript/src/components/ui/Search/types.d.ts +3 -1
  313. package/lib/typescript/src/components/ui/Search/types.d.ts.map +1 -1
  314. package/lib/typescript/src/components/ui/Segmented/Segmented.d.ts +1 -1
  315. package/lib/typescript/src/components/ui/Segmented/Segmented.d.ts.map +1 -1
  316. package/lib/typescript/src/components/ui/Segmented/styles.d.ts +1 -1
  317. package/lib/typescript/src/components/ui/Segmented/styles.d.ts.map +1 -1
  318. package/lib/typescript/src/components/ui/Segmented/types.d.ts +2 -0
  319. package/lib/typescript/src/components/ui/Segmented/types.d.ts.map +1 -1
  320. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts +3 -2
  321. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
  322. package/lib/typescript/src/components/ui/Spinner/Spinner.d.ts.map +1 -1
  323. package/lib/typescript/src/components/ui/Spinner/Spinner.web.d.ts.map +1 -1
  324. package/lib/typescript/src/components/ui/Spinner/shared.d.ts +5 -0
  325. package/lib/typescript/src/components/ui/Spinner/shared.d.ts.map +1 -0
  326. package/lib/typescript/src/components/ui/StatusDot/StatusDot.d.ts +1 -5
  327. package/lib/typescript/src/components/ui/StatusDot/StatusDot.d.ts.map +1 -1
  328. package/lib/typescript/src/components/ui/StatusDot/styles.d.ts +1 -1
  329. package/lib/typescript/src/components/ui/StatusDot/types.d.ts +13 -1
  330. package/lib/typescript/src/components/ui/StatusDot/types.d.ts.map +1 -1
  331. package/lib/typescript/src/components/ui/Stepper/Stepper.d.ts.map +1 -1
  332. package/lib/typescript/src/components/ui/Switch/Switch.d.ts.map +1 -1
  333. package/lib/typescript/src/components/ui/Switch/Switch.web.d.ts.map +1 -1
  334. package/lib/typescript/src/components/ui/Switch/styles.d.ts +7 -1
  335. package/lib/typescript/src/components/ui/Switch/styles.d.ts.map +1 -1
  336. package/lib/typescript/src/components/ui/TabBar/TabBar.d.ts +2 -2
  337. package/lib/typescript/src/components/ui/TabBar/TabBar.d.ts.map +1 -1
  338. package/lib/typescript/src/components/ui/TabBar/styles.d.ts.map +1 -1
  339. package/lib/typescript/src/components/ui/TabBar/types.d.ts +3 -0
  340. package/lib/typescript/src/components/ui/TabBar/types.d.ts.map +1 -1
  341. package/lib/typescript/src/components/ui/Tabs/Tabs.d.ts +1 -1
  342. package/lib/typescript/src/components/ui/Tabs/Tabs.d.ts.map +1 -1
  343. package/lib/typescript/src/components/ui/Tabs/styles.d.ts.map +1 -1
  344. package/lib/typescript/src/components/ui/Tabs/types.d.ts +9 -1
  345. package/lib/typescript/src/components/ui/Tabs/types.d.ts.map +1 -1
  346. package/lib/typescript/src/components/ui/Tag/styles.d.ts +2 -1
  347. package/lib/typescript/src/components/ui/Tag/styles.d.ts.map +1 -1
  348. package/lib/typescript/src/components/ui/Tag/types.d.ts +6 -2
  349. package/lib/typescript/src/components/ui/Tag/types.d.ts.map +1 -1
  350. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts +16 -16
  351. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  352. package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts +16 -16
  353. package/lib/typescript/src/components/ui/Textarea/types.d.ts +2 -1
  354. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  355. package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
  356. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +3 -0
  357. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
  358. package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts.map +1 -1
  359. package/lib/typescript/src/components/ui/Toast/ToastHost.web.d.ts.map +1 -1
  360. package/lib/typescript/src/components/ui/Toast/styles.d.ts.map +1 -1
  361. package/lib/typescript/src/components/ui/Toast/toast.d.ts +0 -5
  362. package/lib/typescript/src/components/ui/Toast/toast.d.ts.map +1 -1
  363. package/lib/typescript/src/components/ui/Toast/types.d.ts +1 -1
  364. package/lib/typescript/src/components/ui/Toast/types.d.ts.map +1 -1
  365. package/lib/typescript/src/components/ui/shared/badgeStyles.d.ts +27 -0
  366. package/lib/typescript/src/components/ui/shared/badgeStyles.d.ts.map +1 -0
  367. package/lib/typescript/src/icons/data.d.ts +1 -1
  368. package/lib/typescript/src/icons/data.d.ts.map +1 -1
  369. package/lib/typescript/src/icons/types.d.ts +18 -12
  370. package/lib/typescript/src/icons/types.d.ts.map +1 -1
  371. package/lib/typescript/src/theme/colors.d.ts +9 -3
  372. package/lib/typescript/src/theme/colors.d.ts.map +1 -1
  373. package/lib/typescript/src/theme/index.d.ts +3 -2
  374. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  375. package/lib/typescript/src/theme/scale.d.ts.map +1 -1
  376. package/lib/typescript/src/theme/shadow.d.ts +8 -8
  377. package/lib/typescript/src/theme/shadow.d.ts.map +1 -1
  378. package/lib/typescript/src/theme/tokens.d.ts +7 -3
  379. package/lib/typescript/src/theme/tokens.d.ts.map +1 -1
  380. package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts +8 -0
  381. package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts.map +1 -0
  382. package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts +6 -0
  383. package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts.map +1 -0
  384. package/lib/typescript/src/theme/useTheme.d.ts.map +1 -1
  385. package/lib/typescript/src/utils/logger/logger.d.ts.map +1 -1
  386. package/lib/typescript/src/utils/testID/testID.d.ts +6 -3
  387. package/lib/typescript/src/utils/testID/testID.d.ts.map +1 -1
  388. package/package.json +2 -1
  389. package/src/components/business/AvatarWithRing/AvatarWithRing.tsx +5 -4
  390. package/src/components/business/AvatarWithRing/styles.ts +21 -3
  391. package/src/components/business/AvatarWithRing/types.ts +3 -1
  392. package/src/components/business/Decorations/GradientWash.tsx +46 -22
  393. package/src/components/business/Decorations/RadialHalo.tsx +8 -4
  394. package/src/components/business/Decorations/ScreenBackdrop.tsx +23 -5
  395. package/src/components/business/Decorations/index.ts +4 -0
  396. package/src/components/business/Decorations/types.ts +2 -0
  397. package/src/components/business/GlassStats/GlassStats.tsx +8 -4
  398. package/src/components/business/GlassStats/types.ts +6 -0
  399. package/src/components/business/VersionPill/VersionPill.tsx +46 -6
  400. package/src/components/business/VersionPill/styles.ts +1 -1
  401. package/src/components/business/VersionPill/types.ts +13 -1
  402. package/src/components/business/index.ts +1 -0
  403. package/src/components/business/useSvgId.ts +17 -0
  404. package/src/components/ui/Avatar/Avatar.tsx +17 -10
  405. package/src/components/ui/Avatar/styles.ts +7 -7
  406. package/src/components/ui/Avatar/types.ts +3 -1
  407. package/src/components/ui/BlurLayer/BlurLayer.tsx +4 -1
  408. package/src/components/ui/BlurLayer/BlurLayer.web.tsx +7 -1
  409. package/src/components/ui/Button/Button.tsx +2 -1
  410. package/src/components/ui/Button/ButtonBase.tsx +26 -2
  411. package/src/components/ui/Button/styles.ts +27 -25
  412. package/src/components/ui/Button/types.ts +1 -1
  413. package/src/components/ui/Card/Card.tsx +17 -7
  414. package/src/components/ui/Card/styles.ts +5 -0
  415. package/src/components/ui/Card/types.ts +4 -4
  416. package/src/components/ui/Carousel/Carousel.tsx +44 -15
  417. package/src/components/ui/Carousel/index.ts +1 -1
  418. package/src/components/ui/Carousel/types.ts +5 -0
  419. package/src/components/ui/Cell/Cell.tsx +28 -6
  420. package/src/components/ui/Cell/Leading.tsx +2 -2
  421. package/src/components/ui/Cell/List.tsx +14 -8
  422. package/src/components/ui/Cell/styles.ts +8 -5
  423. package/src/components/ui/Cell/types.ts +5 -2
  424. package/src/components/ui/Checkbox/Checkbox.tsx +18 -5
  425. package/src/components/ui/Checkbox/styles.ts +8 -0
  426. package/src/components/ui/Chip/Chip.tsx +20 -5
  427. package/src/components/ui/Chip/types.ts +2 -0
  428. package/src/components/ui/Confirm/ConfirmHost.tsx +26 -10
  429. package/src/components/ui/Confirm/confirm.ts +8 -0
  430. package/src/components/ui/Confirm/types.ts +4 -2
  431. package/src/components/ui/DrawerHeader/DrawerHeader.tsx +18 -12
  432. package/src/components/ui/DrawerHeader/styles.ts +10 -6
  433. package/src/components/ui/DrawerHeader/types.ts +3 -1
  434. package/src/components/ui/Empty/Empty.tsx +5 -4
  435. package/src/components/ui/Empty/types.ts +3 -0
  436. package/src/components/ui/EntryCard/EntryCard.tsx +5 -3
  437. package/src/components/ui/EntryCard/styles.ts +13 -4
  438. package/src/components/ui/EntryCard/types.ts +2 -2
  439. package/src/components/ui/Form/FormRow.tsx +7 -1
  440. package/src/components/ui/Form/styles.ts +2 -0
  441. package/src/components/ui/Form/types.ts +7 -2
  442. package/src/components/ui/Grid/Grid.tsx +42 -25
  443. package/src/components/ui/Grid/styles.ts +8 -20
  444. package/src/components/ui/Grid/types.ts +4 -1
  445. package/src/components/ui/Icon/Icon.tsx +42 -27
  446. package/src/components/ui/IconButton/IconButton.tsx +2 -0
  447. package/src/components/ui/IconButton/types.ts +8 -2
  448. package/src/components/ui/Input/types.ts +3 -2
  449. package/src/components/ui/Logo/Logo.tsx +2 -1
  450. package/src/components/ui/NavBar/NavBar.tsx +16 -2
  451. package/src/components/ui/NavBar/types.ts +5 -1
  452. package/src/components/ui/PasswordInput/PasswordInput.tsx +77 -43
  453. package/src/components/ui/PasswordInput/styles.ts +1 -1
  454. package/src/components/ui/PasswordInput/types.ts +7 -2
  455. package/src/components/ui/Pulse/Pulse.tsx +2 -1
  456. package/src/components/ui/Pulse/PulseDot.tsx +7 -6
  457. package/src/components/ui/Pulse/types.ts +6 -0
  458. package/src/components/ui/Pulse/usePulse.web.ts +50 -33
  459. package/src/components/ui/Radio/Radio.tsx +29 -6
  460. package/src/components/ui/Radio/RadioGroup.tsx +10 -3
  461. package/src/components/ui/Radio/styles.ts +9 -2
  462. package/src/components/ui/Reveal/Reveal.web.tsx +18 -3
  463. package/src/components/ui/Search/Search.tsx +22 -9
  464. package/src/components/ui/Search/types.ts +7 -1
  465. package/src/components/ui/Segmented/Segmented.tsx +8 -3
  466. package/src/components/ui/Segmented/styles.ts +4 -2
  467. package/src/components/ui/Segmented/types.ts +2 -0
  468. package/src/components/ui/Skeleton/Skeleton.tsx +9 -8
  469. package/src/components/ui/Spinner/Spinner.tsx +17 -17
  470. package/src/components/ui/Spinner/Spinner.web.tsx +7 -15
  471. package/src/components/ui/Spinner/shared.ts +37 -0
  472. package/src/components/ui/StatusDot/StatusDot.tsx +21 -3
  473. package/src/components/ui/StatusDot/styles.ts +1 -1
  474. package/src/components/ui/StatusDot/types.ts +14 -1
  475. package/src/components/ui/Stepper/Stepper.tsx +45 -10
  476. package/src/components/ui/Switch/Switch.tsx +4 -10
  477. package/src/components/ui/Switch/Switch.web.tsx +2 -8
  478. package/src/components/ui/Switch/styles.ts +10 -1
  479. package/src/components/ui/TabBar/TabBar.tsx +14 -6
  480. package/src/components/ui/TabBar/styles.ts +9 -21
  481. package/src/components/ui/TabBar/types.ts +3 -0
  482. package/src/components/ui/Tabs/Tabs.tsx +24 -5
  483. package/src/components/ui/Tabs/styles.ts +6 -2
  484. package/src/components/ui/Tabs/types.ts +10 -1
  485. package/src/components/ui/Tag/styles.ts +18 -10
  486. package/src/components/ui/Tag/types.ts +6 -2
  487. package/src/components/ui/TextField/TextFieldBase.tsx +31 -6
  488. package/src/components/ui/Textarea/types.ts +2 -1
  489. package/src/components/ui/Thumbnail/Thumbnail.tsx +14 -3
  490. package/src/components/ui/Thumbnail/styles.ts +6 -2
  491. package/src/components/ui/Toast/ToastHost.tsx +16 -8
  492. package/src/components/ui/Toast/ToastHost.web.tsx +26 -4
  493. package/src/components/ui/Toast/styles.ts +2 -0
  494. package/src/components/ui/Toast/toast.ts +35 -2
  495. package/src/components/ui/Toast/types.ts +1 -1
  496. package/src/components/ui/shared/badgeStyles.ts +36 -0
  497. package/src/icons/data.ts +30 -0
  498. package/src/icons/types.ts +25 -10
  499. package/src/theme/colors.ts +29 -10
  500. package/src/theme/index.ts +10 -1
  501. package/src/theme/scale.ts +5 -1
  502. package/src/theme/shadow.ts +33 -24
  503. package/src/theme/tokens.ts +10 -5
  504. package/src/theme/usePrefersReducedMotion.ts +9 -0
  505. package/src/theme/usePrefersReducedMotion.web.ts +27 -0
  506. package/src/theme/useTheme.ts +15 -0
  507. package/src/utils/logger/logger.ts +5 -1
  508. package/src/utils/testID/testID.ts +6 -3
  509. package/lib/module/components/index.js +0 -5
  510. package/lib/module/components/index.js.map +0 -1
  511. package/lib/typescript/src/components/index.d.ts +0 -3
  512. package/lib/typescript/src/components/index.d.ts.map +0 -1
  513. package/src/components/index.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"names":["React","ButtonBase","Icon","jsx","_jsx","IconButton","icon","onPress","size","variant","color","disabled","accessibilityLabel","accessibilityHint","style","testID","square","children","sizing","palette","name","fs","fg"],"sourceRoot":"../../../../../src","sources":["components/ui/IconButton/IconButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,yBAAsB;AACjD,SAASC,IAAI,QAAQ,kBAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,IAAI;EACJC,OAAO;EACPC,IAAI,GAAG,IAAI;EACXC,OAAO,GAAG,OAAO;EACjBC,KAAK;EACLC,QAAQ;EACRC,kBAAkB;EAClBC,iBAAiB;EACjBC,KAAK;EACLC;AACe,CAAC,EAAqB;EACrC,oBACEX,IAAA,CAACH,UAAU;IACTe,MAAM;IACNT,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA,IAAK;IACXC,OAAO,EAAEA,OAAQ;IACjBE,QAAQ,EAAEA,QAAS;IACnBC,kBAAkB,EAAEA,kBAAmB;IACvCC,iBAAiB,EAAEA,iBAAkB;IACrCC,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IAAAE,QAAA,EAEdA,CAAC;MAAEC,MAAM;MAAEC;IAAQ,CAAC,kBACnBf,IAAA,CAACF,IAAI;MAACkB,IAAI,EAAEd,IAAK;MAACE,IAAI,EAAEU,MAAM,CAACG,EAAE,GAAG,CAAE;MAACX,KAAK,EAAEA,KAAK,IAAIS,OAAO,CAACG;IAAG,CAAE;EACrE,CACS,CAAC;AAEjB","ignoreList":[]}
1
+ {"version":3,"names":["React","ButtonBase","Icon","jsx","_jsx","IconButton","icon","onPress","size","variant","color","disabled","loading","accessibilityLabel","accessibilityHint","style","testID","square","children","sizing","palette","name","fs","fg"],"sourceRoot":"../../../../../src","sources":["components/ui/IconButton/IconButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,yBAAsB;AACjD,SAASC,IAAI,QAAQ,kBAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,IAAI;EACJC,OAAO;EACPC,IAAI,GAAG,IAAI;EACXC,OAAO,GAAG,OAAO;EACjBC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,kBAAkB;EAClBC,iBAAiB;EACjBC,KAAK;EACLC;AACe,CAAC,EAAqB;EACrC,oBACEZ,IAAA,CAACH,UAAU;IACTgB,MAAM;IACNV,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA,IAAK;IACXC,OAAO,EAAEA,OAAQ;IACjBG,OAAO,EAAEA,OAAQ;IACjBD,QAAQ,EAAEA,QAAS;IACnBE,kBAAkB,EAAEA,kBAAmB;IACvCC,iBAAiB,EAAEA,iBAAkB;IACrCC,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IAAAE,QAAA,EAEdA,CAAC;MAAEC,MAAM;MAAEC;IAAQ,CAAC,kBACnBhB,IAAA,CAACF,IAAI;MAACmB,IAAI,EAAEf,IAAK;MAACE,IAAI,EAAEW,MAAM,CAACG,EAAE,GAAG,CAAE;MAACZ,KAAK,EAAEA,KAAK,IAAIU,OAAO,CAACG;IAAG,CAAE;EACrE,CACS,CAAC;AAEjB","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import React from 'react';
4
4
  import { Image } from 'react-native';
5
+ import { r } from "../../../theme/index.js";
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  /**
7
8
  * 品牌 logo 容器组件 —— 提供尺寸 / 圆角 / a11y 标准化包装。
@@ -14,7 +15,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
14
15
  */
15
16
  export function Logo({
16
17
  source,
17
- size = 64,
18
+ size = r(64),
18
19
  borderRadius,
19
20
  label = 'Logo',
20
21
  style,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Image","jsx","_jsx","Logo","source","size","borderRadius","label","style","testID","accessibilityLabel","width","height","resizeMode"],"sourceRoot":"../../../../../src","sources":["components/ui/Logo/Logo.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAC;EACnBC,MAAM;EACNC,IAAI,GAAG,EAAE;EACTC,YAAY;EACZC,KAAK,GAAG,MAAM;EACdC,KAAK;EACLC;AACS,CAAC,EAAqB;EAC/B,oBACEP,IAAA,CAACF,KAAK;IACJI,MAAM,EAAEA,MAAO;IACfM,kBAAkB,EAAEH,KAAM;IAC1BC,KAAK,EAAE,CACL;MACEG,KAAK,EAAEN,IAAI;MACXO,MAAM,EAAEP,IAAI;MACZC,YAAY,EAAEA,YAAY,IAAID,IAAI,GAAG;IACvC,CAAC,EACDG,KAAK,CACL;IACFK,UAAU,EAAC,OAAO;IAClBJ,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","Image","r","jsx","_jsx","Logo","source","size","borderRadius","label","style","testID","accessibilityLabel","width","height","resizeMode"],"sourceRoot":"../../../../../src","sources":["components/ui/Logo/Logo.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,QAAQ,cAAc;AACpC,SAASC,CAAC,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAC;EACnBC,MAAM;EACNC,IAAI,GAAGL,CAAC,CAAC,EAAE,CAAC;EACZM,YAAY;EACZC,KAAK,GAAG,MAAM;EACdC,KAAK;EACLC;AACS,CAAC,EAAqB;EAC/B,oBACEP,IAAA,CAACH,KAAK;IACJK,MAAM,EAAEA,MAAO;IACfM,kBAAkB,EAAEH,KAAM;IAC1BC,KAAK,EAAE,CACL;MACEG,KAAK,EAAEN,IAAI;MACXO,MAAM,EAAEP,IAAI;MACZC,YAAY,EAAEA,YAAY,IAAID,IAAI,GAAG;IACvC,CAAC,EACDG,KAAK,CACL;IACFK,UAAU,EAAC,OAAO;IAClBJ,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN","ignoreList":[]}
@@ -7,9 +7,12 @@ import { IconButton } from "../IconButton/index.js";
7
7
  import { isSlot } from "./isSlot.js";
8
8
  import { makeStyles } from "./styles.js";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- /** NavBarSlotConfig → IconButton(variant='ghost' + 外部 tint)。
11
- * accessibilityLabel 必填(IconButton 强制),fallback 到 icon 名。 */
10
+ /** NavBarSlotConfig → IconButton(variant='ghost' + 外部 tint)。 */
12
11
  function renderSlot(slot, tint) {
12
+ // [L-50] 缺 accessibilityLabel 时 dev 告警 —— 回退读英文 icon 名(如 "menu")体验不佳。
13
+ if (!slot.accessibilityLabel && typeof __DEV__ !== 'undefined' && __DEV__) {
14
+ console.warn(`NavBar slot(icon="${slot.icon}")未传 accessibilityLabel,SR 将读出 icon 名,请传人类可读短语。`);
15
+ }
13
16
  return /*#__PURE__*/_jsx(IconButton, {
14
17
  icon: slot.icon,
15
18
  onPress: slot.onPress,
@@ -25,12 +28,21 @@ function resolveSlot(slot, tint) {
25
28
  if (isSlot(slot)) return renderSlot(slot, tint);
26
29
  return slot;
27
30
  }
31
+
32
+ /**
33
+ * 安全区归属:NavBar **不**内置 top safe-area inset。
34
+ * 宿主页面负责处理(推荐做法:在屏幕根容器或 Stack.Screen header 里
35
+ * 用 `<SafeAreaView edges={['top']}>` 包住 NavBar,或配合
36
+ * `react-navigation` 的 `headerStatusBarHeight` 选项)。
37
+ * 这样 NavBar 可在任何场景复用(modal、底部抽屉 header 等不需要 top inset)。
38
+ */
28
39
  export function NavBar({
29
40
  title,
30
41
  subtitle,
31
42
  left,
32
43
  right,
33
44
  variant = 'default',
45
+ style,
34
46
  testID
35
47
  }) {
36
48
  const c = useColors();
@@ -43,7 +55,7 @@ export function NavBar({
43
55
  const tint = isBrand ? c.onPrimary : c.foreground;
44
56
  const subtint = isBrand ? c.onPrimaryMuted : c.foregroundSubtle;
45
57
  return /*#__PURE__*/_jsxs(View, {
46
- style: [styles.bar, isBrand && styles.barBrand, isTransparent && styles.barTransparent],
58
+ style: [styles.bar, isBrand && styles.barBrand, isTransparent && styles.barTransparent, style],
47
59
  testID: testID,
48
60
  children: [/*#__PURE__*/_jsx(View, {
49
61
  style: styles.side,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","useColors","useThemedStyles","IconButton","isSlot","makeStyles","jsx","_jsx","jsxs","_jsxs","renderSlot","slot","tint","icon","onPress","variant","color","accessibilityLabel","resolveSlot","NavBar","title","subtitle","left","right","testID","c","styles","isBrand","isTransparent","onPrimary","foreground","subtint","onPrimaryMuted","foregroundSubtle","style","bar","barBrand","barTransparent","children","side","center","numberOfLines","sideRight"],"sourceRoot":"../../../../../src","sources":["components/ui/NavBar/NavBar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,UAAU,QAAQ,wBAAe;AAC1C,SAASC,MAAM,QAAQ,aAAU;AACjC,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC;AACA;AACA,SAASC,UAAUA,CAACC,IAAsB,EAAEC,IAAY,EAAE;EACxD,oBACEL,IAAA,CAACJ,UAAU;IACTU,IAAI,EAAEF,IAAI,CAACE,IAAK;IAChBC,OAAO,EAAEH,IAAI,CAACG,OAAQ;IACtBC,OAAO,EAAC,OAAO;IACfC,KAAK,EAAEJ,IAAK;IACZK,kBAAkB,EAAEN,IAAI,CAACM,kBAAkB,IAAIN,IAAI,CAACE;EAAK,CAC1D,CAAC;AAEN;;AAEA;AACA,SAASK,WAAWA,CAClBP,IAAgD,EAChDC,IAAY,EACK;EACjB,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;EACtB,IAAIP,MAAM,CAACO,IAAI,CAAC,EAAE,OAAOD,UAAU,CAACC,IAAI,EAAEC,IAAI,CAAC;EAC/C,OAAOD,IAAI;AACb;AAEA,OAAO,SAASQ,MAAMA,CAAC;EACrBC,KAAK;EACLC,QAAQ;EACRC,IAAI;EACJC,KAAK;EACLR,OAAO,GAAG,SAAS;EACnBS;AACW,CAAC,EAAE;EACd,MAAMC,CAAC,GAAGxB,SAAS,CAAC,CAAC;EACrB,MAAMyB,MAAM,GAAGxB,eAAe,CAACG,UAAU,CAAC;EAC1C,MAAMsB,OAAO,GAAGZ,OAAO,KAAK,OAAO;EACnC,MAAMa,aAAa,GAAGb,OAAO,KAAK,aAAa;EAC/C;EACA;EACA;EACA,MAAMH,IAAI,GAAGe,OAAO,GAAGF,CAAC,CAACI,SAAS,GAAGJ,CAAC,CAACK,UAAU;EACjD,MAAMC,OAAO,GAAGJ,OAAO,GAAGF,CAAC,CAACO,cAAc,GAAGP,CAAC,CAACQ,gBAAgB;EAC/D,oBACExB,KAAA,CAACT,IAAI;IACHkC,KAAK,EAAE,CACLR,MAAM,CAACS,GAAG,EACVR,OAAO,IAAID,MAAM,CAACU,QAAQ,EAC1BR,aAAa,IAAIF,MAAM,CAACW,cAAc,CACtC;IACFb,MAAM,EAAEA,MAAO;IAAAc,QAAA,gBAEf/B,IAAA,CAACP,IAAI;MAACkC,KAAK,EAAER,MAAM,CAACa,IAAK;MAAAD,QAAA,EAAEpB,WAAW,CAACI,IAAI,EAAEV,IAAI;IAAC,CAAO,CAAC,eAC1DH,KAAA,CAACT,IAAI;MAACkC,KAAK,EAAER,MAAM,CAACc,MAAO;MAAAF,QAAA,gBACzB/B,IAAA,CAACR,IAAI;QAACmC,KAAK,EAAE,CAACR,MAAM,CAACN,KAAK,EAAE;UAAEJ,KAAK,EAAEJ;QAAK,CAAC,CAAE;QAAC6B,aAAa,EAAE,CAAE;QAAAH,QAAA,EAC5DlB;MAAK,CACF,CAAC,EACNC,QAAQ,gBACPd,IAAA,CAACR,IAAI;QAACmC,KAAK,EAAE,CAACR,MAAM,CAACL,QAAQ,EAAE;UAAEL,KAAK,EAAEe;QAAQ,CAAC,CAAE;QAACU,aAAa,EAAE,CAAE;QAAAH,QAAA,EAClEjB;MAAQ,CACL,CAAC,GACL,IAAI;IAAA,CACJ,CAAC,eACPd,IAAA,CAACP,IAAI;MAACkC,KAAK,EAAE,CAACR,MAAM,CAACa,IAAI,EAAEb,MAAM,CAACgB,SAAS,CAAE;MAAAJ,QAAA,EAC1CpB,WAAW,CAACK,KAAK,EAAEX,IAAI;IAAC,CACrB,CAAC;EAAA,CACH,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","View","useColors","useThemedStyles","IconButton","isSlot","makeStyles","jsx","_jsx","jsxs","_jsxs","renderSlot","slot","tint","accessibilityLabel","__DEV__","console","warn","icon","onPress","variant","color","resolveSlot","NavBar","title","subtitle","left","right","style","testID","c","styles","isBrand","isTransparent","onPrimary","foreground","subtint","onPrimaryMuted","foregroundSubtle","bar","barBrand","barTransparent","children","side","center","numberOfLines","sideRight"],"sourceRoot":"../../../../../src","sources":["components/ui/NavBar/NavBar.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,50 +1,79 @@
1
1
  "use strict";
2
2
 
3
- import React, { useState } from 'react';
3
+ import React, { forwardRef, useState } from 'react';
4
4
  import { Pressable } from 'react-native-gesture-handler';
5
5
  import { Icon } from "../Icon/index.js";
6
6
  import { Input } from "../Input/index.js";
7
- import { useColors } from "../../../theme/index.js";
7
+ import { control, fixed, r, useColors } from "../../../theme/index.js";
8
+ import { childTestID } from "../../../utils/testID/index.js";
8
9
  import { styles } from "./styles.js";
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
- /** 密码 Input —— Input + leading lock + trailing eye 切换明文 / 密文。
11
- * showPw 内部 useState,caller 只关心 value/onChangeText。
12
- * a11y:label 已表达"显示/隐藏密码"意图,不再加 accessibilityHint(避免
13
- * SR 朗读 over-hint,见 CLAUDE.md a11y 规范)。 */
14
- export function PasswordInput({
11
+ /**
12
+ * 密码 Input —— Input + leading lock + trailing eye 切换明文 / 密文。
13
+ *
14
+ * [L-32] 增强:
15
+ * - forwardRef<TextInput> —— 业务表单 focus() 聚焦
16
+ * - inputProps 类型改为 Omit<TextInputProps,'secureTextEntry'>
17
+ * - 补 textContentType='password' / autoComplete='current-password' / autoCapitalize='none' 默认值
18
+ * - 暴露 error / disabled 透传给底层 Input
19
+ *
20
+ * showPw 内部 useState,caller 只关心 value/onChangeText。
21
+ * a11y:label 已表达"显示/隐藏密码"意图,不再加 accessibilityHint(避免 SR 朗读 over-hint)。
22
+ */
23
+ export const PasswordInput = /*#__PURE__*/forwardRef(function PasswordInput({
15
24
  value,
16
25
  onChangeText,
17
26
  placeholder = '请输入密码',
18
27
  testID,
28
+ error,
29
+ disabled,
19
30
  inputProps
20
- }) {
31
+ }, ref) {
21
32
  const c = useColors();
22
33
  const [showPw, setShowPw] = useState(false);
23
34
  return /*#__PURE__*/_jsx(Input, {
35
+ ref: ref,
24
36
  testID: testID,
25
37
  value: value,
26
38
  onChangeText: onChangeText,
27
39
  placeholder: placeholder,
40
+ error: error,
41
+ disabled: disabled
42
+ // [L-32] 补 textContentType / autoComplete / autoCapitalize 默认值 —— 提升密码自动填充体验
43
+ ,
44
+ textContentType: "password",
45
+ autoComplete: "current-password",
46
+ autoCapitalize: "none",
28
47
  ...inputProps,
48
+ // secureTextEntry 在 inputProps spread 之后覆盖,确保组件自管不被 caller 干扰
29
49
  secureTextEntry: !showPw,
30
50
  leading: /*#__PURE__*/_jsx(Icon, {
31
51
  name: "lock",
32
- size: 18,
52
+ size: r(18),
33
53
  color: c.iconFaint40
34
54
  }),
35
55
  trailing: /*#__PURE__*/_jsx(Pressable, {
36
- testID: testID ? `${testID}-toggle` : undefined,
56
+ testID: childTestID(testID, 'toggle'),
37
57
  style: styles.eyeBtn,
38
58
  onPress: () => setShowPw(v => !v),
39
59
  accessibilityRole: "button",
40
- accessibilityLabel: showPw ? '隐藏密码' : '显示密码',
41
- hitSlop: 8,
60
+ accessibilityLabel: showPw ? '隐藏密码' : '显示密码'
61
+ // [M-7] eye icon r(16)≈16pt;Input 高 control.md≈36pt 限制垂直扩展
62
+ // vertical 走 (44-control.md)/2≈4;horizontal 走 (44-16)/2=14
63
+ ,
64
+ hitSlop: {
65
+ top: Math.round((fixed.hitTarget - control.md) / 2),
66
+ bottom: Math.round((fixed.hitTarget - control.md) / 2),
67
+ left: Math.round((fixed.hitTarget - r(16)) / 2),
68
+ right: Math.round((fixed.hitTarget - r(16)) / 2)
69
+ },
42
70
  children: /*#__PURE__*/_jsx(Icon, {
43
71
  name: showPw ? 'eye' : 'eye-off',
44
- size: 16,
72
+ size: r(16),
45
73
  color: c.iconFaint40
46
74
  })
47
75
  })
48
76
  });
49
- }
77
+ });
78
+ PasswordInput.displayName = 'PasswordInput';
50
79
  //# sourceMappingURL=PasswordInput.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Pressable","Icon","Input","useColors","styles","jsx","_jsx","PasswordInput","value","onChangeText","placeholder","testID","inputProps","c","showPw","setShowPw","secureTextEntry","leading","name","size","color","iconFaint40","trailing","undefined","style","eyeBtn","onPress","v","accessibilityRole","accessibilityLabel","hitSlop","children"],"sourceRoot":"../../../../../src","sources":["components/ui/PasswordInput/PasswordInput.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,IAAI,QAAQ,kBAAS;AAC9B,SAASC,KAAK,QAAQ,mBAAU;AAChC,SAASC,SAAS,QAAQ,yBAAgB;AAC1C,SAASC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlC;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,KAAK;EACLC,YAAY;EACZC,WAAW,GAAG,OAAO;EACrBC,MAAM;EACNC;AACkB,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGV,SAAS,CAAC,CAAC;EACrB,MAAM,CAACW,MAAM,EAAEC,SAAS,CAAC,GAAGhB,QAAQ,CAAC,KAAK,CAAC;EAE3C,oBACEO,IAAA,CAACJ,KAAK;IACJS,MAAM,EAAEA,MAAO;IACfH,KAAK,EAAEA,KAAM;IACbC,YAAY,EAAEA,YAAa;IAC3BC,WAAW,EAAEA,WAAY;IAAA,GACrBE,UAAU;IACdI,eAAe,EAAE,CAACF,MAAO;IACzBG,OAAO,eAAEX,IAAA,CAACL,IAAI;MAACiB,IAAI,EAAC,MAAM;MAACC,IAAI,EAAE,EAAG;MAACC,KAAK,EAAEP,CAAC,CAACQ;IAAY,CAAE,CAAE;IAC9DC,QAAQ,eACNhB,IAAA,CAACN,SAAS;MACRW,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,SAAS,GAAGY,SAAU;MAChDC,KAAK,EAAEpB,MAAM,CAACqB,MAAO;MACrBC,OAAO,EAAEA,CAAA,KAAMX,SAAS,CAAEY,CAAC,IAAK,CAACA,CAAC,CAAE;MACpCC,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEf,MAAM,GAAG,MAAM,GAAG,MAAO;MAC7CgB,OAAO,EAAE,CAAE;MAAAC,QAAA,eAEXzB,IAAA,CAACL,IAAI;QACHiB,IAAI,EAAEJ,MAAM,GAAG,KAAK,GAAG,SAAU;QACjCK,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEP,CAAC,CAACQ;MAAY,CACtB;IAAC,CACO;EACZ,CACF,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useState","Pressable","Icon","Input","control","fixed","r","useColors","childTestID","styles","jsx","_jsx","PasswordInput","value","onChangeText","placeholder","testID","error","disabled","inputProps","ref","c","showPw","setShowPw","textContentType","autoComplete","autoCapitalize","secureTextEntry","leading","name","size","color","iconFaint40","trailing","style","eyeBtn","onPress","v","accessibilityRole","accessibilityLabel","hitSlop","top","Math","round","hitTarget","md","bottom","left","right","children","displayName"],"sourceRoot":"../../../../../src","sources":["components/ui/PasswordInput/PasswordInput.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AACnD,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,IAAI,QAAQ,kBAAS;AAC9B,SAASC,KAAK,QAAQ,mBAAU;AAChC,SAASC,OAAO,EAAEC,KAAK,EAAEC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7D,SAASC,WAAW,QAAQ,gCAAuB;AACnD,SAASC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAIlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,gBAAGb,UAAU,CACrC,SAASa,aAAaA,CACpB;EACEC,KAAK;EACLC,YAAY;EACZC,WAAW,GAAG,OAAO;EACrBC,MAAM;EACNC,KAAK;EACLC,QAAQ;EACRC;AACF,CAAC,EACDC,GAAG,EACgB;EACnB,MAAMC,CAAC,GAAGd,SAAS,CAAC,CAAC;EACrB,MAAM,CAACe,MAAM,EAAEC,SAAS,CAAC,GAAGvB,QAAQ,CAAC,KAAK,CAAC;EAE3C,oBACEW,IAAA,CAACR,KAAK;IACJiB,GAAG,EAAEA,GAAI;IACTJ,MAAM,EAAEA,MAAO;IACfH,KAAK,EAAEA,KAAM;IACbC,YAAY,EAAEA,YAAa;IAC3BC,WAAW,EAAEA,WAAY;IACzBE,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA;IACV;IAAA;IACAM,eAAe,EAAC,UAAU;IAC1BC,YAAY,EAAC,kBAAkB;IAC/BC,cAAc,EAAC,MAAM;IAAA,GACjBP,UAAU;IACd;IACAQ,eAAe,EAAE,CAACL,MAAO;IACzBM,OAAO,eAAEjB,IAAA,CAACT,IAAI;MAAC2B,IAAI,EAAC,MAAM;MAACC,IAAI,EAAExB,CAAC,CAAC,EAAE,CAAE;MAACyB,KAAK,EAAEV,CAAC,CAACW;IAAY,CAAE,CAAE;IACjEC,QAAQ,eACNtB,IAAA,CAACV,SAAS;MACRe,MAAM,EAAER,WAAW,CAACQ,MAAM,EAAE,QAAQ,CAAE;MACtCkB,KAAK,EAAEzB,MAAM,CAAC0B,MAAO;MACrBC,OAAO,EAAEA,CAAA,KAAMb,SAAS,CAAEc,CAAC,IAAK,CAACA,CAAC,CAAE;MACpCC,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEjB,MAAM,GAAG,MAAM,GAAG;MACtC;MACA;MAAA;MACAkB,OAAO,EAAE;QACPC,GAAG,EAAEC,IAAI,CAACC,KAAK,CAAC,CAACtC,KAAK,CAACuC,SAAS,GAAGxC,OAAO,CAACyC,EAAE,IAAI,CAAC,CAAC;QACnDC,MAAM,EAAEJ,IAAI,CAACC,KAAK,CAAC,CAACtC,KAAK,CAACuC,SAAS,GAAGxC,OAAO,CAACyC,EAAE,IAAI,CAAC,CAAC;QACtDE,IAAI,EAAEL,IAAI,CAACC,KAAK,CAAC,CAACtC,KAAK,CAACuC,SAAS,GAAGtC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/C0C,KAAK,EAAEN,IAAI,CAACC,KAAK,CAAC,CAACtC,KAAK,CAACuC,SAAS,GAAGtC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;MACjD,CAAE;MAAA2C,QAAA,eAEFtC,IAAA,CAACT,IAAI;QACH2B,IAAI,EAAEP,MAAM,GAAG,KAAK,GAAG,SAAU;QACjCQ,IAAI,EAAExB,CAAC,CAAC,EAAE,CAAE;QACZyB,KAAK,EAAEV,CAAC,CAACW;MAAY,CACtB;IAAC,CACO;EACZ,CACF,CAAC;AAEN,CACF,CAAC;AAEDpB,aAAa,CAACsC,WAAW,GAAG,eAAe","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  import { StyleSheet } from 'react-native';
4
4
  import { space } from "../../../theme/index.js";
5
5
 
6
- /** eye Pressable hit area 微间距,跟 ForgotPassword 同款 4px。 */
6
+ /** eye Pressable hit area 微间距 4px。 */
7
7
  export const styles = StyleSheet.create({
8
8
  eyeBtn: {
9
9
  paddingHorizontal: space['1']
@@ -6,12 +6,13 @@ import { usePulse } from './usePulse';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export function Pulse({
8
8
  children,
9
+ style,
9
10
  testID,
10
11
  ...opts
11
12
  }) {
12
13
  const animatedStyle = usePulse(opts);
13
14
  return /*#__PURE__*/_jsx(Animated.View, {
14
- style: animatedStyle,
15
+ style: [animatedStyle, style],
15
16
  testID: testID,
16
17
  children: children
17
18
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","Animated","usePulse","jsx","_jsx","Pulse","children","testID","opts","animatedStyle","View","style"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/Pulse.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,QAAQ,QAAQ,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,OAAO,SAASC,KAAKA,CAAC;EACpBC,QAAQ;EACRC,MAAM;EACN,GAAGC;AACuC,CAAC,EAAqB;EAChE,MAAMC,aAAa,GAAGP,QAAQ,CAACM,IAAI,CAAC;EACpC,oBACEJ,IAAA,CAACH,QAAQ,CAACS,IAAI;IAACC,KAAK,EAAEF,aAAc;IAACF,MAAM,EAAEA,MAAO;IAAAD,QAAA,EACjDA;EAAQ,CACI,CAAC;AAEpB","ignoreList":[]}
1
+ {"version":3,"names":["React","Animated","usePulse","jsx","_jsx","Pulse","children","style","testID","opts","animatedStyle","View"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/Pulse.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,QAAQ,QAAQ,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,OAAO,SAASC,KAAKA,CAAC;EACpBC,QAAQ;EACRC,KAAK;EACLC,MAAM;EACN,GAAGC;AACuC,CAAC,EAAqB;EAChE,MAAMC,aAAa,GAAGR,QAAQ,CAACO,IAAI,CAAC;EACpC,oBACEL,IAAA,CAACH,QAAQ,CAACU,IAAI;IAACJ,KAAK,EAAE,CAACG,aAAa,EAAEH,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAF,QAAA,EAC1DA;EAAQ,CACI,CAAC;AAEpB","ignoreList":[]}
@@ -2,25 +2,23 @@
2
2
 
3
3
  import React from 'react';
4
4
  import Animated from 'react-native-reanimated';
5
- import { useColors } from "../../../theme/index.js";
5
+ import { r, useColors } from "../../../theme/index.js";
6
6
  import { usePulse } from './usePulse';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  export function PulseDot({
9
- size = 6,
9
+ size = r(6),
10
10
  color,
11
11
  from = 0.5,
12
- to = 1,
13
- duration = 700,
14
- delay = 0,
15
- testID
12
+ style,
13
+ testID,
14
+ ...opts
16
15
  } = {}) {
17
16
  const c = useColors();
18
17
  const fill = color ?? c.primary;
18
+ // [L-93] 只显式覆盖 from(默认 0.5 与 usePulse 的 0.6 不同),其余 opts 透传 usePulse。
19
19
  const animatedStyle = usePulse({
20
20
  from,
21
- to,
22
- duration,
23
- delay
21
+ ...opts
24
22
  });
25
23
  return /*#__PURE__*/_jsx(Animated.View, {
26
24
  style: [{
@@ -28,7 +26,7 @@ export function PulseDot({
28
26
  height: size,
29
27
  borderRadius: size / 2,
30
28
  backgroundColor: fill
31
- }, animatedStyle],
29
+ }, animatedStyle, style],
32
30
  testID: testID,
33
31
  accessibilityElementsHidden: true,
34
32
  importantForAccessibility: "no-hide-descendants"
@@ -1 +1 @@
1
- {"version":3,"names":["React","Animated","useColors","usePulse","jsx","_jsx","PulseDot","size","color","from","to","duration","delay","testID","c","fill","primary","animatedStyle","View","style","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,SAAS,QAAQ,yBAAgB;AAC1C,SAASC,QAAQ,QAAQ,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI,GAAG,CAAC;EACRC,KAAK;EACLC,IAAI,GAAG,GAAG;EACVC,EAAE,GAAG,CAAC;EACNC,QAAQ,GAAG,GAAG;EACdC,KAAK,GAAG,CAAC;EACTC;AACa,CAAC,GAAG,CAAC,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGZ,SAAS,CAAC,CAAC;EACrB,MAAMa,IAAI,GAAGP,KAAK,IAAIM,CAAC,CAACE,OAAO;EAC/B,MAAMC,aAAa,GAAGd,QAAQ,CAAC;IAAEM,IAAI;IAAEC,EAAE;IAAEC,QAAQ;IAAEC;EAAM,CAAC,CAAC;EAC7D,oBACEP,IAAA,CAACJ,QAAQ,CAACiB,IAAI;IACZC,KAAK,EAAE,CACL;MACEC,KAAK,EAAEb,IAAI;MACXc,MAAM,EAAEd,IAAI;MACZe,YAAY,EAAEf,IAAI,GAAG,CAAC;MACtBgB,eAAe,EAAER;IACnB,CAAC,EACDE,aAAa,CACb;IACFJ,MAAM,EAAEA,MAAO;IACfW,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","Animated","r","useColors","usePulse","jsx","_jsx","PulseDot","size","color","from","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,QAAQ,QAAQ,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI,GAAGN,CAAC,CAAC,CAAC,CAAC;EACXO,KAAK;EACLC,IAAI,GAAG,GAAG;EACVC,KAAK;EACLC,MAAM;EACN,GAAGC;AACU,CAAC,GAAG,CAAC,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAMY,IAAI,GAAGN,KAAK,IAAIK,CAAC,CAACE,OAAO;EAC/B;EACA,MAAMC,aAAa,GAAGb,QAAQ,CAAC;IAAEM,IAAI;IAAE,GAAGG;EAAK,CAAC,CAAC;EACjD,oBACEP,IAAA,CAACL,QAAQ,CAACiB,IAAI;IACZP,KAAK,EAAE,CACL;MACEQ,KAAK,EAAEX,IAAI;MACXY,MAAM,EAAEZ,IAAI;MACZa,YAAY,EAAEb,IAAI,GAAG,CAAC;MACtBc,eAAe,EAAEP;IACnB,CAAC,EACDE,aAAa,EACbN,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfW,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
@@ -1,2 +1,4 @@
1
1
  "use strict";
2
+
3
+ export {};
2
4
  //# sourceMappingURL=types.js.map
@@ -1,17 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  import { useEffect, useState } from 'react';
4
+ import { usePrefersReducedMotion } from "../../../theme/index.js";
4
5
  /**
5
6
  * Web 端 usePulse —— RN-Web 上 reanimated 4 + worklets 0.9.x 的 useAnimatedStyle
6
7
  * 链路会抛 `Object.keys(undefined)` TypeError(animation frame 每帧打印),pulse 卡死
7
- * 在初始值。这里用 React state + setInterval + CSS 等价于在两个 opacity 之间循环,
8
- * 返回 RN style({ opacity }),保持 native API 兼容。
8
+ * 在初始值。
9
9
  *
10
10
  * native 端走 usePulse.ts(reanimated worklet) 不动。
11
11
  *
12
- * 注意:实现走 React state 而非 CSS transition——因为 RN style 不支持 transition,
13
- * setInterval 切换 opacity 加上一个外层 div CSS transition 视觉上等价
14
- * (transition ToastHost.web.tsx 那个模式接管,这里直接用 React 切值)
12
+ * [M-19] 实现方案 —— CSS transition 降级(零 rAF JS 帧):
13
+ * rnw 0.21animationKeyframes 字段类型侧尚未稳定暴露;
14
+ * <style> 注入在 Spinner.web.tsx 已有安全注释(不拼外部输入)——为保持
15
+ * 一致性,Pulse 侧不再注入第二处 <style> 标签,故采用 CSS transition 降级:
16
+ *
17
+ * - 返回 { opacity, transition } 作为 RN style(RN-Web 把 transition 透传 DOM)
18
+ * - setInterval 每隔 `duration` ms 在 from/to 两档切换 opacity ——
19
+ * setState 频率从原来的 ~60fps 降到 1 次/duration ms(参 ToastHost.web.tsx)
20
+ * - CSS transition 负责两档之间的视觉补间,JS 侧零插值
21
+ * - reduce-motion:静止于 `to`(完全显示),骨架/圆点静态呈现
15
22
  */
16
23
  export function usePulse({
17
24
  from = 0.6,
@@ -19,37 +26,51 @@ export function usePulse({
19
26
  duration = 700,
20
27
  delay = 0
21
28
  } = {}) {
29
+ const reduced = usePrefersReducedMotion();
22
30
  const [opacity, setOpacity] = useState(from);
23
31
  useEffect(() => {
24
- let cancelled = false;
25
- let direction = 'up';
26
- let start = Date.now() + delay;
27
- let raf = null;
28
- const tick = () => {
29
- if (cancelled) return;
30
- const now = Date.now();
31
- if (now < start) {
32
- raf = requestAnimationFrame(tick);
33
- return;
34
- }
35
- const elapsed = (now - start) % duration;
36
- const t = elapsed / duration; // 0→1
37
- const next = direction === 'up' ? from + (to - from) * t : to - (to - from) * t;
38
- setOpacity(next);
39
- if (elapsed + 16 >= duration) {
40
- direction = direction === 'up' ? 'down' : 'up';
41
- start = now;
42
- }
43
- raf = requestAnimationFrame(tick);
32
+ // reduce-motion:不脉冲,直接停在完全显示(to),骨架/圆点静态呈现。
33
+ if (reduced) {
34
+ setOpacity(to);
35
+ return;
36
+ }
37
+
38
+ // CSS transition 模式:setInterval 只负责在 from/to 两档翻转(1 次/duration ms),
39
+ // 浏览器 CSS transition 负责补间 —— 与原方案 rAF 每帧 setState 相比
40
+ // setState 频率从 ~60fps 降到 1/(duration/1000) fps,无 JS 插值开销。
41
+ let timer = null;
42
+ let current = from;
43
+ const start = () => {
44
+ timer = setInterval(() => {
45
+ current = current === from ? to : from;
46
+ setOpacity(current);
47
+ }, duration);
44
48
  };
45
- raf = requestAnimationFrame(tick);
49
+ if (delay > 0) {
50
+ const delayTimer = setTimeout(start, delay);
51
+ return () => {
52
+ clearTimeout(delayTimer);
53
+ if (timer != null) clearInterval(timer);
54
+ };
55
+ }
56
+ start();
46
57
  return () => {
47
- cancelled = true;
48
- if (raf != null) cancelAnimationFrame(raf);
58
+ if (timer != null) clearInterval(timer);
59
+ };
60
+ }, [from, to, duration, delay, reduced]);
61
+ if (reduced) {
62
+ return {
63
+ opacity: to
49
64
  };
50
- }, [from, to, duration, delay]);
65
+ }
66
+
67
+ // RN-Web 把 transition 字段透传到 DOM style,实现 CSS 级平滑过渡。
68
+ // RN style typedef 无 transition 字段,cast any 绕过 TS strict
69
+ // (实际只在 web bundle 命中,DOM div 原样接受该字段)。
70
+
51
71
  return {
52
- opacity
72
+ opacity,
73
+ transition: `opacity ${duration}ms ease-in-out`
53
74
  };
54
75
  }
55
76
  //# sourceMappingURL=usePulse.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useState","usePulse","from","to","duration","delay","opacity","setOpacity","cancelled","direction","start","Date","now","raf","tick","requestAnimationFrame","elapsed","t","next","cancelAnimationFrame"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/usePulse.web.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAG3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI,GAAG,GAAG;EACVC,EAAE,GAAG,CAAC;EACNC,QAAQ,GAAG,GAAG;EACdC,KAAK,GAAG;AACI,CAAC,GAAG,CAAC,CAAC,EAAuB;EACzC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGP,QAAQ,CAACE,IAAI,CAAC;EAE5CH,SAAS,CAAC,MAAM;IACd,IAAIS,SAAS,GAAG,KAAK;IACrB,IAAIC,SAAwB,GAAG,IAAI;IACnC,IAAIC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGP,KAAK;IAC9B,IAAIQ,GAAkB,GAAG,IAAI;IAE7B,MAAMC,IAAI,GAAGA,CAAA,KAAM;MACjB,IAAIN,SAAS,EAAE;MACf,MAAMI,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;MACtB,IAAIA,GAAG,GAAGF,KAAK,EAAE;QACfG,GAAG,GAAGE,qBAAqB,CAACD,IAAI,CAAC;QACjC;MACF;MACA,MAAME,OAAO,GAAG,CAACJ,GAAG,GAAGF,KAAK,IAAIN,QAAQ;MACxC,MAAMa,CAAC,GAAGD,OAAO,GAAGZ,QAAQ,CAAC,CAAC;MAC9B,MAAMc,IAAI,GACRT,SAAS,KAAK,IAAI,GAAGP,IAAI,GAAG,CAACC,EAAE,GAAGD,IAAI,IAAIe,CAAC,GAAGd,EAAE,GAAG,CAACA,EAAE,GAAGD,IAAI,IAAIe,CAAC;MACpEV,UAAU,CAACW,IAAI,CAAC;MAChB,IAAIF,OAAO,GAAG,EAAE,IAAIZ,QAAQ,EAAE;QAC5BK,SAAS,GAAGA,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI;QAC9CC,KAAK,GAAGE,GAAG;MACb;MACAC,GAAG,GAAGE,qBAAqB,CAACD,IAAI,CAAC;IACnC,CAAC;IACDD,GAAG,GAAGE,qBAAqB,CAACD,IAAI,CAAC;IAEjC,OAAO,MAAM;MACXN,SAAS,GAAG,IAAI;MAChB,IAAIK,GAAG,IAAI,IAAI,EAAEM,oBAAoB,CAACN,GAAG,CAAC;IAC5C,CAAC;EACH,CAAC,EAAE,CAACX,IAAI,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAC;EAE/B,OAAO;IAAEC;EAAQ,CAAC;AACpB","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useState","usePrefersReducedMotion","usePulse","from","to","duration","delay","reduced","opacity","setOpacity","timer","current","start","setInterval","delayTimer","setTimeout","clearTimeout","clearInterval","transition"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/usePulse.web.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,uBAAuB,QAAQ,yBAAgB;AAGxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI,GAAG,GAAG;EACVC,EAAE,GAAG,CAAC;EACNC,QAAQ,GAAG,GAAG;EACdC,KAAK,GAAG;AACI,CAAC,GAAG,CAAC,CAAC,EAAE;EACpB,MAAMC,OAAO,GAAGN,uBAAuB,CAAC,CAAC;EACzC,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGT,QAAQ,CAACG,IAAI,CAAC;EAE5CJ,SAAS,CAAC,MAAM;IACd;IACA,IAAIQ,OAAO,EAAE;MACXE,UAAU,CAACL,EAAE,CAAC;MACd;IACF;;IAEA;IACA;IACA;IACA,IAAIM,KAA4C,GAAG,IAAI;IACvD,IAAIC,OAAO,GAAGR,IAAI;IAElB,MAAMS,KAAK,GAAGA,CAAA,KAAM;MAClBF,KAAK,GAAGG,WAAW,CAAC,MAAM;QACxBF,OAAO,GAAGA,OAAO,KAAKR,IAAI,GAAGC,EAAE,GAAGD,IAAI;QACtCM,UAAU,CAACE,OAAO,CAAC;MACrB,CAAC,EAAEN,QAAQ,CAAC;IACd,CAAC;IAED,IAAIC,KAAK,GAAG,CAAC,EAAE;MACb,MAAMQ,UAAU,GAAGC,UAAU,CAACH,KAAK,EAAEN,KAAK,CAAC;MAC3C,OAAO,MAAM;QACXU,YAAY,CAACF,UAAU,CAAC;QACxB,IAAIJ,KAAK,IAAI,IAAI,EAAEO,aAAa,CAACP,KAAK,CAAC;MACzC,CAAC;IACH;IACAE,KAAK,CAAC,CAAC;IACP,OAAO,MAAM;MACX,IAAIF,KAAK,IAAI,IAAI,EAAEO,aAAa,CAACP,KAAK,CAAC;IACzC,CAAC;EACH,CAAC,EAAE,CAACP,IAAI,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;EAExC,IAAIA,OAAO,EAAE;IACX,OAAO;MAAEC,OAAO,EAAEJ;IAAG,CAAC;EACxB;;EAEA;EACA;EACA;;EAEA,OAAO;IAAEI,OAAO;IAAEU,UAAU,EAAE,WAAWb,QAAQ;EAAiB,CAAC;AACrE","ignoreList":[]}
@@ -3,14 +3,18 @@
3
3
  import React, { useContext } from 'react';
4
4
  import { Text, View } from 'react-native';
5
5
  import { Pressable } from 'react-native-gesture-handler';
6
- import { useColors, useThemedStyles } from "../../../theme/index.js";
6
+ import { fixed, pressedOpacity, r, space, useColors, useThemedStyles } from "../../../theme/index.js";
7
7
  import { createLogger } from "../../../utils/logger/index.js";
8
+ import { childTestID } from "../../../utils/testID/index.js";
8
9
  import { RadioContext } from "./RadioContext.js";
9
10
  import { RadioGroup } from "./RadioGroup.js";
10
11
  import { makeStyles } from "./styles.js";
11
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
13
  const log = createLogger('Radio');
13
14
 
15
+ // [L-30] 模块级 Set 去重 —— "must be inside Group" 只告警一次,避免 FlatList 滚动时刷屏
16
+ const _warnedCtx = new Set();
17
+
14
18
  /**
15
19
  * 单个 radio 选项。必须放在 `<Radio.Group>` 里使用。
16
20
  */
@@ -24,15 +28,25 @@ export function Radio({
24
28
  const styles = useThemedStyles(makeStyles);
25
29
  const ctx = useContext(RadioContext);
26
30
  if (!ctx) {
27
- log.warn('<Radio> must be used inside <Radio.Group>');
31
+ // [L-30] 去重:同一 value warn 只打一次,避免渲染阶段反复刷屏
32
+ const warnKey = `no-ctx:${String(value)}`;
33
+ if (!_warnedCtx.has(warnKey)) {
34
+ _warnedCtx.add(warnKey);
35
+ log.warn('<Radio> must be used inside <Radio.Group>');
36
+ }
28
37
  return /*#__PURE__*/_jsx(View, {});
29
38
  }
30
39
  const checked = ctx.value === value;
31
- const resolvedTestID = testID ?? (ctx.groupTestID ? `${ctx.groupTestID}-${value}` : undefined);
40
+ // [L-92] 改用 childTestID:收口 parent+id 拼接逻辑,保持空串 override 回落拼接语义
41
+ const resolvedTestID = childTestID(ctx.groupTestID, value, testID);
42
+
43
+ // [M-7] row 含 paddingVertical space[2](上下各 ~6pt) → 行高 ≈ r(20) + 2×space[2] ≈ 32pt
44
+ // 补足到 fixed.hitTarget:slop = (44 - 32) / 2 = 6
45
+ const hitSlopV = Math.max(0, Math.round((fixed.hitTarget - (r(20) + 2 * space[2])) / 2));
32
46
  return /*#__PURE__*/_jsxs(Pressable, {
33
47
  onPress: () => !disabled && ctx.onChange(value),
34
48
  disabled: disabled,
35
- hitSlop: 4,
49
+ hitSlop: hitSlopV,
36
50
  accessibilityRole: "radio",
37
51
  accessibilityState: {
38
52
  checked,
@@ -43,7 +57,7 @@ export function Radio({
43
57
  style: ({
44
58
  pressed
45
59
  }) => [styles.row, {
46
- opacity: disabled ? 0.5 : pressed ? 0.7 : 1
60
+ opacity: disabled ? 0.5 : pressed ? pressedOpacity : 1
47
61
  }],
48
62
  children: [/*#__PURE__*/_jsx(View, {
49
63
  style: [styles.circle, checked && {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","Text","View","Pressable","useColors","useThemedStyles","createLogger","RadioContext","RadioGroup","makeStyles","jsx","_jsx","jsxs","_jsxs","log","Radio","value","label","disabled","testID","c","styles","ctx","warn","checked","resolvedTestID","groupTestID","undefined","onPress","onChange","hitSlop","accessibilityRole","accessibilityState","accessibilityLabel","style","pressed","row","opacity","children","circle","borderColor","primary","dot","Group"],"sourceRoot":"../../../../../src","sources":["components/ui/Radio/Radio.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,MAAMC,GAAG,GAAGR,YAAY,CAAC,OAAO,CAAC;;AAEjC;AACA;AACA;AACA,OAAO,SAASS,KAAKA,CAAC;EACpBC,KAAK;EACLC,KAAK;EACLC,QAAQ;EACRC;AACU,CAAC,EAAqB;EAChC,MAAMC,CAAC,GAAGhB,SAAS,CAAC,CAAC;EACrB,MAAMiB,MAAM,GAAGhB,eAAe,CAACI,UAAU,CAAC;EAC1C,MAAMa,GAAG,GAAGtB,UAAU,CAACO,YAAY,CAAC;EACpC,IAAI,CAACe,GAAG,EAAE;IACRR,GAAG,CAACS,IAAI,CAAC,2CAA2C,CAAC;IACrD,oBAAOZ,IAAA,CAACT,IAAI,IAAE,CAAC;EACjB;EACA,MAAMsB,OAAO,GAAGF,GAAG,CAACN,KAAK,KAAKA,KAAK;EACnC,MAAMS,cAAc,GAClBN,MAAM,KAAKG,GAAG,CAACI,WAAW,GAAG,GAAGJ,GAAG,CAACI,WAAW,IAAIV,KAAK,EAAE,GAAGW,SAAS,CAAC;EAEzE,oBACEd,KAAA,CAACV,SAAS;IACRyB,OAAO,EAAEA,CAAA,KAAM,CAACV,QAAQ,IAAII,GAAG,CAACO,QAAQ,CAACb,KAAK,CAAE;IAChDE,QAAQ,EAAEA,QAAS;IACnBY,OAAO,EAAE,CAAE;IACXC,iBAAiB,EAAC,OAAO;IACzBC,kBAAkB,EAAE;MAAER,OAAO;MAAEN,QAAQ,EAAE,CAAC,CAACA;IAAS,CAAE;IACtDe,kBAAkB,EAAEhB,KAAM;IAC1BE,MAAM,EAAEM,cAAe;IACvBS,KAAK,EAAEA,CAAC;MAAEC;IAAQ,CAAC,KAAK,CACtBd,MAAM,CAACe,GAAG,EACV;MAAEC,OAAO,EAAEnB,QAAQ,GAAG,GAAG,GAAGiB,OAAO,GAAG,GAAG,GAAG;IAAE,CAAC,CAC/C;IAAAG,QAAA,gBAEF3B,IAAA,CAACT,IAAI;MAACgC,KAAK,EAAE,CAACb,MAAM,CAACkB,MAAM,EAAEf,OAAO,IAAI;QAAEgB,WAAW,EAAEpB,CAAC,CAACqB;MAAQ,CAAC,CAAE;MAAAH,QAAA,EACjEd,OAAO,gBAAGb,IAAA,CAACT,IAAI;QAACgC,KAAK,EAAEb,MAAM,CAACqB;MAAI,CAAE,CAAC,GAAG;IAAI,CACzC,CAAC,EACNzB,KAAK,gBAAGN,IAAA,CAACV,IAAI;MAACiC,KAAK,EAAEb,MAAM,CAACJ,KAAM;MAAAqB,QAAA,EAAErB;IAAK,CAAO,CAAC,GAAG,IAAI;EAAA,CAChD,CAAC;AAEhB;AAEAF,KAAK,CAAC4B,KAAK,GAAGnC,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["React","useContext","Text","View","Pressable","fixed","pressedOpacity","r","space","useColors","useThemedStyles","createLogger","childTestID","RadioContext","RadioGroup","makeStyles","jsx","_jsx","jsxs","_jsxs","log","_warnedCtx","Set","Radio","value","label","disabled","testID","c","styles","ctx","warnKey","String","has","add","warn","checked","resolvedTestID","groupTestID","hitSlopV","Math","max","round","hitTarget","onPress","onChange","hitSlop","accessibilityRole","accessibilityState","accessibilityLabel","style","pressed","row","opacity","children","circle","borderColor","primary","dot","Group"],"sourceRoot":"../../../../../src","sources":["components/ui/Radio/Radio.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ import React, { useMemo } from 'react';
4
4
  import { View } from 'react-native';
5
5
  import { useThemedStyles } from "../../../theme/index.js";
6
6
  import { RadioContext } from "./RadioContext.js";
@@ -21,15 +21,19 @@ export function RadioGroup({
21
21
  testID
22
22
  }) {
23
23
  const styles = useThemedStyles(makeStyles);
24
+ // [L-80b] useMemo 稳定 context value —— 避免每次渲染都产生新对象引用,
25
+ // 防止所有 Radio 子项因 context 变化而不必要 re-render。
26
+ const ctx = useMemo(() => ({
27
+ value,
28
+ onChange,
29
+ groupTestID: testID
30
+ }), [value, onChange, testID]);
24
31
  return /*#__PURE__*/_jsx(RadioContext.Provider, {
25
- value: {
26
- value,
27
- onChange,
28
- groupTestID: testID
29
- },
32
+ value: ctx,
30
33
  children: /*#__PURE__*/_jsx(View, {
31
34
  style: styles.group,
32
35
  testID: testID,
36
+ accessibilityRole: "radiogroup",
33
37
  children: children
34
38
  })
35
39
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","useThemedStyles","RadioContext","makeStyles","jsx","_jsx","RadioGroup","value","onChange","children","testID","styles","Provider","groupTestID","style","group"],"sourceRoot":"../../../../../src","sources":["components/ui/Radio/RadioGroup.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,KAAK;EACLC,QAAQ;EACRC,QAAQ;EACRC;AACU,CAAC,EAAqB;EAChC,MAAMC,MAAM,GAAGV,eAAe,CAACE,UAAU,CAAC;EAC1C,oBACEE,IAAA,CAACH,YAAY,CAACU,QAAQ;IAACL,KAAK,EAAE;MAAEA,KAAK;MAAEC,QAAQ;MAAEK,WAAW,EAAEH;IAAO,CAAE;IAAAD,QAAA,eACrEJ,IAAA,CAACL,IAAI;MAACc,KAAK,EAAEH,MAAM,CAACI,KAAM;MAACL,MAAM,EAAEA,MAAO;MAAAD,QAAA,EACvCA;IAAQ,CACL;EAAC,CACc,CAAC;AAE5B","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","View","useThemedStyles","RadioContext","makeStyles","jsx","_jsx","RadioGroup","value","onChange","children","testID","styles","ctx","groupTestID","Provider","style","group","accessibilityRole"],"sourceRoot":"../../../../../src","sources":["components/ui/Radio/RadioGroup.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,KAAK;EACLC,QAAQ;EACRC,QAAQ;EACRC;AACU,CAAC,EAAqB;EAChC,MAAMC,MAAM,GAAGV,eAAe,CAACE,UAAU,CAAC;EAC1C;EACA;EACA,MAAMS,GAAG,GAAGb,OAAO,CACjB,OAAO;IAAEQ,KAAK;IAAEC,QAAQ;IAAEK,WAAW,EAAEH;EAAO,CAAC,CAAC,EAChD,CAACH,KAAK,EAAEC,QAAQ,EAAEE,MAAM,CAC1B,CAAC;EACD,oBACEL,IAAA,CAACH,YAAY,CAACY,QAAQ;IAACP,KAAK,EAAEK,GAAI;IAAAH,QAAA,eAEhCJ,IAAA,CAACL,IAAI;MAACe,KAAK,EAAEJ,MAAM,CAACK,KAAM;MAACN,MAAM,EAAEA,MAAO;MAACO,iBAAiB,EAAC,YAAY;MAAAR,QAAA,EACtEA;IAAQ,CACL;EAAC,CACc,CAAC;AAE5B","ignoreList":[]}
@@ -5,17 +5,21 @@ import { fw, r, radius, space, type as t } from "../../../theme/index.js";
5
5
  export const makeStyles = c => StyleSheet.create({
6
6
  group: {
7
7
  gap: space[1]
8
+ // [L-34] radiogroup 角色由 RadioGroup.tsx 容器 View 上设置
8
9
  },
9
10
  row: {
10
11
  flexDirection: 'row',
11
12
  alignItems: 'center',
13
+ // [L-37] alignSelf:'flex-start' 防止父容器拉伸(与 Chip [M-8] 同口径)
14
+ alignSelf: 'flex-start',
12
15
  gap: space[4],
13
16
  paddingVertical: space[2]
14
17
  },
15
18
  circle: {
16
19
  width: r(20),
17
20
  height: r(20),
18
- borderRadius: radius.lg,
21
+ // [L-79] radius.pill —— sentinel 999 确保任何尺寸下都是真圆
22
+ borderRadius: radius.pill,
19
23
  borderWidth: r(1.5),
20
24
  borderColor: c.outline,
21
25
  alignItems: 'center',
@@ -24,13 +28,16 @@ export const makeStyles = c => StyleSheet.create({
24
28
  dot: {
25
29
  width: r(8),
26
30
  height: r(8),
27
- borderRadius: radius.xs,
31
+ // [L-79] radius.pill —— 内圆点同理
32
+ borderRadius: radius.pill,
28
33
  backgroundColor: c.primary
29
34
  },
30
35
  label: {
31
36
  fontSize: t.sm,
32
37
  color: c.foreground,
33
- fontWeight: fw.regular
38
+ fontWeight: fw.regular,
39
+ // flexShrink:长 label 在 row 内换行/截断,不溢出也不把同行控件挤没([M-10])
40
+ flexShrink: 1
34
41
  }
35
42
  });
36
43
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","fw","r","radius","space","type","t","makeStyles","c","create","group","gap","row","flexDirection","alignItems","paddingVertical","circle","width","height","borderRadius","lg","borderWidth","borderColor","outline","justifyContent","dot","xs","backgroundColor","primary","label","fontSize","sm","color","foreground","fontWeight","regular"],"sourceRoot":"../../../../../src","sources":["components/ui/Radio/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;AAGhE,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCR,UAAU,CAACS,MAAM,CAAC;EAChBC,KAAK,EAAE;IACLC,GAAG,EAAEP,KAAK,CAAC,CAAC;EACd,CAAC;EACDQ,GAAG,EAAE;IACHC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBH,GAAG,EAAEP,KAAK,CAAC,CAAC,CAAC;IACbW,eAAe,EAAEX,KAAK,CAAC,CAAC;EAC1B,CAAC;EACDY,MAAM,EAAE;IACNC,KAAK,EAAEf,CAAC,CAAC,EAAE,CAAC;IACZgB,MAAM,EAAEhB,CAAC,CAAC,EAAE,CAAC;IACbiB,YAAY,EAAEhB,MAAM,CAACiB,EAAE;IACvBC,WAAW,EAAEnB,CAAC,CAAC,GAAG,CAAC;IACnBoB,WAAW,EAAEd,CAAC,CAACe,OAAO;IACtBT,UAAU,EAAE,QAAQ;IACpBU,cAAc,EAAE;EAClB,CAAC;EACDC,GAAG,EAAE;IACHR,KAAK,EAAEf,CAAC,CAAC,CAAC,CAAC;IACXgB,MAAM,EAAEhB,CAAC,CAAC,CAAC,CAAC;IACZiB,YAAY,EAAEhB,MAAM,CAACuB,EAAE;IACvBC,eAAe,EAAEnB,CAAC,CAACoB;EACrB,CAAC;EACDC,KAAK,EAAE;IACLC,QAAQ,EAAExB,CAAC,CAACyB,EAAE;IACdC,KAAK,EAAExB,CAAC,CAACyB,UAAU;IACnBC,UAAU,EAAEjC,EAAE,CAACkC;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","fw","r","radius","space","type","t","makeStyles","c","create","group","gap","row","flexDirection","alignItems","alignSelf","paddingVertical","circle","width","height","borderRadius","pill","borderWidth","borderColor","outline","justifyContent","dot","backgroundColor","primary","label","fontSize","sm","color","foreground","fontWeight","regular","flexShrink"],"sourceRoot":"../../../../../src","sources":["components/ui/Radio/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;AAGhE,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCR,UAAU,CAACS,MAAM,CAAC;EAChBC,KAAK,EAAE;IACLC,GAAG,EAAEP,KAAK,CAAC,CAAC;IACZ;EACF,CAAC;EACDQ,GAAG,EAAE;IACHC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpB;IACAC,SAAS,EAAE,YAAqB;IAChCJ,GAAG,EAAEP,KAAK,CAAC,CAAC,CAAC;IACbY,eAAe,EAAEZ,KAAK,CAAC,CAAC;EAC1B,CAAC;EACDa,MAAM,EAAE;IACNC,KAAK,EAAEhB,CAAC,CAAC,EAAE,CAAC;IACZiB,MAAM,EAAEjB,CAAC,CAAC,EAAE,CAAC;IACb;IACAkB,YAAY,EAAEjB,MAAM,CAACkB,IAAI;IACzBC,WAAW,EAAEpB,CAAC,CAAC,GAAG,CAAC;IACnBqB,WAAW,EAAEf,CAAC,CAACgB,OAAO;IACtBV,UAAU,EAAE,QAAQ;IACpBW,cAAc,EAAE;EAClB,CAAC;EACDC,GAAG,EAAE;IACHR,KAAK,EAAEhB,CAAC,CAAC,CAAC,CAAC;IACXiB,MAAM,EAAEjB,CAAC,CAAC,CAAC,CAAC;IACZ;IACAkB,YAAY,EAAEjB,MAAM,CAACkB,IAAI;IACzBM,eAAe,EAAEnB,CAAC,CAACoB;EACrB,CAAC;EACDC,KAAK,EAAE;IACLC,QAAQ,EAAExB,CAAC,CAACyB,EAAE;IACdC,KAAK,EAAExB,CAAC,CAACyB,UAAU;IACnBC,UAAU,EAAEjC,EAAE,CAACkC,OAAO;IACtB;IACAC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}