CONTACT CAROUSEL - CHANGELOG
Version ONE.one - 2026-09-24
Fixed
Lightbox was clipped inside relative Framer overlays. Framer Motion applies a transform to the animated card, and a transformed element becomes the containing block for position: fixed descendants. The lightbox was therefore positioned against the card instead of the viewport. It is now rendered into document.body via createPortal, fully detached from the transformed tree.
Scroll lock stayed active after the first close. lightboxExiting was set on open but never reset. The outer AnimatePresence now calls onExitComplete={() => setLightboxExiting(false)}, so the state is clean after the exit animation.
Clicking the backdrop reliably closes the lightbox when dismissible: On.
Changed
Lightbox moved out of rootRef; it is now returned as a sibling via a lightboxPortal.
renderPhosphorIcon moved above the component (was only reachable through hoisting).
Added import { createPortal } from "react-dom".
Unchanged
All property controls, style groups, hooks, effects, types, and constants.
Error boundary, export default setup, autoplay, filter, live filter, panel overlay, keyboard navigation, and swipe.
Known behaviour (not a bug)
Inside a relative Framer overlay with Dismiss on Click Outside: auto, a click on or next to the lightbox can be treated as "outside" and close the overlay. That is Framer behaviour, not component behaviour. Workaround: set the overlay's dismiss option to Off, or use a regular absolute-positioned layer instead.
CONTACT CAROUSEL - CHANGELOG
Version ONE.one - 2026-09-24
Fixed
Lightbox was clipped inside relative Framer overlays. Framer Motion applies a transform to the animated card, and a transformed element becomes the containing block for position: fixed descendants. The lightbox was therefore positioned against the card instead of the viewport. It is now rendered into document.body via createPortal, fully detached from the transformed tree.
Scroll lock stayed active after the first close. lightboxExiting was set on open but never reset. The outer AnimatePresence now calls onExitComplete={() => setLightboxExiting(false)}, so the state is clean after the exit animation.
Clicking the backdrop reliably closes the lightbox when dismissible: On.
Changed
Lightbox moved out of rootRef; it is now returned as a sibling via a lightboxPortal.
renderPhosphorIcon moved above the component (was only reachable through hoisting).
Added import { createPortal } from "react-dom".
Unchanged
All property controls, style groups, hooks, effects, types, and constants.
Error boundary, export default setup, autoplay, filter, live filter, panel overlay, keyboard navigation, and swipe.
Known behaviour (not a bug)
Inside a relative Framer overlay with Dismiss on Click Outside: auto, a click on or next to the lightbox can be treated as "outside" and close the overlay. That is Framer behaviour, not component behaviour. Workaround: set the overlay's dismiss option to Off, or use a regular absolute-positioned layer instead.