@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
package/README.md CHANGED
@@ -153,7 +153,7 @@ Every palette is generated from a single seed colour by a dependency free colour
153
153
 
154
154
  Bloom publishes 168 subpath exports. Importing from the subpath rather than the root keeps a bundle to what it actually renders.
155
155
 
156
- Icons go one step further: every glyph is its own subpath, `@oxy.so/bloom/icons/<RiName>`. Metro does not tree-shake, so the flat `@oxy.so/bloom/icons` barrel ships all 461 glyphs to any app that names one — see [icons](./docs/icons.mdx) for the measurement and when to reach for which import. The barrel keeps working unchanged — it stays an exact `exports` key, and an exact key beats a pattern everywhere.
156
+ Icons go one step further: every glyph is its own subpath, `@oxy.so/bloom/icons/<RiName>`. Metro does not tree-shake, so the flat `@oxy.so/bloom/icons` barrel ships all 475 glyphs to any app that names one — see [icons](./docs/icons.mdx) for the measurement and when to reach for which import. The barrel keeps working unchanged — it stays an exact `exports` key, and an exact key beats a pattern everywhere.
157
157
 
158
158
  | Group | Exports |
159
159
  |---|---|
@@ -166,18 +166,18 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
166
166
  | `connection-status` | `@oxy.so/bloom/connection-status` + barrel | web fork | `connection-status.mdx` | yes | 1 | | | | |
167
167
  | `contact-card` | `@oxy.so/bloom/contact-card` + barrel | universal | `contact-card.mdx` | yes | 1 | | | | |
168
168
  | `content-panel` | `@oxy.so/bloom/content-panel` + barrel | web fork | `content-panel.mdx` | yes | 8 | | | | |
169
- | `context-menu` | `@oxy.so/bloom/context-menu` + barrel | web fork | `context-menu.mdx` | yes | 2 | | | reads | |
169
+ | `context-menu` | `@oxy.so/bloom/context-menu` + barrel | web fork | `context-menu.mdx` | yes | 3 | | | reads | |
170
170
  | `control-surface` | `@oxy.so/bloom/control-surface` + barrel | universal | `composition.mdx` | yes | 3 | | reads | | |
171
171
  | `creator-studio` | `@oxy.so/bloom/creator-studio` + barrel | universal | `creator-studio.mdx` | yes | 3 | | n/a¹ | | **adaptation** |
172
172
  | `data-table` | `@oxy.so/bloom/data-table` + barrel | universal | `data-table.mdx` | yes | 3 | | | | reads |
173
173
  | `date-picker` | `@oxy.so/bloom/date-picker` + barrel | universal | `date-picker.mdx` | yes | 4 | reads | reads | | reads |
174
174
  | `delivery-slot` | `@oxy.so/bloom/delivery-slot` + barrel | universal | `delivery-slot.mdx` | yes | 2 | reads | | | |
175
175
  | `design-tokens` | `@oxy.so/bloom/design-tokens` + barrel | universal | `design-tokens.mdx` | yes | 3 | | | | |
176
- | `dialog` | `@oxy.so/bloom/dialog` + barrel | web fork | `dialog.mdx` | yes | 14 | | | | |
176
+ | `dialog` | `@oxy.so/bloom/dialog` + barrel | web fork | `dialog.mdx` | yes | 16 | | | | |
177
177
  | `directions` | `@oxy.so/bloom/directions` + barrel | universal | `directions.mdx` | yes | 2 | | | | |
178
178
  | `divider` | `@oxy.so/bloom/divider` + barrel | universal | `divider.mdx` | yes | 1 | | | | |
179
179
  | `dot-grid-meter` | `@oxy.so/bloom/dot-grid-meter` + barrel | universal | `dot-grid-meter.mdx` | yes | 2 | | | | |
180
- | `dropdown-menu` | `@oxy.so/bloom/dropdown-menu` + barrel | web fork | `dropdown-menu.mdx` | yes | 4 | | | reads | reads |
180
+ | `dropdown-menu` | `@oxy.so/bloom/dropdown-menu` + barrel | web fork | `dropdown-menu.mdx` | yes | 5 | | | reads | reads |
181
181
  | `earnings` | `@oxy.so/bloom/earnings` + barrel | universal | `earnings.mdx` | yes | 1 | | | | reads |
182
182
  | `empty-state` | `@oxy.so/bloom/empty-state` + barrel | universal | `empty-state.mdx` | yes | 1 | | | | |
183
183
  | `error-boundary` | `@oxy.so/bloom/error-boundary` + barrel | universal | `error-boundary.mdx` | yes | 1 | | | | |
@@ -186,7 +186,7 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
186
186
  | `field` | `@oxy.so/bloom/field` + barrel | universal | `field.mdx` | yes | 9 | reads | | | |
187
187
  | `file-upload` | `@oxy.so/bloom/file-upload` + barrel | universal | `file-upload.mdx` | yes | 3 | reads | | | |
188
188
  | `fill` | `@oxy.so/bloom/fill` + barrel | universal | `fill.mdx` | yes | 1 | | | | |
189
- | `floating` | internal | universal | — | — | 14 | n/a¹ | | reads | reads |
189
+ | `floating` | internal | universal | — | — | 15 | n/a¹ | | reads | reads |
190
190
  | `fonts` | `@oxy.so/bloom/fonts` + barrel | web fork | `fonts.mdx` | yes | 2 | | | | |
191
191
  | `frosted-icon-button` | `@oxy.so/bloom/frosted-icon-button` + barrel | web fork | `frosted-icon-button.mdx` | yes | 4 | | | | |
192
192
  | `glass` | internal | universal | `glass.mdx` | — | 1 | | reads | | |
@@ -205,7 +205,7 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
205
205
  | `job-board` | `@oxy.so/bloom/job-board` + barrel | universal | `job-board.mdx` | yes | 1 | n/a¹ | | | reads |
206
206
  | `kbd` | `@oxy.so/bloom/kbd` + barrel | universal | `kbd.mdx` | yes | 1 | | | | |
207
207
  | `label` | `@oxy.so/bloom/label` + barrel | universal | `label.mdx` | yes | 1 | | | | |
208
- | `layout` | `@oxy.so/bloom/layout` + barrel | universal | `layout.mdx` | yes | 7 | | | | |
208
+ | `layout` | `@oxy.so/bloom/layout` + barrel | universal | `layout.mdx` | yes | 8 | | | | |
209
209
  | `lead-score` | `@oxy.so/bloom/lead-score` + barrel | universal | `lead-score.mdx` | yes | 1 | | | | |
210
210
  | `link-preview` | `@oxy.so/bloom/link-preview` + barrel | universal | `link-preview.mdx` | yes | 2 | | | | |
211
211
  | `list` | `@oxy.so/bloom/list` + barrel | web fork | `list.mdx` | yes | 2 | | | | |
@@ -230,7 +230,7 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
230
230
  | `media-player` | `@oxy.so/bloom/media-player` + barrel | universal | `media-player.mdx` | yes | 3 | | | | |
231
231
  | `media-shelf` | `@oxy.so/bloom/media-shelf` + barrel | universal | `media-shelf.mdx` | yes | 1 | | | | |
232
232
  | `menu-item` | `@oxy.so/bloom/menu-item` + barrel | universal | `menu-item.mdx` | yes | 1 | | | | |
