UNPKG

@tantainnovative/ndpr-toolkit

Version:

Nigeria Data Protection Toolkit — enterprise-grade compliance components for the Nigeria Data Protection Act (NDPA) 2023

1 lines 4 kB
import {a}from'./chunk-SFGW37LE.mjs';import {c}from'./chunk-PHA3YMFO.mjs';import {b,a as a$1}from'./chunk-ZJYULEER.mjs';import {useState,useRef,useEffect,useMemo}from'react';import {jsxs,jsx}from'react/jsx-runtime';var rn=({options:g,settings:d,onSave:L,title:s,description:_,saveButtonText:f,resetButtonText:v,version:C="1.0",className:h="",buttonClassName:l="",primaryButtonClassName:y="",secondaryButtonClassName:E="",classNames:n,unstyled:t,showSuccessMessage:I=true,successMessage:T="Your preferences have been saved.",successMessageDuration:V=3e3})=>{var R,B,D,M;let p=c(),F=(R=s!=null?s:p.consent.managerTitle)!=null?R:"Manage Your Privacy Settings",O=(B=_!=null?_:p.consent.managerDescription)!=null?B:"Update your consent preferences at any time. Required cookies cannot be disabled as they are necessary for the website to function. Consent management is provided in accordance with NDPA Sections 25-26.",Y=(D=f!=null?f:p.consent.savePreferences)!=null?D:"Save Preferences",A=(M=v!=null?v:p.consent.resetToDefaults)!=null?M:"Reset to Defaults",[b$1,u]=useState({}),[K,S]=useState(false),c$1=useRef(null);useEffect(()=>()=>{c$1.current&&clearTimeout(c$1.current);},[]);let U=useMemo(()=>g.map(e=>`${e.id}:${e.defaultValue?"1":"0"}`).join("|"),[g]);useEffect(()=>{if(d&&d.consents)u(d.consents);else {let e={};g.forEach(o=>{e[o.id]=o.defaultValue||false;}),u(e);}},[U,d]);let j=(e,o)=>{u(m=>b(a$1({},m),{[e]:o}));},z=()=>{let e={consents:b$1,timestamp:Date.now(),version:C,method:"manager",hasInteracted:true};L(e),I&&(S(true),c$1.current&&clearTimeout(c$1.current),c$1.current=setTimeout(()=>{S(false);},V));},G=()=>{let e={};g.forEach(o=>{e[o.id]=o.defaultValue||false;}),u(e);},H=`ndpr-consent-manager__button ndpr-consent-manager__button--primary ${l} ${y}`.trim(),J=`ndpr-consent-manager__button ndpr-consent-manager__button--secondary ${l} ${E}`.trim(),Q=(n==null?void 0:n.primaryButton)||(n==null?void 0:n.saveButton)||H,W=(n==null?void 0:n.secondaryButton)||(n==null?void 0:n.resetButton)||J,X=`ndpr-consent-manager${h?` ${h}`:""}`;return jsxs("div",{"data-ndpr-component":"consent-manager",className:a(X,n==null?void 0:n.root,t),children:[jsx("h2",{className:a("ndpr-consent-manager__title",n==null?void 0:n.title,t),children:F}),jsx("p",{className:a("ndpr-consent-manager__description",n==null?void 0:n.description,t),children:O}),jsx("div",{className:a("ndpr-consent-manager__options-list",n==null?void 0:n.optionsList,t),children:g.map(e=>{let o=`consent-manager-${e.id}`;return jsxs("div",{className:a("ndpr-consent-manager__option",n==null?void 0:n.optionItem,t),children:[jsxs("div",{className:t?"":"ndpr-consent-manager__option-info",children:[jsx("h3",{className:t?"":"ndpr-consent-manager__option-label",children:e.label}),jsx("p",{className:t?"":"ndpr-consent-manager__option-description",children:e.description})]}),jsxs("label",{htmlFor:o,className:t?"":"ndpr-consent-manager__toggle-wrapper",children:[jsx("input",{id:o,type:"checkbox",className:t?"":"ndpr-consent-manager__toggle-input",checked:b$1[e.id]||false,onChange:m=>j(e.id,m.target.checked),disabled:e.required}),jsx("span",{"aria-hidden":"true",className:a("ndpr-consent-manager__toggle",n==null?void 0:n.toggle,t)}),jsxs("span",{className:t?"":"ndpr-consent-manager__toggle-status",children:[b$1[e.id]?"Enabled":"Disabled",e.required&&jsx("span",{className:t?"":"ndpr-consent-manager__required-marker",children:"(Required)"})]})]})]},e.id)})}),K&&jsx("div",{className:t?"":"ndpr-consent-manager__success","aria-live":"polite",role:"status",children:T}),jsxs("div",{className:t?"":"ndpr-consent-manager__buttons",children:[jsx("button",{onClick:z,className:a(Q,n==null?void 0:n.saveButton,t),children:Y}),jsx("button",{onClick:G,className:a(W,n==null?void 0:n.resetButton,t),children:A})]}),jsxs("div",{className:t?"":"ndpr-consent-manager__meta",children:[jsxs("p",{children:["Last updated: ",d?new Date(d.timestamp).toLocaleString():"Never"]}),jsxs("p",{children:["Version: ",C]})]})]})};export{rn as a};