fix(toc): correct floating TOC alignment by resolving wrong sidebar reference
The floating TOC positioning logic assumed a correct sidebar reference when calculating the horizontal offset. However, the selector used (`aside, .sidebar, #secondary`) could match non-layout elements such as hidden containers, mobile sidebars, or unrelated widgets. This resulted in incorrect `getBoundingClientRect()` values and caused the TOC to be positioned too far left or right, depending on which element was matched. Solution: - Introduced a `getRealSidebar()` helper to dynamically detect the visually relevant sidebar element. - Filters out non-visible or irrelevant elements based on size. - Selects the right-most valid candidate, ensuring correct layout context. - Uses the actual gap between content and sidebar to position the TOC symmetrically on the opposite side of the content. Additional improvements: - Cached sidebar lookup to avoid repeated DOM queries during scroll. - Stabilized gap calculation with clamping to prevent layout drift. Result: The TOC now consistently aligns with the content column and mirrors the sidebar spacing correctly across different layouts and breakpoints.
This commit is contained in: