@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,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect, useRef, useState } from 'react';
3
+ import React, { useEffect, useState } from 'react';
4
4
  import { Image, Text, View } from 'react-native';
5
5
  import { useColors } from "../../../theme/index.js";
6
6
  import { paletteFor, sizingFor, styles } from "./styles.js";
@@ -16,17 +16,21 @@ export function Avatar({
16
16
  size = 'md',
17
17
  variant = 'neutral',
18
18
  source,
19
+ style,
19
20
  testID
20
21
  }) {
21
22
  const c = useColors();
22
23
  const [imageFailed, setImageFailed] = useState(false);
23
- // 避免 unmount 后 Image 网络回包仍调 setState 的 React warning
24
- const mountedRef = useRef(true);
25
- useEffect(() => () => {
26
- mountedRef.current = false;
27
- }, []);
24
+
25
+ // [M-20] React 18+ 已移除 unmount 后 setState 的 warning,mountedRef 守卫为死码,删除。
26
+ // [L-44] source 变化时重置 imageFailed,否则换图 URL 后仍展示 fallback 文字。
27
+ // source 可能是对象形态({ uri }),按 uri 字段做细粒度比较。
28
+ const uri = source != null && typeof source === 'object' && 'uri' in source ? source.uri : null;
29
+ useEffect(() => {
30
+ setImageFailed(false);
31
+ }, [uri, source]);
28
32
  const handleImageError = () => {
29
- if (mountedRef.current) setImageFailed(true);
33
+ setImageFailed(true);
30
34
  };
31
35
  const dims = sizingFor(size);
32
36
  const palette = paletteFor(variant, c);
@@ -37,7 +41,8 @@ export function Avatar({
37
41
  height: dims.box,
38
42
  borderRadius: dims.box / 2,
39
43
  backgroundColor: palette.bg
40
- }],
44
+ }, style],
45
+ accessible: !!label,
41
46
  accessibilityLabel: label,
42
47
  testID: testID,
