import { Button } from "antd"; import TopIcon from "components/Icons/TopIcon"; import { useScrollHandler } from "contexts/ScrollHandlerContext"; import useBreakPoint from "hooks/useBreakPoint"; import { useCallback } from "react"; import { useAppSelector } from "redux/hooks"; import { colors } from "ThemeConstants"; import styles from "./FloatingButton.module.css"; export function FloatingButton() { const { isRTL } = useAppSelector((state) => state.locale); const { themeName } = useAppSelector((state) => state.theme); const { isMobile, isTablet } = useBreakPoint(); const { showScrollTop } = useScrollHandler(); const scrollToTop = useCallback(() => { // Use a more stable approach to find the scroll container const findScrollContainer = () => { const antApp = document.querySelector('.ant-app') as HTMLElement; if (antApp && antApp.scrollHeight > antApp.clientHeight) { return antApp; } const appContainer = document.querySelector('[class*="App"]') as HTMLElement; if (appContainer && appContainer.scrollHeight > appContainer.clientHeight) { return appContainer; } return document.documentElement; }; const scrollContainer = findScrollContainer(); if (scrollContainer) { scrollContainer.scrollTo({ top: 0, behavior: "smooth", }); } }, []); return ( <> {/* Floating Scroll to Top Button */} {showScrollTop && (