@oxyhq/bloom 0.50.1 → 0.51.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 (571) hide show
  1. package/NOTICE +89 -0
  2. package/README.md +12 -7
  3. package/lib/commonjs/avatar-group/AvatarGroup.web.js +2 -1
  4. package/lib/commonjs/avatar-group/AvatarGroup.web.js.map +1 -1
  5. package/lib/commonjs/bottom-sheet/index.web.js +5 -3
  6. package/lib/commonjs/bottom-sheet/index.web.js.map +1 -1
  7. package/lib/commonjs/context-menu/index.web.js +6 -9
  8. package/lib/commonjs/context-menu/index.web.js.map +1 -1
  9. package/lib/commonjs/dialog/Dialog.js +12 -7
  10. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  11. package/lib/commonjs/dialog/Dialog.web.js +18 -22
  12. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  13. package/lib/commonjs/dialog/DialogHeader.js +61 -12
  14. package/lib/commonjs/dialog/DialogHeader.js.map +1 -1
  15. package/lib/commonjs/index.js +90 -83
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/index.web.js +116 -109
  18. package/lib/commonjs/index.web.js.map +1 -1
  19. package/lib/commonjs/menu/index.web.js +5 -8
  20. package/lib/commonjs/menu/index.web.js.map +1 -1
  21. package/lib/commonjs/popover/index.web.js +8 -9
  22. package/lib/commonjs/popover/index.web.js.map +1 -1
  23. package/lib/commonjs/portal/index.js +4 -1
  24. package/lib/commonjs/portal/index.js.map +1 -1
  25. package/lib/commonjs/progressive-blur/index.js +79 -0
  26. package/lib/commonjs/progressive-blur/index.js.map +1 -0
  27. package/lib/commonjs/progressive-blur/index.web.js +67 -0
  28. package/lib/commonjs/progressive-blur/index.web.js.map +1 -0
  29. package/lib/commonjs/progressive-blur/shared.js +66 -0
  30. package/lib/commonjs/progressive-blur/shared.js.map +1 -0
  31. package/lib/commonjs/progressive-blur/types.js +6 -0
  32. package/lib/commonjs/progressive-blur/types.js.map +1 -0
  33. package/lib/commonjs/select/index.web.js +5 -8
  34. package/lib/commonjs/select/index.web.js.map +1 -1
  35. package/lib/commonjs/slider/Slider.js +4 -9
  36. package/lib/commonjs/slider/Slider.js.map +1 -1
  37. package/lib/commonjs/styles/web-view-style.js +26 -0
  38. package/lib/commonjs/styles/web-view-style.js.map +1 -0
  39. package/lib/commonjs/switch/Switch.js +4 -8
  40. package/lib/commonjs/switch/Switch.js.map +1 -1
  41. package/lib/commonjs/tab-bar/TabBarBase.js +415 -0
  42. package/lib/commonjs/tab-bar/TabBarBase.js.map +1 -0
  43. package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js +83 -0
  44. package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js.map +1 -0
  45. package/lib/commonjs/tab-bar/expo-router/fading-tab-screen.js +119 -0
  46. package/lib/commonjs/tab-bar/expo-router/fading-tab-screen.js.map +1 -0
  47. package/lib/commonjs/tab-bar/expo-router/index.js +26 -0
  48. package/lib/commonjs/tab-bar/expo-router/index.js.map +1 -0
  49. package/lib/commonjs/tab-bar/glyph.js +43 -0
  50. package/lib/commonjs/tab-bar/glyph.js.map +1 -0
  51. package/lib/commonjs/tab-bar/glyph.native.js +55 -0
  52. package/lib/commonjs/tab-bar/glyph.native.js.map +1 -0
  53. package/lib/commonjs/tab-bar/index.js +65 -0
  54. package/lib/commonjs/tab-bar/index.js.map +1 -0
  55. package/lib/commonjs/tab-bar/index.web.js +67 -0
  56. package/lib/commonjs/tab-bar/index.web.js.map +1 -0
  57. package/lib/commonjs/tab-bar/minimize-context.js +127 -0
  58. package/lib/commonjs/tab-bar/minimize-context.js.map +1 -0
  59. package/lib/commonjs/tab-bar/shared.js +139 -0
  60. package/lib/commonjs/tab-bar/shared.js.map +1 -0
  61. package/lib/commonjs/tab-bar/surface.js +50 -0
  62. package/lib/commonjs/tab-bar/surface.js.map +1 -0
  63. package/lib/commonjs/tab-bar/surface.native.js +56 -0
  64. package/lib/commonjs/tab-bar/surface.native.js.map +1 -0
  65. package/lib/commonjs/tab-bar/surface.web.js +59 -0
  66. package/lib/commonjs/tab-bar/surface.web.js.map +1 -0
  67. package/lib/commonjs/tab-bar/types.js +6 -0
  68. package/lib/commonjs/tab-bar/types.js.map +1 -0
  69. package/lib/commonjs/tabs/Tabs.js +3 -8
  70. package/lib/commonjs/tabs/Tabs.js.map +1 -1
  71. package/lib/commonjs/toast/Positioner.js +117 -0
  72. package/lib/commonjs/toast/Positioner.js.map +1 -0
  73. package/lib/commonjs/toast/ToastContent.js +301 -0
  74. package/lib/commonjs/toast/ToastContent.js.map +1 -0
  75. package/lib/commonjs/toast/ToastHost.js +69 -0
  76. package/lib/commonjs/toast/ToastHost.js.map +1 -0
  77. package/lib/commonjs/toast/ToastHost.native.js +44 -0
  78. package/lib/commonjs/toast/ToastHost.native.js.map +1 -0
  79. package/lib/commonjs/toast/ToastIcon.js +57 -0
  80. package/lib/commonjs/toast/ToastIcon.js.map +1 -0
  81. package/lib/commonjs/toast/ToastRow.js +411 -0
  82. package/lib/commonjs/toast/ToastRow.js.map +1 -0
  83. package/lib/commonjs/toast/ToastSwipeHandler.js +189 -0
  84. package/lib/commonjs/toast/ToastSwipeHandler.js.map +1 -0
  85. package/lib/commonjs/toast/Toaster.js +205 -0
  86. package/lib/commonjs/toast/Toaster.js.map +1 -0
  87. package/lib/commonjs/toast/animations.js +274 -0
  88. package/lib/commonjs/toast/animations.js.map +1 -0
  89. package/lib/commonjs/toast/constants.js +56 -0
  90. package/lib/commonjs/toast/constants.js.map +1 -0
  91. package/lib/commonjs/toast/context.js +42 -0
  92. package/lib/commonjs/toast/context.js.map +1 -0
  93. package/lib/commonjs/toast/index.js +32 -126
  94. package/lib/commonjs/toast/index.js.map +1 -1
  95. package/lib/commonjs/toast/position-utils.js +115 -0
  96. package/lib/commonjs/toast/position-utils.js.map +1 -0
  97. package/lib/commonjs/toast/positioner-utils.js +141 -0
  98. package/lib/commonjs/toast/positioner-utils.js.map +1 -0
  99. package/lib/commonjs/toast/toast-comparator.js +28 -0
  100. package/lib/commonjs/toast/toast-comparator.js.map +1 -0
  101. package/lib/commonjs/toast/toast-fns.js +90 -0
  102. package/lib/commonjs/toast/toast-fns.js.map +1 -0
  103. package/lib/commonjs/toast/toast-store.js +352 -0
  104. package/lib/commonjs/toast/toast-store.js.map +1 -0
  105. package/lib/commonjs/toast/toast-timers.js +110 -0
  106. package/lib/commonjs/toast/toast-timers.js.map +1 -0
  107. package/lib/commonjs/toast/types.js +42 -0
  108. package/lib/commonjs/toast/types.js.map +1 -1
  109. package/lib/commonjs/toast/use-animated-target.js +57 -0
  110. package/lib/commonjs/toast/use-animated-target.js.map +1 -0
  111. package/lib/commonjs/toast/use-app-state.js +76 -0
  112. package/lib/commonjs/toast/use-app-state.js.map +1 -0
  113. package/lib/commonjs/toast/use-toast-colors.js +114 -0
  114. package/lib/commonjs/toast/use-toast-colors.js.map +1 -0
  115. package/lib/commonjs/toast/use-toast-position.js +40 -0
  116. package/lib/commonjs/toast/use-toast-position.js.map +1 -0
  117. package/lib/commonjs/tooltip/index.web.js +2 -1
  118. package/lib/commonjs/tooltip/index.web.js.map +1 -1
  119. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js +20 -8
  120. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
  121. package/lib/module/avatar-group/AvatarGroup.web.js +2 -1
  122. package/lib/module/avatar-group/AvatarGroup.web.js.map +1 -1
  123. package/lib/module/bottom-sheet/index.web.js +5 -3
  124. package/lib/module/bottom-sheet/index.web.js.map +1 -1
  125. package/lib/module/context-menu/index.web.js +6 -9
  126. package/lib/module/context-menu/index.web.js.map +1 -1
  127. package/lib/module/dialog/Dialog.js +12 -7
  128. package/lib/module/dialog/Dialog.js.map +1 -1
  129. package/lib/module/dialog/Dialog.web.js +18 -22
  130. package/lib/module/dialog/Dialog.web.js.map +1 -1
  131. package/lib/module/dialog/DialogHeader.js +61 -12
  132. package/lib/module/dialog/DialogHeader.js.map +1 -1
  133. package/lib/module/index.js +3 -2
  134. package/lib/module/index.js.map +1 -1
  135. package/lib/module/index.web.js +3 -2
  136. package/lib/module/index.web.js.map +1 -1
  137. package/lib/module/menu/index.web.js +5 -8
  138. package/lib/module/menu/index.web.js.map +1 -1
  139. package/lib/module/popover/index.web.js +8 -9
  140. package/lib/module/popover/index.web.js.map +1 -1
  141. package/lib/module/portal/index.js +4 -1
  142. package/lib/module/portal/index.js.map +1 -1
  143. package/lib/module/progressive-blur/index.js +74 -0
  144. package/lib/module/progressive-blur/index.js.map +1 -0
  145. package/lib/module/progressive-blur/index.web.js +62 -0
  146. package/lib/module/progressive-blur/index.web.js.map +1 -0
  147. package/lib/module/progressive-blur/shared.js +60 -0
  148. package/lib/module/progressive-blur/shared.js.map +1 -0
  149. package/lib/module/progressive-blur/types.js +4 -0
  150. package/lib/module/progressive-blur/types.js.map +1 -0
  151. package/lib/module/select/index.web.js +5 -8
  152. package/lib/module/select/index.web.js.map +1 -1
  153. package/lib/module/slider/Slider.js +4 -9
  154. package/lib/module/slider/Slider.js.map +1 -1
  155. package/lib/module/styles/web-view-style.js +22 -0
  156. package/lib/module/styles/web-view-style.js.map +1 -0
  157. package/lib/module/switch/Switch.js +4 -8
  158. package/lib/module/switch/Switch.js.map +1 -1
  159. package/lib/module/tab-bar/TabBarBase.js +408 -0
  160. package/lib/module/tab-bar/TabBarBase.js.map +1 -0
  161. package/lib/module/tab-bar/expo-router/RouterTabBar.js +78 -0
  162. package/lib/module/tab-bar/expo-router/RouterTabBar.js.map +1 -0
  163. package/lib/module/tab-bar/expo-router/fading-tab-screen.js +113 -0
  164. package/lib/module/tab-bar/expo-router/fading-tab-screen.js.map +1 -0
  165. package/lib/module/tab-bar/expo-router/index.js +15 -0
  166. package/lib/module/tab-bar/expo-router/index.js.map +1 -0
  167. package/lib/module/tab-bar/glyph.js +38 -0
  168. package/lib/module/tab-bar/glyph.js.map +1 -0
  169. package/lib/module/tab-bar/glyph.native.js +50 -0
  170. package/lib/module/tab-bar/glyph.native.js.map +1 -0
  171. package/lib/module/tab-bar/index.js +24 -0
  172. package/lib/module/tab-bar/index.js.map +1 -0
  173. package/lib/module/tab-bar/index.web.js +26 -0
  174. package/lib/module/tab-bar/index.web.js.map +1 -0
  175. package/lib/module/tab-bar/minimize-context.js +118 -0
  176. package/lib/module/tab-bar/minimize-context.js.map +1 -0
  177. package/lib/module/tab-bar/shared.js +132 -0
  178. package/lib/module/tab-bar/shared.js.map +1 -0
  179. package/lib/module/tab-bar/surface.js +44 -0
  180. package/lib/module/tab-bar/surface.js.map +1 -0
  181. package/lib/module/tab-bar/surface.native.js +50 -0
  182. package/lib/module/tab-bar/surface.native.js.map +1 -0
  183. package/lib/module/tab-bar/surface.web.js +53 -0
  184. package/lib/module/tab-bar/surface.web.js.map +1 -0
  185. package/lib/module/tab-bar/types.js +4 -0
  186. package/lib/module/tab-bar/types.js.map +1 -0
  187. package/lib/module/tabs/Tabs.js +3 -8
  188. package/lib/module/tabs/Tabs.js.map +1 -1
  189. package/lib/module/toast/Positioner.js +110 -0
  190. package/lib/module/toast/Positioner.js.map +1 -0
  191. package/lib/module/toast/ToastContent.js +295 -0
  192. package/lib/module/toast/ToastContent.js.map +1 -0
  193. package/lib/module/toast/ToastHost.js +63 -0
  194. package/lib/module/toast/ToastHost.js.map +1 -0
  195. package/lib/module/toast/ToastHost.native.js +38 -0
  196. package/lib/module/toast/ToastHost.native.js.map +1 -0
  197. package/lib/module/toast/ToastIcon.js +52 -0
  198. package/lib/module/toast/ToastIcon.js.map +1 -0
  199. package/lib/module/toast/ToastRow.js +407 -0
  200. package/lib/module/toast/ToastRow.js.map +1 -0
  201. package/lib/module/toast/ToastSwipeHandler.js +182 -0
  202. package/lib/module/toast/ToastSwipeHandler.js.map +1 -0
  203. package/lib/module/toast/Toaster.js +198 -0
  204. package/lib/module/toast/Toaster.js.map +1 -0
  205. package/lib/module/toast/animations.js +261 -0
  206. package/lib/module/toast/animations.js.map +1 -0
  207. package/lib/module/toast/constants.js +52 -0
  208. package/lib/module/toast/constants.js.map +1 -0
  209. package/lib/module/toast/context.js +34 -0
  210. package/lib/module/toast/context.js.map +1 -0
  211. package/lib/module/toast/index.js +27 -103
  212. package/lib/module/toast/index.js.map +1 -1
  213. package/lib/module/toast/position-utils.js +107 -0
  214. package/lib/module/toast/position-utils.js.map +1 -0
  215. package/lib/module/toast/positioner-utils.js +134 -0
  216. package/lib/module/toast/positioner-utils.js.map +1 -0
  217. package/lib/module/toast/toast-comparator.js +22 -0
  218. package/lib/module/toast/toast-comparator.js.map +1 -0
  219. package/lib/module/toast/toast-fns.js +85 -0
  220. package/lib/module/toast/toast-fns.js.map +1 -0
  221. package/lib/module/toast/toast-store.js +346 -0
  222. package/lib/module/toast/toast-store.js.map +1 -0
  223. package/lib/module/toast/toast-timers.js +104 -0
  224. package/lib/module/toast/toast-timers.js.map +1 -0
  225. package/lib/module/toast/types.js +38 -0
  226. package/lib/module/toast/types.js.map +1 -1
  227. package/lib/module/toast/use-animated-target.js +52 -0
  228. package/lib/module/toast/use-animated-target.js.map +1 -0
  229. package/lib/module/toast/use-app-state.js +70 -0
  230. package/lib/module/toast/use-app-state.js.map +1 -0
  231. package/lib/module/toast/use-toast-colors.js +109 -0
  232. package/lib/module/toast/use-toast-colors.js.map +1 -0
  233. package/lib/module/toast/use-toast-position.js +35 -0
  234. package/lib/module/toast/use-toast-position.js.map +1 -0
  235. package/lib/module/tooltip/index.web.js +2 -1
  236. package/lib/module/tooltip/index.web.js.map +1 -1
  237. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js +20 -8
  238. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
  239. package/lib/typescript/commonjs/avatar-group/AvatarGroup.web.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/bottom-sheet/index.web.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  244. package/lib/typescript/commonjs/dialog/DialogHeader.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/index.d.ts +2 -1
  246. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/index.web.d.ts +2 -1
  248. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/menu/index.web.d.ts.map +1 -1
  250. package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/portal/index.d.ts.map +1 -1
  252. package/lib/typescript/commonjs/progressive-blur/index.d.ts +23 -0
  253. package/lib/typescript/commonjs/progressive-blur/index.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/progressive-blur/index.web.d.ts +30 -0
  255. package/lib/typescript/commonjs/progressive-blur/index.web.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/progressive-blur/shared.d.ts +35 -0
  257. package/lib/typescript/commonjs/progressive-blur/shared.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/progressive-blur/types.d.ts +21 -0
  259. package/lib/typescript/commonjs/progressive-blur/types.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/slider/Slider.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/styles/web-view-style.d.ts +21 -0
  263. package/lib/typescript/commonjs/styles/web-view-style.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/switch/Switch.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts +36 -0
  266. package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts.map +1 -0
  267. package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts +59 -0
  268. package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -0
  269. package/lib/typescript/commonjs/tab-bar/expo-router/fading-tab-screen.d.ts +11 -0
  270. package/lib/typescript/commonjs/tab-bar/expo-router/fading-tab-screen.d.ts.map +1 -0
  271. package/lib/typescript/commonjs/tab-bar/expo-router/index.d.ts +14 -0
  272. package/lib/typescript/commonjs/tab-bar/expo-router/index.d.ts.map +1 -0
  273. package/lib/typescript/commonjs/tab-bar/glyph.d.ts +6 -0
  274. package/lib/typescript/commonjs/tab-bar/glyph.d.ts.map +1 -0
  275. package/lib/typescript/commonjs/tab-bar/glyph.native.d.ts +6 -0
  276. package/lib/typescript/commonjs/tab-bar/glyph.native.d.ts.map +1 -0
  277. package/lib/typescript/commonjs/tab-bar/index.d.ts +12 -0
  278. package/lib/typescript/commonjs/tab-bar/index.d.ts.map +1 -0
  279. package/lib/typescript/commonjs/tab-bar/index.web.d.ts +12 -0
  280. package/lib/typescript/commonjs/tab-bar/index.web.d.ts.map +1 -0
  281. package/lib/typescript/commonjs/tab-bar/minimize-context.d.ts +51 -0
  282. package/lib/typescript/commonjs/tab-bar/minimize-context.d.ts.map +1 -0
  283. package/lib/typescript/commonjs/tab-bar/shared.d.ts +93 -0
  284. package/lib/typescript/commonjs/tab-bar/shared.d.ts.map +1 -0
  285. package/lib/typescript/commonjs/tab-bar/surface.d.ts +6 -0
  286. package/lib/typescript/commonjs/tab-bar/surface.d.ts.map +1 -0
  287. package/lib/typescript/commonjs/tab-bar/surface.native.d.ts +6 -0
  288. package/lib/typescript/commonjs/tab-bar/surface.native.d.ts.map +1 -0
  289. package/lib/typescript/commonjs/tab-bar/surface.web.d.ts +6 -0
  290. package/lib/typescript/commonjs/tab-bar/surface.web.d.ts.map +1 -0
  291. package/lib/typescript/commonjs/tab-bar/types.d.ts +85 -0
  292. package/lib/typescript/commonjs/tab-bar/types.d.ts.map +1 -0
  293. package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
  294. package/lib/typescript/commonjs/toast/Positioner.d.ts +21 -0
  295. package/lib/typescript/commonjs/toast/Positioner.d.ts.map +1 -0
  296. package/lib/typescript/commonjs/toast/ToastContent.d.ts +14 -0
  297. package/lib/typescript/commonjs/toast/ToastContent.d.ts.map +1 -0
  298. package/lib/typescript/commonjs/toast/ToastHost.d.ts +6 -0
  299. package/lib/typescript/commonjs/toast/ToastHost.d.ts.map +1 -0
  300. package/lib/typescript/commonjs/toast/ToastHost.native.d.ts +6 -0
  301. package/lib/typescript/commonjs/toast/ToastHost.native.d.ts.map +1 -0
  302. package/lib/typescript/commonjs/toast/ToastIcon.d.ts +9 -0
  303. package/lib/typescript/commonjs/toast/ToastIcon.d.ts.map +1 -0
  304. package/lib/typescript/commonjs/toast/ToastRow.d.ts +80 -0
  305. package/lib/typescript/commonjs/toast/ToastRow.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/toast/ToastSwipeHandler.d.ts +30 -0
  307. package/lib/typescript/commonjs/toast/ToastSwipeHandler.d.ts.map +1 -0
  308. package/lib/typescript/commonjs/toast/Toaster.d.ts +19 -0
  309. package/lib/typescript/commonjs/toast/Toaster.d.ts.map +1 -0
  310. package/lib/typescript/commonjs/toast/animations.d.ts +62 -0
  311. package/lib/typescript/commonjs/toast/animations.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/toast/constants.d.ts +39 -0
  313. package/lib/typescript/commonjs/toast/constants.d.ts.map +1 -0
  314. package/lib/typescript/commonjs/toast/context.d.ts +19 -0
  315. package/lib/typescript/commonjs/toast/context.d.ts.map +1 -0
  316. package/lib/typescript/commonjs/toast/index.d.ts +23 -76
  317. package/lib/typescript/commonjs/toast/index.d.ts.map +1 -1
  318. package/lib/typescript/commonjs/toast/position-utils.d.ts +30 -0
  319. package/lib/typescript/commonjs/toast/position-utils.d.ts.map +1 -0
  320. package/lib/typescript/commonjs/toast/positioner-utils.d.ts +72 -0
  321. package/lib/typescript/commonjs/toast/positioner-utils.d.ts.map +1 -0
  322. package/lib/typescript/commonjs/toast/toast-comparator.d.ts +12 -0
  323. package/lib/typescript/commonjs/toast/toast-comparator.d.ts.map +1 -0
  324. package/lib/typescript/commonjs/toast/toast-fns.d.ts +3 -0
  325. package/lib/typescript/commonjs/toast/toast-fns.d.ts.map +1 -0
  326. package/lib/typescript/commonjs/toast/toast-store.d.ts +52 -0
  327. package/lib/typescript/commonjs/toast/toast-store.d.ts.map +1 -0
  328. package/lib/typescript/commonjs/toast/toast-timers.d.ts +24 -0
  329. package/lib/typescript/commonjs/toast/toast-timers.d.ts.map +1 -0
  330. package/lib/typescript/commonjs/toast/types.d.ts +222 -5
  331. package/lib/typescript/commonjs/toast/types.d.ts.map +1 -1
  332. package/lib/typescript/commonjs/toast/use-animated-target.d.ts +7 -0
  333. package/lib/typescript/commonjs/toast/use-animated-target.d.ts.map +1 -0
  334. package/lib/typescript/commonjs/toast/use-app-state.d.ts +18 -0
  335. package/lib/typescript/commonjs/toast/use-app-state.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/toast/use-toast-colors.d.ts +22 -0
  337. package/lib/typescript/commonjs/toast/use-toast-colors.d.ts.map +1 -0
  338. package/lib/typescript/commonjs/toast/use-toast-position.d.ts +37 -0
  339. package/lib/typescript/commonjs/toast/use-toast-position.d.ts.map +1 -0
  340. package/lib/typescript/commonjs/tooltip/index.web.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
  342. package/lib/typescript/module/avatar-group/AvatarGroup.web.d.ts.map +1 -1
  343. package/lib/typescript/module/bottom-sheet/index.web.d.ts.map +1 -1
  344. package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
  345. package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
  346. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  347. package/lib/typescript/module/dialog/DialogHeader.d.ts.map +1 -1
  348. package/lib/typescript/module/index.d.ts +2 -1
  349. package/lib/typescript/module/index.d.ts.map +1 -1
  350. package/lib/typescript/module/index.web.d.ts +2 -1
  351. package/lib/typescript/module/index.web.d.ts.map +1 -1
  352. package/lib/typescript/module/menu/index.web.d.ts.map +1 -1
  353. package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
  354. package/lib/typescript/module/portal/index.d.ts.map +1 -1
  355. package/lib/typescript/module/progressive-blur/index.d.ts +23 -0
  356. package/lib/typescript/module/progressive-blur/index.d.ts.map +1 -0
  357. package/lib/typescript/module/progressive-blur/index.web.d.ts +30 -0
  358. package/lib/typescript/module/progressive-blur/index.web.d.ts.map +1 -0
  359. package/lib/typescript/module/progressive-blur/shared.d.ts +35 -0
  360. package/lib/typescript/module/progressive-blur/shared.d.ts.map +1 -0
  361. package/lib/typescript/module/progressive-blur/types.d.ts +21 -0
  362. package/lib/typescript/module/progressive-blur/types.d.ts.map +1 -0
  363. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  364. package/lib/typescript/module/slider/Slider.d.ts.map +1 -1
  365. package/lib/typescript/module/styles/web-view-style.d.ts +21 -0
  366. package/lib/typescript/module/styles/web-view-style.d.ts.map +1 -0
  367. package/lib/typescript/module/switch/Switch.d.ts.map +1 -1
  368. package/lib/typescript/module/tab-bar/TabBarBase.d.ts +36 -0
  369. package/lib/typescript/module/tab-bar/TabBarBase.d.ts.map +1 -0
  370. package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts +59 -0
  371. package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -0
  372. package/lib/typescript/module/tab-bar/expo-router/fading-tab-screen.d.ts +11 -0
  373. package/lib/typescript/module/tab-bar/expo-router/fading-tab-screen.d.ts.map +1 -0
  374. package/lib/typescript/module/tab-bar/expo-router/index.d.ts +14 -0
  375. package/lib/typescript/module/tab-bar/expo-router/index.d.ts.map +1 -0
  376. package/lib/typescript/module/tab-bar/glyph.d.ts +6 -0
  377. package/lib/typescript/module/tab-bar/glyph.d.ts.map +1 -0
  378. package/lib/typescript/module/tab-bar/glyph.native.d.ts +6 -0
  379. package/lib/typescript/module/tab-bar/glyph.native.d.ts.map +1 -0
  380. package/lib/typescript/module/tab-bar/index.d.ts +12 -0
  381. package/lib/typescript/module/tab-bar/index.d.ts.map +1 -0
  382. package/lib/typescript/module/tab-bar/index.web.d.ts +12 -0
  383. package/lib/typescript/module/tab-bar/index.web.d.ts.map +1 -0
  384. package/lib/typescript/module/tab-bar/minimize-context.d.ts +51 -0
  385. package/lib/typescript/module/tab-bar/minimize-context.d.ts.map +1 -0
  386. package/lib/typescript/module/tab-bar/shared.d.ts +93 -0
  387. package/lib/typescript/module/tab-bar/shared.d.ts.map +1 -0
  388. package/lib/typescript/module/tab-bar/surface.d.ts +6 -0
  389. package/lib/typescript/module/tab-bar/surface.d.ts.map +1 -0
  390. package/lib/typescript/module/tab-bar/surface.native.d.ts +6 -0
  391. package/lib/typescript/module/tab-bar/surface.native.d.ts.map +1 -0
  392. package/lib/typescript/module/tab-bar/surface.web.d.ts +6 -0
  393. package/lib/typescript/module/tab-bar/surface.web.d.ts.map +1 -0
  394. package/lib/typescript/module/tab-bar/types.d.ts +85 -0
  395. package/lib/typescript/module/tab-bar/types.d.ts.map +1 -0
  396. package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
  397. package/lib/typescript/module/toast/Positioner.d.ts +21 -0
  398. package/lib/typescript/module/toast/Positioner.d.ts.map +1 -0
  399. package/lib/typescript/module/toast/ToastContent.d.ts +14 -0
  400. package/lib/typescript/module/toast/ToastContent.d.ts.map +1 -0
  401. package/lib/typescript/module/toast/ToastHost.d.ts +6 -0
  402. package/lib/typescript/module/toast/ToastHost.d.ts.map +1 -0
  403. package/lib/typescript/module/toast/ToastHost.native.d.ts +6 -0
  404. package/lib/typescript/module/toast/ToastHost.native.d.ts.map +1 -0
  405. package/lib/typescript/module/toast/ToastIcon.d.ts +9 -0
  406. package/lib/typescript/module/toast/ToastIcon.d.ts.map +1 -0
  407. package/lib/typescript/module/toast/ToastRow.d.ts +80 -0
  408. package/lib/typescript/module/toast/ToastRow.d.ts.map +1 -0
  409. package/lib/typescript/module/toast/ToastSwipeHandler.d.ts +30 -0
  410. package/lib/typescript/module/toast/ToastSwipeHandler.d.ts.map +1 -0
  411. package/lib/typescript/module/toast/Toaster.d.ts +19 -0
  412. package/lib/typescript/module/toast/Toaster.d.ts.map +1 -0
  413. package/lib/typescript/module/toast/animations.d.ts +62 -0
  414. package/lib/typescript/module/toast/animations.d.ts.map +1 -0
  415. package/lib/typescript/module/toast/constants.d.ts +39 -0
  416. package/lib/typescript/module/toast/constants.d.ts.map +1 -0
  417. package/lib/typescript/module/toast/context.d.ts +19 -0
  418. package/lib/typescript/module/toast/context.d.ts.map +1 -0
  419. package/lib/typescript/module/toast/index.d.ts +23 -76
  420. package/lib/typescript/module/toast/index.d.ts.map +1 -1
  421. package/lib/typescript/module/toast/position-utils.d.ts +30 -0
  422. package/lib/typescript/module/toast/position-utils.d.ts.map +1 -0
  423. package/lib/typescript/module/toast/positioner-utils.d.ts +72 -0
  424. package/lib/typescript/module/toast/positioner-utils.d.ts.map +1 -0
  425. package/lib/typescript/module/toast/toast-comparator.d.ts +12 -0
  426. package/lib/typescript/module/toast/toast-comparator.d.ts.map +1 -0
  427. package/lib/typescript/module/toast/toast-fns.d.ts +3 -0
  428. package/lib/typescript/module/toast/toast-fns.d.ts.map +1 -0
  429. package/lib/typescript/module/toast/toast-store.d.ts +52 -0
  430. package/lib/typescript/module/toast/toast-store.d.ts.map +1 -0
  431. package/lib/typescript/module/toast/toast-timers.d.ts +24 -0
  432. package/lib/typescript/module/toast/toast-timers.d.ts.map +1 -0
  433. package/lib/typescript/module/toast/types.d.ts +222 -5
  434. package/lib/typescript/module/toast/types.d.ts.map +1 -1
  435. package/lib/typescript/module/toast/use-animated-target.d.ts +7 -0
  436. package/lib/typescript/module/toast/use-animated-target.d.ts.map +1 -0
  437. package/lib/typescript/module/toast/use-app-state.d.ts +18 -0
  438. package/lib/typescript/module/toast/use-app-state.d.ts.map +1 -0
  439. package/lib/typescript/module/toast/use-toast-colors.d.ts +22 -0
  440. package/lib/typescript/module/toast/use-toast-colors.d.ts.map +1 -0
  441. package/lib/typescript/module/toast/use-toast-position.d.ts +37 -0
  442. package/lib/typescript/module/toast/use-toast-position.d.ts.map +1 -0
  443. package/lib/typescript/module/tooltip/index.web.d.ts.map +1 -1
  444. package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
  445. package/package.json +63 -25
  446. package/src/__tests__/TabBar.test.tsx +342 -0
  447. package/src/__tests__/TabBarReanimatedDeps.test.ts +130 -0
  448. package/src/__tests__/TabBarWebFork.test.ts +197 -0
  449. package/src/__tests__/ToastContent.test.tsx +192 -0
  450. package/src/__tests__/ToastHostWebFork.test.ts +155 -0
  451. package/src/__tests__/Toaster.test.tsx +527 -0
  452. package/src/__tests__/animated-style-deps.test.ts +156 -0
  453. package/src/__tests__/toast-animations.test.ts +98 -0
  454. package/src/__tests__/toast-comparator.test.ts +131 -0
  455. package/src/__tests__/toast-enter-driver.test.ts +147 -0
  456. package/src/__tests__/toast-fns.test.ts +240 -0
  457. package/src/__tests__/toast-position-utils.test.ts +259 -0
  458. package/src/__tests__/toast-positioner-utils.test.ts +214 -0
  459. package/src/__tests__/toast-store.test.ts +622 -0
  460. package/src/__tests__/toast-timers.test.ts +163 -0
  461. package/src/__tests__/use-animated-target.test.tsx +60 -0
  462. package/src/__tests__/use-app-state.test.tsx +127 -0
  463. package/src/__tests__/use-toast-colors.test.tsx +189 -0
  464. package/src/__tests__/web-position-fixed.test.ts +70 -0
  465. package/src/avatar-group/AvatarGroup.web.tsx +2 -1
  466. package/src/bottom-sheet/index.web.tsx +4 -3
  467. package/src/context-menu/index.web.tsx +6 -6
  468. package/src/dialog/Dialog.tsx +7 -4
  469. package/src/dialog/Dialog.web.tsx +14 -14
  470. package/src/dialog/DialogHeader.tsx +72 -17
  471. package/src/index.ts +4 -1
  472. package/src/index.web.ts +4 -1
  473. package/src/menu/index.web.tsx +5 -5
  474. package/src/popover/index.web.tsx +8 -6
  475. package/src/portal/index.tsx +4 -1
  476. package/src/progressive-blur/index.tsx +78 -0
  477. package/src/progressive-blur/index.web.tsx +65 -0
  478. package/src/progressive-blur/shared.ts +81 -0
  479. package/src/progressive-blur/types.ts +21 -0
  480. package/src/select/index.web.tsx +5 -5
  481. package/src/slider/Slider.tsx +3 -5
  482. package/src/styles/web-view-style.ts +21 -0
  483. package/src/switch/Switch.tsx +4 -5
  484. package/src/tab-bar/TabBar.stories.tsx +217 -0
  485. package/src/tab-bar/TabBarBase.tsx +517 -0
  486. package/src/tab-bar/expo-router/RouterTabBar.tsx +80 -0
  487. package/src/tab-bar/expo-router/fading-tab-screen.tsx +109 -0
  488. package/src/tab-bar/expo-router/index.ts +13 -0
  489. package/src/tab-bar/glyph.native.tsx +46 -0
  490. package/src/tab-bar/glyph.tsx +31 -0
  491. package/src/tab-bar/index.ts +32 -0
  492. package/src/tab-bar/index.web.tsx +34 -0
  493. package/src/tab-bar/minimize-context.tsx +117 -0
  494. package/src/tab-bar/shared.ts +159 -0
  495. package/src/tab-bar/surface.native.tsx +60 -0
  496. package/src/tab-bar/surface.tsx +47 -0
  497. package/src/tab-bar/surface.web.tsx +56 -0
  498. package/src/tab-bar/types.ts +88 -0
  499. package/src/tabs/Tabs.tsx +3 -5
  500. package/src/toast/Positioner.tsx +121 -0
  501. package/src/toast/Toast.stories.tsx +292 -65
  502. package/src/toast/ToastContent.tsx +405 -0
  503. package/src/toast/ToastHost.native.tsx +31 -0
  504. package/src/toast/ToastHost.tsx +67 -0
  505. package/src/toast/ToastIcon.tsx +55 -0
  506. package/src/toast/ToastRow.tsx +485 -0
  507. package/src/toast/ToastSwipeHandler.tsx +222 -0
  508. package/src/toast/Toaster.tsx +259 -0
  509. package/src/toast/animations.ts +313 -0
  510. package/src/toast/constants.ts +76 -0
  511. package/src/toast/context.tsx +44 -0
  512. package/src/toast/index.tsx +47 -123
  513. package/src/toast/position-utils.ts +149 -0
  514. package/src/toast/positioner-utils.ts +142 -0
  515. package/src/toast/toast-comparator.ts +41 -0
  516. package/src/toast/toast-fns.ts +104 -0
  517. package/src/toast/toast-store.ts +432 -0
  518. package/src/toast/toast-timers.ts +124 -0
  519. package/src/toast/types.ts +301 -5
  520. package/src/toast/use-animated-target.ts +61 -0
  521. package/src/toast/use-app-state.ts +77 -0
  522. package/src/toast/use-toast-colors.ts +133 -0
  523. package/src/toast/use-toast-position.ts +46 -0
  524. package/src/tooltip/index.web.tsx +2 -1
  525. package/src/zoomable-image-gallery/ZoomableImageGallery.stories.tsx +134 -0
  526. package/src/zoomable-image-gallery/ZoomableImageGallery.tsx +50 -27
  527. package/lib/commonjs/toast/Toast.js +0 -272
  528. package/lib/commonjs/toast/Toast.js.map +0 -1
  529. package/lib/commonjs/toast/const.js +0 -8
  530. package/lib/commonjs/toast/const.js.map +0 -1
  531. package/lib/commonjs/toast/index.web.js +0 -114
  532. package/lib/commonjs/toast/index.web.js.map +0 -1
  533. package/lib/commonjs/toast/sonner/index.js +0 -9
  534. package/lib/commonjs/toast/sonner/index.js.map +0 -1
  535. package/lib/commonjs/toast/sonner/index.web.js +0 -9
  536. package/lib/commonjs/toast/sonner/index.web.js.map +0 -1
  537. package/lib/module/toast/Toast.js +0 -263
  538. package/lib/module/toast/Toast.js.map +0 -1
  539. package/lib/module/toast/const.js +0 -4
  540. package/lib/module/toast/const.js.map +0 -1
  541. package/lib/module/toast/index.web.js +0 -74
  542. package/lib/module/toast/index.web.js.map +0 -1
  543. package/lib/module/toast/sonner/index.js +0 -5
  544. package/lib/module/toast/sonner/index.js.map +0 -1
  545. package/lib/module/toast/sonner/index.web.js +0 -5
  546. package/lib/module/toast/sonner/index.web.js.map +0 -1
  547. package/lib/typescript/commonjs/toast/Toast.d.ts +0 -23
  548. package/lib/typescript/commonjs/toast/Toast.d.ts.map +0 -1
  549. package/lib/typescript/commonjs/toast/const.d.ts +0 -2
  550. package/lib/typescript/commonjs/toast/const.d.ts.map +0 -1
  551. package/lib/typescript/commonjs/toast/index.web.d.ts +0 -29
  552. package/lib/typescript/commonjs/toast/index.web.d.ts.map +0 -1
  553. package/lib/typescript/commonjs/toast/sonner/index.d.ts +0 -2
  554. package/lib/typescript/commonjs/toast/sonner/index.d.ts.map +0 -1
  555. package/lib/typescript/commonjs/toast/sonner/index.web.d.ts +0 -2
  556. package/lib/typescript/commonjs/toast/sonner/index.web.d.ts.map +0 -1
  557. package/lib/typescript/module/toast/Toast.d.ts +0 -23
  558. package/lib/typescript/module/toast/Toast.d.ts.map +0 -1
  559. package/lib/typescript/module/toast/const.d.ts +0 -2
  560. package/lib/typescript/module/toast/const.d.ts.map +0 -1
  561. package/lib/typescript/module/toast/index.web.d.ts +0 -29
  562. package/lib/typescript/module/toast/index.web.d.ts.map +0 -1
  563. package/lib/typescript/module/toast/sonner/index.d.ts +0 -2
  564. package/lib/typescript/module/toast/sonner/index.d.ts.map +0 -1
  565. package/lib/typescript/module/toast/sonner/index.web.d.ts +0 -2
  566. package/lib/typescript/module/toast/sonner/index.web.d.ts.map +0 -1
  567. package/src/toast/Toast.tsx +0 -271
  568. package/src/toast/const.ts +0 -1
  569. package/src/toast/index.web.tsx +0 -101
  570. package/src/toast/sonner/index.ts +0 -3
  571. package/src/toast/sonner/index.web.ts +0 -3
@@ -5,6 +5,8 @@ import { useTheme } from '../theme/use-theme';
5
5
  import { Text } from '../typography';
6
6
  import { Portal } from '../portal/index.web';
7
7
  import { createOverlayZIndex } from '../styles/z-index';
8
+ import { WEB_POSITION_FIXED } from '../styles/web-view-style';
9
+ import { bloomShadowStyle } from '../design-tokens/shadows';
8
10
  import { RadioIndicator } from '../radio-indicator';
9
11
  import { useInteractionState } from '../hooks/useInteractionState';
10
12
  import {
@@ -201,7 +203,7 @@ export function SelectContent<T>({
201
203
  ? theme.colors.backgroundSecondary
202
204
  : theme.colors.background,
203
205
  borderColor: theme.colors.borderLight,
204
- shadowColor: theme.colors.shadow,
206
+ ...bloomShadowStyle('m'),
205
207
  },
206
208
  ]}
207
209
  >
@@ -331,7 +333,7 @@ const styles = StyleSheet.create({
331
333
  fontSize: 16,
332
334
  },
333
335
  backdrop: {
334
- position: 'fixed' as 'absolute',
336
+ position: WEB_POSITION_FIXED,
335
337
  top: 0,
336
338
  left: 0,
337
339
  right: 0,
@@ -348,9 +350,7 @@ const styles = StyleSheet.create({
348
350
  overflow: 'hidden',
349
351
  padding: 4,
350
352
  minWidth: 180,
351
- shadowOpacity: 0.15,
352
- shadowRadius: 12,
353
- shadowOffset: { width: 0, height: 4 },
353
+ // Overlay elevation applied at the usage site via `bloomShadowStyle('m')`.
354
354
  // Opt back in from the Portal root's `pointer-events: none`.
355
355
  pointerEvents: 'auto',
356
356
  },
@@ -12,6 +12,7 @@ import {
12
12
 
13
13
  import { useTheme } from '../theme/use-theme';
14
14
  import { animation } from '../styles/tokens';
15
+ import { bloomShadowStyle } from '../design-tokens/shadows';
15
16
  import type { SliderProps } from './types';
16
17
 
17
18
  function clamp(v: number, min: number, max: number): number {
@@ -236,7 +237,6 @@ const SliderComponent = function Slider({
236
237
  backgroundColor: thumbColor,
237
238
  left: thumbLeft,
238
239
  transform: [{ scale: thumbScale }],
239
- shadowColor: theme.colors.shadow,
240
240
  },
241
241
  ]}
242
242
  />
@@ -261,10 +261,8 @@ const styles = StyleSheet.create({
261
261
  thumb: {
262
262
  position: 'absolute',
263
263
  top: '50%',
264
- shadowOffset: { width: 0, height: 1 },
265
- shadowOpacity: 0.2,
266
- shadowRadius: 2,
267
- elevation: 2,
264
+ // Subtle raise (`shadow-s`) — `boxShadow` on web, RN shadow/elevation on native.
265
+ ...bloomShadowStyle('s'),
268
266
  },
269
267
  disabled: {
270
268
  opacity: 0.5,
@@ -0,0 +1,21 @@
1
+ import type { ViewStyle } from 'react-native';
2
+
3
+ /**
4
+ * `position: fixed`, typed for React Native's `ViewStyle`.
5
+ *
6
+ * RN types `position` as `'absolute' | 'relative' | 'static'` — what Yoga
7
+ * implements — while react-native-web renders real CSS, where `'fixed'` is the
8
+ * only way for a portaled overlay to anchor to the VIEWPORT instead of the
9
+ * nearest positioned ancestor. This is the ONE place Bloom crosses between the
10
+ * two, so web forks import it instead of writing their own cast.
11
+ *
12
+ * Deliberately not a `declare module 'react-native'` augmentation, for two
13
+ * reasons. It does not work: `position` lives on `interface FlexStyle`, which RN
14
+ * re-exports from a submodule, so augmenting `'react-native'` neither merges nor
15
+ * errors — verified with tsc, the identical `TS2322` appears with and without it,
16
+ * which makes it strictly worse than a cast because it looks like a fix. And even
17
+ * if it worked, widening `ViewStyle` would ship through `/// <reference path>` to
18
+ * every consumer, so `position: 'fixed'` would start compiling in NATIVE code
19
+ * where Yoga silently ignores it.
20
+ */
21
+ export const WEB_POSITION_FIXED = 'fixed' as ViewStyle['position'];
@@ -3,6 +3,7 @@ import { Pressable, Animated, StyleSheet } from 'react-native';
3
3
 
4
4
  import { useTheme } from '../theme/use-theme';
5
5
  import { animation } from '../styles/tokens';
6
+ import { bloomShadowStyle } from '../design-tokens/shadows';
6
7
  import type { SwitchProps } from './types';
7
8
 
8
9
  const TRACK = { default: { w: 44, h: 26 }, sm: { w: 36, h: 22 } } as const;
@@ -128,10 +129,8 @@ const styles = StyleSheet.create({
128
129
  },
129
130
  thumb: {
130
131
  backgroundColor: '#fff',
131
- shadowColor: '#000',
132
- shadowOffset: { width: 0, height: 2 },
133
- shadowOpacity: 0.15,
134
- shadowRadius: 3,
135
- elevation: 3,
132
+ // Subtle raise (`shadow-s`) — `boxShadow` on web (RN-Web deprecated `shadow*`),
133
+ // RN elevation/shadow on native.
134
+ ...bloomShadowStyle('s'),
136
135
  },
137
136
  });
@@ -0,0 +1,217 @@
1
+ import React, { useState, type PropsWithChildren } from 'react';
2
+ import { ScrollView, Text, View } from 'react-native';
3
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
4
+ import Animated from 'react-native-reanimated';
5
+ import { SafeAreaProvider } from 'react-native-safe-area-context';
6
+ import type { Meta, StoryObj } from '@storybook/react-vite';
7
+
8
+ import * as Icons from '../icons';
9
+ import { useTheme } from '../theme/use-theme';
10
+ import { TabBar, TabBarButton, TabBarMinimizeProvider, useMinimizeOnScroll } from './index';
11
+ import type { TabBarItem, TabBarProps } from './types';
12
+
13
+ /**
14
+ * The floating tab bar, on the ROUTER-FREE core (`activeIndex` /
15
+ * `onIndexChange`). No expo-router anywhere — that is the point of the core
16
+ * layer, and it is what lets the family be exercised in a plain web bundle.
17
+ *
18
+ * Storybook resolves `./index` through its `.web.*`-first extension list, so
19
+ * these stories run the WEB fork (`surface.web.tsx`'s `backdrop-filter` glass
20
+ * and `progressive-blur/index.web.tsx`) against the REAL reanimated,
21
+ * gesture-handler and safe-area-context — no worklets babel plugin, exactly
22
+ * what every Oxy RN-Web app ships. That makes every animated path here
23
+ * observable rather than assumed:
24
+ *
25
+ * - **tap / scrub**: the highlight springs to the tapped tab, and follows the
26
+ * finger 1:1 while dragging across the bar
27
+ * - **minimize**: scrolling down shrinks the pill and fades the labels out
28
+ * - **glyph crossfade**: the active tint tracks the highlight, not the tap
29
+ *
30
+ * All of them are driven by shared values read inside `useAnimatedStyle`
31
+ * mappers, so if a dependency array is ever dropped (the web freeze-at-first-
32
+ * frame failure mode documented in `TabBarBase`) these stories visibly stop
33
+ * moving while nothing errors.
34
+ */
35
+ const meta: Meta<typeof TabBar> = {
36
+ title: 'Components/TabBar',
37
+ component: TabBar,
38
+ // The bar is a screen-level element: its highlight geometry comes from
39
+ // `useWindowDimensions()`, so the demo has to be exactly window-wide or the
40
+ // pill drifts out of step with the tabs and reads as a component bug.
41
+ // `fullscreen` drops Storybook's own canvas padding; the preview decorator's
42
+ // padding is cancelled by `Screen`'s negative margin.
43
+ parameters: { layout: 'fullscreen' },
44
+ };
45
+
46
+ export default meta;
47
+
48
+ type Story = StoryObj<typeof TabBar>;
49
+
50
+ const ITEMS: TabBarItem[] = [
51
+ { name: 'home', label: 'Home', icon: <Icons.Home_Stroke2_Corner0_Rounded /> },
52
+ { name: 'search', label: 'Search', icon: <Icons.MagnifyingGlass_Stroke2_Corner0_Rounded /> },
53
+ { name: 'inbox', label: 'Inbox', icon: <Icons.Message_Stroke2_Corner0_Rounded /> },
54
+ { name: 'profile', label: 'Profile', icon: <Icons.Person_Stroke2_Corner0_Rounded /> },
55
+ ];
56
+
57
+ /** Padding the preview decorator puts around every story (`.storybook/preview.tsx`). */
58
+ const PREVIEW_PADDING = 24;
59
+ /** Height of the demo viewport — a phone-ish screen for the bar to float over. */
60
+ const SCREEN_HEIGHT = 560;
61
+ /** Keeps the last rows scrollable clear of the pill. */
62
+ const CONTENT_BOTTOM_PAD = 140;
63
+
64
+ const ROWS = Array.from({ length: 18 }, (_, index) => index + 1);
65
+
66
+ /**
67
+ * The demo viewport.
68
+ *
69
+ * It bleeds past the preview decorator's padding on purpose: the bar is a
70
+ * screen-level element and derives its highlight geometry from
71
+ * `useWindowDimensions()`, so anything narrower than the window would put the
72
+ * pill out of step with the tabs and look like a component bug.
73
+ *
74
+ * `SafeAreaProvider` is here because `TabBar` reads safe-area insets to sit
75
+ * above the home indicator; a consuming app already has one at its root, the
76
+ * Storybook preview does not.
77
+ */
78
+ function Screen({ children }: PropsWithChildren) {
79
+ const { colors } = useTheme();
80
+ return (
81
+ <SafeAreaProvider
82
+ style={{ flex: 0, alignSelf: 'stretch', marginHorizontal: -PREVIEW_PADDING }}
83
+ >
84
+ <GestureHandlerRootView
85
+ style={{
86
+ height: SCREEN_HEIGHT,
87
+ backgroundColor: colors.background,
88
+ overflow: 'hidden',
89
+ }}
90
+ >
91
+ {children}
92
+ </GestureHandlerRootView>
93
+ </SafeAreaProvider>
94
+ );
95
+ }
96
+
97
+ /** Tall themed filler so there is something for the bar to float over — and to scroll. */
98
+ function Feed({ heading, caption }: { heading: string; caption: string }) {
99
+ const { colors } = useTheme();
100
+ return (
101
+ <>
102
+ <Text style={{ color: colors.text, fontSize: 24, fontWeight: '700' }}>{heading}</Text>
103
+ <Text style={{ color: colors.textSecondary, fontSize: 14 }}>{caption}</Text>
104
+ {ROWS.map((row) => (
105
+ <View
106
+ key={row}
107
+ style={{
108
+ padding: 16,
109
+ borderRadius: 16,
110
+ borderWidth: 1,
111
+ borderColor: colors.border,
112
+ backgroundColor: colors.backgroundSecondary,
113
+ gap: 4,
114
+ }}
115
+ >
116
+ <Text style={{ color: colors.text, fontSize: 15, fontWeight: '600' }}>Item {row}</Text>
117
+ <Text style={{ color: colors.textSecondary, fontSize: 13 }}>
118
+ Scrolls under the glass so the surface has something to refract.
119
+ </Text>
120
+ </View>
121
+ ))}
122
+ </>
123
+ );
124
+ }
125
+
126
+ const CONTENT_STYLE = { padding: 16, paddingBottom: CONTENT_BOTTOM_PAD, gap: 12 } as const;
127
+
128
+ /** Controlled core: local state in, `onIndexChange` out. No router involved. */
129
+ function ControlledBar(props: TabBarProps) {
130
+ return (
131
+ <TabBar {...props}>
132
+ {ITEMS.map((item, index) => (
133
+ <TabBarButton key={item.name} item={item} index={index} />
134
+ ))}
135
+ </TabBar>
136
+ );
137
+ }
138
+
139
+ function DefaultScreen() {
140
+ const [activeIndex, setActiveIndex] = useState(0);
141
+ return (
142
+ <Screen>
143
+ <ScrollView contentContainerStyle={CONTENT_STYLE}>
144
+ <Feed
145
+ heading={ITEMS[activeIndex]?.label ?? 'Feed'}
146
+ caption="Tap a tab, or press and drag across the bar to scrub the highlight."
147
+ />
148
+ </ScrollView>
149
+ <ControlledBar activeIndex={activeIndex} onIndexChange={setActiveIndex} />
150
+ </Screen>
151
+ );
152
+ }
153
+
154
+ /**
155
+ * Body of {@link MinimizeOnScroll} — a separate component because
156
+ * `useMinimizeOnScroll()` has to run INSIDE `TabBarMinimizeProvider` to share
157
+ * the bar's progress value. Called outside it, the hook silently falls back to
158
+ * its own local shared value and nothing minimizes.
159
+ */
160
+ function MinimizeScreen() {
161
+ const [activeIndex, setActiveIndex] = useState(0);
162
+ const onScroll = useMinimizeOnScroll();
163
+ return (
164
+ <Screen>
165
+ <Animated.ScrollView
166
+ onScroll={onScroll}
167
+ scrollEventThrottle={16}
168
+ contentContainerStyle={CONTENT_STYLE}
169
+ >
170
+ <Feed
171
+ heading="Minimize on scroll"
172
+ caption="Scroll down: the pill shrinks in both dimensions and the labels fade out. Scroll up, or tap a tab, and it expands again."
173
+ />
174
+ </Animated.ScrollView>
175
+ <ControlledBar activeIndex={activeIndex} onIndexChange={setActiveIndex} />
176
+ </Screen>
177
+ );
178
+ }
179
+
180
+ function ThemeOverrideScreen() {
181
+ const { colors } = useTheme();
182
+ const [activeIndex, setActiveIndex] = useState(1);
183
+ return (
184
+ <Screen>
185
+ <ScrollView contentContainerStyle={CONTENT_STYLE}>
186
+ <Feed
187
+ heading="Theme override"
188
+ caption="Only the highlight and the active tint are overridden — the inactive tint, the glass tint and the solid fallback still come from the active preset."
189
+ />
190
+ </ScrollView>
191
+ <ControlledBar
192
+ activeIndex={activeIndex}
193
+ onIndexChange={setActiveIndex}
194
+ theme={{ highlight: colors.primary, activeTint: colors.primaryForeground }}
195
+ />
196
+ </Screen>
197
+ );
198
+ }
199
+
200
+ /** Four tabs, controlled highlight, floating over scrollable content. */
201
+ export const Default: Story = {
202
+ render: () => <DefaultScreen />,
203
+ };
204
+
205
+ /** The Revolut-style minimize: the shared progress value driven by a scroll handler. */
206
+ export const MinimizeOnScroll: Story = {
207
+ render: () => (
208
+ <TabBarMinimizeProvider>
209
+ <MinimizeScreen />
210
+ </TabBarMinimizeProvider>
211
+ ),
212
+ };
213
+
214
+ /** A partial `theme` override on top of the token-derived defaults. */
215
+ export const ThemeOverride: Story = {
216
+ render: () => <ThemeOverrideScreen />,
217
+ };