233
- | `menubar` | `@oxy.so/bloom/menubar` + barrel | web fork | `menubar.mdx` | yes | 2 | | | reads | reads |
233
+ | `menubar` | `@oxy.so/bloom/menubar` + barrel | web fork | `menubar.mdx` | yes | 4 | | | reads | reads |
234
234
  | `message-bubble` | `@oxy.so/bloom/message-bubble` + barrel | universal | `message-bubble.mdx` | yes | 1 | | | | |
235
235
  | `message-media` | `@oxy.so/bloom/message-media` + barrel | universal | `message-media.mdx` | yes | 1 | n/a¹ | | | |
236
236
  | `motion` | `@oxy.so/bloom/motion` + barrel | web fork | `motion.mdx` | yes | 2 | | | | |
@@ -245,7 +245,7 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
245
245
  | `order-status` | `@oxy.so/bloom/order-status` + barrel | universal | `order-status.mdx` | yes | 1 | | | | |
246
246
  | `outline-nav` | `@oxy.so/bloom/outline-nav` + barrel | universal | `outline-nav.mdx` | yes | 1 | | | | |
247
247
  | `overlay` | `@oxy.so/bloom/overlay` + barrel | universal | `overlay.mdx` | yes | 9 | | | | |
248
- | `page-header` | `@oxy.so/bloom/page-header` + barrel | universal | `page-header.mdx` | yes | 2 | | reads | | |
248
+ | `page-header` | `@oxy.so/bloom/page-header` + barrel | universal | `page-header.mdx` | yes | 3 | | reads | | |
249
249
  | `pagination` | `@oxy.so/bloom/pagination` + barrel | universal | `pagination.mdx` | yes | 1 | | | | |
250
250
  | `patient-info-card` | `@oxy.so/bloom/patient-info-card` + barrel | universal | `patient-info-card.mdx` | yes | 1 | | | | |
251
251
  | `payment-method` | `@oxy.so/bloom/payment-method` + barrel | universal | `payment-method.mdx` | yes | 2 | reads | | | |
@@ -275,8 +275,8 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
275
275
  | `screen` | `@oxy.so/bloom/screen` + barrel | universal | `screen.mdx` | yes | 5 | | | | |
276
276
  | `scroll` | `@oxy.so/bloom/scroll` + barrel | web fork | `scroll.mdx` | yes | 5 | | | | |
277
277
  | `search` | `@oxy.so/bloom/search` + barrel | universal | `search.mdx` | yes | 1 | | | | |
278
- | `segmented-control` | `@oxy.so/bloom/segmented-control` + barrel | universal | `segmented-control.mdx` | yes | 3 | reads | | | |
279
- | `select` | `@oxy.so/bloom/select` + barrel | web fork | `select.mdx` | yes | 6 | reads | | reads | |
278
+ | `segmented-control` | `@oxy.so/bloom/segmented-control` + barrel | universal | `segmented-control.mdx` | yes | 4 | reads | | | |
279
+ | `select` | `@oxy.so/bloom/select` + barrel | web fork | `select.mdx` | yes | 7 | reads | | reads | |
280
280
  | `settings-list` | `@oxy.so/bloom/settings-list` + barrel | universal | `settings-list.mdx` | yes | 5 | | | | |
281
281
  | `settings-modal` | `@oxy.so/bloom/settings-modal` + barrel | universal | `settings-modal.mdx` | yes | 2 | | | | reads |
282
282
  | `shipment-request` | `@oxy.so/bloom/shipment-request` + barrel | universal | `shipment-request.mdx` | yes | 1 | **adaptation** | | | |
@@ -290,21 +290,21 @@ The classification is an EQUALITY in `src/__tests__/adoption-matrix.test.ts`, no
290
290
  | `stay-filters` | `@oxy.so/bloom/stay-filters` + barrel | universal | `stay-filters.mdx` | yes | 4 | n/a¹ | | | |
291
291
  | `stay-search` | `@oxy.so/bloom/stay-search` + barrel | universal | `stay-search.mdx` | yes | 4 | | | | |
292
292
  | `stepper` | `@oxy.so/bloom/stepper` + barrel | universal | `stepper.mdx` | yes | 3 | reads | | | |
293
- | `styles` | `@oxy.so/bloom/styles` + barrel | universal | `styles.mdx` | yes | 64 | | | | |
293
+ | `styles` | `@oxy.so/bloom/styles` + barrel | universal | `styles.mdx` | yes | 65 | | | | |
294
294
  | `subtle-hover` | `@oxy.so/bloom/subtle-hover` + barrel | universal | `subtle-hover.mdx` | yes | 1 | | | | |
295
295
  | `surfaces` | `@oxy.so/bloom/surfaces` + barrel | web fork | `alert.mdx` | yes | 2 | | | | |
296
296
  | `swipe-row` | `@oxy.so/bloom/swipe-row` + barrel | universal | `swipe-row.mdx` | yes | 1 | | | | |
297
297
  | `switch` | `@oxy.so/bloom/switch` + barrel | universal | `switch.mdx` | yes | 6 | reads | | | |
298
298
  | `tab-bar` | `@oxy.so/bloom/tab-bar` | web fork | `tab-bar.mdx` | yes | 12 | | | reads | |
299
299
  | `table` | `@oxy.so/bloom/table` + barrel | universal | `table.mdx` | yes | 1 | | | | |
300
- | `tabs` | `@oxy.so/bloom/tabs` + barrel | universal | `tabs.mdx` | yes | 2 | | | | |
300
+ | `tabs` | `@oxy.so/bloom/tabs` + barrel | universal | `tabs.mdx` | yes | 3 | | | | |
301
301
  | `tag-field` | `@oxy.so/bloom/tag-field` + barrel | universal | `tag-field.mdx` | yes | 2 | reads | reads | | |
302
302
  | `task-list` | `@oxy.so/bloom/task-list` + barrel | universal | `task-list.mdx` | yes | 1 | | | | |
303
303
  | `teleport` | `@oxy.so/bloom/teleport` | universal | `teleport.mdx` | yes | 1 | | | | |
304
304
  | `tenancy` | `@oxy.so/bloom/tenancy` + barrel | universal | `tenancy.mdx` | yes | 3 | | n/a¹ | | |
305
305
  | `text-field` | `@oxy.so/bloom/text-field` + barrel | universal | `text-field.mdx` | yes | 13 | reads | reads | | |
306
306
  | `textarea` | `@oxy.so/bloom/textarea` + barrel | universal | `textarea.mdx` | yes | 4 | reads | reads | | n/a¹ |
307
- | `theme` | `@oxy.so/bloom/theme` + barrel | web fork | `theme.mdx` | yes | 289 | | | n/a¹ | reads |
307
+ | `theme` | `@oxy.so/bloom/theme` + barrel | web fork | `theme.mdx` | yes | 294 | | | n/a¹ | reads |
308
308
  | `theme-toggle` | `@oxy.so/bloom/theme-toggle` + barrel | universal | `theme-toggle.mdx` | yes | 1 | n/a¹ | | | |
309
309
  | `toast` | `@oxy.so/bloom/toast` + barrel | universal | `toast.mdx` | yes | 17 | | | | |
310
310
  | `tooltip` | `@oxy.so/bloom/tooltip` + barrel | web fork | `tooltip.mdx` | yes | 1 | | | | |
package/docs/code.mdx CHANGED
@@ -78,6 +78,18 @@ surface.
78
78
 
