@consenti/api 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +917 -207
- package/dist/chunk-IY4L6MNB.js +2 -0
- package/dist/chunk-IY4L6MNB.js.map +1 -0
- package/dist/chunk-O5UG4OYI.js +2 -0
- package/dist/chunk-O5UG4OYI.js.map +1 -0
- package/dist/dashboard/assets/ApiConfig-CE-Noelz.js +1 -0
- package/dist/dashboard/assets/ArchivedProfileList-Bw-fx-BD.js +1 -0
- package/dist/dashboard/assets/AuditLog-D6HiTQ1o.js +1 -0
- package/dist/dashboard/assets/ChangePassword-D2rPkzD1.js +1 -0
- package/dist/dashboard/assets/ConfirmDialog-DTtw7VJ-.js +1 -0
- package/dist/dashboard/assets/ConsentList-BWOvPOMG.js +1 -0
- package/dist/dashboard/assets/ConsentTemplateEditor-BKIEnLmA.js +1 -0
- package/dist/dashboard/assets/ConsentTemplateList-DCys2nM3.js +1 -0
- package/dist/dashboard/assets/HeadingTagInput-BTjrdzlS.js +1 -0
- package/dist/dashboard/assets/HowItWorks-AeyjfQGO.js +1 -0
- package/dist/dashboard/assets/PermissionGate-Bhhf7SMh.js +1 -0
- package/dist/dashboard/assets/PreviewPane-Dq5K1h2L.js +35 -0
- package/dist/dashboard/assets/ProfileEditor-BXtaE0tL.js +2 -0
- package/dist/dashboard/assets/ProfileList-CWKSAgu0.js +1 -0
- package/dist/dashboard/assets/ProfileVersionHistory-1h8sUgog.js +3 -0
- package/dist/dashboard/assets/RecordDetailModal-FaFhzQXi.js +1 -0
- package/dist/dashboard/assets/Reports-DWEjQOKh.js +1 -0
- package/dist/dashboard/assets/RoleList-BSGoqlzp.js +1 -0
- package/dist/dashboard/assets/Select-DjJNwlbY.js +1 -0
- package/dist/dashboard/assets/Settings-CVYrlyLm.js +1 -0
- package/dist/dashboard/assets/SetupWizard-4NTb5bZj.js +1 -0
- package/dist/dashboard/assets/Table-DH_jh8_N.js +1 -0
- package/dist/dashboard/assets/TenantList-5AwFtoHf.js +1 -0
- package/dist/dashboard/assets/UITemplateEditor-9A55scBe.js +1 -0
- package/dist/dashboard/assets/UITemplateList-BS7X4u4F.js +1 -0
- package/dist/dashboard/assets/UserList-SPkMyFRy.js +1 -0
- package/dist/dashboard/assets/VendorList-C5fPhr6U.js +1 -0
- package/dist/dashboard/assets/VisitorList-COP1SyNd.js +1 -0
- package/dist/dashboard/assets/check-o5cp1s2J.js +1 -0
- package/dist/dashboard/assets/client-ymc9nwWr.js +1 -0
- package/dist/dashboard/assets/copy-C01KoUUH.js +1 -0
- package/dist/dashboard/assets/createLucideIcon-MdjI3m3u.js +1 -0
- package/dist/dashboard/assets/de-DET92Jb5.js +5 -0
- package/dist/dashboard/assets/debounce-DlvAAT2V.js +1 -0
- package/dist/dashboard/assets/dist-DlhLroYC.js +1 -0
- package/dist/dashboard/assets/es-CJNunrnU.js +5 -0
- package/dist/dashboard/assets/external-link-DVe00ZBK.js +1 -0
- package/dist/dashboard/assets/fr-akfTuf5x.js +5 -0
- package/dist/dashboard/assets/history-CHTts_m2.js +1 -0
- package/dist/dashboard/assets/index-DW3qOrry.css +2 -0
- package/dist/dashboard/assets/index-H_Zm0X-u.js +6 -0
- package/dist/dashboard/assets/ja-B0nLWkOd.js +5 -0
- package/dist/dashboard/assets/profiles-DmrdGv7t.js +1 -0
- package/dist/dashboard/assets/roles-C0dJPFl4.js +1 -0
- package/dist/dashboard/assets/search-Bd2RdDRh.js +1 -0
- package/dist/dashboard/assets/templates-B2xiivh4.js +1 -0
- package/dist/dashboard/assets/templates-CnMoLavN.js +1 -0
- package/dist/dashboard/assets/trash-2-BBnkdgm_.js +1 -0
- package/dist/dashboard/assets/trash-Dj1jhzHJ.js +1 -0
- package/dist/dashboard/assets/useHashQuery-B5ytMIMp.js +1 -0
- package/dist/dashboard/assets/users-czK8LRVh.js +1 -0
- package/dist/dashboard/assets/x-BRuyBEQP.js +1 -0
- package/dist/dashboard/assets/zh-CN-Dxg3G-BL.js +5 -0
- package/dist/dashboard/index.html +4 -2
- package/dist/dist-Z5RVTVBT.js +2 -0
- package/dist/dist-Z5RVTVBT.js.map +1 -0
- package/dist/index.cjs +129 -9089
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +963 -254
- package/dist/index.d.ts +963 -254
- package/dist/index.js +129 -9043
- package/dist/index.js.map +1 -1
- package/dist/profiles-XTYPWLVC.js +2 -0
- package/dist/profiles-XTYPWLVC.js.map +1 -0
- package/dist/widget/widget.css +1 -0
- package/dist/widget/widget.js +1 -2304
- package/package.json +19 -12
- package/dist/dashboard/assets/index-BBbhHyc_.js +0 -2637
- package/dist/dashboard/assets/index-DYK73WL5.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`${window.__CONSENTI_CONFIG__?.basePath??`/consenti`}/admin`,t=`consenti:session-expired`;function n(){return localStorage.getItem(`consenti_token`)}var r=class extends Error{constructor(e,t){super(t),this.status=e}};async function i(i,a){let o=n(),s=await fetch(`${e}${i}`,{...a,headers:{"Content-Type":`application/json`,...o?{Authorization:`Bearer ${o}`}:{},...a?.headers}});if(s.status===401)throw window.dispatchEvent(new Event(t)),new r(401,`Unauthorized`);if(!s.ok){let e=await s.text().catch(()=>s.statusText);throw new r(s.status,e)}if(s.status!==204)return s.json()}function a(e){return e?.match(/filename="?([^";]+)"?/)?.[1]??null}async function o(i){let o=n(),s=await fetch(`${e}${i}`,{headers:o?{Authorization:`Bearer ${o}`}:{}});if(s.status===401)throw window.dispatchEvent(new Event(t)),new r(401,`Unauthorized`);if(!s.ok){let e=await s.text().catch(()=>s.statusText);throw new r(s.status,e)}let c=await s.blob(),l=a(s.headers.get(`content-disposition`))??`export`,u=URL.createObjectURL(c),d=document.createElement(`a`);d.href=u,d.download=l,d.style.display=`none`,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(u)}export{i,t as n,o as r,r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-MdjI3m3u.js";var t=e(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h={},g=[],_=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function y(e,t){for(var n in t)e[n]=t[n];return e}function b(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function x(t,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):r),typeof t==`function`&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return S(t,s,i,a,null)}function S(e,r,i,a,o){var s={type:e,props:r,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++n,__i:-1,__u:0};return o==null&&t.vnode!=null&&t.vnode(s),s}function C(e){return e.children}function w(e,t){this.props=e,this.context=t}function T(e,t){if(t==null)return e.__?T(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?T(e):null}function E(e){if(e.__P&&e.__d){var n=e.__v,r=n.__e,i=[],a=[],o=y({},n);o.__v=n.__v+1,t.vnode&&t.vnode(o),F(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??T(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,ie(i,o,a),n.__e=n.__=null,o.__e!=r&&D(o)}}function D(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),D(e)}function O(e){(!e.__d&&(e.__d=!0)&&r.push(e)&&!k.__r++||i!=t.debounceRendering)&&((i=t.debounceRendering)||a)(k)}function k(){try{for(var e,t=1;r.length;)r.length>t&&r.sort(o),e=r.shift(),t=r.length,E(e)}finally{r.length=k.__r=0}}function ee(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,_,v,y,b=r&&r.__k||g,x=t.length;for(c=A(n,t,b,c,x),d=0;d<x;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&b[p.__i]||h,p.__i=d,v=F(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&L(f.ref,null,p),u.push(p.ref,p.__c||m,p)),_==null&&m!=null&&(_=m),(y=!!(4&p.__u))||f.__k===p.__k?(c=j(p,c,e,y),y&&f.__e&&(f.__e=null)):typeof p.type==`function`&&v!==void 0?c=v:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=_,c}function A(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=S(null,o,null,null,null):v(o)?o=e.__k[a]=S(C,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=S(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=N(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=T(s)),oe(s,s));return r}function j(e,t,n,r){var i,a;if(typeof e.type==`function`){for(i=e.__k,a=0;i&&a<i.length;a++)i[a]&&(i[a].__=e,t=j(i[a],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=T(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function M(e,t){return t||=[],e==null||typeof e==`boolean`||(v(e)?e.some(function(e){M(e,t)}):t.push(e)),t}function N(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function te(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||_.test(t)?n:n+`px`}function P(e,t,n,r,i){var a,o;n:if(t==`style`)if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||te(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||te(e.style,t,n[t])}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(u,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[l]=r[l]:(n[l]=d,e.addEventListener(t,a?p:f,a)):e.removeEventListener(t,a?p:f,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function ne(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n[c]==null)n[c]=d++;else if(n[c]<r[l])return;return r(t.event?t.event(n):n)}}}function F(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,_,x,S,T,E,D,O,k,A,j,M,N=n.type;if(n.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=n.__e=r.__e]),(d=t.__b)&&d(n);n:if(typeof N==`function`){f=s.length;try{if(T=n.props,E=N.prototype&&N.prototype.render,D=(d=N.contextType)&&i[d.__c],O=d?D?D.props.value:d.__:i,r.__c?S=(p=n.__c=r.__c).__=p.__E:(E?n.__c=p=new N(T,O):(n.__c=p=new w(T,O),p.constructor=N,p.render=se),D&&D.sub(p),p.state||={},p.__n=i,m=p.__d=!0,p.__h=[],p._sb=[]),E&&p.__s==null&&(p.__s=p.state),E&&N.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=y({},p.__s)),y(p.__s,N.getDerivedStateFromProps(T,p.__s))),h=p.props,_=p.state,p.__v=n,m)E&&N.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),E&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(E&&N.getDerivedStateFromProps==null&&T!==h&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(T,O),n.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&!1===p.shouldComponentUpdate(T,p.__s,O)){n.__v!=r.__v&&(p.props=T,p.state=p.__s,p.__d=!1),n.__e=r.__e,n.__k=r.__k,n.__k.some(function(e){e&&(e.__=n)}),g.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p);break n}p.componentWillUpdate!=null&&p.componentWillUpdate(T,p.__s,O),E&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(h,_,x)})}if(p.context=O,p.props=T,p.__P=e,p.__e=!1,k=t.__r,A=0,E)p.state=p.__s,p.__d=!1,k&&k(n),d=p.render(p.props,p.state,p.context),g.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,k&&k(n),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++A<25);p.state=p.__s,p.getChildContext!=null&&(i=y(y({},i),p.getChildContext())),E&&!m&&p.getSnapshotBeforeUpdate!=null&&(x=p.getSnapshotBeforeUpdate(h,_)),j=d!=null&&d.type===C&&d.key==null?I(d.props.children):d,c=ee(e,v(j)?j:[j],n,r,i,a,o,s,c,l,u),p.base=n.__e,n.__u&=-161,p.__h.length&&s.push(p),S&&(p.__E=p.__=null)}catch(e){if(s.length=f,n.__v=null,l||o!=null){if(e.then){for(n.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o!=null&&(o[o.indexOf(c)]=null),n.__e=c}else if(o!=null)for(M=o.length;M--;)b(o[M])}else n.__e=r.__e;n.__k??=r.__k||[],e.then||re(n),t.__e(e,n,r)}}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=ae(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function re(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(re))}function ie(e,n,r){for(var i=0;i<r.length;i++)L(r[i],r[++i],r[++i]);t.__c&&t.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){t.__e(e,n.__v)}})}function I(e){return typeof e!=`object`||!e||e.__b>0?e:v(e)?e.map(I):e.constructor===void 0?y({},e):null}function ae(n,r,i,a,o,s,c,l,u){var d,f,p,m,g,_,y,x=i.props||h,S=r.props,C=r.type;if(C==`svg`?o=`http://www.w3.org/2000/svg`:C==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((g=s[d])&&`setAttribute`in g==!!C&&(C?g.localName==C:g.nodeType==3)){n=g,s[d]=null;break}}if(n==null){if(C==null)return document.createTextNode(S);n=document.createElementNS(o,C,S.is&&S),l&&=(t.__m&&t.__m(r,s),!1),s=null}if(C==null)x===S||l&&n.data==S||(n.data=S);else{if(s=C==`textarea`&&S.defaultValue!=null?null:s&&e.call(n.childNodes),!l&&s!=null)for(x={},d=0;d<n.attributes.length;d++)x[(g=n.attributes[d]).name]=g.value;for(d in x)g=x[d],d==`dangerouslySetInnerHTML`?p=g:d==`children`||d in S||d==`value`&&`defaultValue`in S||d==`checked`&&`defaultChecked`in S||P(n,d,null,g,o);for(d in S)g=S[d],d==`children`?m=g:d==`dangerouslySetInnerHTML`?f=g:d==`value`?_=g:d==`checked`?y=g:l&&typeof g!=`function`||x[d]===g||P(n,d,g,x[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==n.innerHTML)||(n.innerHTML=f.__html),r.__k=[];else if(p&&(n.innerHTML=``),ee(r.type==`template`?n.content:n,v(m)?m:[m],r,i,a,C==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&T(i,0),l,u),s!=null)for(d=s.length;d--;)b(s[d]);l&&C!=`textarea`||(d=`value`,C==`progress`&&_==null?n.removeAttribute(`value`):_!=null&&(_!==n[d]||C==`progress`&&!_||C==`option`&&_!=x[d])&&P(n,d,_,x[d],o),d=`checked`,y!=null&&y!=n[d]&&P(n,d,y,x[d],o))}return n}function L(e,n,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(e){t.__e(e,r)}}function oe(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||L(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){t.__e(e,n)}i.base=i.__P=i.__n=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&oe(i[a],n,r||typeof e.type!=`function`);r||b(e.__e),e.__c=e.__=e.__e=void 0}function se(e,t,n){return this.constructor(e,n)}function R(n,r,i){var a,o,s,c;r==document&&(r=document.documentElement),t.__&&t.__(n,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],F(r,n=(!a&&i||r).__k=x(C,null,[n]),o||h,h,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?e.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),ie(s,n,c),n.props.children=null}function ce(e){function t(e){var n,r;return this.getChildContext||(n=new Set,(r={})[t.__c]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(e){this.props.value!=e.value&&n.forEach(function(e){e.__e=!0,O(e)})},this.sub=function(e){n.add(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n&&n.delete(e),t&&t.call(e)}}),e.children}return t.__c=`__cC`+m++,t.__=e,t.Provider=t.__l=(t.Consumer=function(e,t){return e.children(t)}).contextType=t,t}e=g.slice,t={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},n=0,w.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=y({},this.state);typeof e==`function`&&(e=e(y({},n),this.props)),e&&y(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),O(this))},w.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),O(this))},w.prototype.render=C,r=[],a=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,o=function(e,t){return e.__v.__b-t.__v.__b},k.__r=0,s=Math.random().toString(8),c=`__d`+s,l=`__a`+s,u=/(PointerCapture)$|Capture$/i,d=0,f=ne(!1),p=ne(!0),m=0;var z,B,V,le,H=0,U=[],W=t,G=W.__b,ue=W.__r,de=W.diffed,fe=W.__c,pe=W.unmount,me=W.__;function K(e,t){W.__h&&W.__h(B,e,H||t),H=0;var n=B.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function he(e){return H=1,ge(Te,e)}function ge(e,t,n){var r=K(z++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Te(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=B,!B.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=!1,o=r.__c.props!==e;if(r.__c.__H.__.some(function(e){if(e.__N){i=!0;var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a){var s=a.call(this,e,t,n);return i?s||o:s}return!i||o};B.__f=!0;var a=B.shouldComponentUpdate,o=B.componentWillUpdate;B.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},B.shouldComponentUpdate=i}return r.__N||r.__}function _e(e,t){var n=K(z++,3);!W.__s&&we(n.__H,t)&&(n.__=e,n.u=t,B.__H.__h.push(n))}function ve(e){return H=5,q(function(){return{current:e}},[])}function q(e,t){var n=K(z++,7);return we(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function ye(e,t){return H=8,q(function(){return e},t)}function be(e){var t=B.context[e.__c],n=K(z++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(B)),t.props.value):e.__}function xe(){for(var e;e=U.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(J),t.__h.some(Y),t.__h=[]}catch(n){t.__h=[],W.__e(n,e.__v)}}}W.__b=function(e){B=null,G&&G(e)},W.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),me&&me(e,t)},W.__r=function(e){ue&&ue(e),z=0;var t=(B=e.__c).__H;t&&(V===B?(t.__h=[],B.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(J),t.__h.some(Y),t.__h=[],z=0)),V=B},W.diffed=function(e){de&&de(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(U.push(t)!==1&&le===W.requestAnimationFrame||((le=W.requestAnimationFrame)||Ce)(xe)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),V=B=null},W.__c=function(e,t){t.some(function(e){try{e.__h.some(J),e.__h=e.__h.filter(function(e){return!e.__||Y(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],W.__e(n,e.__v)}}),fe&&fe(e,t)},W.unmount=function(e){pe&&pe(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{J(e)}catch(e){t=e}}),n.__H=void 0,t&&W.__e(t,n.__v))};var Se=typeof requestAnimationFrame==`function`;function Ce(e){var t,n=function(){clearTimeout(r),Se&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Se&&(t=requestAnimationFrame(n))}function J(e){var t=B,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),B=t}function Y(e){var t=B;e.__c=e.__(),B=t}function we(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function Te(e,t){return typeof t==`function`?t(e):t}var Ee=0;Array.isArray;function De(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Ee,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}function Oe(e,t){for(var n in t)e[n]=t[n];return e}function ke(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Ae(e,t){this.props=e,this.context=t}(Ae.prototype=new w).isPureReactComponent=!0,Ae.prototype.shouldComponentUpdate=function(e,t){return ke(this.props,e)||ke(this.state,t)};var je=t.__b;t.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),je&&je(e)};var Me=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.forward_ref`)||3911;function Ne(e){function t(t){var n=Oe({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Me,t.render=e,t.prototype.isReactComponent=t.__f=!0,t.displayName=`ForwardRef(`+(e.displayName||e.name)+`)`,t}var Pe=t.__e;t.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k||[]),i.__c(e,t)}Pe(e,t,n,r)};var Fe=t.unmount;function Ie(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Oe({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Ie(e,t,n)})),e}function Le(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return Le(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function X(){this.__u=0,this.o=null,this.__b=null}function Re(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function ze(e){var t,n,r,i=null;function a(a){if(t||(t=e()).then(function(e){e&&(i=e.default||e),r=!0},function(e){n=e,r=!0}),n)throw n;if(!r)throw t;return i?x(i,a):null}return a.displayName=`Lazy`,a.__f=!0,a}function Z(){this.i=null,this.l=null}t.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Fe&&Fe(e)},(X.prototype=new w).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=Re(r.__v),a=!1,o=function(){a||r.__z||(a=!0,n.__R=null,i?i(c):c())};n.__R=o;var s=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Le(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=s,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},X.prototype.componentWillUnmount=function(){this.o=[]},X.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Ie(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&x(C,null,e.fallback);return i&&(i.__u&=-33),[x(C,null,t.__a?null:e.children),i]};var Be=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function Ve(e){return this.getChildContext=function(){return e.context},e.children}function He(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){R(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(e,n){this.childNodes.push(e),t.h.insertBefore(e,n)},removeChild:function(e){this.childNodes.splice(this.childNodes.indexOf(e)>>>1,1),t.h.removeChild(e)}}}R(x(Ve,{context:t.context},e.__v),t.v)}function Ue(e,t){var n=x(He,{__v:e,h:t});return n.containerInfo=t,n}(Z.prototype=new w).__a=function(e){var t=this,n=Re(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),Be(t,e,r)):i()};n?n(a):a()}},Z.prototype.render=function(e){this.i=null,this.l=new Map;var t=M(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},Z.prototype.componentDidUpdate=Z.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Be(e,n,t)})};var We=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,Ge=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ke=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,qe=/[A-Z0-9]/g,Je=typeof document<`u`,Ye=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};w.prototype.isReactComponent=!0,[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(w.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Q=t.event;t.event=function(e){return Q&&(e=Q(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var Xe={configurable:!0,get:function(){return this.class}},Ze=t.vnode;t.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)==-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||Je&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||Ye(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:Ke.test(a)&&(a=s):s=a=`oninput`:i&&Ge.test(a)?a=a.replace(qe,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&(r.multiple&&Array.isArray(r.value)&&(r.value=M(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),r.defaultValue!=null&&(r.value=M(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,"className",Xe)):t.className&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=We,Ze&&Ze(e)};var Qe=t.__r;t.__r=function(e){Qe&&Qe(e),e.__c};var $e=t.diffed;t.diffed=function(e){$e&&$e(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value)};var et=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),tt=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),nt=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),rt=e=>{let t=nt(e);return t.charAt(0).toUpperCase()+t.slice(1)},$={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},it=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},at=ce({}),ot=()=>be(at),st=Ne(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=ot()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return x(`svg`,{ref:c,...$,width:t??l??$.width,height:t??l??$.height,stroke:e??f,strokeWidth:m,className:et(`lucide`,p,i),...!a&&!it(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>x(e,t)),...Array.isArray(a)?a:[a]])}),ct=(e,t)=>{let n=Ne(({className:n,...r},i)=>x(st,{ref:i,iconNode:t,className:et(`lucide-${tt(rt(e))}`,`lucide-${e}`,n),...r}));return n.displayName=rt(e),n};export{De as a,he as c,be as d,R as f,ze as i,_e as l,ce as m,Ue as n,ve as o,C as p,X as r,q as s,ct as t,ye as u};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var e={_section_nav:`── Navigation ──────────────────────────────────────────`,"nav.dashboard":`Dashboard`,"nav.consentBanners":`Einwilligungsbanner`,"nav.consentTemplates":`Cookie-Vorlagen`,"nav.uiTemplates":`UI-Vorlagen`,"nav.profiles":`Profile`,"nav.consents":`Einwilligungen`,"nav.visitors":`Besucher`,"nav.users":`Benutzer`,"nav.roles":`Rollen`,"nav.sites":`Websites`,"nav.vendors":`TCF-Anbieter`,"nav.reports":`Berichte`,"nav.audit":`Audit-Protokoll`,"nav.api":`API`,"nav.settings":`Einstellungen`,"nav.adminDashboard":`Admin-Dashboard`,_section_layout:`── Layout ───────────────────────────────────────────`,"layout.expandSidebar":`Seitenleiste erweitern`,"layout.collapseSidebar":`Seitenleiste einklappen`,"layout.signOut":`Abmelden`,"layout.toggleDark":`In den Dunkelmodus wechseln`,"layout.toggleLight":`In den Hellmodus wechseln`,"layout.poweredBy":`Bereitgestellt von`,_section_common:`── Allgemein ───────────────────────────────────────`,"common.loading":`Wird geladen…`,"common.searching":`Wird gesucht…`,"common.save":`Speichern`,"common.saving":`Wird gespeichert…`,"common.cancel":`Abbrechen`,"common.close":`Schließen`,"common.delete":`Löschen`,"common.edit":`Bearbeiten`,"common.create":`Erstellen`,"common.confirm":`Bestätigen`,"common.noData":`Keine Daten`,"common.search":`Search…`,"common.perPage":`Pro Seite`,"common.goToPage":`Gehe zu Seite`,"common.pageOfTotal":`Seite {{page}} von {{total}}`,"common.noResults":`No results match your search.`,"common.exportCsv":`CSV exportieren`,"common.duplicate":`Duplizieren`,"common.active":`Aktiv`,"common.inactive":`Inaktiv`,"common.name":`Name`,"common.email":`E-Mail`,"common.status":`Status`,"common.created":`Erstellt`,"common.id":`ID`,"common.add":`Hinzufügen`,"common.remove":`Entfernen`,"common.revoke":`Widerrufen`,"common.required":`Erforderlich`,"common.version":`Version`,"common.locale":`Gebietsschema`,"common.country":`Land`,"common.source":`Quelle`,"common.grantAll":`Allen zustimmen`,"common.revokeAll":`Alle widerrufen`,"common.granted":`erteilt`,"common.page":`Seite {{n}}`,"common.prev":`Zurück`,"common.next":`Weiter`,"common.you":`Sie`,"common.default":`Standard`,"common.hide":`Ausblenden`,"common.show":`Anzeigen`,"common.activate":`Aktivieren`,"common.deactivate":`Deaktivieren`,"common.newRole":`Neue Rolle`,"common.copyToClipboard":`In die Zwischenablage kopieren`,"common.back":`Zurück`,"common.copyId":`ID kopieren`,"common.mandatory":`verpflichtend`,"common.optional":`Optional`,"common.roles":`Rollen`,"common.showPassword":`Passwort anzeigen`,"common.hidePassword":`Passwort ausblenden`,"common.updated":`Aktualisiert`,_section_locale:`── Sprachumschalter ────────────────────────────────`,"locale.en":`Englisch`,"locale.switcherAria":`Sprache wechseln`,_section_login:`── Anmeldung ───────────────────────────────────────`,"login.title":`{{appName}} Admin`,"login.subtitle":`Melden Sie sich bei Ihrem Konto an`,"login.email":`E-Mail`,"login.emailPlaceholder":`admin@example.com`,"login.password":`Passwort`,"login.submit":`Anmelden`,"login.submitting":`Anmeldung läuft…`,"login.error.invalid":`Ungültige E-Mail oder ungültiges Passwort`,"login.devSignIn":`⚡ Dev: als user@consenti.dev anmelden`,_section_setupWizard:`── Einrichtungsassistent ────────────────────────`,"setupWizard.welcome.title":`Willkommen bei {{appName}}`,"setupWizard.welcome.body":`Lassen Sie uns Ihre Consent-Verwaltung einrichten. Das dauert nur eine Minute — wir zeigen Ihnen die aktuelle Konfiguration und helfen Ihnen, einen Basissatz an Compliance-Profilen zu installieren.`,"setupWizard.welcome.docsLink":`Dokumentation ansehen`,"setupWizard.welcome.howItWorksLink":`So funktioniert Consenti`,"setupWizard.welcome.getStarted":`Los geht's`,"setupWizard.welcome.skip":`Einrichtung überspringen`,"setupWizard.config.title":`Ihre Konfiguration`,"setupWizard.config.subtitle":`Das hat Consenti aus Ihrer Konfiguration und den Umgebungsvariablen ermittelt, zusammengeführt mit sinnvollen Standardwerten. Geheimnisse sind ausgeblendet.`,"setupWizard.back":`Zurück`,"setupWizard.continue":`Weiter`,"setupWizard.profiles.title":`Standard-Compliance-Profile`,"setupWizard.profiles.subtitle":`Consenti bringt 8 vorgefertigte Compliance-Profile für die wichtigsten globalen Datenschutzvorgaben mit. Wählen Sie aus, welche jetzt installiert werden sollen — weitere können Sie später hinzufügen.`,"setupWizard.profiles.selectAll":`Alle 8 Standardprofile installieren`,"setupWizard.profiles.installAndContinue":`Installieren & weiter`,"setupWizard.profiles.skipAndContinue":`Überspringen & weiter`,"setupWizard.profiles.error":`Die ausgewählten Profile konnten nicht installiert werden. Sie können es später erneut über Profile versuchen.`,"setupWizard.confirmation.title":`Alles bereit`,"setupWizard.confirmation.seededSummary":`{{count}} Compliance-Profil(e) installiert.`,"setupWizard.confirmation.noneSeeded":`Es wurden keine Profile installiert — Sie können jederzeit eines über Profile anlegen.`,"setupWizard.confirmation.readinessTitle":`Bevor Sie live gehen`,"setupWizard.confirmation.readinessJsonStorage":`Sie verwenden den JSON-Datei-Speichertreiber — für die Entwicklung geeignet, für den Produktivbetrieb aber einen Datenbanktreiber (node:sqlite, PostgreSQL, MySQL, MongoDB) verwenden.`,"setupWizard.confirmation.readinessDefaultCredentials":`Es wurden keine Admin-Zugangsdaten konfiguriert — Consenti verwendet Demo-Zugangsdaten. Setzen Sie CONSENTI_ADMIN_EMAIL und CONSENTI_ADMIN_PASSWORD, bevor Sie live gehen.`,"setupWizard.confirmation.howItWorks":`So funktioniert Consenti`,"setupWizard.confirmation.goToDashboard":`Zum Dashboard`,_section_dashboard:`── Dashboard ────────────────────────────────────`,"dashboard.title":`Dashboard`,"dashboard.stats.totalConsents":`Gesamte Einwilligungen`,"dashboard.stats.totalVisitors":`Gesamte Besucher`,"dashboard.stats.accepted":`Akzeptiert`,"dashboard.stats.acceptedSub":`≥80 % Cookies genehmigt`,"dashboard.stats.rejected":`Abgelehnt`,"dashboard.stats.rejectedSub":`≤20 % Cookies genehmigt`,"dashboard.chart.timeline":`Einwilligungen (letzte 30 Tage)`,"dashboard.chart.timelineAria":`Diagramm zum Verlauf der Einwilligungen`,"dashboard.chart.countries":`Top-Länder`,"dashboard.chart.noData":`Keine Daten.`,"dashboard.chart.noCountryData":`Keine Länderdaten.`,"dashboard.gpc.label":`GPC-Erkennungsrate`,"dashboard.gpc.sub":`{{detected}} von {{total}} Einwilligungen`,"dashboard.viewReports":`Vollständige Berichte anzeigen →`,_section_reports:`── Berichte ──────────────────────────────────────────`,"reports.title":`Berichte`,"reports.filters.from":`Von`,"reports.filters.to":`Bis`,"reports.filters.apply":`Anwenden`,"reports.optin.total":`Gesamtentscheidungen`,"reports.optin.granted":`Erteilt`,"reports.optin.denied":`Abgelehnt`,"reports.optin.managed":`Teilweise verwaltet`,"reports.optin.byDate":`Einwilligungsverlauf`,"reports.optin.byDateAria":`Einwilligungsentscheidungen im Zeitverlauf`,"reports.optin.byLocale":`Nach Sprache`,"reports.category.title":`Nach Kategorie`,"reports.legend.granted":`Erteilt`,"reports.legend.denied":`Abgelehnt`,"reports.legend.objected":`Widersprochen`,"reports.legend.managed":`Verwaltet`,_section_consents:`── Einwilligungen ────────────────────────────────`,"consents.title":`Einwilligungsdatensätze`,"consents.filterFrom":`Von`,"consents.filterTo":`Bis`,"consents.filterGpc":`Nur GPC`,"consents.records":`{{n}} Datensätze`,"consents.empty":`Noch keine Einwilligungsdatensätze.`,"consents.col.visitorId":`Besucher-ID`,"consents.col.profile":`Profil`,"consents.col.locale":`Gebietsschema`,"consents.col.gpc":`GPC`,"consents.col.age":`Alter`,"consents.col.source":`Quelle`,"consents.col.created":`Erstellt`,"consents.gpcYes":`Ja`,"consents.ageVerified":`Verifiziert`,"consents.searchPlaceholder":`Besucher, Profil, Sprache, Quelle suchen…`,"consents.detail.title":`Einwilligungsdatensatz`,"consents.detail.updated":`Aktualisiert`,"consents.detail.consentJson":`Einwilligungsdaten`,"consents.detail.signature":`Signatur`,"consents.detail.signed":`Signiert`,"consents.detail.unsigned":`Nicht signiert`,_section_visitors:`── Besucher ──────────────────────────────────────`,"visitors.title":`Besucher`,"visitors.empty":`Noch keine Besucher erfasst.`,"visitors.col.visitorId":`Besucher-ID`,"visitors.col.country":`Land`,"visitors.col.firstSeen":`Erstmals gesehen`,"visitors.col.lastSeen":`Zuletzt gesehen`,"visitors.searchPlaceholder":`Besucher-ID, Land suchen…`,"visitors.detail.title":`Besucher`,"visitors.detail.region":`Region`,"visitors.detail.city":`Stadt`,_section_users:`── Benutzer ───────────────────────────────────────`,"users.title":`Benutzer`,"users.count":`{{n}} Benutzer`,"users.newUser":`+ Neuer Benutzer`,"users.createForm.title":`Benutzer erstellen`,"users.createForm.namePlaceholder":`Name`,"users.createForm.emailPlaceholder":`E-Mail`,"users.createForm.passwordPlaceholder":`Passwort`,"users.createForm.confirmPasswordPlaceholder":`Passwort bestätigen`,"users.createForm.selectRole":`Rolle auswählen…`,"users.createForm.passwordMismatch":`Passwörter stimmen nicht überein`,"users.createForm.error":`Benutzer konnte nicht erstellt werden`,"users.col.status":`Status`,"users.status.active":`Aktiv`,"users.status.inactive":`Inaktiv`,"users.action.activate":`Aktivieren`,"users.action.deactivate":`Deaktivieren`,"users.dialog.delete.title":`Benutzer „{{name}}“ löschen?`,"users.dialog.delete.message":`Dieses Benutzerkonto wird dauerhaft entfernt.`,_section_roles:`── Rollen & Berechtigungen ───────────────────────`,"roles.title":`Rollen & Berechtigungen`,"roles.list.heading":`Rollen`,"roles.list.empty":`Noch keine Rollen. Erstellen Sie eine, um zu beginnen.`,"roles.form.roleNameLabel":`Rollenname`,"roles.form.roleNamePlaceholder":`z. B. Editor`,"roles.form.descriptionLabel":`Beschreibung`,"roles.form.descriptionPlaceholder":`Optionale Beschreibung`,"roles.perms.heading":`Berechtigungen — {{name}}`,"roles.perms.selectPrompt":`Wählen Sie eine Rolle aus, um Berechtigungen zu verwalten`,"roles.perms.clickPrompt":`Klicken Sie links auf eine Rolle, um deren Berechtigungen anzuzeigen und zu verwalten.`,"roles.perms.noPerms":`Im System sind keine Berechtigungen definiert.`,"roles.error.load":`Rollen konnten nicht geladen werden.`,"roles.error.create":`Rolle konnte nicht erstellt werden.`,"roles.error.update":`Rolle konnte nicht aktualisiert werden.`,"roles.error.delete":`Rolle konnte nicht gelöscht werden.`,"roles.error.perm":`Berechtigung konnte nicht aktualisiert werden.`,"roles.dialog.delete.title":`Rolle „{{name}}“ löschen?`,"roles.dialog.delete.message":`Benutzer mit dieser Rolle verlieren ihre Berechtigungen sofort.`,"roles.aria.editRole":`Rolle bearbeiten`,"roles.aria.deleteRole":`Rolle löschen`,_section_profiles:`── Profile ───────────────────────────────────────`,"profiles.title":`Profile`,"profiles.count":`{{n}} Profile`,"profiles.countSingular":`{{n}} Profil`,"profiles.newProfile":`+ Neues Profil`,"profiles.empty":`Noch keine Profile. Erstellen Sie eines, um zu beginnen.`,"profiles.search.placeholder":`Search profiles…`,"profiles.filter.status":`Status`,"profiles.filter.active":`Active`,"profiles.filter.inactive":`Inactive`,"profiles.archived.cta":`Archived Profiles`,"profiles.archived.title":`Archived Profiles`,"profiles.archived.back":`Back to profiles`,"profiles.archived.hint":`Profile-id directories found on disk with no matching database entry — deleted profiles whose version snapshots weren't. Click one to browse its version history.`,"profiles.archived.empty":`No archived profiles found.`,"profiles.archived.searchPlaceholder":`Search by profile ID…`,"profiles.archived.col.id":`Profile ID`,"profiles.archived.col.versions":`Versions`,"profiles.archived.col.lastModified":`Last Modified`,"profiles.archived.viewHistory":`View history`,"profiles.col.name":`Name`,"profiles.col.defaultLocale":`Standard-Gebietsschema`,"profiles.col.templates":`Vorlagen`,"profiles.col.created":`Erstellt`,"profiles.template.cookie":`Cookie:`,"profiles.template.ui":`UI:`,"profiles.action.copyId":`Profil-ID kopieren`,"profiles.action.copySlug":`Copy compliance group slug`,"profiles.action.copying":`Wird kopiert…`,"profiles.dialog.delete.title":`„{{name}}“ löschen?`,"profiles.dialog.delete.message":`Dieses Profil und alle lokalisierten Inhalte werden dauerhaft entfernt.`,"profiles.dialog.copy.title":`„{{name}}“ kopieren?`,"profiles.dialog.copy.message":`Dieses Profil und alle lokalisierten Inhalte werden dupliziert.`,_section_profileEditor:`── Profil-Editor ───────────────────────────────`,"profileEditor.title.new":`Neues Profil`,"profileEditor.title.edit":`Profil bearbeiten`,"profileEditor.title.loading":`Profil-Editor`,"profileEditor.step.config":`Profilkonfiguration`,"profileEditor.step.templates":`Vorlagen`,"profileEditor.step.content":`Inhalt`,"profileEditor.step.mainBanner":`Hauptbanner`,"profileEditor.step.gpcBanner":`GPC-Banner`,"profileEditor.step.prefModal":`Einstellungs-Modal`,"profileEditor.config.profileName":`Profilname`,"profileEditor.config.profileNamePlaceholder":`Meine Website`,"profileEditor.config.defaultLocale":`Standard-Gebietsschema`,"profileEditor.config.allowedDomains":`Erlaubte Domains`,"profileEditor.config.allowedDomainsHint":`Unterstützt Wildcards (*.example.com). Leer lassen, um alle zuzulassen.`,"profileEditor.config.regulations":`Compliance-Vorschriften`,"profileEditor.config.reg.gdprLabel":`DSGVO`,"profileEditor.config.reg.gdprDesc":`EU/EWR Opt-in. Kein Tracking, bis eine Einwilligung erteilt wurde. Banner wird beim ersten Besuch angezeigt.`,"profileEditor.config.reg.ccpaLabel":`CCPA`,"profileEditor.config.reg.ccpaDesc":`Kalifornisches Opt-out. Cookies sind standardmäßig genehmigt. Einen „Do Not Sell“-Auslöser bereitstellen.`,"profileEditor.config.reg.cpraLabel":`CPRA`,"profileEditor.config.reg.cpraDesc":`Kalifornien 2023. Opt-out für Verkauf/Weitergabe; Opt-in für sensible Daten. GPC wird beachtet.`,"profileEditor.config.reg.dpdpaLabel":`DPDPA`,"profileEditor.config.reg.dpdpaDesc":`Indien 2023. Opt-in wie bei der DSGVO. GPC wird nicht anerkannt. Hinweis des Datenverantwortlichen erforderlich.`,"profileEditor.config.darkMode":`Dunkelmodus aktivieren`,"profileEditor.config.darkModeHint":`Wendet dunkle Farbtokens auf das Einwilligungs-Widget für Websites mit dunklem Design an.`,"profileEditor.config.dpdpa.heading":`DPDPA — Erforderliche Felder des Einwilligungshinweises`,"profileEditor.config.dpdpa.fiduciary":`Name des Datenverantwortlichen`,"profileEditor.config.dpdpa.fiduciaryPlaceholder":`Acme Corp Pvt Ltd`,"profileEditor.config.dpdpa.grievanceEmail":`E-Mail des Beschwerdebeauftragten`,"profileEditor.config.dpdpa.grievanceEmailPlaceholder":`grievance@acme.com`,"profileEditor.config.dpdpa.purpose":`Beschreibung des Zwecks`,"profileEditor.config.dpdpa.purposePlaceholder":`Wir erfassen Ihre Daten, um Ihr Erlebnis zu personalisieren…`,"profileEditor.templates.cookieTemplate":`Cookie-Vorlage`,"profileEditor.templates.cookieTemplateHint":`Legt fest, welche Cookies/Zwecke im Präferenzdialog erscheinen. Alle Felder werden aus der Vorlage abgeleitet — im Profil schreibgeschützt.`,"profileEditor.templates.selectCookie":`— Cookie-Vorlage auswählen —`,"profileEditor.templates.uiTemplate":`UI-Vorlage`,"profileEditor.templates.uiTemplateHint":`Legt Layout von Banner/Modal, Anzahl der Schaltflächen und Kategoriestruktur fest. Textinhalte fügen Sie in Schritten 3–5 hinzu.`,"profileEditor.templates.selectUi":`— UI-Vorlage auswählen —`,"profileEditor.templates.noTemplate":`Keine Vorlage ausgewählt.`,"profileEditor.templates.previewPrompt":`Wählen Sie sowohl eine Cookie-Vorlage als auch eine UI-Vorlage aus, um eine Live-Vorschau zu sehen.`,"profileEditor.templates.categoriesCount":`Kategorien`,"profileEditor.templates.buttonsTotal":`Schaltflächen insgesamt`,"profileEditor.content.loadDefaults":`Standardwerte laden`,"profileEditor.content.loadDefaultsTitle":`Diesen Abschnitt mit compliance-konformen Standardtexten (Englisch) füllen`,"profileEditor.content.loadDefaultsNotice":`Standardwerte sind nur auf Englisch verfügbar — übersetzen Sie über die Registerkarte oben.`,"profileEditor.content.importError":`Die hochgeladene Datei konnte nicht verarbeitet werden. Stellen Sie sicher, dass sie dem Consenti-Gebietsschema-Vorlagenformat entspricht.`,"profileEditor.content.mainBanner":`Hauptbanner`,"profileEditor.content.gpcBanner":`GPC-Banner`,"profileEditor.content.prefModal":`Präferenzdialog`,"profileEditor.content.heading":`Überschrift`,"profileEditor.content.subheading":`Unterüberschrift`,"profileEditor.content.bodyText":`Text`,"profileEditor.content.introText":`Einleitungstext (optional)`,"profileEditor.content.buttonLabels":`Schaltflächenbeschriftungen`,"profileEditor.content.categoryHeading":`Kategorieüberschrift`,"profileEditor.content.categoryDesc":`Kategoriebeschreibung`,"profileEditor.content.categoryFallback":`Kategorie {{n}}`,"profileEditor.content.buttonLabelPlaceholder":`Schaltflächentext…`,"profileEditor.content.categoryDescPlaceholder":`Beschreibung dieser Cookie-Kategorie…`,"profileEditor.content.liDescription":`Beschreibung des berechtigten Interesses (optional)`,"profileEditor.content.liDescriptionPlaceholder":`Wir berufen uns auf berechtigtes Interesse, weil…`,"profileEditor.content.liDescriptionHint":`Ihre DSGVO-Interessenabwägung zur Berufung auf berechtigtes Interesse, sichtbar für Besucher. Optional — Sie können dies auch in der Kategoriebeschreibung oben abdecken.`,"profileEditor.content.mainBannerHeadingPlaceholder":`Ihre Privatsphäre ist uns wichtig`,"profileEditor.content.mainBannerBodyPlaceholder":`Wir verwenden Cookies, um Ihr Erlebnis zu verbessern…`,"profileEditor.content.gpcHeadingPlaceholder":`Global Privacy Control erkannt`,"profileEditor.content.prefHeadingPlaceholder":`Datenschutzeinstellungen`,"profileEditor.content.prefSubheadingPlaceholder":`Verwalten Sie unten Ihre Cookie-Einstellungen.`,"profileEditor.content.prefIntroPlaceholder":`Optionale Einleitung über den Kategorien…`,"profileEditor.content.noContent":`Wählen Sie in Schritt 2 eine UI-Vorlage aus, um mit der Bearbeitung des Inhalts zu beginnen.`,"profileEditor.content.loadingTemplate":`Vorlage wird geladen…`,"profileEditor.nav.nextTemplates":`Weiter: Vorlagen`,"profileEditor.nav.nextContent":`Weiter: Inhalt`,"profileEditor.nav.nextMainBanner":`Weiter: Hauptbanner`,"profileEditor.nav.nextGpcBanner":`Weiter: GPC-Banner`,"profileEditor.nav.nextPrefModal":`Weiter: Einstellungs-Modal`,"profileEditor.action.create":`Profil erstellen`,"profileEditor.action.save":`Profil speichern`,"profileEditor.error.nameRequired":`Profilname ist erforderlich.`,"profileEditor.error.nameRequiredContinue":`Vor dem Fortfahren ist ein Profilname erforderlich.`,"profileEditor.error.cookieRequired":`Wählen Sie eine Cookie-Vorlage aus.`,"profileEditor.error.cookieContinue":`Wählen Sie eine Cookie-Vorlage aus, um fortzufahren.`,"profileEditor.error.uiRequired":`Wählen Sie eine UI-Vorlage aus.`,"profileEditor.error.uiContinue":`Wählen Sie eine UI-Vorlage aus, um fortzufahren.`,"profileEditor.error.failed":`Profil konnte nicht gespeichert werden.`,"profileEditor.error.load":`Profil konnte nicht geladen werden.`,"profileEditor.table.noNoCookies":`In dieser Vorlage sind keine Cookies definiert.`,"profileEditor.table.id":`ID`,"profileEditor.table.legalBasis":`Rechtsgrundlage`,"profileEditor.table.mandatory":`Verpflichtend`,"profileEditor.table.gpc":`GPC`,"profileEditor.table.tcfVendor":`TCF-Anbieter`,"profileEditor.table.cpraCategory":`CPRA-Kategorie`,"profileEditor.table.cookies":`Cookies`,"profileEditor.export.json":`JSON`,"profileEditor.export.csv":`CSV`,"profileEditor.export.import":`Importieren`,"profileEditor.export.jsonTitle":`Lokalisierte Inhalte als JSON herunterladen`,"profileEditor.export.csvTitle":`Lokalisierte Inhalte als CSV zur Übersetzung herunterladen`,"profileEditor.export.importTitle":`Übersetztes JSON oder CSV hochladen`,"profileEditor.newLink":`+ Neu ↗`,_section_consentTemplates:`── Cookie-Vorlagen ─────────────────────────────`,"consentTemplates.title":`Cookie-Vorlagen`,"consentTemplates.count":`{{n}} Vorlagen`,"consentTemplates.countSingular":`{{n}} Vorlage`,"consentTemplates.new":`+ Neue Cookie-Vorlage`,"consentTemplates.empty.title":`Noch keine Cookie-Vorlagen.`,"consentTemplates.empty.hint":`Cookie-Vorlagen definieren die Liste der Cookies/Zwecke für Ihre Einwilligungsprofile. Erstellen Sie eine Vorlage, um sie in mehreren Profilen wiederzuverwenden.`,"consentTemplates.search.placeholder":`Search consent templates…`,"consentTemplates.col.name":`Name`,"consentTemplates.col.cookies":`Cookies`,"consentTemplates.required":`erforderlich`,"consentTemplates.dialog.delete.title":`„{{name}}“ löschen?`,"consentTemplates.dialog.delete.message":`Diese Cookie-Vorlage wird dauerhaft entfernt. Verknüpfte Profile verlieren ihre Cookie-Definitionen.`,"consentTemplates.editor.title.new":`Neue Cookie-Vorlage`,"consentTemplates.editor.title.edit":`Cookie-Vorlage bearbeiten`,"consentTemplates.editor.name":`Vorlagenname`,"consentTemplates.editor.namePlaceholder":`z. B. Google Analytics + Ads`,"consentTemplates.editor.nameRequired":`Vorlagenname ist erforderlich.`,"consentTemplates.editor.definitions":`Cookie-Definitionen`,"consentTemplates.editor.empty":`Noch keine Cookies definiert. Fügen Sie oben eines hinzu.`,"consentTemplates.editor.addCookie":`+ Cookie hinzufügen`,"consentTemplates.editor.idNoMatches":`Keine bekannten Schlüssel gefunden — Sie können trotzdem eine eigene ID eingeben`,"consentTemplates.editor.error.allIds":`Alle Cookies müssen eine ID haben.`,"consentTemplates.editor.error.uniqueIds":`Cookie-IDs müssen eindeutig sein.`,"consentTemplates.editor.error.failed":`Vorlage konnte nicht gespeichert werden.`,"consentTemplates.editor.error.notFound":`Vorlage nicht gefunden.`,"consentTemplates.editor.action.create":`Vorlage erstellen`,"consentTemplates.editor.action.save":`Vorlage speichern`,"consentTemplates.editor.showTcf":`TCF-Anbieter`,"consentTemplates.editor.showCpra":`CPRA-Kategorie`,"consentTemplates.editor.infoHint":`Klicken Sie auf eine Spaltenüberschrift, um mehr zu erfahren`,"consentTemplates.editor.infoUsage":`Verwendung`,"consentTemplates.editor.infoLaws":`Rechtliche Hinweise`,"consentTemplates.editor.infoExamples":`Beispiele`,"consentTemplates.col.id":`Cookie-ID`,"consentTemplates.col.idShort":`ID / Name`,"consentTemplates.col.gpc":`GPC-Signal beachten`,"consentTemplates.col.gpcShort":`GPC`,"consentTemplates.col.tcfVendor":`TCF-Anbieter-IDs`,"consentTemplates.col.cpraCategory":`CPRA-Datenkategorie`,"consentTemplates.col.tcfVendorShort":`TCF-Anbieter`,"consentTemplates.col.cpraCategoryShort":`CPRA-Kategorie`,"consentTemplates.col.purpose":`Zweck des Cookies`,"consentTemplates.col.purposeShort":`Zweck`,"consentTemplates.purpose.necessary":`Notwendig`,"consentTemplates.purpose.functional":`Funktional`,"consentTemplates.purpose.preferences":`Präferenzen`,"consentTemplates.purpose.analytics":`Analyse`,"consentTemplates.purpose.marketing":`Marketing`,"consentTemplates.editor.purposePlaceholder":`Zweck auswählen…`,"consentTemplates.editor.error.purpose":`Jedes Cookie muss einen Zweck haben.`,_section_uiTemplates:`── UI-Vorlagen ──────────────────────────────────`,"uiTemplates.title":`UI-Vorlagen`,"uiTemplates.count":`{{n}} Vorlagen`,"uiTemplates.countSingular":`{{n}} Vorlage`,"uiTemplates.new":`+ Neue UI-Vorlage`,"uiTemplates.empty.title":`Noch keine UI-Vorlagen.`,"uiTemplates.empty.hint":`UI-Vorlagen definieren die visuelle Konfiguration — Positionen, Schaltflächen, Kategorien — für Ihre Einwilligungsbanner und Dialoge.`,"uiTemplates.search.placeholder":`Search UI templates…`,"uiTemplates.col.name":`Name`,"uiTemplates.col.positions":`Positions`,"uiTemplates.col.buttons":`Buttons`,"uiTemplates.mainBanner":`Hauptbanner:`,"uiTemplates.gpcBanner":`GPC-Banner:`,"uiTemplates.modal":`Dialog:`,"uiTemplates.categories":`{{n}} Kategorien`,"uiTemplates.dialog.delete.title":`„{{name}}“ löschen?`,"uiTemplates.dialog.delete.message":`Diese UI-Vorlage wird dauerhaft entfernt. Verknüpfte Profile verlieren ihre UI-Einstellungen.`,"uiTemplates.editor.title.new":`Neue UI-Vorlage`,"uiTemplates.editor.title.edit":`UI-Vorlage bearbeiten`,"uiTemplates.editor.name":`Vorlagenname`,"uiTemplates.editor.nameRequired":`Vorlagenname ist erforderlich.`,"uiTemplates.editor.namePlaceholder":`z. B. Standard-DSGVO-Layout`,"uiTemplates.editor.loading":`Vorlage wird geladen…`,"uiTemplates.editor.tabMain":`Hauptbanner`,"uiTemplates.editor.tabGpc":`GPC-Banner`,"uiTemplates.editor.tabModal":`Präferenzdialog`,"uiTemplates.editor.mainBannerHint":`Wird beim ersten Besuch angezeigt, wenn noch keine Einwilligung erfasst wurde.`,"uiTemplates.editor.gpcBannerHint":`Wird anstelle des Hauptbanners angezeigt, wenn ein GPC-Signal erkannt wird (autoHonorGPC aktiviert).`,"uiTemplates.editor.error.notFound":`Vorlage nicht gefunden.`,"uiTemplates.editor.error.buttons":`Alle Schaltflächen müssen eine ID haben.`,"uiTemplates.editor.error.uniqueButtonIds":`Button IDs must be unique.`,"uiTemplates.editor.error.customButtons":`Bei allen „benutzerdefinierten“ Aktionsschaltflächen müssen Cookies ausgewählt sein.`,"uiTemplates.editor.error.catIds":`Alle Kategorie-IDs sind erforderlich.`,"uiTemplates.editor.error.uniqueCatIds":`Kategorie-IDs müssen eindeutig sein.`,"uiTemplates.editor.error.catCookies":`Jede Kategorie muss mindestens ein Cookie enthalten.`,"uiTemplates.editor.error.failed":`Vorlage konnte nicht gespeichert werden.`,"uiTemplates.editor.action.create":`Vorlage erstellen`,"uiTemplates.editor.action.save":`Vorlage speichern`,_section_sites:`── Websites / Mandanten ──────────────────────────`,"sites.title":`Websites / Mandanten`,"sites.createNew":`Neue Website erstellen`,"sites.namePlaceholder":`Name der Website`,"sites.slugPlaceholder":`Slug (z. B. site-a)`,"sites.col.name":`Name`,"sites.col.slug":`Slug`,"sites.col.id":`ID`,"sites.col.created":`Erstellt`,"sites.empty":`Noch keine Websites.`,"sites.dialog.delete.title":`„{{name}}“ löschen?`,"sites.dialog.delete.message":`Diese Website und alle zugehörigen Daten werden dauerhaft entfernt. Dies kann nicht rückgängig gemacht werden.`,_section_vendors:`── TCF-Anbieter ──────────────────────────────────`,"vendors.title":`TCF-Anbieterliste`,"vendors.info.title":`Was ist die TCF-Anbieterliste?`,"vendors.searchPlaceholder":`Anbieter suchen…`,"vendors.gvlMeta":`GVL v{{version}} · {{total}} Anbieter`,"vendors.loading":`Anbieterliste wird geladen…`,"vendors.noResults":`Keine Anbieter gefunden.`,"vendors.col.id":`ID`,"vendors.col.name":`Name`,"vendors.col.purposes":`Zwecke`,"vendors.col.liPurposes":`LI-Zwecke`,"vendors.col.specialPurposes":`Besondere Zwecke`,"vendors.pagination":`Seite {{page}} von {{totalPages}} · insgesamt {{total}} Anbieter`,"vendors.prev":`← Zurück`,"vendors.next":`Weiter →`,_section_audit:`── Audit-Protokoll ────────────────────────────────`,"audit.title":`Audit-Protokoll`,"audit.empty":`Noch keine Audit-Ereignisse.`,"audit.col.time":`Zeit`,"audit.col.action":`Aktion`,"audit.col.resource":`Ressource`,"audit.col.resourceId":`Ressourcen-ID`,"audit.col.actor":`Akteur`,"audit.actor.system":`System`,"audit.viewHistory":`Vergleichen`,"audit.searchPlaceholder":`Aktion, Ressource, Akteur suchen…`,"audit.detail.title":`Audit-Eintrag`,"audit.detail.oldData":`Alte Daten`,"audit.detail.newData":`Neue Daten`,_section_apiConfig:`── API-Konfiguration ────────────────────────────`,"apiConfig.title":`API-Konfiguration`,"apiConfig.public.heading":`Öffentliche API`,"apiConfig.public.about.text":`Wird vom Widget verwendet, um Einwilligungen zu übermitteln und zu verwalten. Es gibt kein Auth-Token — die erlaubten Origins unten sind das einzige Zugriffstor.`,"apiConfig.public.about.link":`Öffentliche API-Referenz auf consenti.dev öffnen`,"apiConfig.admin.heading":`Admin-API`,"apiConfig.admin.about.text":`Verwenden Sie diese Token, um die Consenti-Admin-API aus Skripten, CI/CD oder serverseitigen Integrationen aufzurufen. Jede Route, jedes Anfrage-/Antwortformat und jeder Auth-Header ist auf consenti.dev dokumentiert.`,"apiConfig.admin.about.link":`Admin-API-Referenz auf consenti.dev öffnen`,"apiConfig.endpoint.heading":`Endpunkt`,"apiConfig.endpoint.hint":`Basis-URL für diese Bereitstellung, ermittelt aus Ihrer Konfiguration.`,"apiConfig.origins.heading":`Erlaubte Origins`,"apiConfig.origins.hint":`Nur Anfragen von diesen Origins werden akzeptiert. Verwenden Sie * , um alle zuzulassen (nicht für Produktion empfohlen).`,"apiConfig.origins.publicNote":`Die öffentliche API hat kein Auth-Token — diese Liste ist ihr einziges Zugriffstor.`,"apiConfig.origins.adminNote":`Eine zusätzliche Ebene zum Bearer-Token-Auth. Fügen Sie den eigenen Origin dieses Dashboards ({{origin}}) hinzu, um sich nicht selbst auszusperren.`,"apiConfig.origins.placeholder":`https://example.com`,"apiConfig.origins.empty":`Keine Origins konfiguriert — derzeit sind alle Origins erlaubt.`,"apiConfig.origins.errorDuplicate":`Bereits in der Liste.`,"apiConfig.origins.errorSave":`Speichern fehlgeschlagen. Bitte versuchen Sie es erneut.`,"apiConfig.origins.remove":`Entfernen`,"apiConfig.tokens.heading":`Admin-API-Token`,"apiConfig.tokens.hint":`Bearer-Token für serverseitigen und CI/CD-Zugriff auf die Consenti-Admin-API. Übergeben als Authorization: Bearer <token>. Niemals in clientseitigem Code offenlegen — diese gewähren vollständigen Admin-Zugriff.`,"apiConfig.tokens.created":`Token erstellt — kopieren Sie ihn jetzt, er wird nicht erneut angezeigt.`,"apiConfig.tokens.placeholder":`Token-Name (z. B. CI-Deployment)`,"apiConfig.tokens.empty":`Noch keine Token.`,"apiConfig.tokens.errorName":`Name ist erforderlich`,"apiConfig.tokens.errorCreate":`Token konnte nicht erstellt werden`,"apiConfig.tokens.col.name":`Name`,"apiConfig.tokens.col.status":`Status`,"apiConfig.tokens.col.created":`Erstellt`,"apiConfig.tokens.status.active":`Aktiv`,"apiConfig.tokens.status.revoked":`Widerrufen`,"apiConfig.tokens.status.expired":`Expired`,"apiConfig.tokens.col.expires":`Expires`,"apiConfig.tokens.expiresLabel":`Expires (optional)`,"apiConfig.tokens.expiresNever":`Never`,"apiConfig.tokens.dialog.title":`Dieses API-Token widerrufen?`,"apiConfig.tokens.dialog.message":`Jede Anwendung, die dieses Token verwendet, verliert sofort den Zugriff.`,"apiConfig.tokens.reactivate":`Reaktivieren`,"apiConfig.tokens.deleteDialog.title":`Dieses API-Token endgültig löschen?`,"apiConfig.tokens.deleteDialog.message":`Dies entfernt den Token-Datensatz vollständig und kann nicht rückgängig gemacht werden. Eine Reaktivierung ist dann nicht mehr möglich.`,_section_settings:`── Einstellungen ─────────────────────────────────`,"settings.title":`Einstellungen`,"settings.account.heading":`Konto`,"settings.account.email":`E-Mail:`,"settings.account.roles":`Rollen:`,"settings.account.id":`ID:`,"settings.account.changePassword":`Passwort ändern`,"settings.export.heading":`Daten exportieren`,"settings.export.hint":`Alle Einwilligungsdatensätze oder Audit-Protokolle herunterladen.`,"settings.export.consentCsv":`Einwilligungen CSV`,"settings.export.consentXlsx":`Einwilligungen XLSX`,"settings.export.consentJson":`Einwilligungen JSON`,"settings.export.auditCsv":`Audit CSV`,"settings.about.heading":`Über`,"settings.about.text":`Consenti v0.1.0 — Open-Source Consent-Management-Plattform mit DSGVO-Konformität.`,"settings.about.license":`Apache-2.0-Lizenz.`,_section_changePassword:`── Passwort ändern ──────────────────────────────`,"changePassword.title":`Passwort ändern`,"changePassword.hint":`Wählen Sie ein starkes Passwort mit mindestens 12 Zeichen.`,"changePassword.success":`Passwort erfolgreich aktualisiert.`,"changePassword.newPassword":`Neues Passwort`,"changePassword.newPasswordPlaceholder":`Mind. 12 Zeichen`,"changePassword.confirmPassword":`Neues Passwort bestätigen`,"changePassword.confirmPasswordPlaceholder":`Neues Passwort wiederholen`,"changePassword.submit":`Passwort aktualisieren`,"changePassword.submitting":`Wird gespeichert…`,"changePassword.error.minLength":`Das Passwort muss mindestens 12 Zeichen lang sein.`,"changePassword.error.mismatch":`Die Passwörter stimmen nicht überein.`,"changePassword.error.failed":`Passwort konnte nicht aktualisiert werden.`,"login.showPassword":`Show password`,"login.hidePassword":`Hide password`,"users.allowedSites":`Allowed Sites`,"users.allowedSitesHint":`(leave empty to allow all)`,"users.edit.title":`Edit User: {{name}}`,"users.edit.error.save":`Failed to save changes.`,"users.edit.resetPassword":`Passwort zurücksetzen`,"users.edit.resetPasswordHint":`(leer lassen, um das aktuelle Passwort beizubehalten)`,"users.edit.newPassword":`Neues Passwort`,"users.edit.confirmNewPassword":`Neues Passwort bestätigen`,"users.edit.passwordTooShort":`Das Passwort muss mindestens 12 Zeichen lang sein`,"users.detail.title":`Benutzer`,"users.detail.allSites":`Alle Websites`,"profileEditor.import.imported":`Imported {{n}} locales: {{list}}`,"profileEditor.import.importedSingular":`Imported 1 locale: {{list}}`,"profileEditor.import.skipped":`Skipped {{n}} unrecognised locale keys: {{list}}`,"profileEditor.import.skippedSingular":`Skipped 1 unrecognised locale key: {{list}}`,"profileEditor.config.selectDefaultLocale":`Select default locale…`,"profileEditor.config.complianceGroup":`Compliance Group`,"profileEditor.config.complianceGroupNone":`None / Custom`,"profileEditor.config.customComplianceGroup":`Custom group name`,"profileEditor.config.customComplianceGroupPlaceholder":`e.g. internal-testing`,"profileEditor.config.customComplianceGroupHint":`Lower-kebab-case identifier. The widget's compliance.type config uses this to fetch the profile — required, since there's no other way to address it. Only one profile can be active per name at a time. No compliance-rule defaults are applied (those only exist for the built-in groups above).`,"profileEditor.config.gpcMode":`GPC Signal Mode`,"profileEditor.config.gpcModeDefault":`Default (inherit from compliance group)`,"profileEditor.config.gpcModePlaceholder":`Default`,"profileEditor.config.hidePoweredBy":`Hide "Powered by Consenti"`,"profileEditor.config.hidePoweredByHint":`Remove the branding link from the consent banner.`,"profileEditor.config.allowReceipt":`Allow consent receipt`,"profileEditor.config.allowReceiptHint":`Let visitors download a PDF receipt of their consent choices.`,"profileEditor.config.enhanceAccessibility":`Barrierefreiheit verbessern`,"profileEditor.config.enhanceAccessibilityHint":`Wendet WCAG 2.1 AA-Schaltflächengröße (min. 44px), sichtbare Fokusringe und Screenreader-Beschriftungen auf das Consent-Widget an.`,"profileEditor.config.showFooterMetadata":`Fußzeilen-Metadaten anzeigen`,"profileEditor.config.showFooterMetadataHint":`Zeigt einen Streifen in Banner und Modal mit Einwilligungs-ID, Datum, Profilversion und einem Link zu den Datenschutzeinstellungen.`,"profileEditor.conflict.title":`Active profile conflict`,"profileEditor.conflict.message":`Profile "{{name}}" is already active for this compliance group. Only one profile can be active per group.`,"profileEditor.conflict.deactivate":`Deactivate "{{name}}" and activate this one`,"profileEditor.conflict.saveInactive":`Save this profile as inactive`,"profileEditor.compliance.errors.heading":`Compliance errors — fix before continuing:`,"profileEditor.compliance.warnings.heading":`Compliance warnings:`,"profileEditor.compliance.warnings.acknowledge":`I acknowledge these warnings and wish to continue`,"profileEditor.compliance.preGrantOverridden":`Pre-grant was overridden for these parameters — this compliance group requires an explicit opt-in, so "Pre Grant" cannot stay enabled.`,"profileEditor.content.selectLocale":`Select locale…`,"profileEditor.content.addLocale":`+ Add locale`,"profileEditor.content.defaultLocaleLabel":`(default)`,_section_readability:`── Readability Warnings ─────────────────────────`,"readability.headingTooLong":`Heading is {{n}} characters — keep it under 80 for readability.`,"readability.avgSentenceLong":`Average sentence length is {{n}} words — aim for 25 or fewer.`,"readability.totalWordsLong":`Text is {{n}} words long — consider keeping banner copy under 150 words.`,"consentTemplates.editor.gpcMandatoryTitle":`Mandatory cookies are never auto-denied by GPC`,"consentTemplates.editor.loadDefaultsBtn":`Click here to load default cookies list`,"consentTemplates.editor.confirmUpdate.title":`Update template used by {{n}} profiles?`,"consentTemplates.editor.confirmUpdate.titleSingular":`Update template used by 1 profile?`,"consentTemplates.editor.confirmUpdate.message":`Profiles: {{names}}.
|
|
2
|
+
|
|
3
|
+
Saving will update cookie definitions for all profiles using this template. Continue?`,"uiTemplates.editor.loadDefaultsPrompt":`Start from scratch, or load a sensible default structure (buttons, categories, positions).`,"uiTemplates.editor.loadDefaultsBtn":`Load Defaults`,"uiTemplates.editor.confirmUpdate.title":`Update template used by {{n}} profiles?`,"uiTemplates.editor.confirmUpdate.titleSingular":`Update template used by 1 profile?`,"uiTemplates.editor.confirmUpdate.message":`Profiles: {{names}}.
|
|
4
|
+
|
|
5
|
+
Saving will apply UI changes to all profiles using this template. Continue?`,"uiTemplates.editor.wizard.stepOf":`Schritt {{step}} von {{total}}`,"uiTemplates.editor.wizard.next":`Weiter`,"uiTemplates.editor.wizard.back":`Zurück`,"uiTemplates.editor.stackButtonsOnBreakpoint":`Schaltflächen stapeln (px)`,"uiTemplates.editor.stackButtonsOnBreakpointHint":`Schaltflächen werden unterhalb dieser Breite vertikal gestapelt. 0 = deaktiviert. Standard: 576.`,"uiTemplates.editor.trapFocus":`Fokus einsperren`,"uiTemplates.editor.trapFocusHint":`Hält den Tastatur-Tab-Fokus im Consent-Container, solange dieser Banner oder Modal sichtbar ist.`,_section_howItWorks:`── So funktioniert Consenti ─────────────────────────`,"nav.howItWorks":`So funktioniert Consenti`,"howItWorks.title":`So funktioniert Consenti`,"howItWorks.intro":`Consenti ist eine Open-Source, DSGVO-konforme Consent Management Platform. Sie übernimmt die Erhebung, Speicherung und das Reporting von Cookie-Einwilligungen für Ihre Websites. Diese Anleitung führt Sie durch den Hauptworkflow und beschreibt jeden Bereich des Dashboards.`,"howItWorks.workflow.heading":`Kernworkflow`,"howItWorks.workflow.step1.title":`Cookie-Kategorien definieren`,"howItWorks.workflow.step1.desc":`Gehen Sie zu Consent-Banner → Cookie-Vorlagen und erstellen Sie eine Vorlage mit allen Cookie-Kategorien Ihrer Website (z. B. Analyse, Marketing). Legen Sie Rechtsgrundlage und Ablaufzeit für jede Kategorie fest.`,"howItWorks.workflow.step2.title":`Consent-Oberfläche gestalten`,"howItWorks.workflow.step2.desc":`Gehen Sie zu Consent-Banner → UI-Vorlagen und konfigurieren Sie das visuelle Layout Ihres Banners und des Einstellungsdialogs — Schaltflächenbeschriftungen, Farben, Layout und Kategoriedarstellung.`,"howItWorks.workflow.step3.title":`Consent-Profil erstellen`,"howItWorks.workflow.step3.desc":`Gehen Sie zu Consent-Banner → Profile und kombinieren Sie eine Cookie-Vorlage mit einer UI-Vorlage. Fügen Sie übersetzte Texte für jede unterstützte Sprache hinzu, aktivieren Sie die erforderlichen Vorschriften (DSGVO, CCPA, DPDPA) und veröffentlichen Sie.`,"howItWorks.workflow.step4.title":`Widget einbinden`,"howItWorks.workflow.step4.desc":`Kopieren Sie Ihren API-Schlüssel aus API → Konfiguration und fügen Sie das Consenti-Script-Tag zu Ihrer Website hinzu. Das Widget ruft Ihr veröffentlichtes Profil ab und zeigt das Consent-Banner automatisch an.`,"howItWorks.workflow.step5.title":`Überwachen und prüfen`,"howItWorks.workflow.step5.desc":`Nutzen Sie die Seiten Einwilligungen und Besucher, um aktuelle Consent-Datensätze einzusehen. Verwenden Sie das Audit-Log für eine manipulationssichere Historie aller Verwaltungsaktionen als Compliance-Nachweis.`,"howItWorks.features.heading":`Dashboard-Funktionen`,"howItWorks.features.dashboard.title":`Dashboard`,"howItWorks.features.dashboard.desc":`Die Startseite zeigt Echtzeit-KPIs — Gesamteinwilligungen, Akzeptanzrate, Ablehnungsrate und ein Zeitreihendiagramm. Nutzen Sie es, um Trends zu erkennen und die Auswirkungen von Banner-Änderungen zu bewerten.`,"howItWorks.features.reports.title":`Berichte`,"howItWorks.features.reports.desc":`Einwilligungsverlauf über einen Datumsbereich sowie Aufschlüsselungen nach Kategorie und Sprache (erteilt/abgelehnt/widersprochen). Erfordert die Berechtigung stats:view.`,"howItWorks.features.consentTemplates.title":`Cookie-Vorlagen`,"howItWorks.features.consentTemplates.desc":`Wiederverwendbare Listen von Cookie-Kategorien. Jede Kategorie hat eine ID, eine Rechtsgrundlage (Einwilligung, berechtigtes Interesse, notwendig), GPC-Signalverarbeitung, Ablaufzeit und optionale TCF-Anbieter- oder CPRA-Kategorie-Zuordnung.`,"howItWorks.features.uiTemplates.title":`UI-Vorlagen`,"howItWorks.features.uiTemplates.desc":`Steuert das Erscheinungsbild des Consent-Banners, des GPC-Hinweises und des Einstellungsdialogs. Konfigurieren Sie Schaltflächensätze, Überschriften-Tags, Overlay-Transparenz und Kategoriereihenfolge.`,"howItWorks.features.profiles.title":`Profile`,"howItWorks.features.profiles.desc":`Ein Profil ist die einsetzbare Einheit. Es verbindet eine Cookie-Vorlage mit einer UI-Vorlage, speichert mehrsprachige Inhalte und verfolgt eine Versionsnummer für Rollbacks. Pro Domain kann nur ein Profil aktiv sein.`,"howItWorks.features.consents.title":`Einwilligungen`,"howItWorks.features.consents.desc":`Ein durchsuchbares, filterbares Protokoll aller von Besuchern eingereichten Einwilligungsdatensätze. Jeder Datensatz zeigt Besucher-ID, verwendetes Profil, Sprache, GPC-Signal, Einwilligungsentscheidungen und Zeitstempel.`,"howItWorks.features.visitors.title":`Besucher`,"howItWorks.features.visitors.desc":`Eine Liste eindeutiger Besucherkennungen auf Ihren Websites mit Land, Erstbesuchdatum und letztem Besuchdatum. Besucher-IDs sind pseudonyme UUIDs ohne gespeicherte IP-Adressen.`,"howItWorks.features.users.title":`Benutzer`,"howItWorks.features.users.desc":`Verwalten Sie die Admin-Konten, die sich in dieses Dashboard einloggen können. Weisen Sie Rollen zu, aktivieren oder deaktivieren Sie Konten und beschränken Sie Benutzer auf bestimmte Sites in Multi-Tenant-Deployments.`,"howItWorks.features.roles.title":`Rollen`,"howItWorks.features.roles.desc":`Definieren Sie benannte Berechtigungssätze (z. B. Betrachter, Bearbeiter, Admin). Weisen Sie granulare Berechtigungen wie consent:view, profile:edit oder audit:view jeder Rolle zu und ordnen Sie Rollen dann Benutzern zu.`,"howItWorks.features.vendors.title":`Anbieter`,"howItWorks.features.vendors.desc":`Durchsuchen Sie die IAB Global Vendor List (GVL), um TCF-Anbieter-IDs, deklarierte Zwecke und Zwecke mit berechtigtem Interesse nachzuschlagen. Verwenden Sie diese IDs beim Konfigurieren von Cookie-Kategorien in Ihren Vorlagen.`,"howItWorks.features.audit.title":`Audit-Log`,"howItWorks.features.audit.desc":`Ein nur-anhängendes, manipulationssicheres Protokoll jeder Verwaltungsaktion — Profilspeicherungen, Benutzeränderungen, API-Schlüsselerstellung und mehr. Erforderlich für die DSGVO-Rechenschaftspflicht.`,"howItWorks.features.api.title":`API & Schlüssel`,"howItWorks.features.api.desc":`Erstellen und widerrufen Sie API-Token, konfigurieren Sie erlaubte CORS-Ursprünge für die öffentliche Consent-API und durchsuchen Sie die interaktive OpenAPI-Referenz, um jeden Endpunkt zu verstehen.`,"howItWorks.features.settings.title":`Einstellungen`,"howItWorks.features.settings.desc":`Sehen Sie Ihre Kontodaten ein, ändern Sie Ihr Passwort und exportieren Sie Einwilligungs- oder Audit-Daten als CSV, XLSX oder JSON für Offline-Analysen oder behördliche Einreichungen.`,"howItWorks.docs.heading":`Vollständige Dokumentation`,"howItWorks.docs.text":`Detaillierte Anleitungen, Konfigurationsreferenzen, Integrationsbeispiele und ein Live-Playground sind auf der Consenti-Dokumentationswebsite verfügbar.`,"howItWorks.docs.link":`consenti.dev/docs öffnen →`,"howItWorks.consentFlow.heading":`Einwilligungsablauf (End-to-End)`,"howItWorks.consentFlow.step1.title":`Widget initialisiert`,"howItWorks.consentFlow.step1.desc":`Das Consenti-Skript wird im Browser des Besuchers geladen und liest Ihre Konfiguration (API-Schlüssel, compliance.type). Existiert bereits ein gültiges, nicht abgelaufenes Einwilligungs-Cookie, beendet das Widget sich lautlos — kein Banner wird angezeigt.`,"howItWorks.consentFlow.step2.title":`Jurisdiktion erkannt`,"howItWorks.consentFlow.step2.desc":`Wenn compliance.type auf 'auto' gesetzt ist, ruft das Widget GET /resolve-profile auf und übergibt Zeitzone, Accept-Language-Header und IP-Adresse des Besuchers. Der Server ordnet diese Signale anhand der integrierten Länder-zu-Compliance-Zuordnung einem complianceGroup zu.`,"howItWorks.consentFlow.step3.title":`Profil abgerufen`,"howItWorks.consentFlow.step3.desc":`Das Widget ruft das aktive Profil für die ermittelte complianceGroup und die Sprache des Besuchers ab. Die Antwort ist ein flaches JSON-Objekt mit dem gesamten Bannertext, Cookie-Kategorien, UI-Einstellungen und Regulierungsflags — bereit zur Darstellung.`,"howItWorks.consentFlow.step4.title":`Banner gerendert`,"howItWorks.consentFlow.step4.desc":`Das Widget rendert das Banner oder den Einstellungsdialog anhand der UI-Vorlage des Profils. Pflicht-Kategorien sind vorausgewählt und können nicht abgewählt werden. Optionale Kategorien zeigen ihre Rechtsgrundlage (Einwilligung oder berechtigtes Interesse).`,"howItWorks.consentFlow.step5.title":`Einwilligung übermittelt`,"howItWorks.consentFlow.step5.desc":`Wenn der Besucher handelt (Alle akzeptieren, Alle ablehnen oder Einstellungen speichern), sendet das Widget einen POST-Request mit dem Einwilligungsdatensatz an die API: Besucher-ID, Profilversion, Status je Kategorie (gewährt/verweigert/widersprochen), GPC-Signal, Zeitstempel und Sprache.`,"howItWorks.consentFlow.step6.title":`Gespeichert und geprüft`,"howItWorks.consentFlow.step6.desc":`Die API validiert die Nutzlast, speichert den Einwilligungsdatensatz und fügt einen Eintrag zum unveränderlichen Audit-Log hinzu. Der Besucherdatensatz wird mit Land und Erst-/Letztbesuch aktualisiert. Das Widget schreibt das Einwilligungs-Cookie, damit zukünftige Besuche das Banner überspringen.`,"howItWorks.profileResolution.heading":`Profilauflösungsalgorithmus`,"howItWorks.profileResolution.intro":`Wenn ein Besucher ankommt, löst Consenti in fünf Schritten auf, welches Einwilligungsprofil angezeigt werden soll.`,"howItWorks.profileResolution.step1.title":`Geo-Signale gesammelt`,"howItWorks.profileResolution.step1.desc":`Das Widget sendet drei Signale an GET /resolve-profile: die Browser-Zeitzone (Intl.DateTimeFormat), den Accept-Language-Header (oder lang-Query-Parameter) und die serverseitige IP-Adresse.`,"howItWorks.profileResolution.step2.title":`Land ermittelt`,"howItWorks.profileResolution.step2.desc":`Der Server versucht der Reihe nach: (1) IP-Geolokalisierung über den konfigurierten geoDataProvider; (2) Zeitzone-zu-Land-Tabelle; (3) Sprachtag-zu-Land-Heuristik (z. B. 'de' → DE). Der erste nicht-leere Treffer gewinnt.`,"howItWorks.profileResolution.step3.title":`Compliance-Gruppe zugeordnet`,"howItWorks.profileResolution.step3.desc":`Der ISO-3166-1-alpha-2-Ländercode (plus optionaler Regions-/Bundesstaatscode) wird in der eingebetteten LAND-zu-COMPLIANCE-Zuordnung nachgeschlagen. Eine Region-Überschreibung (z. B. US/CA → optOutCalifornia) hat Vorrang vor dem Länder-Standard.`,"howItWorks.profileResolution.step4.title":`Aktives Profil gefunden`,"howItWorks.profileResolution.step4.desc":`Das System fragt die Datenbank nach dem aktiven Profil ab, dessen complianceGroup mit der aufgelösten Gruppe übereinstimmt. Pro complianceGroup kann nur ein Profil aktiv sein. Falls keines existiert, wird 404 zurückgegeben und das Widget kann auf ein profileOverride zurückfallen.`,"howItWorks.profileResolution.step5.title":`Sprache aufgelöst`,"howItWorks.profileResolution.step5.desc":`Die beste Sprache wird gewählt durch: (1) exakte Übereinstimmung mit der angeforderten Sprache des Widgets; (2) Sprachpräfix-Übereinstimmung (z. B. 'de-AT' → 'de'); (3) vom Provider aufgelöste Sprache; (4) defaultLocale des Profils. Das aufgelöste JSON wird aus einer statischen Datei (veröffentlichte Profile) oder direkt aus der Datenbank (Vorschau) geliefert.`,"howItWorks.complianceGroups.heading":`Compliance-Gruppen`,"howItWorks.complianceGroups.intro":`Jedes Land der Welt ist einer von acht Compliance-Gruppen zugeordnet. Jede Gruppe legt fest, welches Einwilligungsmodell das Widget einhalten muss.`,"howItWorks.complianceGroups.optIn.title":`optIn — DSGVO / ePrivacy Striktes Opt-In`,"howItWorks.complianceGroups.optIn.desc":`Vor dem Setzen nicht notwendiger Cookies ist eine vorherige Einwilligung erforderlich. Besucher müssen die Möglichkeit haben, abzulehnen; der Widerruf muss so einfach sein wie die Einwilligung; granulare Kategorieauswahl ist Pflicht.`,"howItWorks.complianceGroups.optIn.laws":`DSGVO, ePrivacy-Richtlinie, UK DSGVO, PECR, revDSG (CH), KVKK (TR), PDPA (TH) und weitere strenge nationale Gesetze`,"howItWorks.complianceGroups.optIn.countries":`Alle EU-Mitgliedstaaten, UK, Schweiz, Türkei, Thailand, Island, Liechtenstein, Norwegen, Guernsey, Gibraltar und weitere Länder mit strikten ePrivacy-Regeln`,"howItWorks.complianceGroups.optInDPDPA.title":`optInDPDPA — Indien DPDPA`,"howItWorks.complianceGroups.optInDPDPA.desc":`Indiens Digital Personal Data Protection Act 2023 erfordert eine ausdrückliche Opt-in-Einwilligung. Zusätzliche Pflichten: Benennung eines Data Fiduciary, dedizierte Einwilligungsmitteilung und Unterstützung der Rechte von Data Principals. Setzen Sie das Feld dpdpaDataFiduciary in Ihrem Profil.`,"howItWorks.complianceGroups.optInDPDPA.laws":`Digital Personal Data Protection Act 2023 (DPDPA)`,"howItWorks.complianceGroups.optInDPDPA.countries":`Indien (IN)`,"howItWorks.complianceGroups.optInChina.title":`optInChina — China Multi-Gesetzes-Rahmen`,"howItWorks.complianceGroups.optInChina.desc":`Chinas Datenschutz erfordert ausdrückliche Einwilligung gemäß PIPL, ergänzt durch Pflichten aus dem Datensicherheitsgesetz (DSL) und dem Cybersicherheitsgesetz (CSL). Weitere Anforderungen gelten für grenzüberschreitende Datenübermittlungen und Datenklassifizierung.`,"howItWorks.complianceGroups.optInChina.laws":`Datenschutzgesetz für personenbezogene Daten (PIPL), Datensicherheitsgesetz (DSL), Cybersicherheitsgesetz (CSL)`,"howItWorks.complianceGroups.optInChina.countries":`China (CN)`,"howItWorks.complianceGroups.optOutCalifornia.title":`optOutCalifornia — Kalifornien CCPA / CPRA`,"howItWorks.complianceGroups.optOutCalifornia.desc":`Daten dürfen standardmäßig erhoben werden, aber Verbraucher müssen eine klare Opt-out-Möglichkeit erhalten. Das Global Privacy Control (GPC)-Browsersignal muss als gültiger Opt-out anerkannt werden.`,"howItWorks.complianceGroups.optOutCalifornia.laws":`CCPA, CPRA (California Consumer Privacy Act / California Privacy Rights Act)`,"howItWorks.complianceGroups.optOutCalifornia.countries":`USA — Kalifornien (US/CA)`,"howItWorks.complianceGroups.optOutUSState.title":`optOutUSState — Andere US-Bundesstaaten`,"howItWorks.complianceGroups.optOutUSState.desc":`Nach dem Vorbild des kalifornischen Opt-out-Rahmens. Verbraucher können der Nutzung für zielgerichtete Werbung und dem Verkauf personenbezogener Daten widersprechen. In einigen Bundesstaaten muss das GPC-Signal anerkannt werden.`,"howItWorks.complianceGroups.optOutUSState.laws":`CDPA (VA), CPA (CO), CTDPA (CT), UCPA (UT), TDPSA (TX), DPDPA (DE), NJDPA (NJ), OCPA (OR), MCDPA (MN), MODPA (MD), KCDPA (KY), TIPA (TN), NDPA (NE), ICDPA (IA/IN), MCDPA (MT), NHPA (NH), RIDTPA (RI)`,"howItWorks.complianceGroups.optOutUSState.countries":`USA — VA, CO, CT, UT, TX, DE, NJ, OR, MN, MD, KY, TN, NE, IA, IN, MT, NH, RI`,"howItWorks.complianceGroups.generalPrivacyConsent.title":`generalPrivacyConsent — Allgemeines Datenschutz-Recht`,"howItWorks.complianceGroups.generalPrivacyConsent.desc":`Ein allgemeines Datenschutzgesetz gilt, schreibt aber kein striktes PECR-/ePrivacy-artiges Cookie-Banner vor. Best Practice ist eine Einwilligungsmöglichkeit für nicht notwendige Cookies und eine klare Datenschutzmitteilung; die rechtliche Anforderung liegt jedoch unter dem DSGVO-Opt-in-Standard.`,"howItWorks.complianceGroups.generalPrivacyConsent.laws":`PIPEDA / Law 25 (CA), LGPD (BR — hybridBrazil verwenden), POPIA (ZA), APPI (JP), Privacy Act (AU/NZ), PDPA-SG, PDPA-MY, PIPA-KR, PDPD-VN, DPA-PH, PDP-ID und viele weitere`,"howItWorks.complianceGroups.generalPrivacyConsent.countries":`Kanada, Australien, Neuseeland, Japan, Südkorea, Singapur, Malaysia, Südafrika sowie viele lateinamerikanische, afrikanische und asiatische Länder`,"howItWorks.complianceGroups.hybridBrazil.title":`hybridBrazil — Brasilien LGPD`,"howItWorks.complianceGroups.hybridBrazil.desc":`Brasiliens LGPD ähnelt der DSGVO, erlaubt jedoch je nach Bewertung des Verantwortlichen für Analyse- und Werbecookies berechtigte Interessen als Rechtsgrundlage. Das Banner wird angezeigt, aber die kategorienspezifische Rechtsgrundlage kann differenzierter sein als beim strikten DSGVO-Opt-in.`,"howItWorks.complianceGroups.hybridBrazil.laws":`Lei Geral de Proteção de Dados (LGPD)`,"howItWorks.complianceGroups.hybridBrazil.countries":`Brasilien (BR)`,"howItWorks.complianceGroups.noticeOnly.title":`noticeOnly — Nur Datenschutzhinweis`,"howItWorks.complianceGroups.noticeOnly.desc":`Es gilt keine spezielle Cookie-Regelung, oder das geltende Regime erfordert lediglich einen Datenschutzhinweis — kein Opt-in- oder Opt-out-Banner. Ein Consent-Banner wird aus Transparenzgründen empfohlen, ist aber nicht gesetzlich vorgeschrieben.`,"howItWorks.complianceGroups.noticeOnly.laws":`Variiert — Länder ohne dedizierte Cookie-/ePrivacy-Regelung`,"howItWorks.complianceGroups.noticeOnly.countries":`Viele Länder in Afrika, Zentralasien, der Karibik und dem Pazifikraum, die nicht durch die oben genannten Gruppen abgedeckt sind`,"howItWorks.enums.heading":`Referenz wichtiger Werte`,"howItWorks.enums.legalBasis.heading":`legalBasis (Cookie-Kategorie)`,"howItWorks.enums.legalBasis.mandatory":`mandatory — Kategorie ist unabhängig von der Einwilligung immer aktiv (z. B. Sitzung, Authentifizierung). Wird nicht durch GPC oder Opt-out-Signale blockiert.`,"howItWorks.enums.legalBasis.consent":`consent — Erfordert ausdrückliches Opt-in des Besuchers. Standardmäßig blockiert; in allen Opt-in-Jurisdiktionen durch GPC blockiert.`,"howItWorks.enums.legalBasis.legitimateInterest":`legitimate_interest — Stützt sich auf das berechtigte Interesse des Verantwortlichen. Standardmäßig aktiv; Besucher kann widersprechen. In einigen Jurisdiktionen (EU, UK) durch GPC soft-blockiert.`,"howItWorks.enums.consentStatus.heading":`ConsentStatus (je Kategorie-Datensatz)`,"howItWorks.enums.consentStatus.granted":`granted — Besucher hat ausdrücklich eingewilligt.`,"howItWorks.enums.consentStatus.denied":`denied — Besucher hat die Einwilligung ausdrücklich verweigert.`,"howItWorks.enums.consentStatus.objected":`objected — Besucher hat einer Kategorie mit berechtigtem Interesse widersprochen (Opt-out, keine Einwilligungsverweigerung).`,"howItWorks.enums.geoProvider.heading":`geoDataProvider-Optionen`,"howItWorks.enums.geoProvider.default":`default / timezone — Nutzt die Browser-Zeitzone (Intl.DateTimeFormat) zur Länderermittlung; Rückfall auf Accept-Language. Keine zusätzliche Abhängigkeit.`,"howItWorks.enums.geoProvider.language":`language — Leitet das Land nur aus dem Accept-Language-Header ab (z. B. 'de' → DE, 'pt' → BR). Schnell, aber ungenau.`,"howItWorks.enums.geoProvider.geoip":`geoip — Verwendet das npm-Paket geoip-lite mit einer gebündelten MaxMind-Lite-Datenbank. Erforderlich: npm install geoip-lite.`,"howItWorks.enums.geoProvider.hostedGeoipLite":`hosted-geoip-lite — Ruft ipinfo.io über integriertes HTTPS auf (keine zusätzliche Abhängigkeit). Fügt ~50–200 ms je Erstbesuch hinzu.`,"howItWorks.enums.geoProvider.maxmind":`maxmind — Verwendet das npm-Paket maxmind mit einer lokalen GeoLite2-City.mmdb-Datei. Am genauesten. Erfordert MAXMIND_DB_PATH-Umgebungsvariable und npm install maxmind.`,"howItWorks.enums.geoProvider.custom":`Benutzerdefinierte Funktion — Übergeben Sie eine CountryResolverFn an compliance.geoDataProvider, um einen beliebigen Geo-IP- oder CDN-Anbieter zu integrieren.`,"consentTemplates.editor.categories":`Consent Categories`,"consentTemplates.editor.addCategory":`+ Add Category`,"consentTemplates.editor.noCategories":`No categories defined yet. Add one above.`,"consentTemplates.editor.error.noCategories":`At least one category is required.`,"consentTemplates.editor.error.catIds":`All categories must have an ID.`,"consentTemplates.editor.error.uniqueCatIds":`Category IDs must be unique.`,"consentTemplates.editor.error.catCookies":`Every category must contain at least one parameter.`,"consentTemplates.editor.error.uncategorized":`Parameter "{{id}}" is not assigned to any category.`,"consentTemplates.editor.error.multiCategory":`Parameter "{{id}}" is assigned to more than one category.`,"consentTemplates.editor.error.purposeLegalBasisMismatch":`Parameter "{{id}}" has a non-necessary purpose but is assigned to a Mandatory category — this grants a tracking parameter with no consent gate.`,"consentTemplates.editor.warning.necessaryNotMandatory":`Parameter "{{id}}" has purpose "necessary" but is assigned to a non-Mandatory category — this may break site functionality since it can be denied.`,"cookieTemplates.editor.trackerDetected":`Erkannt: {{vendor}}`,"consentTemplates.col.preGrantShort":`Pre Grant`,"profileEditor.config.expiryDays":`Re-consent Interval (days)`,"profileEditor.config.expiryDaysHint":`How many days until stored consent expires and the visitor is asked again.`,"profileEditor.error.expiryDays":`Expiry (days) must be at least 1.`,"profileEditor.error.customComplianceGroupRequired":`Enter a custom group name, or pick a compliance group above.`,"profileEditor.table.preGrant":`Pre Grant`,"profileEditor.table.preGrantLocked":`Already effectively pre-granted — only editable when the category's legal basis is Consent`,"profileEditor.content.receiptHeading":`Consent Receipt Checkbox`,"profileEditor.content.receiptHint":`Shown in the preference modal when "Allow consent receipt" is enabled in Step 1.`,"profileEditor.content.receiptLabel":`Checkbox label`,"profileEditor.content.receiptDescription":`Description`,"profileEditor.error.missingRequiredContent":`Für die Sprache „{{locale}}“ fehlen erforderliche Inhalte — prüfen Sie den markierten Tab.`,"profileEditor.nudge.title":`Optionales Feld leer gelassen`,"profileEditor.nudge.headingBlank":`Sie haben die Überschrift leer gelassen. Besucher sehen das Banner ohne Titel.`,"profileEditor.nudge.introBlank":`Sie haben den Einleitungstext leer gelassen. Besucher sehen das Einstellungsfenster ohne Einleitung.`,"profileEditor.nudge.addNow":`Jetzt hinzufügen`,"profileEditor.nudge.ignore":`Ignorieren`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){let n;return function(...r){n!==void 0&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}}export{e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={"opt-out-strict":{label:`Opt-out Strict (CPRA / California)`,description:`California CPRA: opt-out with sale/sharing/sensitive categories required. GPC must be honored. Stricter than general US state laws.`,compliances:[`cpra`],defaultGpc:`honor`,gpcAutoHonor:!0,allowsLegitimateInterest:!1,allowsTcf:!1,requiresCpraCategory:!0,requiresDpdpaDisclosure:!1},"opt-out":{label:`Opt-out (US State Laws)`,description:`US state privacy laws. Collect first, allow opt-out of sale/share. Covers CCPA and all state-level equivalents.`,compliances:[`ccpa`,`vcdpa`,`cpa-co`,`ctdpa`,`ucpa`,`icdpa-ia`,`icdpa-in`,`tipa`,`mcdpa-mt`,`mcdpa-mn`,`ocpa`,`tdpsa`,`dpdpa-de`,`njdpa`,`nhpa`,`ndpa-ne`,`modpa`,`kcdpa`,`ridtpa`],defaultGpc:`honor`,gpcAutoHonor:!0,allowsLegitimateInterest:!1,allowsTcf:!1,requiresCpraCategory:!1,requiresDpdpaDisclosure:!1},"notice-only":{label:`Notice Only`,description:`A privacy notice is generally sufficient. No dedicated cookie banner law is encoded for this jurisdiction.`,compliances:[`privacy-fj`,`privacy-pg`],defaultGpc:`ignore`,gpcAutoHonor:!1,allowsLegitimateInterest:!0,allowsTcf:!1,requiresCpraCategory:!1,requiresDpdpaDisclosure:!1},"opt-in":{label:`Standard Opt-in (GDPR)`,description:`GDPR / ePrivacy style: prior consent required before non-essential cookies. Granular consent, easy reject, easy withdrawal.`,compliances:[`gdpr`,`eprivacy`,`uk-gdpr`,`pecr`,`revfadp`,`kvkk`,`pdpa-th`,`pdpl-sa`,`uae-pdpl`,`difc-dpl`,`adgm-dpr`,`qpdl-qa`,`pdpl-bh`,`pdpl-om`,`law25`],defaultGpc:`ignore`,gpcAutoHonor:!1,allowsLegitimateInterest:!0,allowsTcf:!0,requiresCpraCategory:!1,requiresDpdpaDisclosure:!1},"opt-in-dpdpa":{label:`Opt-in (India DPDPA)`,description:`India's Digital Personal Data Protection Act. Opt-in consent with data fiduciary disclosure. No legitimate interest basis.`,compliances:[`dpdpa`],defaultGpc:`ignore`,gpcAutoHonor:!1,allowsLegitimateInterest:!1,allowsTcf:!1,requiresCpraCategory:!1,requiresDpdpaDisclosure:!0},"opt-in-china":{label:`Opt-in (China PIPL / DSL)`,description:`China PIPL + DSL + CSL: strict opt-in with purpose specification, data minimisation, and cross-border transfer controls.`,compliances:[`pipl`,`dsl-cn`,`csl-cn`],defaultGpc:`ignore`,gpcAutoHonor:!1,allowsLegitimateInterest:!1,allowsTcf:!1,requiresCpraCategory:!1,requiresDpdpaDisclosure:!1},"opt-in-brazil":{label:`Opt-in (Brazil LGPD)`,description:`Brazil LGPD: opt-in consent required. Legitimate interest is a valid basis. Analytics and advertising may differ in treatment.`,compliances:[`lgpd`],defaultGpc:`ignore`,gpcAutoHonor:!1,allowsLegitimateInterest:!0,allowsTcf:!1,requiresCpraCategory:!1,requiresDpdpaDisclosure:!1},"general-privacy-consent":{label:`General Privacy Consent`,description:`Privacy notice or consent rules exist but the jurisdiction does not have a GDPR/PECR-style strict cookie banner law. Documenting legal basis is best practice.`,compliances:`pipeda.popia.appi.pipa-kr.pdpa-sg.pdpa-my.dpa-ph.pdp-id.pdpd-vn.privacy-au.privacy-nz.pdpl-hk.pdpa-mo.pdpl-tw.privacy-bn.privacy-lk.privacy-np.privacy-kw.privacy-il.ndpa-ng.dpa-ke.dpa-gh.dpa-ug.dpa-rw.dpa-mu.dpa-bw.dpa-zm.dpa-zw.dpa-eg.dpa-ma.dpa-tn.dpa-dz.lfpdppp.lpdp-ar.lpdp-pe.law1581-co.law18331-uy.law19628-cl.lopdp-ec.lpdp-cr.data-protection-pa.data-protection-do`.split(`.`),defaultGpc:`ignore`,gpcAutoHonor:!1,allowsLegitimateInterest:!0,allowsTcf:!1,requiresCpraCategory:!1,requiresDpdpaDisclosure:!1}},t=[{value:`ignore`,label:`Ignore`,description:`Do not check or respond to the GPC browser signal.`},{value:`honor`,label:`Honor`,description:`Respect GPC as a valid opt-out signal. Show GPC variant banner once.`},{value:`strict`,label:`Strict`,description:`Silently deny all non-mandatory cookies when GPC is detected. No banner shown.`}],n=[`necessary`,`functional`,`preferences`,`analytics`,`marketing`],r={necessary:{legalBasis:`mandatory`,listenGpc:!1},functional:{legalBasis:`legitimate_interest`,listenGpc:!1},preferences:{legalBasis:`legitimate_interest`,listenGpc:!1},analytics:{legalBasis:`consent`,listenGpc:!0},marketing:{legalBasis:`consent`,listenGpc:!0,cpraCategory:`sharing`}},i={security_storage:`necessary`,functionality_storage:`functional`,personalization_storage:`preferences`,analytics_storage:`analytics`,ad_storage:`marketing`,ad_user_data:`marketing`,ad_personalization:`marketing`};function a(e){let t=new Map;for(let n of Object.values(e))for(let e of n.cookies)t.set(e,n);return t}function o(e,t){return t.get(e)?.legalBasis??`consent`}function s(e,t){return o(e,t)===`mandatory`}var c={version:`2026-07`,countries:{AT:{name:`Austria`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Austria (GDPR)`,locales:[`de-AT`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Vienna`]},BE:{name:`Belgium`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Belgium (GDPR)`,locales:[`nl-BE`,`fr-BE`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Brussels`]},BG:{name:`Bulgaria`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Bulgaria (GDPR)`,locales:[`bg-BG`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Sofia`]},HR:{name:`Croatia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Croatia (GDPR)`,locales:[`hr-HR`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Zagreb`]},CY:{name:`Cyprus`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Cyprus (GDPR)`,locales:[`el-CY`],compliance:[`gdpr`,`eprivacy`],timezones:[`Asia/Nicosia`]},CZ:{name:`Czechia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Czechia (GDPR)`,locales:[`cs-CZ`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Prague`]},DK:{name:`Denmark`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Denmark (GDPR)`,locales:[`da-DK`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Copenhagen`]},EE:{name:`Estonia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Estonia (GDPR)`,locales:[`et-EE`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Tallinn`]},FI:{name:`Finland`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Finland (GDPR)`,locales:[`fi-FI`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Helsinki`]},FR:{name:`France`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`France (GDPR)`,locales:[`fr-FR`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Paris`]},DE:{name:`Germany`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Germany (GDPR)`,locales:[`de-DE`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Berlin`]},GR:{name:`Greece`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Greece (GDPR)`,locales:[`el-GR`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Athens`]},HU:{name:`Hungary`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Hungary (GDPR)`,locales:[`hu-HU`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Budapest`]},IE:{name:`Ireland`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Ireland (GDPR)`,locales:[`en`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Dublin`]},IT:{name:`Italy`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Italy (GDPR)`,locales:[`it-IT`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Rome`]},LV:{name:`Latvia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Latvia (GDPR)`,locales:[`lv-LV`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Riga`]},LT:{name:`Lithuania`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Lithuania (GDPR)`,locales:[`lt-LT`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Vilnius`]},LU:{name:`Luxembourg`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Luxembourg (GDPR)`,locales:[`fr-LU`,`de-LU`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Luxembourg`]},MT:{name:`Malta`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Malta (GDPR)`,locales:[`mt-MT`,`en`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Malta`]},NL:{name:`Netherlands`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Netherlands (GDPR)`,locales:[`nl-NL`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Amsterdam`]},PL:{name:`Poland`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Poland (GDPR)`,locales:[`pl-PL`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Warsaw`]},PT:{name:`Portugal`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Portugal (GDPR)`,locales:[`pt-PT`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Lisbon`,`Atlantic/Madeira`,`Atlantic/Azores`]},RO:{name:`Romania`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Romania (GDPR)`,locales:[`ro-RO`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Bucharest`]},SK:{name:`Slovakia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Slovakia (GDPR)`,locales:[`sk-SK`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Bratislava`]},SI:{name:`Slovenia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Slovenia (GDPR)`,locales:[`sl-SI`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Ljubljana`]},ES:{name:`Spain`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Spain (GDPR)`,locales:[`es-ES`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Madrid`,`Africa/Ceuta`,`Atlantic/Canary`]},SE:{name:`Sweden`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Sweden (GDPR)`,locales:[`sv-SE`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Stockholm`]},IS:{name:`Iceland`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Iceland (GDPR via EEA)`,locales:[`is-IS`],compliance:[`gdpr`,`eprivacy`],timezones:[`Atlantic/Reykjavik`]},LI:{name:`Liechtenstein`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Liechtenstein (GDPR via EEA)`,locales:[`de-LI`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Vaduz`]},NO:{name:`Norway`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Norway (GDPR via EEA)`,locales:[`nb-NO`],compliance:[`gdpr`,`eprivacy`],timezones:[`Europe/Oslo`,`Arctic/Longyearbyen`]},AD:{name:`Andorra`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Andorra (GDPR-aligned)`,locales:[`ca-AD`],compliance:[`gdpr`],timezones:[`Europe/Andorra`]},AL:{name:`Albania`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Albania (GDPR-aligned)`,locales:[`sq-AL`],compliance:[`gdpr`],timezones:[`Europe/Tirane`]},BA:{name:`Bosnia and Herzegovina`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Bosnia and Herzegovina (GDPR-aligned)`,locales:[`bs-BA`,`sr-Latn-BA`],compliance:[`gdpr`],timezones:[`Europe/Sarajevo`]},GG:{name:`Guernsey`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Guernsey (DPA based on GDPR)`,locales:[`en`],compliance:[`gdpr`],timezones:[`Europe/Guernsey`]},GI:{name:`Gibraltar`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Gibraltar (DPA based on UK GDPR)`,locales:[`en`],compliance:[`uk-gdpr`],timezones:[`Europe/Gibraltar`]},GL:{name:`Greenland`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Greenland (Danish GDPR implementation)`,locales:[`da-GL`],compliance:[`gdpr`],timezones:[`America/Nuuk`,`America/Danmarkshavn`,`America/Scoresbysund`,`America/Thule`]},MC:{name:`Monaco`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Monaco (GDPR-aligned)`,locales:[`fr-MC`],compliance:[`gdpr`],timezones:[`Europe/Monaco`]},ME:{name:`Montenegro`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Montenegro (GDPR-aligned)`,locales:[`sr-Latn-ME`],compliance:[`gdpr`],timezones:[`Europe/Podgorica`]},MK:{name:`North Macedonia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`North Macedonia (GDPR-aligned)`,locales:[`mk-MK`],compliance:[`gdpr`],timezones:[`Europe/Skopje`]},RS:{name:`Serbia`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Serbia (GDPR-aligned)`,locales:[`sr-RS`],compliance:[`gdpr`],timezones:[`Europe/Belgrade`]},SM:{name:`San Marino`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`San Marino (GDPR-aligned)`,locales:[`it-SM`],compliance:[`gdpr`],timezones:[`Europe/San_Marino`]},TR:{name:`Türkiye`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Türkiye (KVKK)`,locales:[`tr-TR`],compliance:[`kvkk`],timezones:[`Europe/Istanbul`]},CA:{name:`Canada`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Canada (PIPEDA / Law 25)`,locales:[`en`,`fr-CA`],compliance:[`pipeda`,`law25`],timezones:[`America/St_Johns`,`America/Halifax`,`America/Toronto`,`America/Winnipeg`,`America/Edmonton`,`America/Vancouver`],overriddenRegions:{QC:{name:`Quebec`,type:`region`,complianceGroup:`opt-in`,description:`Quebec — Law 25 (GDPR-style opt-in)`}}},US:{name:`United States`,type:`country`,complianceGroup:`opt-out`,default:`opt-out-strict`,description:`United States — opt-out-strict (CPRA) used when state cannot be detected`,locales:[`en`,`es-US`],compliance:[`ccpa`,`cpra`,`vcdpa`,`cpa-co`,`ctdpa`,`ucpa`,`icdpa-ia`,`icdpa-in`,`tipa`,`mcdpa-mt`,`mcdpa-mn`,`ocpa`,`tdpsa`,`dpdpa-de`,`njdpa`,`nhpa`,`ndpa-ne`,`modpa`,`kcdpa`,`ridtpa`],timezones:[`America/New_York`,`America/Chicago`,`America/Denver`,`America/Phoenix`,`America/Los_Angeles`,`America/Anchorage`,`Pacific/Honolulu`],overriddenRegions:{CA:{name:`California`,type:`region`,complianceGroup:`opt-out-strict`,description:`California — CPRA/CCPA`},VA:{name:`Virginia`,type:`region`,complianceGroup:`opt-out`,description:`Virginia — VCDPA`},CO:{name:`Colorado`,type:`region`,complianceGroup:`opt-out`,description:`Colorado — CPA`},CT:{name:`Connecticut`,type:`region`,complianceGroup:`opt-out`,description:`Connecticut — CTDPA`},UT:{name:`Utah`,type:`region`,complianceGroup:`opt-out`,description:`Utah — UCPA`},TX:{name:`Texas`,type:`region`,complianceGroup:`opt-out`,description:`Texas — TDPSA`},DE:{name:`Delaware`,type:`region`,complianceGroup:`opt-out`,description:`Delaware — DPDPA`},NJ:{name:`New Jersey`,type:`region`,complianceGroup:`opt-out`,description:`New Jersey — NJDPA`},OR:{name:`Oregon`,type:`region`,complianceGroup:`opt-out`,description:`Oregon — OCPA`},MN:{name:`Minnesota`,type:`region`,complianceGroup:`opt-out`,description:`Minnesota — MCDPA`},MD:{name:`Maryland`,type:`region`,complianceGroup:`opt-out`,description:`Maryland — MODPA`},KY:{name:`Kentucky`,type:`region`,complianceGroup:`opt-out`,description:`Kentucky — KCDPA`},TN:{name:`Tennessee`,type:`region`,complianceGroup:`opt-out`,description:`Tennessee — TIPA`},NE:{name:`Nebraska`,type:`region`,complianceGroup:`opt-out`,description:`Nebraska — NDPA`},IA:{name:`Iowa`,type:`region`,complianceGroup:`opt-out`,description:`Iowa — ICDPA`},IN:{name:`Indiana`,type:`region`,complianceGroup:`opt-out`,description:`Indiana — ICDPA`},MT:{name:`Montana`,type:`region`,complianceGroup:`opt-out`,description:`Montana — MCDPA`},NH:{name:`New Hampshire`,type:`region`,complianceGroup:`opt-out`,description:`New Hampshire — NHPA`},RI:{name:`Rhode Island`,type:`region`,complianceGroup:`opt-out`,description:`Rhode Island — RIDTPA`}}},AR:{name:`Argentina`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Argentina (LPDP)`,locales:[`es-AR`],compliance:[`lpdp-ar`],timezones:[`America/Argentina/Buenos_Aires`]},BO:{name:`Bolivia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Bolivia`,locales:[`es-BO`],compliance:[],timezones:[`America/La_Paz`]},BR:{name:`Brazil`,type:`country`,complianceGroup:`opt-in-brazil`,default:`opt-in-brazil`,description:`Brazil (LGPD)`,locales:[`pt-BR`],compliance:[`lgpd`],timezones:[`America/Noronha`,`America/Sao_Paulo`,`America/Manaus`,`America/Rio_Branco`]},CL:{name:`Chile`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Chile (Law 19.628)`,locales:[`es-CL`],compliance:[`law19628-cl`],timezones:[`America/Santiago`,`Pacific/Easter`]},CO:{name:`Colombia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Colombia (Law 1581)`,locales:[`es-CO`],compliance:[`law1581-co`],timezones:[`America/Bogota`]},CR:{name:`Costa Rica`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Costa Rica (LPDP)`,locales:[`es-CR`],compliance:[`lpdp-cr`],timezones:[`America/Costa_Rica`]},DO:{name:`Dominican Republic`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Dominican Republic`,locales:[`es-DO`],compliance:[`data-protection-do`],timezones:[`America/Santo_Domingo`]},EC:{name:`Ecuador`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Ecuador (LOPDP)`,locales:[`es-EC`],compliance:[`lopdp-ec`],timezones:[`America/Guayaquil`,`Pacific/Galapagos`]},GF:{name:`French Guiana`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`French Guiana`,locales:[`fr-GF`],compliance:[],timezones:[`America/Cayenne`]},GT:{name:`Guatemala`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Guatemala`,locales:[`es-GT`],compliance:[],timezones:[`America/Guatemala`]},GY:{name:`Guyana`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Guyana`,locales:[`en`],compliance:[],timezones:[`America/Guyana`]},HN:{name:`Honduras`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Honduras`,locales:[`es-HN`],compliance:[],timezones:[`America/Tegucigalpa`]},HT:{name:`Haiti`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Haiti`,locales:[`fr-HT`],compliance:[],timezones:[`America/Port-au-Prince`]},JM:{name:`Jamaica`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Jamaica`,locales:[`en`],compliance:[],timezones:[`America/Jamaica`]},MX:{name:`Mexico`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Mexico (LFPDPPP)`,locales:[`es-MX`],compliance:[`lfpdppp`],timezones:[`America/Mexico_City`,`America/Cancun`,`America/Chihuahua`,`America/Hermosillo`,`America/Tijuana`]},NI:{name:`Nicaragua`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Nicaragua`,locales:[`es-NI`],compliance:[],timezones:[`America/Managua`]},PA:{name:`Panama`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Panama`,locales:[`es-PA`],compliance:[`data-protection-pa`],timezones:[`America/Panama`]},PE:{name:`Peru`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Peru (LPDP)`,locales:[`es-PE`],compliance:[`lpdp-pe`],timezones:[`America/Lima`]},PY:{name:`Paraguay`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Paraguay`,locales:[`es-PY`],compliance:[],timezones:[`America/Asuncion`]},SR:{name:`Suriname`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Suriname`,locales:[`nl-SR`],compliance:[],timezones:[`America/Paramaribo`]},SV:{name:`El Salvador`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`El Salvador`,locales:[`es-SV`],compliance:[],timezones:[`America/El_Salvador`]},TT:{name:`Trinidad and Tobago`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Trinidad and Tobago`,locales:[`en`],compliance:[],timezones:[`America/Port_of_Spain`]},UY:{name:`Uruguay`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Uruguay (Law 18.331)`,locales:[`es-UY`],compliance:[`law18331-uy`],timezones:[`America/Montevideo`]},VE:{name:`Venezuela`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Venezuela`,locales:[`es-VE`],compliance:[],timezones:[`America/Caracas`]},AG:{name:`Antigua and Barbuda`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Antigua and Barbuda`,locales:[`en`],compliance:[],timezones:[`America/Antigua`]},BB:{name:`Barbados`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Barbados`,locales:[`en`],compliance:[],timezones:[`America/Barbados`]},BL:{name:`Saint Barthélemy`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Saint Barthélemy`,locales:[`fr-BL`],compliance:[],timezones:[`America/St_Barthelemy`]},BM:{name:`Bermuda`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Bermuda`,locales:[`en`],compliance:[],timezones:[`Atlantic/Bermuda`]},BS:{name:`Bahamas`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Bahamas`,locales:[`en`],compliance:[],timezones:[`America/Nassau`]},CU:{name:`Cuba`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Cuba`,locales:[`es-CU`],compliance:[],timezones:[`America/Havana`]},DM:{name:`Dominica`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Dominica`,locales:[`en`],compliance:[],timezones:[`America/Dominica`]},GD:{name:`Grenada`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Grenada`,locales:[`en`],compliance:[],timezones:[`America/Grenada`]},KN:{name:`Saint Kitts and Nevis`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Saint Kitts and Nevis`,locales:[`en`],compliance:[],timezones:[`America/St_Kitts`]},LC:{name:`Saint Lucia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Saint Lucia`,locales:[`en`],compliance:[],timezones:[`America/St_Lucia`]},PM:{name:`Saint Pierre and Miquelon`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Saint Pierre and Miquelon`,locales:[`fr-PM`],compliance:[],timezones:[`America/Miquelon`]},PR:{name:`Puerto Rico`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Puerto Rico`,locales:[`es-PR`,`en`],compliance:[],timezones:[`America/Puerto_Rico`]},VC:{name:`Saint Vincent and the Grenadines`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Saint Vincent and the Grenadines`,locales:[`en`],compliance:[],timezones:[`America/St_Vincent`]},IN:{name:`India`,type:`country`,complianceGroup:`opt-in-dpdpa`,default:`opt-in-dpdpa`,description:`India (DPDPA)`,locales:[`hi-IN`,`en`,`bn-IN`,`ta-IN`],compliance:[`dpdpa`],timezones:[`Asia/Kolkata`,`Asia/Calcutta`]},CN:{name:`China`,type:`country`,complianceGroup:`opt-in-china`,default:`opt-in-china`,description:`China (PIPL + DSL + CSL)`,locales:[`zh-CN`],compliance:[`pipl`,`dsl-cn`,`csl-cn`],timezones:[`Asia/Shanghai`]},BN:{name:`Brunei`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Brunei (Personal Data Protection Order)`,locales:[`ms-BN`,`en`],compliance:[`privacy-bn`],timezones:[`Asia/Brunei`]},ID:{name:`Indonesia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Indonesia (PDP Law)`,locales:[`id-ID`],compliance:[`pdp-id`],timezones:[`Asia/Jakarta`,`Asia/Makassar`,`Asia/Jayapura`]},KH:{name:`Cambodia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Cambodia`,locales:[`km-KH`],compliance:[],timezones:[`Asia/Phnom_Penh`]},LA:{name:`Laos`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Laos`,locales:[`lo-LA`],compliance:[],timezones:[`Asia/Vientiane`]},MM:{name:`Myanmar`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Myanmar`,locales:[`my-MM`],compliance:[],timezones:[`Asia/Yangon`]},MY:{name:`Malaysia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Malaysia (PDPA)`,locales:[`ms-MY`,`zh-MY`,`en`],compliance:[`pdpa-my`],timezones:[`Asia/Kuala_Lumpur`,`Asia/Kuching`]},PH:{name:`Philippines`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Philippines (DPA)`,locales:[`fil-PH`,`en`],compliance:[`dpa-ph`],timezones:[`Asia/Manila`]},SG:{name:`Singapore`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Singapore (PDPA)`,locales:[`zh-SG`,`ms-SG`,`ta-SG`,`en`],compliance:[`pdpa-sg`],timezones:[`Asia/Singapore`]},TH:{name:`Thailand`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Thailand (PDPA — GDPR-style opt-in)`,locales:[`th-TH`],compliance:[`pdpa-th`],timezones:[`Asia/Bangkok`]},TL:{name:`Timor-Leste`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Timor-Leste`,locales:[`pt-TL`],compliance:[],timezones:[`Asia/Dili`]},VN:{name:`Vietnam`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Vietnam (PDPD)`,locales:[`vi-VN`],compliance:[`pdpd-vn`],timezones:[`Asia/Ho_Chi_Minh`]},HK:{name:`Hong Kong`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Hong Kong SAR (PDPO)`,locales:[`zh-HK`],compliance:[`pdpl-hk`],timezones:[`Asia/Hong_Kong`]},JP:{name:`Japan`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Japan (APPI)`,locales:[`ja-JP`],compliance:[`appi`],timezones:[`Asia/Tokyo`]},KP:{name:`North Korea`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`North Korea`,locales:[`ko-KP`],compliance:[],timezones:[`Asia/Pyongyang`]},KR:{name:`South Korea`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`South Korea (PIPA)`,locales:[`ko-KR`],compliance:[`pipa-kr`],timezones:[`Asia/Seoul`]},MN:{name:`Mongolia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Mongolia`,locales:[`mn-MN`],compliance:[],timezones:[`Asia/Ulaanbaatar`,`Asia/Hovd`]},MO:{name:`Macau`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Macau SAR (PDPA)`,locales:[`zh-MO`,`pt-MO`],compliance:[`pdpa-mo`],timezones:[`Asia/Macau`]},TW:{name:`Taiwan`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Taiwan (PDPL)`,locales:[`zh-TW`],compliance:[`pdpl-tw`],timezones:[`Asia/Taipei`]},AF:{name:`Afghanistan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Afghanistan`,locales:[`fa-AF`],compliance:[],timezones:[`Asia/Kabul`]},BD:{name:`Bangladesh`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Bangladesh`,locales:[`bn-BD`],compliance:[],timezones:[`Asia/Dhaka`]},BT:{name:`Bhutan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Bhutan`,locales:[`dz-BT`],compliance:[],timezones:[`Asia/Thimphu`]},IO:{name:`British Indian Ocean Territory`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`British Indian Ocean Territory`,locales:[`en`],compliance:[],timezones:[`Indian/Chagos`]},LK:{name:`Sri Lanka`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Sri Lanka`,locales:[`si-LK`,`ta-LK`],compliance:[`privacy-lk`],timezones:[`Asia/Colombo`]},MV:{name:`Maldives`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Maldives`,locales:[`dv-MV`],compliance:[],timezones:[`Indian/Maldives`]},NP:{name:`Nepal`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Nepal`,locales:[`ne-NP`],compliance:[`privacy-np`],timezones:[`Asia/Kathmandu`]},PK:{name:`Pakistan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Pakistan`,locales:[`ur-PK`,`en`],compliance:[],timezones:[`Asia/Karachi`]},AM:{name:`Armenia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Armenia`,locales:[`hy-AM`],compliance:[],timezones:[`Asia/Yerevan`]},AZ:{name:`Azerbaijan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Azerbaijan`,locales:[`az-AZ`],compliance:[],timezones:[`Asia/Baku`]},GE:{name:`Georgia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Georgia`,locales:[`ka-GE`],compliance:[],timezones:[`Asia/Tbilisi`]},KG:{name:`Kyrgyzstan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Kyrgyzstan`,locales:[`ky-KG`,`ru-KG`],compliance:[],timezones:[`Asia/Bishkek`]},KZ:{name:`Kazakhstan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Kazakhstan`,locales:[`kk-KZ`,`ru-KZ`],compliance:[],timezones:[`Asia/Almaty`,`Asia/Aqtobe`]},TJ:{name:`Tajikistan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Tajikistan`,locales:[`tg-TJ`],compliance:[],timezones:[`Asia/Dushanbe`]},TM:{name:`Turkmenistan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Turkmenistan`,locales:[`tk-TM`],compliance:[],timezones:[`Asia/Ashgabat`]},UZ:{name:`Uzbekistan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Uzbekistan`,locales:[`uz-UZ`],compliance:[],timezones:[`Asia/Tashkent`,`Asia/Samarkand`]},AE:{name:`United Arab Emirates`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`United Arab Emirates (UAE PDPL / DIFC DPL / ADGM DPR)`,locales:[`ar-AE`],compliance:[`uae-pdpl`,`difc-dpl`,`adgm-dpr`],timezones:[`Asia/Dubai`]},BH:{name:`Bahrain`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Bahrain (PDPL)`,locales:[`ar-BH`],compliance:[`pdpl-bh`],timezones:[`Asia/Bahrain`]},IL:{name:`Israel`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Israel (Privacy Protection Law)`,locales:[`he-IL`,`ar-IL`],compliance:[`privacy-il`],timezones:[`Asia/Jerusalem`]},IQ:{name:`Iraq`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Iraq`,locales:[`ar-IQ`],compliance:[],timezones:[`Asia/Baghdad`]},IR:{name:`Iran`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Iran`,locales:[`fa-IR`],compliance:[],timezones:[`Asia/Tehran`]},JO:{name:`Jordan`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Jordan`,locales:[`ar-JO`],compliance:[],timezones:[`Asia/Amman`]},KW:{name:`Kuwait`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Kuwait`,locales:[`ar-KW`],compliance:[`privacy-kw`],timezones:[`Asia/Kuwait`]},LB:{name:`Lebanon`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Lebanon`,locales:[`ar-LB`],compliance:[],timezones:[`Asia/Beirut`]},OM:{name:`Oman`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Oman (PDPL)`,locales:[`ar-OM`],compliance:[`pdpl-om`],timezones:[`Asia/Muscat`]},PS:{name:`Palestine`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Palestine`,locales:[`ar-PS`],compliance:[],timezones:[`Asia/Gaza`,`Asia/Hebron`]},QA:{name:`Qatar`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Qatar (PDPL)`,locales:[`ar-QA`],compliance:[`qpdl-qa`],timezones:[`Asia/Qatar`]},SA:{name:`Saudi Arabia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Saudi Arabia (PDPL)`,locales:[`ar-SA`],compliance:[`pdpl-sa`],timezones:[`Asia/Riyadh`]},SY:{name:`Syria`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Syria`,locales:[`ar-SY`],compliance:[],timezones:[`Asia/Damascus`]},YE:{name:`Yemen`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Yemen`,locales:[`ar-YE`],compliance:[],timezones:[`Asia/Aden`]},BF:{name:`Burkina Faso`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Burkina Faso`,locales:[`fr-BF`],compliance:[],timezones:[`Africa/Ouagadougou`]},BJ:{name:`Benin`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Benin`,locales:[`fr-BJ`],compliance:[],timezones:[`Africa/Porto-Novo`]},CI:{name:`Côte d'Ivoire`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Côte d'Ivoire`,locales:[`fr-CI`],compliance:[],timezones:[`Africa/Abidjan`]},CM:{name:`Cameroon`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Cameroon`,locales:[`fr-CM`,`en`],compliance:[],timezones:[`Africa/Douala`]},CV:{name:`Cabo Verde`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Cabo Verde`,locales:[`pt-CV`],compliance:[],timezones:[`Atlantic/Cape_Verde`]},GA:{name:`Gabon`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Gabon`,locales:[`fr-GA`],compliance:[],timezones:[`Africa/Libreville`]},GH:{name:`Ghana`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Ghana (DPA)`,locales:[`en`],compliance:[`dpa-gh`],timezones:[`Africa/Accra`]},GM:{name:`Gambia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Gambia`,locales:[`en`],compliance:[],timezones:[`Africa/Banjul`]},GN:{name:`Guinea`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Guinea`,locales:[`fr-GN`],compliance:[],timezones:[`Africa/Conakry`]},GQ:{name:`Equatorial Guinea`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Equatorial Guinea`,locales:[`es-GQ`,`fr-GQ`],compliance:[],timezones:[`Africa/Malabo`]},GW:{name:`Guinea-Bissau`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Guinea-Bissau`,locales:[`pt-GW`],compliance:[],timezones:[`Africa/Bissau`]},LR:{name:`Liberia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Liberia`,locales:[`en`],compliance:[],timezones:[`Africa/Monrovia`]},ML:{name:`Mali`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Mali`,locales:[`fr-ML`],compliance:[],timezones:[`Africa/Bamako`]},MR:{name:`Mauritania`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Mauritania`,locales:[`ar-MR`],compliance:[],timezones:[`Africa/Nouakchott`]},NE:{name:`Niger`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Niger`,locales:[`fr-NE`],compliance:[],timezones:[`Africa/Niamey`]},NG:{name:`Nigeria`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Nigeria (NDPA)`,locales:[`en`],compliance:[`ndpa-ng`],timezones:[`Africa/Lagos`]},SL:{name:`Sierra Leone`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Sierra Leone`,locales:[`en`],compliance:[],timezones:[`Africa/Freetown`]},SN:{name:`Senegal`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Senegal`,locales:[`fr-SN`],compliance:[],timezones:[`Africa/Dakar`]},TG:{name:`Togo`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Togo`,locales:[`fr-TG`],compliance:[],timezones:[`Africa/Lome`]},BI:{name:`Burundi`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Burundi`,locales:[`fr-BI`],compliance:[],timezones:[`Africa/Bujumbura`]},DJ:{name:`Djibouti`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Djibouti`,locales:[`fr-DJ`,`ar-DJ`],compliance:[],timezones:[`Africa/Djibouti`]},ER:{name:`Eritrea`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Eritrea`,locales:[`ti-ER`],compliance:[],timezones:[`Africa/Asmara`]},ET:{name:`Ethiopia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Ethiopia`,locales:[`am-ET`],compliance:[],timezones:[`Africa/Addis_Ababa`]},KE:{name:`Kenya`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Kenya (DPA)`,locales:[`sw-KE`,`en`],compliance:[`dpa-ke`],timezones:[`Africa/Nairobi`]},KM:{name:`Comoros`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Comoros`,locales:[`ar-KM`,`fr-KM`],compliance:[],timezones:[`Indian/Comoro`]},MG:{name:`Madagascar`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Madagascar`,locales:[`fr-MG`],compliance:[],timezones:[`Indian/Antananarivo`]},MU:{name:`Mauritius`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Mauritius (DPA)`,locales:[`en`,`fr-MU`],compliance:[`dpa-mu`],timezones:[`Indian/Mauritius`]},MW:{name:`Malawi`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Malawi`,locales:[`en`],compliance:[],timezones:[`Africa/Blantyre`]},MZ:{name:`Mozambique`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Mozambique`,locales:[`pt-MZ`],compliance:[],timezones:[`Africa/Maputo`]},RW:{name:`Rwanda`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Rwanda (DPA)`,locales:[`rw-RW`,`en`],compliance:[`dpa-rw`],timezones:[`Africa/Kigali`]},SC:{name:`Seychelles`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Seychelles`,locales:[`fr-SC`,`en`],compliance:[],timezones:[`Indian/Mahe`]},SO:{name:`Somalia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Somalia`,locales:[`so-SO`],compliance:[],timezones:[`Africa/Mogadishu`]},SS:{name:`South Sudan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`South Sudan`,locales:[`en`],compliance:[],timezones:[`Africa/Juba`]},ST:{name:`São Tomé and Príncipe`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`São Tomé and Príncipe`,locales:[`pt-ST`],compliance:[],timezones:[`Africa/Sao_Tome`]},TZ:{name:`Tanzania`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Tanzania`,locales:[`sw-TZ`,`en`],compliance:[],timezones:[`Africa/Dar_es_Salaam`]},UG:{name:`Uganda`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Uganda (DPA)`,locales:[`en`],compliance:[`dpa-ug`],timezones:[`Africa/Kampala`]},AO:{name:`Angola`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Angola`,locales:[`pt-AO`],compliance:[],timezones:[`Africa/Luanda`]},BW:{name:`Botswana`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Botswana (DPA)`,locales:[`en`],compliance:[`dpa-bw`],timezones:[`Africa/Gaborone`]},LS:{name:`Lesotho`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Lesotho`,locales:[`en`],compliance:[],timezones:[`Africa/Maseru`]},NA:{name:`Namibia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Namibia`,locales:[`en`],compliance:[],timezones:[`Africa/Windhoek`]},SZ:{name:`Eswatini`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Eswatini`,locales:[`en`],compliance:[],timezones:[`Africa/Mbabane`]},ZA:{name:`South Africa`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`South Africa (POPIA)`,locales:[`en`,`af-ZA`],compliance:[`popia`],timezones:[`Africa/Johannesburg`]},ZM:{name:`Zambia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Zambia (DPA)`,locales:[`en`],compliance:[`dpa-zm`],timezones:[`Africa/Lusaka`]},ZW:{name:`Zimbabwe`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Zimbabwe (DPA)`,locales:[`en`],compliance:[`dpa-zw`],timezones:[`Africa/Harare`]},DZ:{name:`Algeria`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Algeria`,locales:[`ar-DZ`,`fr-DZ`],compliance:[`dpa-dz`],timezones:[`Africa/Algiers`]},EG:{name:`Egypt`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Egypt (DPA)`,locales:[`ar-EG`],compliance:[`dpa-eg`],timezones:[`Africa/Cairo`]},LY:{name:`Libya`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Libya`,locales:[`ar-LY`],compliance:[],timezones:[`Africa/Tripoli`]},MA:{name:`Morocco`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Morocco`,locales:[`ar-MA`,`fr-MA`],compliance:[`dpa-ma`],timezones:[`Africa/Casablanca`]},SD:{name:`Sudan`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Sudan`,locales:[`ar-SD`],compliance:[],timezones:[`Africa/Khartoum`]},TN:{name:`Tunisia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Tunisia (DPA)`,locales:[`ar-TN`,`fr-TN`],compliance:[`dpa-tn`],timezones:[`Africa/Tunis`]},CD:{name:`DR Congo`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`DR Congo`,locales:[`fr-CD`],compliance:[],timezones:[`Africa/Kinshasa`,`Africa/Lubumbashi`]},CF:{name:`Central African Republic`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Central African Republic`,locales:[`fr-CF`],compliance:[],timezones:[`Africa/Bangui`]},CG:{name:`Republic of Congo`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Republic of Congo`,locales:[`fr-CG`],compliance:[],timezones:[`Africa/Brazzaville`]},TD:{name:`Chad`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Chad`,locales:[`fr-TD`,`ar-TD`],compliance:[],timezones:[`Africa/Ndjamena`]},BY:{name:`Belarus`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Belarus`,locales:[`be-BY`,`ru-BY`],compliance:[],timezones:[`Europe/Minsk`]},MD:{name:`Moldova`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Moldova`,locales:[`ro-MD`],compliance:[],timezones:[`Europe/Chisinau`]},RU:{name:`Russia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Russia`,locales:[`ru-RU`],compliance:[],timezones:[`Europe/Kaliningrad`,`Europe/Moscow`,`Europe/Samara`,`Asia/Yekaterinburg`,`Asia/Omsk`,`Asia/Krasnoyarsk`,`Asia/Irkutsk`,`Asia/Yakutsk`,`Asia/Vladivostok`,`Asia/Magadan`,`Asia/Kamchatka`]},UA:{name:`Ukraine`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Ukraine`,locales:[`uk-UA`],compliance:[],timezones:[`Europe/Kyiv`]},VA:{name:`Holy See`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Holy See`,locales:[`it-VA`],compliance:[],timezones:[`Europe/Vatican`]},AU:{name:`Australia`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`Australia (Privacy Act)`,locales:[`en`],compliance:[`privacy-au`],timezones:[`Australia/Sydney`,`Australia/Brisbane`,`Australia/Adelaide`,`Australia/Darwin`,`Australia/Perth`,`Australia/Hobart`]},FJ:{name:`Fiji`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Fiji`,locales:[`en`],compliance:[`privacy-fj`],timezones:[`Pacific/Fiji`]},FM:{name:`Micronesia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Micronesia`,locales:[`en`],compliance:[],timezones:[`Pacific/Chuuk`,`Pacific/Pohnpei`,`Pacific/Kosrae`]},KI:{name:`Kiribati`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Kiribati`,locales:[`en`],compliance:[],timezones:[`Pacific/Tarawa`,`Pacific/Enderbury`,`Pacific/Kiritimati`]},MH:{name:`Marshall Islands`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Marshall Islands`,locales:[`en`],compliance:[],timezones:[`Pacific/Majuro`,`Pacific/Kwajalein`]},MP:{name:`Northern Mariana Islands`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Northern Mariana Islands`,locales:[`en`],compliance:[],timezones:[`Pacific/Saipan`]},NC:{name:`New Caledonia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`New Caledonia`,locales:[`fr-NC`],compliance:[],timezones:[`Pacific/Noumea`]},NF:{name:`Norfolk Island`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Norfolk Island`,locales:[`en`],compliance:[],timezones:[`Pacific/Norfolk`]},NR:{name:`Nauru`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Nauru`,locales:[`en`],compliance:[],timezones:[`Pacific/Nauru`]},NU:{name:`Niue`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Niue`,locales:[`en`],compliance:[],timezones:[`Pacific/Niue`]},NZ:{name:`New Zealand`,type:`country`,complianceGroup:`general-privacy-consent`,default:`general-privacy-consent`,description:`New Zealand (Privacy Act)`,locales:[`en`],compliance:[`privacy-nz`],timezones:[`Pacific/Auckland`,`Pacific/Chatham`]},PF:{name:`French Polynesia`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`French Polynesia`,locales:[`fr-PF`],compliance:[],timezones:[`Pacific/Tahiti`,`Pacific/Marquesas`,`Pacific/Gambier`]},PG:{name:`Papua New Guinea`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Papua New Guinea`,locales:[`en`],compliance:[`privacy-pg`],timezones:[`Pacific/Port_Moresby`,`Pacific/Bougainville`]},PW:{name:`Palau`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Palau`,locales:[`en`],compliance:[],timezones:[`Pacific/Palau`]},SB:{name:`Solomon Islands`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Solomon Islands`,locales:[`en`],compliance:[],timezones:[`Pacific/Guadalcanal`]},TO:{name:`Tonga`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Tonga`,locales:[`en`],compliance:[],timezones:[`Pacific/Tongatapu`]},TV:{name:`Tuvalu`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Tuvalu`,locales:[`en`],compliance:[],timezones:[`Pacific/Funafuti`]},VU:{name:`Vanuatu`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Vanuatu`,locales:[`fr-VU`,`en`],compliance:[],timezones:[`Pacific/Efate`]},WS:{name:`Samoa`,type:`country`,complianceGroup:`notice-only`,default:`notice-only`,description:`Samoa`,locales:[`en`],compliance:[],timezones:[`Pacific/Apia`]},UK:{name:`United Kingdom`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`United Kingdom (UK GDPR + PECR)`,locales:[`en`],compliance:[`uk-gdpr`,`pecr`],timezones:[`Europe/London`]},CH:{name:`Switzerland`,type:`country`,complianceGroup:`opt-in`,default:`opt-in`,description:`Switzerland (revFADP)`,locales:[`de-CH`,`fr-CH`,`it-CH`],compliance:[`revfadp`],timezones:[`Europe/Zurich`]}}};Object.entries(c.countries).reduce(function(e,[t,n]){return e[t]=n.name,e},{}),Object.values(c.countries).reduce(function(e,t){return t.locales.forEach(n=>{e[n]=t.name}),e},{});export{i as a,s as c,t as i,r as n,a as o,n as r,o as s,e as t};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var e={_section_nav:`── Navegación ──────────────────────────────────────────`,"nav.dashboard":`Panel`,"nav.consentBanners":`Banners de consentimiento`,"nav.consentTemplates":`Plantillas de cookies`,"nav.uiTemplates":`Plantillas de UI`,"nav.profiles":`Perfiles`,"nav.consents":`Consentimientos`,"nav.visitors":`Visitantes`,"nav.users":`Usuarios`,"nav.roles":`Roles`,"nav.sites":`Sitios`,"nav.vendors":`Proveedores TCF`,"nav.reports":`Informes`,"nav.audit":`Registro de auditoría`,"nav.api":`API`,"nav.settings":`Ajustes`,"nav.adminDashboard":`Panel de administración`,_section_layout:`── Diseño ───────────────────────────────────────────`,"layout.expandSidebar":`Expandir barra lateral`,"layout.collapseSidebar":`Contraer barra lateral`,"layout.signOut":`Cerrar sesión`,"layout.toggleDark":`Cambiar a modo oscuro`,"layout.toggleLight":`Cambiar a modo claro`,"layout.poweredBy":`Desarrollado por`,_section_common:`── Común ───────────────────────────────────────────`,"common.loading":`Cargando…`,"common.searching":`Buscando…`,"common.save":`Guardar`,"common.saving":`Guardando…`,"common.cancel":`Cancelar`,"common.close":`Cerrar`,"common.delete":`Eliminar`,"common.edit":`Editar`,"common.create":`Crear`,"common.confirm":`Confirmar`,"common.noData":`Sin datos`,"common.search":`Search…`,"common.perPage":`Por página`,"common.goToPage":`Ir a la página`,"common.pageOfTotal":`Página {{page}} de {{total}}`,"common.noResults":`No results match your search.`,"common.exportCsv":`Exportar CSV`,"common.duplicate":`Duplicar`,"common.active":`Activo`,"common.inactive":`Inactivo`,"common.name":`Nombre`,"common.email":`Correo electrónico`,"common.status":`Estado`,"common.created":`Creado`,"common.id":`ID`,"common.add":`Añadir`,"common.remove":`Eliminar`,"common.revoke":`Revocar`,"common.required":`Obligatorio`,"common.version":`Versión`,"common.locale":`Configuración regional`,"common.country":`País`,"common.source":`Origen`,"common.grantAll":`Conceder todo`,"common.revokeAll":`Revocar todo`,"common.granted":`concedido`,"common.page":`Página {{n}}`,"common.prev":`Anterior`,"common.next":`Siguiente`,"common.you":`Tú`,"common.default":`predeterminado`,"common.hide":`Ocultar`,"common.show":`Mostrar`,"common.activate":`Activar`,"common.deactivate":`Desactivar`,"common.newRole":`Nuevo rol`,"common.copyToClipboard":`Copiar al portapapeles`,"common.back":`Atrás`,"common.copyId":`Copiar ID`,"common.mandatory":`obligatorio`,"common.optional":`Opcional`,"common.roles":`Roles`,"common.showPassword":`Mostrar contraseña`,"common.hidePassword":`Ocultar contraseña`,"common.updated":`Actualizado`,_section_locale:`── Selector de idioma ─────────────────────────────`,"locale.en":`Inglés`,"locale.switcherAria":`Cambiar idioma`,_section_login:`── Inicio de sesión ───────────────────────────────`,"login.title":`{{appName}} Admin`,"login.subtitle":`Inicia sesión en tu cuenta`,"login.email":`Correo electrónico`,"login.emailPlaceholder":`admin@example.com`,"login.password":`Contraseña`,"login.submit":`Iniciar sesión`,"login.submitting":`Iniciando sesión…`,"login.error.invalid":`Correo electrónico o contraseña no válidos`,"login.devSignIn":`⚡ Dev: iniciar sesión como user@consenti.dev`,_section_setupWizard:`── Asistente de configuración ───────────────────`,"setupWizard.welcome.title":`Bienvenido a {{appName}}`,"setupWizard.welcome.body":`Configuremos la gestión del consentimiento. Solo tomará un minuto: le mostraremos lo que está configurado y le ayudaremos a instalar un conjunto inicial de perfiles de cumplimiento.`,"setupWizard.welcome.docsLink":`Ver documentación`,"setupWizard.welcome.howItWorksLink":`Cómo funciona Consenti`,"setupWizard.welcome.getStarted":`Comenzar`,"setupWizard.welcome.skip":`Omitir configuración`,"setupWizard.config.title":`Su configuración`,"setupWizard.config.subtitle":`Esto es lo que Consenti obtuvo de su configuración y variables de entorno, combinado con valores predeterminados razonables. Los secretos están ocultos.`,"setupWizard.back":`Atrás`,"setupWizard.continue":`Continuar`,"setupWizard.profiles.title":`Perfiles de cumplimiento predeterminados`,"setupWizard.profiles.subtitle":`Consenti incluye 8 perfiles de cumplimiento predefinidos que cubren las principales normativas de privacidad a nivel mundial. Elija cuáles instalar ahora — puede añadir más después.`,"setupWizard.profiles.selectAll":`Instalar los 8 perfiles predeterminados`,"setupWizard.profiles.installAndContinue":`Instalar y continuar`,"setupWizard.profiles.skipAndContinue":`Omitir y continuar`,"setupWizard.profiles.error":`No se pudieron instalar los perfiles seleccionados. Puede intentarlo de nuevo más tarde desde Perfiles.`,"setupWizard.confirmation.title":`Todo listo`,"setupWizard.confirmation.seededSummary":`{{count}} perfil(es) de cumplimiento instalado(s).`,"setupWizard.confirmation.noneSeeded":`No se instaló ningún perfil — puede crear uno en cualquier momento desde Perfiles.`,"setupWizard.confirmation.readinessTitle":`Antes de salir a producción`,"setupWizard.confirmation.readinessJsonStorage":`Está usando el controlador de almacenamiento de archivos JSON — adecuado para desarrollo, pero cambie a un controlador de base de datos (node:sqlite, PostgreSQL, MySQL, MongoDB) para producción.`,"setupWizard.confirmation.readinessDefaultCredentials":`No se configuraron credenciales de administrador — Consenti está usando credenciales de demostración. Configure CONSENTI_ADMIN_EMAIL y CONSENTI_ADMIN_PASSWORD antes de salir a producción.`,"setupWizard.confirmation.howItWorks":`Cómo funciona Consenti`,"setupWizard.confirmation.goToDashboard":`Ir al panel`,_section_dashboard:`── Panel ─────────────────────────────────────────`,"dashboard.title":`Panel`,"dashboard.stats.totalConsents":`Consentimientos totales`,"dashboard.stats.totalVisitors":`Visitantes totales`,"dashboard.stats.accepted":`Aceptados`,"dashboard.stats.acceptedSub":`≥80% de cookies concedidas`,"dashboard.stats.rejected":`Rechazados`,"dashboard.stats.rejectedSub":`≤20% de cookies concedidas`,"dashboard.chart.timeline":`Consentimientos (últimos 30 días)`,"dashboard.chart.timelineAria":`Gráfico de la línea de tiempo de consentimientos`,"dashboard.chart.countries":`Principales países`,"dashboard.chart.noData":`Sin datos.`,"dashboard.chart.noCountryData":`Sin datos de países.`,"dashboard.gpc.label":`Tasa de detección de GPC`,"dashboard.gpc.sub":`{{detected}} de {{total}} consentimientos`,"dashboard.viewReports":`Ver informes completos →`,_section_reports:`── Informes ──────────────────────────────────────────`,"reports.title":`Informes`,"reports.filters.from":`Desde`,"reports.filters.to":`Hasta`,"reports.filters.apply":`Aplicar`,"reports.optin.total":`Decisiones totales`,"reports.optin.granted":`Concedido`,"reports.optin.denied":`Denegado`,"reports.optin.managed":`Parcialmente gestionado`,"reports.optin.byDate":`Tendencia de aceptación`,"reports.optin.byDateAria":`Decisiones de aceptación a lo largo del tiempo`,"reports.optin.byLocale":`Por idioma`,"reports.category.title":`Por categoría`,"reports.legend.granted":`Concedido`,"reports.legend.denied":`Denegado`,"reports.legend.objected":`Objetado`,"reports.legend.managed":`Gestionado`,_section_consents:`── Consentimientos ───────────────────────────────`,"consents.title":`Registros de consentimiento`,"consents.filterFrom":`Desde`,"consents.filterTo":`Hasta`,"consents.filterGpc":`Solo GPC`,"consents.records":`{{n}} registros`,"consents.empty":`Aún no hay registros de consentimiento.`,"consents.col.visitorId":`ID del visitante`,"consents.col.profile":`Perfil`,"consents.col.locale":`Configuración regional`,"consents.col.gpc":`GPC`,"consents.col.age":`Edad`,"consents.col.source":`Origen`,"consents.col.created":`Creado`,"consents.gpcYes":`Sí`,"consents.ageVerified":`Verificado`,"consents.searchPlaceholder":`Buscar visitante, perfil, idioma, origen…`,"consents.detail.title":`Registro de consentimiento`,"consents.detail.updated":`Actualizado`,"consents.detail.consentJson":`Datos de consentimiento`,"consents.detail.signature":`Firma`,"consents.detail.signed":`Firmado`,"consents.detail.unsigned":`Sin firmar`,_section_visitors:`── Visitantes ───────────────────────────────────`,"visitors.title":`Visitantes`,"visitors.empty":`Aún no hay visitantes registrados.`,"visitors.col.visitorId":`ID del visitante`,"visitors.col.country":`País`,"visitors.col.firstSeen":`Primera vez visto`,"visitors.col.lastSeen":`Última vez visto`,"visitors.searchPlaceholder":`Buscar ID de visitante, país…`,"visitors.detail.title":`Visitante`,"visitors.detail.region":`Región`,"visitors.detail.city":`Ciudad`,_section_users:`── Usuarios ──────────────────────────────────────`,"users.title":`Usuarios`,"users.count":`{{n}} usuarios`,"users.newUser":`+ Nuevo usuario`,"users.createForm.title":`Crear usuario`,"users.createForm.namePlaceholder":`Nombre`,"users.createForm.emailPlaceholder":`Correo electrónico`,"users.createForm.passwordPlaceholder":`Contraseña`,"users.createForm.confirmPasswordPlaceholder":`Confirmar contraseña`,"users.createForm.selectRole":`Seleccionar rol…`,"users.createForm.passwordMismatch":`Las contraseñas no coinciden`,"users.createForm.error":`No se pudo crear el usuario`,"users.col.status":`Estado`,"users.status.active":`Activo`,"users.status.inactive":`Inactivo`,"users.action.activate":`Activar`,"users.action.deactivate":`Desactivar`,"users.dialog.delete.title":`¿Eliminar al usuario "{{name}}"?`,"users.dialog.delete.message":`Esta cuenta de usuario se eliminará de forma permanente.`,_section_roles:`── Roles y permisos ─────────────────────────────`,"roles.title":`Roles y permisos`,"roles.list.heading":`Roles`,"roles.list.empty":`Aún no hay roles. Crea uno para empezar.`,"roles.form.roleNameLabel":`Nombre del rol`,"roles.form.roleNamePlaceholder":`p. ej., Editor`,"roles.form.descriptionLabel":`Descripción`,"roles.form.descriptionPlaceholder":`Descripción opcional`,"roles.perms.heading":`Permisos — {{name}}`,"roles.perms.selectPrompt":`Selecciona un rol para gestionar los permisos`,"roles.perms.clickPrompt":`Haz clic en un rol a la izquierda para ver y gestionar sus permisos.`,"roles.perms.noPerms":`No hay permisos definidos en el sistema.`,"roles.error.load":`No se pudieron cargar los roles.`,"roles.error.create":`No se pudo crear el rol.`,"roles.error.update":`No se pudo actualizar el rol.`,"roles.error.delete":`No se pudo eliminar el rol.`,"roles.error.perm":`No se pudo actualizar el permiso.`,"roles.dialog.delete.title":`¿Eliminar el rol "{{name}}"?`,"roles.dialog.delete.message":`Los usuarios asignados a este rol perderán sus permisos inmediatamente.`,"roles.aria.editRole":`Editar rol`,"roles.aria.deleteRole":`Eliminar rol`,_section_profiles:`── Perfiles ──────────────────────────────────────`,"profiles.title":`Perfiles`,"profiles.count":`{{n}} perfiles`,"profiles.countSingular":`{{n}} perfil`,"profiles.newProfile":`+ Nuevo perfil`,"profiles.empty":`Aún no hay perfiles. Crea uno para empezar.`,"profiles.search.placeholder":`Search profiles…`,"profiles.filter.status":`Status`,"profiles.filter.active":`Active`,"profiles.filter.inactive":`Inactive`,"profiles.archived.cta":`Archived Profiles`,"profiles.archived.title":`Archived Profiles`,"profiles.archived.back":`Back to profiles`,"profiles.archived.hint":`Profile-id directories found on disk with no matching database entry — deleted profiles whose version snapshots weren't. Click one to browse its version history.`,"profiles.archived.empty":`No archived profiles found.`,"profiles.archived.searchPlaceholder":`Search by profile ID…`,"profiles.archived.col.id":`Profile ID`,"profiles.archived.col.versions":`Versions`,"profiles.archived.col.lastModified":`Last Modified`,"profiles.archived.viewHistory":`View history`,"profiles.col.name":`Nombre`,"profiles.col.defaultLocale":`Configuración regional predeterminada`,"profiles.col.templates":`Plantillas`,"profiles.col.created":`Creado`,"profiles.template.cookie":`Cookie:`,"profiles.template.ui":`UI:`,"profiles.action.copyId":`Copiar ID del perfil`,"profiles.action.copySlug":`Copy compliance group slug`,"profiles.action.copying":`Copiando…`,"profiles.dialog.delete.title":`¿Eliminar "{{name}}"?`,"profiles.dialog.delete.message":`Este perfil y todo su contenido de idioma se eliminarán de forma permanente.`,"profiles.dialog.copy.title":`¿Copiar "{{name}}"?`,"profiles.dialog.copy.message":`Este perfil y todo su contenido de idioma se duplicarán.`,_section_profileEditor:`── Editor de perfiles ────────────────────────────`,"profileEditor.title.new":`Nuevo perfil`,"profileEditor.title.edit":`Editar perfil`,"profileEditor.title.loading":`Editor de perfiles`,"profileEditor.step.config":`Configuración del perfil`,"profileEditor.step.templates":`Plantillas`,"profileEditor.step.content":`Contenido`,"profileEditor.step.mainBanner":`Banner principal`,"profileEditor.step.gpcBanner":`Banner GPC`,"profileEditor.step.prefModal":`Modal de preferencias`,"profileEditor.config.profileName":`Nombre del perfil`,"profileEditor.config.profileNamePlaceholder":`Mi sitio web`,"profileEditor.config.defaultLocale":`Configuración regional predeterminada`,"profileEditor.config.allowedDomains":`Dominios permitidos`,"profileEditor.config.allowedDomainsHint":`Admite comodines (*.example.com). Déjalo vacío para permitir todos.`,"profileEditor.config.regulations":`Regulaciones de cumplimiento`,"profileEditor.config.reg.gdprLabel":`RGPD`,"profileEditor.config.reg.gdprDesc":`Opt-in UE/EEE. No se realiza seguimiento hasta que se otorgue el consentimiento. El banner se muestra en la primera visita.`,"profileEditor.config.reg.ccpaLabel":`CCPA`,"profileEditor.config.reg.ccpaDesc":`Opt-out para California. Las cookies se conceden por defecto. Proporciona un disparador de "No vender".`,"profileEditor.config.reg.cpraLabel":`CPRA`,"profileEditor.config.reg.cpraDesc":`California 2023. Opt-out para venta/compartición; opt-in para datos sensibles. GPC respetado.`,"profileEditor.config.reg.dpdpaLabel":`DPDPA`,"profileEditor.config.reg.dpdpaDesc":`India 2023. Opt-in como RGPD. GPC no reconocido. Se requiere aviso del fiduciario de datos.`,"profileEditor.config.darkMode":`Activar modo oscuro`,"profileEditor.config.darkModeHint":`Aplica tokens de color oscuros al widget de consentimiento para sitios con tema oscuro.`,"profileEditor.config.dpdpa.heading":`DPDPA — Campos obligatorios del aviso de consentimiento`,"profileEditor.config.dpdpa.fiduciary":`Nombre del fiduciario de datos`,"profileEditor.config.dpdpa.fiduciaryPlaceholder":`Acme Corp Pvt Ltd`,"profileEditor.config.dpdpa.grievanceEmail":`Correo electrónico del responsable de quejas`,"profileEditor.config.dpdpa.grievanceEmailPlaceholder":`grievance@acme.com`,"profileEditor.config.dpdpa.purpose":`Descripción del propósito`,"profileEditor.config.dpdpa.purposePlaceholder":`Recopilamos tus datos para personalizar tu experiencia…`,"profileEditor.templates.cookieTemplate":`Plantilla de cookie`,"profileEditor.templates.cookieTemplateHint":`Define qué cookies/propósitos aparecen en el modal de preferencias. Todos los campos se derivan de la plantilla — de solo lectura en el perfil.`,"profileEditor.templates.selectCookie":`— Selecciona una plantilla de cookie —`,"profileEditor.templates.uiTemplate":`Plantilla de UI`,"profileEditor.templates.uiTemplateHint":`Define la disposición del banner/modal, la cantidad de botones y la estructura de categorías. Agrega el texto en los pasos 3–5.`,"profileEditor.templates.selectUi":`— Selecciona una plantilla de UI —`,"profileEditor.templates.noTemplate":`No se ha seleccionado ninguna plantilla.`,"profileEditor.templates.previewPrompt":`Selecciona una plantilla de cookie y una plantilla de UI para ver una vista previa en vivo.`,"profileEditor.templates.categoriesCount":`categorías`,"profileEditor.templates.buttonsTotal":`botones en total`,"profileEditor.content.loadDefaults":`Cargar valores predeterminados`,"profileEditor.content.loadDefaultsTitle":`Rellenar esta sección con valores predeterminados en inglés`,"profileEditor.content.loadDefaultsNotice":`Los valores predeterminados son solo en inglés — tradúcelos usando la pestaña de idioma de arriba.`,"profileEditor.content.importError":`No se pudo analizar el archivo cargado. Asegúrate de que coincida con el formato de plantilla de idioma de Consenti.`,"profileEditor.content.mainBanner":`Banner principal`,"profileEditor.content.gpcBanner":`Banner GPC`,"profileEditor.content.prefModal":`Modal de preferencias`,"profileEditor.content.heading":`Encabezado`,"profileEditor.content.subheading":`Subencabezado`,"profileEditor.content.bodyText":`Texto principal`,"profileEditor.content.introText":`Texto de introducción (opcional)`,"profileEditor.content.buttonLabels":`Etiquetas de botones`,"profileEditor.content.categoryHeading":`Encabezado de categoría`,"profileEditor.content.categoryDesc":`Descripción de categoría`,"profileEditor.content.categoryFallback":`Categoría {{n}}`,"profileEditor.content.buttonLabelPlaceholder":`Texto del botón…`,"profileEditor.content.categoryDescPlaceholder":`Descripción de esta categoría de cookies…`,"profileEditor.content.liDescription":`Descripción del interés legítimo (opcional)`,"profileEditor.content.liDescriptionPlaceholder":`Nos basamos en un interés legítimo porque…`,"profileEditor.content.liDescriptionHint":`Tu justificación de la prueba de ponderación del RGPD para basarte en el interés legítimo, mostrada a los visitantes. Opcional — también puedes cubrir esto en la descripción de la categoría anterior.`,"profileEditor.content.mainBannerHeadingPlaceholder":`Valoramos tu privacidad`,"profileEditor.content.mainBannerBodyPlaceholder":`Usamos cookies para mejorar tu experiencia…`,"profileEditor.content.gpcHeadingPlaceholder":`Se detectó Global Privacy Control`,"profileEditor.content.prefHeadingPlaceholder":`Preferencias de privacidad`,"profileEditor.content.prefSubheadingPlaceholder":`Gestiona tus preferencias de cookies a continuación.`,"profileEditor.content.prefIntroPlaceholder":`Introducción opcional sobre las categorías…`,"profileEditor.content.noContent":`Selecciona una plantilla de UI en el paso 2 para comenzar a editar el contenido.`,"profileEditor.content.loadingTemplate":`Cargando plantilla…`,"profileEditor.nav.nextTemplates":`Siguiente: Plantillas`,"profileEditor.nav.nextContent":`Siguiente: Contenido`,"profileEditor.nav.nextMainBanner":`Siguiente: Banner principal`,"profileEditor.nav.nextGpcBanner":`Siguiente: Banner GPC`,"profileEditor.nav.nextPrefModal":`Siguiente: Modal de preferencias`,"profileEditor.action.create":`Crear perfil`,"profileEditor.action.save":`Guardar perfil`,"profileEditor.error.nameRequired":`El nombre del perfil es obligatorio.`,"profileEditor.error.nameRequiredContinue":`El nombre del perfil es obligatorio antes de continuar.`,"profileEditor.error.cookieRequired":`Selecciona una plantilla de cookie.`,"profileEditor.error.cookieContinue":`Selecciona una plantilla de cookie para continuar.`,"profileEditor.error.uiRequired":`Selecciona una plantilla de UI.`,"profileEditor.error.uiContinue":`Selecciona una plantilla de UI para continuar.`,"profileEditor.error.failed":`No se pudo guardar el perfil.`,"profileEditor.error.load":`No se pudo cargar el perfil.`,"profileEditor.table.noNoCookies":`No hay cookies definidas en esta plantilla.`,"profileEditor.table.id":`ID`,"profileEditor.table.legalBasis":`Base legal`,"profileEditor.table.mandatory":`Obligatorio`,"profileEditor.table.gpc":`GPC`,"profileEditor.table.tcfVendor":`Proveedor TCF`,"profileEditor.table.cpraCategory":`Categoría CPRA`,"profileEditor.table.cookies":`Cookies`,"profileEditor.export.json":`JSON`,"profileEditor.export.csv":`CSV`,"profileEditor.export.import":`Importar`,"profileEditor.export.jsonTitle":`Descargar contenido de idioma como JSON`,"profileEditor.export.csvTitle":`Descargar contenido de idioma como CSV para traducción`,"profileEditor.export.importTitle":`Subir JSON o CSV traducido`,"profileEditor.newLink":`+ Nuevo ↗`,_section_consentTemplates:`── Plantillas de cookies ─────────────────────────`,"consentTemplates.title":`Plantillas de cookies`,"consentTemplates.count":`{{n}} plantillas`,"consentTemplates.countSingular":`{{n}} plantilla`,"consentTemplates.new":`+ Nueva plantilla de cookies`,"consentTemplates.empty.title":`Aún no hay plantillas de cookies.`,"consentTemplates.empty.hint":`Las plantillas de cookies definen la lista de cookies/propósitos para tus perfiles de consentimiento. Crea una para reutilizarla en varios perfiles.`,"consentTemplates.search.placeholder":`Search consent templates…`,"consentTemplates.col.name":`Name`,"consentTemplates.col.cookies":`Cookies`,"consentTemplates.required":`obligatorio`,"consentTemplates.dialog.delete.title":`¿Eliminar "{{name}}"?`,"consentTemplates.dialog.delete.message":`Esta plantilla de cookies se eliminará de forma permanente. Los perfiles vinculados perderán sus definiciones de cookies.`,"consentTemplates.editor.title.new":`Nueva plantilla de cookies`,"consentTemplates.editor.title.edit":`Editar plantilla de cookies`,"consentTemplates.editor.name":`Nombre de la plantilla`,"consentTemplates.editor.namePlaceholder":`p. ej., Google Analytics + Ads`,"consentTemplates.editor.nameRequired":`El nombre de la plantilla es obligatorio.`,"consentTemplates.editor.definitions":`Definiciones de cookies`,"consentTemplates.editor.empty":`Aún no hay cookies definidas. Añade una arriba.`,"consentTemplates.editor.addCookie":`+ Añadir cookie`,"consentTemplates.editor.idNoMatches":`No hay claves conocidas que coincidan — aún puedes escribir un ID personalizado`,"consentTemplates.editor.error.allIds":`Todas las cookies deben tener un ID.`,"consentTemplates.editor.error.uniqueIds":`Los IDs de cookie deben ser únicos.`,"consentTemplates.editor.error.failed":`No se pudo guardar la plantilla.`,"consentTemplates.editor.error.notFound":`Plantilla no encontrada.`,"consentTemplates.editor.action.create":`Crear plantilla`,"consentTemplates.editor.action.save":`Guardar plantilla`,"consentTemplates.editor.showTcf":`Proveedores TCF`,"consentTemplates.editor.showCpra":`Categoría CPRA`,"consentTemplates.editor.infoHint":`Haz clic en un encabezado de columna para obtener más información`,"consentTemplates.editor.infoUsage":`Uso`,"consentTemplates.editor.infoLaws":`Orientación regulatoria`,"consentTemplates.editor.infoExamples":`Ejemplos`,"consentTemplates.col.id":`ID de cookie`,"consentTemplates.col.idShort":`ID / Nombre`,"consentTemplates.col.gpc":`Respetar señal GPC`,"consentTemplates.col.gpcShort":`GPC`,"consentTemplates.col.tcfVendor":`IDs de proveedores TCF`,"consentTemplates.col.cpraCategory":`Categoría de datos CPRA`,"consentTemplates.col.tcfVendorShort":`Proveedor TCF`,"consentTemplates.col.cpraCategoryShort":`Categoría CPRA`,"consentTemplates.col.purpose":`Propósito de la cookie`,"consentTemplates.col.purposeShort":`Propósito`,"consentTemplates.purpose.necessary":`Necesaria`,"consentTemplates.purpose.functional":`Funcional`,"consentTemplates.purpose.preferences":`Preferencias`,"consentTemplates.purpose.analytics":`Analítica`,"consentTemplates.purpose.marketing":`Marketing`,"consentTemplates.editor.purposePlaceholder":`Seleccionar propósito…`,"consentTemplates.editor.error.purpose":`Cada cookie debe tener un propósito.`,_section_uiTemplates:`── Plantillas de UI ──────────────────────────────`,"uiTemplates.title":`Plantillas de UI`,"uiTemplates.count":`{{n}} plantillas`,"uiTemplates.countSingular":`{{n}} plantilla`,"uiTemplates.new":`+ Nueva plantilla de UI`,"uiTemplates.empty.title":`Aún no hay plantillas de UI.`,"uiTemplates.empty.hint":`Las plantillas de UI definen la configuración visual — posiciones, botones, categorías — de tus banners y modales de consentimiento.`,"uiTemplates.search.placeholder":`Search UI templates…`,"uiTemplates.col.name":`Name`,"uiTemplates.col.positions":`Positions`,"uiTemplates.col.buttons":`Buttons`,"uiTemplates.mainBanner":`Banner principal:`,"uiTemplates.gpcBanner":`Banner GPC:`,"uiTemplates.modal":`Modal:`,"uiTemplates.categories":`{{n}} categorías`,"uiTemplates.dialog.delete.title":`¿Eliminar "{{name}}"?`,"uiTemplates.dialog.delete.message":`Esta plantilla de UI se eliminará de forma permanente. Los perfiles vinculados perderán sus ajustes de UI.`,"uiTemplates.editor.title.new":`Nueva plantilla de UI`,"uiTemplates.editor.title.edit":`Editar plantilla de UI`,"uiTemplates.editor.name":`Nombre de la plantilla`,"uiTemplates.editor.nameRequired":`El nombre de la plantilla es obligatorio.`,"uiTemplates.editor.namePlaceholder":`p. ej., Diseño estándar RGPD`,"uiTemplates.editor.loading":`Cargando plantilla…`,"uiTemplates.editor.tabMain":`Banner principal`,"uiTemplates.editor.tabGpc":`Banner GPC`,"uiTemplates.editor.tabModal":`Modal de preferencias`,"uiTemplates.editor.mainBannerHint":`Se muestra en la primera visita cuando aún no se ha registrado el consentimiento.`,"uiTemplates.editor.gpcBannerHint":`Se muestra en lugar del banner principal cuando se detecta una señal GPC (autoHonorGPC activado).`,"uiTemplates.editor.error.notFound":`Plantilla no encontrada.`,"uiTemplates.editor.error.buttons":`Todos los botones deben tener un id.`,"uiTemplates.editor.error.uniqueButtonIds":`Button IDs must be unique.`,"uiTemplates.editor.error.customButtons":`Todos los botones de acción "personalizados" deben tener cookies seleccionadas.`,"uiTemplates.editor.error.catIds":`Todos los IDs de categoría son obligatorios.`,"uiTemplates.editor.error.uniqueCatIds":`Los IDs de categoría deben ser únicos.`,"uiTemplates.editor.error.catCookies":`Cada categoría debe incluir al menos una cookie.`,"uiTemplates.editor.error.failed":`No se pudo guardar la plantilla.`,"uiTemplates.editor.action.create":`Crear plantilla`,"uiTemplates.editor.action.save":`Guardar plantilla`,_section_sites:`── Sitios / Inquilinos ─────────────────────────────`,"sites.title":`Sitios / Inquilinos`,"sites.createNew":`Crear sitio nuevo`,"sites.namePlaceholder":`Nombre del sitio`,"sites.slugPlaceholder":`slug (p. ej., site-a)`,"sites.col.name":`Nombre`,"sites.col.slug":`Slug`,"sites.col.id":`ID`,"sites.col.created":`Creado`,"sites.empty":`Aún no hay sitios.`,"sites.dialog.delete.title":`¿Eliminar "{{name}}"?`,"sites.dialog.delete.message":`Este sitio y todos los datos asociados se eliminarán de forma permanente. Esto no se puede deshacer.`,_section_vendors:`── Proveedores TCF ─────────────────────────────────`,"vendors.title":`Lista de proveedores TCF`,"vendors.info.title":`¿Qué es la lista de proveedores TCF?`,"vendors.searchPlaceholder":`Buscar proveedores…`,"vendors.gvlMeta":`GVL v{{version}} · {{total}} proveedores`,"vendors.loading":`Cargando lista de proveedores…`,"vendors.noResults":`No se encontraron proveedores.`,"vendors.col.id":`ID`,"vendors.col.name":`Nombre`,"vendors.col.purposes":`Propósitos`,"vendors.col.liPurposes":`Propósitos de interés legítimo`,"vendors.col.specialPurposes":`Propósitos especiales`,"vendors.pagination":`Página {{page}} de {{totalPages}} · {{total}} proveedores en total`,"vendors.prev":`← Anterior`,"vendors.next":`Siguiente →`,_section_audit:`── Registro de auditoría ─────────────────────────`,"audit.title":`Registro de auditoría`,"audit.empty":`Aún no hay eventos de auditoría.`,"audit.col.time":`Hora`,"audit.col.action":`Acción`,"audit.col.resource":`Recurso`,"audit.col.resourceId":`ID del recurso`,"audit.col.actor":`Actor`,"audit.actor.system":`sistema`,"audit.viewHistory":`Comparar`,"audit.searchPlaceholder":`Buscar acción, recurso, actor…`,"audit.detail.title":`Entrada de auditoría`,"audit.detail.oldData":`Datos anteriores`,"audit.detail.newData":`Datos nuevos`,_section_apiConfig:`── Configuración de la API ───────────────────────`,"apiConfig.title":`Configuración de la API`,"apiConfig.public.heading":`API pública`,"apiConfig.public.about.text":`Usada por el widget para enviar y gestionar el consentimiento. No tiene token de autenticación: los orígenes permitidos abajo son su único control de acceso.`,"apiConfig.public.about.link":`Abrir referencia de la API pública en consenti.dev`,"apiConfig.admin.heading":`API de administrador`,"apiConfig.admin.about.text":`Usa estos tokens para llamar a la API de administrador de Consenti desde scripts, CI/CD o integraciones del lado del servidor. Cada ruta, formato de solicitud/respuesta y encabezado de autenticación está documentado en consenti.dev.`,"apiConfig.admin.about.link":`Abrir referencia de la API de administrador en consenti.dev`,"apiConfig.endpoint.heading":`Endpoint`,"apiConfig.endpoint.hint":`URL base para este despliegue, resuelta a partir de tu configuración.`,"apiConfig.origins.heading":`Orígenes permitidos`,"apiConfig.origins.hint":`Solo se aceptarán solicitudes desde estos orígenes. Usa * para permitir todos (no recomendado en producción).`,"apiConfig.origins.publicNote":`La API pública no tiene token de autenticación: esta lista es su único control de acceso.`,"apiConfig.origins.adminNote":`Una capa adicional sobre la autenticación por token Bearer. Incluye el propio origen de este panel ({{origin}}) para no bloquearte a ti mismo.`,"apiConfig.origins.placeholder":`https://example.com`,"apiConfig.origins.empty":`No hay orígenes configurados: actualmente se permiten todos los orígenes.`,"apiConfig.origins.errorDuplicate":`Ya está en la lista.`,"apiConfig.origins.errorSave":`No se pudo guardar. Inténtalo de nuevo.`,"apiConfig.origins.remove":`Eliminar`,"apiConfig.tokens.heading":`Tokens de API de administrador`,"apiConfig.tokens.hint":`Tokens Bearer para acceso del servidor y CI/CD a la API de administración de Consenti. Pásalos como Authorization: Bearer <token>. Nunca los expongas en código del lado del cliente: conceden acceso administrativo completo.`,"apiConfig.tokens.created":`Token creado: cópialo ahora, no se volverá a mostrar.`,"apiConfig.tokens.placeholder":`Nombre del token (p. ej., despliegue CI)`,"apiConfig.tokens.empty":`Aún no hay tokens.`,"apiConfig.tokens.errorName":`El nombre es obligatorio`,"apiConfig.tokens.errorCreate":`No se pudo crear el token`,"apiConfig.tokens.col.name":`Nombre`,"apiConfig.tokens.col.status":`Estado`,"apiConfig.tokens.col.created":`Creado`,"apiConfig.tokens.status.active":`Activo`,"apiConfig.tokens.status.revoked":`Revocado`,"apiConfig.tokens.status.expired":`Expired`,"apiConfig.tokens.col.expires":`Expires`,"apiConfig.tokens.expiresLabel":`Expires (optional)`,"apiConfig.tokens.expiresNever":`Never`,"apiConfig.tokens.dialog.title":`¿Revocar este token de API?`,"apiConfig.tokens.dialog.message":`Cualquier aplicación que use este token perderá el acceso de inmediato.`,"apiConfig.tokens.reactivate":`Reactivar`,"apiConfig.tokens.deleteDialog.title":`¿Eliminar permanentemente este token de API?`,"apiConfig.tokens.deleteDialog.message":`Esto elimina el registro del token por completo y no se puede deshacer. Ya no será posible reactivarlo.`,_section_settings:`── Ajustes ───────────────────────────────────────`,"settings.title":`Ajustes`,"settings.account.heading":`Cuenta`,"settings.account.email":`Correo electrónico:`,"settings.account.roles":`Roles:`,"settings.account.id":`ID:`,"settings.account.changePassword":`Cambiar contraseña`,"settings.export.heading":`Exportar datos`,"settings.export.hint":`Descarga todos los registros de consentimiento o los registros de auditoría.`,"settings.export.consentCsv":`Consentimientos CSV`,"settings.export.consentXlsx":`Consentimientos XLSX`,"settings.export.consentJson":`Consentimientos JSON`,"settings.export.auditCsv":`Auditoría CSV`,"settings.about.heading":`Acerca de`,"settings.about.text":`Consenti v0.1.0 — Plataforma de gestión de consentimientos de código abierto y compatible con RGPD.`,"settings.about.license":`Licencia Apache 2.0.`,_section_changePassword:`── Cambiar contraseña ───────────────────────────`,"changePassword.title":`Cambiar contraseña`,"changePassword.hint":`Elige una contraseña segura de al menos 12 caracteres.`,"changePassword.success":`Contraseña actualizada correctamente.`,"changePassword.newPassword":`Nueva contraseña`,"changePassword.newPasswordPlaceholder":`Mín. 12 caracteres`,"changePassword.confirmPassword":`Confirmar nueva contraseña`,"changePassword.confirmPasswordPlaceholder":`Repite la nueva contraseña`,"changePassword.submit":`Actualizar contraseña`,"changePassword.submitting":`Guardando…`,"changePassword.error.minLength":`La contraseña debe tener al menos 12 caracteres.`,"changePassword.error.mismatch":`Las contraseñas no coinciden.`,"changePassword.error.failed":`No se pudo actualizar la contraseña.`,"login.showPassword":`Show password`,"login.hidePassword":`Hide password`,"users.allowedSites":`Allowed Sites`,"users.allowedSitesHint":`(leave empty to allow all)`,"users.edit.title":`Edit User: {{name}}`,"users.edit.error.save":`Failed to save changes.`,"users.edit.resetPassword":`Restablecer contraseña`,"users.edit.resetPasswordHint":`(déjalo en blanco para mantener la contraseña actual)`,"users.edit.newPassword":`Nueva contraseña`,"users.edit.confirmNewPassword":`Confirmar nueva contraseña`,"users.edit.passwordTooShort":`La contraseña debe tener al menos 12 caracteres`,"users.detail.title":`Usuario`,"users.detail.allSites":`Todos los sitios`,"profileEditor.import.imported":`Imported {{n}} locales: {{list}}`,"profileEditor.import.importedSingular":`Imported 1 locale: {{list}}`,"profileEditor.import.skipped":`Skipped {{n}} unrecognised locale keys: {{list}}`,"profileEditor.import.skippedSingular":`Skipped 1 unrecognised locale key: {{list}}`,"profileEditor.config.selectDefaultLocale":`Select default locale…`,"profileEditor.config.complianceGroup":`Compliance Group`,"profileEditor.config.complianceGroupNone":`None / Custom`,"profileEditor.config.customComplianceGroup":`Custom group name`,"profileEditor.config.customComplianceGroupPlaceholder":`e.g. internal-testing`,"profileEditor.config.customComplianceGroupHint":`Lower-kebab-case identifier. The widget's compliance.type config uses this to fetch the profile — required, since there's no other way to address it. Only one profile can be active per name at a time. No compliance-rule defaults are applied (those only exist for the built-in groups above).`,"profileEditor.config.gpcMode":`GPC Signal Mode`,"profileEditor.config.gpcModeDefault":`Default (inherit from compliance group)`,"profileEditor.config.gpcModePlaceholder":`Default`,"profileEditor.config.hidePoweredBy":`Hide "Powered by Consenti"`,"profileEditor.config.hidePoweredByHint":`Remove the branding link from the consent banner.`,"profileEditor.config.allowReceipt":`Allow consent receipt`,"profileEditor.config.allowReceiptHint":`Let visitors download a PDF receipt of their consent choices.`,"profileEditor.config.enhanceAccessibility":`Mejorar accesibilidad`,"profileEditor.config.enhanceAccessibilityHint":`Aplica el tamaño mínimo de botones WCAG 2.1 AA (44px), anillos de foco visibles y etiquetas para lectores de pantalla al widget de consentimiento.`,"profileEditor.config.showFooterMetadata":`Mostrar metadatos en el pie`,"profileEditor.config.showFooterMetadataHint":`Muestra una franja en el banner y modal con el ID de consentimiento, fecha, versión del perfil y un enlace a la configuración de privacidad.`,"profileEditor.conflict.title":`Active profile conflict`,"profileEditor.conflict.message":`Profile "{{name}}" is already active for this compliance group. Only one profile can be active per group.`,"profileEditor.conflict.deactivate":`Deactivate "{{name}}" and activate this one`,"profileEditor.conflict.saveInactive":`Save this profile as inactive`,"profileEditor.compliance.errors.heading":`Compliance errors — fix before continuing:`,"profileEditor.compliance.warnings.heading":`Compliance warnings:`,"profileEditor.compliance.warnings.acknowledge":`I acknowledge these warnings and wish to continue`,"profileEditor.compliance.preGrantOverridden":`Pre-grant was overridden for these parameters — this compliance group requires an explicit opt-in, so "Pre Grant" cannot stay enabled.`,"profileEditor.content.selectLocale":`Select locale…`,"profileEditor.content.addLocale":`+ Add locale`,"profileEditor.content.defaultLocaleLabel":`(default)`,_section_readability:`── Readability Warnings ─────────────────────────`,"readability.headingTooLong":`Heading is {{n}} characters — keep it under 80 for readability.`,"readability.avgSentenceLong":`Average sentence length is {{n}} words — aim for 25 or fewer.`,"readability.totalWordsLong":`Text is {{n}} words long — consider keeping banner copy under 150 words.`,"consentTemplates.editor.gpcMandatoryTitle":`Mandatory cookies are never auto-denied by GPC`,"consentTemplates.editor.loadDefaultsBtn":`Click here to load default cookies list`,"consentTemplates.editor.confirmUpdate.title":`Update template used by {{n}} profiles?`,"consentTemplates.editor.confirmUpdate.titleSingular":`Update template used by 1 profile?`,"consentTemplates.editor.confirmUpdate.message":`Profiles: {{names}}.
|
|
2
|
+
|
|
3
|
+
Saving will update cookie definitions for all profiles using this template. Continue?`,"uiTemplates.editor.loadDefaultsPrompt":`Start from scratch, or load a sensible default structure (buttons, categories, positions).`,"uiTemplates.editor.loadDefaultsBtn":`Load Defaults`,"uiTemplates.editor.confirmUpdate.title":`Update template used by {{n}} profiles?`,"uiTemplates.editor.confirmUpdate.titleSingular":`Update template used by 1 profile?`,"uiTemplates.editor.confirmUpdate.message":`Profiles: {{names}}.
|
|
4
|
+
|
|
5
|
+
Saving will apply UI changes to all profiles using this template. Continue?`,"uiTemplates.editor.wizard.stepOf":`Paso {{step}} de {{total}}`,"uiTemplates.editor.wizard.next":`Siguiente`,"uiTemplates.editor.wizard.back":`Atrás`,"uiTemplates.editor.stackButtonsOnBreakpoint":`Apilar botones (px)`,"uiTemplates.editor.stackButtonsOnBreakpointHint":`Los botones se apilan verticalmente por debajo de este ancho. 0 = desactivado. Predeterminado: 576.`,"uiTemplates.editor.trapFocus":`Retener foco`,"uiTemplates.editor.trapFocusHint":`Confina el foco de teclado (Tab) en el contenedor de consentimiento mientras este banner o modal sea visible.`,_section_howItWorks:`── Cómo funciona Consenti ────────────────────────────`,"nav.howItWorks":`Cómo funciona Consenti`,"howItWorks.title":`Cómo funciona Consenti`,"howItWorks.intro":`Consenti es una plataforma de gestión de consentimiento de código abierto y cumplimiento con el RGPD. Gestiona la recopilación, almacenamiento e informes de consentimiento de cookies para sus sitios web. Esta guía le explica el flujo de trabajo principal y describe cada sección del panel.`,"howItWorks.workflow.heading":`Flujo de trabajo principal`,"howItWorks.workflow.step1.title":`Definir categorías de cookies`,"howItWorks.workflow.step1.desc":`Vaya a Banners de consentimiento → Plantillas de cookies y cree una plantilla con todas las categorías de cookies de su sitio (p. ej., análisis, marketing). Establezca la base legal y la caducidad de cada categoría.`,"howItWorks.workflow.step2.title":`Diseñar la interfaz de consentimiento`,"howItWorks.workflow.step2.desc":`Vaya a Banners de consentimiento → Plantillas de UI y configure el diseño visual de su banner y modal de preferencias — etiquetas de botones, colores, estilo de diseño y visualización de categorías.`,"howItWorks.workflow.step3.title":`Crear un perfil de consentimiento`,"howItWorks.workflow.step3.desc":`Vaya a Banners de consentimiento → Perfiles y combine una Plantilla de cookies con una Plantilla de UI. Añada texto traducido para cada idioma, habilite las normativas necesarias (RGPD, CCPA, DPDPA) y publique.`,"howItWorks.workflow.step4.title":`Integrar el widget`,"howItWorks.workflow.step4.desc":`Copie su clave de API desde API → Configuración y añada la etiqueta de script de Consenti a su sitio web. El widget obtiene su perfil publicado y muestra el banner de consentimiento automáticamente.`,"howItWorks.workflow.step5.title":`Monitorear y auditar`,"howItWorks.workflow.step5.desc":`Use las páginas Consentimientos y Visitantes para revisar registros de consentimiento en tiempo real. Use el Registro de auditoría para un historial inalterable de todas las acciones administrativas como evidencia de cumplimiento.`,"howItWorks.features.heading":`Funcionalidades del panel`,"howItWorks.features.dashboard.title":`Panel`,"howItWorks.features.dashboard.desc":`La pantalla principal muestra KPIs en tiempo real — total de consentimientos, tasa de aceptación, tasa de rechazo y un gráfico de series temporales. Úselo para detectar tendencias y evaluar el impacto de los cambios en el banner.`,"howItWorks.features.reports.title":`Informes`,"howItWorks.features.reports.desc":`Tendencia de aceptación en un rango de fechas, más desgloses por categoría e idioma (concedido/denegado/objetado). Requiere el permiso stats:view.`,"howItWorks.features.consentTemplates.title":`Plantillas de cookies`,"howItWorks.features.consentTemplates.desc":`Listas reutilizables de categorías de cookies. Cada categoría tiene un ID, base legal (consentimiento, interés legítimo, necesario), gestión de señal GPC, caducidad y mapeo opcional de proveedor TCF o categoría CPRA.`,"howItWorks.features.uiTemplates.title":`Plantillas de UI`,"howItWorks.features.uiTemplates.desc":`Controla la apariencia del banner de consentimiento, el aviso GPC y el modal de preferencias. Configure conjuntos de botones, etiquetas de encabezado, opacidad de superposición y orden de visualización de categorías.`,"howItWorks.features.profiles.title":`Perfiles`,"howItWorks.features.profiles.desc":`Un perfil es la unidad desplegable. Vincula una Plantilla de cookies con una Plantilla de UI, almacena contenido multilingüe y sigue un número de versión para retroceder. Solo un perfil por dominio puede estar activo a la vez.`,"howItWorks.features.consents.title":`Consentimientos`,"howItWorks.features.consents.desc":`Un registro buscable y filtrable de todos los registros de consentimiento enviados por los visitantes. Cada registro muestra el ID de visitante, perfil utilizado, idioma, señal GPC, decisiones de consentimiento y marca de tiempo.`,"howItWorks.features.visitors.title":`Visitantes`,"howItWorks.features.visitors.desc":`Una lista de identificadores de visitantes únicos en sus sitios, con su país, fecha de primer acceso y fecha de último acceso. Los IDs de visitante son UUID seudónimos almacenados sin direcciones IP.`,"howItWorks.features.users.title":`Usuarios`,"howItWorks.features.users.desc":`Gestione las cuentas de administrador que pueden iniciar sesión en este panel. Asigne roles, active o desactive cuentas y restrinja usuarios a sitios específicos en implementaciones multitenant.`,"howItWorks.features.roles.title":`Roles`,"howItWorks.features.roles.desc":`Defina conjuntos de permisos con nombre (p. ej., Visor, Editor, Administrador). Asigne permisos granulares como consent:view, profile:edit o audit:view a cada rol y luego asigne roles a los usuarios.`,"howItWorks.features.vendors.title":`Proveedores`,"howItWorks.features.vendors.desc":`Explore la Lista Global de Proveedores (GVL) de IAB para buscar IDs de proveedores TCF, propósitos declarados y propósitos de interés legítimo. Use estos IDs al configurar categorías de cookies en sus plantillas.`,"howItWorks.features.audit.title":`Registro de auditoría`,"howItWorks.features.audit.desc":`Un registro de solo adición e inalterable de cada acción administrativa — guardados de perfiles, cambios de usuarios, creación de claves de API y más. Necesario para las obligaciones de responsabilidad del RGPD.`,"howItWorks.features.api.title":`API y claves`,"howItWorks.features.api.desc":`Genere y revoque tokens de API, configure orígenes CORS permitidos para la API pública de consentimiento y explore la referencia interactiva de OpenAPI para entender cada endpoint.`,"howItWorks.features.settings.title":`Configuración`,"howItWorks.features.settings.desc":`Vea los detalles de su cuenta, cambie su contraseña y exporte datos de consentimiento o auditoría como CSV, XLSX o JSON para análisis sin conexión o presentaciones regulatorias.`,"howItWorks.docs.heading":`Documentación completa`,"howItWorks.docs.text":`Guías detalladas, referencias de configuración, ejemplos de integración y un playground en vivo están disponibles en el sitio de documentación de Consenti.`,"howItWorks.docs.link":`Abrir consenti.dev/docs →`,"howItWorks.consentFlow.heading":`Flujo de consentimiento extremo a extremo`,"howItWorks.consentFlow.step1.title":`Widget inicializado`,"howItWorks.consentFlow.step1.desc":`El script de Consenti se carga en el navegador del visitante y lee su configuración (clave API, compliance.type). Si ya existe una cookie de consentimiento válida y no expirada, el widget se cierra silenciosamente — no se muestra ningún banner.`,"howItWorks.consentFlow.step2.title":`Jurisdicción detectada`,"howItWorks.consentFlow.step2.desc":`Si compliance.type es 'auto', el widget llama a GET /resolve-profile enviando la zona horaria, el encabezado Accept-Language y la dirección IP del visitante. El servidor asigna estas señales a un complianceGroup mediante el mapa de país → conformidad integrado.`,"howItWorks.consentFlow.step3.title":`Perfil obtenido`,"howItWorks.consentFlow.step3.desc":`El widget obtiene el perfil activo para el complianceGroup resuelto y el idioma del visitante. La respuesta es un objeto JSON plano con todo el texto del banner, las categorías de cookies, los ajustes de la interfaz y los indicadores de regulación — listo para renderizar.`,"howItWorks.consentFlow.step4.title":`Banner renderizado`,"howItWorks.consentFlow.step4.desc":`El widget renderiza el banner o el modal de preferencias usando la plantilla UI del perfil. Las categorías obligatorias están marcadas previamente y no pueden desmarcarse. Las categorías opcionales muestran su base legal (consentimiento o interés legítimo).`,"howItWorks.consentFlow.step5.title":`Consentimiento enviado`,"howItWorks.consentFlow.step5.desc":`Cuando el visitante actúa (Aceptar todo, Rechazar todo o Guardar preferencias), el widget envía un POST a la API con el registro de consentimiento: ID de visitante, versión del perfil, estado por categoría (otorgado/denegado/objetado), señal GPC, marca de tiempo e idioma.`,"howItWorks.consentFlow.step6.title":`Almacenado y auditado`,"howItWorks.consentFlow.step6.desc":`La API valida la carga útil, almacena el registro de consentimiento y añade una entrada al registro de auditoría de solo anexión. El registro del visitante se actualiza con el país y las fechas de primera/última visita. El widget escribe la cookie de consentimiento para que visitas futuras omitan el banner.`,"howItWorks.profileResolution.heading":`Algoritmo de resolución de perfil`,"howItWorks.profileResolution.intro":`Cuando llega un visitante, Consenti resuelve en cinco pasos qué perfil de consentimiento mostrar.`,"howItWorks.profileResolution.step1.title":`Señales geográficas recopiladas`,"howItWorks.profileResolution.step1.desc":`El widget envía tres señales a GET /resolve-profile: la zona horaria del navegador (Intl.DateTimeFormat), el encabezado Accept-Language (o parámetro lang), y la dirección IP del lado del servidor.`,"howItWorks.profileResolution.step2.title":`País determinado`,"howItWorks.profileResolution.step2.desc":`El servidor intenta en orden: (1) geolocalización por IP a través del geoDataProvider configurado; (2) tabla de zona horaria → país; (3) heurística de etiqueta de idioma → país (p. ej. 'es' → ES). El primer resultado no vacío prevalece.`,"howItWorks.profileResolution.step3.title":`Grupo de cumplimiento asignado`,"howItWorks.profileResolution.step3.desc":`El código de país ISO-3166-1 alfa-2 (más el código de región/estado opcional) se busca en el mapa integrado PAÍS → GRUPO_DE_CUMPLIMIENTO. Una anulación regional (p. ej. US/CA → optOutCalifornia) tiene prioridad sobre el valor predeterminado del país.`,"howItWorks.profileResolution.step4.title":`Perfil activo localizado`,"howItWorks.profileResolution.step4.desc":`El sistema consulta la base de datos para encontrar el perfil activo cuyo complianceGroup coincida con el grupo resuelto. Solo un perfil por complianceGroup puede estar activo a la vez. Si no existe ninguno, se devuelve 404 y el widget puede usar un profileOverride.`,"howItWorks.profileResolution.step5.title":`Idioma resuelto`,"howItWorks.profileResolution.step5.desc":`El mejor idioma se elige mediante: (1) coincidencia exacta con el idioma solicitado por el widget; (2) coincidencia por prefijo de idioma (p. ej. 'es-AR' → 'es'); (3) idioma resuelto por el proveedor; (4) defaultLocale del perfil. El JSON resuelto se sirve desde un archivo estático (perfiles publicados) o directamente desde la base de datos (vistas previas).`,"howItWorks.complianceGroups.heading":`Grupos de cumplimiento`,"howItWorks.complianceGroups.intro":`Cada país del mundo se asigna a uno de ocho grupos de cumplimiento. Cada grupo determina el modelo de consentimiento que debe seguir el widget.`,"howItWorks.complianceGroups.optIn.title":`optIn — GDPR / ePrivacy Opt-In estricto`,"howItWorks.complianceGroups.optIn.desc":`Se requiere consentimiento previo antes de establecer cookies no esenciales. Los visitantes deben tener la opción genuina de rechazar, la retirada debe ser tan fácil como dar el consentimiento, y se deben ofrecer opciones granulares por categoría.`,"howItWorks.complianceGroups.optIn.laws":`GDPR, Directiva ePrivacy, UK GDPR, PECR, revFADP (CH), KVKK (TR), PDPA (TH) y otras leyes nacionales estrictas`,"howItWorks.complianceGroups.optIn.countries":`Todos los estados miembros de la UE, Reino Unido, Suiza, Turquía, Tailandia, Islandia, Liechtenstein, Noruega, Guernsey, Gibraltar y otros países con normas ePrivacy estrictas`,"howItWorks.complianceGroups.optInDPDPA.title":`optInDPDPA — India DPDPA`,"howItWorks.complianceGroups.optInDPDPA.desc":`La Ley de Protección de Datos Personales Digitales de India 2023 requiere consentimiento explícito opt-in. Obligaciones adicionales: nombrar un Data Fiduciary, proporcionar un aviso de consentimiento dedicado y respaldar los derechos de los Data Principals. Establezca el campo dpdpaDataFiduciary en su perfil.`,"howItWorks.complianceGroups.optInDPDPA.laws":`Ley de Protección de Datos Personales Digitales 2023 (DPDPA)`,"howItWorks.complianceGroups.optInDPDPA.countries":`India (IN)`,"howItWorks.complianceGroups.optInChina.title":`optInChina — Marco legal múltiple de China`,"howItWorks.complianceGroups.optInChina.desc":`La gobernanza de datos de China requiere consentimiento explícito bajo la PIPL, combinado con obligaciones de la Ley de Seguridad de Datos (DSL) y la Ley de Ciberseguridad (CSL). Requisitos adicionales aplican a transferencias transfronterizas de datos y clasificación de datos.`,"howItWorks.complianceGroups.optInChina.laws":`Ley de Protección de Información Personal (PIPL), Ley de Seguridad de Datos (DSL), Ley de Ciberseguridad (CSL)`,"howItWorks.complianceGroups.optInChina.countries":`China (CN)`,"howItWorks.complianceGroups.optOutCalifornia.title":`optOutCalifornia — California CCPA / CPRA`,"howItWorks.complianceGroups.optOutCalifornia.desc":`Los datos pueden recopilarse por defecto, pero los consumidores deben tener una opción clara de opt-out de la venta o compartición de sus datos personales. La señal GPC (Global Privacy Control) debe respetarse como un opt-out válido.`,"howItWorks.complianceGroups.optOutCalifornia.laws":`CCPA, CPRA (California Consumer Privacy Act / California Privacy Rights Act)`,"howItWorks.complianceGroups.optOutCalifornia.countries":`Estados Unidos — California (US/CA)`,"howItWorks.complianceGroups.optOutUSState.title":`optOutUSState — Otros estados de EE. UU.`,"howItWorks.complianceGroups.optOutUSState.desc":`Modelado según el marco de opt-out de California. Los consumidores pueden optar por no participar en publicidad dirigida y la venta de datos personales. Varios estados exigen respetar la señal GPC.`,"howItWorks.complianceGroups.optOutUSState.laws":`CDPA (VA), CPA (CO), CTDPA (CT), UCPA (UT), TDPSA (TX), DPDPA (DE), NJDPA (NJ), OCPA (OR), MCDPA (MN), MODPA (MD), KCDPA (KY), TIPA (TN), NDPA (NE), ICDPA (IA/IN), MCDPA (MT), NHPA (NH), RIDTPA (RI)`,"howItWorks.complianceGroups.optOutUSState.countries":`Estados Unidos — VA, CO, CT, UT, TX, DE, NJ, OR, MN, MD, KY, TN, NE, IA, IN, MT, NH, RI`,"howItWorks.complianceGroups.generalPrivacyConsent.title":`generalPrivacyConsent — Privacidad general / Consentimiento`,"howItWorks.complianceGroups.generalPrivacyConsent.desc":`Existe una ley general de privacidad pero no impone un requisito estricto de banner de cookies al estilo PECR/ePrivacy. La mejor práctica es ofrecer una opción de consentimiento para cookies no esenciales y un aviso de privacidad claro, pero el umbral legal es inferior al opt-in del GDPR.`,"howItWorks.complianceGroups.generalPrivacyConsent.laws":`PIPEDA / Ley 25 (CA), LGPD (BR — usar hybridBrazil), POPIA (ZA), APPI (JP), Privacy Act (AU/NZ), PDPA-SG, PDPA-MY, PIPA-KR, PDPD-VN, DPA-PH, PDP-ID y muchos otros`,"howItWorks.complianceGroups.generalPrivacyConsent.countries":`Canadá, Australia, Nueva Zelanda, Japón, Corea del Sur, Singapur, Malasia, Sudáfrica y muchos países de América Latina, África y Asia`,"howItWorks.complianceGroups.hybridBrazil.title":`hybridBrazil — Brasil LGPD`,"howItWorks.complianceGroups.hybridBrazil.desc":`La LGPD de Brasil es similar al GDPR pero las cookies de analítica y publicidad pueden tratarse bajo la base legal de interés legítimo según la evaluación del responsable del tratamiento. Se muestra el banner, pero la base legal por categoría puede ser más matizada que el opt-in estricto del GDPR.`,"howItWorks.complianceGroups.hybridBrazil.laws":`Lei Geral de Proteção de Dados (LGPD)`,"howItWorks.complianceGroups.hybridBrazil.countries":`Brasil (BR)`,"howItWorks.complianceGroups.noticeOnly.title":`noticeOnly — Solo aviso de privacidad`,"howItWorks.complianceGroups.noticeOnly.desc":`No aplica ninguna regulación específica de cookies, o el régimen existente solo requiere un aviso de privacidad — no un banner obligatorio de opt-in u opt-out. Mostrar un banner de consentimiento sigue siendo recomendable para la transparencia, pero no está legalmente obligado.`,"howItWorks.complianceGroups.noticeOnly.laws":`Variable — países sin regulación dedicada de cookies / ePrivacy`,"howItWorks.complianceGroups.noticeOnly.countries":`Muchos países de África, Asia Central, el Caribe y el Pacífico no cubiertos por los grupos anteriores`,"howItWorks.enums.heading":`Referencia de valores clave`,"howItWorks.enums.legalBasis.heading":`legalBasis (categoría de cookie)`,"howItWorks.enums.legalBasis.mandatory":`mandatory — La categoría está siempre activa independientemente del consentimiento (p. ej. sesión, autenticación). Nunca bloqueada por GPC o señales de opt-out.`,"howItWorks.enums.legalBasis.consent":`consent — Requiere opt-in explícito del visitante. Bloqueado por defecto; bloqueado por GPC en todas las jurisdicciones opt-in.`,"howItWorks.enums.legalBasis.legitimateInterest":`legitimate_interest — Se basa en el interés legítimo del responsable. Activo por defecto; el visitante puede objetar. Soft-bloqueado por GPC en algunas jurisdicciones (UE, Reino Unido).`,"howItWorks.enums.consentStatus.heading":`ConsentStatus (por registro de categoría)`,"howItWorks.enums.consentStatus.granted":`granted — El visitante dio consentimiento explícito para esta categoría.`,"howItWorks.enums.consentStatus.denied":`denied — El visitante rechazó explícitamente el consentimiento para esta categoría.`,"howItWorks.enums.consentStatus.objected":`objected — El visitante objetó a una categoría de interés legítimo (opt-out, no un rechazo de consentimiento).`,"howItWorks.enums.geoProvider.heading":`Opciones de geoDataProvider`,"howItWorks.enums.geoProvider.default":`default / timezone — Usa la zona horaria del navegador (Intl.DateTimeFormat) para inferir el país, con respaldo en Accept-Language. Sin dependencia adicional.`,"howItWorks.enums.geoProvider.language":`language — Deriva el país solo del encabezado Accept-Language (p. ej. 'es' → ES, 'pt' → BR). Rápido pero impreciso.`,"howItWorks.enums.geoProvider.geoip":`geoip — Usa el paquete npm geoip-lite con una base de datos MaxMind Lite integrada. Requerido: npm install geoip-lite.`,"howItWorks.enums.geoProvider.hostedGeoipLite":`hosted-geoip-lite — Llama a ipinfo.io mediante HTTPS integrado (sin dependencia extra). Añade ~50–200 ms por primera visita.`,"howItWorks.enums.geoProvider.maxmind":`maxmind — Usa el paquete npm maxmind con un archivo local GeoLite2-City.mmdb. El más preciso. Requiere la variable de entorno MAXMIND_DB_PATH y npm install maxmind.`,"howItWorks.enums.geoProvider.custom":`Función personalizada — Pase una CountryResolverFn a compliance.geoDataProvider para integrar cualquier proveedor de geo-IP o CDN.`,"consentTemplates.editor.categories":`Consent Categories`,"consentTemplates.editor.addCategory":`+ Add Category`,"consentTemplates.editor.noCategories":`No categories defined yet. Add one above.`,"consentTemplates.editor.error.noCategories":`At least one category is required.`,"consentTemplates.editor.error.catIds":`All categories must have an ID.`,"consentTemplates.editor.error.uniqueCatIds":`Category IDs must be unique.`,"consentTemplates.editor.error.catCookies":`Every category must contain at least one parameter.`,"consentTemplates.editor.error.uncategorized":`Parameter "{{id}}" is not assigned to any category.`,"consentTemplates.editor.error.multiCategory":`Parameter "{{id}}" is assigned to more than one category.`,"consentTemplates.editor.error.purposeLegalBasisMismatch":`Parameter "{{id}}" has a non-necessary purpose but is assigned to a Mandatory category — this grants a tracking parameter with no consent gate.`,"consentTemplates.editor.warning.necessaryNotMandatory":`Parameter "{{id}}" has purpose "necessary" but is assigned to a non-Mandatory category — this may break site functionality since it can be denied.`,"cookieTemplates.editor.trackerDetected":`Detectado: {{vendor}}`,"consentTemplates.col.preGrantShort":`Pre Grant`,"profileEditor.config.expiryDays":`Re-consent Interval (days)`,"profileEditor.config.expiryDaysHint":`How many days until stored consent expires and the visitor is asked again.`,"profileEditor.error.expiryDays":`Expiry (days) must be at least 1.`,"profileEditor.error.customComplianceGroupRequired":`Enter a custom group name, or pick a compliance group above.`,"profileEditor.table.preGrant":`Pre Grant`,"profileEditor.table.preGrantLocked":`Already effectively pre-granted — only editable when the category's legal basis is Consent`,"profileEditor.content.receiptHeading":`Consent Receipt Checkbox`,"profileEditor.content.receiptHint":`Shown in the preference modal when "Allow consent receipt" is enabled in Step 1.`,"profileEditor.content.receiptLabel":`Checkbox label`,"profileEditor.content.receiptDescription":`Description`,"profileEditor.error.missingRequiredContent":`Falta contenido obligatorio para el idioma «{{locale}}»; revisa la pestaña resaltada.`,"profileEditor.nudge.title":`Campo opcional vacío`,"profileEditor.nudge.headingBlank":`Dejaste el encabezado vacío. Los visitantes verán el banner sin uno.`,"profileEditor.nudge.introBlank":`Dejaste el texto introductorio vacío. Los visitantes verán el panel de preferencias sin él.`,"profileEditor.nudge.addNow":`Añadir ahora`,"profileEditor.nudge.ignore":`Ignorar`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-MdjI3m3u.js";var t=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]);export{t};
|