@oxy.so/bloom 4.5.0 → 4.6.1

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 (621) hide show
  1. package/README.md +1 -1
  2. package/docs/adoption-matrix.mdx +12 -12
  3. package/docs/code.mdx +12 -0
  4. package/docs/context-menu.mdx +2 -0
  5. package/docs/dropdown-menu.mdx +21 -0
  6. package/docs/icons.mdx +2 -2
  7. package/docs/menubar.mdx +6 -2
  8. package/docs/popover.mdx +4 -2
  9. package/docs/segmented-control.mdx +12 -0
  10. package/docs/select.mdx +19 -0
  11. package/docs/tabs.mdx +12 -0
  12. package/lib/commonjs/agent-chat/index.web.js.map +1 -1
  13. package/lib/commonjs/ai-chat/index.web.js.map +1 -1
  14. package/lib/commonjs/alert-dialog/index.web.js +10 -1
  15. package/lib/commonjs/alert-dialog/index.web.js.map +1 -1
  16. package/lib/commonjs/avatar-group/index.web.js.map +1 -1
  17. package/lib/commonjs/bottom-sheet/index.web.js.map +1 -1
  18. package/lib/commonjs/code/index.js +13 -0
  19. package/lib/commonjs/code/index.js.map +1 -1
  20. package/lib/commonjs/command/index.web.js +5 -0
  21. package/lib/commonjs/command/index.web.js.map +1 -1
  22. package/lib/commonjs/composer-loader/ComposerLoader.web.js +9 -0
  23. package/lib/commonjs/composer-loader/ComposerLoader.web.js.map +1 -1
  24. package/lib/commonjs/composer-loader/index.web.js.map +1 -1
  25. package/lib/commonjs/composer-panel/index.web.js.map +1 -1
  26. package/lib/commonjs/connection-dots/index.web.js.map +1 -1
  27. package/lib/commonjs/connection-status/index.web.js.map +1 -1
  28. package/lib/commonjs/content-panel/index.web.js.map +1 -1
  29. package/lib/commonjs/context-menu/ContextMenu.web.js +22 -4
  30. package/lib/commonjs/context-menu/ContextMenu.web.js.map +1 -1
  31. package/lib/commonjs/context-menu/context.js.map +1 -1
  32. package/lib/commonjs/context-menu/index.web.js.map +1 -1
  33. package/lib/commonjs/dialog/Dialog.web.js +14 -0
  34. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  35. package/lib/commonjs/dialog/index.web.js.map +1 -1
  36. package/lib/commonjs/dropdown-menu/DropdownMenu.web.js +22 -2
  37. package/lib/commonjs/dropdown-menu/DropdownMenu.web.js.map +1 -1
  38. package/lib/commonjs/dropdown-menu/index.web.js.map +1 -1
  39. package/lib/commonjs/floating/FloatingPanel.js +42 -33
  40. package/lib/commonjs/floating/FloatingPanel.js.map +1 -1
  41. package/lib/commonjs/floating/escape-stack.js +90 -0
  42. package/lib/commonjs/floating/escape-stack.js.map +1 -0
  43. package/lib/commonjs/floating/menu-keyboard.js +238 -0
  44. package/lib/commonjs/floating/menu-keyboard.js.map +1 -0
  45. package/lib/commonjs/floating/menu-sub-flyout.js +28 -16
  46. package/lib/commonjs/floating/menu-sub-flyout.js.map +1 -1
  47. package/lib/commonjs/fonts/index.web.js.map +1 -1
  48. package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js +10 -0
  49. package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
  50. package/lib/commonjs/frosted-icon-button/index.web.js.map +1 -1
  51. package/lib/commonjs/hooks/roving-focus.js +192 -0
  52. package/lib/commonjs/hooks/roving-focus.js.map +1 -0
  53. package/lib/commonjs/hover-card/index.web.js.map +1 -1
  54. package/lib/commonjs/icons/remix/RiBookReadLine.js +12 -0
  55. package/lib/commonjs/icons/remix/RiBookReadLine.js.map +1 -0
  56. package/lib/commonjs/icons/remix/RiBugLine.js +12 -0
  57. package/lib/commonjs/icons/remix/RiBugLine.js.map +1 -0
  58. package/lib/commonjs/icons/remix/RiChat1Line.js +12 -0
  59. package/lib/commonjs/icons/remix/RiChat1Line.js.map +1 -0
  60. package/lib/commonjs/icons/remix/RiCloudLine.js +12 -0
  61. package/lib/commonjs/icons/remix/RiCloudLine.js.map +1 -0
  62. package/lib/commonjs/icons/remix/RiCodeLine.js +12 -0
  63. package/lib/commonjs/icons/remix/RiCodeLine.js.map +1 -0
  64. package/lib/commonjs/icons/remix/RiCpuLine.js +12 -0
  65. package/lib/commonjs/icons/remix/RiCpuLine.js.map +1 -0
  66. package/lib/commonjs/icons/remix/RiFloodLine.js +12 -0
  67. package/lib/commonjs/icons/remix/RiFloodLine.js.map +1 -0
  68. package/lib/commonjs/icons/remix/RiLockUnlockLine.js +12 -0
  69. package/lib/commonjs/icons/remix/RiLockUnlockLine.js.map +1 -0
  70. package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js +12 -0
  71. package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
  72. package/lib/commonjs/icons/remix/RiPlayCircleLine.js +12 -0
  73. package/lib/commonjs/icons/remix/RiPlayCircleLine.js.map +1 -0
  74. package/lib/commonjs/icons/remix/RiRocket2Line.js +12 -0
  75. package/lib/commonjs/icons/remix/RiRocket2Line.js.map +1 -0
  76. package/lib/commonjs/icons/remix/RiServerLine.js +12 -0
  77. package/lib/commonjs/icons/remix/RiServerLine.js.map +1 -0
  78. package/lib/commonjs/icons/remix/RiShareBoxLine.js +12 -0
  79. package/lib/commonjs/icons/remix/RiShareBoxLine.js.map +1 -0
  80. package/lib/commonjs/icons/remix/RiTv2Line.js +12 -0
  81. package/lib/commonjs/icons/remix/RiTv2Line.js.map +1 -0
  82. package/lib/commonjs/icons/remix/index.js +98 -0
  83. package/lib/commonjs/icons/remix/index.js.map +1 -1
  84. package/lib/commonjs/list/index.web.js.map +1 -1
  85. package/lib/commonjs/loading/Loading.js +21 -157
  86. package/lib/commonjs/loading/Loading.js.map +1 -1
  87. package/lib/commonjs/loading/Loading.web.js +23 -157
  88. package/lib/commonjs/loading/Loading.web.js.map +1 -1
  89. package/lib/commonjs/loading/LoadingBase.js +202 -0
  90. package/lib/commonjs/loading/LoadingBase.js.map +1 -0
  91. package/lib/commonjs/loading/index.web.js.map +1 -1
  92. package/lib/commonjs/media-flight/index.web.js.map +1 -1
  93. package/lib/commonjs/menubar/Menubar.js +31 -123
  94. package/lib/commonjs/menubar/Menubar.js.map +1 -1
  95. package/lib/commonjs/menubar/Menubar.web.js +33 -114
  96. package/lib/commonjs/menubar/Menubar.web.js.map +1 -1
  97. package/lib/commonjs/menubar/MenubarBase.js +154 -0
  98. package/lib/commonjs/menubar/MenubarBase.js.map +1 -0
  99. package/lib/commonjs/menubar/index.web.js.map +1 -1
  100. package/lib/commonjs/popover/index.web.js.map +1 -1
  101. package/lib/commonjs/popover/parts.js +69 -11
  102. package/lib/commonjs/popover/parts.js.map +1 -1
  103. package/lib/commonjs/popover/surface.js +39 -13
  104. package/lib/commonjs/popover/surface.js.map +1 -1
  105. package/lib/commonjs/portal/index.web.js.map +1 -1
  106. package/lib/commonjs/progressive-blur/index.web.js.map +1 -1
  107. package/lib/commonjs/scroll/index.web.js.map +1 -1
  108. package/lib/commonjs/segmented-control/SegmentedControl.js +36 -1
  109. package/lib/commonjs/segmented-control/SegmentedControl.js.map +1 -1
  110. package/lib/commonjs/select/Select.js +6 -81
  111. package/lib/commonjs/select/Select.js.map +1 -1
  112. package/lib/commonjs/select/Select.web.js +147 -85
  113. package/lib/commonjs/select/Select.web.js.map +1 -1
  114. package/lib/commonjs/select/index.js +4 -4
  115. package/lib/commonjs/select/index.js.map +1 -1
  116. package/lib/commonjs/select/index.web.js +4 -4
  117. package/lib/commonjs/select/index.web.js.map +1 -1
  118. package/lib/commonjs/select/shared.js +110 -5
  119. package/lib/commonjs/select/shared.js.map +1 -1
  120. package/lib/commonjs/sidebar/SidebarTeamMenu.js +1 -1
  121. package/lib/commonjs/sidebar/SidebarTeamMenu.js.map +1 -1
  122. package/lib/commonjs/sidebar/SidebarUserMenu.js +1 -1
  123. package/lib/commonjs/sidebar/SidebarUserMenu.js.map +1 -1
  124. package/lib/commonjs/sidebar/parts.js +9 -9
  125. package/lib/commonjs/sidebar/parts.js.map +1 -1
  126. package/lib/commonjs/surfaces/SurfaceHost.js +6 -0
  127. package/lib/commonjs/surfaces/SurfaceHost.js.map +1 -1
  128. package/lib/commonjs/surfaces/index.web.js +14 -4
  129. package/lib/commonjs/surfaces/index.web.js.map +1 -1
  130. package/lib/commonjs/tab-bar/index.web.js +13 -10
  131. package/lib/commonjs/tab-bar/index.web.js.map +1 -1
  132. package/lib/commonjs/tabs/Tabs.js +49 -2
  133. package/lib/commonjs/tabs/Tabs.js.map +1 -1
  134. package/lib/commonjs/theme/color-scope/index.web.js.map +1 -1
  135. package/lib/commonjs/theme/persistence.js +12 -1
  136. package/lib/commonjs/theme/persistence.js.map +1 -1
  137. package/lib/commonjs/theme/seed-scope/index.web.js.map +1 -1
  138. package/lib/commonjs/tooltip/index.web.js.map +1 -1
  139. package/lib/module/agent-chat/index.web.js +5 -3
  140. package/lib/module/agent-chat/index.web.js.map +1 -1
  141. package/lib/module/ai-chat/index.web.js +5 -2
  142. package/lib/module/ai-chat/index.web.js.map +1 -1
  143. package/lib/module/alert-dialog/index.web.js +10 -1
  144. package/lib/module/alert-dialog/index.web.js.map +1 -1
  145. package/lib/module/avatar-group/index.web.js +5 -0
  146. package/lib/module/avatar-group/index.web.js.map +1 -1
  147. package/lib/module/bottom-sheet/index.web.js +5 -0
  148. package/lib/module/bottom-sheet/index.web.js.map +1 -1
  149. package/lib/module/code/index.js +1 -0
  150. package/lib/module/code/index.js.map +1 -1
  151. package/lib/module/command/index.web.js +5 -0
  152. package/lib/module/command/index.web.js.map +1 -1
  153. package/lib/module/composer-loader/ComposerLoader.web.js +8 -0
  154. package/lib/module/composer-loader/ComposerLoader.web.js.map +1 -1
  155. package/lib/module/composer-loader/index.web.js +5 -2
  156. package/lib/module/composer-loader/index.web.js.map +1 -1
  157. package/lib/module/composer-panel/index.web.js +5 -3
  158. package/lib/module/composer-panel/index.web.js.map +1 -1
  159. package/lib/module/connection-dots/index.web.js +5 -0
  160. package/lib/module/connection-dots/index.web.js.map +1 -1
  161. package/lib/module/connection-status/index.web.js +5 -0
  162. package/lib/module/connection-status/index.web.js.map +1 -1
  163. package/lib/module/content-panel/index.web.js +5 -0
  164. package/lib/module/content-panel/index.web.js.map +1 -1
  165. package/lib/module/context-menu/ContextMenu.web.js +22 -4
  166. package/lib/module/context-menu/ContextMenu.web.js.map +1 -1
  167. package/lib/module/context-menu/context.js.map +1 -1
  168. package/lib/module/context-menu/index.web.js +5 -0
  169. package/lib/module/context-menu/index.web.js.map +1 -1
  170. package/lib/module/dialog/Dialog.web.js +13 -0
  171. package/lib/module/dialog/Dialog.web.js.map +1 -1
  172. package/lib/module/dialog/index.web.js +7 -11
  173. package/lib/module/dialog/index.web.js.map +1 -1
  174. package/lib/module/dropdown-menu/DropdownMenu.web.js +23 -3
  175. package/lib/module/dropdown-menu/DropdownMenu.web.js.map +1 -1
  176. package/lib/module/dropdown-menu/index.web.js +5 -0
  177. package/lib/module/dropdown-menu/index.web.js.map +1 -1
  178. package/lib/module/floating/FloatingPanel.js +42 -33
  179. package/lib/module/floating/FloatingPanel.js.map +1 -1
  180. package/lib/module/floating/escape-stack.js +85 -0
  181. package/lib/module/floating/escape-stack.js.map +1 -0
  182. package/lib/module/floating/menu-keyboard.js +227 -0
  183. package/lib/module/floating/menu-keyboard.js.map +1 -0
  184. package/lib/module/floating/menu-sub-flyout.js +28 -16
  185. package/lib/module/floating/menu-sub-flyout.js.map +1 -1
  186. package/lib/module/fonts/index.web.js +5 -20
  187. package/lib/module/fonts/index.web.js.map +1 -1
  188. package/lib/module/frosted-icon-button/FrostedIconButton.web.js +9 -0
  189. package/lib/module/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
  190. package/lib/module/frosted-icon-button/index.web.js +5 -7
  191. package/lib/module/frosted-icon-button/index.web.js.map +1 -1
  192. package/lib/module/hooks/roving-focus.js +181 -0
  193. package/lib/module/hooks/roving-focus.js.map +1 -0
  194. package/lib/module/hover-card/index.web.js +5 -0
  195. package/lib/module/hover-card/index.web.js.map +1 -1
  196. package/lib/module/icons/remix/RiBookReadLine.js +9 -0
  197. package/lib/module/icons/remix/RiBookReadLine.js.map +1 -0
  198. package/lib/module/icons/remix/RiBugLine.js +9 -0
  199. package/lib/module/icons/remix/RiBugLine.js.map +1 -0
  200. package/lib/module/icons/remix/RiChat1Line.js +9 -0
  201. package/lib/module/icons/remix/RiChat1Line.js.map +1 -0
  202. package/lib/module/icons/remix/RiCloudLine.js +9 -0
  203. package/lib/module/icons/remix/RiCloudLine.js.map +1 -0
  204. package/lib/module/icons/remix/RiCodeLine.js +9 -0
  205. package/lib/module/icons/remix/RiCodeLine.js.map +1 -0
  206. package/lib/module/icons/remix/RiCpuLine.js +9 -0
  207. package/lib/module/icons/remix/RiCpuLine.js.map +1 -0
  208. package/lib/module/icons/remix/RiFloodLine.js +9 -0
  209. package/lib/module/icons/remix/RiFloodLine.js.map +1 -0
  210. package/lib/module/icons/remix/RiLockUnlockLine.js +9 -0
  211. package/lib/module/icons/remix/RiLockUnlockLine.js.map +1 -0
  212. package/lib/module/icons/remix/RiMoneyDollarCircleLine.js +9 -0
  213. package/lib/module/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
  214. package/lib/module/icons/remix/RiPlayCircleLine.js +9 -0
  215. package/lib/module/icons/remix/RiPlayCircleLine.js.map +1 -0
  216. package/lib/module/icons/remix/RiRocket2Line.js +9 -0
  217. package/lib/module/icons/remix/RiRocket2Line.js.map +1 -0
  218. package/lib/module/icons/remix/RiServerLine.js +9 -0
  219. package/lib/module/icons/remix/RiServerLine.js.map +1 -0
  220. package/lib/module/icons/remix/RiShareBoxLine.js +9 -0
  221. package/lib/module/icons/remix/RiShareBoxLine.js.map +1 -0
  222. package/lib/module/icons/remix/RiTv2Line.js +9 -0
  223. package/lib/module/icons/remix/RiTv2Line.js.map +1 -0
  224. package/lib/module/icons/remix/index.js +14 -0
  225. package/lib/module/icons/remix/index.js.map +1 -1
  226. package/lib/module/list/index.web.js +5 -0
  227. package/lib/module/list/index.web.js.map +1 -1
  228. package/lib/module/loading/Loading.js +17 -155
  229. package/lib/module/loading/Loading.js.map +1 -1
  230. package/lib/module/loading/Loading.web.js +19 -155
  231. package/lib/module/loading/Loading.web.js.map +1 -1
  232. package/lib/module/loading/LoadingBase.js +194 -0
  233. package/lib/module/loading/LoadingBase.js.map +1 -0
  234. package/lib/module/loading/index.web.js +5 -13
  235. package/lib/module/loading/index.web.js.map +1 -1
  236. package/lib/module/media-flight/index.web.js +5 -9
  237. package/lib/module/media-flight/index.web.js.map +1 -1
  238. package/lib/module/menubar/Menubar.js +15 -122
  239. package/lib/module/menubar/Menubar.js.map +1 -1
  240. package/lib/module/menubar/Menubar.web.js +18 -114
  241. package/lib/module/menubar/Menubar.web.js.map +1 -1
  242. package/lib/module/menubar/MenubarBase.js +146 -0
  243. package/lib/module/menubar/MenubarBase.js.map +1 -0
  244. package/lib/module/menubar/index.web.js +5 -0
  245. package/lib/module/menubar/index.web.js.map +1 -1
  246. package/lib/module/motion/index.web.js +5 -5
  247. package/lib/module/motion/index.web.js.map +1 -1
  248. package/lib/module/popover/index.web.js +5 -0
  249. package/lib/module/popover/index.web.js.map +1 -1
  250. package/lib/module/popover/parts.js +70 -12
  251. package/lib/module/popover/parts.js.map +1 -1
  252. package/lib/module/popover/surface.js +39 -13
  253. package/lib/module/popover/surface.js.map +1 -1
  254. package/lib/module/portal/index.web.js +6 -1
  255. package/lib/module/portal/index.web.js.map +1 -1
  256. package/lib/module/progressive-blur/index.web.js +5 -0
  257. package/lib/module/progressive-blur/index.web.js.map +1 -1
  258. package/lib/module/scroll/index.web.js +5 -0
  259. package/lib/module/scroll/index.web.js.map +1 -1
  260. package/lib/module/segmented-control/SegmentedControl.js +36 -1
  261. package/lib/module/segmented-control/SegmentedControl.js.map +1 -1
  262. package/lib/module/select/Select.js +5 -77
  263. package/lib/module/select/Select.js.map +1 -1
  264. package/lib/module/select/Select.web.js +147 -82
  265. package/lib/module/select/Select.web.js.map +1 -1
  266. package/lib/module/select/index.js +2 -2
  267. package/lib/module/select/index.js.map +1 -1
  268. package/lib/module/select/index.web.js +7 -2
  269. package/lib/module/select/index.web.js.map +1 -1
  270. package/lib/module/select/shared.js +106 -6
  271. package/lib/module/select/shared.js.map +1 -1
  272. package/lib/module/sidebar/SidebarTeamMenu.js +2 -2
  273. package/lib/module/sidebar/SidebarTeamMenu.js.map +1 -1
  274. package/lib/module/sidebar/SidebarUserMenu.js +2 -2
  275. package/lib/module/sidebar/SidebarUserMenu.js.map +1 -1
  276. package/lib/module/sidebar/parts.js +8 -8
  277. package/lib/module/sidebar/parts.js.map +1 -1
  278. package/lib/module/surfaces/SurfaceHost.js +6 -0
  279. package/lib/module/surfaces/SurfaceHost.js.map +1 -1
  280. package/lib/module/surfaces/index.web.js +14 -4
  281. package/lib/module/surfaces/index.web.js.map +1 -1
  282. package/lib/module/tab-bar/index.web.js +13 -10
  283. package/lib/module/tab-bar/index.web.js.map +1 -1
  284. package/lib/module/tabs/Tabs.js +49 -2
  285. package/lib/module/tabs/Tabs.js.map +1 -1
  286. package/lib/module/theme/color-scope/index.web.js +5 -0
  287. package/lib/module/theme/color-scope/index.web.js.map +1 -1
  288. package/lib/module/theme/persistence.js +12 -1
  289. package/lib/module/theme/persistence.js.map +1 -1
  290. package/lib/module/theme/seed-scope/index.web.js +5 -0
  291. package/lib/module/theme/seed-scope/index.web.js.map +1 -1
  292. package/lib/module/tooltip/index.web.js +5 -0
  293. package/lib/module/tooltip/index.web.js.map +1 -1
  294. package/lib/typescript/commonjs/agent-chat/index.web.d.ts.map +1 -1
  295. package/lib/typescript/commonjs/ai-chat/index.web.d.ts.map +1 -1
  296. package/lib/typescript/commonjs/alert-dialog/index.web.d.ts +5 -1
  297. package/lib/typescript/commonjs/alert-dialog/index.web.d.ts.map +1 -1
  298. package/lib/typescript/commonjs/avatar-group/index.web.d.ts.map +1 -1
  299. package/lib/typescript/commonjs/bottom-sheet/index.web.d.ts.map +1 -1
  300. package/lib/typescript/commonjs/code/index.d.ts +2 -0
  301. package/lib/typescript/commonjs/code/index.d.ts.map +1 -1
  302. package/lib/typescript/commonjs/command/index.web.d.ts.map +1 -1
  303. package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts +8 -0
  304. package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts.map +1 -1
  305. package/lib/typescript/commonjs/composer-loader/index.web.d.ts.map +1 -1
  306. package/lib/typescript/commonjs/composer-panel/index.web.d.ts.map +1 -1
  307. package/lib/typescript/commonjs/connection-dots/index.web.d.ts.map +1 -1
  308. package/lib/typescript/commonjs/connection-status/index.web.d.ts.map +1 -1
  309. package/lib/typescript/commonjs/content-panel/index.web.d.ts.map +1 -1
  310. package/lib/typescript/commonjs/context-menu/ContextMenu.web.d.ts.map +1 -1
  311. package/lib/typescript/commonjs/context-menu/context.d.ts +3 -0
  312. package/lib/typescript/commonjs/context-menu/context.d.ts.map +1 -1
  313. package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
  314. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  315. package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -1
  316. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
  318. package/lib/typescript/commonjs/dropdown-menu/index.web.d.ts.map +1 -1
  319. package/lib/typescript/commonjs/floating/FloatingPanel.d.ts +1 -1
  320. package/lib/typescript/commonjs/floating/FloatingPanel.d.ts.map +1 -1
  321. package/lib/typescript/commonjs/floating/escape-stack.d.ts +55 -0
  322. package/lib/typescript/commonjs/floating/escape-stack.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/floating/menu-keyboard.d.ts +57 -0
  324. package/lib/typescript/commonjs/floating/menu-keyboard.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/floating/menu-sub-flyout.d.ts.map +1 -1
  326. package/lib/typescript/commonjs/floating/types.d.ts +11 -0
  327. package/lib/typescript/commonjs/floating/types.d.ts.map +1 -1
  328. package/lib/typescript/commonjs/fonts/index.web.d.ts.map +1 -1
  329. package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
  330. package/lib/typescript/commonjs/frosted-icon-button/index.web.d.ts.map +1 -1
  331. package/lib/typescript/commonjs/hooks/roving-focus.d.ts +66 -0
  332. package/lib/typescript/commonjs/hooks/roving-focus.d.ts.map +1 -0
  333. package/lib/typescript/commonjs/hover-card/index.web.d.ts.map +1 -1
  334. package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts +8 -0
  335. package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts +8 -0
  337. package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts.map +1 -0
  338. package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts +8 -0
  339. package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts.map +1 -0
  340. package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts +8 -0
  341. package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts.map +1 -0
  342. package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts +8 -0
  343. package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts.map +1 -0
  344. package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts +8 -0
  345. package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts.map +1 -0
  346. package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts +8 -0
  347. package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts.map +1 -0
  348. package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts +8 -0
  349. package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
  350. package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
  351. package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
  352. package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts +8 -0
  353. package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
  354. package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts +8 -0
  355. package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts.map +1 -0
  356. package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts +8 -0
  357. package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts.map +1 -0
  358. package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts +8 -0
  359. package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts +8 -0
  361. package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts.map +1 -0
  362. package/lib/typescript/commonjs/icons/remix/index.d.ts +14 -0
  363. package/lib/typescript/commonjs/icons/remix/index.d.ts.map +1 -1
  364. package/lib/typescript/commonjs/list/index.web.d.ts.map +1 -1
  365. package/lib/typescript/commonjs/loading/Loading.d.ts +8 -2
  366. package/lib/typescript/commonjs/loading/Loading.d.ts.map +1 -1
  367. package/lib/typescript/commonjs/loading/Loading.web.d.ts +10 -2
  368. package/lib/typescript/commonjs/loading/Loading.web.d.ts.map +1 -1
  369. package/lib/typescript/commonjs/loading/LoadingBase.d.ts +64 -0
  370. package/lib/typescript/commonjs/loading/LoadingBase.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/loading/index.web.d.ts.map +1 -1
  372. package/lib/typescript/commonjs/media-flight/index.web.d.ts +0 -9
  373. package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -1
  374. package/lib/typescript/commonjs/menubar/Menubar.d.ts +14 -9
  375. package/lib/typescript/commonjs/menubar/Menubar.d.ts.map +1 -1
  376. package/lib/typescript/commonjs/menubar/Menubar.web.d.ts +8 -6
  377. package/lib/typescript/commonjs/menubar/Menubar.web.d.ts.map +1 -1
  378. package/lib/typescript/commonjs/menubar/MenubarBase.d.ts +5 -0
  379. package/lib/typescript/commonjs/menubar/MenubarBase.d.ts.map +1 -0
  380. package/lib/typescript/commonjs/menubar/index.web.d.ts.map +1 -1
  381. package/lib/typescript/commonjs/motion/index.web.d.ts +0 -5
  382. package/lib/typescript/commonjs/motion/index.web.d.ts.map +1 -1
  383. package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
  384. package/lib/typescript/commonjs/popover/parts.d.ts.map +1 -1
  385. package/lib/typescript/commonjs/popover/surface.d.ts +15 -5
  386. package/lib/typescript/commonjs/popover/surface.d.ts.map +1 -1
  387. package/lib/typescript/commonjs/portal/index.web.d.ts +1 -1
  388. package/lib/typescript/commonjs/portal/index.web.d.ts.map +1 -1
  389. package/lib/typescript/commonjs/progressive-blur/index.web.d.ts.map +1 -1
  390. package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
  391. package/lib/typescript/commonjs/segmented-control/SegmentedControl.d.ts.map +1 -1
  392. package/lib/typescript/commonjs/select/Select.d.ts +2 -4
  393. package/lib/typescript/commonjs/select/Select.d.ts.map +1 -1
  394. package/lib/typescript/commonjs/select/Select.web.d.ts +2 -4
  395. package/lib/typescript/commonjs/select/Select.web.d.ts.map +1 -1
  396. package/lib/typescript/commonjs/select/index.d.ts +2 -2
  397. package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
  398. package/lib/typescript/commonjs/select/index.web.d.ts +2 -2
  399. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  400. package/lib/typescript/commonjs/select/shared.d.ts +52 -5
  401. package/lib/typescript/commonjs/select/shared.d.ts.map +1 -1
  402. package/lib/typescript/commonjs/select/types.d.ts +6 -0
  403. package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
  404. package/lib/typescript/commonjs/sidebar/parts.d.ts +8 -2
  405. package/lib/typescript/commonjs/sidebar/parts.d.ts.map +1 -1
  406. package/lib/typescript/commonjs/surfaces/SurfaceHost.d.ts.map +1 -1
  407. package/lib/typescript/commonjs/surfaces/index.web.d.ts +9 -4
  408. package/lib/typescript/commonjs/surfaces/index.web.d.ts.map +1 -1
  409. package/lib/typescript/commonjs/tab-bar/index.web.d.ts.map +1 -1
  410. package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
  411. package/lib/typescript/commonjs/tabs/types.d.ts +6 -0
  412. package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
  413. package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts.map +1 -1
  414. package/lib/typescript/commonjs/theme/persistence.d.ts.map +1 -1
  415. package/lib/typescript/commonjs/theme/seed-scope/index.web.d.ts.map +1 -1
  416. package/lib/typescript/commonjs/tooltip/index.web.d.ts.map +1 -1
  417. package/lib/typescript/module/agent-chat/index.web.d.ts.map +1 -1
  418. package/lib/typescript/module/ai-chat/index.web.d.ts.map +1 -1
  419. package/lib/typescript/module/alert-dialog/index.web.d.ts +5 -1
  420. package/lib/typescript/module/alert-dialog/index.web.d.ts.map +1 -1
  421. package/lib/typescript/module/avatar-group/index.web.d.ts.map +1 -1
  422. package/lib/typescript/module/bottom-sheet/index.web.d.ts.map +1 -1
  423. package/lib/typescript/module/code/index.d.ts +2 -0
  424. package/lib/typescript/module/code/index.d.ts.map +1 -1
  425. package/lib/typescript/module/command/index.web.d.ts.map +1 -1
  426. package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts +8 -0
  427. package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts.map +1 -1
  428. package/lib/typescript/module/composer-loader/index.web.d.ts.map +1 -1
  429. package/lib/typescript/module/composer-panel/index.web.d.ts.map +1 -1
  430. package/lib/typescript/module/connection-dots/index.web.d.ts.map +1 -1
  431. package/lib/typescript/module/connection-status/index.web.d.ts.map +1 -1
  432. package/lib/typescript/module/content-panel/index.web.d.ts.map +1 -1
  433. package/lib/typescript/module/context-menu/ContextMenu.web.d.ts.map +1 -1
  434. package/lib/typescript/module/context-menu/context.d.ts +3 -0
  435. package/lib/typescript/module/context-menu/context.d.ts.map +1 -1
  436. package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
  437. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  438. package/lib/typescript/module/dialog/index.web.d.ts +2 -1
  439. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  440. package/lib/typescript/module/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
  441. package/lib/typescript/module/dropdown-menu/index.web.d.ts.map +1 -1
  442. package/lib/typescript/module/floating/FloatingPanel.d.ts +1 -1
  443. package/lib/typescript/module/floating/FloatingPanel.d.ts.map +1 -1
  444. package/lib/typescript/module/floating/escape-stack.d.ts +55 -0
  445. package/lib/typescript/module/floating/escape-stack.d.ts.map +1 -0
  446. package/lib/typescript/module/floating/menu-keyboard.d.ts +57 -0
  447. package/lib/typescript/module/floating/menu-keyboard.d.ts.map +1 -0
  448. package/lib/typescript/module/floating/menu-sub-flyout.d.ts.map +1 -1
  449. package/lib/typescript/module/floating/types.d.ts +11 -0
  450. package/lib/typescript/module/floating/types.d.ts.map +1 -1
  451. package/lib/typescript/module/fonts/index.web.d.ts.map +1 -1
  452. package/lib/typescript/module/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
  453. package/lib/typescript/module/frosted-icon-button/index.web.d.ts.map +1 -1
  454. package/lib/typescript/module/hooks/roving-focus.d.ts +66 -0
  455. package/lib/typescript/module/hooks/roving-focus.d.ts.map +1 -0
  456. package/lib/typescript/module/hover-card/index.web.d.ts.map +1 -1
  457. package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts +8 -0
  458. package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts.map +1 -0
  459. package/lib/typescript/module/icons/remix/RiBugLine.d.ts +8 -0
  460. package/lib/typescript/module/icons/remix/RiBugLine.d.ts.map +1 -0
  461. package/lib/typescript/module/icons/remix/RiChat1Line.d.ts +8 -0
  462. package/lib/typescript/module/icons/remix/RiChat1Line.d.ts.map +1 -0
  463. package/lib/typescript/module/icons/remix/RiCloudLine.d.ts +8 -0
  464. package/lib/typescript/module/icons/remix/RiCloudLine.d.ts.map +1 -0
  465. package/lib/typescript/module/icons/remix/RiCodeLine.d.ts +8 -0
  466. package/lib/typescript/module/icons/remix/RiCodeLine.d.ts.map +1 -0
  467. package/lib/typescript/module/icons/remix/RiCpuLine.d.ts +8 -0
  468. package/lib/typescript/module/icons/remix/RiCpuLine.d.ts.map +1 -0
  469. package/lib/typescript/module/icons/remix/RiFloodLine.d.ts +8 -0
  470. package/lib/typescript/module/icons/remix/RiFloodLine.d.ts.map +1 -0
  471. package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts +8 -0
  472. package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
  473. package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
  474. package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
  475. package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts +8 -0
  476. package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
  477. package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts +8 -0
  478. package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts.map +1 -0
  479. package/lib/typescript/module/icons/remix/RiServerLine.d.ts +8 -0
  480. package/lib/typescript/module/icons/remix/RiServerLine.d.ts.map +1 -0
  481. package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts +8 -0
  482. package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts.map +1 -0
  483. package/lib/typescript/module/icons/remix/RiTv2Line.d.ts +8 -0
  484. package/lib/typescript/module/icons/remix/RiTv2Line.d.ts.map +1 -0
  485. package/lib/typescript/module/icons/remix/index.d.ts +14 -0
  486. package/lib/typescript/module/icons/remix/index.d.ts.map +1 -1
  487. package/lib/typescript/module/list/index.web.d.ts.map +1 -1
  488. package/lib/typescript/module/loading/Loading.d.ts +8 -2
  489. package/lib/typescript/module/loading/Loading.d.ts.map +1 -1
  490. package/lib/typescript/module/loading/Loading.web.d.ts +10 -2
  491. package/lib/typescript/module/loading/Loading.web.d.ts.map +1 -1
  492. package/lib/typescript/module/loading/LoadingBase.d.ts +64 -0
  493. package/lib/typescript/module/loading/LoadingBase.d.ts.map +1 -0
  494. package/lib/typescript/module/loading/index.web.d.ts.map +1 -1
  495. package/lib/typescript/module/media-flight/index.web.d.ts +0 -9
  496. package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -1
  497. package/lib/typescript/module/menubar/Menubar.d.ts +14 -9
  498. package/lib/typescript/module/menubar/Menubar.d.ts.map +1 -1
  499. package/lib/typescript/module/menubar/Menubar.web.d.ts +8 -6
  500. package/lib/typescript/module/menubar/Menubar.web.d.ts.map +1 -1
  501. package/lib/typescript/module/menubar/MenubarBase.d.ts +5 -0
  502. package/lib/typescript/module/menubar/MenubarBase.d.ts.map +1 -0
  503. package/lib/typescript/module/menubar/index.web.d.ts.map +1 -1
  504. package/lib/typescript/module/motion/index.web.d.ts +0 -5
  505. package/lib/typescript/module/motion/index.web.d.ts.map +1 -1
  506. package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
  507. package/lib/typescript/module/popover/parts.d.ts.map +1 -1
  508. package/lib/typescript/module/popover/surface.d.ts +15 -5
  509. package/lib/typescript/module/popover/surface.d.ts.map +1 -1
  510. package/lib/typescript/module/portal/index.web.d.ts +1 -1
  511. package/lib/typescript/module/portal/index.web.d.ts.map +1 -1
  512. package/lib/typescript/module/progressive-blur/index.web.d.ts.map +1 -1
  513. package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
  514. package/lib/typescript/module/segmented-control/SegmentedControl.d.ts.map +1 -1
  515. package/lib/typescript/module/select/Select.d.ts +2 -4
  516. package/lib/typescript/module/select/Select.d.ts.map +1 -1
  517. package/lib/typescript/module/select/Select.web.d.ts +2 -4
  518. package/lib/typescript/module/select/Select.web.d.ts.map +1 -1
  519. package/lib/typescript/module/select/index.d.ts +2 -2
  520. package/lib/typescript/module/select/index.d.ts.map +1 -1
  521. package/lib/typescript/module/select/index.web.d.ts +2 -2
  522. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  523. package/lib/typescript/module/select/shared.d.ts +52 -5
  524. package/lib/typescript/module/select/shared.d.ts.map +1 -1
  525. package/lib/typescript/module/select/types.d.ts +6 -0
  526. package/lib/typescript/module/select/types.d.ts.map +1 -1
  527. package/lib/typescript/module/sidebar/parts.d.ts +8 -2
  528. package/lib/typescript/module/sidebar/parts.d.ts.map +1 -1
  529. package/lib/typescript/module/surfaces/SurfaceHost.d.ts.map +1 -1
  530. package/lib/typescript/module/surfaces/index.web.d.ts +9 -4
  531. package/lib/typescript/module/surfaces/index.web.d.ts.map +1 -1
  532. package/lib/typescript/module/tab-bar/index.web.d.ts.map +1 -1
  533. package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
  534. package/lib/typescript/module/tabs/types.d.ts +6 -0
  535. package/lib/typescript/module/tabs/types.d.ts.map +1 -1
  536. package/lib/typescript/module/theme/color-scope/index.web.d.ts.map +1 -1
  537. package/lib/typescript/module/theme/persistence.d.ts.map +1 -1
  538. package/lib/typescript/module/theme/seed-scope/index.web.d.ts.map +1 -1
  539. package/lib/typescript/module/tooltip/index.web.d.ts.map +1 -1
  540. package/package.json +1 -1
  541. package/src/agent-chat/index.web.ts +5 -3
  542. package/src/ai-chat/index.web.ts +5 -2
  543. package/src/alert-dialog/index.web.ts +10 -1
  544. package/src/avatar-group/index.web.ts +5 -0
  545. package/src/bottom-sheet/index.web.ts +5 -0
  546. package/src/code/index.ts +2 -0
  547. package/src/command/index.web.ts +5 -0
  548. package/src/composer-loader/ComposerLoader.web.tsx +8 -0
  549. package/src/composer-loader/index.web.ts +5 -2
  550. package/src/composer-panel/index.web.ts +5 -3
  551. package/src/connection-dots/index.web.ts +5 -0
  552. package/src/connection-status/index.web.ts +5 -0
  553. package/src/content-panel/index.web.ts +5 -0
  554. package/src/context-menu/ContextMenu.web.tsx +26 -3
  555. package/src/context-menu/context.ts +3 -0
  556. package/src/context-menu/index.web.ts +5 -0
  557. package/src/dialog/Dialog.web.tsx +13 -0
  558. package/src/dialog/index.web.ts +7 -11
  559. package/src/dropdown-menu/DropdownMenu.web.tsx +25 -2
  560. package/src/dropdown-menu/index.web.ts +5 -0
  561. package/src/floating/FloatingPanel.tsx +37 -38
  562. package/src/floating/escape-stack.ts +92 -0
  563. package/src/floating/menu-keyboard.ts +242 -0
  564. package/src/floating/menu-sub-flyout.tsx +22 -17
  565. package/src/floating/types.ts +11 -0
  566. package/src/fonts/index.web.ts +5 -20
  567. package/src/frosted-icon-button/FrostedIconButton.web.tsx +9 -0
  568. package/src/frosted-icon-button/index.web.ts +5 -7
  569. package/src/hooks/roving-focus.ts +204 -0
  570. package/src/hover-card/index.web.ts +5 -0
  571. package/src/icons/remix/RiBookReadLine.tsx +6 -0
  572. package/src/icons/remix/RiBugLine.tsx +6 -0
  573. package/src/icons/remix/RiChat1Line.tsx +6 -0
  574. package/src/icons/remix/RiCloudLine.tsx +6 -0
  575. package/src/icons/remix/RiCodeLine.tsx +6 -0
  576. package/src/icons/remix/RiCpuLine.tsx +6 -0
  577. package/src/icons/remix/RiFloodLine.tsx +6 -0
  578. package/src/icons/remix/RiLockUnlockLine.tsx +6 -0
  579. package/src/icons/remix/RiMoneyDollarCircleLine.tsx +6 -0
  580. package/src/icons/remix/RiPlayCircleLine.tsx +6 -0
  581. package/src/icons/remix/RiRocket2Line.tsx +6 -0
  582. package/src/icons/remix/RiServerLine.tsx +6 -0
  583. package/src/icons/remix/RiShareBoxLine.tsx +6 -0
  584. package/src/icons/remix/RiTv2Line.tsx +6 -0
  585. package/src/icons/remix/index.ts +14 -0
  586. package/src/list/index.web.ts +5 -0
  587. package/src/loading/Loading.tsx +15 -135
  588. package/src/loading/Loading.web.tsx +16 -134
  589. package/src/loading/LoadingBase.tsx +170 -0
  590. package/src/loading/index.web.ts +5 -13
  591. package/src/media-flight/index.web.ts +5 -9
  592. package/src/menubar/Menubar.tsx +16 -147
  593. package/src/menubar/Menubar.web.tsx +15 -138
  594. package/src/menubar/MenubarBase.tsx +170 -0
  595. package/src/menubar/index.web.ts +5 -0
  596. package/src/motion/index.web.ts +5 -5
  597. package/src/popover/index.web.ts +5 -0
  598. package/src/popover/parts.tsx +76 -12
  599. package/src/popover/surface.ts +68 -15
  600. package/src/portal/index.web.ts +6 -1
  601. package/src/progressive-blur/index.web.ts +5 -0
  602. package/src/scroll/index.web.ts +5 -0
  603. package/src/segmented-control/SegmentedControl.tsx +45 -1
  604. package/src/select/Select.tsx +4 -67
  605. package/src/select/Select.web.tsx +133 -69
  606. package/src/select/index.ts +3 -3
  607. package/src/select/index.web.ts +8 -3
  608. package/src/select/shared.tsx +107 -5
  609. package/src/select/types.ts +6 -0
  610. package/src/sidebar/SidebarTeamMenu.tsx +2 -2
  611. package/src/sidebar/SidebarUserMenu.tsx +2 -2
  612. package/src/sidebar/parts.tsx +8 -9
  613. package/src/surfaces/SurfaceHost.tsx +6 -0
  614. package/src/surfaces/index.web.ts +14 -4
  615. package/src/tab-bar/index.web.ts +13 -10
  616. package/src/tabs/Tabs.tsx +65 -1
  617. package/src/tabs/types.ts +6 -0
  618. package/src/theme/color-scope/index.web.ts +5 -0
  619. package/src/theme/persistence.ts +11 -1
  620. package/src/theme/seed-scope/index.web.ts +5 -0
  621. package/src/tooltip/index.web.ts +5 -0
