@unif/react-native-design 0.8.1 → 0.9.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 (512) hide show
  1. package/README.md +3 -4
  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 +43 -18
  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.map +1 -1
  368. package/lib/typescript/src/icons/types.d.ts +18 -12
  369. package/lib/typescript/src/icons/types.d.ts.map +1 -1
  370. package/lib/typescript/src/theme/colors.d.ts +9 -3
  371. package/lib/typescript/src/theme/colors.d.ts.map +1 -1
  372. package/lib/typescript/src/theme/index.d.ts +3 -2
  373. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  374. package/lib/typescript/src/theme/scale.d.ts.map +1 -1
  375. package/lib/typescript/src/theme/shadow.d.ts +8 -8
  376. package/lib/typescript/src/theme/shadow.d.ts.map +1 -1
  377. package/lib/typescript/src/theme/tokens.d.ts +7 -3
  378. package/lib/typescript/src/theme/tokens.d.ts.map +1 -1
  379. package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts +8 -0
  380. package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts.map +1 -0
  381. package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts +6 -0
  382. package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts.map +1 -0
  383. package/lib/typescript/src/theme/useTheme.d.ts.map +1 -1
  384. package/lib/typescript/src/utils/logger/logger.d.ts.map +1 -1
  385. package/lib/typescript/src/utils/testID/testID.d.ts +6 -3
  386. package/lib/typescript/src/utils/testID/testID.d.ts.map +1 -1
  387. package/package.json +2 -1
  388. package/src/components/business/AvatarWithRing/AvatarWithRing.tsx +5 -4
  389. package/src/components/business/AvatarWithRing/styles.ts +21 -3
  390. package/src/components/business/AvatarWithRing/types.ts +3 -1
  391. package/src/components/business/Decorations/GradientWash.tsx +46 -22
  392. package/src/components/business/Decorations/RadialHalo.tsx +8 -4
  393. package/src/components/business/Decorations/ScreenBackdrop.tsx +23 -5
  394. package/src/components/business/Decorations/index.ts +4 -0
  395. package/src/components/business/Decorations/types.ts +2 -0
  396. package/src/components/business/GlassStats/GlassStats.tsx +8 -4
  397. package/src/components/business/GlassStats/types.ts +6 -0
  398. package/src/components/business/VersionPill/VersionPill.tsx +46 -6
  399. package/src/components/business/VersionPill/styles.ts +1 -1
  400. package/src/components/business/VersionPill/types.ts +13 -1
  401. package/src/components/business/index.ts +1 -0
  402. package/src/components/business/useSvgId.ts +17 -0
  403. package/src/components/ui/Avatar/Avatar.tsx +17 -10
  404. package/src/components/ui/Avatar/styles.ts +7 -7
  405. package/src/components/ui/Avatar/types.ts +3 -1
  406. package/src/components/ui/BlurLayer/BlurLayer.tsx +4 -1
  407. package/src/components/ui/BlurLayer/BlurLayer.web.tsx +7 -1
  408. package/src/components/ui/Button/Button.tsx +2 -1
  409. package/src/components/ui/Button/ButtonBase.tsx +26 -2
  410. package/src/components/ui/Button/styles.ts +27 -25
  411. package/src/components/ui/Button/types.ts +1 -1
  412. package/src/components/ui/Card/Card.tsx +17 -7
  413. package/src/components/ui/Card/styles.ts +5 -0
  414. package/src/components/ui/Card/types.ts +4 -4
  415. package/src/components/ui/Carousel/Carousel.tsx +44 -15
  416. package/src/components/ui/Carousel/index.ts +1 -1
  417. package/src/components/ui/Carousel/types.ts +5 -0
  418. package/src/components/ui/Cell/Cell.tsx +28 -6
  419. package/src/components/ui/Cell/Leading.tsx +2 -2
  420. package/src/components/ui/Cell/List.tsx +14 -8
  421. package/src/components/ui/Cell/styles.ts +8 -5
  422. package/src/components/ui/Cell/types.ts +5 -2
  423. package/src/components/ui/Checkbox/Checkbox.tsx +18 -5
  424. package/src/components/ui/Checkbox/styles.ts +8 -0
  425. package/src/components/ui/Chip/Chip.tsx +20 -5
  426. package/src/components/ui/Chip/types.ts +2 -0
  427. package/src/components/ui/Confirm/ConfirmHost.tsx +26 -10
  428. package/src/components/ui/Confirm/confirm.ts +8 -0
  429. package/src/components/ui/Confirm/types.ts +4 -2
  430. package/src/components/ui/DrawerHeader/DrawerHeader.tsx +18 -12
  431. package/src/components/ui/DrawerHeader/styles.ts +10 -6
  432. package/src/components/ui/DrawerHeader/types.ts +3 -1
  433. package/src/components/ui/Empty/Empty.tsx +5 -4
  434. package/src/components/ui/Empty/types.ts +3 -0
  435. package/src/components/ui/EntryCard/EntryCard.tsx +5 -3
  436. package/src/components/ui/EntryCard/styles.ts +13 -4
  437. package/src/components/ui/EntryCard/types.ts +2 -2
  438. package/src/components/ui/Form/FormRow.tsx +7 -1
  439. package/src/components/ui/Form/styles.ts +2 -0
  440. package/src/components/ui/Form/types.ts +7 -2
  441. package/src/components/ui/Grid/Grid.tsx +42 -25
  442. package/src/components/ui/Grid/styles.ts +8 -20
  443. package/src/components/ui/Grid/types.ts +4 -1
  444. package/src/components/ui/Icon/Icon.tsx +42 -27
  445. package/src/components/ui/IconButton/IconButton.tsx +2 -0
  446. package/src/components/ui/IconButton/types.ts +8 -2
  447. package/src/components/ui/Input/types.ts +3 -2
  448. package/src/components/ui/Logo/Logo.tsx +2 -1
  449. package/src/components/ui/NavBar/NavBar.tsx +16 -2
  450. package/src/components/ui/NavBar/types.ts +5 -1
  451. package/src/components/ui/PasswordInput/PasswordInput.tsx +77 -43
  452. package/src/components/ui/PasswordInput/styles.ts +1 -1
  453. package/src/components/ui/PasswordInput/types.ts +7 -2
  454. package/src/components/ui/Pulse/Pulse.tsx +2 -1
  455. package/src/components/ui/Pulse/PulseDot.tsx +7 -6
  456. package/src/components/ui/Pulse/types.ts +6 -0
  457. package/src/components/ui/Pulse/usePulse.web.ts +50 -33
  458. package/src/components/ui/Radio/Radio.tsx +29 -6
  459. package/src/components/ui/Radio/RadioGroup.tsx +10 -3
  460. package/src/components/ui/Radio/styles.ts +9 -2
  461. package/src/components/ui/Reveal/Reveal.web.tsx +18 -3
  462. package/src/components/ui/Search/Search.tsx +22 -9
  463. package/src/components/ui/Search/types.ts +7 -1
  464. package/src/components/ui/Segmented/Segmented.tsx +8 -3
  465. package/src/components/ui/Segmented/styles.ts +4 -2
  466. package/src/components/ui/Segmented/types.ts +2 -0
  467. package/src/components/ui/Skeleton/Skeleton.tsx +9 -8
  468. package/src/components/ui/Spinner/Spinner.tsx +17 -17
  469. package/src/components/ui/Spinner/Spinner.web.tsx +7 -15
  470. package/src/components/ui/Spinner/shared.ts +37 -0
  471. package/src/components/ui/StatusDot/StatusDot.tsx +21 -3
  472. package/src/components/ui/StatusDot/styles.ts +1 -1
  473. package/src/components/ui/StatusDot/types.ts +14 -1
  474. package/src/components/ui/Stepper/Stepper.tsx +45 -10
  475. package/src/components/ui/Switch/Switch.tsx +4 -10
  476. package/src/components/ui/Switch/Switch.web.tsx +2 -8
  477. package/src/components/ui/Switch/styles.ts +10 -1
  478. package/src/components/ui/TabBar/TabBar.tsx +14 -6
  479. package/src/components/ui/TabBar/styles.ts +9 -21
  480. package/src/components/ui/TabBar/types.ts +3 -0
  481. package/src/components/ui/Tabs/Tabs.tsx +24 -5
  482. package/src/components/ui/Tabs/styles.ts +6 -2
  483. package/src/components/ui/Tabs/types.ts +10 -1
  484. package/src/components/ui/Tag/styles.ts +18 -10
  485. package/src/components/ui/Tag/types.ts +6 -2
  486. package/src/components/ui/TextField/TextFieldBase.tsx +31 -6
  487. package/src/components/ui/Textarea/types.ts +2 -1
  488. package/src/components/ui/Thumbnail/Thumbnail.tsx +14 -3
  489. package/src/components/ui/Thumbnail/styles.ts +6 -2
  490. package/src/components/ui/Toast/ToastHost.tsx +16 -8
  491. package/src/components/ui/Toast/ToastHost.web.tsx +26 -4
  492. package/src/components/ui/Toast/styles.ts +2 -0
  493. package/src/components/ui/Toast/toast.ts +35 -2
  494. package/src/components/ui/Toast/types.ts +1 -1
  495. package/src/components/ui/shared/badgeStyles.ts +36 -0
  496. package/src/icons/data.ts +27 -0
  497. package/src/icons/types.ts +25 -10
  498. package/src/theme/colors.ts +29 -10
  499. package/src/theme/index.ts +10 -1
  500. package/src/theme/scale.ts +5 -1
  501. package/src/theme/shadow.ts +33 -24
  502. package/src/theme/tokens.ts +10 -5
  503. package/src/theme/usePrefersReducedMotion.ts +9 -0
  504. package/src/theme/usePrefersReducedMotion.web.ts +27 -0
  505. package/src/theme/useTheme.ts +15 -0
  506. package/src/utils/logger/logger.ts +5 -1
  507. package/src/utils/testID/testID.ts +6 -3
  508. package/lib/module/components/index.js +0 -5
  509. package/lib/module/components/index.js.map +0 -1
  510. package/lib/typescript/src/components/index.d.ts +0 -3
  511. package/lib/typescript/src/components/index.d.ts.map +0 -1
  512. package/src/components/index.ts +0 -2
