import { Box, IconButton, Sidepanel, SidepanelHeader, SidepanelHeaderTitle, SidepanelListItem, ToggleSwitch } from '@rocket.chat/fuselage'; import { VirtualizedScrollbars } from '@rocket.chat/ui-client'; import { useLayout } from '@rocket.chat/ui-contexts'; import { useId, useRef, type ComponentType } from 'react'; import { useTranslation } from 'react-i18next'; import { Virtuoso } from 'react-virtuoso'; import SidePanelNoResults from './SidePanelNoResults'; import SidepanelListWrapper from './SidepanelListWrapper'; import { useOpenedRoom } from '../../../lib/RoomManager'; import { useIsRoomFilter, type AllGroupsKeys } from '../contexts/RoomsNavigationContext'; import { usePreventDefault } from '../sidebar/hooks/usePreventDefault'; type SidePanelProps = { title: string; currentTab: AllGroupsKeys; unreadOnly: boolean; toggleUnreadOnly: () => void; rooms: R[]; ItemContentComponent: ComponentType<{ room: R; openedRoom: ReturnType; isRoomFilter: boolean; }>; }; const SidePanelInternal = ({ title, currentTab, unreadOnly, toggleUnreadOnly, rooms, ItemContentComponent }: SidePanelProps) => { const { t } = useTranslation(); const ref = useRef(null); const unreadFieldId = useId(); const openedRoom = useOpenedRoom(); const { isTablet, sidePanel: { closeSidePanel }, } = useLayout(); const isRoomFilter = useIsRoomFilter(); usePreventDefault(ref); return ( {isTablet && } {title} {t('Unread')} {rooms && rooms.length === 0 && } { return ; }} /> ); }; export const createSidePanel = ( ItemContentComponent: ComponentType<{ room: R; openedRoom: ReturnType; isRoomFilter: boolean }>, ) => // eslint-disable-next-line react/no-multi-comp, react/display-name ({ title, currentTab, unreadOnly, toggleUnreadOnly, rooms }: Omit, 'ItemContentComponent'>) => ( );