43
48
  children: showImage ? /*#__PURE__*/_jsx(Image, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","Image","Text","View","useColors","paletteFor","sizingFor","styles","jsx","_jsx","Avatar","label","size","variant","source","testID","c","imageFailed","setImageFailed","mountedRef","current","handleImageError","dims","palette","showImage","style","base","width","box","height","borderRadius","backgroundColor","bg","accessibilityLabel","children","onError","image","resizeMode","fontSize","fs","color","fg","numberOfLines"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,KAAK,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAChD,SAASC,SAAS,QAAQ,yBAAgB;AAC1C,SAASC,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,OAAO,GAAG,SAAS;EACnBC,MAAM;EACNC;AACW,CAAC,EAAqB;EACjC,MAAMC,CAAC,GAAGZ,SAAS,CAAC,CAAC;EACrB,MAAM,CAACa,WAAW,EAAEC,cAAc,CAAC,GAAGlB,QAAQ,CAAC,KAAK,CAAC;EACrD;EACA,MAAMmB,UAAU,GAAGpB,MAAM,CAAC,IAAI,CAAC;EAC/BD,SAAS,CACP,MAAM,MAAM;IACVqB,UAAU,CAACC,OAAO,GAAG,KAAK;EAC5B,CAAC,EACD,EACF,CAAC;EACD,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,IAAIF,UAAU,CAACC,OAAO,EAAEF,cAAc,CAAC,IAAI,CAAC;EAC9C,CAAC;EACD,MAAMI,IAAI,GAAGhB,SAAS,CAACM,IAAI,CAAC;EAC5B,MAAMW,OAAO,GAAGlB,UAAU,CAACQ,OAAO,EAAEG,CAAC,CAAC;EAEtC,MAAMQ,SAAS,GAAGV,MAAM,IAAI,IAAI,IAAI,CAACG,WAAW;EAEhD,oBACER,IAAA,CAACN,IAAI;IACHsB,KAAK,EAAE,CACLlB,MAAM,CAACmB,IAAI,EACX;MACEC,KAAK,EAAEL,IAAI,CAACM,GAAG;MACfC,MAAM,EAAEP,IAAI,CAACM,GAAG;MAChBE,YAAY,EAAER,IAAI,CAACM,GAAG,GAAG,CAAC;MAC1BG,eAAe,EAAER,OAAO,CAACS;IAC3B,CAAC,CACD;IACFC,kBAAkB,EAAEtB,KAAM;IAC1BI,MAAM,EAAEA,MAAO;IAAAmB,QAAA,EAEdV,SAAS,gBACRf,IAAA,CAACR,KAAK;MACJa,MAAM,EAAEA,MAAO;MACfqB,OAAO,EAAEd,gBAAiB;MAC1BI,KAAK,EAAElB,MAAM,CAAC6B,KAAM;MACpBC,UAAU,EAAC;IAAO,CACnB,CAAC,gBAEF5B,IAAA,CAACP,IAAI;MACHuB,KAAK,EAAE,CAAClB,MAAM,CAACI,KAAK,EAAE;QAAE2B,QAAQ,EAAEhB,IAAI,CAACiB,EAAE;QAAEC,KAAK,EAAEjB,OAAO,CAACkB;MAAG,CAAC,CAAE;MAChEC,aAAa,EAAE,CAAE;MAAAR,QAAA,EAEhBvB;IAAK,CACF;EACP,CACG,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","Image","Text","View","useColors","paletteFor","sizingFor","styles","jsx","_jsx","Avatar","label","size","variant","source","style","testID","c","imageFailed","setImageFailed","uri","handleImageError","dims","palette","showImage","base","width","box","height","borderRadius","backgroundColor","bg","accessible","accessibilityLabel","children","onError","image","resizeMode","fontSize","fs","color","fg","numberOfLines"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,KAAK,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAChD,SAASC,SAAS,QAAQ,yBAAgB;AAC1C,SAASC,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,OAAO,GAAG,SAAS;EACnBC,MAAM;EACNC,KAAK;EACLC;AACW,CAAC,EAAqB;EACjC,MAAMC,CAAC,GAAGb,SAAS,CAAC,CAAC;EACrB,MAAM,CAACc,WAAW,EAAEC,cAAc,CAAC,GAAGnB,QAAQ,CAAC,KAAK,CAAC;;EAErD;EACA;EACA;EACA,MAAMoB,GAAG,GACPN,MAAM,IAAI,IAAI,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAIA,MAAM,GAC1DA,MAAM,CAAsBM,GAAG,GAChC,IAAI;EACVrB,SAAS,CAAC,MAAM;IACdoB,cAAc,CAAC,KAAK,CAAC;EACvB,CAAC,EAAE,CAACC,GAAG,EAAEN,MAAM,CAAC,CAAC;EAEjB,MAAMO,gBAAgB,GAAGA,CAAA,KAAM;IAC7BF,cAAc,CAAC,IAAI,CAAC;EACtB,CAAC;EACD,MAAMG,IAAI,GAAGhB,SAAS,CAACM,IAAI,CAAC;EAC5B,MAAMW,OAAO,GAAGlB,UAAU,CAACQ,OAAO,EAAEI,CAAC,CAAC;EAEtC,MAAMO,SAAS,GAAGV,MAAM,IAAI,IAAI,IAAI,CAACI,WAAW;EAEhD,oBACET,IAAA,CAACN,IAAI;IACHY,KAAK,EAAE,CACLR,MAAM,CAACkB,IAAI,EACX;MACEC,KAAK,EAAEJ,IAAI,CAACK,GAAG;MACfC,MAAM,EAAEN,IAAI,CAACK,GAAG;MAChBE,YAAY,EAAEP,IAAI,CAACK,GAAG,GAAG,CAAC;MAC1BG,eAAe,EAAEP,OAAO,CAACQ;IAC3B,CAAC,EACDhB,KAAK,CACL;IACFiB,UAAU,EAAE,CAAC,CAACrB,KAAM;IACpBsB,kBAAkB,EAAEtB,KAAM;IAC1BK,MAAM,EAAEA,MAAO;IAAAkB,QAAA,EAEdV,SAAS,gBACRf,IAAA,CAACR,KAAK;MACJa,MAAM,EAAEA,MAAO;MACfqB,OAAO,EAAEd,gBAAiB;MAC1BN,KAAK,EAAER,MAAM,CAAC6B,KAAM;MACpBC,UAAU,EAAC;IAAO,CACnB,CAAC,gBAEF5B,IAAA,CAACP,IAAI;MACHa,KAAK,EAAE,CAACR,MAAM,CAACI,KAAK,EAAE;QAAE2B,QAAQ,EAAEhB,IAAI,CAACiB,EAAE;QAAEC,KAAK,EAAEjB,OAAO,CAACkB;MAAG,CAAC,CAAE;MAChEC,aAAa,EAAE,CAAE;MAAAR,QAAA,EAEhBvB;IAAK,CACF;EACP,CACG,CAAC;AAEX","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { StyleSheet } from 'react-native';
4
- import { avatar, fw } from "../../../theme/index.js";
4
+ import { avatar, fw, rf } from "../../../theme/index.js";
5
5
  /** Avatar 静态 base —— 圆形容器(borderRadius / 尺寸由 sizingFor 派生)。 */
6
6
  export const styles = StyleSheet.create({
7
7
  base: {
@@ -26,32 +26,32 @@ export function sizingFor(size) {
26
26
  case 'xs':
27
27
  return {
28
28
  box: avatar.xs,
29
- fs: 10
29
+ fs: rf(10)
30
30
  };
31
31
  case 'sm':
32
32
  return {
33
33
  box: avatar.sm,
34
- fs: 12
34
+ fs: rf(12)
35
35
  };
36
36
  case 'md':
37
37
  return {
38
38
  box: avatar.md,
39
- fs: 13
39
+ fs: rf(13)
40
40
  };
41
41
  case 'lg':
42
42
  return {
43
43
  box: avatar.lg,
44
- fs: 15
44
+ fs: rf(15)
45
45
  };
46
46
  case 'xl':
47
47
  return {
48
48
  box: avatar.xl,
49
- fs: 20
49
+ fs: rf(20)
50
50
  };
51
51
  }
52
52
  }
53
53
 
54
- /** Avatar 配色推导:4 种 variant → { bg, fg }。签名与 Tag/Tool 的 paletteFor 一致。 */
54
+ /** Avatar 配色推导:4 种 variant → { bg, fg }。签名与 Tag/Button 的 paletteFor 一致。 */
55
55
  export function paletteFor(variant, c) {
56
56
  switch (variant) {
57
57
  case 'brand':
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","avatar","fw","styles","create","base","alignItems","justifyContent","overflow","label","fontWeight","semi","lineHeight","undefined","image","width","height","sizingFor","size","box","xs","fs","sm","md","lg","xl","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,QAA0B,yBAAgB;AAG7D;AACA,OAAO,MAAMC,MAAM,GAAGH,UAAU,CAACI,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;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAA+B;EACvE,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QAAEC,GAAG,EAAElB,MAAM,CAACmB,EAAE;QAAEC,EAAE,EAAE;MAAG,CAAC;IACnC,KAAK,IAAI;MACP,OAAO;QAAEF,GAAG,EAAElB,MAAM,CAACqB,EAAE;QAAED,EAAE,EAAE;MAAG,CAAC;IACnC,KAAK,IAAI;MACP,OAAO;QAAEF,GAAG,EAAElB,MAAM,CAACsB,EAAE;QAAEF,EAAE,EAAE;MAAG,CAAC;IACnC,KAAK,IAAI;MACP,OAAO;QAAEF,GAAG,EAAElB,MAAM,CAACuB,EAAE;QAAEH,EAAE,EAAE;MAAG,CAAC;IACnC,KAAK,IAAI;MACP,OAAO;QAAEF,GAAG,EAAElB,MAAM,CAACwB,EAAE;QAAEJ,EAAE,EAAE;MAAG,CAAC;EACrC;AACF;;AAEA;AACA,OAAO,SAASK,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","avatar","fw","rf","styles","create","base","alignItems","justifyContent","overflow","label","fontWeight","semi","lineHeight","undefined","image","width","height","sizingFor","size","box","xs","fs","sm","md","lg","xl","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,EAAE,QAA0B,yBAAgB;AAGjE;AACA,OAAO,MAAMC,MAAM,GAAGJ,UAAU,CAACK,MAAM,CAAC;EACtCC,IAAI,EAAE;IACJC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAET,EAAE,CAACU,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,EAAEnB,MAAM,CAACoB,EAAE;QAAEC,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEnB,MAAM,CAACsB,EAAE;QAAED,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEnB,MAAM,CAACuB,EAAE;QAAEF,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEnB,MAAM,CAACwB,EAAE;QAAEH,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEnB,MAAM,CAACyB,EAAE;QAAEJ,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;EACzC;AACF;;AAEA;AACA,OAAO,SAASwB,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":[]}
@@ -10,7 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  * blurType 跟 scheme 自动切(亮 'light' / 暗 'dark',避免暗色奶白雾)。
11
11
  *
12
12
  * - `'soft'` 玻璃数据条 / 小区域
13
- * - `'strong'` 焦点引导 backdrop(BottomSheet blur 模式) */
13
+ * - `'strong'` 焦点引导 backdrop(sheet 类浮层) */
14
14
  export function BlurLayer({
15
15
  intensity,
16
16
  tint,
@@ -31,6 +31,10 @@ export function BlurLayer({
31
31
  style: StyleSheet.absoluteFill,
32
32
  blurType: blurType,
33
33
  blurAmount: blurTokens[intensity]
34
+ // iOS「降低透明度」开启时 BlurView 用纯色替换模糊;库默认 #FFFFFF 在暗色 scheme
35
+ // 下整面刺眼白底。传随 scheme 的 surface 色,与下方 tint 层视觉一致([M-6])。
36
+ ,
37
+ reducedTransparencyFallbackColor: c.surface
34
38
  }), /*#__PURE__*/_jsx(View, {
35
39
  style: [StyleSheet.absoluteFill, {
36
40
  backgroundColor: tint ?? defaultTint
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","BlurView","blur","blurTokens","useColors","useTheme","jsx","_jsx","jsxs","_jsxs","BlurLayer","intensity","tint","style","testID","c","scheme","blurType","defaultTint","sheetBackdrop","glassTintLight","absoluteFill","pointerEvents","children","blurAmount","backgroundColor"],"sourceRoot":"../../../../../src","sources":["components/ui/BlurLayer/BlurLayer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,QAAQ,QAAQ,+BAA+B;AACxD,SAASC,IAAI,IAAIC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGzE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAC;EACxBC,SAAS;EACTC,IAAI;EACJC,KAAK;EACLC;AACc,CAAC,EAAqB;EACpC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAM;IAAEY;EAAO,CAAC,GAAGX,QAAQ,CAAC,CAAC;EAC7B,MAAMY,QAAQ,GAAGD,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;EACrD,MAAME,WAAW,GACfP,SAAS,KAAK,QAAQ,GAAGI,CAAC,CAACI,aAAa,GAAGJ,CAAC,CAACK,cAAc;EAE7D,oBACEX,KAAA,CAACT,IAAI;IACHa,KAAK,EAAE,CAACd,UAAU,CAACsB,YAAY,EAAER,KAAK,CAAE;IACxCS,aAAa,EAAC,MAAM;IACpBR,MAAM,EAAEA,MAAO;IAAAS,QAAA,gBAEfhB,IAAA,CAACN,QAAQ;MACPY,KAAK,EAAEd,UAAU,CAACsB,YAAa;MAC/BJ,QAAQ,EAAEA,QAAS;MACnBO,UAAU,EAAErB,UAAU,CAACQ,SAAS;IAAE,CACnC,CAAC,eACFJ,IAAA,CAACP,IAAI;MACHa,KAAK,EAAE,CACLd,UAAU,CAACsB,YAAY,EACvB;QAAEI,eAAe,EAAEb,IAAI,IAAIM;MAAY,CAAC;IACxC,CACH,CAAC;EAAA,CACE,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","BlurView","blur","blurTokens","useColors","useTheme","jsx","_jsx","jsxs","_jsxs","BlurLayer","intensity","tint","style","testID","c","scheme","blurType","defaultTint","sheetBackdrop","glassTintLight","absoluteFill","pointerEvents","children","blurAmount","reducedTransparencyFallbackColor","surface","backgroundColor"],"sourceRoot":"../../../../../src","sources":["components/ui/BlurLayer/BlurLayer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,QAAQ,QAAQ,+BAA+B;AACxD,SAASC,IAAI,IAAIC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGzE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAC;EACxBC,SAAS;EACTC,IAAI;EACJC,KAAK;EACLC;AACc,CAAC,EAAqB;EACpC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAM;IAAEY;EAAO,CAAC,GAAGX,QAAQ,CAAC,CAAC;EAC7B,MAAMY,QAAQ,GAAGD,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;EACrD,MAAME,WAAW,GACfP,SAAS,KAAK,QAAQ,GAAGI,CAAC,CAACI,aAAa,GAAGJ,CAAC,CAACK,cAAc;EAE7D,oBACEX,KAAA,CAACT,IAAI;IACHa,KAAK,EAAE,CAACd,UAAU,CAACsB,YAAY,EAAER,KAAK,CAAE;IACxCS,aAAa,EAAC,MAAM;IACpBR,MAAM,EAAEA,MAAO;IAAAS,QAAA,gBAEfhB,IAAA,CAACN,QAAQ;MACPY,KAAK,EAAEd,UAAU,CAACsB,YAAa;MAC/BJ,QAAQ,EAAEA,QAAS;MACnBO,UAAU,EAAErB,UAAU,CAACQ,SAAS;MAChC;MACA;MAAA;MACAc,gCAAgC,EAAEV,CAAC,CAACW;IAAQ,CAC7C,CAAC,eACFnB,IAAA,CAACP,IAAI;MACHa,KAAK,EAAE,CACLd,UAAU,CAACsB,YAAY,EACvB;QAAEM,eAAe,EAAEf,IAAI,IAAIM;MAAY,CAAC;IACxC,CACH,CAAC;EAAA,CACE,CAAC;AAEX","ignoreList":[]}
@@ -24,7 +24,13 @@ export function BlurLayer({
24
24
  } = useTheme();
25
25
  const blurAmount = blurTokens[intensity];
26
26
  const defaultTint = intensity === 'strong' ? c.sheetBackdrop : c.glassTintLight;
27
- // RN style typedef 不识别 web-only 属性,cast 绕过 TS;RN-Web 浏览器侧原样输出
27
+ // RN style typedef 不识别 web-only 属性,cast 绕过 TS;RN-Web 浏览器侧原样输出。
28
+ // [L-15] saturate(180%):苹果 HIG 玻璃效果的标准值,增强模糊后的颜色鲜艳度,
29
+ // 与 macOS / iOS 系统 vibrancy 视觉一致;降低会让玻璃面板显得灰暗脱色。
30
+ // [L-15] opacity:0.96(暗色):暗色 scheme 下 backdrop-filter 在 Chromium 中
31
+ // opacity=1 时存在渲染 artifact(模糊层与底层内容边界锯齿),降到 0.96 消除;
32
+ // 亮色 scheme 不受影响故保持 1。native 端 BlurLayer.tsx 用双层 View 实现,
33
+ // 语义等价(tint 层覆盖 BlurView),无需此 opacity 补丁。
28
34
  const webBlurStyle = {
29
35
  backdropFilter: `blur(${blurAmount}px) saturate(180%)`,
30
36
  WebkitBackdropFilter: `blur(${blurAmount}px) saturate(180%)`,
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","blur","blurTokens","useColors","useTheme","jsx","_jsx","BlurLayer","intensity","tint","style","testID","c","scheme","blurAmount","defaultTint","sheetBackdrop","glassTintLight","webBlurStyle","backdropFilter","WebkitBackdropFilter","backgroundColor","opacity","absoluteFill","pointerEvents"],"sourceRoot":"../../../../../src","sources":["components/ui/BlurLayer/BlurLayer.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAC/E,SAASC,IAAI,IAAIC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzE,OAAO,SAASC,SAASA,CAAC;EACxBC,SAAS;EACTC,IAAI;EACJC,KAAK;EACLC;AACc,CAAC,EAAqB;EACpC,MAAMC,CAAC,GAAGT,SAAS,CAAC,CAAC;EACrB,MAAM;IAAEU;EAAO,CAAC,GAAGT,QAAQ,CAAC,CAAC;EAC7B,MAAMU,UAAU,GAAGZ,UAAU,CAACM,SAAS,CAAC;EACxC,MAAMO,WAAW,GACfP,SAAS,KAAK,QAAQ,GAAGI,CAAC,CAACI,aAAa,GAAGJ,CAAC,CAACK,cAAc;EAC7D;EACA,MAAMC,YAAY,GAAG;IACnBC,cAAc,EAAE,QAAQL,UAAU,oBAAoB;IACtDM,oBAAoB,EAAE,QAAQN,UAAU,oBAAoB;IAC5DO,eAAe,EAAEZ,IAAI,IAAIM,WAAW;IACpCO,OAAO,EAAET,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG;EACtC,CAAoC;EAEpC,oBACEP,IAAA,CAACN,IAAI;IACHU,KAAK,EAAE,CAACX,UAAU,CAACwB,YAAY,EAAEL,YAAY,EAAER,KAAK,CAAE;IACtDc,aAAa,EAAC,MAAM;IACpBb,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","blur","blurTokens","useColors","useTheme","jsx","_jsx","BlurLayer","intensity","tint","style","testID","c","scheme","blurAmount","defaultTint","sheetBackdrop","glassTintLight","webBlurStyle","backdropFilter","WebkitBackdropFilter","backgroundColor","opacity","absoluteFill","pointerEvents"],"sourceRoot":"../../../../../src","sources":["components/ui/BlurLayer/BlurLayer.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAC/E,SAASC,IAAI,IAAIC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzE,OAAO,SAASC,SAASA,CAAC;EACxBC,SAAS;EACTC,IAAI;EACJC,KAAK;EACLC;AACc,CAAC,EAAqB;EACpC,MAAMC,CAAC,GAAGT,SAAS,CAAC,CAAC;EACrB,MAAM;IAAEU;EAAO,CAAC,GAAGT,QAAQ,CAAC,CAAC;EAC7B,MAAMU,UAAU,GAAGZ,UAAU,CAACM,SAAS,CAAC;EACxC,MAAMO,WAAW,GACfP,SAAS,KAAK,QAAQ,GAAGI,CAAC,CAACI,aAAa,GAAGJ,CAAC,CAACK,cAAc;EAC7D;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,YAAY,GAAG;IACnBC,cAAc,EAAE,QAAQL,UAAU,oBAAoB;IACtDM,oBAAoB,EAAE,QAAQN,UAAU,oBAAoB;IAC5DO,eAAe,EAAEZ,IAAI,IAAIM,WAAW;IACpCO,OAAO,EAAET,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG;EACtC,CAAoC;EAEpC,oBACEP,IAAA,CAACN,IAAI;IACHU,KAAK,EAAE,CAACX,UAAU,CAACwB,YAAY,EAAEL,YAAY,EAAER,KAAK,CAAE;IACtDc,aAAa,EAAC,MAAM;IACpBb,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN","ignoreList":[]}
@@ -8,7 +8,7 @@ import { ButtonBase } from "./ButtonBase.js";
8
8
  import { makeStyles } from "./styles.js";
9
9
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  /**
11
- * 6 variant × 3 size 文本按钮。
11
+ * 7 variant × 3 size 文本按钮。
12
12
  * 内部组合 ButtonBase + content(label + 可选 leftIcon / rightIcon),
13
13
  * ButtonBase 接管 chrome(sizing / palette / disabled / loading / a11y)。
14
14
  *
@@ -53,6 +53,7 @@ export function Button({
53
53
  color: palette.fg,
54
54
  fontSize: sizing.fs
55
55
  }],
56
+ numberOfLines: 1,
56
57
  children: label
57
58
  }), rightIcon ? /*#__PURE__*/_jsx(Icon, {
58
59
  name: rightIcon,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","useThemedStyles","Icon","ButtonBase","makeStyles","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Button","label","onPress","size","variant","block","disabled","loading","leftIcon","rightIcon","style","testID","accessibilityHint","styles","accessibilityLabel","children","sizing","palette","name","fs","color","fg","fontSize"],"sourceRoot":"../../../../../src","sources":["components/ui/Button/Button.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,IAAI,QAAQ,kBAAS;AAC9B,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,OAAO;EACPC,IAAI;EACJC,OAAO;EACPC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,MAAM;EACNC;AACW,CAAC,EAAqB;EACjC,MAAMC,MAAM,GAAGvB,eAAe,CAACG,UAAU,CAAC;EAC1C,oBACEE,IAAA,CAACH,UAAU;IACTU,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA,IAAK;IACXC,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA,OAAQ;IACjBO,kBAAkB,EAAEb,KAAM;IAC1BW,iBAAiB,EAAEA,iBAAkB;IACrCF,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IAAAI,QAAA,EAEdA,CAAC;MAAEC,MAAM;MAAEC;IAAQ,CAAC,kBACnBlB,KAAA,CAAAF,SAAA;MAAAkB,QAAA,GACGP,QAAQ,gBACPb,IAAA,CAACJ,IAAI;QAAC2B,IAAI,EAAEV,QAAS;QAACL,IAAI,EAAEa,MAAM,CAACG,EAAE,GAAG,CAAE;QAACC,KAAK,EAAEH,OAAO,CAACI;MAAG,CAAE,CAAC,GAC9D,IAAI,eACR1B,IAAA,CAACN,IAAI;QACHqB,KAAK,EAAE,CAACG,MAAM,CAACZ,KAAK,EAAE;UAAEmB,KAAK,EAAEH,OAAO,CAACI,EAAE;UAAEC,QAAQ,EAAEN,MAAM,CAACG;QAAG,CAAC,CAAE;QAAAJ,QAAA,EAEjEd;MAAK,CACF,CAAC,EACNQ,SAAS,gBACRd,IAAA,CAACJ,IAAI;QAAC2B,IAAI,EAAET,SAAU;QAACN,IAAI,EAAEa,MAAM,CAACG,EAAE,GAAG,CAAE;QAACC,KAAK,EAAEH,OAAO,CAACI;MAAG,CAAE,CAAC,GAC/D,IAAI;IAAA,CACR;EACH,CACS,CAAC;AAEjB","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","useThemedStyles","Icon","ButtonBase","makeStyles","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Button","label","onPress","size","variant","block","disabled","loading","leftIcon","rightIcon","style","testID","accessibilityHint","styles","accessibilityLabel","children","sizing","palette","name","fs","color","fg","fontSize","numberOfLines"],"sourceRoot":"../../../../../src","sources":["components/ui/Button/Button.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,IAAI,QAAQ,kBAAS;AAC9B,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,OAAO;EACPC,IAAI;EACJC,OAAO;EACPC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,MAAM;EACNC;AACW,CAAC,EAAqB;EACjC,MAAMC,MAAM,GAAGvB,eAAe,CAACG,UAAU,CAAC;EAC1C,oBACEE,IAAA,CAACH,UAAU;IACTU,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA,IAAK;IACXC,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA,OAAQ;IACjBO,kBAAkB,EAAEb,KAAM;IAC1BW,iBAAiB,EAAEA,iBAAkB;IACrCF,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IAAAI,QAAA,EAEdA,CAAC;MAAEC,MAAM;MAAEC;IAAQ,CAAC,kBACnBlB,KAAA,CAAAF,SAAA;MAAAkB,QAAA,GACGP,QAAQ,gBACPb,IAAA,CAACJ,IAAI;QAAC2B,IAAI,EAAEV,QAAS;QAACL,IAAI,EAAEa,MAAM,CAACG,EAAE,GAAG,CAAE;QAACC,KAAK,EAAEH,OAAO,CAACI;MAAG,CAAE,CAAC,GAC9D,IAAI,eACR1B,IAAA,CAACN,IAAI;QACHqB,KAAK,EAAE,CAACG,MAAM,CAACZ,KAAK,EAAE;UAAEmB,KAAK,EAAEH,OAAO,CAACI,EAAE;UAAEC,QAAQ,EAAEN,MAAM,CAACG;QAAG,CAAC,CAAE;QAClEI,aAAa,EAAE,CAAE;QAAAR,QAAA,EAEhBd;MAAK,CACF,CAAC,EACNQ,SAAS,gBACRd,IAAA,CAACJ,IAAI;QAAC2B,IAAI,EAAET,SAAU;QAACN,IAAI,EAAEa,MAAM,CAACG,EAAE,GAAG,CAAE;QAACC,KAAK,EAAEH,OAAO,CAACI;MAAG,CAAE,CAAC,GAC/D,IAAI;IAAA,CACR;EACH,CACS,CAAC;AAEjB","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  import React, { useMemo } from 'react';
4
4
  import { ActivityIndicator } from 'react-native';
5
5
  import { Pressable } from 'react-native-gesture-handler';
6
- import { useColors, useThemedStyles } from "../../../theme/index.js";
6
+ import { fixed, pressedOpacity, useColors, useThemedStyles } from "../../../theme/index.js";
7
7
  import { makeStyles, paletteFor, sizingFor } from "./styles.js";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  /** ButtonBase —— Button / IconButton 共享的 internal primitive。
@@ -30,6 +30,39 @@ export function ButtonBase({
30
30
  const palette = useMemo(() => paletteFor(variant, c), [variant, c]);
31
31
  const isText = variant === 'text';
32
32
  const isInteractive = !disabled && !loading;
33
+
34
+ // [M-7] 触控目标补偿:hitSlop 向外扩展命中区域到 fixed.hitTarget(44pt)。
35
+ // 公式:vertical slop = max(0, (hitTarget - h) / 2);square 时同补 horizontal。
36
+ // text variant height=undefined(仅行内文字高 ~18pt),无法从 sizing.h 推算,
37
+ // 保守固定补到 44pt 等效(top+bottom ≈ 13pt each)。
38
+ // ⚠ hitSlop 不越父边界;相邻可按压元素建议间距 ≥ 2×slop 以防重叠裁决。
39
+ const hitSlop = useMemo(() => {
40
+ if (isText) {
41
+ // text 无 chrome,仅靠行高无法可靠获取实际高度,固定补至 44pt
42
+ const v = Math.round((fixed.hitTarget - 18) / 2);
43
+ return {
44
+ top: v,
45
+ bottom: v,
46
+ left: 0,
47
+ right: 0
48
+ };
49
+ }
50
+ const v = Math.max(0, Math.round((fixed.hitTarget - sizing.h) / 2));
51
+ if (square) {
52
+ return {
53
+ top: v,
54
+ bottom: v,
55
+ left: v,
56
+ right: v
57
+ };
58
+ }
59
+ return {
60
+ top: v,
61
+ bottom: v,
62
+ left: 0,
63
+ right: 0
64
+ };
65
+ }, [isText, sizing.h, square]);
33
66
  return /*#__PURE__*/_jsx(Pressable, {
34
67
  accessibilityRole: accessibilityRole,
35
68
  accessibilityState: {
@@ -39,6 +72,7 @@ export function ButtonBase({
39
72
  accessibilityHint: accessibilityHint,
40
73
  disabled: !isInteractive,
41
74
  onPress: onPress,
75
+ hitSlop: hitSlop,
42
76
  testID: testID,
43
77
  style: ({
44
78
  pressed
@@ -52,7 +86,7 @@ export function ButtonBase({
52
86
  backgroundColor: palette.bg,
53
87
  borderColor: palette.border ?? 'transparent',
54
88
  borderWidth: palette.border ? 1 : 0,
55
- opacity: disabled ? 0.5 : pressed ? 0.7 : 1,
89
+ opacity: disabled ? 0.5 : pressed ? pressedOpacity : 1,
56
90
  alignSelf: block ? 'stretch' : 'flex-start',
57
91
  // 非 block 用 undefined 而非硬编码 0:Yoga 的 resolveFlexGrow 里显式 flexGrow
58
92
  // 优先级高于 flex 简写,写死 0 会让调用方 style={{ flex: 1 }} 失效(按钮撑不开 /
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","ActivityIndicator","Pressable","useColors","useThemedStyles","makeStyles","paletteFor","sizingFor","jsx","_jsx","ButtonBase","onPress","size","variant","disabled","loading","block","square","accessibilityLabel","accessibilityRole","accessibilityHint","style","testID","children","c","styles","sizing","palette","isText","isInteractive","accessibilityState","pressed","base","height","undefined","h","width","paddingHorizontal","px","borderRadius","br","backgroundColor","bg","borderColor","border","borderWidth","opacity","alignSelf","flexGrow","gap","color","fg"],"sourceRoot":"../../../../../src","sources":["components/ui/Button/ButtonBase.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SACEC,iBAAiB,QAIZ,cAAc;AACrB,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,UAAU,EAAEC,UAAU,EAAEC,SAAS,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA2B7D;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,OAAO;EACPC,IAAI,GAAG,IAAI;EACXC,OAAO,GAAG,SAAS;EACnBC,QAAQ;EACRC,OAAO;EACPC,KAAK;EACLC,MAAM;EACNC,kBAAkB;EAClBC,iBAAiB,GAAG,QAAQ;EAC5BC,iBAAiB;EACjBC,KAAK;EACLC,MAAM;EACNC;AACe,CAAC,EAAqB;EACrC,MAAMC,CAAC,GAAGrB,SAAS,CAAC,CAAC;EACrB,MAAMsB,MAAM,GAAGrB,eAAe,CAACC,UAAU,CAAC;EAE1C,MAAMqB,MAAM,GAAG1B,OAAO,CAAC,MAAMO,SAAS,CAACK,IAAI,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EACrD,MAAMe,OAAO,GAAG3B,OAAO,CAAC,MAAMM,UAAU,CAACO,OAAO,EAAEW,CAAC,CAAC,EAAE,CAACX,OAAO,EAAEW,CAAC,CAAC,CAAC;EAEnE,MAAMI,MAAM,GAAGf,OAAO,KAAK,MAAM;EACjC,MAAMgB,aAAa,GAAG,CAACf,QAAQ,IAAI,CAACC,OAAO;EAE3C,oBACEN,IAAA,CAACP,SAAS;IACRiB,iBAAiB,EAAEA,iBAAkB;IACrCW,kBAAkB,EAAE;MAAEhB,QAAQ,EAAE,CAACe;IAAc,CAAE;IACjDX,kBAAkB,EAAEA,kBAAmB;IACvCE,iBAAiB,EAAEA,iBAAkB;IACrCN,QAAQ,EAAE,CAACe,aAAc;IACzBlB,OAAO,EAAEA,OAAQ;IACjBW,MAAM,EAAEA,MAAO;IACfD,KAAK,EAAEA,CAAC;MAAEU;IAAQ,CAAC,KAAK,CACtBN,MAAM,CAACO,IAAI,EACX;MACE;MACAC,MAAM,EAAEL,MAAM,GAAGM,SAAS,GAAGR,MAAM,CAACS,CAAC;MACrC;MACAC,KAAK,EAAEnB,MAAM,GAAGS,MAAM,CAACS,CAAC,GAAGD,SAAS;MACpCG,iBAAiB,EAAET,MAAM,IAAIX,MAAM,GAAG,CAAC,GAAGS,MAAM,CAACY,EAAE;MACnDC,YAAY,EAAEb,MAAM,CAACc,EAAE;MACvBC,eAAe,EAAEd,OAAO,CAACe,EAAE;MAC3BC,WAAW,EAAEhB,OAAO,CAACiB,MAAM,IAAI,aAAa;MAC5CC,WAAW,EAAElB,OAAO,CAACiB,MAAM,GAAG,CAAC,GAAG,CAAC;MACnCE,OAAO,EAAEhC,QAAQ,GAAG,GAAG,GAAGiB,OAAO,GAAG,GAAG,GAAG,CAAC;MAC3CgB,SAAS,EAAE/B,KAAK,GAAG,SAAS,GAAG,YAAY;MAC3C;MACA;MACA;MACA;MACAgC,QAAQ,EAAEhC,KAAK,GAAG,CAAC,GAAGkB,SAAS;MAC/Be,GAAG,EAAEvB,MAAM,CAACuB;IACd,CAAC,EACD5B,KAAK,CACL;IAAAE,QAAA,EAEDR,OAAO,gBACNN,IAAA,CAACR,iBAAiB;MAACW,IAAI,EAAC,OAAO;MAACsC,KAAK,EAAEvB,OAAO,CAACwB;IAAG,CAAE,CAAC,GAErD5B,QAAQ,CAAC;MAAEG,MAAM;MAAEC;IAAQ,CAAC;EAC7B,CACQ,CAAC;AAEhB","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","ActivityIndicator","Pressable","fixed","pressedOpacity","useColors","useThemedStyles","makeStyles","paletteFor","sizingFor","jsx","_jsx","ButtonBase","onPress","size","variant","disabled","loading","block","square","accessibilityLabel","accessibilityRole","accessibilityHint","style","testID","children","c","styles","sizing","palette","isText","isInteractive","hitSlop","v","Math","round","hitTarget","top","bottom","left","right","max","h","accessibilityState","pressed","base","height","undefined","width","paddingHorizontal","px","borderRadius","br","backgroundColor","bg","borderColor","border","borderWidth","opacity","alignSelf","flexGrow","gap","color","fg"],"sourceRoot":"../../../../../src","sources":["components/ui/Button/ButtonBase.tsx"],"mappings":"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","ignoreList":[]}
@@ -19,35 +19,37 @@ export const makeStyles = _c => StyleSheet.create({
19
19
  * h 走 control.<size>,br 走 radius.<size>,gap / px 走 space[].
20
20
  * 新增 size 在 types.ts 加 union + 这里加 case。 */
21
21
  export function sizingFor(size) {
22
- if (size === 'lg') {
23
- return {
24
- h: control.lg,
25
- px: r(18),
26
- fs: t.body,
27
- br: radius.lg,
28
- gap: space['2']
29
- };
30
- }
31
- if (size === 'sm') {
32
- return {
33
- h: control.sm,
34
- px: space['4'],
35
- fs: t.xxs,
36
- br: radius.sm,
37
- gap: space['1']
38
- };
22
+ switch (size) {
23
+ case 'lg':
24
+ return {
25
+ h: control.lg,
26
+ px: r(18),
27
+ fs: t.body,
28
+ br: radius.lg,
29
+ gap: space['2']
30
+ };
31
+ case 'sm':
32
+ return {
33
+ h: control.sm,
34
+ px: space['4'],
35
+ fs: t.xxs,
36
+ br: radius.sm,
37
+ gap: space['1']
38
+ };
39
+ case 'md':
40
+ return {
41
+ h: control.md,
42
+ px: space['6'],
43
+ fs: t.sm,
44
+ br: radius.md,
45
+ gap: space['2']
46
+ };
39
47
  }
40
- return {
41
- h: control.md,
42
- px: space['6'],
43
- fs: t.sm,
44
- br: radius.md,
45
- gap: space['2']
46
- };
47
48
  }
48
49
 
49
50
  /** Button 配色推导:7 种 variant → { bg, fg, border }。签名与 Tag/Avatar 的 paletteFor 一致。
50
- * text / ghost / neutral 共用 'transparent' 底,差异在 fg。 */
51
+ * text / ghost / neutral 共用 'transparent' 底;ghost↔text palette 字节级同一,
52
+ * 差异在几何:text variant 在 ButtonBase 撕除高度与内边距。 */
51
53
  export function paletteFor(variant, c) {
52
54
  switch (variant) {
53
55
  case 'primary':
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","control","fw","r","radius","space","type","t","makeStyles","_c","create","base","flexDirection","alignItems","justifyContent","label","fontWeight","semi","sizingFor","size","h","lg","px","fs","body","br","gap","sm","xxs","md","paletteFor","variant","c","bg","primary","fg","onPrimary","border","undefined","surfaceContainerHigh","foreground","surface","outline","error","onError"],"sourceRoot":"../../../../../src","sources":["components/ui/Button/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SACEC,OAAO,EACPC,EAAE,EACFC,CAAC,EACDC,MAAM,EACNC,KAAK,EACLC,IAAI,IAAIC,CAAC,QAEJ,yBAAgB;AAQvB;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,EAAe,IACxCT,UAAU,CAACU,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAEd,EAAE,CAACe;EACjB;AACF,CAAC,CAAC;;AAEJ;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAAgB;EACxD,IAAIA,IAAI,KAAK,IAAI,EAAE;IACjB,OAAO;MACLC,CAAC,EAAEnB,OAAO,CAACoB,EAAE;MACbC,EAAE,EAAEnB,CAAC,CAAC,EAAE,CAAC;MACToB,EAAE,EAAEhB,CAAC,CAACiB,IAAI;MACVC,EAAE,EAAErB,MAAM,CAACiB,EAAE;MACbK,GAAG,EAAErB,KAAK,CAAC,GAAG;IAChB,CAAC;EACH;EACA,IAAIc,IAAI,KAAK,IAAI,EAAE;IACjB,OAAO;MACLC,CAAC,EAAEnB,OAAO,CAAC0B,EAAE;MACbL,EAAE,EAAEjB,KAAK,CAAC,GAAG,CAAC;MACdkB,EAAE,EAAEhB,CAAC,CAACqB,GAAG;MACTH,EAAE,EAAErB,MAAM,CAACuB,EAAE;MACbD,GAAG,EAAErB,KAAK,CAAC,GAAG;IAChB,CAAC;EACH;EACA,OAAO;IACLe,CAAC,EAAEnB,OAAO,CAAC4B,EAAE;IACbP,EAAE,EAAEjB,KAAK,CAAC,GAAG,CAAC;IACdkB,EAAE,EAAEhB,CAAC,CAACoB,EAAE;IACRF,EAAE,EAAErB,MAAM,CAACyB,EAAE;IACbH,GAAG,EAAErB,KAAK,CAAC,GAAG;EAChB,CAAC;AACH;;AAEA;AACA;AACA,OAAO,SAASyB,UAAUA,CACxBC,OAAsB,EACtBC,CAAc,EACC;EACf,QAAQD,OAAO;IACb,KAAK,SAAS;MACZ,OAAO;QAAEE,EAAE,EAAED,CAAC,CAACE,OAAO;QAAEC,EAAE,EAAEH,CAAC,CAACI,SAAS;QAAEC,MAAM,EAAEC;MAAU,CAAC;IAC9D,KAAK,WAAW;MACd,OAAO;QACLL,EAAE,EAAED,CAAC,CAACO,oBAAoB;QAC1BJ,EAAE,EAAEH,CAAC,CAACQ,UAAU;QAChBH,MAAM,EAAEC;MACV,CAAC;IACH,KAAK,OAAO;MACV,OAAO;QAAEL,EAAE,EAAE,aAAa;QAAEE,EAAE,EAAEH,CAAC,CAACE,OAAO;QAAEG,MAAM,EAAEC;MAAU,CAAC;IAChE,KAAK,SAAS;MACZ,OAAO;QAAEL,EAAE,EAAE,aAAa;QAAEE,EAAE,EAAEH,CAAC,CAACQ,UAAU;QAAEH,MAAM,EAAEC;MAAU,CAAC;IACnE,KAAK,SAAS;MACZ,OAAO;QAAEL,EAAE,EAAED,CAAC,CAACS,OAAO;QAAEN,EAAE,EAAEH,CAAC,CAACQ,UAAU;QAAEH,MAAM,EAAEL,CAAC,CAACU;MAAQ,CAAC;IAC/D,KAAK,QAAQ;MACX,OAAO;QAAET,EAAE,EAAED,CAAC,CAACW,KAAK;QAAER,EAAE,EAAEH,CAAC,CAACY,OAAO;QAAEP,MAAM,EAAEC;MAAU,CAAC;IAC1D,KAAK,MAAM;MACT,OAAO;QAAEL,EAAE,EAAE,aAAa;QAAEE,EAAE,EAAEH,CAAC,CAACE,OAAO;QAAEG,MAAM,EAAEC;MAAU,CAAC;EAClE;AACF","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","control","fw","r","radius","space","type","t","makeStyles","_c","create","base","flexDirection","alignItems","justifyContent","label","fontWeight","semi","sizingFor","size","h","lg","px","fs","body","br","gap","sm","xxs","md","paletteFor","variant","c","bg","primary","fg","onPrimary","border","undefined","surfaceContainerHigh","foreground","surface","outline","error","onError"],"sourceRoot":"../../../../../src","sources":["components/ui/Button/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SACEC,OAAO,EACPC,EAAE,EACFC,CAAC,EACDC,MAAM,EACNC,KAAK,EACLC,IAAI,IAAIC,CAAC,QAEJ,yBAAgB;AAQvB;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,EAAe,IACxCT,UAAU,CAACU,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAEd,EAAE,CAACe;EACjB;AACF,CAAC,CAAC;;AAEJ;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAAgB;EACxD,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QACLC,CAAC,EAAEnB,OAAO,CAACoB,EAAE;QACbC,EAAE,EAAEnB,CAAC,CAAC,EAAE,CAAC;QACToB,EAAE,EAAEhB,CAAC,CAACiB,IAAI;QACVC,EAAE,EAAErB,MAAM,CAACiB,EAAE;QACbK,GAAG,EAAErB,KAAK,CAAC,GAAG;MAChB,CAAC;IACH,KAAK,IAAI;MACP,OAAO;QACLe,CAAC,EAAEnB,OAAO,CAAC0B,EAAE;QACbL,EAAE,EAAEjB,KAAK,CAAC,GAAG,CAAC;QACdkB,EAAE,EAAEhB,CAAC,CAACqB,GAAG;QACTH,EAAE,EAAErB,MAAM,CAACuB,EAAE;QACbD,GAAG,EAAErB,KAAK,CAAC,GAAG;MAChB,CAAC;IACH,KAAK,IAAI;MACP,OAAO;QACLe,CAAC,EAAEnB,OAAO,CAAC4B,EAAE;QACbP,EAAE,EAAEjB,KAAK,CAAC,GAAG,CAAC;QACdkB,EAAE,EAAEhB,CAAC,CAACoB,EAAE;QACRF,EAAE,EAAErB,MAAM,CAACyB,EAAE;QACbH,GAAG,EAAErB,KAAK,CAAC,GAAG;MAChB,CAAC;EACL;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASyB,UAAUA,CACxBC,OAAsB,EACtBC,CAAc,EACC;EACf,QAAQD,OAAO;IACb,KAAK,SAAS;MACZ,OAAO;QAAEE,EAAE,EAAED,CAAC,CAACE,OAAO;QAAEC,EAAE,EAAEH,CAAC,CAACI,SAAS;QAAEC,MAAM,EAAEC;MAAU,CAAC;IAC9D,KAAK,WAAW;MACd,OAAO;QACLL,EAAE,EAAED,CAAC,CAACO,oBAAoB;QAC1BJ,EAAE,EAAEH,CAAC,CAACQ,UAAU;QAChBH,MAAM,EAAEC;MACV,CAAC;IACH,KAAK,OAAO;MACV,OAAO;QAAEL,EAAE,EAAE,aAAa;QAAEE,EAAE,EAAEH,CAAC,CAACE,OAAO;QAAEG,MAAM,EAAEC;MAAU,CAAC;IAChE,KAAK,SAAS;MACZ,OAAO;QAAEL,EAAE,EAAE,aAAa;QAAEE,EAAE,EAAEH,CAAC,CAACQ,UAAU;QAAEH,MAAM,EAAEC;MAAU,CAAC;IACnE,KAAK,SAAS;MACZ,OAAO;QAAEL,EAAE,EAAED,CAAC,CAACS,OAAO;QAAEN,EAAE,EAAEH,CAAC,CAACQ,UAAU;QAAEH,MAAM,EAAEL,CAAC,CAACU;MAAQ,CAAC;IAC/D,KAAK,QAAQ;MACX,OAAO;QAAET,EAAE,EAAED,CAAC,CAACW,KAAK;QAAER,EAAE,EAAEH,CAAC,CAACY,OAAO;QAAEP,MAAM,EAAEC;MAAU,CAAC;IAC1D,KAAK,MAAM;MACT,OAAO;QAAEL,EAAE,EAAE,aAAa;QAAEE,EAAE,EAAEH,CAAC,CAACE,OAAO;QAAEG,MAAM,EAAEC;MAAU,CAAC;EAClE;AACF","ignoreList":[]}
@@ -18,17 +18,26 @@ export function Card({
18
18
  }) {
19
19
  const styles = useThemedStyles(makeStyles);
20
20
  const shadow = useShadow();
21
+ const br = borderRadius ?? radius.xl;
22
+
23
+ // 双层:外层持底色 + 阴影 + 圆角(无 overflow,阴影不被裁);内层持 overflow hidden
24
+ // 按圆角裁内容 + padding + 可选边框。[H-4] iOS 上 overflow 与阴影同层会裁掉阴影。
21
25
  return /*#__PURE__*/_jsx(View, {
22
26
  testID: testID,
23
27
  style: [styles.base, {
24
- borderRadius: borderRadius ?? radius.xl
25
- }, !bare && {
26
- padding: padding ?? space[6]
27
- }, variantToStyle(variant, shadow, styles), borderColor != null && {
28
- borderColor,
29
- borderWidth: borderWidth ?? 2
30
- }, style],
31
- children: children
28
+ borderRadius: br
29
+ }, variantToStyle(variant, shadow, styles), style],
30
+ children: /*#__PURE__*/_jsx(View, {
31
+ style: [styles.clip, {
32
+ borderRadius: br
33
+ }, !bare && {
34
+ padding: padding ?? space[6]
35
+ }, borderColor != null && {
36
+ borderColor,
37
+ borderWidth: borderWidth ?? 2
38
+ }],
39
+ children: children
40
+ })
32
41
  });
33
42
  }
34
43
  //# sourceMappingURL=Card.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","radius","space","useShadow","useThemedStyles","makeStyles","variantToStyle","jsx","_jsx","Card","children","variant","padding","borderRadius","borderColor","borderWidth","bare","style","testID","styles","shadow","base","xl"],"sourceRoot":"../../../../../src","sources":["components/ui/Card/Card.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC1E,SAASC,UAAU,EAAEC,cAAc,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtD,OAAO,SAASC,IAAIA,CAAC;EACnBC,QAAQ;EACRC,OAAO,GAAG,SAAS;EACnBC,OAAO;EACPC,YAAY;EACZC,WAAW;EACXC,WAAW;EACXC,IAAI;EACJC,KAAK;EACLC;AACS,CAAC,EAAqB;EAC/B,MAAMC,MAAM,GAAGf,eAAe,CAACC,UAAU,CAAC;EAC1C,MAAMe,MAAM,GAAGjB,SAAS,CAAC,CAAC;EAE1B,oBACEK,IAAA,CAACR,IAAI;IACHkB,MAAM,EAAEA,MAAO;IACfD,KAAK,EAAE,CACLE,MAAM,CAACE,IAAI,EACX;MAAER,YAAY,EAAEA,YAAY,IAAIZ,MAAM,CAACqB;IAAG,CAAC,EAC3C,CAACN,IAAI,IAAI;MAAEJ,OAAO,EAAEA,OAAO,IAAIV,KAAK,CAAC,CAAC;IAAE,CAAC,EACzCI,cAAc,CAACK,OAAO,EAAES,MAAM,EAAED,MAAM,CAAC,EACvCL,WAAW,IAAI,IAAI,IAAI;MACrBA,WAAW;MACXC,WAAW,EAAEA,WAAW,IAAI;IAC9B,CAAC,EACDE,KAAK,CACL;IAAAP,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","View","radius","space","useShadow","useThemedStyles","makeStyles","variantToStyle","jsx","_jsx","Card","children","variant","padding","borderRadius","borderColor","borderWidth","bare","style","testID","styles","shadow","br","xl","base","clip"],"sourceRoot":"../../../../../src","sources":["components/ui/Card/Card.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC1E,SAASC,UAAU,EAAEC,cAAc,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtD,OAAO,SAASC,IAAIA,CAAC;EACnBC,QAAQ;EACRC,OAAO,GAAG,SAAS;EACnBC,OAAO;EACPC,YAAY;EACZC,WAAW;EACXC,WAAW;EACXC,IAAI;EACJC,KAAK;EACLC;AACS,CAAC,EAAqB;EAC/B,MAAMC,MAAM,GAAGf,eAAe,CAACC,UAAU,CAAC;EAC1C,MAAMe,MAAM,GAAGjB,SAAS,CAAC,CAAC;EAC1B,MAAMkB,EAAE,GAAGR,YAAY,IAAIZ,MAAM,CAACqB,EAAE;;EAEpC;EACA;EACA,oBACEd,IAAA,CAACR,IAAI;IACHkB,MAAM,EAAEA,MAAO;IACfD,KAAK,EAAE,CACLE,MAAM,CAACI,IAAI,EACX;MAAEV,YAAY,EAAEQ;IAAG,CAAC,EACpBf,cAAc,CAACK,OAAO,EAAES,MAAM,EAAED,MAAM,CAAC,EACvCF,KAAK,CACL;IAAAP,QAAA,eAEFF,IAAA,CAACR,IAAI;MACHiB,KAAK,EAAE,CACLE,MAAM,CAACK,IAAI,EACX;QAAEX,YAAY,EAAEQ;MAAG,CAAC,EACpB,CAACL,IAAI,IAAI;QAAEJ,OAAO,EAAEA,OAAO,IAAIV,KAAK,CAAC,CAAC;MAAE,CAAC,EACzCY,WAAW,IAAI,IAAI,IAAI;QACrBA,WAAW;QACXC,WAAW,EAAEA,WAAW,IAAI;MAC9B,CAAC,CACD;MAAAL,QAAA,EAEDA;IAAQ,CACL;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
@@ -2,8 +2,13 @@
2
2
 
3
3
  import { StyleSheet } from 'react-native';
4
4
  export const makeStyles = c => StyleSheet.create({
5
+ // 外层:底色 + 阴影(iOS 阴影需不透明背景才投影)。overflow hidden 不放这层 ——
6
+ // 否则 iOS 会把 View 自己的卡片阴影一起裁掉([H-4])。
5
7
  base: {
6
- backgroundColor: c.surface,
8
+ backgroundColor: c.surface
9
+ },
10
+ // 内层:overflow hidden 按圆角裁剪内容(如贴边媒体),不影响外层阴影。
11
+ clip: {
7
12
  overflow: 'hidden'
8
13
  },
9
14
  flat: {}
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","makeStyles","c","create","base","backgroundColor","surface","overflow","flat","variantToStyle","v","s","styles","card","undefined"],"sourceRoot":"../../../../../src","sources":["components/ui/Card/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAwC,cAAc;AAIzE,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCF,UAAU,CAACG,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,eAAe,EAAEH,CAAC,CAACI,OAAO;IAC1BC,QAAQ,EAAE;EACZ,CAAC;EACDC,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,CAAc,EACdC,CAAe,EACfC,MAAqC,EACf;EACtB,QAAQF,CAAC;IACP,KAAK,SAAS;MACZ,OAAOC,CAAC,CAACE,IAAI;IACf,KAAK,MAAM;MACT,OAAOD,MAAM,CAACJ,IAAI;IACpB,KAAK,OAAO;MACV,OAAOM,SAAS;EACpB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","makeStyles","c","create","base","backgroundColor","surface","clip","overflow","flat","variantToStyle","v","s","styles","card","undefined"],"sourceRoot":"../../../../../src","sources":["components/ui/Card/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAwC,cAAc;AAIzE,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCF,UAAU,CAACG,MAAM,CAAC;EAChB;EACA;EACAC,IAAI,EAAE;IACJC,eAAe,EAAEH,CAAC,CAACI;EACrB,CAAC;EACD;EACAC,IAAI,EAAE;IACJC,QAAQ,EAAE;EACZ,CAAC;EACDC,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,CAAc,EACdC,CAAe,EACfC,MAAqC,EACf;EACtB,QAAQF,CAAC;IACP,KAAK,SAAS;MACZ,OAAOC,CAAC,CAACE,IAAI;IACf,KAAK,MAAM;MACT,OAAOD,MAAM,CAACJ,IAAI;IACpB,KAAK,OAAO;MACV,OAAOM,SAAS;EACpB;AACF","ignoreList":[]}
@@ -15,21 +15,25 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  * 用 Pagination.Custom 而非 Basic:Basic 的 activeDot 用 translateX 推进
16
16
  * 内层 fill,外壳宽度等于 dotStyle.width,activeDotStyle.width 只影响内层,
17
17
  * 做不出"active 4 → 12 长条"。Custom 自己 interpolate width/height/bg。
18
+ *
19
+ * forwardRef 透传 ICarouselInstance —— 解锁 a11y 暂停(ref.current.scrollTo)
20
+ * 以及宿主页面的命令式 scrollTo / prev / next。
18
21
  */
19
22
  // T 约束 object —— `Pagination.Basic<T extends {}>` 需要 object
20
- export function Carousel({
23
+ function CarouselInner({
21
24
  items,
22
25
  renderItem,
23
26
  height,
24
27
  itemWidth,
25
28
  autoPlay,
29
+ loop = true,
26
30
  showIndicator = true,
27
31
  indicatorPosition = 'bottom',
28
32
  onPressItem,
29
33
  getAccessibilityLabel,
30
34
  style,
31
35
  testID
32
- }) {
36
+ }, ref) {
33
37
  const {
34
38
  width: screenWidth
35
39
  } = useWindowDimensions();
@@ -56,19 +60,32 @@ export function Carousel({
56
60
  height
57
61
  },
58
62
  data: data,
59
- loop: true,
63
+ loop: loop,
60
64
  autoPlay: !!autoPlay,
61
65
  autoPlayInterval: autoPlay,
62
66
  onProgressChange: progress,
67
+ ref: ref,
63
68
  renderItem: ({
64
69
  item,
65
70
  index
66
- }) => /*#__PURE__*/_jsx(Pressable, {
71
+ }) =>
72
+ /*#__PURE__*/
73
+ // RN Pressable 而非 RNGH Pressable:Carousel 的 GestureDetector 已挂在
74
+ // ReanimatedCarousel 内部,外层再套 RNGH Pressable 会产生手势冲突;
75
+ // 用 RN 原生 Pressable 让库自己的拖拽手势优先,tap 仍正常触发。
76
+ _jsx(Pressable, {
67
77
  onPress: () => onPressItem?.(item, index),
68
78
  style: {
69
79
  width,
70
80
  height
71
- },
81
+ }
82
+ // [L-92] 恒产出兜底:testID 缺失时用 'carousel' 前缀而非 undefined。
83
+ // 与 childTestID「父缺失返 undefined」语义不同,不替换为 childTestID。
84
+ // 原因:renderItem 须向 ReanimatedCarousel 提供稳定可预期的子项 testID
85
+ // 用于 E2E 定位,哪怕调用方未传 testID 也能用 carousel-item-0 等定位;
86
+ // 副作用:同屏两个未传 testID 的 Carousel 会碰撞 carousel-item-N。
87
+ // 建议:多 Carousel 场景请务必传 testID 以避免碰撞。
88
+ ,
72
89
  testID: `${testID ?? 'carousel'}-item-${index}`
73
90
  // 只在真正可点时声明 button 语义,纯展示型不标 button 避免读屏器误导
74
91
  ,
@@ -78,13 +95,26 @@ export function Carousel({
78
95
  } : null),
79
96
  children: renderItem(item, index)
80
97
  })
81
- }), showIndicator && items.length > 1 ? /*#__PURE__*/_jsx(Pagination.Custom, {
98
+ }), showIndicator && items.length > 1 ?
99
+ /*#__PURE__*/
100
+ // importantForAccessibility="no" —— dots 仅视觉辅助,SR 不需要读出
101
+ // 每个 dot 的状态(已由 accessibilityRole=tab / accessibilityState.selected 表达
102
+ // 的场景另论,这里 Pagination.Custom 无内置 a11y 语义,对 SR 隐藏比误读更优)。
103
+ _jsx(Pagination.Custom, {
82
104
  progress: progress,
83
105
  data: data,
84
106
  dotStyle: styles.dot,
85
107
  activeDotStyle: styles.dotActive,
86
108
  containerStyle: indicatorPosition === 'overlay-bottom-right' ? styles.dotsWrapOverlay : styles.dotsWrapBottom
109
+ // @ts-expect-error — importantForAccessibility 是 RN View prop,
110
+ // Pagination.Custom containerStyle 走 ViewStyle 但 TS 类型未收录该 prop
111
+ ,
112
+ importantForAccessibility: "no-hide-descendants",
113
+ accessibilityElementsHidden: true
87
114
  }) : null]
88
115
  });
89
116
  }
117
+
118
+ // forwardRef 不支持泛型函数组件直接推断 T,需要手动标注 + 类型断言
119
+ export const Carousel = /*#__PURE__*/React.forwardRef(CarouselInner);
90
120
  //# sourceMappingURL=Carousel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Pressable","useWindowDimensions","View","ReanimatedCarousel","Pagination","useSharedValue","space","useThemedStyles","makeCarouselStyles","jsx","_jsx","jsxs","_jsxs","Carousel","items","renderItem","height","itemWidth","autoPlay","showIndicator","indicatorPosition","onPressItem","getAccessibilityLabel","style","testID","width","screenWidth","styles","progress","indicatorReservedHeight","data","children","loop","autoPlayInterval","onProgressChange","item","index","onPress","accessibilityRole","accessibilityLabel","length","Custom","dotStyle","dot","activeDotStyle","dotActive","containerStyle","dotsWrapOverlay","dotsWrapBottom"],"sourceRoot":"../../../../../src","sources":["components/ui/Carousel/Carousel.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,EAAEC,mBAAmB,EAAEC,IAAI,QAAQ,cAAc;AACnE,OAAOC,kBAAkB,IACvBC,UAAU,QACL,kCAAkC;AACzC,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,KAAK,EAAEC,eAAe,QAAQ,yBAAgB;AACvD,SAASC,kBAAkB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAmB;EACzCC,KAAK;EACLC,UAAU;EACVC,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa,GAAG,IAAI;EACpBC,iBAAiB,GAAG,QAAQ;EAC5BC,WAAW;EACXC,qBAAqB;EACrBC,KAAK;EACLC;AACgB,CAAC,EAAqB;EACtC,MAAM;IAAEC,KAAK,EAAEC;EAAY,CAAC,GAAGzB,mBAAmB,CAAC,CAAC;EACpD,MAAMwB,KAAK,GAAGR,SAAS,IAAIS,WAAW;EACtC,MAAMC,MAAM,GAAGpB,eAAe,CAACC,kBAAkB,CAAC;EAClD;EACA,MAAMoB,QAAQ,GAAGvB,cAAc,CAAS,CAAC,CAAC;;EAE1C;EACA;EACA;EACA,MAAMwB,uBAAuB,GAC3BV,aAAa,IAAIC,iBAAiB,KAAK,QAAQ,GAAGd,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;EAElE,MAAMwB,IAAI,GAAGhB,KAAY;EAEzB,oBACEF,KAAA,CAACV,IAAI;IACHqB,KAAK,EAAE,CAAC;MAAEP,MAAM,EAAEA,MAAM,GAAGa;IAAwB,CAAC,EAAEN,KAAK,CAAE;IAC7DC,MAAM,EAAEA,MAAO;IAAAO,QAAA,gBAEfrB,IAAA,CAACP;IACC;IAAA;MACAoB,KAAK,EAAE;QAAEE,KAAK;QAAET;MAAO,CAAE;MACzBc,IAAI,EAAEA,IAAK;MACXE,IAAI;MACJd,QAAQ,EAAE,CAAC,CAACA,QAAS;MACrBe,gBAAgB,EAAEf,QAAS;MAC3BgB,gBAAgB,EAAEN,QAAS;MAC3Bb,UAAU,EAAEA,CAAC;QAAEoB,IAAI;QAAEC;MAAM,CAAC,kBAC1B1B,IAAA,CAACV,SAAS;QACRqC,OAAO,EAAEA,CAAA,KAAMhB,WAAW,GAAGc,IAAI,EAAEC,KAAK,CAAE;QAC1Cb,KAAK,EAAE;UAAEE,KAAK;UAAET;QAAO,CAAE;QACzBQ,MAAM,EAAE,GAAGA,MAAM,IAAI,UAAU,SAASY,KAAK;QAC7C;QAAA;QAAA,IACKf,WAAW,GACZ;UACEiB,iBAAiB,EAAE,QAAiB;UACpCC,kBAAkB,EAChBjB,qBAAqB,GAAGa,IAAI,EAAEC,KAAK,CAAC,IACpC,KAAKA,KAAK,GAAG,CAAC;QAClB,CAAC,GACD,IAAI;QAAAL,QAAA,EAEPhB,UAAU,CAACoB,IAAI,EAAEC,KAAK;MAAC,CACf;IACX,CACH,CAAC,EACDjB,aAAa,IAAIL,KAAK,CAAC0B,MAAM,GAAG,CAAC,gBAChC9B,IAAA,CAACN,UAAU,CAACqC,MAAM;MAChBb,QAAQ,EAAEA,QAAS;MACnBE,IAAI,EAAEA,IAAK;MACXY,QAAQ,EAAEf,MAAM,CAACgB,GAAI;MACrBC,cAAc,EAAEjB,MAAM,CAACkB,SAAU;MACjCC,cAAc,EACZ1B,iBAAiB,KAAK,sBAAsB,GACxCO,MAAM,CAACoB,eAAe,GACtBpB,MAAM,CAACqB;IACZ,CACF,CAAC,GACA,IAAI;EAAA,CACJ,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","Pressable","useWindowDimensions","View","ReanimatedCarousel","Pagination","useSharedValue","space","useThemedStyles","makeCarouselStyles","jsx","_jsx","jsxs","_jsxs","CarouselInner","items","renderItem","height","itemWidth","autoPlay","loop","showIndicator","indicatorPosition","onPressItem","getAccessibilityLabel","style","testID","ref","width","screenWidth","styles","progress","indicatorReservedHeight","data","children","autoPlayInterval","onProgressChange","item","index","onPress","accessibilityRole","accessibilityLabel","length","Custom","dotStyle","dot","activeDotStyle","dotActive","containerStyle","dotsWrapOverlay","dotsWrapBottom","importantForAccessibility","accessibilityElementsHidden","Carousel","forwardRef"],"sourceRoot":"../../../../../src","sources":["components/ui/Carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}