@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.16 kB
JavaScript
import*as e from"react/jsx-runtime";import*as s from"@radix-ui/react-slot";import*as t from"react";import*as o from"../../../hooks/use-consent-manager.js";import*as a from"../../../hooks/use-styles.js";import*as n from"../../../hooks/use-theme.js";import*as r from"../ui/button/index.js";let m=(0,t.forwardRef)(({asChild:m,className:c,style:l,noStyle:i,action:u,themeKey:p,baseClassName:f,variant:k="neutral",mode:b="stroke",size:j="small",onClick:y,closeCookieBanner:C=!1,closeCustomizeDialog:d=!1,...h},x)=>{let{saveConsents:g,setShowPopup:N,setIsPrivacyDialogOpen:S}=(0,o.useConsentManager)(),{noStyle:w}=(0,n.useTheme)(),B=(0,a.useStyles)(p??"button",{baseClassName:[!(w||i)&&r.buttonVariants({variant:k,mode:b,size:j}).root()],style:{...l},className:c,noStyle:w||i}),M=(0,t.useCallback)(e=>{if(C&&N(!1),d&&S(!1),"open-consent-dialog"===u&&(S(!0),N(!1,!0)),y&&y(e),"open-consent-dialog"!==u)switch(u){case"accept-consent":g("all");break;case"reject-consent":g("necessary");break;case"custom-consent":g("custom")}},[C,d,y,g,S,N,u]),R=m?s.Slot:"button";return(0,e.jsx)(R,{ref:x,...B,onClick:M,...h})});m.displayName="ConsentButton";export{m as ConsentButton};