@@ -4,7 +4,10 @@
4
4
  // 暗色下中性阴影 shadowOpacity / elevation 全部置 0:视觉层次靠 surface 5 层
5
5
  // 明度差表达(layered surface 替代 shadow)。
6
6
 
7
- const BRAND = '#EB6E00';
7
+ import { BRAND_ORANGE } from './colors';
8
+
9
+ // 模块级别名保持历史可读性,同时指向 colors.ts 单一来源。
10
+ const BRAND = BRAND_ORANGE;
8
11
 
9
12
  export const lightShadow = {
10
13
  /** 轻提示浮起 —— Segmented active 段 */
@@ -106,28 +109,34 @@ export const lightShadow = {
106
109
  },
107
110
  } as const;
108
111
 
112
+ // readonly 加到嵌套字段:顶层 key 经同态映射已只读,但嵌套 shadowOffset 字段
113
+ // 在运行时仍可合法赋值(t.card.shadowOffset.height = 5 会静默串改全部共享引用)。
114
+ // 此处显式声明 readonly 让 tsc 在编译期捕获误改。
109
115
  export type ShadowTokens = {
110
- [K in keyof typeof lightShadow]: {
111
- shadowColor: string;
112
- shadowOffset: { width: number; height: number };
113
- shadowOpacity: number;
114
- shadowRadius: number;
115
- elevation: number;
116
+ readonly [K in keyof typeof lightShadow]: {
117
+ readonly shadowColor: string;
118
+ readonly shadowOffset: { readonly width: number; readonly height: number };
119
+ readonly shadowOpacity: number;
120
+ readonly shadowRadius: number;
121
+ readonly elevation: number;
116
122
  };
117
123
  };
118
124
 
119
- /** 暗色统一置零 —— dark theme surface 明度差替代 shadow */
120
- const darkZero = {
121
- shadowOffset: { width: 0, height: 0 },
122
- shadowOpacity: 0,
123
- shadowRadius: 0,
124
- elevation: 0,
125
- };
125
+ // darkZero 辅助函数:每次调用返回独立 offset 对象,消除多 token 共享同一 shadowOffset
126
+ // 引用的隐患——虽然 ShadowTokens readonly 已在类型层阻止赋值,防御深度更好。
127
+ const darkZero = (shadowColor: string) =>
128
+ ({
129
+ shadowColor,
130
+ shadowOffset: { width: 0, height: 0 },
131
+ shadowOpacity: 0,
132
+ shadowRadius: 0,
133
+ elevation: 0,
134
+ }) as const;
126
135
 
127
136
  export const darkShadow: ShadowTokens = {
128
- subtle: { ...darkZero, shadowColor: '#000' },
129
- card: { ...darkZero, shadowColor: '#000' },
130
- /** floating 暗色不走 darkZero:浮动胶囊在暗 bg 上需要黑色 drop shadow,
137
+ subtle: darkZero('#000'),
138
+ card: darkZero('#000'),
139
+ /** floating 暗色不置零:浮动胶囊在暗 bg 上需要黑色 drop shadow,
131
140
  * 否则跟暗背景贴平,视觉无层级。 */
132
141
  floating: {
133
142
  shadowColor: '#000',
@@ -136,12 +145,12 @@ export const darkShadow: ShadowTokens = {
136
145
  shadowRadius: 60,
137
146
  elevation: 16,
138
147
  },
139
- brandSm: { ...darkZero, shadowColor: BRAND },
140
- brandMd: { ...darkZero, shadowColor: BRAND },
141
- brandLg: { ...darkZero, shadowColor: BRAND },
142
- brandXl: { ...darkZero, shadowColor: BRAND },
143
- brandAbout: { ...darkZero, shadowColor: BRAND },
144
- brandAssistant: { ...darkZero, shadowColor: BRAND },
148
+ brandSm: darkZero(BRAND),
149
+ brandMd: darkZero(BRAND),
150
+ brandLg: darkZero(BRAND),
151
+ brandXl: darkZero(BRAND),
152
+ brandAbout: darkZero(BRAND),
153
+ brandAssistant: darkZero(BRAND),
145
154
  /** brandAvatar 暗色不置零:暗色 ring 0.10 几乎隐去,靠橙光晕(0.40 比亮色 0.28 更强)
146
155
  * 托起头像。 */
147
156
  brandAvatar: {
@@ -160,5 +169,5 @@ export const darkShadow: ShadowTokens = {
160
169
  shadowRadius: 18,
161
170
  elevation: 6,
162
171
  },
163
- none: { ...darkZero, shadowColor: 'transparent' },
172
+ none: darkZero('transparent'),
164
173
  };
@@ -17,9 +17,9 @@ export const type = {
17
17
  xs: rf(13),
18
18
  xxs: rf(12),
19
19
  micro: rf(11),
20
- nano: rf(10), // TabBar/Grid/Citation/Sources 角标/小标签 10pt
20
+ nano: rf(10), // TabBar/Grid 角标/小标签 10pt
21
21
  // ── 半档微调(0.5 step,加于"近似 token + delta"反模式收敛) ──
22
- /** micro(11)与 xxs(12)之间:VersionPill / profileCard / Splash / carousel 副标题。 */
22
+ /** micro(11)与 xxs(12)之间:VersionPill / Splash / carousel 副标题。 */
23
23
  microPlus: rf(11.5),
24
24
  /** xs(13)与 sm(14)之间:Privacy 长文阅读字号。 */
25
25
  xsPlus: rf(13.5),
@@ -28,7 +28,7 @@ export const type = {
28
28
  smPlus: rf(14.5),
29
29
  /** Hero 区主标题档(一级 brand hero,带 Logo,Login 屏)。 */
30
30
  heroLg: rf(26),
31
- /** Hero 区中等档(独立屏 + NavBar 的二级 hero,ForgotPassword)。 */
31
+ /** Hero 区中等档(独立屏 + NavBar 的二级 hero)。 */
32
32
  heroMd: rf(22),
33
33
  /** Hero 区小档(承接式 hero,Group 选组/选角色子区)。 */
34
34
  heroSm: rf(18),
@@ -57,7 +57,7 @@ export const space = {
57
57
  } as const;
58
58
 
59
59
  export const radius = {
60
- 'xs': r(4), // Radio/Checkbox/Tag/Citation 内圈 4pt
60
+ 'xs': r(4), // Radio/Checkbox 内圈 4pt
61
61
  'sm': r(6),
62
62
  'md': r(8),
63
63
  'lg': r(10),
@@ -98,7 +98,7 @@ export const control = {
98
98
 
99
99
  /** 散尺寸 —— 未归到 avatar/icon/control 阶梯的单点常量。 */
100
100
  export const dim = {
101
- /** 发送按钮 32px —— chat PromptInput / 主送出按钮专用,与 avatar.md 同值 */
101
+ /** 发送按钮 32px —— 主送出/发送按钮专用,与 avatar.md 同值 */
102
102
  sendBtn: r(32),
103
103
  } as const;
104
104
 
@@ -117,3 +117,8 @@ export const motion = {
117
117
  slow: 300,
118
118
  pulse: 1600,
119
119
  } as const;
120
+
121
+ /** 按压态透明度 —— Pressable pressed 时 opacity 的共享常量。
122
+ * ButtonBase、Chip、Cell、Grid、EntryCard、Tabs、Segmented、TabBar 等
123
+ * 凡需要「按压反馈」的组件统一引用此值,避免散落多处手写 0.7 后不同步。 */
124
+ export const pressedOpacity = 0.7;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 系统「减弱动态效果」开关。
3
+ *
4
+ * native 端的动画由 reanimated 默认 `ReduceMotion.System` 处理(reduce-motion 下自动
5
+ * 跳到端值),此 hook 只有 web 平台的 CSS/JS 动画需要 —— native 恒返回 false,见 `.web.ts`。
6
+ */
7
+ export function usePrefersReducedMotion(): boolean {
8
+ return false;
9
+ }
@@ -0,0 +1,27 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ const QUERY = '(prefers-reduced-motion: reduce)';
4
+
5
+ // tsconfig 不带 DOM lib(库本体是 RN),用 globalThis 兜底访问浏览器 matchMedia,
6
+ // 类型用 any 通过 strict(本文件只在 web bundle 命中,window 一定有)。
7
+ const win: any = globalThis as any;
8
+
9
+ /**
10
+ * web:监听系统「减弱动态效果」开关,返回当前是否开启;开关变化时自动更新。
11
+ * native 端走 reanimated 的 `ReduceMotion.System`,对应 `.ts` 版恒返回 false。
12
+ */
13
+ export function usePrefersReducedMotion(): boolean {
14
+ const [reduced, setReduced] = useState<boolean>(() =>
15
+ typeof win.matchMedia === 'function' ? win.matchMedia(QUERY).matches : false
16
+ );
17
+
18
+ useEffect(() => {
19
+ if (typeof win.matchMedia !== 'function') return;
20
+ const mq = win.matchMedia(QUERY);
21
+ const onChange = () => setReduced(mq.matches);
22
+ mq.addEventListener('change', onChange);
23
+ return () => mq.removeEventListener('change', onChange);
24
+ }, []);
25
+
26
+ return reduced;
27
+ }
@@ -9,8 +9,23 @@ const FALLBACK: ThemeContextValue = {
9
9
  shadow: lightShadow,
10
10
  };
11
11
 
12
+ // 静默回退而非 throw:FALLBACK 是模块级稳定引用,useThemedStyles 缓存契约不受影响。
13
+ // 缺点:漏包 ThemeProvider 时整 app 永远 light、暗色失效且零信号——
14
+ // 因此在 dev 下一次性告警提示接入方补 Provider。
15
+ // 用 typeof __DEV__ 守卫:裸 __DEV__ 在非 Metro 打包器(Webpack/Next.js)下会 ReferenceError,
16
+ // logger.ts:12 已有同等先例。
17
+ let _warnedMissingProvider = false;
18
+
12
19
  export function useTheme(): ThemeContextValue {
13
20
  const ctx = useContext(ThemeContext);
21
+ if (ctx === undefined && !_warnedMissingProvider) {
22
+ _warnedMissingProvider = true;
23
+ if (typeof __DEV__ !== 'undefined' && __DEV__) {
24
+ console.warn(
25
+ '[unif/theme] useTheme: ThemeContext 未找到 —— 请在 app 根部渲染 <ThemeProvider>,否则暗色切换不生效。'
26
+ );
27
+ }
28
+ }
14
29
  return ctx ?? FALLBACK;
15
30
  }
16
31
 
@@ -61,9 +61,13 @@ export function getLogLevel(): LogLevel {
61
61
 
62
62
  export function addTransport(t: LogTransport): void {
63
63
  removeTransport(t.id);
64
- state.transports.push(t);
64
+ // push 后立即赋新数组:保证 emit 的 for-of 迭代期间若调用 addTransport,
65
+ // 迭代的旧快照不受影响(重入安全)。
66
+ state.transports = [...state.transports, t];
65
67
  }
66
68
 
67
69
  export function removeTransport(id: string): void {
70
+ // filter 返回新数组,不原地变更 —— 保证 emit 的 for-of 迭代期间若调用
71
+ // removeTransport(自移除等场景),迭代的旧快照仍完整走完(重入安全)。
68
72
  state.transports = state.transports.filter((t) => t.id !== id);
69
73
  }
@@ -1,17 +1,20 @@
1
1
  /**
2
2
  * `childTestID` —— 把"父 testID + 子 id → 子 testID"的拼接逻辑收口。
3
3
  *
4
- * 业务侧 7 处 list-like 组件(Tabs / Segmented / TabBar / Grid / Task /
5
- * Sources / ChainOfThought)重复同一三元:
4
+ * 本仓已接入的 list-like 组件(Tabs / Segmented / TabBar / Grid)原来各自重复:
6
5
  *
7
6
  * ```ts
8
7
  * const itemTestID = item.testID ?? (testID ? `${testID}-${item.id}` : undefined);
9
8
  * ```
10
9
  *
11
10
  * 抽 helper:
12
- * - `override` 命中 → 用 caller 显式指定
11
+ * - `override` 命中(truthy)→ 用 caller 显式指定
13
12
  * - 父 `parent` 缺失 → undefined(testID 不强制)
14
13
  * - 都没问题 → `{parent}-{id}` 拼接
14
+ *
15
+ * 注意:与旧式 `??` 不同,**空串 override 视为未提供、回落拼接**。
16
+ * 这是刻意设计:空 testID 没有语义价值,用例已钉死此边界
17
+ * (`__tests__/utils/testID.test.ts:31-33`),勿改回 `??` 判定。
15
18
  */
16
19
  export function childTestID(
17
20
  parent: string | undefined,
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- export * from "./ui/index.js";
4
- export * from "./business/index.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,eAAM;AACpB,cAAc,qBAAY","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- export * from './ui';
2
- export * from './business';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './ui';
2
- export * from './business';