diff --git a/react_front/src/main.tsx b/react_front/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/react_front/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/components/feed/FeedBlurMask.jsx b/src/components/feed/FeedBlurMask.jsx new file mode 100644 index 0000000..d3530c7 --- /dev/null +++ b/src/components/feed/FeedBlurMask.jsx @@ -0,0 +1,28 @@ +import { useEffect, useState } from "react"; + +/** + * Отдельный блюр-слой поверх ленты, независим от FeedTopBar. + * Прижат к верху общего контейнера, высота подстраивается под + * реальную высоту topBar (включая safe-area на iOS). + */ +export default function FeedBlurMask({ topBarRef }) { + const [height, setHeight] = useState(56); + + useEffect(() => { + const el = topBarRef?.current; + if (!el) return; + const update = () => setHeight(el.getBoundingClientRect().height || 56); + update(); + const ro = new ResizeObserver(update); + ro.observe(el); + return () => ro.disconnect(); + }, [topBarRef]); + + return ( +