@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
@@ -2,11 +2,13 @@
2
2
  * The parts of `Select` that are the SAME on both platforms, plus the contexts
3
3
  * the two forks publish.
4
4
  *
5
- * `SelectGroup`, `SelectLabel` and the two scroll buttons live here rather than
6
- * being written twice because nothing in them is platform-specific: a group is a
7
- * `role="group"` box, a label is a line of muted text, and the scroll buttons ask
5
+ * `SelectGroup`, `SelectLabel`, the two scroll buttons, the option's own text,
6
+ * its selection mark and the rule between groups live here rather than being
7
+ * written twice, because nothing in them is platform-specific: a group is a
8
+ * `role="group"` box, a label is a line of muted text, the scroll buttons ask
8
9
  * one context whether there is anything to scroll — a question native answers
9
- * "no" by never publishing the context at all.
10
+ * "no" by never publishing the context at all — and the last three read only
11
+ * the palette and the per-ITEM context, which both forks provide.
10
12
  *
11
13
  * The barrels export them from here directly, so each part still has exactly one
12
14
  * owner and neither fork re-exports the other's work.
@@ -14,10 +16,17 @@
14
16
  import React, { createContext, useContext } from 'react';
15
17
  import Svg, { Path } from 'react-native-svg';
16
18
 
17
- import { ROW_ICON_SIZE, ROW_LABEL_CLASS } from '../floating/constants';
19
+ import {
20
+ ROW_ICON_SIZE,
21
+ ROW_INDICATOR_END_CLASS,
22
+ ROW_LABEL_CLASS,
23
+ SELECT_ITEM_TEXT_CLASS,
24
+ SELECT_SEPARATOR_CLASS,
25
+ } from '../floating/constants';
18
26
  import { useMenuPalette } from '../floating/menu-palette';
19
27
  import { menuType, menuTypeClass } from '../floating/menu-type';
20
28
  import { cx } from '../floating/shared';
29
+ import { RiCheckLine as CheckIcon } from '../icons/remix/RiCheckLine';
21
30
  import { RiArrowDownSLine as ChevronDownIcon } from '../icons/remix/RiArrowDownSLine';
22
31
  import { RiArrowUpSLine as ChevronUpIcon } from '../icons/remix/RiArrowUpSLine';
23
32
  import {
@@ -28,6 +37,8 @@ import {
28
37
  import type {
29
38
  SelectGroupProps,
30
39
  SelectItemContextValue,
40
+ SelectItemIndicatorProps,
41
+ SelectItemTextProps,
31
42
  SelectLabelProps,
32
43
  SelectScrollButtonProps,
33
44
  SelectSize,
@@ -141,6 +152,7 @@ export function defaultItemValueExtractor(item: unknown): string {
141
152
  export const ItemContext = createContext<SelectItemContextValue>({
142
153
  selected: false,
143
154
  disabled: false,
155
+ size: 'md',
144
156
  });
145
157
  ItemContext.displayName = 'SelectItemContext';
146
158
 
@@ -261,3 +273,93 @@ export function SelectScrollDownButton({
261
273
  return <SelectScrollButton direction="down" className={className} style={style} />;
262
274
  }
263
275
  SelectScrollDownButton.displayName = 'SelectScrollDownButton';
276
+
277
+ // ---------------------------------------------------------------------------
278
+ // The option's own parts
279
+ // ---------------------------------------------------------------------------
280
+
281
+ /** The type ramp an option's label takes, per list size. */
282
+ export const VALUE_TYPE = { md: 'body-medium', sm: 'body-2-medium' } as const;
283
+
284
+ /**
285
+ * An option's label. The selected option is marked by the check and the row
286
+ * highlight, so its text stays at the same weight as every other row's.
287
+ *
288
+ * The colour is inline ONLY without a caller `className`: an inline colour
289
+ * outranks a class on native, so a `text-*` utility would be silently dead.
290
+ */
291
+ export function SelectItemText({ children, className, style }: SelectItemTextProps) {
292
+ const { disabled, size } = useSelectItemContext();
293
+ const palette = useMenuPalette();
294
+ return (
295
+ <StyledText
296
+ numberOfLines={1}
297
+ className={cx(
298
+ SELECT_ITEM_TEXT_CLASS[size],
299
+ menuTypeClass(VALUE_TYPE[size], className),
300
+ className && 'text-foreground',
301
+ className,
302
+ )}
303
+ style={[
304
+ menuType(VALUE_TYPE[size], className),
305
+ className ? null : { color: disabled ? palette.textDisabled : palette.text },
306
+ style,
307
+ ]}>
308
+ {children}
309
+ </StyledText>
310
+ );
311
+ }
312
+ SelectItemText.displayName = 'SelectItemText';
313
+
314
+ /**
315
+ * The selection mark: `absolute right-2 flex size-3.5 items-center
316
+ * justify-center` holding a `size-4` check.
317
+ *
318
+ * A select's tick sits on the RIGHT — the opposite side from a menu's — which
319
+ * is what leaves the option's own text starting flush at `pl-2` like every
320
+ * other line in the panel. Bloom once drew a `RadioIndicator` in a left gutter
321
+ * in the row's FLOW, so a select and a dropdown menu disagreed about both the
322
+ * mark and the edge it belongs on, and native and web disagreed with each
323
+ * other on top of that.
324
+ */
325
+ export function SelectItemIndicator({ icon: IconComponent = CheckIcon }: SelectItemIndicatorProps) {
326
+ const palette = useMenuPalette();
327
+ const { selected } = useSelectItemContext();
328
+
329
+ if (!selected) return null;
330
+
331
+ return (
332
+ <StyledView className={ROW_INDICATOR_END_CLASS} pointerEvents="none">
333
+ <IconComponent
334
+ width={ROW_ICON_SIZE}
335
+ height={ROW_ICON_SIZE}
336
+ fill={palette.textSecondary}
337
+ />
338
+ </StyledView>
339
+ );
340
+ }
341
+ SelectItemIndicator.displayName = 'SelectItemIndicator';
342
+
343
+ /**
344
+ * The rule between groups: `-mx-2 my-1.5 h-px bg-border-button-default`,
345
+ * bleeding back through the listbox's `p-2`. A FILLED 1px box, not a bottom
346
+ * border on a stretched one.
347
+ */
348
+ export function SelectSeparator() {
349
+ const palette = useMenuPalette();
350
+ return (
351
+ <StyledView className={SELECT_SEPARATOR_CLASS} style={{ backgroundColor: palette.border }} />
352
+ );
353
+ }
354
+ SelectSeparator.displayName = 'SelectSeparator';
355
+
356
+ /**
357
+ * The label a `SelectValue` shows for an item when the caller gave no
358
+ * `extractLabel`. Pure, and identical on both platforms.
359
+ */
360
+ export function defaultExtractLabel(item: unknown): React.ReactNode {
361
+ if (item != null && typeof item === 'object' && 'label' in item) {
362
+ return (item as { label: React.ReactNode }).label;
363
+ }
364
+ return String(item);
365
+ }
@@ -174,4 +174,10 @@ export type SelectItemContextValue = {
174
174
  selected: boolean;
175
175
  /** Read by `SelectItemText`, which paints `text-disabled`. */
176
176
  disabled: boolean;
177
+ /**
178
+ * The list's size token, so `SelectItemText` can pick its type ramp without
179
+ * reading the forked `SelectContext` — which is what kept it, and the check
180
+ * and the rule beside it, written out twice.
181
+ */
182
+ size: SelectSize;
177
183
  };
@@ -22,7 +22,7 @@ import {
22
22
  Collapsible,
23
23
  IS_WEB,
24
24
  MenuDivider,
25
- menuPanelStyle,
25
+ SIDEBAR_MENU_PANEL,
26
26
  SidebarAvatarView,
27
27
  useSidebarWebCss,
28
28
  useSidebarCollapseProgress,
@@ -246,7 +246,7 @@ const SidebarTeamMenuComponent: React.FC<SidebarTeamMenuProps> = ({ team, collap
246
246
  align={narrow ? 'start' : 'end'}
247
247
  sideOffset={8}
248
248
  maxWidth={width - 32}
249
- style={menuPanelStyle(palette)}
249
+ style={SIDEBAR_MENU_PANEL}
250
250
  testID={testID ? `${testID}-menu` : undefined}
251
251
  >
252
252
  <View style={{ gap: 7 }}>
@@ -18,7 +18,7 @@ import {
18
18
  Collapsible,
19
19
  IS_WEB,
20
20
  MenuDivider,
21
- menuPanelStyle,
21
+ SIDEBAR_MENU_PANEL,
22
22
  SidebarAvatarView,
23
23
  useSidebarWebCss,
24
24
  useSidebarCollapseProgress,
@@ -223,7 +223,7 @@ const SidebarUserMenuComponent: React.FC<SidebarUserMenuProps> = ({
223
223
  align="start"
224
224
  sideOffset={8}
225
225
  maxWidth={width - 32}
226
- style={menuPanelStyle(palette)}
226
+ style={SIDEBAR_MENU_PANEL}
227
227
  testID={testID ? `${testID}-menu` : undefined}
228
228
  >
229
229
  <SidebarAccountMenuContent account={account} onSelect={() => setOpen(false)} />
@@ -235,15 +235,14 @@ export function ChevronUpDownSmall({ color, size = 16 }: { color: string; size?:
235
235
  );
236
236
  }
237
237
 
238
- /** The width both sidebar menus give their popover: `w-[265px]`. */
239
- export function menuPanelStyle(_palette?: SidebarPalette): ViewStyle {
240
- // `w-[265px]` is the only thing these menus say differently from the popover
241
- // panel itself — radius, border, surface, `p-2.5` and `shadow-dropdown` are
242
- // `Popover`'s own defaults now (`popover/surface.ts`).
243
- return MENU_PANEL;
244
- }
245
-
246
- const MENU_PANEL: ViewStyle = { width: 265 };
238
+ /**
239
+ * The width both sidebar menus give their popover: `w-[265px]` — the only
240
+ * thing these menus say differently from the popover panel itself. Radius,
241
+ * border, surface, `p-2.5` and `shadow-dropdown` are `Popover`'s own defaults
242
+ * (`popover/surface.ts`), which is why this stopped being a function of the
243
+ * palette: it took one and ignored it, and both call sites kept passing one.
244
+ */
245
+ export const SIDEBAR_MENU_PANEL: ViewStyle = { width: 265 };
247
246
 
248
247
  /** Full-bleed menu divider: `-mx-2.5 h-px bg-border-button-default`. */
249
248
  export function MenuDivider({ palette, spacing }: { palette: SidebarPalette; spacing: number }) {
@@ -7,6 +7,7 @@ import React, {
7
7
  import { BackHandler, Platform } from 'react-native';
8
8
 
9
9
  import { useDialogControl } from '../dialog/context';
10
+ import { hasOpenFloatingSurface } from '../floating/escape-stack';
10
11
  import type { DialogProps } from '../dialog/types';
11
12
  import {
12
13
  finalizeClose,
@@ -211,6 +212,11 @@ function useEscapeDismissesTop(): void {
211
212
  if (typeof window === 'undefined' || typeof document === 'undefined') return;
212
213
  const handler = (e: KeyboardEvent) => {
213
214
  if (e.key !== 'Escape') return;
215
+ // An open anchored surface (a Select's list, a menu, a popover) takes
216
+ // Escape first — `floating/escape-stack.ts` closes it and keeps the key
217
+ // from the dialog underneath. Dismissing the top dialog here would close
218
+ // the dialog UNDER the open list, and the list with it.
219
+ if (hasOpenFloatingSurface()) return;
214
220
  const stack = getSnapshot();
215
221
  const top = stack[stack.length - 1];
216
222
  if (!top) return;
@@ -1,11 +1,21 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/surfaces/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
+
1
6
  import { Dialog } from '../dialog/index.web';
2
7
  import { createSurfaceHost } from './SurfaceHost';
3
8
 
4
9
  /**
5
- * Web variant of the surface stack barrel. Identical surface area to the native
6
- * `./index.ts` — it just binds the web-fork `Dialog` (`Dialog.web.tsx`, a
7
- * pure-DOM overlay) instead of the native `BottomSheet`-backed one. The store,
8
- * imperative API, hook, and types are shared, platform-agnostic modules.
10
+ * The shared, content-agnostic SURFACE STACK.
11
+ *
12
+ * `<SurfaceProvider>`/`<SurfaceHost>` render the coordinated stack; the
13
+ * imperative `surfaces` API (+ its named functions) present into it from
14
+ * anywhere; `useSurface()` gives a presented surface its own controls.
15
+ *
16
+ * `SurfaceHost`/`SurfaceProvider` are bound to the NATIVE `Dialog` here; the web
17
+ * fork (`./index.web`) binds the web `Dialog`. The store, imperative API, hook,
18
+ * and types are platform-agnostic and shared by both.
9
19
  */
10
20
  const { SurfaceHost, SurfaceProvider } = createSurfaceHost(Dialog);
11
21
 
@@ -1,18 +1,21 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/tab-bar/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
+
1
6
  /**
2
7
  * Ported from expo-glass-tabs v0.1.1 — src/index.ts
3
8
  * (MIT © 2026 David Mokos).
4
9
  *
5
- * WEB entry for `@oxy.so/bloom/tab-bar`, selected through the package's
6
- * `browser` export condition.
10
+ * DEFAULT entry for `@oxy.so/bloom/tab-bar`.
7
11
  *
8
- * The web modules are imported by their FULL `.web` name on purpose. Inside the
9
- * published `lib/` every file is plain `.js` (`surface.js` next to
10
- * `surface.web.js`), and no web bundler resolves a bare `./surface` to the
11
- * `.web` sibling by extension — only Metro does that. Writing the fork path
12
- * explicitly is the same thing the generated root barrel does
13
- * (`src/index.web.ts` → `from './dialog/index.web'`). `./glyph` has no web fork:
14
- * the neutral file already renders `item.icon`, which is the correct web
15
- * behaviour, and it is what any resolver lands on here.
12
+ * The platform pieces are imported by their BARE relative name so Metro's
13
+ * platform-extension resolution picks `surface.native.tsx` / `glyph.native.tsx`
14
+ * on iOS and Android, and every other resolver falls back to the neutral
15
+ * `surface.tsx` / `glyph.tsx`. Both neutral files, and everything else this
16
+ * module reaches, are free of native-only imports, so a consumer's `tsc` and a
17
+ * non-Metro bundler resolve this entry cleanly. Web bundlers select
18
+ * `index.web.tsx` instead, through the package's `browser` export condition.
16
19
  */
17
20
  import { ProgressiveBlur } from '../progressive-blur/index.web';
18
21
  import { createTabBar, createTabBarButton } from './TabBarBase';
package/src/tabs/Tabs.tsx CHANGED
@@ -36,6 +36,7 @@ import { useInteractionState } from '../hooks/use-interaction-state';
36
36
  import { borderRadius } from '../styles/tokens';
37
37
  import { hairlineOn, surfaceFillOn, useSurfaceFill } from '../styles/surface-levels';
38
38
  import { interactiveWebCss, useInteractiveWebCss } from '../styles/interactive-web-css';
39
+ import { handleRovingKeyDown, useRovingTabIndex } from '../hooks/roving-focus';
39
40
  import type { WebCssStyle } from '../styles/web-view-style';
40
41
  import type {
41
42
  TabsContentProps,
@@ -222,6 +223,12 @@ const IS_WEB = Platform.OS === 'web';
222
223
 
223
224
  const STYLE_ID = 'bloom-tabs-web-css';
224
225
  const TRIGGER = '[data-bloom-tabs-trigger]';
226
+ /** The strip — the owner a trigger's keyboard walks within. */
227
+ const STRIP = '[data-bloom-tabs-strip]';
228
+
229
+ function isSelectedTab(element: HTMLElement): boolean {
230
+ return element.getAttribute('aria-selected') === 'true';
231
+ }
225
232
 
226
233
  const BLOOM_TABS_CSS = interactiveWebCss({
227
234
  selector: TRIGGER,
@@ -280,6 +287,13 @@ interface TabsContextValue {
280
287
  reportTriggerLayout: (value: string, layout: TriggerLayout) => void;
281
288
  /** A trigger reports that the ROUTER considers it focused. */
282
289
  reportFocused: (value: string) => void;
290
+ /**
291
+ * What an arrow key does on web: `follow` selects the tab it lands on
292
+ * (automatic activation, the controlled path), `manual` only moves focus and
293
+ * leaves Enter/Space to select (the focus-driven path, where selecting is a
294
+ * navigation). See `TabsProps.value`.
295
+ */
296
+ activation: 'follow' | 'manual';
283
297
  }
284
298
 
285
299
  const TabsContext = createContext<TabsContextValue | null>(null);
@@ -340,6 +354,7 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
340
354
  hasSelection = true,
341
355
  variant = 'underline',
342
356
  fullWidth = false,
357
+ label,
343
358
  children,
344
359
  style,
345
360
  testID,
@@ -378,6 +393,7 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
378
393
  const remeasureScheduledRef = useRef(false);
379
394
  const indicatorPlacedRef = useRef(false);
380
395
  const scrollRef = useRef<ScrollView>(null);
396
+ const stripRef = useRef<View>(null);
381
397
  const viewportWidthRef = useRef(0);
382
398
  // The value the underline currently belongs to, from EITHER path. A ref
383
399
  // because the layout callback below must see the latest selection without
@@ -572,6 +588,21 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
572
588
  // is the bug.
573
589
  useEffect(scheduleRemeasure);
574
590
 
591
+ // Web: ONE tab stop for the strip — the selected tab, or the first enabled one
592
+ // when none is — as the ARIA tabs pattern requires (`hooks/roving-focus.ts`).
593
+ // The strip is whichever node carries `role="tablist"`: the scroll view's own
594
+ // node, or the full-width row.
595
+ useRovingTabIndex(
596
+ () =>
597
+ (fullWidth
598
+ ? (stripRef.current as unknown as Element | null)
599
+ : ((scrollRef.current as unknown as { getScrollableNode?: () => Element | null } | null)
600
+ ?.getScrollableNode?.() ?? null)),
601
+ TRIGGER,
602
+ isSelectedTab,
603
+ STRIP,
604
+ );
605
+
575
606
  useImperativeHandle(
576
607
  dragRef,
577
608
  (): TabsDragController => ({
@@ -640,6 +671,7 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
640
671
  registerTrigger,
641
672
  reportTriggerLayout,
642
673
  reportFocused,
674
+ activation: value === undefined ? 'manual' : 'follow',
643
675
  }),
644
676
  [
645
677
  value,
@@ -669,6 +701,13 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
669
701
  [isUnderline, paint.separator],
670
702
  );
671
703
 
704
+ // Web only: `role="tablist"` and its name. On native the strip stays a plain
705
+ // container — a named native View would become ONE accessibility element
706
+ // and swallow its tabs on iOS.
707
+ const stripA11y: Record<string, unknown> = IS_WEB
708
+ ? { role: 'tablist', 'aria-label': label, dataSet: { bloomTabsStrip: '' } }
709
+ : {};
710
+
672
711
  // The underline sits OVER the baseline: it is `bottom-0` of a wrapper whose
673
712
  // child carries the border. An absolute child is placed inside the border,
674
713
  // so it is pulled down by the baseline's own width — read from the caller's
@@ -731,7 +770,7 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
731
770
  return (
732
771
  <TabsContext.Provider value={contextValue}>
733
772
  {fullWidth ? (
734
- <View style={[containerStyle, style]} testID={testID}>
773
+ <View ref={stripRef} {...stripA11y} style={[containerStyle, style]} testID={testID}>
735
774
  {isUnderline ? null : indicator}
736
775
  {children}
737
776
  {isUnderline ? indicator : null}
@@ -739,6 +778,7 @@ const TabsBarComponent = forwardRef<TabsDragController, TabsProps>(function Tabs
739
778
  ) : (
740
779
  <ScrollView
741
780
  ref={scrollRef}
781
+ {...stripA11y}
742
782
  horizontal
743
783
  showsHorizontalScrollIndicator={false}
744
784
  contentContainerStyle={[containerStyle, style]}
@@ -777,6 +817,7 @@ const TabComponent: React.FC<TabsTriggerProps> = ({
777
817
  registerTrigger,
778
818
  reportTriggerLayout,
779
819
  reportFocused,
820
+ activation,
780
821
  } = useTabsContext('TabsTrigger');
781
822
  // The two paths meet here: an explicit `isFocused` (router adapter) wins;
782
823
  // otherwise selection comes from the bar's controlled `value`.
@@ -827,6 +868,28 @@ const TabComponent: React.FC<TabsTriggerProps> = ({
827
868
  if (isFocused === undefined) onValueChange?.(value);
828
869
  }, [value, disabled, onValueChange, onPressProp, isFocused]);
829
870
 
871
+ // Web keyboard (ARIA tabs): Left/Right move between tabs with wrap-around,
872
+ // Home/End jump to the ends, disabled tabs are skipped, and Space selects —
873
+ // react-native-web presses a `tab` on Enter only. Enter stays with its own
874
+ // press handling.
875
+ const webKeyboard = useMemo(
876
+ () =>
877
+ IS_WEB
878
+ ? {
879
+ onKeyDown: (event: { key: string; currentTarget: unknown; preventDefault: () => void }) => {
880
+ handleRovingKeyDown(event, {
881
+ selector: TRIGGER,
882
+ owner: STRIP,
883
+ orientation: 'horizontal',
884
+ homeEnd: true,
885
+ activate: activation,
886
+ });
887
+ },
888
+ }
889
+ : {},
890
+ [activation],
891
+ );
892
+
830
893
  const labelColor = isSelected ? paint.selectedLabel : paint.idleLabel;
831
894
  const iconColor = isSelected ? paint.selectedIcon : paint.idleIcon;
832
895
 
@@ -878,6 +941,7 @@ const TabComponent: React.FC<TabsTriggerProps> = ({
878
941
  >
879
942
  <Pressable
880
943
  {...webDataSet({ bloomTabsTrigger: variant })}
944
+ {...webKeyboard}
881
945
  style={[
882
946
  triggerStyle,
883
947
  fullWidth && { flex: 1 },
package/src/tabs/types.ts CHANGED
@@ -62,6 +62,12 @@ export interface TabsProps {
62
62
  * set of tabs (e.g. 2–3). Defaults to `false`.
63
63
  */
64
64
  fullWidth?: boolean;
65
+ /**
66
+ * The strip's accessible name — the `tablist`'s `aria-label` on web ("Account
67
+ * sections"). The tab labels name the TABS, not the set of them. Ignored on
68
+ * native, where naming the container would fold its tabs into one element.
69
+ */
70
+ label?: string;
65
71
  /** The tab items. Must be TabsTrigger components. */
66
72
  children: React.ReactNode;
67
73
  style?: StyleProp<ViewStyle>;
@@ -1,2 +1,7 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/theme/color-scope/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
+
1
6
  export { BloomColorScope, useColorScopeStyle } from './ColorScope.web';
2
7
  export type { BloomColorScopeProps } from './ColorScope.web';
@@ -146,7 +146,17 @@ export const webLocalStorage: BloomThemeStorage | undefined = (() => {
146
146
  if (typeof globalThis === 'undefined') return undefined;
147
147
  if (!('localStorage' in globalThis)) return undefined;
148
148
 
149
- const ls = (globalThis as { localStorage: Storage }).localStorage;
149
+ // READING the property can throw, not just using it: a document in an iframe
150
+ // sandboxed without `allow-same-origin` has an opaque origin, and its
151
+ // `localStorage` getter raises a SecurityError. This runs at module load, so
152
+ // a throw here takes down every consumer that imports the theme — the
153
+ // sandboxed page then has no storage, like native without an adapter.
154
+ let ls: Storage;
155
+ try {
156
+ ls = (globalThis as { localStorage: Storage }).localStorage;
157
+ } catch {
158
+ return undefined;
159
+ }
150
160
 
151
161
  return {
152
162
  getItem: (key) => {
@@ -1,2 +1,7 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/theme/seed-scope/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
+
1
6
  export { BloomSeedScope } from './SeedScope.web';
2
7
  export type { BloomSeedScopeProps } from './SeedScope.web';
@@ -1,3 +1,8 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/tooltip/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
+
1
6
  export {
2
7
  Tooltip,
3
8
  TooltipTrigger,