@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
@@ -0,0 +1,242 @@
1
+ /**
2
+ * The keyboard half of the ARIA menu-button pattern for the anchored menus —
3
+ * `DropdownMenu`, `ContextMenu`, `Menubar` and their flyout sub-menus — on WEB.
4
+ *
5
+ * What shipped: the trigger opened the menu on Enter/Space (it is a real
6
+ * `<button>`) and focus STAYED on it. The rows are portaled to the end of
7
+ * `<body>`, so the arrow keys had nothing to move, Tab walked on through the
8
+ * page BEHIND the open menu, and a keyboard user could open a menu and choose
9
+ * nothing. The markup was right throughout (`role="menu"`, `menuitem`,
10
+ * `aria-checked`), which is why nothing flagged it.
11
+ *
12
+ * The contract now:
13
+ *
14
+ * - Opening from the keyboard moves focus INTO the menu: Enter, Space and
15
+ * ArrowDown land on the first enabled row, ArrowUp on the last. A pointer
16
+ * open leaves focus where the pointer put it; an arrow on the trigger of an
17
+ * already-open menu then moves it in.
18
+ * - In the menu: ArrowDown/ArrowUp move between enabled rows and WRAP;
19
+ * Home/End jump to the ends; Enter and Space activate the row — a checkbox
20
+ * row toggles, a radio row selects, and a row's `keepOpen` still decides
21
+ * whether the menu closes. react-native-web presses a `menuitem`, `checkbox`
22
+ * or `radio` on Enter only (`PressResponder.isValidKeyPress` limits Space to
23
+ * `role="button"`), so Space is supplied here.
24
+ * - Tab closes the menu and returns focus to the trigger — a menu is not in
25
+ * the page's tab sequence. Escape closes the innermost surface
26
+ * (`escape-stack.ts`) and focus returns the same way.
27
+ * - The sub-menu keys stay `menu-sub-flyout.tsx`'s: → on a sub trigger opens
28
+ * the flyout and focuses its first row, ← inside it closes it and refocuses
29
+ * the trigger row.
30
+ *
31
+ * DOM listeners rather than props, like the sub-menu's: a row is
32
+ * `shared.tsx`'s `MenuRowShell`, the trigger may be the caller's own element
33
+ * under `asChild`, and the order of rows is whatever the caller rendered —
34
+ * the DOM already holds all of it. Every entry point is inert without a DOM
35
+ * node, so native (the menu is a bottom sheet there) is untouched.
36
+ */
37
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
38
+
39
+ import { isSpaceKey, rovingItems, rovingMove, rovingTarget } from '../hooks/roving-focus';
40
+ import { MENU_MOTION_DURATION } from './constants';
41
+
42
+ /** Every role a menu ROW can carry — the rows a pointer or a key can land on. */
43
+ export const MENU_ROW_SELECTOR =
44
+ '[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="checkbox"], [role="radio"]';
45
+
46
+ /** A panel, so a nested panel's rows are never counted as this one's. */
47
+ const MENU_PANEL_SELECTOR = '[role="menu"]';
48
+
49
+ export type MenuFocusEdge = 'first' | 'last';
50
+
51
+ /**
52
+ * Where focus should land the next time the menu's panel is ready — set by a
53
+ * key on the trigger, consumed by the panel. Owned by the family ROOT, which is
54
+ * the one component both the trigger and the content can reach.
55
+ */
56
+ export interface MenuFocusIntent {
57
+ /** The pending edge, or `null` for "leave focus alone" (a pointer open). */
58
+ edge: React.MutableRefObject<MenuFocusEdge | null>;
59
+ /** Bumped to ask an ALREADY-open panel to take focus. */
60
+ tick: number;
61
+ request: (edge: MenuFocusEdge) => void;
62
+ }
63
+
64
+ export function useMenuFocusIntent(): MenuFocusIntent {
65
+ const edge = useRef<MenuFocusEdge | null>(null);
66
+ const [tick, setTick] = useState(0);
67
+ const request = useCallback((next: MenuFocusEdge) => {
68
+ edge.current = next;
69
+ setTick((count) => count + 1);
70
+ }, []);
71
+ return useMemo(() => ({ edge, tick, request }), [tick, request]);
72
+ }
73
+
74
+ /** A react-native-web host ref, read as the DOM element it is on web. */
75
+ export function hostElement(node: unknown): HTMLElement | null {
76
+ if (!node || typeof node !== 'object') return null;
77
+ const scrollable = (node as { getScrollableNode?: () => unknown }).getScrollableNode?.();
78
+ const element = (scrollable ?? node) as Partial<HTMLElement>;
79
+ return typeof element.querySelector === 'function' &&
80
+ typeof element.addEventListener === 'function'
81
+ ? (element as HTMLElement)
82
+ : null;
83
+ }
84
+
85
+ /** The trigger's own focusable control inside its anchor wrapper. */
86
+ export function triggerControl(anchor: unknown): HTMLElement | null {
87
+ const wrapper = hostElement(anchor);
88
+ return (
89
+ wrapper?.querySelector<HTMLElement>('[aria-haspopup]') ??
90
+ wrapper?.querySelector<HTMLElement>('[tabindex]') ??
91
+ null
92
+ );
93
+ }
94
+
95
+ /**
96
+ * Hand focus back to the trigger when a surface closes with focus inside it.
97
+ *
98
+ * `isInside` says whether an element belongs to the surface. Checked AT the
99
+ * close, when the panel is still mounted for its exit animation, so a row that
100
+ * was just activated still counts. Focus that has already gone somewhere real
101
+ * — a dialog the row opened, a field the pointer clicked — is left alone. The
102
+ * one deferred case is focus left on a node the exit is about to UNMOUNT (the
103
+ * outside-press backdrop): once the exit has run and focus has fallen to
104
+ * `<body>`, it goes back to the trigger too.
105
+ */
106
+ export function useReturnFocusOnClose(
107
+ anchorRef: React.RefObject<unknown>,
108
+ open: boolean,
109
+ isInside: (element: Element) => boolean,
110
+ ): void {
111
+ const wasOpen = useRef(open);
112
+ const isInsideRef = useRef(isInside);
113
+ isInsideRef.current = isInside;
114
+ useEffect(() => {
115
+ const closed = wasOpen.current && !open;
116
+ wasOpen.current = open;
117
+ if (!closed || typeof document === 'undefined') return undefined;
118
+ const active = document.activeElement;
119
+ if (!active || active === document.body || isInsideRef.current(active)) {
120
+ triggerControl(anchorRef.current)?.focus({ preventScroll: true });
121
+ return undefined;
122
+ }
123
+ const timer = setTimeout(() => {
124
+ if (document.activeElement === document.body && !active.isConnected) {
125
+ triggerControl(anchorRef.current)?.focus({ preventScroll: true });
126
+ }
127
+ }, MENU_MOTION_DURATION + 50);
128
+ return () => clearTimeout(timer);
129
+ }, [open, anchorRef]);
130
+ }
131
+
132
+ /** Whether an element is one of the menu surfaces — any panel, any depth. */
133
+ export function isInMenuSurface(element: Element): boolean {
134
+ return element.closest(MENU_PANEL_SELECTOR) !== null;
135
+ }
136
+
137
+ /**
138
+ * The menu trigger's keys, on its anchor wrapper: Enter/Space mark a closed
139
+ * menu's open as a keyboard one (the press itself is the button's own);
140
+ * ArrowDown/ArrowUp open it — or, open already, move focus in — landing on the
141
+ * first/last row. Plus the focus return on close.
142
+ */
143
+ export function useMenuTriggerKeys(
144
+ anchorRef: React.RefObject<unknown>,
145
+ {
146
+ open,
147
+ setOpen,
148
+ disabled,
149
+ intent,
150
+ }: {
151
+ open: boolean;
152
+ setOpen: (next: boolean) => void;
153
+ disabled?: boolean;
154
+ intent: MenuFocusIntent | undefined;
155
+ },
156
+ ): void {
157
+ const edge = intent?.edge;
158
+ const request = intent?.request;
159
+ useEffect(() => {
160
+ const wrapper = hostElement(anchorRef.current);
161
+ if (!wrapper || disabled || !edge || !request) return undefined;
162
+ const onKeyDown = (event: KeyboardEvent) => {
163
+ if (event.defaultPrevented) return;
164
+ if (event.key === 'Enter' || isSpaceKey(event.key)) {
165
+ if (!open) edge.current = 'first';
166
+ return;
167
+ }
168
+ if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;
169
+ event.preventDefault();
170
+ if (!open) setOpen(true);
171
+ request(event.key === 'ArrowDown' ? 'first' : 'last');
172
+ };
173
+ wrapper.addEventListener('keydown', onKeyDown);
174
+ return () => wrapper.removeEventListener('keydown', onKeyDown);
175
+ }, [anchorRef, disabled, open, setOpen, edge, request]);
176
+
177
+ // A pointer open must not inherit a stale keyboard intent from a key that
178
+ // did not open anything (a disabled row, a prevented press).
179
+ useEffect(() => {
180
+ if (!open && edge) edge.current = null;
181
+ }, [open, edge]);
182
+
183
+ useReturnFocusOnClose(anchorRef, open, isInMenuSurface);
184
+ }
185
+
186
+ /** The enabled rows that belong to `panel`, in document order. */
187
+ function menuRows(panel: Element): HTMLElement[] {
188
+ // The owner is the nearest `role="menu"` — the panel itself, or (for a sub
189
+ // panel, whose rows sit in an inner scroller) the panel around it.
190
+ const owner = panel.closest(MENU_PANEL_SELECTOR) ?? panel;
191
+ return rovingItems(owner, MENU_ROW_SELECTOR, { owner: MENU_PANEL_SELECTOR });
192
+ }
193
+
194
+ /**
195
+ * The keys inside an open menu panel: arrows (wrapping), Home/End, Space, Tab.
196
+ * `intent`, when given, lands focus on the first/last row as the panel opens
197
+ * from the keyboard (a sub-panel focuses its own first row and passes none).
198
+ */
199
+ export function useMenuPanelKeys(
200
+ panel: HTMLElement | null,
201
+ { open, onTab, intent }: { open: boolean; onTab: () => void; intent?: MenuFocusIntent },
202
+ ): void {
203
+ const onTabRef = useRef(onTab);
204
+ onTabRef.current = onTab;
205
+
206
+ const edge = intent?.edge;
207
+ const tick = intent?.tick;
208
+ useEffect(() => {
209
+ if (!open || !panel || !edge?.current) return;
210
+ const rows = menuRows(panel);
211
+ const target = edge.current === 'last' ? rows[rows.length - 1] : rows[0];
212
+ edge.current = null;
213
+ target?.focus({ preventScroll: true });
214
+ }, [open, panel, edge, tick]);
215
+
216
+ useEffect(() => {
217
+ if (!panel || !open) return undefined;
218
+ const onKeyDown = (event: KeyboardEvent) => {
219
+ if (event.defaultPrevented) return;
220
+ const active =
221
+ typeof document !== 'undefined' ? (document.activeElement as HTMLElement | null) : null;
222
+ const current = active?.closest?.(MENU_ROW_SELECTOR) ?? null;
223
+ if (event.key === 'Tab') {
224
+ event.preventDefault();
225
+ onTabRef.current();
226
+ return;
227
+ }
228
+ if (isSpaceKey(event.key)) {
229
+ if (!current || current.getAttribute('aria-disabled') === 'true') return;
230
+ event.preventDefault();
231
+ (current as HTMLElement).click();
232
+ return;
233
+ }
234
+ const move = rovingMove(event.key, { orientation: 'vertical', homeEnd: true });
235
+ if (move === null) return;
236
+ event.preventDefault();
237
+ rovingTarget(menuRows(panel), current, move, true)?.focus();
238
+ };
239
+ panel.addEventListener('keydown', onKeyDown);
240
+ return () => panel.removeEventListener('keydown', onKeyDown);
241
+ }, [panel, open]);
242
+ }
@@ -51,7 +51,10 @@ import {
51
51
  MENU_SUB_SIDE_OFFSET,
52
52
  ROW_ICON_SIZE,
53
53
  } from './constants';