79
79
  `tokenizeCode(source, language, highlight)` is exported for surfaces that lay
80
80
  the tokens out themselves; it returns one array of `{ kind, text }` per line.
81
+ Colour them with `tokenColor(kind, useCodePalette())` — the same palette the
82
+ card paints with, so a hand-laid editor or diff mock-up and a `CodeBlock` on the
83
+ same page cannot disagree about what a keyword looks like.
84
+
85
+ ```tsx
86
+ import { tokenColor, tokenizeCode, useCodePalette } from '@oxy.so/bloom/code';
87
+
88
+ const palette = useCodePalette();
89
+ tokenizeCode(source, 'tsx').map((line) =>
90
+ line.map((token) => <span style={{ color: tokenColor(token.kind, palette) }}>{token.text}</span>),
91
+ );
92
+ ```
81
93
 
82
94
  ## Props
83
95
 
@@ -63,3 +63,5 @@ On native there is no cursor to anchor to, so a long press presents the same bot
63
63
  Everything `DropdownMenu` documents applies, under the `ContextMenu` prefix: `ContextMenuItem`, `ContextMenuCheckboxItem`, `ContextMenuRadioGroup` / `ContextMenuRadioItem`, `ContextMenuLabel`, `ContextMenuSeparator`, `ContextMenuShortcut`, `ContextMenuGroup`, and `ContextMenuSub` / `ContextMenuSubTrigger` / `ContextMenuSubContent`.
64
64
 
65
65
  Sub-menus fly out beside their trigger row on web and render as an inline disclosure on native — see [DropdownMenu](/docs/bloom/main/dropdown-menu) for the hover, keyboard and placement behaviour, which is shared.
66
+
67
+ On web a right-click opens the menu with focus on its first row, so the menu's keys work at once: the arrows move and wrap, <kbd>Home</kbd> · <kbd>End</kbd> jump, <kbd>Enter</kbd> · <kbd>Space</kbd> activate, and <kbd>Esc</kbd> · <kbd>Tab</kbd> close it, returning focus to the trigger. No ring is painted for a pointer open — rows highlight on `:focus-visible` only.
@@ -106,6 +106,27 @@ Both announce their state as `aria-checked`, which is the spelling react-native-
106
106
 
107
107
  The established defaults stay unchanged: checkbox rows use a check and radio rows use a dot, both in the leading gutter. `indicator` replaces that selected mark, `indicatorPosition="trailing"` moves its reserved gutter to the opposite edge, and `indicator={null}` suppresses the visual mark without removing `aria-checked`. These props are implemented once by the shared row factory, so `ContextMenu` and `Menubar` receive the identical contract.
108
108
 
109
+ ## Keyboard (web)
110
+
111
+ The web menu follows the ARIA menu-button pattern, and the same keys reach `ContextMenu` and `Menubar` — all three render one row set (`floating/menu-keyboard.ts`):
112
+
113
+ | where | key | does |
114
+ | --- | --- | --- |
115
+ | trigger | <kbd>Enter</kbd> · <kbd>Space</kbd> · <kbd>↓</kbd> | opens the menu with focus on the first enabled row |
116
+ | trigger | <kbd>↑</kbd> | opens the menu with focus on the last enabled row |
117
+ | trigger, menu already open (pointer) | <kbd>↓</kbd> · <kbd>↑</kbd> | moves focus into the menu (first / last row) |
118
+ | menu | <kbd>↓</kbd> · <kbd>↑</kbd> | next / previous enabled row, wrapping at the ends |
119
+ | menu | <kbd>Home</kbd> · <kbd>End</kbd> | first / last enabled row |
120
+ | menu | <kbd>Enter</kbd> · <kbd>Space</kbd> | activates the row: a checkbox row toggles, a radio row selects, and `keepOpen` still decides whether the menu closes |
121
+ | menu | <kbd>Esc</kbd> · <kbd>Tab</kbd> | closes the menu; a menu is not part of the page's tab order |
122
+ | sub trigger | <kbd>→</kbd> · <kbd>Enter</kbd> · <kbd>Space</kbd> | opens the flyout on its first row (below) |
123
+ | flyout | <kbd>←</kbd> · <kbd>Esc</kbd> | closes the flyout onto its trigger row, leaving the menu open |
124
+ | flyout | <kbd>Tab</kbd> | closes the whole menu |
125
+
126
+ Whenever the menu closes with focus inside it — a row activated, <kbd>Esc</kbd>, <kbd>Tab</kbd> — focus returns to the trigger. A pointer open leaves focus where the pointer put it; a right-click opens a `ContextMenu` onto its first row (no ring is painted — rows highlight on `:focus-visible`), since the menu's keys need focus inside it.
127
+
128
+ Before this the trigger opened the menu and focus stayed on it: the rows are portaled to the end of `<body>`, so the arrows had nothing to move, <kbd>Tab</kbd> walked on through the page behind the open menu, and <kbd>Space</kbd> pressed nothing (react-native-web presses a `menuitem`, `checkbox` or `radio` on <kbd>Enter</kbd> only). Verified in jest (`MenuKeyboard.web.test.tsx`) and in a real browser (`scripts/verify-web-keyboard.mjs`). Native is unchanged — the menu is a bottom sheet there.
129
+
109
130
  ## Sub-menus: a flyout on web, an inline disclosure on native
110
131
 
111
132
  The API is one thing on both platforms — a shadcn call site ports across unchanged — and the presentation is the platform's own, matching what each platform's upstream does.
package/docs/icons.mdx CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Icons
3
- description: Remix Icon, one component per glyph — how to import one glyph instead of all 461, how apps migrate off the retired Bloom set, and why a wrong name is invisible to the compiler.
3
+ description: Remix Icon, one component per glyph — how to import one glyph instead of all 475, how apps migrate off the retired Bloom set, and why a wrong name is invisible to the compiler.
4
4
  order: 66
5
5
  ---
6
6
 
@@ -20,7 +20,7 @@ import { RiNotification3Line as BellIcon } from '@oxy.so/bloom/icons';
20
20
  ## Import one glyph, ship one glyph
21
21
 
22
22
  **Metro does not tree-shake.** `@oxy.so/bloom/icons` is a flat barrel over all
23
- 461 glyphs, so an app that names one icon through it bundles all 461 — the
23
+ 475 glyphs, so an app that names one icon through it bundles all 475 — the
24
24
  import is a static graph edge to every one of them, and nothing downstream
25
25
  removes what the app never renders.
26
26
 
package/docs/menubar.mdx CHANGED
@@ -76,11 +76,15 @@ Pressing an open menu's trigger closes it.
76
76
 
77
77
  Sub-menus fly out beside their trigger row on web and render as an inline disclosure on native — see [DropdownMenu](/docs/bloom/main/dropdown-menu).
78
78
 
79
+ ## Keyboard (web)
80
+
81
+ Each menu takes the keys `DropdownMenu` documents: <kbd>Enter</kbd> · <kbd>Space</kbd> · <kbd>↓</kbd> on a trigger open its menu onto the first row (<kbd>↑</kbd> onto the last), the arrows move between rows and wrap, <kbd>Home</kbd> · <kbd>End</kbd> jump, <kbd>Enter</kbd> · <kbd>Space</kbd> activate, and <kbd>Esc</kbd> · <kbd>Tab</kbd> close the menu with focus back on its trigger. See [DropdownMenu → Keyboard](/docs/bloom/main/dropdown-menu).
82
+
79
83
  ## What is not here yet
