UNPKG

@c15t/react

Version:

Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization

1 lines 1.19 kB
import*as e from"react/jsx-runtime";import*as o from"clsx";import*as t from"react";import*as s from"../../../hooks/use-consent-manager.js";import*as r from"../../../hooks/use-scroll-lock.js";import*as a from"../../../hooks/use-styles.js";import*as l from"../../../hooks/use-theme.js";import*as m from"../cookie-banner.module.js";let n=(0,t.forwardRef)(({className:n,style:u,noStyle:i,asChild:f,...c},d)=>{let y,{showPopup:p}=(0,s.useConsentManager)(),{disableAnimation:k,noStyle:v,scrollLock:b}=(0,l.useTheme)(),[j,h]=(0,t.useState)(!1);(0,t.useEffect)(()=>{if(p)h(!0);else if(k)h(!1);else{let e=setTimeout(()=>{h(!1)},Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--banner-animation-duration")||"200",10));return()=>clearTimeout(e)}},[p,k]);let S=(0,a.useStyles)("banner.overlay",{baseClassName:!(v||i)&&m.default.overlay,className:n,noStyle:v||i});y=v||i||k?void 0:j?m.default.overlayVisible:m.default.overlayHidden;let g=(0,o.default)(S.className,y);return(0,r.useScrollLock)(!!(p&&b)),p&&b?(0,e.jsx)("div",{ref:d,...c,className:g,style:{...S.style,...u},"data-testid":"cookie-banner-overlay"}):null}),u=n;export{n as CookieBannerOverlay,u as Overlay};