@oxy.so/bloom 4.4.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) 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/layout.mdx +36 -0
  8. package/docs/menubar.mdx +6 -2
  9. package/docs/page-header.mdx +16 -0
  10. package/docs/popover.mdx +4 -2
  11. package/docs/segmented-control.mdx +12 -0
  12. package/docs/select.mdx +19 -0
  13. package/docs/sidebar.mdx +6 -0
  14. package/docs/tabs.mdx +12 -0
  15. package/lib/commonjs/agent-chat/index.web.js.map +1 -1
  16. package/lib/commonjs/ai-chat/index.web.js.map +1 -1
  17. package/lib/commonjs/alert-dialog/index.web.js +10 -1
  18. package/lib/commonjs/alert-dialog/index.web.js.map +1 -1
  19. package/lib/commonjs/avatar-group/index.web.js.map +1 -1
  20. package/lib/commonjs/bottom-sheet/index.web.js.map +1 -1
  21. package/lib/commonjs/code/index.js +13 -0
  22. package/lib/commonjs/code/index.js.map +1 -1
  23. package/lib/commonjs/command/index.web.js +5 -0
  24. package/lib/commonjs/command/index.web.js.map +1 -1
  25. package/lib/commonjs/composer-loader/ComposerLoader.web.js +9 -0
  26. package/lib/commonjs/composer-loader/ComposerLoader.web.js.map +1 -1
  27. package/lib/commonjs/composer-loader/index.web.js.map +1 -1
  28. package/lib/commonjs/composer-panel/index.web.js.map +1 -1
  29. package/lib/commonjs/connection-dots/index.web.js.map +1 -1
  30. package/lib/commonjs/connection-status/index.web.js.map +1 -1
  31. package/lib/commonjs/content-panel/index.web.js.map +1 -1
  32. package/lib/commonjs/context-menu/ContextMenu.web.js +22 -4
  33. package/lib/commonjs/context-menu/ContextMenu.web.js.map +1 -1
  34. package/lib/commonjs/context-menu/context.js.map +1 -1
  35. package/lib/commonjs/context-menu/index.web.js.map +1 -1
  36. package/lib/commonjs/dialog/Dialog.web.js +14 -0
  37. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  38. package/lib/commonjs/dialog/index.web.js.map +1 -1
  39. package/lib/commonjs/dropdown-menu/DropdownMenu.web.js +22 -2
  40. package/lib/commonjs/dropdown-menu/DropdownMenu.web.js.map +1 -1
  41. package/lib/commonjs/dropdown-menu/index.web.js.map +1 -1
  42. package/lib/commonjs/floating/FloatingPanel.js +42 -33
  43. package/lib/commonjs/floating/FloatingPanel.js.map +1 -1
  44. package/lib/commonjs/floating/escape-stack.js +90 -0
  45. package/lib/commonjs/floating/escape-stack.js.map +1 -0
  46. package/lib/commonjs/floating/menu-keyboard.js +238 -0
  47. package/lib/commonjs/floating/menu-keyboard.js.map +1 -0
  48. package/lib/commonjs/floating/menu-sub-flyout.js +28 -16
  49. package/lib/commonjs/floating/menu-sub-flyout.js.map +1 -1
  50. package/lib/commonjs/fonts/index.web.js.map +1 -1
  51. package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js +10 -0
  52. package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
  53. package/lib/commonjs/frosted-icon-button/index.web.js.map +1 -1
  54. package/lib/commonjs/hooks/roving-focus.js +192 -0
  55. package/lib/commonjs/hooks/roving-focus.js.map +1 -0
  56. package/lib/commonjs/hover-card/index.web.js.map +1 -1
  57. package/lib/commonjs/icons/remix/RiBookReadLine.js +12 -0
  58. package/lib/commonjs/icons/remix/RiBookReadLine.js.map +1 -0
  59. package/lib/commonjs/icons/remix/RiBugLine.js +12 -0
  60. package/lib/commonjs/icons/remix/RiBugLine.js.map +1 -0
  61. package/lib/commonjs/icons/remix/RiChat1Line.js +12 -0
  62. package/lib/commonjs/icons/remix/RiChat1Line.js.map +1 -0
  63. package/lib/commonjs/icons/remix/RiCloudLine.js +12 -0
  64. package/lib/commonjs/icons/remix/RiCloudLine.js.map +1 -0
  65. package/lib/commonjs/icons/remix/RiCodeLine.js +12 -0
  66. package/lib/commonjs/icons/remix/RiCodeLine.js.map +1 -0
  67. package/lib/commonjs/icons/remix/RiCpuLine.js +12 -0
  68. package/lib/commonjs/icons/remix/RiCpuLine.js.map +1 -0
  69. package/lib/commonjs/icons/remix/RiFloodLine.js +12 -0
  70. package/lib/commonjs/icons/remix/RiFloodLine.js.map +1 -0
  71. package/lib/commonjs/icons/remix/RiLockUnlockLine.js +12 -0
  72. package/lib/commonjs/icons/remix/RiLockUnlockLine.js.map +1 -0
  73. package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js +12 -0
  74. package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
  75. package/lib/commonjs/icons/remix/RiPlayCircleLine.js +12 -0
  76. package/lib/commonjs/icons/remix/RiPlayCircleLine.js.map +1 -0
  77. package/lib/commonjs/icons/remix/RiRocket2Line.js +12 -0
  78. package/lib/commonjs/icons/remix/RiRocket2Line.js.map +1 -0
  79. package/lib/commonjs/icons/remix/RiServerLine.js +12 -0
  80. package/lib/commonjs/icons/remix/RiServerLine.js.map +1 -0
  81. package/lib/commonjs/icons/remix/RiShareBoxLine.js +12 -0
  82. package/lib/commonjs/icons/remix/RiShareBoxLine.js.map +1 -0
  83. package/lib/commonjs/icons/remix/RiTv2Line.js +12 -0
  84. package/lib/commonjs/icons/remix/RiTv2Line.js.map +1 -0
  85. package/lib/commonjs/icons/remix/index.js +98 -0
  86. package/lib/commonjs/icons/remix/index.js.map +1 -1
  87. package/lib/commonjs/index.js +21 -0
  88. package/lib/commonjs/index.js.map +1 -1
  89. package/lib/commonjs/index.web.js +21 -0
  90. package/lib/commonjs/index.web.js.map +1 -1
  91. package/lib/commonjs/layout/StickySection.js +106 -0
  92. package/lib/commonjs/layout/StickySection.js.map +1 -0
  93. package/lib/commonjs/layout/header-dock.js +61 -0
  94. package/lib/commonjs/layout/header-dock.js.map +1 -0
  95. package/lib/commonjs/layout/index.js +20 -0
  96. package/lib/commonjs/layout/index.js.map +1 -1
  97. package/lib/commonjs/list/index.web.js.map +1 -1
  98. package/lib/commonjs/loading/Loading.js +21 -157
  99. package/lib/commonjs/loading/Loading.js.map +1 -1
  100. package/lib/commonjs/loading/Loading.web.js +23 -157
  101. package/lib/commonjs/loading/Loading.web.js.map +1 -1
  102. package/lib/commonjs/loading/LoadingBase.js +202 -0
  103. package/lib/commonjs/loading/LoadingBase.js.map +1 -0
  104. package/lib/commonjs/loading/index.web.js.map +1 -1
  105. package/lib/commonjs/media-flight/index.web.js.map +1 -1
  106. package/lib/commonjs/menubar/Menubar.js +31 -123
  107. package/lib/commonjs/menubar/Menubar.js.map +1 -1
  108. package/lib/commonjs/menubar/Menubar.web.js +33 -114
  109. package/lib/commonjs/menubar/Menubar.web.js.map +1 -1
  110. package/lib/commonjs/menubar/MenubarBase.js +154 -0
  111. package/lib/commonjs/menubar/MenubarBase.js.map +1 -0
  112. package/lib/commonjs/menubar/index.web.js.map +1 -1
  113. package/lib/commonjs/page-header/PageHeader.js +38 -14
  114. package/lib/commonjs/page-header/PageHeader.js.map +1 -1
  115. package/lib/commonjs/popover/index.web.js.map +1 -1
  116. package/lib/commonjs/popover/parts.js +69 -11
  117. package/lib/commonjs/popover/parts.js.map +1 -1
  118. package/lib/commonjs/popover/surface.js +39 -13
  119. package/lib/commonjs/popover/surface.js.map +1 -1
  120. package/lib/commonjs/portal/index.web.js.map +1 -1
  121. package/lib/commonjs/progressive-blur/index.web.js.map +1 -1
  122. package/lib/commonjs/scroll/index.web.js.map +1 -1
  123. package/lib/commonjs/segmented-control/SegmentedControl.js +36 -1
  124. package/lib/commonjs/segmented-control/SegmentedControl.js.map +1 -1
  125. package/lib/commonjs/select/Select.js +6 -81
  126. package/lib/commonjs/select/Select.js.map +1 -1
  127. package/lib/commonjs/select/Select.web.js +147 -85
  128. package/lib/commonjs/select/Select.web.js.map +1 -1
  129. package/lib/commonjs/select/index.js +4 -4
  130. package/lib/commonjs/select/index.js.map +1 -1
  131. package/lib/commonjs/select/index.web.js +4 -4
  132. package/lib/commonjs/select/index.web.js.map +1 -1
  133. package/lib/commonjs/select/shared.js +110 -5
  134. package/lib/commonjs/select/shared.js.map +1 -1
  135. package/lib/commonjs/sidebar/Sidebar.js +121 -108
  136. package/lib/commonjs/sidebar/Sidebar.js.map +1 -1
  137. package/lib/commonjs/sidebar/SidebarRail.js +70 -48
  138. package/lib/commonjs/sidebar/SidebarRail.js.map +1 -1
  139. package/lib/commonjs/sidebar/SidebarTeamMenu.js +1 -1
  140. package/lib/commonjs/sidebar/SidebarTeamMenu.js.map +1 -1
  141. package/lib/commonjs/sidebar/SidebarUserMenu.js +1 -1
  142. package/lib/commonjs/sidebar/SidebarUserMenu.js.map +1 -1
  143. package/lib/commonjs/sidebar/parts.js +9 -9
  144. package/lib/commonjs/sidebar/parts.js.map +1 -1
  145. package/lib/commonjs/styles/web-view-style.js +6 -0
  146. package/lib/commonjs/styles/web-view-style.js.map +1 -1
  147. package/lib/commonjs/surfaces/SurfaceHost.js +6 -0
  148. package/lib/commonjs/surfaces/SurfaceHost.js.map +1 -1
  149. package/lib/commonjs/surfaces/index.web.js +14 -4
  150. package/lib/commonjs/surfaces/index.web.js.map +1 -1
  151. package/lib/commonjs/tab-bar/index.web.js +13 -10
  152. package/lib/commonjs/tab-bar/index.web.js.map +1 -1
  153. package/lib/commonjs/tabs/Tabs.js +49 -2
  154. package/lib/commonjs/tabs/Tabs.js.map +1 -1
  155. package/lib/commonjs/theme/color-scope/index.web.js.map +1 -1
  156. package/lib/commonjs/theme/seed-scope/index.web.js.map +1 -1
  157. package/lib/commonjs/tooltip/index.web.js.map +1 -1
  158. package/lib/module/agent-chat/index.web.js +5 -3
  159. package/lib/module/agent-chat/index.web.js.map +1 -1
  160. package/lib/module/ai-chat/index.web.js +5 -2
  161. package/lib/module/ai-chat/index.web.js.map +1 -1
  162. package/lib/module/alert-dialog/index.web.js +10 -1
  163. package/lib/module/alert-dialog/index.web.js.map +1 -1
  164. package/lib/module/avatar-group/index.web.js +5 -0
  165. package/lib/module/avatar-group/index.web.js.map +1 -1
  166. package/lib/module/bottom-sheet/index.web.js +5 -0
  167. package/lib/module/bottom-sheet/index.web.js.map +1 -1
  168. package/lib/module/code/index.js +1 -0
  169. package/lib/module/code/index.js.map +1 -1
  170. package/lib/module/command/index.web.js +5 -0
  171. package/lib/module/command/index.web.js.map +1 -1
  172. package/lib/module/composer-loader/ComposerLoader.web.js +8 -0
  173. package/lib/module/composer-loader/ComposerLoader.web.js.map +1 -1
  174. package/lib/module/composer-loader/index.web.js +5 -2
  175. package/lib/module/composer-loader/index.web.js.map +1 -1
  176. package/lib/module/composer-panel/index.web.js +5 -3
  177. package/lib/module/composer-panel/index.web.js.map +1 -1
  178. package/lib/module/connection-dots/index.web.js +5 -0
  179. package/lib/module/connection-dots/index.web.js.map +1 -1
  180. package/lib/module/connection-status/index.web.js +5 -0
  181. package/lib/module/connection-status/index.web.js.map +1 -1
  182. package/lib/module/content-panel/index.web.js +5 -0
  183. package/lib/module/content-panel/index.web.js.map +1 -1
  184. package/lib/module/context-menu/ContextMenu.web.js +22 -4
  185. package/lib/module/context-menu/ContextMenu.web.js.map +1 -1
  186. package/lib/module/context-menu/context.js.map +1 -1
  187. package/lib/module/context-menu/index.web.js +5 -0
  188. package/lib/module/context-menu/index.web.js.map +1 -1
  189. package/lib/module/dialog/Dialog.web.js +13 -0
  190. package/lib/module/dialog/Dialog.web.js.map +1 -1
  191. package/lib/module/dialog/index.web.js +7 -11
  192. package/lib/module/dialog/index.web.js.map +1 -1
  193. package/lib/module/dropdown-menu/DropdownMenu.web.js +23 -3
  194. package/lib/module/dropdown-menu/DropdownMenu.web.js.map +1 -1
  195. package/lib/module/dropdown-menu/index.web.js +5 -0
  196. package/lib/module/dropdown-menu/index.web.js.map +1 -1
  197. package/lib/module/floating/FloatingPanel.js +42 -33
  198. package/lib/module/floating/FloatingPanel.js.map +1 -1
  199. package/lib/module/floating/escape-stack.js +85 -0
  200. package/lib/module/floating/escape-stack.js.map +1 -0
  201. package/lib/module/floating/menu-keyboard.js +227 -0
  202. package/lib/module/floating/menu-keyboard.js.map +1 -0
  203. package/lib/module/floating/menu-sub-flyout.js +28 -16
  204. package/lib/module/floating/menu-sub-flyout.js.map +1 -1
  205. package/lib/module/fonts/index.web.js +5 -20
  206. package/lib/module/fonts/index.web.js.map +1 -1
  207. package/lib/module/frosted-icon-button/FrostedIconButton.web.js +9 -0
  208. package/lib/module/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
  209. package/lib/module/frosted-icon-button/index.web.js +5 -7
  210. package/lib/module/frosted-icon-button/index.web.js.map +1 -1
  211. package/lib/module/hooks/roving-focus.js +181 -0
  212. package/lib/module/hooks/roving-focus.js.map +1 -0
  213. package/lib/module/hover-card/index.web.js +5 -0
  214. package/lib/module/hover-card/index.web.js.map +1 -1
  215. package/lib/module/icons/remix/RiBookReadLine.js +9 -0
  216. package/lib/module/icons/remix/RiBookReadLine.js.map +1 -0
  217. package/lib/module/icons/remix/RiBugLine.js +9 -0
  218. package/lib/module/icons/remix/RiBugLine.js.map +1 -0
  219. package/lib/module/icons/remix/RiChat1Line.js +9 -0
  220. package/lib/module/icons/remix/RiChat1Line.js.map +1 -0
  221. package/lib/module/icons/remix/RiCloudLine.js +9 -0
  222. package/lib/module/icons/remix/RiCloudLine.js.map +1 -0
  223. package/lib/module/icons/remix/RiCodeLine.js +9 -0
  224. package/lib/module/icons/remix/RiCodeLine.js.map +1 -0
  225. package/lib/module/icons/remix/RiCpuLine.js +9 -0
  226. package/lib/module/icons/remix/RiCpuLine.js.map +1 -0
  227. package/lib/module/icons/remix/RiFloodLine.js +9 -0
  228. package/lib/module/icons/remix/RiFloodLine.js.map +1 -0
  229. package/lib/module/icons/remix/RiLockUnlockLine.js +9 -0
  230. package/lib/module/icons/remix/RiLockUnlockLine.js.map +1 -0
  231. package/lib/module/icons/remix/RiMoneyDollarCircleLine.js +9 -0
  232. package/lib/module/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
  233. package/lib/module/icons/remix/RiPlayCircleLine.js +9 -0
  234. package/lib/module/icons/remix/RiPlayCircleLine.js.map +1 -0
  235. package/lib/module/icons/remix/RiRocket2Line.js +9 -0
  236. package/lib/module/icons/remix/RiRocket2Line.js.map +1 -0
  237. package/lib/module/icons/remix/RiServerLine.js +9 -0
  238. package/lib/module/icons/remix/RiServerLine.js.map +1 -0
  239. package/lib/module/icons/remix/RiShareBoxLine.js +9 -0
  240. package/lib/module/icons/remix/RiShareBoxLine.js.map +1 -0
  241. package/lib/module/icons/remix/RiTv2Line.js +9 -0
  242. package/lib/module/icons/remix/RiTv2Line.js.map +1 -0
  243. package/lib/module/icons/remix/index.js +14 -0
  244. package/lib/module/icons/remix/index.js.map +1 -1
  245. package/lib/module/index.js +1 -1
  246. package/lib/module/index.js.map +1 -1
  247. package/lib/module/index.web.js +1 -1
  248. package/lib/module/index.web.js.map +1 -1
  249. package/lib/module/layout/StickySection.js +101 -0
  250. package/lib/module/layout/StickySection.js.map +1 -0
  251. package/lib/module/layout/header-dock.js +54 -0
  252. package/lib/module/layout/header-dock.js.map +1 -0
  253. package/lib/module/layout/index.js +2 -0
  254. package/lib/module/layout/index.js.map +1 -1
  255. package/lib/module/list/index.web.js +5 -0
  256. package/lib/module/list/index.web.js.map +1 -1
  257. package/lib/module/loading/Loading.js +17 -155
  258. package/lib/module/loading/Loading.js.map +1 -1
  259. package/lib/module/loading/Loading.web.js +19 -155
  260. package/lib/module/loading/Loading.web.js.map +1 -1
  261. package/lib/module/loading/LoadingBase.js +194 -0
  262. package/lib/module/loading/LoadingBase.js.map +1 -0
  263. package/lib/module/loading/index.web.js +5 -13
  264. package/lib/module/loading/index.web.js.map +1 -1
  265. package/lib/module/media-flight/index.web.js +5 -9
  266. package/lib/module/media-flight/index.web.js.map +1 -1
  267. package/lib/module/menubar/Menubar.js +15 -122
  268. package/lib/module/menubar/Menubar.js.map +1 -1
  269. package/lib/module/menubar/Menubar.web.js +18 -114
  270. package/lib/module/menubar/Menubar.web.js.map +1 -1
  271. package/lib/module/menubar/MenubarBase.js +146 -0
  272. package/lib/module/menubar/MenubarBase.js.map +1 -0
  273. package/lib/module/menubar/index.web.js +5 -0
  274. package/lib/module/menubar/index.web.js.map +1 -1
  275. package/lib/module/motion/index.web.js +5 -5
  276. package/lib/module/motion/index.web.js.map +1 -1
  277. package/lib/module/page-header/PageHeader.js +38 -14
  278. package/lib/module/page-header/PageHeader.js.map +1 -1
  279. package/lib/module/popover/index.web.js +5 -0
  280. package/lib/module/popover/index.web.js.map +1 -1
  281. package/lib/module/popover/parts.js +70 -12
  282. package/lib/module/popover/parts.js.map +1 -1
  283. package/lib/module/popover/surface.js +39 -13
  284. package/lib/module/popover/surface.js.map +1 -1
  285. package/lib/module/portal/index.web.js +6 -1
  286. package/lib/module/portal/index.web.js.map +1 -1
  287. package/lib/module/progressive-blur/index.web.js +5 -0
  288. package/lib/module/progressive-blur/index.web.js.map +1 -1
  289. package/lib/module/scroll/index.web.js +5 -0
  290. package/lib/module/scroll/index.web.js.map +1 -1
  291. package/lib/module/segmented-control/SegmentedControl.js +36 -1
  292. package/lib/module/segmented-control/SegmentedControl.js.map +1 -1
  293. package/lib/module/select/Select.js +5 -77
  294. package/lib/module/select/Select.js.map +1 -1
  295. package/lib/module/select/Select.web.js +147 -82
  296. package/lib/module/select/Select.web.js.map +1 -1
  297. package/lib/module/select/index.js +2 -2
  298. package/lib/module/select/index.js.map +1 -1
  299. package/lib/module/select/index.web.js +7 -2
  300. package/lib/module/select/index.web.js.map +1 -1
  301. package/lib/module/select/shared.js +106 -6
  302. package/lib/module/select/shared.js.map +1 -1
  303. package/lib/module/sidebar/Sidebar.js +121 -108
  304. package/lib/module/sidebar/Sidebar.js.map +1 -1
  305. package/lib/module/sidebar/SidebarRail.js +70 -48
  306. package/lib/module/sidebar/SidebarRail.js.map +1 -1
  307. package/lib/module/sidebar/SidebarTeamMenu.js +2 -2
  308. package/lib/module/sidebar/SidebarTeamMenu.js.map +1 -1
  309. package/lib/module/sidebar/SidebarUserMenu.js +2 -2
  310. package/lib/module/sidebar/SidebarUserMenu.js.map +1 -1
  311. package/lib/module/sidebar/parts.js +8 -8
  312. package/lib/module/sidebar/parts.js.map +1 -1
  313. package/lib/module/styles/web-view-style.js +5 -0
  314. package/lib/module/styles/web-view-style.js.map +1 -1
  315. package/lib/module/surfaces/SurfaceHost.js +6 -0
  316. package/lib/module/surfaces/SurfaceHost.js.map +1 -1
  317. package/lib/module/surfaces/index.web.js +14 -4
  318. package/lib/module/surfaces/index.web.js.map +1 -1
  319. package/lib/module/tab-bar/index.web.js +13 -10
  320. package/lib/module/tab-bar/index.web.js.map +1 -1
  321. package/lib/module/tabs/Tabs.js +49 -2
  322. package/lib/module/tabs/Tabs.js.map +1 -1
  323. package/lib/module/theme/color-scope/index.web.js +5 -0
  324. package/lib/module/theme/color-scope/index.web.js.map +1 -1
  325. package/lib/module/theme/seed-scope/index.web.js +5 -0
  326. package/lib/module/theme/seed-scope/index.web.js.map +1 -1
  327. package/lib/module/tooltip/index.web.js +5 -0
  328. package/lib/module/tooltip/index.web.js.map +1 -1
  329. package/lib/typescript/commonjs/agent-chat/index.web.d.ts.map +1 -1
  330. package/lib/typescript/commonjs/ai-chat/index.web.d.ts.map +1 -1
  331. package/lib/typescript/commonjs/alert-dialog/index.web.d.ts +5 -1
  332. package/lib/typescript/commonjs/alert-dialog/index.web.d.ts.map +1 -1
  333. package/lib/typescript/commonjs/avatar-group/index.web.d.ts.map +1 -1
  334. package/lib/typescript/commonjs/bottom-sheet/index.web.d.ts.map +1 -1
  335. package/lib/typescript/commonjs/code/index.d.ts +2 -0
  336. package/lib/typescript/commonjs/code/index.d.ts.map +1 -1
  337. package/lib/typescript/commonjs/command/index.web.d.ts.map +1 -1
  338. package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts +8 -0
  339. package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts.map +1 -1
  340. package/lib/typescript/commonjs/composer-loader/index.web.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/composer-panel/index.web.d.ts.map +1 -1
  342. package/lib/typescript/commonjs/connection-dots/index.web.d.ts.map +1 -1
  343. package/lib/typescript/commonjs/connection-status/index.web.d.ts.map +1 -1
  344. package/lib/typescript/commonjs/content-panel/index.web.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/context-menu/ContextMenu.web.d.ts.map +1 -1
  346. package/lib/typescript/commonjs/context-menu/context.d.ts +3 -0
  347. package/lib/typescript/commonjs/context-menu/context.d.ts.map +1 -1
  348. package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
  349. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  350. package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -1
  351. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  352. package/lib/typescript/commonjs/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
  353. package/lib/typescript/commonjs/dropdown-menu/index.web.d.ts.map +1 -1
  354. package/lib/typescript/commonjs/floating/FloatingPanel.d.ts +1 -1
  355. package/lib/typescript/commonjs/floating/FloatingPanel.d.ts.map +1 -1
  356. package/lib/typescript/commonjs/floating/escape-stack.d.ts +55 -0
  357. package/lib/typescript/commonjs/floating/escape-stack.d.ts.map +1 -0
  358. package/lib/typescript/commonjs/floating/menu-keyboard.d.ts +57 -0
  359. package/lib/typescript/commonjs/floating/menu-keyboard.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/floating/menu-sub-flyout.d.ts.map +1 -1
  361. package/lib/typescript/commonjs/floating/types.d.ts +11 -0
  362. package/lib/typescript/commonjs/floating/types.d.ts.map +1 -1
  363. package/lib/typescript/commonjs/fonts/index.web.d.ts.map +1 -1
  364. package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
  365. package/lib/typescript/commonjs/frosted-icon-button/index.web.d.ts.map +1 -1
  366. package/lib/typescript/commonjs/hooks/roving-focus.d.ts +66 -0
  367. package/lib/typescript/commonjs/hooks/roving-focus.d.ts.map +1 -0
  368. package/lib/typescript/commonjs/hover-card/index.web.d.ts.map +1 -1
  369. package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts +8 -0
  370. package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts +8 -0
  372. package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts +8 -0
  374. package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts +8 -0
  376. package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts +8 -0
  378. package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts.map +1 -0
  379. package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts +8 -0
  380. package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts +8 -0
  382. package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts +8 -0
  384. package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
  386. package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts +8 -0
  388. package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts +8 -0
  390. package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts +8 -0
  392. package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts +8 -0
  394. package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts +8 -0
  396. package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/icons/remix/index.d.ts +14 -0
  398. package/lib/typescript/commonjs/icons/remix/index.d.ts.map +1 -1
  399. package/lib/typescript/commonjs/index.d.ts +2 -1
  400. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  401. package/lib/typescript/commonjs/index.web.d.ts +2 -1
  402. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  403. package/lib/typescript/commonjs/layout/StickySection.d.ts +8 -0
  404. package/lib/typescript/commonjs/layout/StickySection.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/layout/header-dock.d.ts +21 -0
  406. package/lib/typescript/commonjs/layout/header-dock.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/layout/index.d.ts +3 -0
  408. package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
  409. package/lib/typescript/commonjs/list/index.web.d.ts.map +1 -1
  410. package/lib/typescript/commonjs/loading/Loading.d.ts +8 -2
  411. package/lib/typescript/commonjs/loading/Loading.d.ts.map +1 -1
  412. package/lib/typescript/commonjs/loading/Loading.web.d.ts +10 -2
  413. package/lib/typescript/commonjs/loading/Loading.web.d.ts.map +1 -1
  414. package/lib/typescript/commonjs/loading/LoadingBase.d.ts +64 -0
  415. package/lib/typescript/commonjs/loading/LoadingBase.d.ts.map +1 -0
  416. package/lib/typescript/commonjs/loading/index.web.d.ts.map +1 -1
  417. package/lib/typescript/commonjs/media-flight/index.web.d.ts +0 -9
  418. package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -1
  419. package/lib/typescript/commonjs/menubar/Menubar.d.ts +14 -9
  420. package/lib/typescript/commonjs/menubar/Menubar.d.ts.map +1 -1
  421. package/lib/typescript/commonjs/menubar/Menubar.web.d.ts +8 -6
  422. package/lib/typescript/commonjs/menubar/Menubar.web.d.ts.map +1 -1
  423. package/lib/typescript/commonjs/menubar/MenubarBase.d.ts +5 -0
  424. package/lib/typescript/commonjs/menubar/MenubarBase.d.ts.map +1 -0
  425. package/lib/typescript/commonjs/menubar/index.web.d.ts.map +1 -1
  426. package/lib/typescript/commonjs/motion/index.web.d.ts +0 -5
  427. package/lib/typescript/commonjs/motion/index.web.d.ts.map +1 -1
  428. package/lib/typescript/commonjs/page-header/PageHeader.d.ts.map +1 -1
  429. package/lib/typescript/commonjs/page-header/types.d.ts +10 -6
  430. package/lib/typescript/commonjs/page-header/types.d.ts.map +1 -1
  431. package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
  432. package/lib/typescript/commonjs/popover/parts.d.ts.map +1 -1
  433. package/lib/typescript/commonjs/popover/surface.d.ts +15 -5
  434. package/lib/typescript/commonjs/popover/surface.d.ts.map +1 -1
  435. package/lib/typescript/commonjs/portal/index.web.d.ts +1 -1
  436. package/lib/typescript/commonjs/portal/index.web.d.ts.map +1 -1
  437. package/lib/typescript/commonjs/progressive-blur/index.web.d.ts.map +1 -1
  438. package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
  439. package/lib/typescript/commonjs/segmented-control/SegmentedControl.d.ts.map +1 -1
  440. package/lib/typescript/commonjs/select/Select.d.ts +2 -4
  441. package/lib/typescript/commonjs/select/Select.d.ts.map +1 -1
  442. package/lib/typescript/commonjs/select/Select.web.d.ts +2 -4
  443. package/lib/typescript/commonjs/select/Select.web.d.ts.map +1 -1
  444. package/lib/typescript/commonjs/select/index.d.ts +2 -2
  445. package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
  446. package/lib/typescript/commonjs/select/index.web.d.ts +2 -2
  447. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  448. package/lib/typescript/commonjs/select/shared.d.ts +52 -5
  449. package/lib/typescript/commonjs/select/shared.d.ts.map +1 -1
  450. package/lib/typescript/commonjs/select/types.d.ts +6 -0
  451. package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
  452. package/lib/typescript/commonjs/sidebar/Sidebar.d.ts.map +1 -1
  453. package/lib/typescript/commonjs/sidebar/SidebarRail.d.ts +1 -1
  454. package/lib/typescript/commonjs/sidebar/SidebarRail.d.ts.map +1 -1
  455. package/lib/typescript/commonjs/sidebar/parts.d.ts +8 -2
  456. package/lib/typescript/commonjs/sidebar/parts.d.ts.map +1 -1
  457. package/lib/typescript/commonjs/sidebar/types.d.ts +2 -0
  458. package/lib/typescript/commonjs/sidebar/types.d.ts.map +1 -1
  459. package/lib/typescript/commonjs/styles/web-view-style.d.ts +2 -0
  460. package/lib/typescript/commonjs/styles/web-view-style.d.ts.map +1 -1
  461. package/lib/typescript/commonjs/surfaces/SurfaceHost.d.ts.map +1 -1
  462. package/lib/typescript/commonjs/surfaces/index.web.d.ts +9 -4
  463. package/lib/typescript/commonjs/surfaces/index.web.d.ts.map +1 -1
  464. package/lib/typescript/commonjs/tab-bar/index.web.d.ts.map +1 -1
  465. package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
  466. package/lib/typescript/commonjs/tabs/types.d.ts +6 -0
  467. package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
  468. package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts.map +1 -1
  469. package/lib/typescript/commonjs/theme/seed-scope/index.web.d.ts.map +1 -1
  470. package/lib/typescript/commonjs/tooltip/index.web.d.ts.map +1 -1
  471. package/lib/typescript/module/agent-chat/index.web.d.ts.map +1 -1
  472. package/lib/typescript/module/ai-chat/index.web.d.ts.map +1 -1
  473. package/lib/typescript/module/alert-dialog/index.web.d.ts +5 -1
  474. package/lib/typescript/module/alert-dialog/index.web.d.ts.map +1 -1
  475. package/lib/typescript/module/avatar-group/index.web.d.ts.map +1 -1
  476. package/lib/typescript/module/bottom-sheet/index.web.d.ts.map +1 -1
  477. package/lib/typescript/module/code/index.d.ts +2 -0
  478. package/lib/typescript/module/code/index.d.ts.map +1 -1
  479. package/lib/typescript/module/command/index.web.d.ts.map +1 -1
  480. package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts +8 -0
  481. package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts.map +1 -1
  482. package/lib/typescript/module/composer-loader/index.web.d.ts.map +1 -1
  483. package/lib/typescript/module/composer-panel/index.web.d.ts.map +1 -1
  484. package/lib/typescript/module/connection-dots/index.web.d.ts.map +1 -1
  485. package/lib/typescript/module/connection-status/index.web.d.ts.map +1 -1
  486. package/lib/typescript/module/content-panel/index.web.d.ts.map +1 -1
  487. package/lib/typescript/module/context-menu/ContextMenu.web.d.ts.map +1 -1
  488. package/lib/typescript/module/context-menu/context.d.ts +3 -0
  489. package/lib/typescript/module/context-menu/context.d.ts.map +1 -1
  490. package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
  491. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  492. package/lib/typescript/module/dialog/index.web.d.ts +2 -1
  493. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  494. package/lib/typescript/module/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
  495. package/lib/typescript/module/dropdown-menu/index.web.d.ts.map +1 -1
  496. package/lib/typescript/module/floating/FloatingPanel.d.ts +1 -1
  497. package/lib/typescript/module/floating/FloatingPanel.d.ts.map +1 -1
  498. package/lib/typescript/module/floating/escape-stack.d.ts +55 -0
  499. package/lib/typescript/module/floating/escape-stack.d.ts.map +1 -0
  500. package/lib/typescript/module/floating/menu-keyboard.d.ts +57 -0
  501. package/lib/typescript/module/floating/menu-keyboard.d.ts.map +1 -0
  502. package/lib/typescript/module/floating/menu-sub-flyout.d.ts.map +1 -1
  503. package/lib/typescript/module/floating/types.d.ts +11 -0
  504. package/lib/typescript/module/floating/types.d.ts.map +1 -1
  505. package/lib/typescript/module/fonts/index.web.d.ts.map +1 -1
  506. package/lib/typescript/module/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
  507. package/lib/typescript/module/frosted-icon-button/index.web.d.ts.map +1 -1
  508. package/lib/typescript/module/hooks/roving-focus.d.ts +66 -0
  509. package/lib/typescript/module/hooks/roving-focus.d.ts.map +1 -0
  510. package/lib/typescript/module/hover-card/index.web.d.ts.map +1 -1
  511. package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts +8 -0
  512. package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts.map +1 -0
  513. package/lib/typescript/module/icons/remix/RiBugLine.d.ts +8 -0
  514. package/lib/typescript/module/icons/remix/RiBugLine.d.ts.map +1 -0
  515. package/lib/typescript/module/icons/remix/RiChat1Line.d.ts +8 -0
  516. package/lib/typescript/module/icons/remix/RiChat1Line.d.ts.map +1 -0
  517. package/lib/typescript/module/icons/remix/RiCloudLine.d.ts +8 -0
  518. package/lib/typescript/module/icons/remix/RiCloudLine.d.ts.map +1 -0
  519. package/lib/typescript/module/icons/remix/RiCodeLine.d.ts +8 -0
  520. package/lib/typescript/module/icons/remix/RiCodeLine.d.ts.map +1 -0
  521. package/lib/typescript/module/icons/remix/RiCpuLine.d.ts +8 -0
  522. package/lib/typescript/module/icons/remix/RiCpuLine.d.ts.map +1 -0
  523. package/lib/typescript/module/icons/remix/RiFloodLine.d.ts +8 -0
  524. package/lib/typescript/module/icons/remix/RiFloodLine.d.ts.map +1 -0
  525. package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts +8 -0
  526. package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
  527. package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
  528. package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
  529. package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts +8 -0
  530. package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
  531. package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts +8 -0
  532. package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts.map +1 -0
  533. package/lib/typescript/module/icons/remix/RiServerLine.d.ts +8 -0
  534. package/lib/typescript/module/icons/remix/RiServerLine.d.ts.map +1 -0
  535. package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts +8 -0
  536. package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts.map +1 -0
  537. package/lib/typescript/module/icons/remix/RiTv2Line.d.ts +8 -0
  538. package/lib/typescript/module/icons/remix/RiTv2Line.d.ts.map +1 -0
  539. package/lib/typescript/module/icons/remix/index.d.ts +14 -0
  540. package/lib/typescript/module/icons/remix/index.d.ts.map +1 -1
  541. package/lib/typescript/module/index.d.ts +2 -1
  542. package/lib/typescript/module/index.d.ts.map +1 -1
  543. package/lib/typescript/module/index.web.d.ts +2 -1
  544. package/lib/typescript/module/index.web.d.ts.map +1 -1
  545. package/lib/typescript/module/layout/StickySection.d.ts +8 -0
  546. package/lib/typescript/module/layout/StickySection.d.ts.map +1 -0
  547. package/lib/typescript/module/layout/header-dock.d.ts +21 -0
  548. package/lib/typescript/module/layout/header-dock.d.ts.map +1 -0
  549. package/lib/typescript/module/layout/index.d.ts +3 -0
  550. package/lib/typescript/module/layout/index.d.ts.map +1 -1
  551. package/lib/typescript/module/list/index.web.d.ts.map +1 -1
  552. package/lib/typescript/module/loading/Loading.d.ts +8 -2
  553. package/lib/typescript/module/loading/Loading.d.ts.map +1 -1
  554. package/lib/typescript/module/loading/Loading.web.d.ts +10 -2
  555. package/lib/typescript/module/loading/Loading.web.d.ts.map +1 -1
  556. package/lib/typescript/module/loading/LoadingBase.d.ts +64 -0
  557. package/lib/typescript/module/loading/LoadingBase.d.ts.map +1 -0
  558. package/lib/typescript/module/loading/index.web.d.ts.map +1 -1
  559. package/lib/typescript/module/media-flight/index.web.d.ts +0 -9
  560. package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -1
  561. package/lib/typescript/module/menubar/Menubar.d.ts +14 -9
  562. package/lib/typescript/module/menubar/Menubar.d.ts.map +1 -1
  563. package/lib/typescript/module/menubar/Menubar.web.d.ts +8 -6
  564. package/lib/typescript/module/menubar/Menubar.web.d.ts.map +1 -1
  565. package/lib/typescript/module/menubar/MenubarBase.d.ts +5 -0
  566. package/lib/typescript/module/menubar/MenubarBase.d.ts.map +1 -0
  567. package/lib/typescript/module/menubar/index.web.d.ts.map +1 -1
  568. package/lib/typescript/module/motion/index.web.d.ts +0 -5
  569. package/lib/typescript/module/motion/index.web.d.ts.map +1 -1
  570. package/lib/typescript/module/page-header/PageHeader.d.ts.map +1 -1
  571. package/lib/typescript/module/page-header/types.d.ts +10 -6
  572. package/lib/typescript/module/page-header/types.d.ts.map +1 -1
  573. package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
  574. package/lib/typescript/module/popover/parts.d.ts.map +1 -1
  575. package/lib/typescript/module/popover/surface.d.ts +15 -5
  576. package/lib/typescript/module/popover/surface.d.ts.map +1 -1
  577. package/lib/typescript/module/portal/index.web.d.ts +1 -1
  578. package/lib/typescript/module/portal/index.web.d.ts.map +1 -1
  579. package/lib/typescript/module/progressive-blur/index.web.d.ts.map +1 -1
  580. package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
  581. package/lib/typescript/module/segmented-control/SegmentedControl.d.ts.map +1 -1
  582. package/lib/typescript/module/select/Select.d.ts +2 -4
  583. package/lib/typescript/module/select/Select.d.ts.map +1 -1
  584. package/lib/typescript/module/select/Select.web.d.ts +2 -4
  585. package/lib/typescript/module/select/Select.web.d.ts.map +1 -1
  586. package/lib/typescript/module/select/index.d.ts +2 -2
  587. package/lib/typescript/module/select/index.d.ts.map +1 -1
  588. package/lib/typescript/module/select/index.web.d.ts +2 -2
  589. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  590. package/lib/typescript/module/select/shared.d.ts +52 -5
  591. package/lib/typescript/module/select/shared.d.ts.map +1 -1
  592. package/lib/typescript/module/select/types.d.ts +6 -0
  593. package/lib/typescript/module/select/types.d.ts.map +1 -1
  594. package/lib/typescript/module/sidebar/Sidebar.d.ts.map +1 -1
  595. package/lib/typescript/module/sidebar/SidebarRail.d.ts +1 -1
  596. package/lib/typescript/module/sidebar/SidebarRail.d.ts.map +1 -1
  597. package/lib/typescript/module/sidebar/parts.d.ts +8 -2
  598. package/lib/typescript/module/sidebar/parts.d.ts.map +1 -1
  599. package/lib/typescript/module/sidebar/types.d.ts +2 -0
  600. package/lib/typescript/module/sidebar/types.d.ts.map +1 -1
  601. package/lib/typescript/module/styles/web-view-style.d.ts +2 -0
  602. package/lib/typescript/module/styles/web-view-style.d.ts.map +1 -1
  603. package/lib/typescript/module/surfaces/SurfaceHost.d.ts.map +1 -1
  604. package/lib/typescript/module/surfaces/index.web.d.ts +9 -4
  605. package/lib/typescript/module/surfaces/index.web.d.ts.map +1 -1
  606. package/lib/typescript/module/tab-bar/index.web.d.ts.map +1 -1
  607. package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
  608. package/lib/typescript/module/tabs/types.d.ts +6 -0
  609. package/lib/typescript/module/tabs/types.d.ts.map +1 -1
  610. package/lib/typescript/module/theme/color-scope/index.web.d.ts.map +1 -1
  611. package/lib/typescript/module/theme/seed-scope/index.web.d.ts.map +1 -1
  612. package/lib/typescript/module/tooltip/index.web.d.ts.map +1 -1
  613. package/package.json +1 -1
  614. package/src/agent-chat/index.web.ts +5 -3
  615. package/src/ai-chat/index.web.ts +5 -2
  616. package/src/alert-dialog/index.web.ts +10 -1
  617. package/src/avatar-group/index.web.ts +5 -0
  618. package/src/bottom-sheet/index.web.ts +5 -0
  619. package/src/code/index.ts +2 -0
  620. package/src/command/index.web.ts +5 -0
  621. package/src/composer-loader/ComposerLoader.web.tsx +8 -0
  622. package/src/composer-loader/index.web.ts +5 -2
  623. package/src/composer-panel/index.web.ts +5 -3
  624. package/src/connection-dots/index.web.ts +5 -0
  625. package/src/connection-status/index.web.ts +5 -0
  626. package/src/content-panel/index.web.ts +5 -0
  627. package/src/context-menu/ContextMenu.web.tsx +26 -3
  628. package/src/context-menu/context.ts +3 -0
  629. package/src/context-menu/index.web.ts +5 -0
  630. package/src/dialog/Dialog.web.tsx +13 -0
  631. package/src/dialog/index.web.ts +7 -11
  632. package/src/dropdown-menu/DropdownMenu.web.tsx +25 -2
  633. package/src/dropdown-menu/index.web.ts +5 -0
  634. package/src/floating/FloatingPanel.tsx +37 -38
  635. package/src/floating/escape-stack.ts +92 -0
  636. package/src/floating/menu-keyboard.ts +242 -0
  637. package/src/floating/menu-sub-flyout.tsx +22 -17
  638. package/src/floating/types.ts +11 -0
  639. package/src/fonts/index.web.ts +5 -20
  640. package/src/frosted-icon-button/FrostedIconButton.web.tsx +9 -0
  641. package/src/frosted-icon-button/index.web.ts +5 -7
  642. package/src/hooks/roving-focus.ts +204 -0
  643. package/src/hover-card/index.web.ts +5 -0
  644. package/src/icons/remix/RiBookReadLine.tsx +6 -0
  645. package/src/icons/remix/RiBugLine.tsx +6 -0
  646. package/src/icons/remix/RiChat1Line.tsx +6 -0
  647. package/src/icons/remix/RiCloudLine.tsx +6 -0
  648. package/src/icons/remix/RiCodeLine.tsx +6 -0
  649. package/src/icons/remix/RiCpuLine.tsx +6 -0
  650. package/src/icons/remix/RiFloodLine.tsx +6 -0
  651. package/src/icons/remix/RiLockUnlockLine.tsx +6 -0
  652. package/src/icons/remix/RiMoneyDollarCircleLine.tsx +6 -0
  653. package/src/icons/remix/RiPlayCircleLine.tsx +6 -0
  654. package/src/icons/remix/RiRocket2Line.tsx +6 -0
  655. package/src/icons/remix/RiServerLine.tsx +6 -0
  656. package/src/icons/remix/RiShareBoxLine.tsx +6 -0
  657. package/src/icons/remix/RiTv2Line.tsx +6 -0
  658. package/src/icons/remix/index.ts +14 -0
  659. package/src/index.ts +4 -0
  660. package/src/index.web.ts +4 -0
  661. package/src/layout/StickySection.tsx +75 -0
  662. package/src/layout/header-dock.tsx +42 -0
  663. package/src/layout/index.ts +4 -0
  664. package/src/list/index.web.ts +5 -0
  665. package/src/loading/Loading.tsx +15 -135
  666. package/src/loading/Loading.web.tsx +16 -134
  667. package/src/loading/LoadingBase.tsx +170 -0
  668. package/src/loading/index.web.ts +5 -13
  669. package/src/media-flight/index.web.ts +5 -9
  670. package/src/menubar/Menubar.tsx +16 -147
  671. package/src/menubar/Menubar.web.tsx +15 -138
  672. package/src/menubar/MenubarBase.tsx +170 -0
  673. package/src/menubar/index.web.ts +5 -0
  674. package/src/motion/index.web.ts +5 -5
  675. package/src/page-header/PageHeader.tsx +26 -12
  676. package/src/page-header/types.ts +10 -6
  677. package/src/popover/index.web.ts +5 -0
  678. package/src/popover/parts.tsx +76 -12
  679. package/src/popover/surface.ts +68 -15
  680. package/src/portal/index.web.ts +6 -1
  681. package/src/progressive-blur/index.web.ts +5 -0
  682. package/src/scroll/index.web.ts +5 -0
  683. package/src/segmented-control/SegmentedControl.tsx +45 -1
  684. package/src/select/Select.tsx +4 -67
  685. package/src/select/Select.web.tsx +133 -69
  686. package/src/select/index.ts +3 -3
  687. package/src/select/index.web.ts +8 -3
  688. package/src/select/shared.tsx +107 -5
  689. package/src/select/types.ts +6 -0
  690. package/src/sidebar/Sidebar.tsx +3 -0
  691. package/src/sidebar/SidebarRail.tsx +6 -1
  692. package/src/sidebar/SidebarTeamMenu.tsx +2 -2
  693. package/src/sidebar/SidebarUserMenu.tsx +2 -2
  694. package/src/sidebar/parts.tsx +8 -9
  695. package/src/sidebar/types.ts +2 -0
  696. package/src/styles/web-view-style.ts +5 -0
  697. package/src/surfaces/SurfaceHost.tsx +6 -0
  698. package/src/surfaces/index.web.ts +14 -4
  699. package/src/tab-bar/index.web.ts +13 -10
  700. package/src/tabs/Tabs.tsx +65 -1
  701. package/src/tabs/types.ts +6 -0
  702. package/src/theme/color-scope/index.web.ts +5 -0
  703. package/src/theme/seed-scope/index.web.ts +5 -0
  704. package/src/tooltip/index.web.ts +5 -0