80
84
 
81
85
  Two things a desktop menu bar has that this one does not, both deliberate rather than forgotten:
82
86
 
83
87
  - **Hover to switch.** On a real desktop bar, once one menu is open, moving the pointer across a sibling trigger switches to it without a click. That needs hover intent, which is the same machinery a sub-menu flyout needs.
84
- - **Arrow-key navigation between menus.** Roving focus across the bar and into the open panel.
88
+ - **Arrow-key navigation between menus.** <kbd>←</kbd> · <kbd>→</kbd> across the bar, and from one open menu to the next. Each trigger is its own tab stop until then.
85
89
 
86
- A press opens, a press closes, and every row is reachable by tab. Nothing is half-wired.
90
+ A press opens, a press closes, and every menu is reachable by <kbd>Tab</kbd> and operable from the keyboard once open. Nothing is half-wired.
package/docs/popover.mdx CHANGED
@@ -43,7 +43,7 @@ import { Button } from '@oxy.so/bloom/button';
43
43
 
44
44
  ## The panel
45
45
 
46
- `PopoverContent` is Bloom's floating surface — the one every menu, picker and account panel shares (`MENU_POPOVER_SURFACE`):
46
+ `PopoverContent` is Bloom's floating surface — the one every menu, picker and account panel shares:
47
47
 
48
48
  | | |
49
49
  | --- | --- |
@@ -82,7 +82,9 @@ Every default is resolved INLINE, before the caller's `style`, so `style` overri
82
82
  <PopoverContent label="Event details" side="right" style={{ width: 302, borderRadius: 20 }}>
83
83
  ```
84
84
 
85
- `className` works too, and this is the part worth knowing. On web an inline style outranks every class, so an inline default would silently beat a caller's `w-[200px]`. `PopoverContent` reads which chrome properties the caller's utilities name — width (`w-*`, `size-*`), `max-w-*`, padding (`p-*`, `px-*`, …), `rounded-*`, border width (`border`, `border-0`, `border-x-2`), border colour (`border-red-500`), `bg-*`, `shadow-*`, `overflow-*`, through `md:`/`dark:` variants and `!` — and leaves THAT default out, so the class is the only rule for it:
85
+ `className` works too, and this is the part worth knowing. On web an inline style outranks every class, so an inline default would silently beat a caller's `w-[200px]`. `PopoverContent` reads which chrome properties the caller's utilities name — width (`w-*`, `size-*`), `max-w-*`, padding (`p-*`, `px-*`, …), `rounded-*`, border width (`border`, `border-0`, `border-x-2`), border colour (`border-red-500`), `bg-*`, `shadow-*`, `overflow-*`, through `md:`/`dark:` variants and `!` — and leaves THAT default out, so the class is the only rule for it.
86
+
87
+ Padding and margin are read PER SIDE, because the utilities are: `px-4` claims the left and right and says nothing about the top, so a `pt-*` default stays. The **panel parts** (`PopoverHeader`, `PopoverTitle`, `PopoverDescription`, `PopoverFooter`, `PopoverSeparator`) use the same scan, so `<PopoverSeparator className="bg-red-500" />` paints red and `<PopoverTitle className="mt-1">` keeps its colour.
86
88
 
87
89
  ```tsx
88
90
  <PopoverContent label="More actions" className="w-[200px] p-2">
@@ -50,6 +50,18 @@ emits `aria-selected` for tabs and `aria-checked` for radios, and neither uses
50
50
  `accessibilityState` — react-native-web drops that entirely, so a control
51
51
  relying on it would announce no state at all on web.
52
52
 
53
+ ## Keyboard (web)
54
+
55
+ The group is ONE tab stop — the chosen segment — and the rest are reached with the arrows, per the ARIA pattern its `type` names:
56
+
57
+ | `type` | keys | does |
58
+ | --- | --- | --- |
59
+ | `radio` | <kbd>←</kbd> <kbd>→</kbd> <kbd>↑</kbd> <kbd>↓</kbd> | move to the previous / next segment and check it, wrapping at the ends |
60
+ | `tabs` | <kbd>←</kbd> <kbd>→</kbd> · <kbd>Home</kbd> <kbd>End</kbd> | move to the previous / next (or first / last) segment and select it, wrapping |
61
+ | both | <kbd>Space</kbd> · <kbd>Enter</kbd> | choose the focused segment |
62
+
63
+ Disabled segments are skipped, and a disabled group offers no tab stop at all. Selection follows focus in both modes — the control is a value, not a navigation. <kbd>Space</kbd> is Bloom's own: react-native-web presses a `radio` or `tab` on <kbd>Enter</kbd> only. Keys also clear the drag gesture's click suppression, so a key press is never swallowed as the tail of a drag. Native is unchanged.
64
+
53
65
  ## `label` names the group, and something has to
54
66
 
55
67
  "Light / Dark / System" without a group name announces as three unrelated radios;
package/docs/select.mdx CHANGED
@@ -166,6 +166,25 @@ has to supply one. A `Popover` or a `DropdownMenu` inside a field deliberately
166
166
  does NOT take the field's id: it is not the field's control. See
167
167
  [Composition](/docs/composition).
168
168
 