54
+ import { useMenuSurface } from './context';
55
+ import { pushFloatingEscape } from './escape-stack';
54
56
  import { FloatingPanel } from './FloatingPanel';
57
+ import { hostElement, MENU_ROW_SELECTOR, useMenuPanelKeys } from './menu-keyboard';
55
58
  import { cx, MenuRowChevron, MenuRowShell, splitChildren, SUB_TRIGGER_CLASS } from './shared';
56
59
  import type {
57
60
  FloatingAnchor,
@@ -119,8 +122,7 @@ function isHoverPointer(event: Event): boolean {
119
122
  }
120
123
 
121
124
  /** Every role a menu ROW can carry — the rows a pointer can actually land on. */
122
- const MENU_ITEM_SELECTOR =
123
- '[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="checkbox"], [role="radio"]';
125
+ const MENU_ITEM_SELECTOR = MENU_ROW_SELECTOR;
124
126
 
125
127
  /**
126
128
  * Did the pointer leave for another ROW, rather than for the gap this sub's
@@ -546,22 +548,25 @@ export function createFlyoutMenuSub(prefix: string): MenuSubParts {
546
548
  };
547
549
  }, [node, sub]);
548
550
 
549
- // Escape, in the CAPTURE phase with `stopImmediatePropagation`. Every open
550
- // `FloatingPanel` has a bubble-phase `keydown` listener on `document`, and
551
- // `stopPropagation` does not stop a sibling listener on the same node — so
552
- // without this the sub and its parent menu would both close on one press.
553
- // Capture runs before bubble whatever the registration order, which is what
554
- // makes "innermost first" hold rather than "whichever mounted first".
551
+ // Escape closes this flyout and leaves the menu open. The flyout's panel is
552
+ // `dismissible={false}` (a press outside it is the parent's business), so it
553
+ // takes its own entry on the escape stack — pushed after the parent's, so it
554
+ // is the one Escape reaches first (`escape-stack.ts`). This used to be a
555
+ // document CAPTURE listener with `stopImmediatePropagation`, which also took
556
+ // Escape away from any field inside the flyout.
557
+ const { open: subOpen, closeAndRefocus } = sub;
558
+ const closeRef = useRef(closeAndRefocus);
559
+ closeRef.current = closeAndRefocus;
555
560
  useEffect(() => {
556
- if (!sub.open || typeof document === 'undefined') return;
557
- const onKeyDown = (event: KeyboardEvent) => {
558
- if (event.key !== 'Escape') return;
559
- event.stopImmediatePropagation();
560
- sub.closeAndRefocus();
561
- };
562
- document.addEventListener('keydown', onKeyDown, true);
563
- return () => document.removeEventListener('keydown', onKeyDown, true);
564
- }, [sub]);
561
+ if (!subOpen || typeof document === 'undefined') return undefined;
562
+ return pushFloatingEscape(() => closeRef.current());
563
+ }, [subOpen]);
564
+
565
+ // Arrows (wrapping), Home/End, Space and Tab among the flyout's own rows —
566
+ // the same keys as the menu it flew out of (`menu-keyboard.ts`). Tab closes
567
+ // the WHOLE menu, not just this flyout: the menu is not in the tab order.
568
+ const surface = useMenuSurface();
569
+ useMenuPanelKeys(hostElement(node), { open: sub.open, onTab: surface.close });
565
570
 
566
571
  // Move focus onto the panel once it has been placed, so Right genuinely
567
572
  // ENTERS the submenu rather than only opening it.
@@ -19,6 +19,7 @@
19
19
  */
20
20
  import type { GestureResponderEvent, StyleProp, TextStyle, View, ViewStyle } from 'react-native';
21
21
 
22
+ import type { MenuFocusIntent } from './menu-keyboard';
22
23
  import type { WebAriaProps } from '../styles/styled-primitives';
23
24
 
24
25
  /**
@@ -32,6 +33,11 @@ export interface OverlayShellContextValue {
32
33
  setOpen: (next: boolean) => void;
33
34
  /** The trigger wrapper. Measured by the web forks, unused on native. */
34
35
  anchorRef: React.RefObject<View | null>;
36
+ /**
37
+ * Web menus only: where a keyboard open lands focus, handed from the trigger
38
+ * to the panel (`menu-keyboard.ts`). Absent on native and on `Popover`.
39
+ */
40
+ focusIntent?: MenuFocusIntent;
35
41
  }