@@ -1,65 +1,24 @@
1
+ /**
2
+ * `Loading` — WEB: the `top` variant's motion on CSS transitions.
3
+ *
4
+ * The native fork statically imports react-native-reanimated, whose worklets
5
+ * Babel plugin is native-only — importing it statically breaks every web
6
+ * bundler, Vite, webpack and Metro-web alike. That is the whole reason this
7
+ * family forks. Everything else is shared (`LoadingBase`): the `spinner` and
8
+ * `inline` variants, the size table and the stylesheet.
9
+ */
10
+ import React from 'react';
11
+ import { View } from 'react-native';
12
+
1
13
  import { normalizeBloomSize } from '../appearance/legacy';
2
14
  import { resolveBloomColors } from '../appearance/colors';
3
15
  import { useBloomAppearance } from '../appearance';
4
- import React, { memo, useMemo } from 'react';
5
- import { View, Text, StyleSheet, type DimensionValue } from 'react-native';
6
-
16
+ import { animation } from '../styles/tokens';
7
17
  import type { WebCssStyle } from '../styles/web-view-style';
8
-
9
18
  import { useTheme } from '../theme/use-theme';
10
- import { animation } from '../styles/tokens';
19
+ import { bindLoading, SIZE_CONFIG, styles } from './LoadingBase';
11
20
  import { SpinnerIcon } from './SpinnerIcon.web';
