import type { Box } from '@rocket.chat/fuselage'; import { useStableCallback } from '@rocket.chat/fuselage-hooks'; import { GenericMenu, HeaderToolbarAction, HeaderToolbarDivider } from '@rocket.chat/ui-client'; import { useRoomToolbox, type RenderToolboxItemParams, type RoomToolboxActionConfig } from '@rocket.chat/ui-contexts'; import type { ComponentProps } from 'react'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { useRoomToolboxActions } from './hooks/useRoomToolboxActions'; export type RoomToolboxProps = { className?: ComponentProps['className']; }; const RoomToolbox = ({ className }: RoomToolboxProps) => { const { t } = useTranslation(); const toolbox = useRoomToolbox(); const { featuredActions, hiddenActions, visibleActions } = useRoomToolboxActions(toolbox); const showKebabMenu = hiddenActions.length > 0; const renderDefaultToolboxItem = useStableCallback( ({ id, className, icon, title, toolbox: { tab }, action, disabled, tooltip }: RenderToolboxItemParams) => { return ( ); }, ); const mapToToolboxItem = (action: RoomToolboxActionConfig) => { return (action.renderToolboxItem ?? renderDefaultToolboxItem)?.({ ...action, action: action.action ?? (() => toolbox.openTab(action.id)), className, toolbox, }); }; return ( <> {featuredActions.map(mapToToolboxItem)} {featuredActions.length > 0 && } {visibleActions.map(mapToToolboxItem)} {showKebabMenu && } ); }; export default memo(RoomToolbox);