@unif/react-native-design 0.20.0 → 0.21.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 (562) hide show
  1. package/README.md +68 -12
  2. package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js +4 -5
  3. package/lib/module/components/business/AvatarWithRing/AvatarWithRing.js.map +1 -1
  4. package/lib/module/components/business/AvatarWithRing/styles.js +10 -9
  5. package/lib/module/components/business/AvatarWithRing/styles.js.map +1 -1
  6. package/lib/module/components/business/VersionPill/VersionPill.js +32 -15
  7. package/lib/module/components/business/VersionPill/VersionPill.js.map +1 -1
  8. package/lib/module/components/business/VersionPill/content.js +30 -0
  9. package/lib/module/components/business/VersionPill/content.js.map +1 -0
  10. package/lib/module/components/business/VersionPill/styles.js +4 -0
  11. package/lib/module/components/business/VersionPill/styles.js.map +1 -1
  12. package/lib/module/components/business/useSvgId.js +17 -8
  13. package/lib/module/components/business/useSvgId.js.map +1 -1
  14. package/lib/module/components/ui/Avatar/Avatar.js +22 -29
  15. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  16. package/lib/module/components/ui/Button/Button.js +40 -23
  17. package/lib/module/components/ui/Button/Button.js.map +1 -1
  18. package/lib/module/components/ui/Button/ButtonBase.js +13 -13
  19. package/lib/module/components/ui/Button/ButtonBase.js.map +1 -1
  20. package/lib/module/components/ui/Carousel/Carousel.js +68 -40
  21. package/lib/module/components/ui/Carousel/Carousel.js.map +1 -1
  22. package/lib/module/components/ui/Carousel/behavior.js +60 -0
  23. package/lib/module/components/ui/Carousel/behavior.js.map +1 -0
  24. package/lib/module/components/ui/Carousel/styles.js +6 -8
  25. package/lib/module/components/ui/Carousel/styles.js.map +1 -1
  26. package/lib/module/components/ui/Cell/Cell.js +76 -65
  27. package/lib/module/components/ui/Cell/Cell.js.map +1 -1
  28. package/lib/module/components/ui/Cell/Leading.js +11 -5
  29. package/lib/module/components/ui/Cell/Leading.js.map +1 -1
  30. package/lib/module/components/ui/Cell/content.js +34 -0
  31. package/lib/module/components/ui/Cell/content.js.map +1 -0
  32. package/lib/module/components/ui/Checkbox/Checkbox.js +25 -8
  33. package/lib/module/components/ui/Checkbox/Checkbox.js.map +1 -1
  34. package/lib/module/components/ui/Confirm/ConfirmHost.js +49 -25
  35. package/lib/module/components/ui/Confirm/ConfirmHost.js.map +1 -1
  36. package/lib/module/components/ui/Confirm/confirm.js +15 -29
  37. package/lib/module/components/ui/Confirm/confirm.js.map +1 -1
  38. package/lib/module/components/ui/Confirm/labels.js +10 -0
  39. package/lib/module/components/ui/Confirm/labels.js.map +1 -0
  40. package/lib/module/components/ui/Confirm/store.js +113 -0
  41. package/lib/module/components/ui/Confirm/store.js.map +1 -0
  42. package/lib/module/components/ui/Confirm/styles.js +4 -0
  43. package/lib/module/components/ui/Confirm/styles.js.map +1 -1
  44. package/lib/module/components/ui/DrawerHeader/DrawerHeader.js +17 -25
  45. package/lib/module/components/ui/DrawerHeader/DrawerHeader.js.map +1 -1
  46. package/lib/module/components/ui/Grid/Grid.js +26 -9
  47. package/lib/module/components/ui/Grid/Grid.js.map +1 -1
  48. package/lib/module/components/ui/Grid/accessibility.js +13 -0
  49. package/lib/module/components/ui/Grid/accessibility.js.map +1 -0
  50. package/lib/module/components/ui/IconButton/IconButton.js +16 -3
  51. package/lib/module/components/ui/IconButton/IconButton.js.map +1 -1
  52. package/lib/module/components/ui/Input/Input.js +8 -5
  53. package/lib/module/components/ui/Input/Input.js.map +1 -1
  54. package/lib/module/components/ui/Logo/Logo.js +22 -4
  55. package/lib/module/components/ui/Logo/Logo.js.map +1 -1
  56. package/lib/module/components/ui/NavBar/NavBar.js +23 -14
  57. package/lib/module/components/ui/NavBar/NavBar.js.map +1 -1
  58. package/lib/module/components/ui/NavBar/isSlot.js +297 -4
  59. package/lib/module/components/ui/NavBar/isSlot.js.map +1 -1
  60. package/lib/module/components/ui/PasswordInput/PasswordInput.js +61 -66
  61. package/lib/module/components/ui/PasswordInput/PasswordInput.js.map +1 -1
  62. package/lib/module/components/ui/Pulse/Pulse.js +1 -1
  63. package/lib/module/components/ui/Pulse/Pulse.js.map +1 -1
  64. package/lib/module/components/ui/Pulse/PulseDot.js +5 -7
  65. package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
  66. package/lib/module/components/ui/Pulse/index.js +1 -1
  67. package/lib/module/components/ui/Pulse/index.js.map +1 -1
  68. package/lib/module/components/ui/Pulse/normalizePulseOptions.js +45 -0
  69. package/lib/module/components/ui/Pulse/normalizePulseOptions.js.map +1 -0
  70. package/lib/module/components/ui/Pulse/usePulse.js +61 -24
  71. package/lib/module/components/ui/Pulse/usePulse.js.map +1 -1
  72. package/lib/module/components/ui/Pulse/usePulseDriver.js +44 -0
  73. package/lib/module/components/ui/Pulse/usePulseDriver.js.map +1 -0
  74. package/lib/module/components/ui/Pulse/usePulseDriver.web.js +67 -0
  75. package/lib/module/components/ui/Pulse/usePulseDriver.web.js.map +1 -0
  76. package/lib/module/components/ui/Radio/Radio.js +31 -14
  77. package/lib/module/components/ui/Radio/Radio.js.map +1 -1
  78. package/lib/module/components/ui/Radio/RadioGroup.js +15 -2
  79. package/lib/module/components/ui/Radio/RadioGroup.js.map +1 -1
  80. package/lib/module/components/ui/Reveal/Reveal.js +4 -3
  81. package/lib/module/components/ui/Reveal/Reveal.js.map +1 -1
  82. package/lib/module/components/ui/Reveal/Reveal.web.js +55 -32
  83. package/lib/module/components/ui/Reveal/Reveal.web.js.map +1 -1
  84. package/lib/module/components/ui/Reveal/webTransition.js +157 -0
  85. package/lib/module/components/ui/Reveal/webTransition.js.map +1 -0
  86. package/lib/module/components/ui/Search/Search.js +85 -58
  87. package/lib/module/components/ui/Search/Search.js.map +1 -1
  88. package/lib/module/components/ui/Segmented/Segmented.js +4 -2
  89. package/lib/module/components/ui/Segmented/Segmented.js.map +1 -1
  90. package/lib/module/components/ui/Skeleton/Skeleton.js +5 -7
  91. package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
  92. package/lib/module/components/ui/Spinner/Spinner.js +18 -11
  93. package/lib/module/components/ui/Spinner/Spinner.js.map +1 -1
  94. package/lib/module/components/ui/Spinner/Spinner.web.js +18 -14
  95. package/lib/module/components/ui/Spinner/Spinner.web.js.map +1 -1
  96. package/lib/module/components/ui/Spinner/shared.js +6 -0
  97. package/lib/module/components/ui/Spinner/shared.js.map +1 -1
  98. package/lib/module/components/ui/Stepper/Stepper.js +131 -99
  99. package/lib/module/components/ui/Stepper/Stepper.js.map +1 -1
  100. package/lib/module/components/ui/Stepper/StepperPressable.js +4 -0
  101. package/lib/module/components/ui/Stepper/StepperPressable.js.map +1 -0
  102. package/lib/module/components/ui/Stepper/StepperPressable.web.js +4 -0
  103. package/lib/module/components/ui/Stepper/StepperPressable.web.js.map +1 -0
  104. package/lib/module/components/ui/Stepper/accessibility.js +30 -0
  105. package/lib/module/components/ui/Stepper/accessibility.js.map +1 -0
  106. package/lib/module/components/ui/Stepper/accessibility.types.js +4 -0
  107. package/lib/module/components/ui/Stepper/accessibility.types.js.map +1 -0
  108. package/lib/module/components/ui/Stepper/accessibility.web.js +57 -0
  109. package/lib/module/components/ui/Stepper/accessibility.web.js.map +1 -0
  110. package/lib/module/components/ui/Stepper/layout.js +28 -0
  111. package/lib/module/components/ui/Stepper/layout.js.map +1 -0
  112. package/lib/module/components/ui/Stepper/normalizeStepper.js +53 -0
  113. package/lib/module/components/ui/Stepper/normalizeStepper.js.map +1 -0
  114. package/lib/module/components/ui/Stepper/styles.js +9 -2
  115. package/lib/module/components/ui/Stepper/styles.js.map +1 -1
  116. package/lib/module/components/ui/Switch/Switch.js +45 -19
  117. package/lib/module/components/ui/Switch/Switch.js.map +1 -1
  118. package/lib/module/components/ui/Switch/Switch.web.js +47 -20
  119. package/lib/module/components/ui/Switch/Switch.web.js.map +1 -1
  120. package/lib/module/components/ui/Switch/styles.js +12 -5
  121. package/lib/module/components/ui/Switch/styles.js.map +1 -1
  122. package/lib/module/components/ui/Tag/Tag.js +3 -2
  123. package/lib/module/components/ui/Tag/Tag.js.map +1 -1
  124. package/lib/module/components/ui/TextField/TextFieldBase.js +131 -86
  125. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  126. package/lib/module/components/ui/TextField/TextFieldSlot.js +82 -0
  127. package/lib/module/components/ui/TextField/TextFieldSlot.js.map +1 -0
  128. package/lib/module/components/ui/TextField/normalize.js +238 -0
  129. package/lib/module/components/ui/TextField/normalize.js.map +1 -0
  130. package/lib/module/components/ui/TextField/styles.js +31 -0
  131. package/lib/module/components/ui/TextField/styles.js.map +1 -1
  132. package/lib/module/components/ui/TextField/useErrorAnnouncement.js +27 -0
  133. package/lib/module/components/ui/TextField/useErrorAnnouncement.js.map +1 -0
  134. package/lib/module/components/ui/TextField/useTextFieldValue.js +66 -0
  135. package/lib/module/components/ui/TextField/useTextFieldValue.js.map +1 -0
  136. package/lib/module/components/ui/TextField/valueState.js +93 -0
  137. package/lib/module/components/ui/TextField/valueState.js.map +1 -0
  138. package/lib/module/components/ui/Textarea/Textarea.js +7 -3
  139. package/lib/module/components/ui/Textarea/Textarea.js.map +1 -1
  140. package/lib/module/components/ui/Thumbnail/Thumbnail.js +67 -48
  141. package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
  142. package/lib/module/components/ui/Thumbnail/normalize.js +58 -0
  143. package/lib/module/components/ui/Thumbnail/normalize.js.map +1 -0
  144. package/lib/module/components/ui/Thumbnail/styles.js +6 -11
  145. package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
  146. package/lib/module/components/ui/Toast/ToastHost.js +64 -21
  147. package/lib/module/components/ui/Toast/ToastHost.js.map +1 -1
  148. package/lib/module/components/ui/Toast/ToastHost.web.js +73 -24
  149. package/lib/module/components/ui/Toast/ToastHost.web.js.map +1 -1
  150. package/lib/module/components/ui/Toast/store.js +110 -0
  151. package/lib/module/components/ui/Toast/store.js.map +1 -0
  152. package/lib/module/components/ui/Toast/toast.js +17 -7
  153. package/lib/module/components/ui/Toast/toast.js.map +1 -1
  154. package/lib/module/components/ui/index.js.map +1 -1
  155. package/lib/module/components/ui/shared/ImageAttempt.js +28 -0
  156. package/lib/module/components/ui/shared/ImageAttempt.js.map +1 -0
  157. package/lib/module/components/ui/shared/a11y.js +21 -0
  158. package/lib/module/components/ui/shared/a11y.js.map +1 -0
  159. package/lib/module/components/ui/shared/accessibilityName.js +9 -0
  160. package/lib/module/components/ui/shared/accessibilityName.js.map +1 -0
  161. package/lib/module/components/ui/shared/selectImageAttemptSource.js +5 -0
  162. package/lib/module/components/ui/shared/selectImageAttemptSource.js.map +1 -0
  163. package/lib/module/components/ui/shared/selectImageAttemptSource.shared.js +13 -0
  164. package/lib/module/components/ui/shared/selectImageAttemptSource.shared.js.map +1 -0
  165. package/lib/module/components/ui/shared/selectImageAttemptSource.web.js +5 -0
  166. package/lib/module/components/ui/shared/selectImageAttemptSource.web.js.map +1 -0
  167. package/lib/module/icons/data.js +1 -1
  168. package/lib/module/icons/data.js.map +1 -1
  169. package/lib/module/theme/ThemeProvider.js +14 -4
  170. package/lib/module/theme/ThemeProvider.js.map +1 -1
  171. package/lib/module/theme/fontScale.js +13 -0
  172. package/lib/module/theme/fontScale.js.map +1 -0
  173. package/lib/module/theme/index.js +2 -4
  174. package/lib/module/theme/index.js.map +1 -1
  175. package/lib/module/theme/themeContext.js +15 -0
  176. package/lib/module/theme/themeContext.js.map +1 -0
  177. package/lib/module/theme/themeDiagnostics.js +29 -0
  178. package/lib/module/theme/themeDiagnostics.js.map +1 -0
  179. package/lib/module/theme/usePrefersReducedMotion.js +11 -4
  180. package/lib/module/theme/usePrefersReducedMotion.js.map +1 -1
  181. package/lib/module/theme/usePrefersReducedMotion.web.js +5 -2
  182. package/lib/module/theme/usePrefersReducedMotion.web.js.map +1 -1
  183. package/lib/module/theme/useTheme.js +12 -25
  184. package/lib/module/theme/useTheme.js.map +1 -1
  185. package/lib/module/theme/useThemedStyles.js +9 -6
  186. package/lib/module/theme/useThemedStyles.js.map +1 -1
  187. package/lib/module/utils/imageSource.js +198 -0
  188. package/lib/module/utils/imageSource.js.map +1 -0
  189. package/lib/typescript/manual-tests/runtime-api/RuntimeApiScreen.d.ts +12 -0
  190. package/lib/typescript/manual-tests/runtime-api/RuntimeApiScreen.d.ts.map +1 -0
  191. package/lib/typescript/src/components/business/AvatarWithRing/AvatarWithRing.d.ts.map +1 -1
  192. package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts +8 -7
  193. package/lib/typescript/src/components/business/AvatarWithRing/styles.d.ts.map +1 -1
  194. package/lib/typescript/src/components/business/VersionPill/VersionPill.d.ts +1 -1
  195. package/lib/typescript/src/components/business/VersionPill/VersionPill.d.ts.map +1 -1
  196. package/lib/typescript/src/components/business/VersionPill/content.d.ts +19 -0
  197. package/lib/typescript/src/components/business/VersionPill/content.d.ts.map +1 -0
  198. package/lib/typescript/src/components/business/VersionPill/index.d.ts +1 -1
  199. package/lib/typescript/src/components/business/VersionPill/index.d.ts.map +1 -1
  200. package/lib/typescript/src/components/business/VersionPill/styles.d.ts +4 -0
  201. package/lib/typescript/src/components/business/VersionPill/styles.d.ts.map +1 -1
  202. package/lib/typescript/src/components/business/VersionPill/types.d.ts +6 -2
  203. package/lib/typescript/src/components/business/VersionPill/types.d.ts.map +1 -1
  204. package/lib/typescript/src/components/business/index.d.ts +1 -1
  205. package/lib/typescript/src/components/business/index.d.ts.map +1 -1
  206. package/lib/typescript/src/components/business/useSvgId.d.ts +6 -5
  207. package/lib/typescript/src/components/business/useSvgId.d.ts.map +1 -1
  208. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts +2 -2
  209. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
  210. package/lib/typescript/src/components/ui/Avatar/types.d.ts +6 -2
  211. package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
  212. package/lib/typescript/src/components/ui/Button/Button.d.ts +1 -1
  213. package/lib/typescript/src/components/ui/Button/Button.d.ts.map +1 -1
  214. package/lib/typescript/src/components/ui/Button/ButtonBase.d.ts +5 -3
  215. package/lib/typescript/src/components/ui/Button/ButtonBase.d.ts.map +1 -1
  216. package/lib/typescript/src/components/ui/Button/types.d.ts +5 -3
  217. package/lib/typescript/src/components/ui/Button/types.d.ts.map +1 -1
  218. package/lib/typescript/src/components/ui/Carousel/Carousel.d.ts.map +1 -1
  219. package/lib/typescript/src/components/ui/Carousel/behavior.d.ts +25 -0
  220. package/lib/typescript/src/components/ui/Carousel/behavior.d.ts.map +1 -0
  221. package/lib/typescript/src/components/ui/Carousel/styles.d.ts +4 -6
  222. package/lib/typescript/src/components/ui/Carousel/styles.d.ts.map +1 -1
  223. package/lib/typescript/src/components/ui/Carousel/types.d.ts +14 -6
  224. package/lib/typescript/src/components/ui/Carousel/types.d.ts.map +1 -1
  225. package/lib/typescript/src/components/ui/Cell/Cell.d.ts +1 -1
  226. package/lib/typescript/src/components/ui/Cell/Cell.d.ts.map +1 -1
  227. package/lib/typescript/src/components/ui/Cell/Leading.d.ts +2 -3
  228. package/lib/typescript/src/components/ui/Cell/Leading.d.ts.map +1 -1
  229. package/lib/typescript/src/components/ui/Cell/content.d.ts +18 -0
  230. package/lib/typescript/src/components/ui/Cell/content.d.ts.map +1 -0
  231. package/lib/typescript/src/components/ui/Cell/index.d.ts +1 -1
  232. package/lib/typescript/src/components/ui/Cell/index.d.ts.map +1 -1
  233. package/lib/typescript/src/components/ui/Cell/types.d.ts +66 -30
  234. package/lib/typescript/src/components/ui/Cell/types.d.ts.map +1 -1
  235. package/lib/typescript/src/components/ui/Checkbox/Checkbox.d.ts +1 -1
  236. package/lib/typescript/src/components/ui/Checkbox/Checkbox.d.ts.map +1 -1
  237. package/lib/typescript/src/components/ui/Checkbox/types.d.ts +12 -3
  238. package/lib/typescript/src/components/ui/Checkbox/types.d.ts.map +1 -1
  239. package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts +6 -3
  240. package/lib/typescript/src/components/ui/Confirm/ConfirmHost.d.ts.map +1 -1
  241. package/lib/typescript/src/components/ui/Confirm/confirm.d.ts +10 -4
  242. package/lib/typescript/src/components/ui/Confirm/confirm.d.ts.map +1 -1
  243. package/lib/typescript/src/components/ui/Confirm/labels.d.ts +6 -0
  244. package/lib/typescript/src/components/ui/Confirm/labels.d.ts.map +1 -0
  245. package/lib/typescript/src/components/ui/Confirm/store.d.ts +44 -0
  246. package/lib/typescript/src/components/ui/Confirm/store.d.ts.map +1 -0
  247. package/lib/typescript/src/components/ui/Confirm/styles.d.ts +3 -0
  248. package/lib/typescript/src/components/ui/Confirm/styles.d.ts.map +1 -1
  249. package/lib/typescript/src/components/ui/Confirm/types.d.ts +0 -9
  250. package/lib/typescript/src/components/ui/Confirm/types.d.ts.map +1 -1
  251. package/lib/typescript/src/components/ui/DrawerHeader/DrawerHeader.d.ts.map +1 -1
  252. package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts +7 -1
  253. package/lib/typescript/src/components/ui/DrawerHeader/types.d.ts.map +1 -1
  254. package/lib/typescript/src/components/ui/Grid/Grid.d.ts.map +1 -1
  255. package/lib/typescript/src/components/ui/Grid/accessibility.d.ts +5 -0
  256. package/lib/typescript/src/components/ui/Grid/accessibility.d.ts.map +1 -0
  257. package/lib/typescript/src/components/ui/Grid/types.d.ts +2 -0
  258. package/lib/typescript/src/components/ui/Grid/types.d.ts.map +1 -1
  259. package/lib/typescript/src/components/ui/IconButton/IconButton.d.ts +1 -1
  260. package/lib/typescript/src/components/ui/IconButton/IconButton.d.ts.map +1 -1
  261. package/lib/typescript/src/components/ui/IconButton/types.d.ts +4 -2
  262. package/lib/typescript/src/components/ui/IconButton/types.d.ts.map +1 -1
  263. package/lib/typescript/src/components/ui/Input/Input.d.ts +5 -383
  264. package/lib/typescript/src/components/ui/Input/Input.d.ts.map +1 -1
  265. package/lib/typescript/src/components/ui/Input/index.d.ts +1 -0
  266. package/lib/typescript/src/components/ui/Input/index.d.ts.map +1 -1
  267. package/lib/typescript/src/components/ui/Input/types.d.ts +3 -17
  268. package/lib/typescript/src/components/ui/Input/types.d.ts.map +1 -1
  269. package/lib/typescript/src/components/ui/Logo/Logo.d.ts +2 -2
  270. package/lib/typescript/src/components/ui/Logo/Logo.d.ts.map +1 -1
  271. package/lib/typescript/src/components/ui/Logo/types.d.ts +2 -2
  272. package/lib/typescript/src/components/ui/Logo/types.d.ts.map +1 -1
  273. package/lib/typescript/src/components/ui/NavBar/NavBar.d.ts.map +1 -1
  274. package/lib/typescript/src/components/ui/NavBar/index.d.ts +1 -1
  275. package/lib/typescript/src/components/ui/NavBar/index.d.ts.map +1 -1
  276. package/lib/typescript/src/components/ui/NavBar/isSlot.d.ts +24 -4
  277. package/lib/typescript/src/components/ui/NavBar/isSlot.d.ts.map +1 -1
  278. package/lib/typescript/src/components/ui/NavBar/types.d.ts +8 -8
  279. package/lib/typescript/src/components/ui/NavBar/types.d.ts.map +1 -1
  280. package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts +6 -14
  281. package/lib/typescript/src/components/ui/PasswordInput/PasswordInput.d.ts.map +1 -1
  282. package/lib/typescript/src/components/ui/PasswordInput/types.d.ts +4 -14
  283. package/lib/typescript/src/components/ui/PasswordInput/types.d.ts.map +1 -1
  284. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts +1 -1
  285. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
  286. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts +32 -0
  287. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts.map +1 -0
  288. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts +10 -5
  289. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts.map +1 -1
  290. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts +11 -0
  291. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts.map +1 -0
  292. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts +18 -0
  293. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts.map +1 -0
  294. package/lib/typescript/src/components/ui/Radio/Radio.d.ts +1 -1
  295. package/lib/typescript/src/components/ui/Radio/Radio.d.ts.map +1 -1
  296. package/lib/typescript/src/components/ui/Radio/RadioGroup.d.ts +2 -2
  297. package/lib/typescript/src/components/ui/Radio/RadioGroup.d.ts.map +1 -1
  298. package/lib/typescript/src/components/ui/Radio/types.d.ts +14 -3
  299. package/lib/typescript/src/components/ui/Radio/types.d.ts.map +1 -1
  300. package/lib/typescript/src/components/ui/Reveal/Reveal.d.ts.map +1 -1
  301. package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts +2 -8
  302. package/lib/typescript/src/components/ui/Reveal/Reveal.web.d.ts.map +1 -1
  303. package/lib/typescript/src/components/ui/Reveal/types.d.ts +1 -1
  304. package/lib/typescript/src/components/ui/Reveal/types.d.ts.map +1 -1
  305. package/lib/typescript/src/components/ui/Reveal/webTransition.d.ts +38 -0
  306. package/lib/typescript/src/components/ui/Reveal/webTransition.d.ts.map +1 -0
  307. package/lib/typescript/src/components/ui/Search/Search.d.ts +4 -214
  308. package/lib/typescript/src/components/ui/Search/Search.d.ts.map +1 -1
  309. package/lib/typescript/src/components/ui/Search/types.d.ts +13 -6
  310. package/lib/typescript/src/components/ui/Search/types.d.ts.map +1 -1
  311. package/lib/typescript/src/components/ui/Segmented/Segmented.d.ts.map +1 -1
  312. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts +3 -3
  313. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
  314. package/lib/typescript/src/components/ui/Spinner/Spinner.d.ts +1 -1
  315. package/lib/typescript/src/components/ui/Spinner/Spinner.d.ts.map +1 -1
  316. package/lib/typescript/src/components/ui/Spinner/Spinner.web.d.ts +1 -1
  317. package/lib/typescript/src/components/ui/Spinner/Spinner.web.d.ts.map +1 -1
  318. package/lib/typescript/src/components/ui/Spinner/shared.d.ts +5 -0
  319. package/lib/typescript/src/components/ui/Spinner/shared.d.ts.map +1 -1
  320. package/lib/typescript/src/components/ui/Spinner/types.d.ts +1 -1
  321. package/lib/typescript/src/components/ui/Spinner/types.d.ts.map +1 -1
  322. package/lib/typescript/src/components/ui/Stepper/Stepper.d.ts +3 -3
  323. package/lib/typescript/src/components/ui/Stepper/Stepper.d.ts.map +1 -1
  324. package/lib/typescript/src/components/ui/Stepper/StepperPressable.d.ts +2 -0
  325. package/lib/typescript/src/components/ui/Stepper/StepperPressable.d.ts.map +1 -0
  326. package/lib/typescript/src/components/ui/Stepper/StepperPressable.web.d.ts +2 -0
  327. package/lib/typescript/src/components/ui/Stepper/StepperPressable.web.d.ts.map +1 -0
  328. package/lib/typescript/src/components/ui/Stepper/accessibility.d.ts +3 -0
  329. package/lib/typescript/src/components/ui/Stepper/accessibility.d.ts.map +1 -0
  330. package/lib/typescript/src/components/ui/Stepper/accessibility.types.d.ts +23 -0
  331. package/lib/typescript/src/components/ui/Stepper/accessibility.types.d.ts.map +1 -0
  332. package/lib/typescript/src/components/ui/Stepper/accessibility.web.d.ts +9 -0
  333. package/lib/typescript/src/components/ui/Stepper/accessibility.web.d.ts.map +1 -0
  334. package/lib/typescript/src/components/ui/Stepper/layout.d.ts +22 -0
  335. package/lib/typescript/src/components/ui/Stepper/layout.d.ts.map +1 -0
  336. package/lib/typescript/src/components/ui/Stepper/normalizeStepper.d.ts +31 -0
  337. package/lib/typescript/src/components/ui/Stepper/normalizeStepper.d.ts.map +1 -0
  338. package/lib/typescript/src/components/ui/Stepper/styles.d.ts +9 -2
  339. package/lib/typescript/src/components/ui/Stepper/styles.d.ts.map +1 -1
  340. package/lib/typescript/src/components/ui/Stepper/types.d.ts +3 -1
  341. package/lib/typescript/src/components/ui/Stepper/types.d.ts.map +1 -1
  342. package/lib/typescript/src/components/ui/Switch/Switch.d.ts.map +1 -1
  343. package/lib/typescript/src/components/ui/Switch/Switch.web.d.ts.map +1 -1
  344. package/lib/typescript/src/components/ui/Switch/styles.d.ts +9 -3
  345. package/lib/typescript/src/components/ui/Switch/styles.d.ts.map +1 -1
  346. package/lib/typescript/src/components/ui/Switch/types.d.ts +2 -2
  347. package/lib/typescript/src/components/ui/Switch/types.d.ts.map +1 -1
  348. package/lib/typescript/src/components/ui/Tag/Tag.d.ts.map +1 -1
  349. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts +4 -401
  350. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  351. package/lib/typescript/src/components/ui/TextField/TextFieldSlot.d.ts +13 -0
  352. package/lib/typescript/src/components/ui/TextField/TextFieldSlot.d.ts.map +1 -0
  353. package/lib/typescript/src/components/ui/TextField/normalize.d.ts +51 -0
  354. package/lib/typescript/src/components/ui/TextField/normalize.d.ts.map +1 -0
  355. package/lib/typescript/src/components/ui/TextField/styles.d.ts +30 -0
  356. package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
  357. package/lib/typescript/src/components/ui/TextField/types.d.ts +92 -18
  358. package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
  359. package/lib/typescript/src/components/ui/TextField/useErrorAnnouncement.d.ts +3 -0
  360. package/lib/typescript/src/components/ui/TextField/useErrorAnnouncement.d.ts.map +1 -0
  361. package/lib/typescript/src/components/ui/TextField/useTextFieldValue.d.ts +18 -0
  362. package/lib/typescript/src/components/ui/TextField/useTextFieldValue.d.ts.map +1 -0
  363. package/lib/typescript/src/components/ui/TextField/valueState.d.ts +50 -0
  364. package/lib/typescript/src/components/ui/TextField/valueState.d.ts.map +1 -0
  365. package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts +4 -382
  366. package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts.map +1 -1
  367. package/lib/typescript/src/components/ui/Textarea/index.d.ts +1 -0
  368. package/lib/typescript/src/components/ui/Textarea/index.d.ts.map +1 -1
  369. package/lib/typescript/src/components/ui/Textarea/types.d.ts +3 -14
  370. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  371. package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts +5 -12
  372. package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
  373. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts +1 -1
  374. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts.map +1 -1
  375. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts +13 -0
  376. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts.map +1 -0
  377. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +4 -8
  378. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
  379. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts +21 -13
  380. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts.map +1 -1
  381. package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts +6 -2
  382. package/lib/typescript/src/components/ui/Toast/ToastHost.d.ts.map +1 -1
  383. package/lib/typescript/src/components/ui/Toast/ToastHost.web.d.ts +6 -3
  384. package/lib/typescript/src/components/ui/Toast/ToastHost.web.d.ts.map +1 -1
  385. package/lib/typescript/src/components/ui/Toast/store.d.ts +39 -0
  386. package/lib/typescript/src/components/ui/Toast/store.d.ts.map +1 -0
  387. package/lib/typescript/src/components/ui/Toast/toast.d.ts +7 -2
  388. package/lib/typescript/src/components/ui/Toast/toast.d.ts.map +1 -1
  389. package/lib/typescript/src/components/ui/Toast/types.d.ts +5 -3
  390. package/lib/typescript/src/components/ui/Toast/types.d.ts.map +1 -1
  391. package/lib/typescript/src/components/ui/index.d.ts +4 -4
  392. package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
  393. package/lib/typescript/src/components/ui/shared/ImageAttempt.d.ts +13 -0
  394. package/lib/typescript/src/components/ui/shared/ImageAttempt.d.ts.map +1 -0
  395. package/lib/typescript/src/components/ui/shared/a11y.d.ts +19 -0
  396. package/lib/typescript/src/components/ui/shared/a11y.d.ts.map +1 -0
  397. package/lib/typescript/src/components/ui/shared/accessibilityName.d.ts +3 -0
  398. package/lib/typescript/src/components/ui/shared/accessibilityName.d.ts.map +1 -0
  399. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.d.ts +3 -0
  400. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.d.ts.map +1 -0
  401. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.shared.d.ts +4 -0
  402. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.shared.d.ts.map +1 -0
  403. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.web.d.ts +3 -0
  404. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.web.d.ts.map +1 -0
  405. package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -3
  406. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  407. package/lib/typescript/src/theme/fontScale.d.ts +4 -0
  408. package/lib/typescript/src/theme/fontScale.d.ts.map +1 -0
  409. package/lib/typescript/src/theme/index.d.ts +2 -1
  410. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  411. package/lib/typescript/src/theme/themeContext.d.ts +6 -0
  412. package/lib/typescript/src/theme/themeContext.d.ts.map +1 -0
  413. package/lib/typescript/src/theme/themeDiagnostics.d.ts +6 -0
  414. package/lib/typescript/src/theme/themeDiagnostics.d.ts.map +1 -0
  415. package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts +8 -3
  416. package/lib/typescript/src/theme/usePrefersReducedMotion.d.ts.map +1 -1
  417. package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts +5 -2
  418. package/lib/typescript/src/theme/usePrefersReducedMotion.web.d.ts.map +1 -1
  419. package/lib/typescript/src/theme/useTheme.d.ts +1 -1
  420. package/lib/typescript/src/theme/useTheme.d.ts.map +1 -1
  421. package/lib/typescript/src/theme/useThemedStyles.d.ts +1 -1
  422. package/lib/typescript/src/theme/useThemedStyles.d.ts.map +1 -1
  423. package/lib/typescript/src/utils/imageSource.d.ts +20 -0
  424. package/lib/typescript/src/utils/imageSource.d.ts.map +1 -0
  425. package/lib/typescript/type-tests/public-api.d.ts +2 -0
  426. package/lib/typescript/type-tests/public-api.d.ts.map +1 -0
  427. package/lib/typescript/website/src/components/iconCatalogCategories.d.ts +11 -0
  428. package/lib/typescript/website/src/components/iconCatalogCategories.d.ts.map +1 -0
  429. package/package.json +27 -13
  430. package/src/components/business/AvatarWithRing/AvatarWithRing.tsx +11 -4
  431. package/src/components/business/AvatarWithRing/styles.ts +11 -9
  432. package/src/components/business/VersionPill/VersionPill.tsx +31 -25
  433. package/src/components/business/VersionPill/content.ts +47 -0
  434. package/src/components/business/VersionPill/index.ts +1 -1
  435. package/src/components/business/VersionPill/styles.ts +4 -0
  436. package/src/components/business/VersionPill/types.ts +7 -2
  437. package/src/components/business/index.ts +1 -1
  438. package/src/components/business/useSvgId.ts +29 -8
  439. package/src/components/ui/Avatar/Avatar.tsx +25 -34
  440. package/src/components/ui/Avatar/types.ts +6 -2
  441. package/src/components/ui/Button/Button.tsx +39 -20
  442. package/src/components/ui/Button/ButtonBase.tsx +21 -12
  443. package/src/components/ui/Button/types.ts +5 -3
  444. package/src/components/ui/Carousel/Carousel.tsx +102 -40
  445. package/src/components/ui/Carousel/behavior.ts +78 -0
  446. package/src/components/ui/Carousel/styles.ts +5 -7
  447. package/src/components/ui/Carousel/types.ts +18 -6
  448. package/src/components/ui/Cell/Cell.tsx +85 -74
  449. package/src/components/ui/Cell/Leading.tsx +14 -14
  450. package/src/components/ui/Cell/content.ts +53 -0
  451. package/src/components/ui/Cell/index.ts +7 -1
  452. package/src/components/ui/Cell/types.ts +64 -30
  453. package/src/components/ui/Checkbox/Checkbox.tsx +35 -8
  454. package/src/components/ui/Checkbox/types.ts +15 -3
  455. package/src/components/ui/Confirm/ConfirmHost.tsx +51 -26
  456. package/src/components/ui/Confirm/confirm.ts +17 -34
  457. package/src/components/ui/Confirm/labels.ts +14 -0
  458. package/src/components/ui/Confirm/store.ts +147 -0
  459. package/src/components/ui/Confirm/styles.ts +4 -0
  460. package/src/components/ui/Confirm/types.ts +2 -10
  461. package/src/components/ui/DrawerHeader/DrawerHeader.tsx +22 -27
  462. package/src/components/ui/DrawerHeader/types.ts +7 -1
  463. package/src/components/ui/Grid/Grid.tsx +44 -12
  464. package/src/components/ui/Grid/accessibility.ts +21 -0
  465. package/src/components/ui/Grid/types.ts +2 -0
  466. package/src/components/ui/IconButton/IconButton.tsx +20 -3
  467. package/src/components/ui/IconButton/types.ts +4 -2
  468. package/src/components/ui/Input/Input.tsx +16 -6
  469. package/src/components/ui/Input/index.ts +5 -0
  470. package/src/components/ui/Input/types.ts +12 -23
  471. package/src/components/ui/Logo/Logo.tsx +27 -4
  472. package/src/components/ui/Logo/types.ts +2 -2
  473. package/src/components/ui/NavBar/NavBar.tsx +27 -19
  474. package/src/components/ui/NavBar/index.ts +1 -1
  475. package/src/components/ui/NavBar/isSlot.ts +372 -5
  476. package/src/components/ui/NavBar/types.ts +9 -8
  477. package/src/components/ui/PasswordInput/PasswordInput.tsx +67 -69
  478. package/src/components/ui/PasswordInput/types.ts +12 -14
  479. package/src/components/ui/Pulse/PulseDot.tsx +5 -4
  480. package/src/components/ui/Pulse/normalizePulseOptions.ts +76 -0
  481. package/src/components/ui/Pulse/usePulse.ts +80 -34
  482. package/src/components/ui/Pulse/usePulseDriver.ts +49 -0
  483. package/src/components/ui/Pulse/usePulseDriver.web.ts +66 -0
  484. package/src/components/ui/Radio/Radio.tsx +44 -15
  485. package/src/components/ui/Radio/RadioGroup.tsx +21 -3
  486. package/src/components/ui/Radio/types.ts +17 -3
  487. package/src/components/ui/Reveal/Reveal.tsx +5 -3
  488. package/src/components/ui/Reveal/Reveal.web.tsx +72 -29
  489. package/src/components/ui/Reveal/types.ts +1 -1
  490. package/src/components/ui/Reveal/webTransition.ts +206 -0
  491. package/src/components/ui/Search/Search.tsx +127 -58
  492. package/src/components/ui/Search/types.ts +30 -9
  493. package/src/components/ui/Segmented/Segmented.tsx +10 -2
  494. package/src/components/ui/Skeleton/Skeleton.tsx +9 -5
  495. package/src/components/ui/Spinner/Spinner.tsx +25 -17
  496. package/src/components/ui/Spinner/Spinner.web.tsx +23 -18
  497. package/src/components/ui/Spinner/shared.ts +7 -0
  498. package/src/components/ui/Spinner/types.ts +1 -1
  499. package/src/components/ui/Stepper/Stepper.tsx +166 -86
  500. package/src/components/ui/Stepper/StepperPressable.tsx +1 -0
  501. package/src/components/ui/Stepper/StepperPressable.web.tsx +1 -0
  502. package/src/components/ui/Stepper/accessibility.ts +32 -0
  503. package/src/components/ui/Stepper/accessibility.types.ts +22 -0
  504. package/src/components/ui/Stepper/accessibility.web.ts +65 -0
  505. package/src/components/ui/Stepper/layout.ts +44 -0
  506. package/src/components/ui/Stepper/normalizeStepper.ts +85 -0
  507. package/src/components/ui/Stepper/styles.ts +9 -2
  508. package/src/components/ui/Stepper/types.ts +3 -1
  509. package/src/components/ui/Switch/Switch.tsx +54 -15
  510. package/src/components/ui/Switch/Switch.web.tsx +57 -19
  511. package/src/components/ui/Switch/styles.ts +11 -4
  512. package/src/components/ui/Switch/types.ts +2 -2
  513. package/src/components/ui/Tag/Tag.tsx +6 -2
  514. package/src/components/ui/TextField/TextFieldBase.tsx +175 -70
  515. package/src/components/ui/TextField/TextFieldSlot.tsx +91 -0
  516. package/src/components/ui/TextField/normalize.ts +280 -0
  517. package/src/components/ui/TextField/styles.ts +31 -0
  518. package/src/components/ui/TextField/types.ts +118 -22
  519. package/src/components/ui/TextField/useErrorAnnouncement.ts +27 -0
  520. package/src/components/ui/TextField/useTextFieldValue.ts +94 -0
  521. package/src/components/ui/TextField/valueState.ts +125 -0
  522. package/src/components/ui/Textarea/Textarea.tsx +11 -4
  523. package/src/components/ui/Textarea/index.ts +5 -0
  524. package/src/components/ui/Textarea/types.ts +14 -22
  525. package/src/components/ui/Thumbnail/Thumbnail.tsx +86 -51
  526. package/src/components/ui/Thumbnail/index.ts +5 -1
  527. package/src/components/ui/Thumbnail/normalize.ts +78 -0
  528. package/src/components/ui/Thumbnail/styles.ts +5 -10
  529. package/src/components/ui/Thumbnail/types.ts +43 -13
  530. package/src/components/ui/Toast/ToastHost.tsx +81 -22
  531. package/src/components/ui/Toast/ToastHost.web.tsx +91 -29
  532. package/src/components/ui/Toast/store.ts +148 -0
  533. package/src/components/ui/Toast/toast.ts +19 -10
  534. package/src/components/ui/Toast/types.ts +7 -3
  535. package/src/components/ui/index.ts +19 -4
  536. package/src/components/ui/shared/ImageAttempt.tsx +30 -0
  537. package/src/components/ui/shared/a11y.ts +18 -0
  538. package/src/components/ui/shared/accessibilityName.ts +6 -0
  539. package/src/components/ui/shared/selectImageAttemptSource.shared.ts +17 -0
  540. package/src/components/ui/shared/selectImageAttemptSource.ts +3 -0
  541. package/src/components/ui/shared/selectImageAttemptSource.web.ts +3 -0
  542. package/src/icons/data.ts +1 -1
  543. package/src/theme/ThemeProvider.tsx +18 -7
  544. package/src/theme/fontScale.ts +15 -0
  545. package/src/theme/index.ts +2 -3
  546. package/src/theme/themeContext.ts +24 -0
  547. package/src/theme/themeDiagnostics.ts +41 -0
  548. package/src/theme/usePrefersReducedMotion.ts +11 -4
  549. package/src/theme/usePrefersReducedMotion.web.ts +5 -2
  550. package/src/theme/useTheme.ts +19 -27
  551. package/src/theme/useThemedStyles.ts +12 -7
  552. package/src/utils/imageSource.ts +303 -0
  553. package/lib/module/components/ui/PasswordInput/styles.js +0 -12
  554. package/lib/module/components/ui/PasswordInput/styles.js.map +0 -1
  555. package/lib/module/components/ui/Pulse/usePulse.web.js +0 -76
  556. package/lib/module/components/ui/Pulse/usePulse.web.js.map +0 -1
  557. package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts +0 -7
  558. package/lib/typescript/src/components/ui/PasswordInput/styles.d.ts.map +0 -1
  559. package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts +0 -21
  560. package/lib/typescript/src/components/ui/Pulse/usePulse.web.d.ts.map +0 -1
  561. package/src/components/ui/PasswordInput/styles.ts +0 -7
  562. package/src/components/ui/Pulse/usePulse.web.ts +0 -74
