@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.
- package/README.md +1 -1
- package/docs/adoption-matrix.mdx +12 -12
- package/docs/code.mdx +12 -0
- package/docs/context-menu.mdx +2 -0
- package/docs/dropdown-menu.mdx +21 -0
- package/docs/icons.mdx +2 -2
- package/docs/layout.mdx +36 -0
- package/docs/menubar.mdx +6 -2
- package/docs/page-header.mdx +16 -0
- package/docs/popover.mdx +4 -2
- package/docs/segmented-control.mdx +12 -0
- package/docs/select.mdx +19 -0
- package/docs/sidebar.mdx +6 -0
- package/docs/tabs.mdx +12 -0
- package/lib/commonjs/agent-chat/index.web.js.map +1 -1
- package/lib/commonjs/ai-chat/index.web.js.map +1 -1
- package/lib/commonjs/alert-dialog/index.web.js +10 -1
- package/lib/commonjs/alert-dialog/index.web.js.map +1 -1
- package/lib/commonjs/avatar-group/index.web.js.map +1 -1
- package/lib/commonjs/bottom-sheet/index.web.js.map +1 -1
- package/lib/commonjs/code/index.js +13 -0
- package/lib/commonjs/code/index.js.map +1 -1
- package/lib/commonjs/command/index.web.js +5 -0
- package/lib/commonjs/command/index.web.js.map +1 -1
- package/lib/commonjs/composer-loader/ComposerLoader.web.js +9 -0
- package/lib/commonjs/composer-loader/ComposerLoader.web.js.map +1 -1
- package/lib/commonjs/composer-loader/index.web.js.map +1 -1
- package/lib/commonjs/composer-panel/index.web.js.map +1 -1
- package/lib/commonjs/connection-dots/index.web.js.map +1 -1
- package/lib/commonjs/connection-status/index.web.js.map +1 -1
- package/lib/commonjs/content-panel/index.web.js.map +1 -1
- package/lib/commonjs/context-menu/ContextMenu.web.js +22 -4
- package/lib/commonjs/context-menu/ContextMenu.web.js.map +1 -1
- package/lib/commonjs/context-menu/context.js.map +1 -1
- package/lib/commonjs/context-menu/index.web.js.map +1 -1
- package/lib/commonjs/dialog/Dialog.web.js +14 -0
- package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
- package/lib/commonjs/dialog/index.web.js.map +1 -1
- package/lib/commonjs/dropdown-menu/DropdownMenu.web.js +22 -2
- package/lib/commonjs/dropdown-menu/DropdownMenu.web.js.map +1 -1
- package/lib/commonjs/dropdown-menu/index.web.js.map +1 -1
- package/lib/commonjs/floating/FloatingPanel.js +42 -33
- package/lib/commonjs/floating/FloatingPanel.js.map +1 -1
- package/lib/commonjs/floating/escape-stack.js +90 -0
- package/lib/commonjs/floating/escape-stack.js.map +1 -0
- package/lib/commonjs/floating/menu-keyboard.js +238 -0
- package/lib/commonjs/floating/menu-keyboard.js.map +1 -0
- package/lib/commonjs/floating/menu-sub-flyout.js +28 -16
- package/lib/commonjs/floating/menu-sub-flyout.js.map +1 -1
- package/lib/commonjs/fonts/index.web.js.map +1 -1
- package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js +10 -0
- package/lib/commonjs/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
- package/lib/commonjs/frosted-icon-button/index.web.js.map +1 -1
- package/lib/commonjs/hooks/roving-focus.js +192 -0
- package/lib/commonjs/hooks/roving-focus.js.map +1 -0
- package/lib/commonjs/hover-card/index.web.js.map +1 -1
- package/lib/commonjs/icons/remix/RiBookReadLine.js +12 -0
- package/lib/commonjs/icons/remix/RiBookReadLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiBugLine.js +12 -0
- package/lib/commonjs/icons/remix/RiBugLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiChat1Line.js +12 -0
- package/lib/commonjs/icons/remix/RiChat1Line.js.map +1 -0
- package/lib/commonjs/icons/remix/RiCloudLine.js +12 -0
- package/lib/commonjs/icons/remix/RiCloudLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiCodeLine.js +12 -0
- package/lib/commonjs/icons/remix/RiCodeLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiCpuLine.js +12 -0
- package/lib/commonjs/icons/remix/RiCpuLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiFloodLine.js +12 -0
- package/lib/commonjs/icons/remix/RiFloodLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiLockUnlockLine.js +12 -0
- package/lib/commonjs/icons/remix/RiLockUnlockLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js +12 -0
- package/lib/commonjs/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiPlayCircleLine.js +12 -0
- package/lib/commonjs/icons/remix/RiPlayCircleLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiRocket2Line.js +12 -0
- package/lib/commonjs/icons/remix/RiRocket2Line.js.map +1 -0
- package/lib/commonjs/icons/remix/RiServerLine.js +12 -0
- package/lib/commonjs/icons/remix/RiServerLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiShareBoxLine.js +12 -0
- package/lib/commonjs/icons/remix/RiShareBoxLine.js.map +1 -0
- package/lib/commonjs/icons/remix/RiTv2Line.js +12 -0
- package/lib/commonjs/icons/remix/RiTv2Line.js.map +1 -0
- package/lib/commonjs/icons/remix/index.js +98 -0
- package/lib/commonjs/icons/remix/index.js.map +1 -1
- package/lib/commonjs/index.js +21 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +21 -0
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/layout/StickySection.js +106 -0
- package/lib/commonjs/layout/StickySection.js.map +1 -0
- package/lib/commonjs/layout/header-dock.js +61 -0
- package/lib/commonjs/layout/header-dock.js.map +1 -0
- package/lib/commonjs/layout/index.js +20 -0
- package/lib/commonjs/layout/index.js.map +1 -1
- package/lib/commonjs/list/index.web.js.map +1 -1
- package/lib/commonjs/loading/Loading.js +21 -157
- package/lib/commonjs/loading/Loading.js.map +1 -1
- package/lib/commonjs/loading/Loading.web.js +23 -157
- package/lib/commonjs/loading/Loading.web.js.map +1 -1
- package/lib/commonjs/loading/LoadingBase.js +202 -0
- package/lib/commonjs/loading/LoadingBase.js.map +1 -0
- package/lib/commonjs/loading/index.web.js.map +1 -1
- package/lib/commonjs/media-flight/index.web.js.map +1 -1
- package/lib/commonjs/menubar/Menubar.js +31 -123
- package/lib/commonjs/menubar/Menubar.js.map +1 -1
- package/lib/commonjs/menubar/Menubar.web.js +33 -114
- package/lib/commonjs/menubar/Menubar.web.js.map +1 -1
- package/lib/commonjs/menubar/MenubarBase.js +154 -0
- package/lib/commonjs/menubar/MenubarBase.js.map +1 -0
- package/lib/commonjs/menubar/index.web.js.map +1 -1
- package/lib/commonjs/page-header/PageHeader.js +38 -14
- package/lib/commonjs/page-header/PageHeader.js.map +1 -1
- package/lib/commonjs/popover/index.web.js.map +1 -1
- package/lib/commonjs/popover/parts.js +69 -11
- package/lib/commonjs/popover/parts.js.map +1 -1
- package/lib/commonjs/popover/surface.js +39 -13
- package/lib/commonjs/popover/surface.js.map +1 -1
- package/lib/commonjs/portal/index.web.js.map +1 -1
- package/lib/commonjs/progressive-blur/index.web.js.map +1 -1
- package/lib/commonjs/scroll/index.web.js.map +1 -1
- package/lib/commonjs/segmented-control/SegmentedControl.js +36 -1
- package/lib/commonjs/segmented-control/SegmentedControl.js.map +1 -1
- package/lib/commonjs/select/Select.js +6 -81
- package/lib/commonjs/select/Select.js.map +1 -1
- package/lib/commonjs/select/Select.web.js +147 -85
- package/lib/commonjs/select/Select.web.js.map +1 -1
- package/lib/commonjs/select/index.js +4 -4
- package/lib/commonjs/select/index.js.map +1 -1
- package/lib/commonjs/select/index.web.js +4 -4
- package/lib/commonjs/select/index.web.js.map +1 -1
- package/lib/commonjs/select/shared.js +110 -5
- package/lib/commonjs/select/shared.js.map +1 -1
- package/lib/commonjs/sidebar/Sidebar.js +121 -108
- package/lib/commonjs/sidebar/Sidebar.js.map +1 -1
- package/lib/commonjs/sidebar/SidebarRail.js +70 -48
- package/lib/commonjs/sidebar/SidebarRail.js.map +1 -1
- package/lib/commonjs/sidebar/SidebarTeamMenu.js +1 -1
- package/lib/commonjs/sidebar/SidebarTeamMenu.js.map +1 -1
- package/lib/commonjs/sidebar/SidebarUserMenu.js +1 -1
- package/lib/commonjs/sidebar/SidebarUserMenu.js.map +1 -1
- package/lib/commonjs/sidebar/parts.js +9 -9
- package/lib/commonjs/sidebar/parts.js.map +1 -1
- package/lib/commonjs/styles/web-view-style.js +6 -0
- package/lib/commonjs/styles/web-view-style.js.map +1 -1
- package/lib/commonjs/surfaces/SurfaceHost.js +6 -0
- package/lib/commonjs/surfaces/SurfaceHost.js.map +1 -1
- package/lib/commonjs/surfaces/index.web.js +14 -4
- package/lib/commonjs/surfaces/index.web.js.map +1 -1
- package/lib/commonjs/tab-bar/index.web.js +13 -10
- package/lib/commonjs/tab-bar/index.web.js.map +1 -1
- package/lib/commonjs/tabs/Tabs.js +49 -2
- package/lib/commonjs/tabs/Tabs.js.map +1 -1
- package/lib/commonjs/theme/color-scope/index.web.js.map +1 -1
- package/lib/commonjs/theme/seed-scope/index.web.js.map +1 -1
- package/lib/commonjs/tooltip/index.web.js.map +1 -1
- package/lib/module/agent-chat/index.web.js +5 -3
- package/lib/module/agent-chat/index.web.js.map +1 -1
- package/lib/module/ai-chat/index.web.js +5 -2
- package/lib/module/ai-chat/index.web.js.map +1 -1
- package/lib/module/alert-dialog/index.web.js +10 -1
- package/lib/module/alert-dialog/index.web.js.map +1 -1
- package/lib/module/avatar-group/index.web.js +5 -0
- package/lib/module/avatar-group/index.web.js.map +1 -1
- package/lib/module/bottom-sheet/index.web.js +5 -0
- package/lib/module/bottom-sheet/index.web.js.map +1 -1
- package/lib/module/code/index.js +1 -0
- package/lib/module/code/index.js.map +1 -1
- package/lib/module/command/index.web.js +5 -0
- package/lib/module/command/index.web.js.map +1 -1
- package/lib/module/composer-loader/ComposerLoader.web.js +8 -0
- package/lib/module/composer-loader/ComposerLoader.web.js.map +1 -1
- package/lib/module/composer-loader/index.web.js +5 -2
- package/lib/module/composer-loader/index.web.js.map +1 -1
- package/lib/module/composer-panel/index.web.js +5 -3
- package/lib/module/composer-panel/index.web.js.map +1 -1
- package/lib/module/connection-dots/index.web.js +5 -0
- package/lib/module/connection-dots/index.web.js.map +1 -1
- package/lib/module/connection-status/index.web.js +5 -0
- package/lib/module/connection-status/index.web.js.map +1 -1
- package/lib/module/content-panel/index.web.js +5 -0
- package/lib/module/content-panel/index.web.js.map +1 -1
- package/lib/module/context-menu/ContextMenu.web.js +22 -4
- package/lib/module/context-menu/ContextMenu.web.js.map +1 -1
- package/lib/module/context-menu/context.js.map +1 -1
- package/lib/module/context-menu/index.web.js +5 -0
- package/lib/module/context-menu/index.web.js.map +1 -1
- package/lib/module/dialog/Dialog.web.js +13 -0
- package/lib/module/dialog/Dialog.web.js.map +1 -1
- package/lib/module/dialog/index.web.js +7 -11
- package/lib/module/dialog/index.web.js.map +1 -1
- package/lib/module/dropdown-menu/DropdownMenu.web.js +23 -3
- package/lib/module/dropdown-menu/DropdownMenu.web.js.map +1 -1
- package/lib/module/dropdown-menu/index.web.js +5 -0
- package/lib/module/dropdown-menu/index.web.js.map +1 -1
- package/lib/module/floating/FloatingPanel.js +42 -33
- package/lib/module/floating/FloatingPanel.js.map +1 -1
- package/lib/module/floating/escape-stack.js +85 -0
- package/lib/module/floating/escape-stack.js.map +1 -0
- package/lib/module/floating/menu-keyboard.js +227 -0
- package/lib/module/floating/menu-keyboard.js.map +1 -0
- package/lib/module/floating/menu-sub-flyout.js +28 -16
- package/lib/module/floating/menu-sub-flyout.js.map +1 -1
- package/lib/module/fonts/index.web.js +5 -20
- package/lib/module/fonts/index.web.js.map +1 -1
- package/lib/module/frosted-icon-button/FrostedIconButton.web.js +9 -0
- package/lib/module/frosted-icon-button/FrostedIconButton.web.js.map +1 -1
- package/lib/module/frosted-icon-button/index.web.js +5 -7
- package/lib/module/frosted-icon-button/index.web.js.map +1 -1
- package/lib/module/hooks/roving-focus.js +181 -0
- package/lib/module/hooks/roving-focus.js.map +1 -0
- package/lib/module/hover-card/index.web.js +5 -0
- package/lib/module/hover-card/index.web.js.map +1 -1
- package/lib/module/icons/remix/RiBookReadLine.js +9 -0
- package/lib/module/icons/remix/RiBookReadLine.js.map +1 -0
- package/lib/module/icons/remix/RiBugLine.js +9 -0
- package/lib/module/icons/remix/RiBugLine.js.map +1 -0
- package/lib/module/icons/remix/RiChat1Line.js +9 -0
- package/lib/module/icons/remix/RiChat1Line.js.map +1 -0
- package/lib/module/icons/remix/RiCloudLine.js +9 -0
- package/lib/module/icons/remix/RiCloudLine.js.map +1 -0
- package/lib/module/icons/remix/RiCodeLine.js +9 -0
- package/lib/module/icons/remix/RiCodeLine.js.map +1 -0
- package/lib/module/icons/remix/RiCpuLine.js +9 -0
- package/lib/module/icons/remix/RiCpuLine.js.map +1 -0
- package/lib/module/icons/remix/RiFloodLine.js +9 -0
- package/lib/module/icons/remix/RiFloodLine.js.map +1 -0
- package/lib/module/icons/remix/RiLockUnlockLine.js +9 -0
- package/lib/module/icons/remix/RiLockUnlockLine.js.map +1 -0
- package/lib/module/icons/remix/RiMoneyDollarCircleLine.js +9 -0
- package/lib/module/icons/remix/RiMoneyDollarCircleLine.js.map +1 -0
- package/lib/module/icons/remix/RiPlayCircleLine.js +9 -0
- package/lib/module/icons/remix/RiPlayCircleLine.js.map +1 -0
- package/lib/module/icons/remix/RiRocket2Line.js +9 -0
- package/lib/module/icons/remix/RiRocket2Line.js.map +1 -0
- package/lib/module/icons/remix/RiServerLine.js +9 -0
- package/lib/module/icons/remix/RiServerLine.js.map +1 -0
- package/lib/module/icons/remix/RiShareBoxLine.js +9 -0
- package/lib/module/icons/remix/RiShareBoxLine.js.map +1 -0
- package/lib/module/icons/remix/RiTv2Line.js +9 -0
- package/lib/module/icons/remix/RiTv2Line.js.map +1 -0
- package/lib/module/icons/remix/index.js +14 -0
- package/lib/module/icons/remix/index.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/layout/StickySection.js +101 -0
- package/lib/module/layout/StickySection.js.map +1 -0
- package/lib/module/layout/header-dock.js +54 -0
- package/lib/module/layout/header-dock.js.map +1 -0
- package/lib/module/layout/index.js +2 -0
- package/lib/module/layout/index.js.map +1 -1
- package/lib/module/list/index.web.js +5 -0
- package/lib/module/list/index.web.js.map +1 -1
- package/lib/module/loading/Loading.js +17 -155
- package/lib/module/loading/Loading.js.map +1 -1
- package/lib/module/loading/Loading.web.js +19 -155
- package/lib/module/loading/Loading.web.js.map +1 -1
- package/lib/module/loading/LoadingBase.js +194 -0
- package/lib/module/loading/LoadingBase.js.map +1 -0
- package/lib/module/loading/index.web.js +5 -13
- package/lib/module/loading/index.web.js.map +1 -1
- package/lib/module/media-flight/index.web.js +5 -9
- package/lib/module/media-flight/index.web.js.map +1 -1
- package/lib/module/menubar/Menubar.js +15 -122
- package/lib/module/menubar/Menubar.js.map +1 -1
- package/lib/module/menubar/Menubar.web.js +18 -114
- package/lib/module/menubar/Menubar.web.js.map +1 -1
- package/lib/module/menubar/MenubarBase.js +146 -0
- package/lib/module/menubar/MenubarBase.js.map +1 -0
- package/lib/module/menubar/index.web.js +5 -0
- package/lib/module/menubar/index.web.js.map +1 -1
- package/lib/module/motion/index.web.js +5 -5
- package/lib/module/motion/index.web.js.map +1 -1
- package/lib/module/page-header/PageHeader.js +38 -14
- package/lib/module/page-header/PageHeader.js.map +1 -1
- package/lib/module/popover/index.web.js +5 -0
- package/lib/module/popover/index.web.js.map +1 -1
- package/lib/module/popover/parts.js +70 -12
- package/lib/module/popover/parts.js.map +1 -1
- package/lib/module/popover/surface.js +39 -13
- package/lib/module/popover/surface.js.map +1 -1
- package/lib/module/portal/index.web.js +6 -1
- package/lib/module/portal/index.web.js.map +1 -1
- package/lib/module/progressive-blur/index.web.js +5 -0
- package/lib/module/progressive-blur/index.web.js.map +1 -1
- package/lib/module/scroll/index.web.js +5 -0
- package/lib/module/scroll/index.web.js.map +1 -1
- package/lib/module/segmented-control/SegmentedControl.js +36 -1
- package/lib/module/segmented-control/SegmentedControl.js.map +1 -1
- package/lib/module/select/Select.js +5 -77
- package/lib/module/select/Select.js.map +1 -1
- package/lib/module/select/Select.web.js +147 -82
- package/lib/module/select/Select.web.js.map +1 -1
- package/lib/module/select/index.js +2 -2
- package/lib/module/select/index.js.map +1 -1
- package/lib/module/select/index.web.js +7 -2
- package/lib/module/select/index.web.js.map +1 -1
- package/lib/module/select/shared.js +106 -6
- package/lib/module/select/shared.js.map +1 -1
- package/lib/module/sidebar/Sidebar.js +121 -108
- package/lib/module/sidebar/Sidebar.js.map +1 -1
- package/lib/module/sidebar/SidebarRail.js +70 -48
- package/lib/module/sidebar/SidebarRail.js.map +1 -1
- package/lib/module/sidebar/SidebarTeamMenu.js +2 -2
- package/lib/module/sidebar/SidebarTeamMenu.js.map +1 -1
- package/lib/module/sidebar/SidebarUserMenu.js +2 -2
- package/lib/module/sidebar/SidebarUserMenu.js.map +1 -1
- package/lib/module/sidebar/parts.js +8 -8
- package/lib/module/sidebar/parts.js.map +1 -1
- package/lib/module/styles/web-view-style.js +5 -0
- package/lib/module/styles/web-view-style.js.map +1 -1
- package/lib/module/surfaces/SurfaceHost.js +6 -0
- package/lib/module/surfaces/SurfaceHost.js.map +1 -1
- package/lib/module/surfaces/index.web.js +14 -4
- package/lib/module/surfaces/index.web.js.map +1 -1
- package/lib/module/tab-bar/index.web.js +13 -10
- package/lib/module/tab-bar/index.web.js.map +1 -1
- package/lib/module/tabs/Tabs.js +49 -2
- package/lib/module/tabs/Tabs.js.map +1 -1
- package/lib/module/theme/color-scope/index.web.js +5 -0
- package/lib/module/theme/color-scope/index.web.js.map +1 -1
- package/lib/module/theme/seed-scope/index.web.js +5 -0
- package/lib/module/theme/seed-scope/index.web.js.map +1 -1
- package/lib/module/tooltip/index.web.js +5 -0
- package/lib/module/tooltip/index.web.js.map +1 -1
- package/lib/typescript/commonjs/agent-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/ai-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/alert-dialog/index.web.d.ts +5 -1
- package/lib/typescript/commonjs/alert-dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/avatar-group/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/bottom-sheet/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/code/index.d.ts +2 -0
- package/lib/typescript/commonjs/code/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/command/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts +8 -0
- package/lib/typescript/commonjs/composer-loader/ComposerLoader.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-loader/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/connection-dots/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/connection-status/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/content-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/context-menu/ContextMenu.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/context-menu/context.d.ts +3 -0
- package/lib/typescript/commonjs/context-menu/context.d.ts.map +1 -1
- package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -1
- package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dropdown-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floating/FloatingPanel.d.ts +1 -1
- package/lib/typescript/commonjs/floating/FloatingPanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/floating/escape-stack.d.ts +55 -0
- package/lib/typescript/commonjs/floating/escape-stack.d.ts.map +1 -0
- package/lib/typescript/commonjs/floating/menu-keyboard.d.ts +57 -0
- package/lib/typescript/commonjs/floating/menu-keyboard.d.ts.map +1 -0
- package/lib/typescript/commonjs/floating/menu-sub-flyout.d.ts.map +1 -1
- package/lib/typescript/commonjs/floating/types.d.ts +11 -0
- package/lib/typescript/commonjs/floating/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/fonts/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/frosted-icon-button/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/roving-focus.d.ts +66 -0
- package/lib/typescript/commonjs/hooks/roving-focus.d.ts.map +1 -0
- package/lib/typescript/commonjs/hover-card/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiBookReadLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiBugLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiChat1Line.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiCloudLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiCodeLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiCpuLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiFloodLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiRocket2Line.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiServerLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiShareBoxLine.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiTv2Line.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/index.d.ts +14 -0
- package/lib/typescript/commonjs/icons/remix/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.web.d.ts +2 -1
- package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/layout/StickySection.d.ts +8 -0
- package/lib/typescript/commonjs/layout/StickySection.d.ts.map +1 -0
- package/lib/typescript/commonjs/layout/header-dock.d.ts +21 -0
- package/lib/typescript/commonjs/layout/header-dock.d.ts.map +1 -0
- package/lib/typescript/commonjs/layout/index.d.ts +3 -0
- package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/list/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/Loading.d.ts +8 -2
- package/lib/typescript/commonjs/loading/Loading.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/Loading.web.d.ts +10 -2
- package/lib/typescript/commonjs/loading/Loading.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/LoadingBase.d.ts +64 -0
- package/lib/typescript/commonjs/loading/LoadingBase.d.ts.map +1 -0
- package/lib/typescript/commonjs/loading/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/media-flight/index.web.d.ts +0 -9
- package/lib/typescript/commonjs/media-flight/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/menubar/Menubar.d.ts +14 -9
- package/lib/typescript/commonjs/menubar/Menubar.d.ts.map +1 -1
- package/lib/typescript/commonjs/menubar/Menubar.web.d.ts +8 -6
- package/lib/typescript/commonjs/menubar/Menubar.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/menubar/MenubarBase.d.ts +5 -0
- package/lib/typescript/commonjs/menubar/MenubarBase.d.ts.map +1 -0
- package/lib/typescript/commonjs/menubar/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/motion/index.web.d.ts +0 -5
- package/lib/typescript/commonjs/motion/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/page-header/PageHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/page-header/types.d.ts +10 -6
- package/lib/typescript/commonjs/page-header/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/popover/parts.d.ts.map +1 -1
- package/lib/typescript/commonjs/popover/surface.d.ts +15 -5
- package/lib/typescript/commonjs/popover/surface.d.ts.map +1 -1
- package/lib/typescript/commonjs/portal/index.web.d.ts +1 -1
- package/lib/typescript/commonjs/portal/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/progressive-blur/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/Select.d.ts +2 -4
- package/lib/typescript/commonjs/select/Select.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/Select.web.d.ts +2 -4
- package/lib/typescript/commonjs/select/Select.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/index.d.ts +2 -2
- package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/index.web.d.ts +2 -2
- package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/shared.d.ts +52 -5
- package/lib/typescript/commonjs/select/shared.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/types.d.ts +6 -0
- package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/Sidebar.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/SidebarRail.d.ts +1 -1
- package/lib/typescript/commonjs/sidebar/SidebarRail.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/parts.d.ts +8 -2
- package/lib/typescript/commonjs/sidebar/parts.d.ts.map +1 -1
- package/lib/typescript/commonjs/sidebar/types.d.ts +2 -0
- package/lib/typescript/commonjs/sidebar/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/styles/web-view-style.d.ts +2 -0
- package/lib/typescript/commonjs/styles/web-view-style.d.ts.map +1 -1
- package/lib/typescript/commonjs/surfaces/SurfaceHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/surfaces/index.web.d.ts +9 -4
- package/lib/typescript/commonjs/surfaces/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/types.d.ts +6 -0
- package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/seed-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tooltip/index.web.d.ts.map +1 -1
- package/lib/typescript/module/agent-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/module/alert-dialog/index.web.d.ts +5 -1
- package/lib/typescript/module/alert-dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/module/avatar-group/index.web.d.ts.map +1 -1
- package/lib/typescript/module/bottom-sheet/index.web.d.ts.map +1 -1
- package/lib/typescript/module/code/index.d.ts +2 -0
- package/lib/typescript/module/code/index.d.ts.map +1 -1
- package/lib/typescript/module/command/index.web.d.ts.map +1 -1
- package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts +8 -0
- package/lib/typescript/module/composer-loader/ComposerLoader.web.d.ts.map +1 -1
- package/lib/typescript/module/composer-loader/index.web.d.ts.map +1 -1
- package/lib/typescript/module/composer-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/module/connection-dots/index.web.d.ts.map +1 -1
- package/lib/typescript/module/connection-status/index.web.d.ts.map +1 -1
- package/lib/typescript/module/content-panel/index.web.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/ContextMenu.web.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/context.d.ts +3 -0
- package/lib/typescript/module/context-menu/context.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/index.web.d.ts +2 -1
- package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/module/dropdown-menu/DropdownMenu.web.d.ts.map +1 -1
- package/lib/typescript/module/dropdown-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/module/floating/FloatingPanel.d.ts +1 -1
- package/lib/typescript/module/floating/FloatingPanel.d.ts.map +1 -1
- package/lib/typescript/module/floating/escape-stack.d.ts +55 -0
- package/lib/typescript/module/floating/escape-stack.d.ts.map +1 -0
- package/lib/typescript/module/floating/menu-keyboard.d.ts +57 -0
- package/lib/typescript/module/floating/menu-keyboard.d.ts.map +1 -0
- package/lib/typescript/module/floating/menu-sub-flyout.d.ts.map +1 -1
- package/lib/typescript/module/floating/types.d.ts +11 -0
- package/lib/typescript/module/floating/types.d.ts.map +1 -1
- package/lib/typescript/module/fonts/index.web.d.ts.map +1 -1
- package/lib/typescript/module/frosted-icon-button/FrostedIconButton.web.d.ts.map +1 -1
- package/lib/typescript/module/frosted-icon-button/index.web.d.ts.map +1 -1
- package/lib/typescript/module/hooks/roving-focus.d.ts +66 -0
- package/lib/typescript/module/hooks/roving-focus.d.ts.map +1 -0
- package/lib/typescript/module/hover-card/index.web.d.ts.map +1 -1
- package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiBookReadLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiBugLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiBugLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiChat1Line.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiChat1Line.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiCloudLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiCloudLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiCodeLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiCodeLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiCpuLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiCpuLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiFloodLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiFloodLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiLockUnlockLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiMoneyDollarCircleLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiPlayCircleLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiRocket2Line.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiServerLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiServerLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiShareBoxLine.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiTv2Line.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiTv2Line.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/index.d.ts +14 -0
- package/lib/typescript/module/icons/remix/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/index.web.d.ts +2 -1
- package/lib/typescript/module/index.web.d.ts.map +1 -1
- package/lib/typescript/module/layout/StickySection.d.ts +8 -0
- package/lib/typescript/module/layout/StickySection.d.ts.map +1 -0
- package/lib/typescript/module/layout/header-dock.d.ts +21 -0
- package/lib/typescript/module/layout/header-dock.d.ts.map +1 -0
- package/lib/typescript/module/layout/index.d.ts +3 -0
- package/lib/typescript/module/layout/index.d.ts.map +1 -1
- package/lib/typescript/module/list/index.web.d.ts.map +1 -1
- package/lib/typescript/module/loading/Loading.d.ts +8 -2
- package/lib/typescript/module/loading/Loading.d.ts.map +1 -1
- package/lib/typescript/module/loading/Loading.web.d.ts +10 -2
- package/lib/typescript/module/loading/Loading.web.d.ts.map +1 -1
- package/lib/typescript/module/loading/LoadingBase.d.ts +64 -0
- package/lib/typescript/module/loading/LoadingBase.d.ts.map +1 -0
- package/lib/typescript/module/loading/index.web.d.ts.map +1 -1
- package/lib/typescript/module/media-flight/index.web.d.ts +0 -9
- package/lib/typescript/module/media-flight/index.web.d.ts.map +1 -1
- package/lib/typescript/module/menubar/Menubar.d.ts +14 -9
- package/lib/typescript/module/menubar/Menubar.d.ts.map +1 -1
- package/lib/typescript/module/menubar/Menubar.web.d.ts +8 -6
- package/lib/typescript/module/menubar/Menubar.web.d.ts.map +1 -1
- package/lib/typescript/module/menubar/MenubarBase.d.ts +5 -0
- package/lib/typescript/module/menubar/MenubarBase.d.ts.map +1 -0
- package/lib/typescript/module/menubar/index.web.d.ts.map +1 -1
- package/lib/typescript/module/motion/index.web.d.ts +0 -5
- package/lib/typescript/module/motion/index.web.d.ts.map +1 -1
- package/lib/typescript/module/page-header/PageHeader.d.ts.map +1 -1
- package/lib/typescript/module/page-header/types.d.ts +10 -6
- package/lib/typescript/module/page-header/types.d.ts.map +1 -1
- package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
- package/lib/typescript/module/popover/parts.d.ts.map +1 -1
- package/lib/typescript/module/popover/surface.d.ts +15 -5
- package/lib/typescript/module/popover/surface.d.ts.map +1 -1
- package/lib/typescript/module/portal/index.web.d.ts +1 -1
- package/lib/typescript/module/portal/index.web.d.ts.map +1 -1
- package/lib/typescript/module/progressive-blur/index.web.d.ts.map +1 -1
- package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/module/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/module/select/Select.d.ts +2 -4
- package/lib/typescript/module/select/Select.d.ts.map +1 -1
- package/lib/typescript/module/select/Select.web.d.ts +2 -4
- package/lib/typescript/module/select/Select.web.d.ts.map +1 -1
- package/lib/typescript/module/select/index.d.ts +2 -2
- package/lib/typescript/module/select/index.d.ts.map +1 -1
- package/lib/typescript/module/select/index.web.d.ts +2 -2
- package/lib/typescript/module/select/index.web.d.ts.map +1 -1
- package/lib/typescript/module/select/shared.d.ts +52 -5
- package/lib/typescript/module/select/shared.d.ts.map +1 -1
- package/lib/typescript/module/select/types.d.ts +6 -0
- package/lib/typescript/module/select/types.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/Sidebar.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/SidebarRail.d.ts +1 -1
- package/lib/typescript/module/sidebar/SidebarRail.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/parts.d.ts +8 -2
- package/lib/typescript/module/sidebar/parts.d.ts.map +1 -1
- package/lib/typescript/module/sidebar/types.d.ts +2 -0
- package/lib/typescript/module/sidebar/types.d.ts.map +1 -1
- package/lib/typescript/module/styles/web-view-style.d.ts +2 -0
- package/lib/typescript/module/styles/web-view-style.d.ts.map +1 -1
- package/lib/typescript/module/surfaces/SurfaceHost.d.ts.map +1 -1
- package/lib/typescript/module/surfaces/index.web.d.ts +9 -4
- package/lib/typescript/module/surfaces/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/module/tabs/types.d.ts +6 -0
- package/lib/typescript/module/tabs/types.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/module/theme/seed-scope/index.web.d.ts.map +1 -1
- package/lib/typescript/module/tooltip/index.web.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agent-chat/index.web.ts +5 -3
- package/src/ai-chat/index.web.ts +5 -2
- package/src/alert-dialog/index.web.ts +10 -1
- package/src/avatar-group/index.web.ts +5 -0
- package/src/bottom-sheet/index.web.ts +5 -0
- package/src/code/index.ts +2 -0
- package/src/command/index.web.ts +5 -0
- package/src/composer-loader/ComposerLoader.web.tsx +8 -0
- package/src/composer-loader/index.web.ts +5 -2
- package/src/composer-panel/index.web.ts +5 -3
- package/src/connection-dots/index.web.ts +5 -0
- package/src/connection-status/index.web.ts +5 -0
- package/src/content-panel/index.web.ts +5 -0
- package/src/context-menu/ContextMenu.web.tsx +26 -3
- package/src/context-menu/context.ts +3 -0
- package/src/context-menu/index.web.ts +5 -0
- package/src/dialog/Dialog.web.tsx +13 -0
- package/src/dialog/index.web.ts +7 -11
- package/src/dropdown-menu/DropdownMenu.web.tsx +25 -2
- package/src/dropdown-menu/index.web.ts +5 -0
- package/src/floating/FloatingPanel.tsx +37 -38
- package/src/floating/escape-stack.ts +92 -0
- package/src/floating/menu-keyboard.ts +242 -0
- package/src/floating/menu-sub-flyout.tsx +22 -17
- package/src/floating/types.ts +11 -0
- package/src/fonts/index.web.ts +5 -20
- package/src/frosted-icon-button/FrostedIconButton.web.tsx +9 -0
- package/src/frosted-icon-button/index.web.ts +5 -7
- package/src/hooks/roving-focus.ts +204 -0
- package/src/hover-card/index.web.ts +5 -0
- package/src/icons/remix/RiBookReadLine.tsx +6 -0
- package/src/icons/remix/RiBugLine.tsx +6 -0
- package/src/icons/remix/RiChat1Line.tsx +6 -0
- package/src/icons/remix/RiCloudLine.tsx +6 -0
- package/src/icons/remix/RiCodeLine.tsx +6 -0
- package/src/icons/remix/RiCpuLine.tsx +6 -0
- package/src/icons/remix/RiFloodLine.tsx +6 -0
- package/src/icons/remix/RiLockUnlockLine.tsx +6 -0
- package/src/icons/remix/RiMoneyDollarCircleLine.tsx +6 -0
- package/src/icons/remix/RiPlayCircleLine.tsx +6 -0
- package/src/icons/remix/RiRocket2Line.tsx +6 -0
- package/src/icons/remix/RiServerLine.tsx +6 -0
- package/src/icons/remix/RiShareBoxLine.tsx +6 -0
- package/src/icons/remix/RiTv2Line.tsx +6 -0
- package/src/icons/remix/index.ts +14 -0
- package/src/index.ts +4 -0
- package/src/index.web.ts +4 -0
- package/src/layout/StickySection.tsx +75 -0
- package/src/layout/header-dock.tsx +42 -0
- package/src/layout/index.ts +4 -0
- package/src/list/index.web.ts +5 -0
- package/src/loading/Loading.tsx +15 -135
- package/src/loading/Loading.web.tsx +16 -134
- package/src/loading/LoadingBase.tsx +170 -0
- package/src/loading/index.web.ts +5 -13
- package/src/media-flight/index.web.ts +5 -9
- package/src/menubar/Menubar.tsx +16 -147
- package/src/menubar/Menubar.web.tsx +15 -138
- package/src/menubar/MenubarBase.tsx +170 -0
- package/src/menubar/index.web.ts +5 -0
- package/src/motion/index.web.ts +5 -5
- package/src/page-header/PageHeader.tsx +26 -12
- package/src/page-header/types.ts +10 -6
- package/src/popover/index.web.ts +5 -0
- package/src/popover/parts.tsx +76 -12
- package/src/popover/surface.ts +68 -15
- package/src/portal/index.web.ts +6 -1
- package/src/progressive-blur/index.web.ts +5 -0
- package/src/scroll/index.web.ts +5 -0
- package/src/segmented-control/SegmentedControl.tsx +45 -1
- package/src/select/Select.tsx +4 -67
- package/src/select/Select.web.tsx +133 -69
- package/src/select/index.ts +3 -3
- package/src/select/index.web.ts +8 -3
- package/src/select/shared.tsx +107 -5
- package/src/select/types.ts +6 -0
- package/src/sidebar/Sidebar.tsx +3 -0
- package/src/sidebar/SidebarRail.tsx +6 -1
- package/src/sidebar/SidebarTeamMenu.tsx +2 -2
- package/src/sidebar/SidebarUserMenu.tsx +2 -2
- package/src/sidebar/parts.tsx +8 -9
- package/src/sidebar/types.ts +2 -0
- package/src/styles/web-view-style.ts +5 -0
- package/src/surfaces/SurfaceHost.tsx +6 -0
- package/src/surfaces/index.web.ts +14 -4
- package/src/tab-bar/index.web.ts +13 -10
- package/src/tabs/Tabs.tsx +65 -1
- package/src/tabs/types.ts +6 -0
- package/src/theme/color-scope/index.web.ts +5 -0
- package/src/theme/seed-scope/index.web.ts +5 -0
- package/src/tooltip/index.web.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/index.web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/index.web.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/seed-scope/index.web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/seed-scope/index.web.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/tooltip/index.web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/tooltip/index.web.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// `
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/agent-chat/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
|
+
|
|
4
6
|
export {
|
|
5
7
|
AgentChat,
|
|
6
8
|
AgentChatActions,
|
package/src/ai-chat/index.web.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/ai-chat/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
|
+
|
|
3
6
|
export {
|
|
4
7
|
AiChatAssistantMessage,
|
|
5
8
|
AiChatFeedbackRow,
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/alert-dialog/index.ts.
|
|
3
|
+
// Re-run `bun run generate:exports` (or any `bun run build`) after
|
|
4
|
+
// changing that barrel or the set of web-forked subpaths.
|
|
5
|
+
|
|
1
6
|
import { Dialog } from '../dialog/index.web';
|
|
2
7
|
import { createAlertDialog } from './AlertDialog';
|
|
3
8
|
|
|
4
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* The declarative, CONTROLLED confirm dialog. The imperative counterpart is
|
|
11
|
+
* `confirm()` from `@oxy.so/bloom/surfaces`, which presents onto the shared
|
|
12
|
+
* surface stack — this family owns no queue and no host of its own.
|
|
13
|
+
*/
|
|
5
14
|
export const AlertDialog = createAlertDialog(Dialog);
|
|
6
15
|
|
|
7
16
|
export type { AlertDialogProps, AlertDialogActionStyle } from './types';
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/avatar-group/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 { AvatarGroup } from './AvatarGroup.web';
|
|
2
7
|
export type { AvatarGroupProps, AvatarGroupItem } from './types';
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/bottom-sheet/index.ts.
|
|
3
|
+
// Re-run `bun run generate:exports` (or any `bun run build`) after
|
|
4
|
+
// changing that barrel or the set of web-forked subpaths.
|
|
5
|
+
|
|
1
6
|
export {
|
|
2
7
|
BottomSheet,
|
|
3
8
|
} from './BottomSheet.web';
|
package/src/code/index.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { CodeBlock } from './CodeBlock';
|
|
|
3
3
|
export { CodeLines } from './CodeLines';
|
|
4
4
|
export { tokenizeCode, isHighlightedLanguage } from './highlight';
|
|
5
5
|
export { Pre } from './Pre';
|
|
6
|
+
export { tokenColor, useCodePalette } from './shared';
|
|
7
|
+
export type { CodePalette } from './shared';
|
|
6
8
|
export type {
|
|
7
9
|
CodeBlockLabels,
|
|
8
10
|
CodeBlockProps,
|
package/src/command/index.web.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/command/index.ts.
|
|
3
|
+
// Re-run `bun run generate:exports` (or any `bun run build`) after
|
|
4
|
+
// changing that barrel or the set of web-forked subpaths.
|
|
5
|
+
|
|
1
6
|
import { Dialog } from '../dialog/index.web';
|
|
2
7
|
import { createCommand } from './Command';
|
|
3
8
|
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ComposerLoader` — WEB: the light band laps on CSS keyframes over a DOM
|
|
3
|
+
* `<svg>`, where the native fork drives a react-native-svg frame clock.
|
|
4
|
+
*
|
|
5
|
+
* The lap geometry both forks draw is shared (`./shared`); what differs is only
|
|
6
|
+
* what advances it. Keeping the geometry in one module is what stops the two
|
|
7
|
+
* bands from drifting apart while still looking like one component.
|
|
8
|
+
*/
|
|
1
9
|
import React, { memo, useCallback, useEffect, useId, useMemo, useState } from 'react';
|
|
2
10
|
import { StyleSheet, View, type LayoutChangeEvent } from 'react-native';
|
|
3
11
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/composer-loader/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
|
+
|
|
3
6
|
export { ComposerLoader } from './ComposerLoader.web';
|
|
4
7
|
export { resolveComposerLoaderColors, DEFAULT_COMPOSER_LOADER_COLORS } from './shared';
|
|
5
8
|
export type { ComposerLoaderColors, ComposerLoaderProps } from './types';
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// `
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/composer-panel/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
|
+
|
|
4
6
|
export { ComposerPanel } from './ComposerPanel.web';
|
|
5
7
|
export { ComposerAttachments } from './ComposerAttachments.web';
|
|
6
8
|
export { ModelPicker } from './ModelPicker.web';
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/connection-dots/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 { ConnectionDots } from './ConnectionDots.web';
|
|
2
7
|
export type { ConnectionDotsProps } from './types';
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/connection-status/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 type { ConnectionStatusToastsProps } from './shared';
|
|
2
7
|
// The hatch a consumer needs off Metro, where the optional `require` does not
|
|
3
8
|
// deliver the peer even when it is installed. See `netinfo.ts`.
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/content-panel/index.ts.
|
|
3
|
+
// Re-run `bun run generate:exports` (or any `bun run build`) after
|
|
4
|
+
// changing that barrel or the set of web-forked subpaths.
|
|
5
|
+
|
|
1
6
|
export {
|
|
2
7
|
GUTTER_MASK_SPREAD,
|
|
3
8
|
PANEL_TOP_INSET,
|
|
@@ -12,6 +12,13 @@ import type { View } from 'react-native';
|
|
|
12
12
|
import { MENU_MIN_WIDTH_CLASS, MENU_TRIGGER_POPUP } from '../floating/constants';
|
|
13
13
|
import { MenuSurfaceProvider, type MenuSurfaceContextValue } from '../floating/context';
|
|
14
14
|
import { FloatingPanel } from '../floating/FloatingPanel';
|
|
15
|
+
import {
|
|
16
|
+
hostElement,
|
|
17
|
+
isInMenuSurface,
|
|
18
|
+
useMenuFocusIntent,
|
|
19
|
+
useMenuPanelKeys,
|
|
20
|
+
useReturnFocusOnClose,
|
|
21
|
+
} from '../floating/menu-keyboard';
|
|
15
22
|
import { createMenuRows } from '../floating/menu-rows';
|
|
16
23
|
import { createFlyoutMenuSub } from '../floating/menu-sub-flyout';
|
|
17
24
|
import { cx } from '../floating/shared';
|
|
@@ -26,6 +33,7 @@ import type {
|
|
|
26
33
|
|
|
27
34
|
export function ContextMenu({ children, onOpenChange }: ContextMenuProps) {
|
|
28
35
|
const [anchor, setAnchor] = useState<FloatingAnchor | null>(null);
|
|
36
|
+
const focusIntent = useMenuFocusIntent();
|
|
29
37
|
|
|
30
38
|
const value = useMemo(
|
|
31
39
|
() => ({
|
|
@@ -41,8 +49,9 @@ export function ContextMenu({ children, onOpenChange }: ContextMenuProps) {
|
|
|
41
49
|
onOpenChange?.(false);
|
|
42
50
|
},
|
|
43
51
|
anchor,
|
|
52
|
+
focusIntent,
|
|
44
53
|
}),
|
|
45
|
-
[anchor, onOpenChange],
|
|
54
|
+
[anchor, onOpenChange, focusIntent],
|
|
46
55
|
);
|
|
47
56
|
|
|
48
57
|
return <ContextMenuProvider value={value}>{children}</ContextMenuProvider>;
|
|
@@ -59,7 +68,9 @@ export function ContextMenuTrigger({
|
|
|
59
68
|
}: ContextMenuTriggerProps) {
|
|
60
69
|
const menu = useContextMenu();
|
|
61
70
|
const wrapperRef = useRef<View | null>(null);
|
|
62
|
-
const { openAt } = menu;
|
|
71
|
+
const { openAt, focusIntent } = menu;
|
|
72
|
+
// Focus returns here when the menu closes with it inside (`menu-keyboard.ts`).
|
|
73
|
+
useReturnFocusOnClose(wrapperRef, menu.open, isInMenuSurface);
|
|
63
74
|
|
|
64
75
|
// A DOM subscription, not derived state: `contextmenu` has no React Native
|
|
65
76
|
// prop and react-native-web filters unknown props off a `View`, so the only
|
|
@@ -73,6 +84,11 @@ export function ContextMenuTrigger({
|
|
|
73
84
|
|
|
74
85
|
const onContextMenu = (event: MouseEvent) => {
|
|
75
86
|
event.preventDefault();
|
|
87
|
+
// A context menu takes focus on its first row however it opened — the
|
|
88
|
+
// right-click is the only way in, and without focus in the panel its
|
|
89
|
+
// arrows and Escape have nothing to act on. A pointer open paints no
|
|
90
|
+
// ring: the rows highlight on `:focus-visible` only.
|
|
91
|
+
if (focusIntent) focusIntent.edge.current = 'first';
|
|
76
92
|
openAt({
|
|
77
93
|
top: event.clientY,
|
|
78
94
|
bottom: event.clientY,
|
|
@@ -82,7 +98,7 @@ export function ContextMenuTrigger({
|
|
|
82
98
|
};
|
|
83
99
|
element.addEventListener('contextmenu', onContextMenu);
|
|
84
100
|
return () => element.removeEventListener('contextmenu', onContextMenu);
|
|
85
|
-
}, [openAt, disabled]);
|
|
101
|
+
}, [openAt, disabled, focusIntent]);
|
|
86
102
|
|
|
87
103
|
return (
|
|
88
104
|
<TriggerSlot
|
|
@@ -129,9 +145,16 @@ export function ContextMenuContent({
|
|
|
129
145
|
[menu.close],
|
|
130
146
|
);
|
|
131
147
|
const onDismiss = useCallback(() => menu.close(), [menu]);
|
|
148
|
+
const [panel, setPanel] = useState<View | null>(null);
|
|
149
|
+
useMenuPanelKeys(hostElement(panel), {
|
|
150
|
+
open: menu.open,
|
|
151
|
+
onTab: onDismiss,
|
|
152
|
+
intent: menu.focusIntent,
|
|
153
|
+
});
|
|
132
154
|
|
|
133
155
|
return (
|
|
134
156
|
<FloatingPanel
|
|
157
|
+
panelRef={setPanel}
|
|
135
158
|
open={menu.open}
|
|
136
159
|
anchor={menu.anchor}
|
|
137
160
|
role="menu"
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { createContext, useContext } from 'react';
|
|
11
11
|
|
|
12
|
+
import type { MenuFocusIntent } from '../floating/menu-keyboard';
|
|
12
13
|
import type { FloatingAnchor } from '../floating/types';
|
|
13
14
|
|
|
14
15
|
export interface ContextMenuContextValue {
|
|
@@ -21,6 +22,8 @@ export interface ContextMenuContextValue {
|
|
|
21
22
|
close: () => void;
|
|
22
23
|
/** Where the surface anchors. `null` on native and while closed. */
|
|
23
24
|
anchor: FloatingAnchor | null;
|
|
25
|
+
/** Web only: the row focus lands on when the menu opens (`menu-keyboard.ts`). */
|
|
26
|
+
focusIntent?: MenuFocusIntent;
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
const ContextMenuContext = createContext<ContextMenuContextValue | null>(null);
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/context-menu/index.ts.
|
|
3
|
+
// Re-run `bun run generate:exports` (or any `bun run build`) after
|
|
4
|
+
// changing that barrel or the set of web-forked subpaths.
|
|
5
|
+
|
|
1
6
|
export {
|
|
2
7
|
ContextMenu,
|
|
3
8
|
ContextMenuTrigger,
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Dialog` — WEB: a pure-DOM modal overlay rendered into Bloom's `Portal`.
|
|
3
|
+
*
|
|
4
|
+
* The native fork (`Dialog.tsx`) presents through Bloom's `BottomSheet`, which
|
|
5
|
+
* is built on react-native-gesture-handler + reanimated and has no web
|
|
6
|
+
* behaviour worth emulating. So this is not a port of that file; it is the
|
|
7
|
+
* other half of one contract, and the props are what the two agree on.
|
|
8
|
+
*
|
|
9
|
+
* This fork is also the family's only publisher of `BLOOM_DIALOG_CSS` — the
|
|
10
|
+
* stylesheet a web consumer adopts. Native has no counterpart, which is why
|
|
11
|
+
* the generated web barrel carries one line its native sibling cannot
|
|
12
|
+
* (`WEB_BARREL_EXTRAS` in `scripts/generate-platform-exports.mjs`).
|
|
13
|
+
*/
|
|
1
14
|
import React, {
|
|
2
15
|
createContext,
|
|
3
16
|
useCallback,
|
package/src/dialog/index.web.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
// Web bundlers select this file via the `"browser"` export condition in
|
|
9
|
-
// `package.json`'s `exports['./dialog']`; native bundlers fall through to
|
|
10
|
-
// the React Native build above.
|
|
11
|
-
export { Dialog, BLOOM_DIALOG_CSS } from './Dialog.web';
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/dialog/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
|
+
|
|
6
|
+
export { Dialog } from './Dialog.web';
|
|
12
7
|
export { useDialogContext, useDialogControl } from './context';
|
|
13
8
|
export { useDialogHeader } from './DialogHeader';
|
|
14
9
|
export { useDialogFrame } from './DialogMorph';
|
|
@@ -24,3 +19,4 @@ export type {
|
|
|
24
19
|
DialogProps,
|
|
25
20
|
ResponsiveDialogPlacement,
|
|
26
21
|
} from './types';
|
|
22
|
+
export { BLOOM_DIALOG_CSS } from './Dialog.web';
|
|
@@ -6,12 +6,18 @@
|
|
|
6
6
|
* `floating/menu-rows` set the native file publishes; what changes between the
|
|
7
7
|
* two is stated once, as `presentation`.
|
|
8
8
|
*/
|
|
9
|
-
import React, { useCallback, useMemo, useRef } from 'react';
|
|
9
|
+
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
10
10
|
import type { View } from 'react-native';
|
|
11
11
|
|
|
12
12
|
import { MENU_MIN_WIDTH_CLASS, MENU_TRIGGER_POPUP } from '../floating/constants';
|
|
13
13
|
import { MenuSurfaceProvider, type MenuSurfaceContextValue } from '../floating/context';
|
|
14
14
|
import { FloatingPanel } from '../floating/FloatingPanel';
|
|
15
|
+
import {
|
|
16
|
+
hostElement,
|
|
17
|
+
useMenuFocusIntent,
|
|
18
|
+
useMenuPanelKeys,
|
|
19
|
+
useMenuTriggerKeys,
|
|
20
|
+
} from '../floating/menu-keyboard';
|
|
15
21
|
import { createMenuRows } from '../floating/menu-rows';
|
|
16
22
|
import { createFlyoutMenuSub } from '../floating/menu-sub-flyout';
|
|
17
23
|
import { cx } from '../floating/shared';
|
|
@@ -37,7 +43,11 @@ export function DropdownMenu({
|
|
|
37
43
|
onChange: onOpenChange,
|
|
38
44
|
});
|
|
39
45
|
const anchorRef = useRef<View | null>(null);
|
|
40
|
-
const
|
|
46
|
+
const focusIntent = useMenuFocusIntent();
|
|
47
|
+
const value = useMemo(
|
|
48
|
+
() => ({ open: isOpen, setOpen, anchorRef, focusIntent }),
|
|
49
|
+
[isOpen, setOpen, focusIntent],
|
|
50
|
+
);
|
|
41
51
|
|
|
42
52
|
return <DropdownMenuProvider value={value}>{children}</DropdownMenuProvider>;
|
|
43
53
|
}
|
|
@@ -52,6 +62,14 @@ export function DropdownMenuTrigger({
|
|
|
52
62
|
testID,
|
|
53
63
|
}: DropdownMenuTriggerProps) {
|
|
54
64
|
const menu = useDropdownMenu();
|
|
65
|
+
// Web: Enter/Space/ArrowDown open into the first row, ArrowUp into the last,
|
|
66
|
+
// and focus comes back here when the menu closes (`floating/menu-keyboard.ts`).
|
|
67
|
+
useMenuTriggerKeys(menu.anchorRef, {
|
|
68
|
+
open: menu.open,
|
|
69
|
+
setOpen: menu.setOpen,
|
|
70
|
+
disabled,
|
|
71
|
+
intent: menu.focusIntent,
|
|
72
|
+
});
|
|
55
73
|
|
|
56
74
|
return (
|
|
57
75
|
<TriggerSlot
|
|
@@ -97,9 +115,14 @@ export function DropdownMenuContent({
|
|
|
97
115
|
() => ({ close, presentation: 'dropdown' }),
|
|
98
116
|
[close],
|
|
99
117
|
);
|
|
118
|
+
// Arrows, Home/End, Space and Tab inside the open menu, and the keyboard
|
|
119
|
+
// open's landing row (`floating/menu-keyboard.ts`).
|
|
120
|
+
const [panel, setPanel] = useState<View | null>(null);
|
|
121
|
+
useMenuPanelKeys(hostElement(panel), { open: menu.open, onTab: close, intent: menu.focusIntent });
|
|
100
122
|
|
|
101
123
|
return (
|
|
102
124
|
<FloatingPanel
|
|
125
|
+
panelRef={setPanel}
|
|
103
126
|
open={menu.open}
|
|
104
127
|
anchor={anchor}
|
|
105
128
|
role="menu"
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-platform-exports.mjs — DO NOT EDIT.
|
|
2
|
+
// Source of truth: src/dropdown-menu/index.ts.
|
|
3
|
+
// Re-run `bun run generate:exports` (or any `bun run build`) after
|
|
4
|
+
// changing that barrel or the set of web-forked subpaths.
|
|
5
|
+
|
|
1
6
|
export {
|
|
2
7
|
DropdownMenu,
|
|
3
8
|
DropdownMenuTrigger,
|
|
@@ -89,6 +89,7 @@ import {
|
|
|
89
89
|
VIEWPORT_GUTTER,
|
|
90
90
|
} from './constants';
|
|
91
91
|
import { useMenuPalette } from './menu-palette';
|
|
92
|
+
import { pushFloatingEscape } from './escape-stack';
|
|
92
93
|
import { cx } from './shared';
|
|
93
94
|
import type { FloatingPanelProps, FloatingSide } from './types';
|
|
94
95
|
import { useFrameThrottle } from './use-frame-throttle';
|
|
@@ -105,36 +106,31 @@ const AnimatedPanel = Animated.createAnimatedComponent(StyledView);
|
|
|
105
106
|
const MENU_EASING = Easing.bezier(...MENU_MOTION_EASING);
|
|
106
107
|
|
|
107
108
|
/**
|
|
108
|
-
* The
|
|
109
|
-
* `
|
|
110
|
-
*
|
|
111
|
-
*
|
|
109
|
+
* The ONE motion every anchored surface runs: 150ms `ease-out`, fade +
|
|
110
|
+
* `scale-95` + 2px blur, no slide, scaling from the corner nearest the
|
|
111
|
+
* trigger, and the same shape reversed on the way out. It was written out
|
|
112
|
+
* three times, once per surface, with only the chrome differing — three
|
|
113
|
+
* spellings of one decision, any of which could be edited alone.
|
|
114
|
+
*/
|
|
115
|
+
const MENU_MOTION = {
|
|
116
|
+
duration: MENU_MOTION_DURATION,
|
|
117
|
+
easing: MENU_EASING,
|
|
118
|
+
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
119
|
+
slide: 0,
|
|
120
|
+
blur: MENU_MOTION_BLUR,
|
|
121
|
+
} as const;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The per-surface chrome. `menu` and `listbox` use the menu recipe
|
|
125
|
+
* (`constants.ts`'s `MENU_PANEL_CLASS` / `LISTBOX_PANEL_CLASS`) with colours
|
|
126
|
+
* from `menu-palette.ts`; `popover` carries NO chrome of its own here, because
|
|
127
|
+
* `popover/surface.ts` resolves the whole panel inline and hands it over as
|
|
128
|
+
* `style` so a caller's `className` can still override any one piece of it.
|
|
112
129
|
*/
|
|
113
130
|
const SURFACE = {
|
|
114
|
-
popover: {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
easing: MENU_EASING,
|
|
118
|
-
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
119
|
-
slide: 0,
|
|
120
|
-
blur: MENU_MOTION_BLUR,
|
|
121
|
-
},
|
|
122
|
-
menu: {
|
|
123
|
-
className: MENU_PANEL_CLASS,
|
|
124
|
-
duration: MENU_MOTION_DURATION,
|
|
125
|
-
easing: MENU_EASING,
|
|
126
|
-
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
127
|
-
slide: 0,
|
|
128
|
-
blur: MENU_MOTION_BLUR,
|
|
129
|
-
},
|
|
130
|
-
listbox: {
|
|
131
|
-
className: LISTBOX_PANEL_CLASS,
|
|
132
|
-
duration: MENU_MOTION_DURATION,
|
|
133
|
-
easing: MENU_EASING,
|
|
134
|
-
scaleFrom: MENU_MOTION_SCALE_FROM,
|
|
135
|
-
slide: 0,
|
|
136
|
-
blur: MENU_MOTION_BLUR,
|
|
137
|
-
},
|
|
131
|
+
popover: { ...MENU_MOTION, className: '' },
|
|
132
|
+
menu: { ...MENU_MOTION, className: MENU_PANEL_CLASS },
|
|
133
|
+
listbox: { ...MENU_MOTION, className: LISTBOX_PANEL_CLASS },
|
|
138
134
|
} as const;
|
|
139
135
|
|
|
140
136
|
/**
|
|
@@ -203,6 +199,7 @@ export function FloatingPanel({
|
|
|
203
199
|
testID,
|
|
204
200
|
children,
|
|
205
201
|
surface = 'popover',
|
|
202
|
+
panelRef,
|
|
206
203
|
}: FloatingPanelProps) {
|
|
207
204
|
const chrome = SURFACE[surface];
|
|
208
205
|
const isMenuSurface = surface !== 'popover';
|
|
@@ -224,8 +221,11 @@ export function FloatingPanel({
|
|
|
224
221
|
const reducedMotion = useReducedMotion();
|
|
225
222
|
const progress = useSharedValue(0);
|
|
226
223
|
|
|
224
|
+
const panelRefRef = useRef(panelRef);
|
|
225
|
+
panelRefRef.current = panelRef;
|
|
227
226
|
const attach = useCallback((node: View | null) => {
|
|
228
227
|
setPanelNode(node);
|
|
228
|
+
panelRefRef.current?.(node);
|
|
229
229
|
}, []);
|
|
230
230
|
|
|
231
231
|
const store = useCallback((next: DropdownPlacement | null) => {
|
|
@@ -438,18 +438,17 @@ export function FloatingPanel({
|
|
|
438
438
|
[progress, slideX, slideY, scaleFrom, blurFrom],
|
|
439
439
|
);
|
|
440
440
|
|
|
441
|
+
// Escape dismisses the INNERMOST open surface and nothing under it — a Select
|
|
442
|
+
// inside a Dialog closes its list, not the dialog (`escape-stack.ts`). The
|
|
443
|
+
// entry is taken once per open and calls the CURRENT `onDismiss` through a
|
|
444
|
+
// ref: re-pushing it whenever the callback's identity changed would move a
|
|
445
|
+
// re-rendered parent menu above its own open submenu.
|
|
446
|
+
const onDismissRef = useRef(onDismiss);
|
|
447
|
+
onDismissRef.current = onDismiss;
|
|
441
448
|
useEffect(() => {
|
|
442
449
|
if (phase !== 'open' || !dismissible || typeof document === 'undefined') return;
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
// Stop the key reaching a Dialog underneath: the innermost open surface is
|
|
446
|
-
// the one Escape dismisses.
|
|
447
|
-
event.stopPropagation();
|
|
448
|
-
onDismiss();
|
|
449
|
-
};
|
|
450
|
-
document.addEventListener('keydown', onKeyDown);
|
|
451
|
-
return () => document.removeEventListener('keydown', onKeyDown);
|
|
452
|
-
}, [phase, dismissible, onDismiss]);
|
|
450
|
+
return pushFloatingEscape(() => onDismissRef.current());
|
|
451
|
+
}, [phase, dismissible]);
|
|
453
452
|
|
|
454
453
|
// The NON-modal outside press. Deliberately `pointerdown` in the CAPTURE
|
|
455
454
|
// phase and never `preventDefault`: the surface has to be gone before the
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escape for the anchored surfaces — WEB. One listener for every open
|
|
3
|
+
* `FloatingPanel`, dismissing only the INNERMOST (most recently opened) one and
|
|
4
|
+
* keeping the key from every enclosing surface.
|
|
5
|
+
*
|
|
6
|
+
* THE DEFECT IT REPLACES. Each panel added its own bubble-phase `keydown`
|
|
7
|
+
* listener on `document` and called `stopPropagation()`. A `Dialog` listens on
|
|
8
|
+
* `document` too, and `stopPropagation` does not stop a SIBLING listener on the
|
|
9
|
+
* same node: listeners on one node run in registration order, and the dialog —
|
|
10
|
+
* open first — registered first. So Escape on a `Select` inside a `Dialog`
|
|
11
|
+
* closed the DIALOG, and the list with it. Two panels open at once (a select
|
|
12
|
+
* inside a popover) had the same shape: the outer one registered first and
|
|
13
|
+
* closed first.
|
|
14
|
+
*
|
|
15
|
+
* THE MECHANISM.
|
|
16
|
+
*
|
|
17
|
+
* - The listener sits on `document.documentElement` in the BUBBLE phase. That
|
|
18
|
+
* is one node BELOW `document`, so it runs before any `document` listener —
|
|
19
|
+
* the Dialog's included — and its `stopPropagation()` keeps the key from
|
|
20
|
+
* ever reaching them. It is also ABOVE React's roots (the app root and every
|
|
21
|
+
* portal container sit inside `<body>`), so a control inside a panel still
|
|
22
|
+
* sees Escape first and can keep it — the composer's model-picker search
|
|
23
|
+
* clears its query on Escape and stops the key, exactly as it did when the
|
|
24
|
+
* panel listened on `document`.
|
|
25
|
+
* - Entries form a stack: the panel opened LAST is dismissed, whatever order
|
|
26
|
+
* the listeners happen to be in.
|
|
27
|
+
* - `hasOpenFloatingSurface()` lets the surface host's window-capture Escape
|
|
28
|
+
* router (`surfaces/SurfaceHost.tsx`) stand aside while a panel is open. It
|
|
29
|
+
* runs before anything here, so without the check it would dismiss the
|
|
30
|
+
* stacked dialog UNDER the open list.
|
|
31
|
+
*
|
|
32
|
+
* `globalThis`-anchored for the same reason as `overlay/stack.ts`: the families
|
|
33
|
+
* that open panels are imported through different subpaths, and a bundler can
|
|
34
|
+
* resolve two physical copies of this module.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
interface EscapeEntry {
|
|
38
|
+
dismiss: () => void;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface EscapeRegistry {
|
|
42
|
+
stack: EscapeEntry[];
|
|
43
|
+
listener: ((event: KeyboardEvent) => void) | null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
declare global {
|
|
47
|
+
// eslint-disable-next-line no-var
|
|
48
|
+
var __oxy_so_bloom_floating_escape__: EscapeRegistry | undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function registry(): EscapeRegistry {
|
|
52
|
+
globalThis.__oxy_so_bloom_floating_escape__ ??= { stack: [], listener: null };
|
|
53
|
+
return globalThis.__oxy_so_bloom_floating_escape__;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function onKeyDown(event: KeyboardEvent): void {
|
|
57
|
+
if (event.key !== 'Escape') return;
|
|
58
|
+
const stack = registry().stack;
|
|
59
|
+
const top = stack[stack.length - 1];
|
|
60
|
+
if (!top) return;
|
|
61
|
+
event.stopPropagation();
|
|
62
|
+
top.dismiss();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Put an open surface on top of the Escape stack. Returns the release, which
|
|
67
|
+
* removes exactly this entry wherever it now sits — a parent can close before
|
|
68
|
+
* its submenu's effect cleanup runs.
|
|
69
|
+
*/
|
|
70
|
+
export function pushFloatingEscape(dismiss: () => void): () => void {
|
|
71
|
+
const reg = registry();
|
|
72
|
+
const entry: EscapeEntry = { dismiss };
|
|
73
|
+
reg.stack.push(entry);
|
|
74
|
+
if (!reg.listener && typeof document !== 'undefined') {
|
|
75
|
+
reg.listener = onKeyDown;
|
|
76
|
+
document.documentElement.addEventListener('keydown', onKeyDown);
|
|
77
|
+
}
|
|
78
|
+
return () => {
|
|
79
|
+
const current = registry();
|
|
80
|
+
const index = current.stack.indexOf(entry);
|
|
81
|
+
if (index >= 0) current.stack.splice(index, 1);
|
|
82
|
+
if (current.stack.length === 0 && current.listener && typeof document !== 'undefined') {
|
|
83
|
+
document.documentElement.removeEventListener('keydown', current.listener);
|
|
84
|
+
current.listener = null;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Whether an anchored surface is open and will take the next Escape. */
|
|
90
|
+
export function hasOpenFloatingSurface(): boolean {
|
|
91
|
+
return registry().stack.length > 0;
|
|
92
|
+
}
|