@@ -32,6 +32,8 @@ import { NOT_DISABLED, interactiveWebCss, useInteractiveWebCss } from '../styles
32
32
  import type { WebCssStyle } from '../styles/web-view-style';
33
33
  import { mixColor, resolveButtonRamps } from '../button/shared';
34
34
  import { useFieldMembership } from '../field/membership';
35
+ import { handleRovingKeyDown, useRovingTabIndex } from '../hooks/roving-focus';
36
+ import { webDataSet } from '../styles/web-data';
35
37
 
36
38
  /**
37
39
  * A segmented control using Bloom's canonical surface and text roles.
@@ -104,6 +106,16 @@ function resolveSegmentedPalette(theme: Theme): SegmentedPalette {
104
106
 
105
107
  const STYLE_ID = 'bloom-segmented-control-web-css';
106
108
  const SEGMENT = '[data-bloom-segmented-item]';
109
+ /** The group node — the owner a segment's keyboard walks within. */
110
+ const GROUP = '[data-bloom-segmented-group]';
111
+
112
+ /** The attribute that says a segment is the chosen one, per role. */
113
+ function isChosenSegment(element: HTMLElement): boolean {
114
+ return (
115
+ element.getAttribute('aria-checked') === 'true' ||
116
+ element.getAttribute('aria-selected') === 'true'
117
+ );
118
+ }
107
119
 