36
42
 
37
43
  /**
@@ -129,6 +135,11 @@ export interface FloatingPanelProps extends FloatingPositionProps {
129
135
  * panel inline (`popover/surface.ts`) and passes it as `style`.
130
136
  */
131
137
  surface?: 'popover' | 'menu' | 'listbox';
138
+ /**
139
+ * Receives the panel's own node as it mounts and unmounts — for a family that
140
+ * attaches keyboard handling to the rows inside it (`menu-keyboard.ts`).
141
+ */
142
+ panelRef?: (node: View | null) => void;
132
143
  }
133
144
 
134
145
  /**
@@ -1,23 +1,8 @@
1
- // Web variant of the `./fonts` barrel.
2
- //
3
- // Every re-export below that has a platform fork names its `.web` source
4
- // OUTRIGHT rather than letting the bundler pick. That is deliberate: web
5
- // bundlers are not required to resolve `.web` extensions (Vite does not, out
6
- // of the box), so an extensionless specifier here would quietly fall through
7
- // to the default file.
8
- //
9
- // - `./apply-font-faces.web` performs the real `@font-face` injection against
10
- // the `.woff2` URLs the consuming bundler emits (see `font-urls.web.ts`);
11
- // the default `./apply-font-faces` is a no-op stub for native.
12
- // - `./font-assets.web` is an empty map. The native map is built from Metro
13
- // asset `require()` calls, and importing it from an ES module throws
14
- // `ReferenceError: require is not defined` during module evaluation — which
15
- // white-screens the consumer before React mounts. Naming the `.web` file
16
- // here is what keeps it out of the web graph.
17
- //
18
- // Web bundlers select this file via the `"browser"` condition in
19
- // `package.json`'s `exports['./fonts']`; native bundlers fall through to
20
- // `./index.ts` via the `"react-native"` condition.
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/fonts/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
+
21
6
  export { fontFamilies, fontCssVars } from './tokens';
22
7
  export type { FontFamilyName } from './tokens';
23
8
  export { applyFontFaces } from './apply-font-faces.web';
@@ -1,3 +1,12 @@
1
+ /**
2
+ * `FrostedIconButton` — WEB: a real HTML `<button>` frosted by a real CSS
3
+ * `backdrop-filter`.
4
+ *
5
+ * The native fork frosts via `expo-blur`'s `BlurView`. Forking the file rather
6
+ * than branching inside one is what keeps that import out of the web graph
7
+ * entirely — `expo-blur` is an optional peer, and a web bundler that resolves
8
+ * it at all is a build a consumer did not ask for.
9
+ */
1
10
  import { useBloomAppearance } from '../appearance';
