react-consent-management-banner
Version:
Beautiful and Highly Customizable GDPR/ePrivacy React Consent and Cookie Management Library for React and Next.js
3 lines (2 loc) • 9.96 kB
JavaScript
"use client";
var A=Object.create;var x=Object.defineProperty,B=Object.defineProperties,j=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyDescriptors,F=Object.getOwnPropertyNames,z=Object.getOwnPropertySymbols,I=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable;var N=(t,o,n)=>o in t?x(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,m=(t,o)=>{for(var n in o||(o={}))E.call(o,n)&&N(t,n,o[n]);if(z)for(var n of z(o))M.call(o,n)&&N(t,n,o[n]);return t},P=(t,o)=>B(t,L(o));var $=(t,o)=>{for(var n in o)x(t,n,{get:o[n],enumerable:!0})},G=(t,o,n,p)=>{if(o&&typeof o=="object"||typeof o=="function")for(let d of F(o))!E.call(t,d)&&d!==n&&x(t,d,{get:()=>o[d],enumerable:!(p=j(o,d))||p.enumerable});return t};var D=(t,o,n)=>(n=t!=null?A(I(t)):{},G(o||!t||!t.__esModule?x(n,"default",{value:t,enumerable:!0}):n,t)),q=t=>G(x({},"__esModule",{value:!0}),t);var J={};$(J,{CookieConsent:()=>H});module.exports=q(J);var e=D(require("react"));var O=({mergedConfig:t,handleSavePreferences:o,setShowPreferences:n})=>{var b,u,s,h,v,w,y;let{position:p,title:d,links:a,button:f,className:g}=t.banner;return e.default.createElement("div",{className:`cookie-banner-wrapper ${p}`},e.default.createElement("div",{className:`cookie-banner${g?` ${g}`:""}`},e.default.createElement("p",null,d,e.default.createElement("a",{href:(b=a.cookiePolicy)==null?void 0:b.url,target:"_blank",rel:"noreferrer"},(u=a.cookiePolicy)==null?void 0:u.title)),e.default.createElement("div",{className:"cookie-buttons"},e.default.createElement("button",{onClick:()=>o("all")},f.acceptAlText),e.default.createElement("button",{onClick:()=>o("essential")},f.rejectNonEssentialText),e.default.createElement("button",{onClick:()=>n(!0),className:"btn-outline"},f.preferencesText)),e.default.createElement("div",null,e.default.createElement("a",{href:(s=a.privacyPolicy)==null?void 0:s.url,target:"_blank",rel:"noreferrer"},(h=a.privacyPolicy)==null?void 0:h.title),e.default.createElement("span",null,"-"),e.default.createElement("a",{href:(v=a.terms)==null?void 0:v.url,target:"_blank",rel:"noreferrer"},(w=a.terms)==null?void 0:w.title),(y=a.moreLinks)==null?void 0:y.map((k,C)=>e.default.createElement(e.default.Fragment,null,e.default.createElement("span",null,"-"),e.default.createElement("a",{key:C,href:k==null?void 0:k.url,target:"_blank",rel:"noreferrer"},k==null?void 0:k.title))))))},V=({mergedConfig:t,togglePreference:o,handleSavePreferences:n,handleClose:p,preferences:d})=>{var b;let{button:a,title:f,para:g}=t.preferences;return e.default.createElement("div",{className:"cookie-modal"},e.default.createElement("div",{className:"cookie-modal-content"},e.default.createElement("span",{className:"cookie-modal__close",onClick:p},"\xD7"),e.default.createElement("h3",null,f),g&&e.default.createElement("p",null,g),e.default.createElement("ul",null,(b=t.preferences.options)==null?void 0:b.map(u=>e.default.createElement("li",{key:u.key},e.default.createElement("label",null,e.default.createElement("input",{type:"checkbox",disabled:u.alwaysEnabled,checked:d[u.key],onChange:()=>o(u.key)}),u.label),e.default.createElement("p",null,u.description)))),e.default.createElement("div",{className:"cookie-modal__btn"},e.default.createElement("button",{className:"btn-outline",onClick:p},a==null?void 0:a.goBackText),e.default.createElement("button",{onClick:n},a==null?void 0:a.savePreferencesText))))},_={banner:{title:"We use cookies on our site to enhance your user experience, provide personalized content, and analyze our traffic.",position:"bottom",className:void 0,button:{acceptAlText:"Accept All",rejectNonEssentialText:"Reject Non-Essentials",preferencesText:"Preferences"},links:{cookiePolicy:{title:"Cookie Policy",url:"/cookie-policy"},privacyPolicy:{title:"Privacy Policy",url:"/privacy-policy"},terms:{title:"Terms & Conditions",url:"/terms-and-conditions"},moreLinks:[]}},preferences:{title:"Customize your cookie preferences",para:"We respect your right to privacy. You can choose not to allow some types of cookies. Your cookie preferences will apply across our website.",button:{savePreferencesText:"Save Preferences",goBackText:"Go Back"},className:void 0,options:[{key:"necessary_storage",label:"Necessary",alwaysEnabled:!0,description:"These cookies are necessary for the website to function properly and cannot be switched off. They help with things like logging in and setting your privacy preferences."},{key:"security_storage",label:"Security",alwaysEnabled:!0,description:"These cookies are security for the website to function properly and cannot be switched off."},{key:"functionality_storage",label:"Functionality",alwaysEnabled:!0,description:"These cookies allow the website to remember choices you make, such as your language or region, and provide enhanced, more personalized features. They may also enable services like video playback or live chats"},{key:"ad_storage",label:"Advertisement Storage",description:"These cookies are used to deliver advertisements that are more relevant to you. They may also limit how often you see an ad and help measure the effectiveness of advertising campaigns."},{key:"ad_personalization",label:"Advertisement Personalization",description:"These cookies allow the website to deliver personalized ads based on your interests, browsing behavior, or previous interactions. They help tailor advertising content to make it more relevant to you."},{key:"ad_user_data",label:"Advertisement User Data",description:"These cookies enable the collection of user data for advertising purposes, such as demographics or engagement metrics. This data supports ad measurement, targeting, and optimization."},{key:"analytics_storage",label:"Analytics",description:"These cookies help us understand how visitors interact with the website by collecting and reporting information anonymously. They enable us to improve site performance and user experience."},{key:"personalization_storage",label:"Personalization",description:"These cookies enable the website to tailor content and recommendations based on your behavior and preferences, providing a more customized browsing experience."}]},cookieFloatingButton:{position:"bottom-right",Component:t=>e.default.createElement("svg",m({xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",viewBox:"0 0 512 512"},t),e.default.createElement("path",{d:"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"})),show:!0},backgroundColor:"#fff",linkColor:"#6ac3ff",buttonBackgroundColor:"#0073e6",textColor:"#000",onPreferencesChange:()=>{},getConsentGiven:()=>{},getConsentPreferences:()=>{}};function H({GA_TRACKING_ID:t,config:o=_}){var C;let[n,p]=e.default.useState(!1),[d,a]=e.default.useState(!1),[f,g]=e.default.useState({}),[b,u]=e.default.useState(!1),s=m(m({},_),o),h=e.default.useCallback(()=>{let r=document.documentElement;r.style.setProperty("--cookie-consent-background-color",s.backgroundColor),r.style.setProperty("--cookie-consent-link-color",s.linkColor),r.style.setProperty("--cookie-consent-button-background-color",s.buttonBackgroundColor),r.style.setProperty("--cookie-consent-text-color",s.textColor)},[s.backgroundColor,s.linkColor,s.buttonBackgroundColor,s.textColor]),v=r=>r.isDefault?o.preferences.options.reduce((l,i)=>P(m({},l),{[i.key]:i.alwaysEnabled?"granted":"denied"}),{}):(r=r,o.preferences.options.reduce((l,i)=>P(m({},l),{[i.key]:r[i.key]?"granted":"denied"}),{})),w=(r,l=!1)=>{if(window.gtag)console.info(`Selected ${l?"default":"custom"} preferences:`,r),window.gtag("consent",l?"default":"update",r);else{window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},console.info(`Selected ${l?"default":"custom"} preferences:`,r),window.gtag("consent","default",r);let i=document.createElement("script");i.src=`https://www.googletagmanager.com/gtag/js?id=${t}`,i.async=!0,document.head.appendChild(i),i.onload=()=>{window.gtag("js",new Date),window.gtag("config",t)}}};e.default.useEffect(()=>{if(h(),!t){console.error("GA_TRACKING_ID is required for Google Analytics.");return}let r=localStorage.getItem("cookiePreferences");if(!r)y("essential",!0),p(!0);else{let l=JSON.parse(r);g(l),u(!0)}},[h,s.preferences.options]);let y=(r,l=!1)=>{var T,S;let i={};if(r=="all"?s.preferences.options.forEach(c=>{i[c.key]=!0}):r=="essential"?(T=s.preferences.options)==null||T.forEach(c=>{i[c.key]=!!c.alwaysEnabled}):(i=m({},f),(S=s.preferences.options)==null||S.filter(c=>c==null?void 0:c.alwaysEnabled).forEach(c=>{i[c.key]=!!c.alwaysEnabled})),l){let c=v({isDefault:!0});w(c,!0),g(i),o.onPreferencesChange(i,!1)}else{let c=v(i);w(c),localStorage.setItem("cookiePreferences",JSON.stringify(i)),a(!1),p(!1),u(!0),g(i),o.onPreferencesChange(i,!0)}},k=r=>{g(l=>P(m({},l),{[r]:!l[r]}))};return o.getConsentGiven=e.default.useCallback(()=>b,[b]),o.getConsentPreferences=e.default.useCallback(()=>f,[f]),e.default.createElement(e.default.Fragment,null,!d&&n&&e.default.createElement(O,{mergedConfig:s,handleSavePreferences:y,setShowPreferences:a}),d&&e.default.createElement(V,{mergedConfig:s,togglePreference:k,handleSavePreferences:y,handleClose:()=>a(!1),preferences:f}),((C=s.cookieFloatingButton)==null?void 0:C.show)&&b&&e.default.createElement("button",{className:`cookie-settings-button ${s.cookieFloatingButton.position}`,onClick:()=>a(!0)},e.default.createElement(s.cookieFloatingButton.Component,null)))}0&&(module.exports={CookieConsent});