12
- import type {
13
- LoadingProps,
14
- SpinnerLoadingProps,
15
- TopLoadingProps,
16
- InlineLoadingProps,
17
- } from './types';
18
-
19
- const SIZE_CONFIG = {
20
- xs: { spinner: 16, text: 12 },
21
- sm: { spinner: 20, text: 13 },
22
- md: { spinner: 24, text: 15 },
23
- lg: { spinner: 44, text: 16 },
24
- } as const;
25
-
26
- const SpinnerLoading: React.FC<SpinnerLoadingProps> = ({
27
- size: sizeProp,
28
- color,
29
- tone: toneProp,
30
- className,
31
- text,
32
- textStyle,
33
- style,
34
- showText = true,
35
- iconSize,
36
- spinnerIcon,
37
- testID,
38
- }) => {
39
- const theme = useTheme();
40
- const {size, tone} = useBloomAppearance({size: normalizeBloomSize(sizeProp), tone: toneProp}, {size: 'md', tone: 'accent'});
41
- const sizeConfig = SIZE_CONFIG[size];
42
- const effectiveIconSize = iconSize ?? sizeConfig.spinner;
43
- const spinnerColor = className ? 'currentColor' : (color ?? resolveBloomColors(theme.colors, tone, 'solid').background);
44
- const textColor = color ?? theme.colors.textSecondary;
45
-
46
- return (
47
- <View style={[styles.container, style]} testID={testID}>
48
- {spinnerIcon ?? <SpinnerIcon size={effectiveIconSize} color={spinnerColor} className={className} />}
49
- {showText && text && (
50
- <Text
51
- style={[
52
- styles.text,
53
- { color: textColor, fontSize: sizeConfig.text, marginTop: 8 },
54
- textStyle,
55
- ]}
56
- >
57
- {text}
58
- </Text>
59
- )}
60
- </View>
61
- );
62
- };
21
+ import type { TopLoadingProps } from './types';
63
22
 