2
11
  import { resolveBloomColors } from '../appearance/colors';
3
12
  import React, {
@@ -1,9 +1,7 @@
1
- // Web variant of the `./frosted-icon-button` barrel.
2
- //
3
- // The default barrel (`./index.ts`) re-exports the React Native implementation,
4
- // which frosts via `expo-blur`'s `BlurView`. The web fork (`./FrostedIconButton.web`)
5
- // renders a real HTML `<button>` and frosts via a real CSS `backdrop-filter` —
6
- // no `expo-blur` import ever reaches a web bundler. Web bundlers select this
7
- // file via the `"browser"` export condition in `package.json`.
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/frosted-icon-button/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
+
8
6
  export { FrostedIconButton } from './FrostedIconButton.web';
9
7
  export type { FrostedIconButtonProps, FrostedIconButtonSize } from './types';
@@ -0,0 +1,204 @@
1
+ /**
2
+ * The keyboard half of the WAI-ARIA composite widgets — tabs, radio groups and
3
+ * listboxes — on WEB, where react-native-web supplies none of it.
4
+ *
5
+ * Three gaps, all measured in a browser against `Tabs`, `SegmentedControl` and
6
+ * `Select`, and all silent: the markup carries the right `role` and state, so
7
+ * nothing in a DOM snapshot says the widget cannot be operated.
8
+ *
9
+ * - EVERY option was its own tab stop. react-native-web gives each `Pressable`
10
+ * `tabIndex=0`, so a five-tab strip cost five Tab presses to walk past.
11
+ * - ARROW KEYS did nothing. A composite widget is ONE tab stop whose options
12
+ * are reached with the arrows; without them the only route is Tab.
13
+ * - SPACE did nothing on a `tab`, `radio` or `option`. react-native-web's
14
+ * press responder (`PressResponder.isValidKeyPress`) activates on Space only
15
+ * for `role="button"` or a real `<button>`; any other role answers Enter
16
+ * alone.
17
+ *
18
+ * WHY THE DOM, NOT PROPS. The group has to know which of its options is
19
+ * selected, which are disabled, and in which ORDER they sit on screen — and it
20
+ * receives its options as `children` it did not create. The DOM already holds
21
+ * all three (`aria-selected` / `aria-checked`, `aria-disabled`, document order),
22
+ * so this module reads them there instead of growing a second registry that
23
+ * could disagree with what is rendered. Every function is a no-op without a
24
+ * DOM, and every caller gates on `Platform.OS === 'web'`, so native is
25
+ * untouched.
26
+ *
27
+ * Activation goes through `element.click()`: that is the press the option's own
28
+ * `onPress` already hears (react-native-web routes `click` to `onPress`), so a
29
+ * key and a pointer select through exactly one code path.
30
+ */
31
+ import { useLayoutEffect } from 'react';
32
+ import { Platform } from 'react-native';
33
+
34
+ const IS_WEB = Platform.OS === 'web';
35
+
36
+ /** Which arrow pair moves between the options. */
37
+ export type RovingOrientation = 'horizontal' | 'vertical' | 'both';
38
+
39
+ /** Where a key asks focus to go. */
40
+ export type RovingMove = 'next' | 'prev' | 'first' | 'last';
41
+
42
+ export interface RovingKeyOptions {
43
+ orientation: RovingOrientation;
44
+ /** Home/End jump to the ends (tabs and listboxes; a radio group has none). */
45
+ homeEnd?: boolean;
46
+ }
47
+
48
+ /** The move a key asks for, or `null` for a key this widget does not own. */
49
+ export function rovingMove(key: string, { orientation, homeEnd = true }: RovingKeyOptions): RovingMove | null {
50
+ const horizontal = orientation !== 'vertical';
51
+ const vertical = orientation !== 'horizontal';
52
+ switch (key) {
53
+ case 'ArrowRight':
54
+ return horizontal ? 'next' : null;
55
+ case 'ArrowLeft':
56
+ return horizontal ? 'prev' : null;
57
+ case 'ArrowDown':
58
+ return vertical ? 'next' : null;
59
+ case 'ArrowUp':
60
+ return vertical ? 'prev' : null;
61
+ case 'Home':
62
+ return homeEnd ? 'first' : null;
63
+ case 'End':
64
+ return homeEnd ? 'last' : null;
65
+ default:
66
+ return null;
67
+ }
68
+ }
69
+
70
+ export function isSpaceKey(key: string): boolean {
71
+ return key === ' ' || key === 'Spacebar';
72
+ }
73
+
74
+ function isDisabled(element: HTMLElement): boolean {
75
+ return (
76
+ element.getAttribute('aria-disabled') === 'true' ||
77
+ (element as HTMLElement & { disabled?: boolean }).disabled === true
78
+ );
79
+ }
80
+
81
+ /**
82
+ * The options that belong to `container`, in document order.
83
+ *
84
+ * `owner`, when given, is the selector of the group itself: an option whose
85
+ * nearest such ancestor is NOT `container` belongs to a nested group and is
86
+ * skipped, so a radio group inside a tab panel inside a tab strip never
87
+ * mistakes the inner options for its own.
88
+ */
89
+ export function rovingItems(
90
+ container: Element | null,
91
+ selector: string,
92
+ { owner, includeDisabled = false }: { owner?: string; includeDisabled?: boolean } = {},
93
+ ): HTMLElement[] {
94
+ if (!container) return [];
95
+ return Array.from(container.querySelectorAll<HTMLElement>(selector)).filter(
96
+ (element) =>
97
+ (includeDisabled || !isDisabled(element)) &&
98
+ (owner === undefined || element.parentElement?.closest(owner) === container),
99
+ );
100
+ }
101
+
102
+ /**
103
+ * The option a move lands on. `wrap` carries the last option round to the first
104
+ * (tabs, radio groups); a listbox stops at its ends.
105
+ */
106
+ export function rovingTarget(
107
+ items: readonly HTMLElement[],
108
+ current: Element | null,
109
+ move: RovingMove,
110
+ wrap: boolean,
111
+ ): HTMLElement | null {
112
+ const count = items.length;
113
+ if (count === 0) return null;
114
+ if (move === 'first') return items[0] ?? null;
115
+ if (move === 'last') return items[count - 1] ?? null;
116
+ const index = current ? items.indexOf(current as HTMLElement) : -1;
117
+ if (index < 0) return (move === 'next' ? items[0] : items[count - 1]) ?? null;
118
+ const step = move === 'next' ? 1 : -1;
119
+ const next = index + step;
120
+ if (next >= 0 && next < count) return items[next] ?? null;
121
+ return wrap ? (items[(next + count) % count] ?? null) : (items[index] ?? null);
122
+ }
123
+
124
+ /**
125
+ * Exactly ONE tab stop: the selected option, or — when nothing is selected, or
126
+ * the selected option is disabled — the first enabled one, so the group stays
127
+ * reachable. Every other option takes `tabIndex=-1`: still focusable by the
128
+ * arrows, skipped by Tab.
129
+ */
130
+ export function applyRovingTabIndex(
131
+ container: Element | null,
132
+ selector: string,
133
+ isSelected: (element: HTMLElement) => boolean,
134
+ owner?: string,
135
+ ): void {
136
+ const all = rovingItems(container, selector, { owner, includeDisabled: true });
137
+ const enabled = all.filter((element) => !isDisabled(element));
138
+ const stop = enabled.find(isSelected) ?? enabled[0];
139
+ for (const element of all) {
140
+ const wanted = element === stop ? 0 : -1;
141
+ if (element.tabIndex !== wanted) element.tabIndex = wanted;
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Keep the group's roving tab stop in step with its selection.
147
+ *
148
+ * Runs after EVERY render of the group, without deps, because the group
149
+ * re-renders whenever an option's selection or `disabled` changes (both arrive
150
+ * through the group's own props or its children), and a layout effect runs
151
+ * after the children have committed the attributes it reads. It writes the DOM
152
+ * only where a value differs, so an idle re-render costs one query.
153
+ */
154
+ export function useRovingTabIndex(
155
+ getContainer: () => Element | null,
156
+ selector: string,
157
+ isSelected: (element: HTMLElement) => boolean,
158
+ owner?: string,
159
+ ): void {
160
+ useLayoutEffect(() => {
161
+ if (!IS_WEB) return;
162
+ applyRovingTabIndex(getContainer(), selector, isSelected, owner);
163
+ });
164
+ }
165
+
166
+ /**
167
+ * The shared keydown for a tab strip or radio group option. Returns whether it
168
+ * handled the key (and so prevented its default).
169
+ *
170
+ * - Arrows (per `orientation`), and Home/End where `homeEnd`, move focus with
171
+ * wrap-around. With `activate: 'follow'` (automatic activation) the option
172
+ * focused is also selected; with `'manual'` only focus moves and Enter or
173
+ * Space selects.
174
+ * - Space selects the focused option — the key react-native-web drops.
175
+ */
176
+ export function handleRovingKeyDown(
177
+ event: { key: string; currentTarget: unknown; preventDefault: () => void },
178
+ {
179
+ selector,
180
+ owner,
181
+ orientation,
182
+ homeEnd,
183
+ activate,
184
+ }: RovingKeyOptions & { selector: string; owner: string; activate: 'follow' | 'manual' },
185
+ ): boolean {
186
+ const current = event.currentTarget as HTMLElement | null;
187
+ if (!current || typeof current.closest !== 'function') return false;
188
+ if (isSpaceKey(event.key)) {
189
+ if (isDisabled(current)) return false;
190
+ // Space scrolls the page by default; the option answers it instead.
191
+ event.preventDefault();
192
+ current.click();
193
+ return true;
194
+ }
195
+ const move = rovingMove(event.key, { orientation, homeEnd });
196
+ if (move === null) return false;
197
+ const container = current.closest(owner);
198
+ const target = rovingTarget(rovingItems(container, selector, { owner }), current, move, true);
199
+ if (!target) return false;
200
+ event.preventDefault();
201
+ target.focus();
202
+ if (activate === 'follow' && target !== current) target.click();
203
+ return true;
204
+ }
@@ -1,3 +1,8 @@
1
+ // AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
2
+ // Source of truth: src/hover-card/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 { HoverCard, HoverCardTrigger, HoverCardContent } from './HoverCard.web';
2
7
  export {
3
8
  HOVER_CARD_CLOSE_DELAY,
@@ -0,0 +1,6 @@
1
+ import { createSinglePathSVG } from '../TEMPLATE';
2
+
3
+ /** Remix Icon `book-read-line` (Document). */
4
+ export const RiBookReadLine = createSinglePathSVG({
5
+ path: 'M2 3.9934C2 3.44476 2.45531 3 2.9918 3H21.0082C21.556 3 22 3.44495 22 3.9934V20.0066C22 20.5552 21.5447 21 21.0082 21H2.9918C2.44405 21 2 20.5551 2 20.0066V3.9934ZM11 5H4V19H11V5ZM13 5V19H20V5H13ZM14 7H19V9H14V7ZM14 10H19V12H14V10Z',
6
+ });
@@ -0,0 +1,6 @@
1
+ import { createSinglePathSVG } from '../TEMPLATE';
2
+
3
+ /** Remix Icon `bug-line` (Development). */
4
+ export const RiBugLine = createSinglePathSVG({
5
+ path: 'M13 19.9C15.2822 19.4367 17 17.419 17 15V12C17 11.299 16.8564 10.6219 16.5846 10H7.41538C7.14358 10.6219 7 11.299 7 12V15C7 17.419 8.71776 19.4367 11 19.9V14H13V19.9ZM5.5358 17.6907C5.19061 16.8623 5 15.9534 5 15H2V13H5V12C5 11.3573 5.08661 10.7348 5.2488 10.1436L3.0359 8.86602L4.0359 7.13397L6.05636 8.30049C6.11995 8.19854 6.18609 8.09835 6.25469 8H17.7453C17.8139 8.09835 17.88 8.19854 17.9436 8.30049L19.9641 7.13397L20.9641 8.86602L18.7512 10.1436C18.9134 10.7348 19 11.3573 19 12V13H22V15H19C19 15.9534 18.8094 16.8623 18.4642 17.6907L20.9641 19.134L19.9641 20.866L17.4383 19.4077C16.1549 20.9893 14.1955 22 12 22C9.80453 22 7.84512 20.9893 6.56171 19.4077L4.0359 20.866L3.0359 19.134L5.5358 17.6907ZM8 6C8 3.79086 9.79086 2 12 2C14.2091 2 16 3.79086 16 6H8Z',
6
+ });
@@ -0,0 +1,6 @@
1
+ import { createSinglePathSVG } from '../TEMPLATE';
2
+
3
+ /** Remix Icon `chat-1-line` (Communication). */
4
+ export const RiChat1Line = createSinglePathSVG({
5
+ path: 'M10 3H14C18.4183 3 22 6.58172 22 11C22 15.4183 18.4183 19 14 19V22.5C9 20.5 2 17.5 2 11C2 6.58172 5.58172 3 10 3ZM12 17H14C17.3137 17 20 14.3137 20 11C20 7.68629 17.3137 5 14 5H10C6.68629 5 4 7.68629 4 11C4 14.61 6.46208 16.9656 12 19.4798V17Z',
6
+ });
@@ -0,0 +1,6 @@
1
+ import { createSinglePathSVG } from '../TEMPLATE';
2
+
3
+ /** Remix Icon `cloud-line` (Business). */
4
+ export const RiCloudLine = createSinglePathSVG({
5
+ path: 'M12 2C15.866 2 19 5.13401 19 9C19 9.11351 18.9973 9.22639 18.992 9.33857C21.3265 10.16 23 12.3846 23 15C23 18.3137 20.3137 21 17 21H7C3.68629 21 1 18.3137 1 15C1 12.3846 2.67346 10.16 5.00804 9.33857C5.0027 9.22639 5 9.11351 5 9C5 5.13401 8.13401 2 12 2ZM12 4C9.23858 4 7 6.23858 7 9C7 9.08147 7.00193 9.16263 7.00578 9.24344L7.07662 10.7309L5.67183 11.2252C4.0844 11.7837 3 13.2889 3 15C3 17.2091 4.79086 19 7 19H17C19.2091 19 21 17.2091 21 15C21 12.79 19.21 11 17 11C15.233 11 13.7337 12.1457 13.2042 13.7347L11.3064 13.1021C12.1005 10.7185 14.35 9 17 9C17 6.23858 14.7614 4 12 4Z',
6
+ });
@@ -0,0 +1,6 @@
1
+ import { createSinglePathSVG } from '../TEMPLATE';
2
+
3
+ /** Remix Icon `code-line` (Development). */
4
+ export const RiCodeLine = createSinglePathSVG({
5
+ path: 'M23 12L15.9289 19.0711L14.5147 17.6569L20.1716 12L14.5147 6.34317L15.9289 4.92896L23 12ZM3.82843 12L9.48528 17.6569L8.07107 19.0711L1 12L8.07107 4.92896L9.48528 6.34317L3.82843 12Z',
6
+ });
@@ -0,0 +1,6 @@
1
+ import { createSinglePathSVG } from '../TEMPLATE';
2
+
3
+ /** Remix Icon `cpu-line` (Device). */
4
+ export const RiCpuLine = createSinglePathSVG({
5
+ path: 'M6 18H18V6H6V18ZM14 20H10V22H8V20H5C4.44772 20 4 19.5523 4 19V16H2V14H4V10H2V8H4V5C4 4.44772 4.44772 4 5 4H8V2H10V4H14V2H16V4H19C19.5523 4 20 4.44772 20 5V8H22V10H20V14H22V16H20V19C20 19.5523 19.5523 20 19 20H16V22H14V20ZM8 8H16V16H8V8Z',
6
+ });