169
+ ## Keyboard (web)
170
+
171
+ The web select follows the ARIA select-only combobox pattern. Focus goes where a keyboard user expects it, so the list can be operated without a pointer:
172
+
173
+ | where | key | does |
174
+ | --- | --- | --- |
175
+ | trigger | <kbd>Enter</kbd> · <kbd>Space</kbd> · <kbd>↓</kbd> · <kbd>↑</kbd> | opens the list with focus on the **chosen** option, or the first enabled one when nothing is chosen |
176
+ | trigger, list already open (pointer) | <kbd>↓</kbd> · <kbd>↑</kbd> | moves focus into the list |
177
+ | list | <kbd>↓</kbd> · <kbd>↑</kbd> | next / previous enabled option, stopping at the ends (no wrap) |
178
+ | list | <kbd>Home</kbd> · <kbd>End</kbd> | first / last enabled option |
179
+ | list | <kbd>Enter</kbd> · <kbd>Space</kbd> | chooses the focused option and closes |
180
+ | list | <kbd>Esc</kbd> · <kbd>Tab</kbd> | closes without choosing |
181
+
182
+ Every close — a choice, <kbd>Esc</kbd>, <kbd>Tab</kbd> — returns focus to the trigger, so the next <kbd>Tab</kbd> continues from the select rather than from the top of the page. A pointer open leaves focus where the pointer put it.
183
+
184
+ <kbd>Esc</kbd> closes the **innermost** open surface only. A select inside a `Dialog` closes its list and leaves the dialog open; a second <kbd>Esc</kbd> closes the dialog. (It used to close both: the list's listener and the dialog's sat side by side on `document`, and the dialog's ran first.) Every anchored surface shares this through `floating/escape-stack.ts`.
185
+
186
+ Why Bloom supplies this rather than react-native-web: an option is a `role="radio"` `Pressable`, and react-native-web presses one on <kbd>Enter</kbd> only — it synthesises <kbd>Space</kbd> for `role="button"` alone — and it never moves focus into a portaled list. Verified in jest (`SelectKeyboard.web.test.tsx`) and in a real browser (`scripts/verify-web-keyboard.mjs`). Native is unchanged: the list is a bottom sheet there.
187
+
169
188
  ## Selection state
170
189
 
171
190
  Both forks render each option as `role="radio"` with `aria-checked` — the only spelling react-native-web reads, and one React Native folds back into `accessibilityState`. `SelectItemIndicator` draws the mark — a `text-secondary` check in the row's right-hand gutter on both platforms — and the chosen row also takes the highlight wash.
package/docs/tabs.mdx CHANGED
@@ -38,9 +38,21 @@ an ancestor of what it switches.
38
38
  | `hasSelection` | whether **any** tab is selected — see below |
39
39
  | `variant` | `underline` · `pill` · `filled` · `outlined` — see below |
40
40
  | `fullWidth` | spread the triggers across the container instead of hugging |
41
+ | `label` | the strip's accessible name — the `tablist`'s `aria-label` (web) |
41
42
  | `count` | a count badge beside a trigger's label |
42
43
  | `leadingIcon` | an icon component, sized and tinted by the trigger |
43
44
 
45
+ ## Keyboard (web)
46
+
47
+ On web the strip is a `role="tablist"` — named by `label` — and follows the ARIA tabs pattern:
48
+
49
+ - **One tab stop.** <kbd>Tab</kbd> lands on the selected tab (the first enabled one when none is selected) and the next <kbd>Tab</kbd> leaves the strip. The other tabs are reached with the arrows.
50
+ - <kbd>←</kbd> · <kbd>→</kbd> move between tabs and wrap at the ends; <kbd>Home</kbd> · <kbd>End</kbd> jump to the first and last. Disabled tabs are skipped. The strip is horizontal, so <kbd>↑</kbd> · <kbd>↓</kbd> are left to the page.
51
+ - **Activation follows the path.** With `value` (the controlled path) activation is **automatic**: the tab an arrow lands on is selected, and `onValueChange` fires. On the focus-driven path (`isFocused` per trigger, as `tabs/expo-router` uses) selecting a tab is a NAVIGATION, so activation is **manual**: the arrows move focus only, and <kbd>Enter</kbd> or <kbd>Space</kbd> selects.
52
+ - <kbd>Space</kbd> selects the focused tab. react-native-web presses a `role="tab"` on <kbd>Enter</kbd> only, so Bloom supplies it.
53
+
54
+ Before this every tab was its own tab stop, the arrows did nothing, and there was no `tablist` at all — correct `role="tab"` and `aria-selected` on each trigger, which is why nothing flagged it. Native is unchanged: the strip stays a plain container there, since naming a native container would fold its tabs into one accessibility element. Verified in jest (`TabsSegmentedKeyboard.web.test.tsx`) and in a real browser (`scripts/verify-web-keyboard.mjs`).
55
+
44
56
  ## Look
45
57
 
46
58
  The strip is built from `Tab` and `PillTab`, with colours from the theme through
@@ -1 +1 @@
1
- {"version":3,"names":["_AgentChatWeb","require","_AgentChatMessage"],"sourceRoot":"../../../src","sources":["agent-chat/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,aAAA,GAAAC,OAAA;AAMA,IAAAC,iBAAA,GAAAD,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AgentChatWeb","require","_AgentChatMessage"],"sourceRoot":"../../../src","sources":["agent-chat/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AAMA,IAAAC,iBAAA,GAAAD,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_AiChatWeb","require","_AiChatCodePanel","_AiChatContainer","_AiChatMessages","_AiChatShell","_context"],"sourceRoot":"../../../src","sources":["ai-chat/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAMA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAQA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AiChatWeb","require","_AiChatCodePanel","_AiChatContainer","_AiChatMessages","_AiChatShell","_context"],"sourceRoot":"../../../src","sources":["ai-chat/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AAMA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAQA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA","ignoreList":[]}
@@ -6,6 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.AlertDialog = void 0;
7
7
  var _indexWeb = require("../dialog/index.web.js");
8
8
  var _AlertDialog = require("./AlertDialog.js");
9
- /** Web variant of the `./alert-dialog` barrel — see `./index.ts`. */
9
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
10
+ // Source of truth: src/alert-dialog/index.ts.
11
+ // Re-run `bun run generate:exports` (or any `bun run build`) after
12
+ // changing that barrel or the set of web-forked subpaths.
13
+
14
+ /**
15
+ * The declarative, CONTROLLED confirm dialog. The imperative counterpart is
16
+ * `confirm()` from `@oxy.so/bloom/surfaces`, which presents onto the shared
17
+ * surface stack — this family owns no queue and no host of its own.
18
+ */
10
19
  const AlertDialog = exports.AlertDialog = (0, _AlertDialog.createAlertDialog)(_indexWeb.Dialog);
11
20
  //# sourceMappingURL=index.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_indexWeb","require","_AlertDialog","AlertDialog","exports","createAlertDialog","Dialog"],"sourceRoot":"../../../src","sources":["alert-dialog/index.web.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA;AACO,MAAME,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,8BAAiB,EAACC,gBAAM,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_indexWeb","require","_AlertDialog","AlertDialog","exports","createAlertDialog","Dialog"],"sourceRoot":"../../../src","sources":["alert-dialog/index.web.ts"],"mappings":";;;;;;AAKA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AANA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACO,MAAME,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,8BAAiB,EAACC,gBAAM,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_AvatarGroupWeb","require"],"sourceRoot":"../../../src","sources":["avatar-group/index.web.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AvatarGroupWeb","require"],"sourceRoot":"../../../src","sources":["avatar-group/index.web.ts"],"mappings":";;;;;;;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_BottomSheetWeb","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sourceRoot":"../../../src","sources":["bottom-sheet/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,uBAAA,CAAAC,OAAA;AAE2B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA","ignoreList":[]}
1
+ {"version":3,"names":["_BottomSheetWeb","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sourceRoot":"../../../src","sources":["bottom-sheet/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;AAKA,IAAAA,eAAA,GAAAC,uBAAA,CAAAC,OAAA;AAE2B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA","ignoreList":[]}
@@ -33,15 +33,28 @@ Object.defineProperty(exports, "isHighlightedLanguage", {
33
33
  return _highlight.isHighlightedLanguage;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "tokenColor", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _shared.tokenColor;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "tokenizeCode", {
37
43
  enumerable: true,
38
44
  get: function () {
39
45
  return _highlight.tokenizeCode;
40
46
  }
41
47
  });
48
+ Object.defineProperty(exports, "useCodePalette", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _shared.useCodePalette;
52
+ }
53
+ });
42
54
  var _Code = require("./Code.js");
43
55
  var _CodeBlock = require("./CodeBlock.js");
44
56
  var _CodeLines = require("./CodeLines.js");
45
57
  var _highlight = require("./highlight.js");
46
58
  var _Pre = require("./Pre.js");
59
+ var _shared = require("./shared.js");
47
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Code","require","_CodeBlock","_CodeLines","_highlight","_Pre"],"sourceRoot":"../../../src","sources":["code/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_Code","require","_CodeBlock","_CodeLines","_highlight","_Pre","_shared"],"sourceRoot":"../../../src","sources":["code/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA","ignoreList":[]}
@@ -6,5 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Command = void 0;
7
7
  var _indexWeb = require("../dialog/index.web.js");
8
8
  var _Command = require("./Command.js");
9
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
10
+ // Source of truth: src/command/index.ts.
11
+ // Re-run `bun run generate:exports` (or any `bun run build`) after
12
+ // changing that barrel or the set of web-forked subpaths.
13
+
9
14
  const Command = exports.Command = (0, _Command.createCommand)(_indexWeb.Dialog);
10
15
  //# sourceMappingURL=index.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_indexWeb","require","_Command","Command","exports","createCommand","Dialog"],"sourceRoot":"../../../src","sources":["command/index.web.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,MAAME,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,IAAAE,sBAAa,EAACC,gBAAM,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_indexWeb","require","_Command","Command","exports","createCommand","Dialog"],"sourceRoot":"../../../src","sources":["command/index.web.ts"],"mappings":";;;;;;AAKA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AANA;AACA;AACA;AACA;;AAKO,MAAME,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,IAAAE,sBAAa,EAACC,gBAAM,CAAC","ignoreList":[]}
@@ -12,6 +12,15 @@ var _useTheme = require("../theme/use-theme.js");
12
12
  var _shared2 = require("./shared.js");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ /**
16
+ * `ComposerLoader` — WEB: the light band laps on CSS keyframes over a DOM
17
+ * `<svg>`, where the native fork drives a react-native-svg frame clock.
18
+ *
19
+ * The lap geometry both forks draw is shared (`./shared`); what differs is only
20
+ * what advances it. Keeping the geometry in one module is what stops the two
21
+ * bands from drifting apart while still looking like one component.
22
+ */
23
+
15
24
  /**
16
25
  * Web fork of `./ComposerLoader`. Draws the markup directly: a DOM `<svg>`
17
26
  * whose `<rect>` strokes are `pathLength`-normalised dash segments lapping on a
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_shared","_adoptStyleSheet","_useTheme","_shared2","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","STYLE_ID","RECT_CLASS","KEYFRAMES","COMPOSER_LOADER_WEB_CSS","exports","ComposerLoaderComponent","children","active","colors","speed","intensity","bloom","bloomStrength","arc","reverse","radius","line","bloomOnly","surface","taper","blend","offset","style","testID","theme","useTheme","gradientId","useId","replace","box","setBox","useState","w","h","useEffect","adoptStyleSheet","onLayout","useCallback","event","width","height","nativeEvent","layout","Math","max","geometry","useMemo","composerLoaderGeometry","c0","c1","c2","c3","resolveComposerLoaderColors","cornerRadius","PILL_RADIUS","direction","surfaceStyle","borderRadius","backgroundColor","card","boxShadow","BUTTON_SHADOW","isDark","clipStyle","overflow","opacity","transitionProperty","transitionDuration","COMPOSER_LOADER_FADE_MS","transitionTimingFunction","mixBlendMode","jsxs","View","styles","root","jsx","pointerEvents","StyleSheet","absoluteFill","undefined","viewBox","preserveAspectRatio","display","id","x1","y1","x2","y2","stopColor","gradientMidColor","blurs","map","blur","blurFilterId","x","y","stdDeviation","strokes","stroke","rx","pathLength","fill","strokeWidth","strokeLinecap","strokeDasharray","dash","className","filter","animation","phase","key","content","create","position","ComposerLoader","memo","displayName"],"sourceRoot":"../../../src","sources":["composer-loader/ComposerLoader.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_shared","_adoptStyleSheet","_useTheme","_shared2","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","STYLE_ID","RECT_CLASS","KEYFRAMES","COMPOSER_LOADER_WEB_CSS","exports","ComposerLoaderComponent","children","active","colors","speed","intensity","bloom","bloomStrength","arc","reverse","radius","line","bloomOnly","surface","taper","blend","offset","style","testID","theme","useTheme","gradientId","useId","replace","box","setBox","useState","w","h","useEffect","adoptStyleSheet","onLayout","useCallback","event","width","height","nativeEvent","layout","Math","max","geometry","useMemo","composerLoaderGeometry","c0","c1","c2","c3","resolveComposerLoaderColors","cornerRadius","PILL_RADIUS","direction","surfaceStyle","borderRadius","backgroundColor","card","boxShadow","BUTTON_SHADOW","isDark","clipStyle","overflow","opacity","transitionProperty","transitionDuration","COMPOSER_LOADER_FADE_MS","transitionTimingFunction","mixBlendMode","jsxs","View","styles","root","jsx","pointerEvents","StyleSheet","absoluteFill","undefined","viewBox","preserveAspectRatio","display","id","x1","y1","x2","y2","stopColor","gradientMidColor","blurs","map","blur","blurFilterId","x","y","stdDeviation","strokes","stroke","rx","pathLength","fill","strokeWidth","strokeLinecap","strokeDasharray","dash","className","filter","animation","phase","key","content","create","position","ComposerLoader","memo","displayName"],"sourceRoot":"../../../src","sources":["composer-loader/ComposerLoader.web.tsx"],"mappings":";;;;;;AAQA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAEA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAOkB,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,wBAAAQ,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAQ,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAtBlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMkB,QAAQ,GAAG,+BAA+B;AAChD,MAAMC,UAAU,GAAG,4BAA4B;AAC/C,MAAMC,SAAS,GAAG,4BAA4B;AAEvC,MAAMC,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG;AACvC,aAAaD,SAAS;AACtB;AACA;AACA;AACA;AACA,KAAKD,UAAU;AACf;AACA,CAAC;AAED,SAASI,uBAAuBA,CAAC;EAC/BC,QAAQ;EACRC,MAAM,GAAG,IAAI;EACbC,MAAM;EACNC,KAAK,GAAG,GAAG;EACXC,SAAS,GAAG,GAAG;EACfC,KAAK,GAAG,EAAE;EACVC,aAAa,GAAG,GAAG;EACnBC,GAAG,GAAG,GAAG;EACTC,OAAO,GAAG,KAAK;EACfC,MAAM;EACNC,IAAI,GAAG,GAAG;EACVC,SAAS,GAAG,KAAK;EACjBC,OAAO,GAAG,IAAI;EACdC,KAAK,GAAG,CAAC;EACTC,KAAK;EACLC,MAAM,GAAG,CAAC;EACVC,KAAK;EACLC;AACmB,CAAC,EAAE;EACtB,MAAMC,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAMC,UAAU,GAAG,YAAY,IAAAC,YAAK,EAAC,CAAC,CAACC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE;EACrE,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAG,IAAAC,eAAQ,EAAC;IAAEC,CAAC,EAAE,GAAG;IAAEC,CAAC,EAAE;EAAG,CAAC,CAAC;EAEjD,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAAC,gCAAe,EAACnC,QAAQ,EAAEG,uBAAuB,CAAC;EACpD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMiC,QAAQ,GAAG,IAAAC,kBAAW,EAAEC,KAAwB,IAAK;IACzD,MAAM;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAGF,KAAK,CAACG,WAAW,CAACC,MAAM;IAClDZ,MAAM,CAAC;MAAEE,CAAC,EAAEW,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,KAAK,CAAC;MAAEN,CAAC,EAAEU,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,MAAM;IAAE,CAAC,CAAC;EAC3D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMK,QAAQ,GAAG,IAAAC,cAAO,EACtB,MACE,IAAAC,+BAAsB,EAAC;IACrBR,KAAK,EAAEV,GAAG,CAACG,CAAC;IACZQ,MAAM,EAAEX,GAAG,CAACI,CAAC;IACbpB,GAAG;IACHG,IAAI;IACJL,KAAK;IACLC,aAAa;IACbK,SAAS;IACTE,KAAK;IACLL,OAAO;IACPO,MAAM;IACNN;EACF,CAAC,CAAC,EACJ,CAACc,GAAG,CAACG,CAAC,EAAEH,GAAG,CAACI,CAAC,EAAEpB,GAAG,EAAEG,IAAI,EAAEL,KAAK,EAAEC,aAAa,EAAEK,SAAS,EAAEE,KAAK,EAAEL,OAAO,EAAEO,MAAM,EAAEN,MAAM,CAC3F,CAAC;EAED,MAAM,CAACiC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG3C,MAAM,IAAI,IAAA4C,oCAA2B,EAAC5B,KAAK,CAAC;EACrE,MAAM6B,YAAY,GAAGtC,MAAM,IAAIuC,oBAAW;EAC1C,MAAMC,SAAS,GAAGzC,OAAO,GAAG,SAAS,GAAG,QAAQ;EAEhD,MAAM0C,YAAyB,GAAG;IAChCC,YAAY,EAAEJ,YAAY;IAC1BK,eAAe,EAAElC,KAAK,CAAChB,MAAM,CAACmD,IAAI;IAClCC,SAAS,EAAEC,qBAAa,CAACrC,KAAK,CAACsC,MAAM,GAAG,MAAM,GAAG,OAAO;EAC1D,CAAC;EACD,MAAMC,SAAsB,GAAG;IAC7BC,QAAQ,EAAE,QAAQ;IAClBP,YAAY,EAAEJ,YAAY;IAC1BY,OAAO,EAAE1D,MAAM,GAAG,CAAC,GAAG,CAAC;IACvB2D,kBAAkB,EAAE,SAAS;IAC7BC,kBAAkB,EAAE,GAAGC,gCAAuB,IAAI;IAClDC,wBAAwB,EAAE,MAAM;IAChCC,YAAY,EAAElD;EAChB,CAAC;EAED,oBACE,IAAAxC,WAAA,CAAA2F,IAAA,EAAChG,YAAA,CAAAiG,IAAI;IAAClD,KAAK,EAAE,CAACmD,MAAM,CAACC,IAAI,EAAEpD,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAjB,QAAA,GAC/CY,OAAO,gBACN,IAAAtC,WAAA,CAAA+F,GAAA,EAACpG,YAAA,CAAAiG,IAAI;MACH,mBAAW;MACXI,aAAa,EAAC,MAAM;MACpBtD,KAAK,EAAE,CAACuD,uBAAU,CAACC,YAAY,EAAEtB,YAAY,CAAE;MAC/CjC,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,UAAU,GAAGwD;IAAU,CAClD,CAAC,GACA,IAAI,eAER,IAAAnG,WAAA,CAAA+F,GAAA,EAACpG,YAAA,CAAAiG,IAAI;MACH,mBAAW;MACXI,aAAa,EAAC,MAAM;MACpBxC,QAAQ,EAAEA,QAAS;MACnBd,KAAK,EAAE,CAACuD,uBAAU,CAACC,YAAY,EAAEf,SAAS,CAAE;MAC5CxC,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,QAAQ,GAAGwD,SAAU;MAAAzE,QAAA,eAE/C,IAAA1B,WAAA,CAAA2F,IAAA;QACEhC,KAAK,EAAC,MAAM;QACZC,MAAM,EAAC,MAAM;QACbwC,OAAO,EAAE,OAAOnD,GAAG,CAACG,CAAC,IAAIH,GAAG,CAACI,CAAC,EAAG;QACjCgD,mBAAmB,EAAC,MAAM;QAC1B3D,KAAK,EAAE;UAAE4D,OAAO,EAAE,OAAO;UAAEjB,OAAO,EAAEvD;QAAU,CAAE;QAAAJ,QAAA,gBAEhD,IAAA1B,WAAA,CAAA2F,IAAA;UAAAjE,QAAA,gBACE,IAAA1B,WAAA,CAAA2F,IAAA;YAAgBY,EAAE,EAAEzD,UAAW;YAAC0D,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAACC,EAAE,EAAC,GAAG;YAAAjF,QAAA,gBACzD,IAAA1B,WAAA,CAAA+F,GAAA;cAAMtD,MAAM,EAAC,IAAI;cAACmE,SAAS,EAAExC;YAAG,CAAE,CAAC,eACnC,IAAApE,WAAA,CAAA+F,GAAA;cAAMtD,MAAM,EAAC,KAAK;cAACmE,SAAS,EAAEvC;YAAG,CAAE,CAAC,eACpC,IAAArE,WAAA,CAAA+F,GAAA;cAAMtD,MAAM,EAAC,KAAK;cAACmE,SAAS,EAAE,IAAAC,yBAAgB,EAACxC,EAAE,EAAEC,EAAE;YAAE,CAAE,CAAC,eAC1D,IAAAtE,WAAA,CAAA+F,GAAA;cAAMtD,MAAM,EAAC,KAAK;cAACmE,SAAS,EAAEtC;YAAG,CAAE,CAAC,eACpC,IAAAtE,WAAA,CAAA+F,GAAA;cAAMtD,MAAM,EAAC,MAAM;cAACmE,SAAS,EAAErC;YAAG,CAAE,CAAC;UAAA,CACvB,CAAC,EAChBN,QAAQ,CAAC6C,KAAK,CAACC,GAAG,CAAEC,IAAI,iBACvB,IAAAhH,WAAA,CAAA+F,GAAA;YAEEQ,EAAE,EAAE,IAAAU,qBAAY,EAACnE,UAAU,EAAEkE,IAAI,CAAE;YACnCE,CAAC,EAAC,MAAM;YACRC,CAAC,EAAC,MAAM;YACRxD,KAAK,EAAC,MAAM;YACZC,MAAM,EAAC,MAAM;YAAAlC,QAAA,eAEb,IAAA1B,WAAA,CAAA+F,GAAA;cAAgBqB,YAAY,EAAEJ;YAAK,CAAE;UAAC,GAPjCA,IAQC,CACT,CAAC;QAAA,CACE,CAAC,EACN/C,QAAQ,CAACoD,OAAO,CAACN,GAAG,CAAEO,MAAM,iBAC3B,IAAAtH,WAAA,CAAA+F,GAAA;UAEEmB,CAAC,EAAE,CAAE;UACLC,CAAC,EAAE,CAAE;UACLxD,KAAK,EAAEV,GAAG,CAACG,CAAE;UACbQ,MAAM,EAAEX,GAAG,CAACI,CAAE;UACdkE,EAAE,EAAEtD,QAAQ,CAACsD,EAAG;UAChBC,UAAU,EAAE,GAAI;UAChBC,IAAI,EAAC,MAAM;UACXH,MAAM,EAAE,QAAQxE,UAAU,GAAI;UAC9B4E,WAAW,EAAEJ,MAAM,CAACI,WAAY;UAChCC,aAAa,EAAC,OAAO;UACrBC,eAAe,EAAE,GAAGN,MAAM,CAACO,IAAI,IAAI,GAAG,GAAGP,MAAM,CAACO,IAAI,EAAG;UACvDC,SAAS,EAAEzG,UAAW;UACtB0G,MAAM,EAAET,MAAM,CAACN,IAAI,GAAG,CAAC,GAAG,QAAQ,IAAAC,qBAAY,EAACnE,UAAU,EAAEwE,MAAM,CAACN,IAAI,CAAC,GAAG,GAAGb,SAAU;UACvFzD,KAAK,EAAE;YACL2C,OAAO,EAAEiC,MAAM,CAACjC,OAAO;YACvB2C,SAAS,EAAE,GAAG1G,SAAS,IAAIO,KAAK,YAAayF,MAAM,CAACW,KAAK,GAAGpG,KAAK,GAAI,GAAG,cAAc8C,SAAS;UACjG;QAAE,GAjBG2C,MAAM,CAACY,GAkBb,CACF,CAAC;MAAA,CACC;IAAC,CACF,CAAC,eAEP,IAAAlI,WAAA,CAAA+F,GAAA,EAACpG,YAAA,CAAAiG,IAAI;MAAClD,KAAK,EAAEmD,MAAM,CAACsC,OAAQ;MAAAzG,QAAA,EAAEA;IAAQ,CAAO,CAAC;EAAA,CAC1C,CAAC;AAEX;AAEA,MAAMmE,MAAM,GAAGI,uBAAU,CAACmC,MAAM,CAAC;EAC/BtC,IAAI,EAAE;IAAEuC,QAAQ,EAAE;EAAW,CAAC;EAC9BF,OAAO,EAAE;IAAEE,QAAQ,EAAE;EAAW;AAClC,CAAC,CAAC;AAEK,MAAMC,cAAc,GAAA9G,OAAA,CAAA8G,cAAA,gBAAG,IAAAC,WAAI,EAAC9G,uBAAuB,CAAC;AAC3D6G,cAAc,CAACE,WAAW,GAAG,gBAAgB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ComposerLoaderWeb","require","_shared"],"sourceRoot":"../../../src","sources":["composer-loader/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ComposerLoaderWeb","require","_shared"],"sourceRoot":"../../../src","sources":["composer-loader/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ComposerPanelWeb","require","_ComposerAttachmentsWeb","_ModelPickerWeb","_ComposerPanelStatusTab","_ComposerPillWeb","_ComposerStatusBarWeb","_shared"],"sourceRoot":"../../../src","sources":["composer-panel/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ComposerPanelWeb","require","_ComposerAttachmentsWeb","_ModelPickerWeb","_ComposerPanelStatusTab","_ComposerPillWeb","_ComposerStatusBarWeb","_shared"],"sourceRoot":"../../../src","sources":["composer-panel/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ConnectionDotsWeb","require"],"sourceRoot":"../../../src","sources":["connection-dots/index.web.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ConnectionDotsWeb","require"],"sourceRoot":"../../../src","sources":["connection-dots/index.web.ts"],"mappings":";;;;;;;;;;;AAKA,IAAAA,kBAAA,GAAAC,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_netinfo","require","_ConnectionStatusToastsWeb"],"sourceRoot":"../../../src","sources":["connection-status/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_netinfo","require","_ConnectionStatusToastsWeb"],"sourceRoot":"../../../src","sources":["connection-status/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ContentPanelWeb","require"],"sourceRoot":"../../../src","sources":["content-panel/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ContentPanelWeb","require"],"sourceRoot":"../../../src","sources":["content-panel/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,gBAAA,GAAAC,OAAA","ignoreList":[]}
@@ -12,6 +12,7 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _constants = require("../floating/constants.js");
13
13
  var _context = require("../floating/context.js");
14
14
  var _FloatingPanel = require("../floating/FloatingPanel.js");
15
+ var _menuKeyboard = require("../floating/menu-keyboard.js");
15
16
  var _menuRows = require("../floating/menu-rows.js");
16
17
  var _menuSubFlyout = require("../floating/menu-sub-flyout.js");
17
18
  var _shared = require("../floating/shared.js");
@@ -33,6 +34,7 @@ function ContextMenu({
33
34
  onOpenChange
34
35
  }) {
35
36
  const [anchor, setAnchor] = (0, _react.useState)(null);
37
+ const focusIntent = (0, _menuKeyboard.useMenuFocusIntent)();
36
38
  const value = (0, _react.useMemo)(() => ({
37
39
  // The anchor IS the open state: a context menu with nowhere to sit is not
38
40
  // open, and two facts that must always agree are better kept as one.
@@ -45,8 +47,9 @@ function ContextMenu({
45
47
  setAnchor(null);
46
48
  onOpenChange?.(false);
47
49
  },
48
- anchor
49
- }), [anchor, onOpenChange]);
50
+ anchor,
51
+ focusIntent
52
+ }), [anchor, onOpenChange, focusIntent]);
50
53
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context2.ContextMenuProvider, {
51
54
  value: value,
52
55
  children: children
@@ -64,8 +67,11 @@ function ContextMenuTrigger({
64
67
  const menu = (0, _context2.useContextMenu)();
65
68
  const wrapperRef = (0, _react.useRef)(null);
66
69
  const {
67
- openAt
70
+ openAt,
71
+ focusIntent
68
72
  } = menu;
73
+ // Focus returns here when the menu closes with it inside (`menu-keyboard.ts`).
74
+ (0, _menuKeyboard.useReturnFocusOnClose)(wrapperRef, menu.open, _menuKeyboard.isInMenuSurface);
69
75
 
70
76
  // A DOM subscription, not derived state: `contextmenu` has no React Native
71
77
  // prop and react-native-web filters unknown props off a `View`, so the only
@@ -78,6 +84,11 @@ function ContextMenuTrigger({
78
84
  if (typeof element?.addEventListener !== 'function') return;
79
85
  const onContextMenu = event => {
80
86
  event.preventDefault();
87
+ // A context menu takes focus on its first row however it opened — the
88
+ // right-click is the only way in, and without focus in the panel its
89
+ // arrows and Escape have nothing to act on. A pointer open paints no
90
+ // ring: the rows highlight on `:focus-visible` only.
91
+ if (focusIntent) focusIntent.edge.current = 'first';
81
92
  openAt({
82
93
  top: event.clientY,
83
94
  bottom: event.clientY,
@@ -87,7 +98,7 @@ function ContextMenuTrigger({
87
98
  };
88
99
  element.addEventListener('contextmenu', onContextMenu);
89
100
  return () => element.removeEventListener('contextmenu', onContextMenu);
90
- }, [openAt, disabled]);
101
+ }, [openAt, disabled, focusIntent]);
91
102
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TriggerSlot.TriggerSlot, {
92
103
  asChild: asChild,
93
104
  anchorRef: wrapperRef,
@@ -130,7 +141,14 @@ function ContextMenuContent({
130
141
  presentation: 'dropdown'
131
142
  }), [menu.close]);
132
143
  const onDismiss = (0, _react.useCallback)(() => menu.close(), [menu]);
144
+ const [panel, setPanel] = (0, _react.useState)(null);
145
+ (0, _menuKeyboard.useMenuPanelKeys)((0, _menuKeyboard.hostElement)(panel), {
146
+ open: menu.open,
147
+ onTab: onDismiss,
148
+ intent: menu.focusIntent
149
+ });
133
150
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FloatingPanel.FloatingPanel, {
151
+ panelRef: setPanel,
134
152
  open: menu.open,
135
153
  anchor: menu.anchor,
136
154
  role: "menu",