64
23
  /**
65
24
  * Web fork of the `top` variant.
@@ -131,81 +90,4 @@ const TopLoading: React.FC<TopLoadingProps> = ({
131
90
  );
132
91
  };
133
92
 
134
- const InlineLoading: React.FC<InlineLoadingProps> = ({
135
- size: sizeProp,
136
- color,
137
- tone: toneProp,
138
- text,
139
- style,
140
- textStyle,
141
- spinnerIcon,
142
- testID,
143
- }) => {
144
- const theme = useTheme();
145
- const {size, tone} = useBloomAppearance({size: normalizeBloomSize(sizeProp), tone: toneProp}, {size: 'md', tone: 'accent'});
146
- const sizeConfig = SIZE_CONFIG[size];
147
- const spinnerColor = color ?? resolveBloomColors(theme.colors, tone, 'solid').background;
148
- const textColor = theme.colors.textSecondary;
149
-
150
- return (
151
- <View style={[styles.inlineContainer, style]} testID={testID}>
152
- {spinnerIcon ?? <SpinnerIcon size={sizeConfig.spinner} color={spinnerColor} />}
153
- {text && (
154
- <Text
155
- style={[
156
- { color: textColor, fontSize: sizeConfig.text, marginLeft: 8 },
157
- textStyle,
158
- ]}
159
- >
160
- {text}
161
- </Text>
162
- )}
163
- </View>
164
- );
165
- };
166
-
167
- const LoadingComponent: React.FC<LoadingProps> = (props) => {
168
- const variant = props.variant ?? 'spinner';
169
-
170
- switch (variant) {
171
- case 'top':
172
- return <TopLoading {...(props as TopLoadingProps)} />;
173
- case 'inline':
174
- return <InlineLoading {...(props as InlineLoadingProps)} />;
175
- case 'spinner':
176
- default:
177
- return <SpinnerLoading {...(props as SpinnerLoadingProps)} />;
178
- }
179
- };
180
-
181
- export const Loading = memo(LoadingComponent);
182
- Loading.displayName = 'Loading';
183
-
184
- const styles = StyleSheet.create({
185
- container: {
186
- alignItems: 'center',
187
- justifyContent: 'center',
188
- padding: 16,
189
- },
190
- text: {
191
- textAlign: 'center',
192
- },
193
- topContainer: {
194
- width: '100%',
195
- position: 'relative',
196
- overflow: 'hidden',
197
- },
198
- topLoadingView: {
199
- width: '100%',
200
- alignItems: 'center',
201
- justifyContent: 'center',
202
- position: 'absolute',
203
- top: 0,
204
- left: 0,
205
- },
206
- inlineContainer: {
207
- flexDirection: 'row',
208
- alignItems: 'center',
209
- justifyContent: 'center',
210
- },
211
- });
93
+ export const { Loading } = bindLoading({ SpinnerIcon, TopLoading });
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Everything `Loading` does that is the SAME on both platforms.
3
+ *
4
+ * The family forks for one reason: the `top` variant's motion. Native drives
5
+ * it with react-native-reanimated, whose worklets Babel plugin has no web
6
+ * equivalent — a static import of it breaks every web bundler, Vite, webpack
7
+ * and Metro-web alike — so web drives the same motion with CSS transitions.
8
+ * That is the whole of the difference. The `spinner` and `inline` variants,
9
+ * the size table, the variant dispatch and the stylesheet were byte-identical
10
+ * copies in both forks.
11
+ *
12
+ * So the two platform pieces are INJECTED rather than imported: `SpinnerIcon`
13
+ * (itself forked) and `TopLoading`. `bindLoading` is called once at module
14
+ * scope by each fork, never per render, so the component identities are
15
+ * stable — the same discipline as `bindAgentChat` and `bindAiChat`.
16
+ *
17
+ * NEUTRAL by construction: nothing this module reaches is platform-forked, so
18
+ * it resolves the same way in Metro, Vite, webpack, SSR and jest. (jest
19
+ * resolves no platform extensions at all, so logic that moved into a
20
+ * `.native.*` file would lose its coverage in silence.)
21
+ */
22
+ import { normalizeBloomSize } from '../appearance/legacy';
23
+ import { resolveBloomColors } from '../appearance/colors';
24
+ import { useBloomAppearance } from '../appearance';
25
+ import React, { memo } from 'react';
26
+ import { View, Text, StyleSheet } from 'react-native';
27
+
28
+ import { useTheme } from '../theme/use-theme';
29
+ import type {
30
+ LoadingProps,
31
+ SpinnerLoadingProps,
32
+ TopLoadingProps,
33
+ InlineLoadingProps,
34
+ } from './types';
35
+
36
+ /** Spinner diameter and label size per `size` token. Read by all three variants. */
37
+ export const SIZE_CONFIG = {
38
+ xs: { spinner: 16, text: 12 },
39
+ sm: { spinner: 20, text: 13 },
40
+ md: { spinner: 24, text: 15 },
41
+ lg: { spinner: 44, text: 16 },
42
+ } as const;
43
+
44
+ /** The two platform pieces a fork supplies. */
45
+ export interface LoadingPlatform {
46
+ /** Forked: react-native-svg on native, a DOM `<svg>` on web. */
47
+ SpinnerIcon: React.ComponentType<{ size?: number; color?: string; className?: string }>;
48
+ /** Forked: the `top` variant, the only one whose motion differs. */
49
+ TopLoading: React.FC<TopLoadingProps>;
50
+ }
51
+
52
+ export function bindLoading({ SpinnerIcon, TopLoading }: LoadingPlatform) {
53
+ const SpinnerLoading: React.FC<SpinnerLoadingProps> = ({
54
+ size: sizeProp,
55
+ color,
56
+ tone: toneProp,
57
+ className,
58
+ text,
59
+ textStyle,
60
+ style,
61
+ showText = true,
62
+ iconSize,
63
+ spinnerIcon,
64
+ testID,
65
+ }) => {
66
+ const theme = useTheme();
67
+ const {size, tone} = useBloomAppearance({size: normalizeBloomSize(sizeProp), tone: toneProp}, {size: 'md', tone: 'accent'});
68
+ const sizeConfig = SIZE_CONFIG[size];
69
+ const effectiveIconSize = iconSize ?? sizeConfig.spinner;
70
+ const spinnerColor = className ? 'currentColor' : (color ?? resolveBloomColors(theme.colors, tone, 'solid').background);
71
+ const textColor = color ?? theme.colors.textSecondary;
72
+
73
+ return (
74
+ <View style={[styles.container, style]} testID={testID}>
75
+ {spinnerIcon ?? <SpinnerIcon size={effectiveIconSize} color={spinnerColor} className={className} />}
76
+ {showText && text && (
77
+ <Text
78
+ style={[
79
+ styles.text,
80
+ { color: textColor, fontSize: sizeConfig.text, marginTop: 8 },
81
+ textStyle,
82
+ ]}
83
+ >
84
+ {text}
85
+ </Text>
86
+ )}
87
+ </View>
88
+ );
89
+ };
90
+
91
+ const InlineLoading: React.FC<InlineLoadingProps> = ({
92
+ size: sizeProp,
93
+ color,
94
+ tone: toneProp,
95
+ text,
96
+ style,
97
+ textStyle,
98
+ spinnerIcon,
99
+ testID,
100
+ }) => {
101
+ const theme = useTheme();
102
+ const {size, tone} = useBloomAppearance({size: normalizeBloomSize(sizeProp), tone: toneProp}, {size: 'md', tone: 'accent'});
103
+ const sizeConfig = SIZE_CONFIG[size];
104
+ const spinnerColor = color ?? resolveBloomColors(theme.colors, tone, 'solid').background;
105
+ const textColor = theme.colors.textSecondary;
106
+
107
+ return (
108
+ <View style={[styles.inlineContainer, style]} testID={testID}>
109
+ {spinnerIcon ?? <SpinnerIcon size={sizeConfig.spinner} color={spinnerColor} />}
110
+ {text && (
111
+ <Text
112
+ style={[
113
+ { color: textColor, fontSize: sizeConfig.text, marginLeft: 8 },
114
+ textStyle,
115
+ ]}
116
+ >
117
+ {text}
118
+ </Text>
119
+ )}
120
+ </View>
121
+ );
122
+ };
123
+
124
+ const LoadingComponent: React.FC<LoadingProps> = (props) => {
125
+ const variant = props.variant ?? 'spinner';
126
+
127
+ switch (variant) {
128
+ case 'top':
129
+ return <TopLoading {...(props as TopLoadingProps)} />;
130
+ case 'inline':
131
+ return <InlineLoading {...(props as InlineLoadingProps)} />;
132
+ case 'spinner':
133
+ default:
134
+ return <SpinnerLoading {...(props as SpinnerLoadingProps)} />;
135
+ }
136
+ };
137
+
138
+ const Loading = memo(LoadingComponent);
139
+ Loading.displayName = 'Loading';
140
+ return { Loading };
141
+ }
142
+
143
+ export const styles = StyleSheet.create({
144
+ container: {
145
+ alignItems: 'center',
146
+ justifyContent: 'center',
147
+ padding: 16,
148
+ },
149
+ text: {
150
+ textAlign: 'center',
151
+ },
152
+ topContainer: {
153
+ width: '100%',
154
+ position: 'relative',
155
+ overflow: 'hidden',
156
+ },
157
+ topLoadingView: {
158
+ width: '100%',
159
+ alignItems: 'center',
160
+ justifyContent: 'center',
161
+ position: 'absolute',
162
+ top: 0,
163
+ left: 0,
164
+ },
165
+ inlineContainer: {
166
+ flexDirection: 'row',
167
+ alignItems: 'center',
168
+ justifyContent: 'center',
169
+ },
170
+ });
@@ -1,16 +1,8 @@
1
- // Web variant of the `./loading` barrel.
2
- //
3
- // The default barrel (`./index.ts`) re-exports from `./Loading` and
4
- // `./SpinnerIcon`, which statically import `react-native-reanimated` and
5
- // `react-native-svg`. Reanimated has no web build — its worklets Babel plugin
6
- // is native-only and importing it statically breaks every web bundler (Vite,
7
- // webpack, Metro-web). The web forks (`./Loading.web`, `./SpinnerIcon.web`)
8
- // render the same components with CSS keyframes/transitions and no native deps.
9
- //
10
- // Web bundlers select this file via the `"browser"` export condition in
11
- // `package.json`'s `exports['./loading']`; native bundlers fall through to the
12
- // React Native build above. Types are platform-agnostic, so they come straight
13
- // from `./types`.
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/loading/index.ts.
3
+ // Re-run `bun run generate:exports` (or any `bun run build`) after
4
+ // changing that barrel or the set of web-forked subpaths.
5
+
14
6
  export { Loading } from './Loading.web';
