From cb4ffcaedacf7e32a1aecd4f36d2db6757d882ba Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Sat, 14 Feb 2026 02:05:02 +0100 Subject: [PATCH] feat(next-feedback): convert FeedbackOverlay to controlled component --- .../src/components/FeedbackOverlay.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/next-feedback/src/components/FeedbackOverlay.tsx b/packages/next-feedback/src/components/FeedbackOverlay.tsx index 179fd6a..3100cda 100644 --- a/packages/next-feedback/src/components/FeedbackOverlay.tsx +++ b/packages/next-feedback/src/components/FeedbackOverlay.tsx @@ -31,12 +31,20 @@ interface Feedback { comments: FeedbackComment[]; } -export function FeedbackOverlay({ onActiveChange }: { onActiveChange?: (active: boolean) => void }) { - const [isActive, setIsActive] = useState(false); +export function FeedbackOverlay({ + isActive: externalIsActive, + onActiveChange +}: { + isActive?: boolean; + onActiveChange?: (active: boolean) => void +}) { + const [internalIsActive, setInternalIsActive] = useState(false); - useEffect(() => { - onActiveChange?.(isActive); - }, [isActive, onActiveChange]); + const isActive = externalIsActive !== undefined ? externalIsActive : internalIsActive; + const setIsActive = (val: boolean) => { + if (externalIsActive === undefined) setInternalIsActive(val); + onActiveChange?.(val); + }; const [hoveredElement, setHoveredElement] = useState( null, );