@@ -1,32 +1,38 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ import React, { useEffect } from 'react';
4
4
  import { Text, View } from 'react-native';
5
5
  import { Pressable } from 'react-native-gesture-handler';
6
6
  import { pressedOpacity, r, useColors, useThemedStyles } from "../../../theme/index.js";
7
+ import { createLogger } from "../../../utils/logger/index.js";
7
8
  import { Icon } from "../Icon/index.js";
9
+ import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
10
+ import { resolveCellActionAccessibilityLabel, stringifyCellText } from "./content.js";
8
11
  import { useListVariant } from "./context.js";
9
12
  import { Leading } from "./Leading.js";
10
13
  import { makeStyles } from "./styles.js";
11
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- /** extra 是否包含可交互控件(Switch/Stepper/Checkbox 等 ReactNode)
13
- * 用于决定 Pressable 外壳是否关闭 accessible —— 若外壳 accessible=true 且 extra 也是
14
- * 独立 accessible 控件,SR 会产生「双播报 + 控件被遮挡无法直接激活」的体验缺陷。
15
- * 规则:extra 是 ReactNode(非 string / null / undefined)时判定为「可能含控件」。
16
- * 使用方若明确 extra 是纯展示 ReactNode,可通过 accessibilityHint='none' 绕过(暂不加 prop)。*/
17
- function extraHasInteractiveNode(extra) {
18
- return extra != null && typeof extra !== 'string';
19
- }
20
- function renderSlot(value, textStyle, numberOfLines) {
21
- if (value == null) return null;
22
- if (typeof value === 'string') {
23
- return /*#__PURE__*/_jsx(Text, {
24
- style: textStyle,
25
- numberOfLines: numberOfLines,
26
- children: value
27
- });
15
+ const log = createLogger('Cell');
16
+ function CellExtraContent({
17
+ extra,
18
+ textStyle
19
+ }) {
20
+ if (!extra) return null;
21
+ switch (extra.kind) {
22
+ case 'text':
23
+ return /*#__PURE__*/_jsx(Text, {
24
+ style: textStyle,
25
+ numberOfLines: 1,
26
+ children: stringifyCellText(extra.value)
27
+ });
28
+ case 'display':
29
+ return /*#__PURE__*/_jsx(View, {
30
+ ...A11Y_HIDDEN_PROPS,
31
+ children: extra.node
32
+ });
33
+ case 'control':
34
+ return extra.node;
28
35
  }
29
- return value;
30
36
  }
31
37
 
32
38
  /**
@@ -36,27 +42,27 @@ function renderSlot(value, textStyle, numberOfLines) {
36
42
  * - `grouped`(默认):独立白卡片 + 8px 间距
37
43
  * - `flush`(嵌在 Card 内):紧凑列表,28×28 橙色 icon 盒子,行间 inset hairline 分隔
38
44
  */
39
- export function Cell({
40
- title,
41
- titleLines,
42
- desc,
43
- extra,
44
- arrow,
45
- leading,
46
- onPress,
47
- disabled,
48
- danger,
49
- style,
50
- testID,
51
- accessibilityLabel,
52
- accessibilityHint
53
- }) {
45
+ export function Cell(props) {
54
46
  const c = useColors();
55
47
  const styles = useThemedStyles(makeStyles);
56
48
  const variant = useListVariant();
57
49
  const flush = variant === 'flush';
58
- const cellStyle = [styles.cell, flush && styles.cellFlush, flush && desc != null && styles.cellFlushWithDesc, style];
59
- const titleColor = danger ? c.error : undefined;
50
+ const requestedAction = typeof props.onPress === 'function';
51
+ const accessibilityLabel = requestedAction ? resolveCellActionAccessibilityLabel({
52
+ accessibilityLabel: props.accessibilityLabel,
53
+ title: props.title,
54
+ desc: props.desc,
55
+ extra: props.extra
56
+ }) : undefined;
57
+ const hasEffectiveAction = requestedAction && accessibilityLabel !== undefined;
58
+ const hasMissingActionName = requestedAction && !hasEffectiveAction;
59
+ useEffect(() => {
60
+ if (hasMissingActionName) {
61
+ log.warn('Cell action 缺少非空业务名称,已按 display-only 渲染。');
62
+ }
63
+ }, [hasMissingActionName]);
64
+ const cellStyle = [styles.cell, flush && styles.cellFlush, flush && props.desc !== undefined && styles.cellFlushWithDesc, props.style];
65
+ const titleColor = props.danger ? c.error : undefined;
60
66
  const titleStyle = [flush ? styles.titleFlush : styles.title, titleColor && {
61
67
  color: titleColor
62
68
  }];
@@ -64,45 +70,50 @@ export function Cell({
64
70
  const extraStyle = flush ? styles.extraFlush : styles.extra;
65
71
  const inner = /*#__PURE__*/_jsxs(View, {
66
72
  style: cellStyle,
67
- testID: onPress ? undefined : testID,
68
- children: [leading != null ? /*#__PURE__*/_jsx(Leading, {
69
- slot: leading,
70
- danger: danger
73
+ testID: hasEffectiveAction ? undefined : props.testID,
74
+ children: [props.leading !== undefined ? /*#__PURE__*/_jsx(Leading, {
75
+ slot: props.leading,
76
+ danger: props.danger
71
77
  }) : null, /*#__PURE__*/_jsxs(View, {
72
78
  style: styles.body,
73
- children: [renderSlot(title, titleStyle, titleLines ?? 1), renderSlot(desc, descStyle, 2)]
74
- }), renderSlot(extra, extraStyle, 1), arrow && !danger ? /*#__PURE__*/_jsx(Icon, {
75
- name: "chevron-right",
76
- size: r(flush ? 18 : 20),
77
- color: c.foregroundSubtle,
78
- style: flush ? styles.chevronFlush : undefined
79
+ children: [/*#__PURE__*/_jsx(Text, {
80
+ style: titleStyle,
81
+ numberOfLines: props.titleLines ?? 1,
82
+ children: stringifyCellText(props.title)
83
+ }), props.desc !== undefined ? /*#__PURE__*/_jsx(Text, {
84
+ style: descStyle,
85
+ numberOfLines: 2,
86
+ children: stringifyCellText(props.desc)
87
+ }) : null]
88
+ }), /*#__PURE__*/_jsx(CellExtraContent, {
89
+ extra: props.extra,
90
+ textStyle: extraStyle
91
+ }), hasEffectiveAction && props.arrow && !props.danger ? /*#__PURE__*/_jsx(View, {
92
+ ...A11Y_HIDDEN_PROPS,
93
+ style: flush ? styles.chevronFlush : undefined,
94
+ children: /*#__PURE__*/_jsx(Icon, {
95
+ name: "chevron-right",
96
+ size: r(flush ? 18 : 20),
97
+ color: c.foregroundSubtle
98
+ })
79
99
  }) : null]
80
100
  });
81
- if (onPress) {
82
- // extra 含交互控件(Switch/Stepper 等),外壳 Pressable 关闭 accessible,
83
- // 让 SR 直接穿透读取控件本身,避免双播报和控件被遮挡无法激活的体验缺陷。
84
- const hasInteractiveExtra = extraHasInteractiveNode(extra);
85
-
86
- // 默认 a11y label:title + desc 拼接,给 SR 用户同时听到主副信息。
87
- // 有 accessibilityLabel 显式覆盖时走 prop,否则组合 title+desc。
88
- const defaultLabel = typeof title === 'string' ? typeof desc === 'string' && desc ? `${title},${desc}` : title : undefined;
101
+ if (hasEffectiveAction) {
102
+ const isDisabled = props.disabled === true;
89
103
  return /*#__PURE__*/_jsx(Pressable, {
90
- onPress: onPress,
91
- disabled: disabled,
104
+ onPress: isDisabled ? undefined : props.onPress,
105
+ disabled: isDisabled,
92
106
  accessibilityRole: "button",
93
- accessibilityLabel: accessibilityLabel ?? defaultLabel,
94
- accessibilityHint: accessibilityHint,
95
- accessibilityState: disabled ? {
96
- disabled: true
97
- } : undefined
98
- // extra 含控件时外壳不作为独立 a11y 元素,让 SR 穿透到 extra 控件
99
- ,
100
- accessible: hasInteractiveExtra ? false : undefined,
101
- testID: testID,
107
+ accessibilityLabel: accessibilityLabel,
108
+ accessibilityHint: props.accessibilityHint,
109
+ accessibilityState: {
110
+ disabled: isDisabled
111
+ },
112
+ testID: props.testID,
102
113
  style: ({
103
114
  pressed
104
115
  }) => [{
105
- opacity: disabled ? 0.5 : pressed ? pressedOpacity : 1
116
+ opacity: isDisabled ? 0.5 : pressed ? pressedOpacity : 1
106
117
  }],
107
118
  children: inner
108
119
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","Pressable","pressedOpacity","r","useColors","useThemedStyles","Icon","useListVariant","Leading","makeStyles","jsx","_jsx","jsxs","_jsxs","extraHasInteractiveNode","extra","renderSlot","value","textStyle","numberOfLines","style","children","Cell","title","titleLines","desc","arrow","leading","onPress","disabled","danger","testID","accessibilityLabel","accessibilityHint","c","styles","variant","flush","cellStyle","cell","cellFlush","cellFlushWithDesc","titleColor","error","undefined","titleStyle","titleFlush","color","descStyle","descFlush","extraStyle","extraFlush","inner","slot","body","name","size","foregroundSubtle","chevronFlush","hasInteractiveExtra","defaultLabel","accessibilityRole","accessibilityState","accessible","pressed","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/Cell/Cell.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","Text","View","Pressable","pressedOpacity","r","useColors","useThemedStyles","createLogger","Icon","A11Y_HIDDEN_PROPS","resolveCellActionAccessibilityLabel","stringifyCellText","useListVariant","Leading","makeStyles","jsx","_jsx","jsxs","_jsxs","log","CellExtraContent","extra","textStyle","kind","style","numberOfLines","children","value","node","Cell","props","c","styles","variant","flush","requestedAction","onPress","accessibilityLabel","title","desc","undefined","hasEffectiveAction","hasMissingActionName","warn","cellStyle","cell","cellFlush","cellFlushWithDesc","titleColor","danger","error","titleStyle","titleFlush","color","descStyle","descFlush","extraStyle","extraFlush","inner","testID","leading","slot","body","titleLines","arrow","chevronFlush","name","size","foregroundSubtle","isDisabled","disabled","accessibilityRole","accessibilityHint","accessibilityState","pressed","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/Cell/Cell.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  import { StyleSheet, View } from 'react-native';
4
4
  import { r, useColors } from "../../../theme/index.js";
5
5
  import { Icon } from "../Icon/index.js";
6
+ import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
6
7
  import { useListVariant } from "./context.js";
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
8
9
  const FLUSH_BOX_SIZE = r(28);
@@ -26,6 +27,7 @@ export function Leading({
26
27
  // grouped 模式:裸 icon 22px;flush 模式:28×28 圆角盒子,danger 时切 error-container
27
28
  if (variant === 'flush') {
28
29
  return /*#__PURE__*/_jsx(View, {
30
+ ...A11Y_HIDDEN_PROPS,
29
31
  style: [sharedStyles.flushBox, {
30
32
  backgroundColor: danger ? c.errorContainer : c.primaryContainer
31
33
  }],
@@ -36,14 +38,18 @@ export function Leading({
36
38
  })
37
39
  });
38
40
  }
39
- return /*#__PURE__*/_jsx(Icon, {
40
- name: slot,
41
- size: r(22),
42
- color: danger ? c.error : c.foregroundMuted
41
+ return /*#__PURE__*/_jsx(View, {
42
+ ...A11Y_HIDDEN_PROPS,
43
+ children: /*#__PURE__*/_jsx(Icon, {
44
+ name: slot,
45
+ size: r(22),
46
+ color: danger ? c.error : c.foregroundMuted
47
+ })
43
48
  });
44
49
  }
45
50
  return /*#__PURE__*/_jsx(View, {
46
- children: slot
51
+ ...A11Y_HIDDEN_PROPS,
52
+ children: slot.node
47
53
  });
48
54
  }
49
55
  //# sourceMappingURL=Leading.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","View","r","useColors","Icon","useListVariant","jsx","_jsx","FLUSH_BOX_SIZE","FLUSH_BOX_RADIUS","sharedStyles","create","flushBox","width","height","borderRadius","alignItems","justifyContent","Leading","slot","danger","c","variant","style","backgroundColor","errorContainer","primaryContainer","children","name","size","color","error","primary","foregroundMuted"],"sourceRoot":"../../../../../src","sources":["components/ui/Cell/Leading.tsx"],"mappings":";;AACA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7C,SAASC,IAAI,QAAuB,kBAAS;AAC7C,SAASC,cAAc,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAMC,cAAc,GAAGN,CAAC,CAAC,EAAE,CAAC;AAC5B,MAAMO,gBAAgB,GAAGP,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAMQ,YAAY,GAAGV,UAAU,CAACW,MAAM,CAAC;EACrCC,QAAQ,EAAE;IACRC,KAAK,EAAEL,cAAc;IACrBM,MAAM,EAAEN,cAAc;IACtBO,YAAY,EAAEN,gBAAgB;IAC9BO,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;AAEF,OAAO,SAASC,OAAOA,CAAC;EACtBC,IAAI;EACJC;AAIF,CAAC,EAAE;EACD,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,OAAO,GAAGjB,cAAc,CAAC,CAAC;EAEhC,IAAI,OAAOc,IAAI,KAAK,QAAQ,EAAE;IAC5B;IACA,IAAIG,OAAO,KAAK,OAAO,EAAE;MACvB,oBACEf,IAAA,CAACN,IAAI;QACHsB,KAAK,EAAE,CACLb,YAAY,CAACE,QAAQ,EACrB;UACEY,eAAe,EAAEJ,MAAM,GAAGC,CAAC,CAACI,cAAc,GAAGJ,CAAC,CAACK;QACjD,CAAC,CACD;QAAAC,QAAA,eAEFpB,IAAA,CAACH,IAAI;UACHwB,IAAI,EAAET,IAAiB;UACvBU,IAAI,EAAE3B,CAAC,CAAC,EAAE,CAAE;UACZ4B,KAAK,EAAEV,MAAM,GAAGC,CAAC,CAACU,KAAK,GAAGV,CAAC,CAACW;QAAQ,CACrC;MAAC,CACE,CAAC;IAEX;IACA,oBACEzB,IAAA,CAACH,IAAI;MACHwB,IAAI,EAAET,IAAiB;MACvBU,IAAI,EAAE3B,CAAC,CAAC,EAAE,CAAE;MACZ4B,KAAK,EAAEV,MAAM,GAAGC,CAAC,CAACU,KAAK,GAAGV,CAAC,CAACY;IAAgB,CAC7C,CAAC;EAEN;EACA,oBAAO1B,IAAA,CAACN,IAAI;IAAA0B,QAAA,EAAER;EAAI,CAAO,CAAC;AAC5B","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","View","r","useColors","Icon","A11Y_HIDDEN_PROPS","useListVariant","jsx","_jsx","FLUSH_BOX_SIZE","FLUSH_BOX_RADIUS","sharedStyles","create","flushBox","width","height","borderRadius","alignItems","justifyContent","Leading","slot","danger","c","variant","style","backgroundColor","errorContainer","primaryContainer","children","name","size","color","error","primary","foregroundMuted","node"],"sourceRoot":"../../../../../src","sources":["components/ui/Cell/Leading.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7C,SAASC,IAAI,QAAQ,kBAAS;AAC9B,SAASC,iBAAiB,QAAQ,mBAAgB;AAClD,SAASC,cAAc,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3C,MAAMC,cAAc,GAAGP,CAAC,CAAC,EAAE,CAAC;AAC5B,MAAMQ,gBAAgB,GAAGR,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAMS,YAAY,GAAGX,UAAU,CAACY,MAAM,CAAC;EACrCC,QAAQ,EAAE;IACRC,KAAK,EAAEL,cAAc;IACrBM,MAAM,EAAEN,cAAc;IACtBO,YAAY,EAAEN,gBAAgB;IAC9BO,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;AAEF,OAAO,SAASC,OAAOA,CAAC;EACtBC,IAAI;EACJC;AAIF,CAAC,EAAE;EACD,MAAMC,CAAC,GAAGnB,SAAS,CAAC,CAAC;EACrB,MAAMoB,OAAO,GAAGjB,cAAc,CAAC,CAAC;EAEhC,IAAI,OAAOc,IAAI,KAAK,QAAQ,EAAE;IAC5B;IACA,IAAIG,OAAO,KAAK,OAAO,EAAE;MACvB,oBACEf,IAAA,CAACP,IAAI;QAAA,GACCI,iBAAiB;QACrBmB,KAAK,EAAE,CACLb,YAAY,CAACE,QAAQ,EACrB;UACEY,eAAe,EAAEJ,MAAM,GAAGC,CAAC,CAACI,cAAc,GAAGJ,CAAC,CAACK;QACjD,CAAC,CACD;QAAAC,QAAA,eAEFpB,IAAA,CAACJ,IAAI;UAACyB,IAAI,EAAET,IAAK;UAACU,IAAI,EAAE5B,CAAC,CAAC,EAAE,CAAE;UAAC6B,KAAK,EAAEV,MAAM,GAAGC,CAAC,CAACU,KAAK,GAAGV,CAAC,CAACW;QAAQ,CAAE;MAAC,CAClE,CAAC;IAEX;IACA,oBACEzB,IAAA,CAACP,IAAI;MAAA,GAAKI,iBAAiB;MAAAuB,QAAA,eACzBpB,IAAA,CAACJ,IAAI;QACHyB,IAAI,EAAET,IAAK;QACXU,IAAI,EAAE5B,CAAC,CAAC,EAAE,CAAE;QACZ6B,KAAK,EAAEV,MAAM,GAAGC,CAAC,CAACU,KAAK,GAAGV,CAAC,CAACY;MAAgB,CAC7C;IAAC,CACE,CAAC;EAEX;EACA,oBAAO1B,IAAA,CAACP,IAAI;IAAA,GAAKI,iBAAiB;IAAAuB,QAAA,EAAGR,IAAI,CAACe;EAAI,CAAO,CAAC;AACxD","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import { normalizeNonBlankText } from "../shared/accessibilityName.js";
4
+ export function stringifyCellText(value) {
5
+ return String(value);
6
+ }
7
+ function appendNonBlank(parts, value) {
8
+ const normalized = normalizeNonBlankText(value);
9
+ if (normalized !== undefined) parts.push(normalized);
10
+ }
11
+ export function buildCellAccessibilityLabel({
12
+ title,
13
+ desc,
14
+ extra
15
+ }) {
16
+ const parts = [];
17
+ appendNonBlank(parts, stringifyCellText(title));
18
+ if (desc !== undefined) {
19
+ appendNonBlank(parts, stringifyCellText(desc));
20
+ }
21
+ if (extra?.kind === 'text') {
22
+ appendNonBlank(parts, stringifyCellText(extra.value));
23
+ } else if (extra?.kind === 'display') {
24
+ appendNonBlank(parts, extra.accessibilityText ?? '');
25
+ }
26
+ return parts.join(',');
27
+ }
28
+ export function resolveCellActionAccessibilityLabel({
29
+ accessibilityLabel,
30
+ ...content
31
+ }) {
32
+ return normalizeNonBlankText(accessibilityLabel) ?? normalizeNonBlankText(buildCellAccessibilityLabel(content));
33
+ }
34
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizeNonBlankText","stringifyCellText","value","String","appendNonBlank","parts","normalized","undefined","push","buildCellAccessibilityLabel","title","desc","extra","kind","accessibilityText","join","resolveCellActionAccessibilityLabel","accessibilityLabel","content"],"sourceRoot":"../../../../../src","sources":["components/ui/Cell/content.ts"],"mappings":";;AACA,SAASA,qBAAqB,QAAQ,gCAA6B;AAInE,OAAO,SAASC,iBAAiBA,CAACC,KAAoB,EAAU;EAC9D,OAAOC,MAAM,CAACD,KAAK,CAAC;AACtB;AAEA,SAASE,cAAcA,CAACC,KAAe,EAAEH,KAAa,EAAQ;EAC5D,MAAMI,UAAU,GAAGN,qBAAqB,CAACE,KAAK,CAAC;EAC/C,IAAII,UAAU,KAAKC,SAAS,EAAEF,KAAK,CAACG,IAAI,CAACF,UAAU,CAAC;AACtD;AAEA,OAAO,SAASG,2BAA2BA,CAAC;EAC1CC,KAAK;EACLC,IAAI;EACJC;AAKF,CAAC,EAAU;EACT,MAAMP,KAAe,GAAG,EAAE;EAC1BD,cAAc,CAACC,KAAK,EAAEJ,iBAAiB,CAACS,KAAK,CAAC,CAAC;EAE/C,IAAIC,IAAI,KAAKJ,SAAS,EAAE;IACtBH,cAAc,CAACC,KAAK,EAAEJ,iBAAiB,CAACU,IAAI,CAAC,CAAC;EAChD;EAEA,IAAIC,KAAK,EAAEC,IAAI,KAAK,MAAM,EAAE;IAC1BT,cAAc,CAACC,KAAK,EAAEJ,iBAAiB,CAACW,KAAK,CAACV,KAAK,CAAC,CAAC;EACvD,CAAC,MAAM,IAAIU,KAAK,EAAEC,IAAI,KAAK,SAAS,EAAE;IACpCT,cAAc,CAACC,KAAK,EAAEO,KAAK,CAACE,iBAAiB,IAAI,EAAE,CAAC;EACtD;EAEA,OAAOT,KAAK,CAACU,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA,OAAO,SAASC,mCAAmCA,CAAC;EAClDC,kBAAkB;EAClB,GAAGC;AAML,CAAC,EAAsB;EACrB,OACElB,qBAAqB,CAACiB,kBAAkB,CAAC,IACzCjB,qBAAqB,CAACS,2BAA2B,CAACS,OAAO,CAAC,CAAC;AAE/D","ignoreList":[]}
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ import React, { useEffect } from 'react';
4
4
  import { Text, View } from 'react-native';
5
5
  import { Pressable } from 'react-native-gesture-handler';
6
6
  import { fixed, pressedOpacity, r, useColors, useThemedStyles } from "../../../theme/index.js";
7
+ import { createLogger } from "../../../utils/logger/index.js";
8
+ import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
9
+ import { normalizeNonBlankText } from "../shared/accessibilityName.js";
7
10
  import { Icon } from "../Icon/index.js";
8
11
  import { makeStyles } from "./styles.js";
9
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ const log = createLogger('Checkbox');
14
+
10
15
  /**
11
16
  * 多选复选框。20×20 盒子。
12
17
  * 关:透明背景 + 细线边框。
@@ -18,31 +23,42 @@ export function Checkbox({
18
23
  checked,
19
24
  onChange,
20
25
  label,
26
+ accessibilityLabel,
21
27
  shape = 'square',
22
28
  disabled,
23
29
  testID
24
30
  }) {
25
31
  const c = useColors();
26
32
  const styles = useThemedStyles(makeStyles);
33
+ const accessibleName = normalizeNonBlankText(accessibilityLabel) ?? normalizeNonBlankText(label);
34
+ const hasMissingName = accessibleName === undefined;
35
+ const isDisabled = disabled === true || hasMissingName;
36
+ useEffect(() => {
37
+ if (hasMissingName) {
38
+ log.warn('Checkbox 需要非空的 accessibilityLabel 或可见 label,当前 action 已禁用。');
39
+ }
40
+ }, [hasMissingName]);
27
41
  return /*#__PURE__*/_jsxs(Pressable, {
28
- onPress: () => !disabled && onChange(!checked),
29
- disabled: disabled
42
+ accessible: !hasMissingName,
43
+ onPress: isDisabled ? undefined : () => onChange(!checked),
44
+ disabled: isDisabled
30
45
  // [M-7] box 20pt → 垂直补 (44-20)/2=12 到 fixed.hitTarget
31
46
  ,
32
47
  hitSlop: Math.round((fixed.hitTarget - r(20)) / 2),
33
- accessibilityRole: "checkbox",
34
- accessibilityState: {
48
+ accessibilityRole: hasMissingName ? undefined : 'checkbox',
49
+ accessibilityState: hasMissingName ? undefined : {
35
50
  checked,
36
- disabled: !!disabled
51
+ disabled: isDisabled
37
52
  },
38
- accessibilityLabel: label,
53
+ accessibilityLabel: accessibleName,
39
54
  testID: testID,
40
55
  style: ({
41
56
  pressed
42
57
  }) => [styles.row, {
43
- opacity: disabled ? 0.5 : pressed ? pressedOpacity : 1
58
+ opacity: isDisabled ? 0.5 : pressed ? pressedOpacity : 1
44
59
  }],
45
60
  children: [/*#__PURE__*/_jsx(View, {
61
+ ...A11Y_HIDDEN_PROPS,
46
62
  style: [styles.box,
47
63
  // [L-79] circle 形态改用 radius.pill —— sentinel 999 确保任何尺寸下都是真圆
48
64
  shape === 'circle' && styles.boxCircle, checked && {
@@ -57,6 +73,7 @@ export function Checkbox({
57
73
  style: checked ? undefined : styles.tickHidden
58
74
  })
59
75
  }), label ? /*#__PURE__*/_jsx(Text, {
76
+ ...A11Y_HIDDEN_PROPS,
60
77
  style: styles.label,
61
78
  children: label
62
79
  }) : null]
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","Pressable","fixed","pressedOpacity","r","useColors","useThemedStyles","Icon","makeStyles","jsx","_jsx","jsxs","_jsxs","Checkbox","checked","onChange","label","shape","disabled","testID","c","styles","onPress","hitSlop","Math","round","hitTarget","accessibilityRole","accessibilityState","accessibilityLabel","style","pressed","row","opacity","children","box","boxCircle","backgroundColor","primary","borderColor","name","size","color","onPrimary","strokeWidth","undefined","tickHidden"],"sourceRoot":"../../../../../src","sources":["components/ui/Checkbox/Checkbox.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SACEC,KAAK,EACLC,cAAc,EACdC,CAAC,EACDC,SAAS,EACTC,eAAe,QACV,yBAAgB;AACvB,SAASC,IAAI,QAAQ,kBAAS;AAC9B,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,OAAO;EACPC,QAAQ;EACRC,KAAK;EACLC,KAAK,GAAG,QAAQ;EAChBC,QAAQ;EACRC;AACa,CAAC,EAAqB;EACnC,MAAMC,CAAC,GAAGf,SAAS,CAAC,CAAC;EACrB,MAAMgB,MAAM,GAAGf,eAAe,CAACE,UAAU,CAAC;EAC1C,oBACEI,KAAA,CAACX,SAAS;IACRqB,OAAO,EAAEA,CAAA,KAAM,CAACJ,QAAQ,IAAIH,QAAQ,CAAC,CAACD,OAAO,CAAE;IAC/CI,QAAQ,EAAEA;IACV;IAAA;IACAK,OAAO,EAAEC,IAAI,CAACC,KAAK,CAAC,CAACvB,KAAK,CAACwB,SAAS,GAAGtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAE;IACnDuB,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEd,OAAO;MAAEI,QAAQ,EAAE,CAAC,CAACA;IAAS,CAAE;IACtDW,kBAAkB,EAAEb,KAAM;IAC1BG,MAAM,EAAEA,MAAO;IACfW,KAAK,EAAEA,CAAC;MAAEC;IAAQ,CAAC,KAAK,CACtBV,MAAM,CAACW,GAAG,EACV;MAAEC,OAAO,EAAEf,QAAQ,GAAG,GAAG,GAAGa,OAAO,GAAG5B,cAAc,GAAG;IAAE,CAAC,CAC1D;IAAA+B,QAAA,gBAEFxB,IAAA,CAACV,IAAI;MACH8B,KAAK,EAAE,CACLT,MAAM,CAACc,GAAG;MACV;MACAlB,KAAK,KAAK,QAAQ,IAAII,MAAM,CAACe,SAAS,EACtCtB,OAAO,IAAI;QACTuB,eAAe,EAAEjB,CAAC,CAACkB,OAAO;QAC1BC,WAAW,EAAEnB,CAAC,CAACkB;MACjB,CAAC,CACD;MAAAJ,QAAA,eAGFxB,IAAA,CAACH,IAAI;QACHiC,IAAI,EAAC,OAAO;QACZC,IAAI,EAAErC,CAAC,CAAC,EAAE,CAAE;QACZsC,KAAK,EAAEtB,CAAC,CAACuB,SAAU;QACnBC,WAAW,EAAE,GAAI;QACjBd,KAAK,EAAEhB,OAAO,GAAG+B,SAAS,GAAGxB,MAAM,CAACyB;MAAW,CAChD;IAAC,CACE,CAAC,EACN9B,KAAK,gBAAGN,IAAA,CAACX,IAAI;MAAC+B,KAAK,EAAET,MAAM,CAACL,KAAM;MAAAkB,QAAA,EAAElB;IAAK,CAAO,CAAC,GAAG,IAAI;EAAA,CAChD,CAAC;AAEhB","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","Text","View","Pressable","fixed","pressedOpacity","r","useColors","useThemedStyles","createLogger","A11Y_HIDDEN_PROPS","normalizeNonBlankText","Icon","makeStyles","jsx","_jsx","jsxs","_jsxs","log","Checkbox","checked","onChange","label","accessibilityLabel","shape","disabled","testID","c","styles","accessibleName","hasMissingName","undefined","isDisabled","warn","accessible","onPress","hitSlop","Math","round","hitTarget","accessibilityRole","accessibilityState","style","pressed","row","opacity","children","box","boxCircle","backgroundColor","primary","borderColor","name","size","color","onPrimary","strokeWidth","tickHidden"],"sourceRoot":"../../../../../src","sources":["components/ui/Checkbox/Checkbox.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,8 @@ import { Animated, Easing, Modal, Pressable, Text, View, useWindowDimensions } f
5
5
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
6
6
  import { space, useThemedStyles } from "../../../theme/index.js";
7
7
  import { Button } from "../Button/index.js";
8
- import { _subs } from "./confirm.js";
8
+ import { registerConfirmHost, settleConfirm } from "./confirm.js";
9
+ import { resolveConfirmLabels } from "./labels.js";
9
10
  import { makeStyles } from "./styles.js";
10
11
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
12
  /** 遮罩淡入 / 淡出时长(ms)—— 出场略长于入场,与 Modal slide 退场(~300ms)大致同步收完。 */
@@ -13,11 +14,14 @@ const SCRIM_IN_MS = 220;
13
14
  const SCRIM_OUT_MS = 260;
14
15
 
15
16
  /**
16
- * Confirm 对话框宿主 —— App 根挂一次,监听 `confirm()` 调用并渲染。
17
+ * Confirm 对话框宿主 —— App 根挂**一次**,监听 `confirm()` 调用并渲染。
17
18
  *
18
19
  * 原生 RN `Modal`(transparent + animationType slide)从底部滑入,backdrop 点击
19
- * 取消、内层 sheet 拦截点击不冒泡。**不依赖 @gorhom**(0.6.0 去 @gorhom 后改为
20
- * 纯 RN Modal + pub/sub 实现)。
20
+ * 取消、内层 sheet 拦截点击不冒泡。**不依赖 @gorhom**。
21
+ *
22
+ * 唯一 owner:重复挂载的实例拿到 `null` lease,永久惰性、不渲染 —— 不会出现两个
23
+ * Host 争抢同一个对话框。所有关闭路径统一走 `settleConfirm(entry, result)`,
24
+ * 组件内不直接调用 entry 的 resolver。
21
25
  */
22
26
  export function ConfirmHost() {
23
27
  const styles = useThemedStyles(makeStyles);
@@ -27,33 +31,52 @@ export function ConfirmHost() {
27
31
  } = useWindowDimensions();
28
32
  const [entry, setEntry] = useState(null);
29
33
 
30
- // 跟踪当前未决 entry,供 unmount cleanup resolve(false)。
34
+ // 同步权威副本:effect cleanup 与迟到回调都读它,不受 React state 批处理延迟影响。
31
35
  const pendingRef = useRef(null);
32
- pendingRef.current = entry;
36
+
37
+ // 注册失败(已有 owner)时保持惰性:不订阅、不渲染。
38
+ const [inert, setInert] = useState(false);
33
39
 
34
40
  // 保留最后一次显示的 entry:关闭时 entry 立即置 null,但 slide 退场动画期 Modal 仍可见,
35
41
  // 渲染 lastEntry 才不会滑出一个只剩 padding 的空 sheet([M-17])。
36
42
  const lastEntryRef = useRef(null);
37
43
  if (entry) lastEntryRef.current = entry;
38
44
  const display = entry ?? lastEntryRef.current;
45
+ const labels = resolveConfirmLabels({
46
+ confirmLabel: display?.options.confirmLabel,
47
+ cancelLabel: display?.options.cancelLabel
48
+ });
39
49
  useEffect(() => {
40
- // [L-101] Subscriber 不再接收 null —— 收到新 entry 即显示;关闭路径由 resolve() 驱动
41
- const sub = next => setEntry(next);
42
- _subs.add(sub);
50
+ const subscriber = event => {
51
+ // 先写同步 ref 再置 React state —— cleanup 与迟到回调依赖 ref 的即时正确性。
52
+ if (event.type === 'show') {
53
+ pendingRef.current = event.entry;
54
+ setEntry(event.entry);
55
+ return;
56
+ }
57
+ if (pendingRef.current?.id === event.id) {
58
+ pendingRef.current = null;
59
+ setEntry(current => current?.id === event.id ? null : current);
60
+ }
61
+ };
62
+ const lease = registerConfirmHost(subscriber);
63
+ if (!lease) {
64
+ setInert(true);
65
+ return;
66
+ }
43
67
  return () => {
44
- _subs.delete(sub);
45
- // Host 卸载时若对话框仍未决(error boundary 重置 / re-key 切语言主题等),
46
- // resolve(false) —— 否则 confirm() 的 Promise 永久悬挂、_activeEntry 锁死([H-5])。
47
- pendingRef.current?.resolve(false);
68
+ // 卸载时若对话框仍未决(error boundary 重置 / 根 re-key 切语言主题等),
69
+ // Store 把它 settle(false) —— 否则 confirm() Promise 永久悬挂并锁死单例([H-5])
70
+ const held = pendingRef.current;
71
+ pendingRef.current = null;
72
+ lease.release(held);
48
73
  };
49
74
  }, []);
50
75
  const handleConfirm = useCallback(() => {
51
- entry?.resolve(true);
52
- setEntry(null);
76
+ if (entry) settleConfirm(entry, true);
53
77
  }, [entry]);
54
78
  const handleCancel = useCallback(() => {
55
- entry?.resolve(false);
56
- setEntry(null);
79
+ if (entry) settleConfirm(entry, false);
57
80
  }, [entry]);
58
81
 
59
82
  // 遮罩自持淡入 / 淡出(不蹭 Modal 的位移动画,理由见下方 scrim 注释)。退场也要淡:
@@ -67,6 +90,7 @@ export function ConfirmHost() {
67
90
  useNativeDriver: true
68
91
  }).start();
69
92
  }, [entry, scrimOpacity]);
93
+ if (inert) return null;
70
94
  return /*#__PURE__*/_jsx(Modal, {
71
95
  visible: !!entry,
72
96
  transparent: true,
@@ -99,24 +123,24 @@ export function ConfirmHost() {
99
123
  children: [/*#__PURE__*/_jsx(Text, {
100
124
  style: styles.title,
101
125
  accessibilityRole: "header",
102
- children: display.title
103
- }), display.message ? /*#__PURE__*/_jsx(Text, {
126
+ children: display.options.title
127
+ }), display.options.message ? /*#__PURE__*/_jsx(Text, {
104
128
  style: styles.message,
105
- children: display.message
129
+ children: display.options.message
106
130
  }) : null]
107
131
  }), /*#__PURE__*/_jsxs(View, {
108
132
  style: styles.actions,
109
133
  children: [/*#__PURE__*/_jsx(Button, {
110
134
  testID: "confirm-cancel",
111
- label: display.cancelLabel ?? '取消',
135
+ label: labels.cancelLabel,
112
136
  variant: "secondary",
113
- block: true,
137
+ style: styles.action,
114
138
  onPress: handleCancel
115
139
  }), /*#__PURE__*/_jsx(Button, {
116
140
  testID: "confirm-ok",
117
- label: display.confirmLabel ?? '确认',
118
- variant: display.destructive ? 'danger' : 'primary',
119
- block: true,
141
+ label: labels.confirmLabel,
142
+ variant: display.options.destructive ? 'danger' : 'primary',
143
+ style: styles.action,
120
144
  onPress: handleConfirm
121
145
  })]
122
146
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useRef","useState","Animated","Easing","Modal","Pressable","Text","View","useWindowDimensions","useSafeAreaInsets","space","useThemedStyles","Button","_subs","makeStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SCRIM_IN_MS","SCRIM_OUT_MS","ConfirmHost","styles","insets","height","screenH","entry","setEntry","pendingRef","current","lastEntryRef","display","sub","next","add","delete","resolve","handleConfirm","handleCancel","scrimOpacity","Value","timing","toValue","duration","easing","out","quad","useNativeDriver","start","visible","transparent","animationType","statusBarTranslucent","onRequestClose","children","style","backdrop","onPress","accessible","pointerEvents","scrim","top","opacity","testID","sheet","paddingBottom","bottom","body","title","accessibilityRole","message","actions","label","cancelLabel","variant","block","confirmLabel","destructive"],"sourceRoot":"../../../../../src","sources":["components/ui/Confirm/ConfirmHost.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useRef","useState","Animated","Easing","Modal","Pressable","Text","View","useWindowDimensions","useSafeAreaInsets","space","useThemedStyles","Button","registerConfirmHost","settleConfirm","resolveConfirmLabels","makeStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SCRIM_IN_MS","SCRIM_OUT_MS","ConfirmHost","styles","insets","height","screenH","entry","setEntry","pendingRef","inert","setInert","lastEntryRef","current","display","labels","confirmLabel","options","cancelLabel","subscriber","event","type","id","lease","held","release","handleConfirm","handleCancel","scrimOpacity","Value","timing","toValue","duration","easing","out","quad","useNativeDriver","start","visible","transparent","animationType","statusBarTranslucent","onRequestClose","children","style","backdrop","onPress","accessible","pointerEvents","scrim","top","opacity","testID","sheet","paddingBottom","bottom","body","title","accessibilityRole","message","actions","label","variant","action","destructive"],"sourceRoot":"../../../../../src","sources":["components/ui/Confirm/ConfirmHost.tsx"],"mappings":"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","ignoreList":[]}