15
7
  export { SpinnerIcon } from './SpinnerIcon.web';
16
8
  export type {
@@ -1,12 +1,8 @@
1
- /**
2
- * The web barrel, which exists to NAME the `.web` siblings.
3
- *
4
- * Export conditions do not apply to relative specifiers, so a bundler that is
5
- * not Metro reaches `MediaFlightLayer.web.tsx` and `MediaFlightHost.web.tsx`
6
- * only because this file spells them out. Those two are the whole web fork of
7
- * this family: the layer that paints each shared media node once, and the host
8
- * that claims it. Everything else below is the same module on both platforms.
9
- */
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/media-flight/index.ts.
3
+ // Re-run `bun run generate:exports` (or any `bun run build`) after
4
+ // changing that barrel or the set of web-forked subpaths.
5
+
10
6
  export { MediaFlightLayer } from './MediaFlightLayer.web';
11
7
  export { MediaFlightHost } from './MediaFlightHost.web';
12
8
  export { MediaSurface, MediaPoster, EmptyMediaSurface } from './MediaSurface';
@@ -1,160 +1,29 @@
1
1
  /**
2
- * `Menubar` — NATIVE. A row of triggers, each opening the same bottom sheet
3
- * `DropdownMenu` and `ContextMenu` present.
2
+ * `Menubar` — NATIVE: each menu opens the same bottom sheet `DropdownMenu` and
3
+ * `ContextMenu` present, because a phone has no room to hang a panel beside a
4
+ * control and every Bloom overlay resolving to one sheet is what makes the
5
+ * native surfaces feel like one system.
4
6
  *
5
- * The one genuinely new family in this port: Bloom had no menu bar. Its rows are
6
- * `floating/menu-rows`, published here under shadcn's `Menubar*` names, so a
7
- * ported call site keeps every part it wrote.
7
+ * The bar, the per-menu state and the trigger are identical on both platforms
8
+ * and live in `MenubarBase`. What forks is this file: the surface a menu opens
9
+ * into, and which sub-menu the rows get — INLINE on native, because a flyout
10
+ * needs a pointer.
11
+ *
12
+ * Bloom had no menu bar before this family; its rows are `floating/menu-rows`,
13
+ * published here under the `Menubar*` names so a call site keeps every part it
14
+ * wrote.
8
15
  */
9
- import React, { useMemo, useRef } from 'react';
10
- import type { View as RNView } from 'react-native';
16
+ import React, { useMemo } from 'react';
11
17
 
12
18
  import { SheetShell } from '../dialog/SheetShell';
13
- import {
14
- MENUBAR_CLASS,
15
- MENUBAR_TRIGGER_CLASS,
16
- MENUBAR_TRIGGER_OPEN_CLASS,
17
- MENUBAR_TRIGGER_TEXT_CLASS,
18
- MENU_TRIGGER_POPUP,
19
- } from '../floating/constants';
20
19
  import { MenuSurfaceProvider, type MenuSurfaceContextValue } from '../floating/context';
21
20
  import { createMenuRows } from '../floating/menu-rows';
22
21
  import { createInlineMenuSub } from '../floating/menu-sub-inline';
23
- import { cx } from '../floating/shared';
24
- import { TriggerSlot } from '../floating/TriggerSlot';
25
22
  import { useSheetOpenBridge } from '../floating/use-sheet-open-bridge';
26
- import { useControllableState } from '../hooks/use-controllable-state';
27
- import { StyledText, StyledView } from '../styles/styled-primitives';
28
- import { useMenuPalette } from '../floating/menu-palette';
29
- import { menuType } from '../floating/menu-type';
30
- import {
31
- MenubarMenuProvider,
32
- MenubarProvider,
33
- useMenubar,
34
- useMenubarMenu,
35
- } from './context';
36
- import type {
37
- MenubarContentProps,
38
- MenubarMenuProps,
39
- MenubarProps,
40
- MenubarTriggerProps,
41
- } from './types';
42
-
43
- export function Menubar({
44
- children,
45
- value,
46
- defaultValue,
47
- onValueChange,
48
- label = 'Menu bar',
49
- className,
50
- style,
51
- testID,
52
- }: MenubarProps) {
53
- const [openValue, setValue] = useControllableState<string | undefined>({
54
- value,
55
- defaultValue,
56
- onChange: onValueChange,
57
- });
58
- const context = useMemo(() => ({ value: openValue, setValue }), [openValue, setValue]);
59
- const palette = useMenuPalette();
60
- const barPaint = {
61
- backgroundColor: palette.trigger.background,
62
- borderColor: palette.trigger.border,
63
- boxShadow: palette.trigger.shadow,
64
- };
65
-
66
- return (
67
- <MenubarProvider value={context}>
68
- {/* `shadow-s` — the bar is a raised control, not an overlay, so it takes
69
- the lighter of Bloom's two elevation roles. */}
70
- <StyledView
71
- role="menubar"
72
- aria-label={label}
73
- testID={testID}
74
- className={cx(MENUBAR_CLASS, className)}
75
- // `shadow-s` reaches WEB through the class; NATIVE takes the same role as
76
- // an inline style, because `design-tokens/shadows` is platform-forked and
77
- // its own contract is that a multi-layer `box-shadow` is not something to
78
- // rely on NativeWind translating to RN elevation. On web the two agree, so
79
- // whichever wins paints the same thing.
80
- style={[barPaint, style]}>
81
- {children}
82
- </StyledView>
83
- </MenubarProvider>
84
- );
85
- }
86
-
87
- export function MenubarMenu({ children, value }: MenubarMenuProps) {
88
- const bar = useMenubar();
89
- const anchorRef = useRef<RNView | null>(null);
90
- const { setValue } = bar;
91
-
92
- const context = useMemo(
93
- () => ({
94
- open: bar.value === value,
95
- setOpen: (next: boolean) => setValue(next ? value : undefined),
96
- anchorRef,
97
- }),
98
- [bar.value, value, setValue],
99
- );
23
+ import { useMenubarMenu } from './context';
24
+ import type { MenubarContentProps } from './types';
100
25
 
101
- return <MenubarMenuProvider value={context}>{children}</MenubarMenuProvider>;
102
- }
103
-
104
- export function MenubarTrigger({
105
- children,
106
- asChild,
107
- disabled,
108
- label,
109
- className,
110
- style,
111
- testID,
112
- }: MenubarTriggerProps) {
113
- const menu = useMenubarMenu();
114
- const palette = useMenuPalette();
115
-
116
- // `flex items-center rounded-md px-2 py-1.5`, plus `bg-accent` while its menu
117
- // is open and `text-sm font-medium` for the label — the same chrome the web
118
- // fork draws, so the bar reads identically on both platforms.
119
- const trigger = (
120
- <StyledView
121
- className={cx(
122
- MENUBAR_TRIGGER_CLASS,
123
- menu.open && MENUBAR_TRIGGER_OPEN_CLASS,
124
- className,
125
- )}
126
- style={{ backgroundColor: menu.open ? palette.rowHighlight : 'transparent' }}>
127
- {typeof children === 'string' ? (
128
- <StyledText
129
- className={MENUBAR_TRIGGER_TEXT_CLASS}
130
- // `text-body-medium text-text-primary`, in Inter.
131
- style={[menuType('body-medium'), { color: palette.text }]}>
132
- {children}
133
- </StyledText>
134
- ) : (
135
- children
136
- )}
137
- </StyledView>
138
- );
139
-
140
- return (
141
- <TriggerSlot
142
- asChild={asChild}
143
- anchorRef={menu.anchorRef}
144
- style={style}
145
- testID={testID}
146
- handle={{
147
- onPress: () => menu.setOpen(!menu.open),
148
- disabled,
149
- accessibilityLabel: label,
150
- accessibilityRole: 'button',
151
- 'aria-haspopup': MENU_TRIGGER_POPUP,
152
- 'aria-expanded': menu.open,
153
- }}>
154
- {asChild ? children : trigger}
155
- </TriggerSlot>
156
- );
157
- }
26
+ export { Menubar, MenubarMenu, MenubarTrigger } from './MenubarBase';
158
27
 
159
28
  export function MenubarContent({ children, label = 'Menu', style }: MenubarContentProps) {
160
29
  const menu = useMenubarMenu();