108
120
  const SEGMENTED_CSS = interactiveWebCss({
109
121
  selector: SEGMENT,
@@ -230,6 +242,15 @@ export function SegmentedControl<T extends string>({
230
242
  const candidate = useSharedValue('');
231
243
  const suppressUntil = useRef(0);
232
244
  const [release, setRelease] = useState(0);
245
+ // Web: ONE tab stop for the whole group — the chosen segment — as the ARIA
246
+ // radio-group and tab patterns require (`hooks/roving-focus.ts`).
247
+ const groupRef = useRef<View | null>(null);
248
+ useRovingTabIndex(
249
+ () => groupRef.current as unknown as Element | null,
250
+ SEGMENT,
251
+ isChosenSegment,
252
+ GROUP,
253
+ );
233
254
  const register = useCallback((segment: SegmentPosition) => {
234
255
  segments.value = [...segments.value.filter(item => item.value !== segment.value), segment].sort((a, b) => a.x - b.x);
235
256
  return () => { segments.value = segments.value.filter(item => item.value !== segment.value); };
@@ -335,6 +356,8 @@ export function SegmentedControl<T extends string>({
335
356
  return (
336
357
  <GestureDetector gesture={gesture} touchAction="pan-y">
337
358
  <View
359
+ ref={groupRef}
360
+ {...webDataSet({ bloomSegmentedGroup: '' })}
338
361
  testID={testID}
339
362
  nativeID={field.nativeID}
340
363
  accessibilityLabel={field.accessibilityLabel}
@@ -456,6 +479,27 @@ export function SegmentedControlItem({
456
479
  const itemRole = ctx.type === 'tabs' ? 'tab' : 'radio';
457
480
  const geometry = GEOMETRY[ctx.size];
458
481
 
482
+ // Web keyboard, per the ARIA pattern the group's role names. A radio group
483
+ // answers all four arrows and has no Home/End; a tab strip answers
484
+ // Left/Right plus Home/End. Both select as focus moves — the control is a
485
+ // controlled value with nothing expensive behind a change — and both take
486
+ // Space, which react-native-web only synthesises for `role="button"`. Enter
487
+ // stays with react-native-web's own press. `allowKeyboardPress` first, so a
488
+ // drag's click suppression can never swallow a key.
489
+ const onKeyDown = useCallback(
490
+ (event: { key: string; currentTarget: unknown; preventDefault: () => void }) => {
491
+ ctx.allowKeyboardPress();
492
+ handleRovingKeyDown(event, {
493
+ selector: SEGMENT,
494
+ owner: GROUP,
495
+ orientation: ctx.type === 'tabs' ? 'horizontal' : 'both',
496
+ homeEnd: ctx.type === 'tabs',
497
+ activate: 'follow',
498
+ });
499
+ },
500
+ [ctx],
501
+ );
502
+
459
503
  const itemStyle: WebCssStyle = {
460
504
  flexGrow: 1,
461
505
  flexDirection: 'row',
@@ -488,7 +532,7 @@ export function SegmentedControlItem({
488
532
  setPosition(measuredPosition);
489
533
  }}>
490
534
  <Pressable
491
- {...(IS_WEB ? ({ dataSet: { bloomSegmentedItem: '' }, onKeyDown: ctx.allowKeyboardPress } as Record<string, unknown>) : {})}
535
+ {...(IS_WEB ? ({ dataSet: { bloomSegmentedItem: '' }, onKeyDown } as Record<string, unknown>) : {})}
492
536
  onPress={onPress}
493
537
  onHoverIn={onHoverIn}
494
538
  onHoverOut={onHoverOut}
@@ -40,12 +40,14 @@ import {
40
40
  } from '../styles/styled-primitives';
41
41
  import { borderRadius } from '../styles/tokens';
42
42
  import {
43
+ defaultExtractLabel,
43
44
  defaultItemValueExtractor,
44
45
  ItemContext,
45
46
  SelectChevron,
46
47
  SelectTriggerStateContext,
47
48
  SelectValueRow,
48
49
  useSelectItemContext,
50
+ VALUE_TYPE,
49
51
  } from './shared';
50
52
  import type {
51
53
  SelectContentProps,
@@ -244,15 +246,6 @@ export function SelectValue({
244
246
  }
245
247
 
246
248
  /** `text-body-medium` on `md`, `text-body-2-medium` on `sm` — trigger value and option label alike. */
247
- const VALUE_TYPE = { md: 'body-medium', sm: 'body-2-medium' } as const;
248
-
249
- function defaultExtractLabel(item: unknown): React.ReactNode {
250
- if (item != null && typeof item === 'object' && 'label' in item) {
251
- return (item as { label: React.ReactNode }).label;
252
- }
253
- return String(item);
254
- }
255
-
256
249
  // ---------------------------------------------------------------------------
257
250
  // SelectIcon
258
251
  // ---------------------------------------------------------------------------
@@ -399,8 +392,8 @@ export function SelectItem({
399
392
  }, [close, onValueChange, value]);
400
393
 
401
394
  const itemCtx = useMemo<SelectItemContextValue>(
402
- () => ({ selected: isSelected, disabled }),
403
- [isSelected, disabled],
395
+ () => ({ selected: isSelected, disabled, size }),
396
+ [isSelected, disabled, size],
404
397
  );
405
398
  // Press, focus and the chosen option share the row highlight.
406
399
  const highlighted = !disabled && (focused || pressed || isSelected);
@@ -434,70 +427,14 @@ export function SelectItem({
434
427
  // SelectItemText
435
428
  // ---------------------------------------------------------------------------
436
429
 
437
- export function SelectItemText({ children, className, style }: SelectItemTextProps) {
438
- const { size } = useSelectContext();
439
- const { disabled } = useSelectItemContext();
440
- const palette = useMenuPalette();
441
- // The selected option is marked with the check and the row highlight: its
442
- // label stays at the same weight as every other row's, which is what the
443
- // target does.
444
- return (
445
- <StyledText
446
- numberOfLines={1}
447
- className={cx(
448
- SELECT_ITEM_TEXT_CLASS[size],
449
- menuTypeClass(VALUE_TYPE[size], className),
450
- className && 'text-foreground',
451
- className,
452
- )}
453
- style={[
454
- menuType(VALUE_TYPE[size], className),
455
- className ? null : { color: disabled ? palette.textDisabled : palette.text },
456
- style,
457
- ]}>
458
- {children}
459
- </StyledText>
460
- );
461
- }
462
-
463
430
  // ---------------------------------------------------------------------------
464
431
  // SelectItemIndicator
465
432
  // ---------------------------------------------------------------------------
466
433
 
467
- export function SelectItemIndicator({ icon: IconComponent = CheckIcon }: SelectItemIndicatorProps) {
468
- const palette = useMenuPalette();
469
- const { selected } = useSelectItemContext();
470
-
471
- // The same right-hand gutter the web fork draws: `absolute right-2 size-3.5`
472
- // holding a `text-muted-foreground size-4` check. It used to default to
473
- // `RadioIndicator` in the row's FLOW on the left, so a select on native and
474
- // the same select on web disagreed about both the mark and the side it is on.
475
- if (!selected) return null;
476
-
477
- return (
478
- <StyledView className={ROW_INDICATOR_END_CLASS} pointerEvents="none">
479
- <IconComponent
480
- width={ROW_ICON_SIZE}
481
- height={ROW_ICON_SIZE}
482
- fill={palette.textSecondary}
483
- />
484
- </StyledView>
485
- );
486
- }
487
-
488
434
  // ---------------------------------------------------------------------------
489
435
  // SelectSeparator
490
436
  // ---------------------------------------------------------------------------
491
437
 
492
- export function SelectSeparator() {
493
- const palette = useMenuPalette();
494
- // `-mx-2 my-1.5 h-px bg-border-button-default` — a filled 1px rule, not a
495
- // bottom border on a stretched box.
496
- return (
497
- <StyledView className={SELECT_SEPARATOR_CLASS} style={{ backgroundColor: palette.border }} />
498
- );
499
- }
500
-
501
438
  // ---------------------------------------------------------------------------
502
439
  // Styles
503
440
  // ---------------------------------------------------------------------------
@@ -1,6 +1,7 @@
1
1
  import { useBloomAppearance } from '../appearance';
2
2
  import React, {
3
3
  createContext,
4
+ useCallback,
4
5
  useContext,
5
6
  useEffect,
6
7
  useLayoutEffect,
@@ -42,12 +43,14 @@ import { adoptStyleSheet } from '../styles/adopt-style-sheet';
42
43
  import { borderRadius } from '../styles/tokens';
43
44
  import type { WebCssStyle } from '../styles/web-view-style';
44
45
  import {
46
+ defaultExtractLabel,
45
47
  defaultItemValueExtractor,
46
48
  ItemContext,
47
49
  SelectChevron,
48
50
  SelectTriggerStateContext,
49
51
  SelectValueRow,
50
52
  useSelectItemContext,
53
+ VALUE_TYPE,
51
54
  } from './shared';
52
55
  import type {
53
56
  SelectContentProps,
@@ -61,10 +64,17 @@ import type {
61
64
  SelectValueProps,
62
65
  } from './types';
63
66
  import { useFieldMembership } from '../field/membership';
67
+ import { isSpaceKey, rovingItems, rovingMove, rovingTarget } from '../hooks/roving-focus';
68
+ import { hostElement, useReturnFocusOnClose } from '../floating/menu-keyboard';
64
69
 
65
70
  /** The trigger's `offset={4}`. */
66
71
  const SELECT_OFFSET = 4;
67
72
 
73
+ /** An option row, marked through `dataSet` — a class never reaches the DOM. */
74
+ const OPTION = '[data-bloom-select-option]';
75
+ /** The option list, so a nested list's rows are never counted as this one's. */
76
+ const LIST = '[data-bloom-select-list]';
77
+
68
78
  /**
69
79
  * The trigger's interactive states — `hover:bg-background-primary-hover
70
80
  * hover:border-border-button-hover` and `focus-visible:ring-2 ring-offset-2
@@ -129,6 +139,15 @@ type SelectContextValue = Pick<SelectProps, 'value' | 'onValueChange' | 'disable
129
139
  close: () => void;
130
140
  /** The trigger box, so `SelectContent` can anchor itself against it. */
131
141
  triggerRef: React.RefObject<View | null>;
142
+ /**
143
+ * Set by a key on the trigger (Enter, Space, ArrowDown, ArrowUp) and consumed
144
+ * by `SelectContent`, which moves focus into the list only when the key asked
145
+ * for it. A pointer open leaves focus where the pointer put it.
146
+ */
147
+ keyboardIntent: React.MutableRefObject<boolean>;
148
+ /** Bumped to ask an ALREADY-open list to take focus (an arrow on its trigger). */
149
+ focusRequest: number;
150
+ requestListFocus: () => void;
132
151
  };
133
152
 
134
153
  const SelectContext = createContext<SelectContextValue | null>(null);
@@ -166,6 +185,8 @@ export function Select({ children, value, onValueChange, disabled, size: sizePro
166
185
  const [isOpen, setIsOpen] = useState(false);
167
186
  const triggerRef = useRef<View | null>(null);
168
187
  const valueStoreState = useState<unknown>(undefined);
188
+ const keyboardIntent = useRef(false);
189
+ const [focusRequest, setFocusRequest] = useState(0);
169
190
 
170
191
  const ctx = useMemo<SelectContextValue>(
171
192
  () => ({
@@ -177,8 +198,14 @@ export function Select({ children, value, onValueChange, disabled, size: sizePro
177
198
  open: () => setIsOpen(true),
178
199
  close: () => setIsOpen(false),
179
200
  triggerRef,
201
+ keyboardIntent,
202
+ focusRequest,
203
+ requestListFocus: () => {
204
+ keyboardIntent.current = true;
205
+ setFocusRequest((count) => count + 1);
206
+ },
180
207
  }),
181
- [value, onValueChange, disabled, size, isOpen],
208
+ [value, onValueChange, disabled, size, isOpen, focusRequest],
182
209
  );
183
210
 
184
211
  return (
@@ -258,6 +285,35 @@ export function SelectTrigger({
258
285
  [isDisabled, ctx.isOpen, ctx.size],
259
286
  );
260
287
 
288
+ // The keyboard's way INTO the list (ARIA select-only combobox). Enter and
289
+ // Space already press the trigger through react-native-web; they only mark
290
+ // the open as a keyboard one here, so the list takes focus when it arrives.
291
+ // ArrowDown/ArrowUp open it too — and on a list the pointer already opened,
292
+ // they move focus into it.
293
+ //
294
+ // A DOM listener on the anchor wrapper rather than an `onKeyDown` prop: under
295
+ // `asChild` the control is the caller's element, whose props this family does
296
+ // not own. The wrapper holds only the trigger, and its bubble listener runs
297
+ // before React's root-level handlers.
298
+ const { isOpen, open, keyboardIntent, requestListFocus, triggerRef } = ctx;
299
+ useEffect(() => {
300
+ const wrapper = hostElement(triggerRef.current);
301
+ if (!wrapper || isDisabled) return undefined;
302
+ const onKeyDown = (event: KeyboardEvent) => {
303
+ if (event.defaultPrevented) return;
304
+ if (event.key === 'Enter' || isSpaceKey(event.key)) {
305
+ if (!isOpen) keyboardIntent.current = true;
306
+ return;
307
+ }
308
+ if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;
309
+ event.preventDefault();
310
+ if (!isOpen) open();
311
+ requestListFocus();
312
+ };
313
+ wrapper.addEventListener('keydown', onKeyDown);
314
+ return () => wrapper.removeEventListener('keydown', onKeyDown);
315
+ }, [triggerRef, isDisabled, isOpen, open, keyboardIntent, requestListFocus]);
316
+
261
317
  return (
262
318
  <SelectTriggerStateContext.Provider value={triggerState}>
263
319
  <TriggerSlot
@@ -338,15 +394,6 @@ export function SelectValue({
338
394
  }
339
395
 
340
396
  /** `text-body-medium` on `md`, `text-body-2-medium` on `sm` — trigger value and option label alike. */
341
- const VALUE_TYPE = { md: 'body-medium', sm: 'body-2-medium' } as const;
342
-
343
- function defaultExtractLabel(item: unknown): React.ReactNode {
344
- if (item != null && typeof item === 'object' && 'label' in item) {
345
- return (item as { label: React.ReactNode }).label;
346
- }
347
- return String(item);
348
- }
349
-
350
397
  // ---------------------------------------------------------------------------
351
398
  // SelectIcon
352
399
  // ---------------------------------------------------------------------------
@@ -393,6 +440,76 @@ export function SelectContent<T>({
393
440
  }, [items, ctx.value, valueExtractor, setStoredItem]);
394
441
  const anchor = useAnchorRect(ctx.triggerRef, ctx.isOpen);
395
442
  const listRef = useRef<ScrollView | null>(null);
443
+ // The list's DOM node as STATE as well: the panel portals in a render after it
444
+ // opens, and the keyboard listener and the initial focus both need the node.
445
+ const [listNode, setListNode] = useState<HTMLElement | null>(null);
446
+ const listNodeRef = useRef<HTMLElement | null>(null);
447
+ const attachList = useCallback((scrollView: ScrollView | null) => {
448
+ listRef.current = scrollView;
449
+ const node = hostElement(scrollView);
450
+ listNodeRef.current = node;
451
+ setListNode(node);
452
+ }, []);
453
+
454
+ const { isOpen, close, keyboardIntent, focusRequest, triggerRef } = ctx;
455
+
456
+ // A keyboard open lands focus on the chosen option, or the first enabled one
457
+ // — the ARIA listbox contract. Without it the list opened and focus stayed on
458
+ // the trigger, where the arrows did nothing: a keyboard user could open the
459
+ // select and never choose.
460
+ useEffect(() => {
461
+ if (!isOpen || !listNode || !keyboardIntent.current) return;
462
+ keyboardIntent.current = false;
463
+ const options = rovingItems(listNode, OPTION, { owner: LIST });
464
+ const chosen =
465
+ options.find((option) => option.getAttribute('aria-checked') === 'true') ?? options[0];
466
+ chosen?.focus({ preventScroll: true });
467
+ }, [isOpen, listNode, focusRequest, keyboardIntent]);
468
+
469
+ // Keys inside the open list. ArrowDown/ArrowUp step between enabled options
470
+ // and stop at the ends; Home/End jump to them; Space chooses — react-native-web
471
+ // presses a `radio` on Enter only, so Enter is already the option's own; Tab
472
+ // closes the list and hands focus back to the trigger, the way a native
473
+ // select does. Escape is `FloatingPanel`'s (it closes the innermost surface
474
+ // only), and the close below returns focus.
475
+ useEffect(() => {
476
+ if (!listNode) return undefined;
477
+ const onKeyDown = (event: KeyboardEvent) => {
478
+ if (event.defaultPrevented) return;
479
+ const active =
480
+ typeof document !== 'undefined' ? (document.activeElement as HTMLElement | null) : null;
481
+ const current = active?.closest?.(OPTION) ?? null;
482
+ if (event.key === 'Tab') {
483
+ event.preventDefault();
484
+ close();
485
+ return;
486
+ }
487
+ if (isSpaceKey(event.key)) {
488
+ if (!current || current.getAttribute('aria-disabled') === 'true') return;
489
+ event.preventDefault();
490
+ (current as HTMLElement).click();
491
+ return;
492
+ }
493
+ const move = rovingMove(event.key, { orientation: 'vertical', homeEnd: true });
494
+ if (move === null) return;
495
+ event.preventDefault();
496
+ rovingTarget(rovingItems(listNode, OPTION, { owner: LIST }), current, move, false)?.focus();
497
+ };
498
+ listNode.addEventListener('keydown', onKeyDown);
499
+ return () => listNode.removeEventListener('keydown', onKeyDown);
500
+ }, [listNode, close]);
501
+
502
+ // Closing hands focus back to the trigger when it was inside the list — a
503
+ // choice, Escape, Tab — so the next Tab continues from the select instead of
504
+ // from the top of the document (`floating/menu-keyboard.ts`).
505
+ useEffect(() => {
506
+ if (!isOpen) keyboardIntent.current = false;
507
+ }, [isOpen, keyboardIntent]);
508
+ useReturnFocusOnClose(
509
+ triggerRef,
510
+ isOpen,
511
+ useCallback((element: Element) => listNodeRef.current?.contains(element) === true, []),
512
+ );
396
513
 
397
514
  // The list is a plain `max-h-[240px] overflow-auto` box: the native
398
515
  // scrollbar and nothing else. It used to carry shadcn's scroll-up/down
@@ -447,7 +564,8 @@ export function SelectContent<T>({
447
564
  className={className}
448
565
  >
449
566
  <ScrollView
450
- ref={listRef}
567
+ ref={attachList}
568
+ {...({ dataSet: { bloomSelectList: '' } } as Record<string, unknown>)}
451
569
  style={{ maxHeight }}
452
570
  // `flex flex-col gap-1` — the rows sit 4px apart.
453
571
  contentContainerStyle={styles.list}
@@ -477,6 +595,7 @@ export function SelectItem({
477
595
  style,
478
596
  }: SelectItemProps) {
479
597
  const ctx = useSelectContext();
598
+ const { size } = ctx;
480
599
  const palette = useMenuPalette();
481
600
  const {
482
601
  state: hovered,
@@ -491,8 +610,8 @@ export function SelectItem({
491
610
  // background below, but they are no longer PUBLISHED — nothing ever read
492
611
  // them, and `pressed` was published as a literal `false`.
493
612
  const itemCtx = useMemo<SelectItemContextValue>(
494
- () => ({ selected: isSelected, disabled }),
495
- [isSelected, disabled],
613
+ () => ({ selected: isSelected, disabled, size }),
614
+ [isSelected, disabled, size],
496
615
  );
497
616
  // `(isFocused || isSelected) && MENU_ITEM_ACTIVE`: hover, keyboard
498
617
  // focus and the chosen option share one `dropdown-item-hover-background`.
@@ -502,6 +621,7 @@ export function SelectItem({
502
621
  <StyledPressable
503
622
  ref={ref}
504
623
  accessibilityRole="radio"
624
+ {...({ dataSet: { bloomSelectOption: '' } } as Record<string, unknown>)}
505
625
  // The native fork has always applied this; web declared `label` and then
506
626
  // dropped it, leaving every option a `role="radio"` with no accessible
507
627
  // name for a screen reader to announce.
@@ -549,70 +669,14 @@ export function SelectItem({
549
669
  // SelectItemText
550
670
  // ---------------------------------------------------------------------------
551
671
 
552
- export function SelectItemText({ children, className, style }: SelectItemTextProps) {
553
- const { size } = useSelectContext();
554
- const { disabled } = useSelectItemContext();
555
- const palette = useMenuPalette();
556
- // `text-text-primary`, or `text-text-disabled` on a disabled option. Inline
557
- // only without a caller `className` (see `SelectValue`).
558
- return (
559
- <StyledText
560
- numberOfLines={1}
561
- className={cx(
562
- SELECT_ITEM_TEXT_CLASS[size],
563
- menuTypeClass(VALUE_TYPE[size], className),
564
- className && 'text-foreground',
565
- className,
566
- )}
567
- style={[
568
- menuType(VALUE_TYPE[size], className),
569
- className ? null : { color: disabled ? palette.textDisabled : palette.text },
570
- style,
571
- ]}>
572
- {children}
573
- </StyledText>
574
- );
575
- }
576
-
577
672
  // ---------------------------------------------------------------------------
578
673
  // SelectItemIndicator
579
674
  // ---------------------------------------------------------------------------
580
675
 
581
- export function SelectItemIndicator({ icon: IconComponent = CheckIcon }: SelectItemIndicatorProps) {
582
- const palette = useMenuPalette();
583
- const { selected } = useSelectItemContext();
584
-
585
- // `absolute right-2 flex size-3.5 items-center justify-center` holding
586
- // a `size-4 text-text-secondary` check. A select's tick sits on the RIGHT — the
587
- // opposite side from a menu's — which is what leaves the option's own text
588
- // starting flush at `pl-2` like every other line in the panel. Bloom drew it in
589
- // a 30px LEFT gutter, so a select and a dropdown menu disagreed about which
590
- // edge a selection mark belongs on.
591
- if (!selected) return null;
592
-
593
- return (
594
- <StyledView className={ROW_INDICATOR_END_CLASS} pointerEvents="none">
595
- <IconComponent
596
- width={ROW_ICON_SIZE}
597
- height={ROW_ICON_SIZE}
598
- fill={palette.textSecondary}
599
- />
600
- </StyledView>
601
- );
602
- }
603
-
604
676
  // ---------------------------------------------------------------------------
605
677
  // SelectSeparator
606
678
  // ---------------------------------------------------------------------------
607
679
 
608
- export function SelectSeparator() {
609
- const palette = useMenuPalette();
610
- // `-mx-2 my-1.5 h-px bg-border-button-default`, bleeding through the listbox's `p-2`.
611
- return (
612
- <StyledView className={SELECT_SEPARATOR_CLASS} style={{ backgroundColor: palette.border }} />
613
- );
614
- }
615
-
616
680
  const styles = StyleSheet.create({
617
681
  // `TriggerSlot`'s wrapper is `alignSelf: 'flex-start'` so an anchored surface
618
682
  // lines up with the CONTROL. A select trigger is a full-width field, so it
@@ -1,16 +1,16 @@
1
1
  export {
2
- useSelectItemContext,
3
2
  Select,
4
3
  SelectTrigger,
5
4
  SelectValue,
6
5
  SelectIcon,
7
6
  SelectContent,
8
7
  SelectItem,
8
+ } from './Select';
9
+ export {
10
+ useSelectItemContext,
9
11
  SelectItemText,
10
12
  SelectItemIndicator,
11
13
  SelectSeparator,
12
- } from './Select';
13
- export {
14
14
  SelectGroup,
15
15
  SelectLabel,
16
16
  SelectScrollProvider,
@@ -1,16 +1,21 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/select/index.ts.
3
+ // Re-run `bun run generate:exports` (or any `bun run build`) after
4
+ // changing that barrel or the set of web-forked subpaths.
5
+
1
6
  export {
2
- useSelectItemContext,
3
7
  Select,
4
8
  SelectTrigger,
5
9
  SelectValue,
6
10
  SelectIcon,
7
11
  SelectContent,
8
12
  SelectItem,
13
+ } from './Select.web';
14
+ export {
15
+ useSelectItemContext,
9
16
  SelectItemText,
10
17
  SelectItemIndicator,
11
18
  SelectSeparator,
12
- } from './Select.web';
13
- export {
14
19
  SelectGroup,
15
20
  SelectLabel,
16
21
  SelectScrollProvider,