directus-brazilian-pix
Version:
Brazilian PIX key extensions for Directus - Complete PIX key input with type selection and validation (CPF, CNPJ, Phone, Email)
2 lines (1 loc) • 20.1 kB
JavaScript
import{defineInterface as e,defineDisplay as t}from"@directus/extensions-sdk";import{defineComponent as a,ref as n,computed as l,watch as o,onMounted as i,resolveComponent as r,openBlock as d,createElementBlock as c,createElementVNode as s,createCommentVNode as u,createVNode as p,withCtx as f,toDisplayString as v,normalizeClass as y,createSlots as m,createTextVNode as h,resolveDirective as g,withDirectives as x,createBlock as b,withModifiers as k}from"vue";var C=(e=>(e.CPF="cpf",e.CNPJ="cnpj",e.PHONE="phone",e.EMAIL="email",e))(C||{});const w={cpf:"CPF",cnpj:"CNPJ",phone:"Telefone",email:"E-mail"},_={cpf:"person",cnpj:"business",phone:"phone",email:"email"},P={cpf:"123.456.789-01",cnpj:"12.345.678/0001-90",phone:"(11) 99999-9999",email:"exemplo@email.com"};function I(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function T(e){if(!e)return null;const t=e.replace(/\s+/g,"");if(I(t))return"email";const a=t.replace(/\D/g,"");if(11===a.length){const e=parseInt(a.substring(0,2));return[11,12,13,14,15,16,17,18,19,21,22,24,27,28,31,32,33,34,35,37,38,41,42,43,44,45,46,47,48,49,51,53,54,55,61,62,64,63,65,66,67,68,69,71,73,74,75,77,79,81,87,82,83,84,85,88,86,89,91,93,94,92,97,95,96,98,99].includes(e)&&"9"===a.charAt(2)?"phone":"cpf"}return 10===a.length?"phone":14===a.length?"cnpj":null}function $(e,t){switch(t){case"cpf":return function(e){const t=e.replace(/\D/g,"");return 0===t.length?"":t.length<=3?t:t.length<=6?t.replace(/(\d{3})(\d{1,3})/,"$1.$2"):t.length<=9?t.replace(/(\d{3})(\d{3})(\d{1,3})/,"$1.$2.$3"):t.slice(0,11).replace(/(\d{3})(\d{3})(\d{3})(\d{1,2})/,"$1.$2.$3-$4")}(e);case"cnpj":return function(e){const t=e.replace(/\D/g,"");return 0===t.length?"":t.length<=2?t:t.length<=5?t.replace(/(\d{2})(\d{1,3})/,"$1.$2"):t.length<=8?t.replace(/(\d{2})(\d{3})(\d{1,3})/,"$1.$2.$3"):t.length<=12?t.replace(/(\d{2})(\d{3})(\d{3})(\d{1,4})/,"$1.$2.$3/$4"):t.slice(0,14).replace(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{1,2})/,"$1.$2.$3/$4-$5")}(e);case"phone":return function(e){const t=e.replace(/\D/g,"");return 0===t.length?"":t.length<=2?`(${t}`:t.length<=6?t.replace(/(\d{2})(\d{1,4})/,"($1) $2"):t.length<=10?t.replace(/(\d{2})(\d{4})(\d{1,4})/,"($1) $2-$3"):t.slice(0,11).replace(/(\d{2})(\d{5})(\d{1,4})/,"($1) $2-$3")}(e);case"email":return e.trim().toLowerCase();default:return e}}function X(e,t){if(!e)return!1;switch(t){case"cpf":return function(e){const t=e.replace(/\D/g,"");if(11!==t.length||/^(\d)\1{10}$/.test(t))return!1;let a=0;for(let e=0;e<9;e++)a+=parseInt(t.charAt(e))*(10-e);let n=11-a%11;n>9&&(n=0),a=0;for(let e=0;e<10;e++)a+=parseInt(t.charAt(e))*(11-e);let l=11-a%11;return l>9&&(l=0),n===parseInt(t.charAt(9))&&l===parseInt(t.charAt(10))}(e);case"cnpj":return function(e){const t=e.replace(/\D/g,"");if(14!==t.length||/^(\d)\1{13}$/.test(t))return!1;let a=t.length-2,n=t.substring(0,a);const l=t.substring(a);let o=0,i=a-7;for(let e=a;e>=1;e--)o+=parseInt(n.charAt(a-e))*i--,i<2&&(i=9);let r=o%11<2?0:11-o%11;if(r!==parseInt(l.charAt(0)))return!1;a+=1,n=t.substring(0,a),o=0,i=a-7;for(let e=a;e>=1;e--)o+=parseInt(n.charAt(a-e))*i--,i<2&&(i=9);return r=o%11<2?0:11-o%11,r===parseInt(l.charAt(1))}(e);case"phone":return function(e){const t=e.replace(/\D/g,"");if(t.length<10||t.length>11)return!1;const a=parseInt(t.substring(0,2));if(![11,12,13,14,15,16,17,18,19,21,22,24,27,28,31,32,33,34,35,37,38,41,42,43,44,45,46,47,48,49,51,53,54,55,61,62,64,63,65,66,67,68,69,71,73,74,75,77,79,81,87,82,83,84,85,88,86,89,91,93,94,92,97,95,96,98,99].includes(a))return!1;if(11===t.length&&9!==parseInt(t.charAt(2)))return!1;if(10===t.length){const e=parseInt(t.charAt(2));if(![2,3,4,5,6,7,8,9].includes(e))return!1}return!0}(e);case"email":return I(e);default:return!1}}const A={class:"pix-key-container"},N={class:"pix-key-input-group"},D={class:"pix-type-selector"},K={class:"type-selection"},q={class:"type-option"},O={class:"pix-key-input"},J={key:0,class:"error-message"},S={key:1,class:"success-message"},z={key:2,class:"auto-detect-indicator"};var F=a({__name:"interface",props:{value:{default:null},placeholder:{default:"Selecione o tipo de chave PIX..."},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},autoDetectType:{type:Boolean,default:!0},allowedTypes:{default:()=>[]},defaultType:{default:"cpf"},validateKey:{type:Boolean,default:!0}},emits:["input"],setup(e,{emit:t}){const a=e,g=t,x=n(null),b=n(!1),k=n(""),I=n(!1),F=n(!1),j=l((()=>{const e=Object.values(C);return(a.allowedTypes?.length?a.allowedTypes:e).map((e=>({value:e,label:w[e],icon:_[e]})))}));l((()=>x.value?P[x.value]:a.placeholder));const B=l((()=>{if(!a.value||!x.value)return"";try{const e=JSON.parse(a.value);if(e.key)return $(e.key,x.value)}catch{return $(a.value,x.value)}return""})),E=()=>{switch(x.value){case C.CPF:return 14;case C.CNPJ:return 18;case C.PHONE:return 15;case C.EMAIL:return 254;default:return 255}},V=e=>{if(b.value=!1,k.value="",I.value=!1,!e&&a.required)return b.value=!0,k.value="Chave PIX é obrigatória",!1;if(!e)return!0;if(!x.value)return b.value=!0,k.value="Selecione o tipo de chave PIX",!1;if(a.validateKey){if(!X(e,x.value))return b.value=!0,k.value=`Chave PIX ${t=x.value,w[t]} inválida`,!1;I.value=!0}var t;return!0},Q=e=>{if(F.value&&(F.value=!1),!e||""===e.trim())return g("input",null),b.value=!1,k.value="",void(I.value=!1);if(a.autoDetectType&&e&&!x.value){const t=T(e);!t||a.allowedTypes?.length&&!a.allowedTypes.includes(t)||(x.value=t,F.value=!0)}let t=e;x.value&&(t=$(e,x.value)),V(t);const n={key:(x.value?function(e,t){switch(t){case"cpf":case"cnpj":case"phone":return e.replace(/\D/g,"");case"email":return e.trim().toLowerCase();default:return e}}(t,x.value):e)||null,type:x.value||null};g("input",JSON.stringify(n))},R=()=>{if(a.value&&x.value){try{const e=JSON.parse(a.value);if(e.key){const t=$(e.key,x.value);return void V(t)}}catch{}const e=$(a.value,x.value);V(e)}},H=e=>{if(x.value&&[C.CPF,C.CNPJ,C.PHONE].includes(x.value)){if(-1!==[8,9,27,13,46].indexOf(e.keyCode)||!0===e.ctrlKey&&-1!==[65,67,86,88,90].indexOf(e.keyCode)||!0===e.metaKey&&-1!==[65,67,86,88,90].indexOf(e.keyCode)||e.keyCode>=35&&e.keyCode<=40)return;(e.shiftKey||e.keyCode<48||e.keyCode>57)&&(e.keyCode<96||e.keyCode>105)&&e.preventDefault()}};return o(x,(e=>{if(F.value=!1,a.value&&e){try{const t=JSON.parse(a.value);if(t.key){const a=$(t.key,e);return void V(a)}}catch{}const t=$(a.value,e);V(t)}})),o((()=>a.value),(e=>{if(e){try{const t=JSON.parse(e);if(t.key&&t.type){x.value=t.type;const e=$(t.key,t.type);return void V(e)}}catch{}if(a.autoDetectType&&!x.value){const t=T(e);!t||a.allowedTypes?.length&&!a.allowedTypes.includes(t)||(x.value=t,F.value=!0)}if(x.value){const t=$(e,x.value);V(t)}}else b.value=!1,k.value="",I.value=!1})),i((()=>{if(!a.value&&a.defaultType){const e=a.defaultType;a.allowedTypes?.length&&!a.allowedTypes.includes(e)||(x.value=e)}})),(e,t)=>{const n=r("v-icon"),l=r("v-select"),o=r("v-input");return d(),c("div",A,[s("div",N,[u(" PIX Key Type Dropdown "),s("div",D,[p(l,{modelValue:x.value,"onUpdate:modelValue":t[0]||(t[0]=e=>x.value=e),items:j.value,"item-text":"label","item-value":"value",disabled:e.disabled,placeholder:"Tipo de chave",class:"type-dropdown"},{selection:f((({item:e})=>[s("div",K,[p(n,{name:e.icon,small:""},null,8,["name"]),s("span",null,v(e.label),1)])])),item:f((({item:e})=>[s("div",q,[p(n,{name:e.icon,small:""},null,8,["name"]),s("span",null,v(e.label),1)])])),_:1},8,["modelValue","items","disabled"])]),u(" PIX Key Input "),s("div",O,[p(o,{"model-value":B.value,placeholder:a.placeholder,disabled:a.disabled,class:y({"has-error":b.value}),"onUpdate:modelValue":Q,onBlur:R,onKeydown:H,maxlength:E()},m({prepend:f((()=>[p(n,{name:x.value?_[x.value]:"qr_code",class:"key-type-icon"},null,8,["name"])])),_:2},[b.value?{name:"append",fn:f((()=>[p(n,{name:"error",class:"error-icon"})])),key:"0"}:I.value&&e.value?{name:"append",fn:f((()=>[p(n,{name:"check_circle",class:"success-icon"})])),key:"1"}:void 0]),1032,["model-value","placeholder","disabled","class","maxlength"])])]),u(" Validation Messages "),b.value&&k.value?(d(),c("div",J,[p(n,{name:"error"}),h(" "+v(k.value),1)])):I.value&&e.value?(d(),c("div",S,v("Chave PIX válida"),1)):u("v-if",!0),u(" Auto-detection indicator "),e.autoDetectType&&F.value&&x.value?(d(),c("div",z,[p(n,{name:"auto_awesome",small:""}),t[1]||(t[1]=s("span",null,"Tipo detectado automaticamente",-1))])):u("v-if",!0)])}}}),j=[],B=[];function E(e,t){if(e&&"undefined"!=typeof document){var a,n=!0===t.prepend?"prepend":"append",l=!0===t.singleTag,o="string"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName("head")[0];if(l){var i=j.indexOf(o);-1===i&&(i=j.push(o)-1,B[i]={}),a=B[i]&&B[i][n]?B[i][n]:B[i][n]=r()}else a=r();65279===e.charCodeAt(0)&&(e=e.substring(1)),a.styleSheet?a.styleSheet.cssText+=e:a.appendChild(document.createTextNode(e))}function r(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),t.attributes)for(var a=Object.keys(t.attributes),l=0;l<a.length;l++)e.setAttribute(a[l],t.attributes[a[l]]);var i="prepend"===n?"afterbegin":"beforeend";return o.insertAdjacentElement(i,e),e}}E("\n.pix-key-container[data-v-01463dfd] {\n\twidth: 100%;\n}\n.pix-key-input-group[data-v-01463dfd] {\n\tdisplay: flex;\n\tgap: 8px;\n\talign-items: flex-start;\n}\n.pix-type-selector[data-v-01463dfd] {\n\tmin-width: 140px;\n\tflex-shrink: 0;\n}\n.pix-key-input[data-v-01463dfd] {\n\tflex: 1;\n}\n.type-dropdown[data-v-01463dfd] {\n\tborder-radius: 6px 0 0 6px;\n}\n.type-selection[data-v-01463dfd],\n.type-option[data-v-01463dfd] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n}\n.type-selection .v-icon[data-v-01463dfd],\n.type-option .v-icon[data-v-01463dfd] {\n\tcolor: var(--foreground-subdued);\n}\n.key-type-icon[data-v-01463dfd] {\n\tcolor: var(--foreground-subdued);\n}\n.has-error[data-v-01463dfd] {\n\tborder-color: var(--danger) !important;\n}\n.error-icon[data-v-01463dfd] {\n\tcolor: var(--danger);\n}\n.success-icon[data-v-01463dfd] {\n\tcolor: var(--success);\n}\n.message[data-v-01463dfd] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tfont-size: 12px;\n\tmargin-top: 6px;\n}\n.error-message[data-v-01463dfd] {\n\tfont-size: 12px;\n\tmargin-top: 4px;\n}\n.success-message[data-v-01463dfd] {\n\tfont-size: 12px;\n\tmargin-top: 4px;\n}\n.auto-detect-indicator[data-v-01463dfd] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tfont-size: 11px;\n\tcolor: var(--foreground-subdued);\n\tmargin-top: 4px;\n}\n@media (max-width: 600px) {\n.pix-key-input-group[data-v-01463dfd] {\n\t\tflex-direction: column;\n\t\tgap: 12px;\n}\n.pix-type-selector[data-v-01463dfd] {\n\t\tmin-width: unset;\n\t\twidth: 100%;\n}\n}\n",{});var V=(e,t)=>{const a=e.__vccOpts||e;for(const[e,n]of t)a[e]=n;return a},Q=e({id:"pix-key",name:"Brazilian PIX Key",description:"With type selection and validation (CPF, CNPJ, Phone, Email)",icon:"qr_code_2",component:V(F,[["__scopeId","data-v-01463dfd"],["__file","interface.vue"]]),types:["string"],group:"standard",options:[{field:"placeholder",name:"Placeholder",type:"string",meta:{width:"half",interface:"input"},schema:{default_value:"Digite ou cole sua chave PIX"}},{field:"disabled",name:"Disabled",type:"boolean",meta:{width:"half",interface:"boolean"},schema:{default_value:!1}},{field:"required",name:"Required",type:"boolean",meta:{width:"half",interface:"boolean"},schema:{default_value:!1}},{field:"auto_detect_type",name:"Auto-detect PIX Key Type",type:"boolean",meta:{width:"half",interface:"boolean",note:"Automatically detect PIX key type based on input format"},schema:{default_value:!0}},{field:"allowed_types",name:"Allowed PIX Key Types",type:"json",meta:{width:"full",interface:"select-multiple-checkbox",options:{choices:[{text:"CPF",value:"cpf"},{text:"CNPJ",value:"cnpj"},{text:"Telefone",value:"phone"},{text:"E-mail",value:"email"}]},note:"Select which PIX key types are allowed. Leave empty to allow all types."}},{field:"default_type",name:"Default PIX Key Type",type:"string",meta:{width:"half",interface:"select-dropdown",options:{choices:[{text:"CPF",value:"cpf"},{text:"CNPJ",value:"cnpj"},{text:"Telefone",value:"phone"},{text:"E-mail",value:"email"}]},note:"Default PIX key type when creating new items"},schema:{default_value:"cpf"}},{field:"show_type_selector",name:"Show Type Selector",type:"boolean",meta:{width:"half",interface:"boolean",note:"Mostrar seletor de tipo de chave"},schema:{default_value:!0}},{field:"validate_key",name:"Validate Key Format",type:"boolean",meta:{width:"half",interface:"boolean",note:"Validar formato da chave"},schema:{default_value:!0}}]});const R={class:"pix-key-content"},H={key:0,class:"type-icon"},L={class:"pix-key-value"},M=["title"],U={key:1,class:"no-value"},Y={key:1,class:"pix-key-actions"},G={key:0,class:"copy-success"},W={class:"dialog-title"},Z={class:"qr-code-container"},ee={class:"qr-code-placeholder"},te={class:"pix-key-text"};var ae=a({__name:"display",props:{value:{default:null},showTypeBadge:{type:Boolean,default:!0},formatKey:{type:Boolean,default:!0},hideKeyPartial:{type:Boolean,default:!1},copyToClipboard:{type:Boolean,default:!0},showQrCode:{type:Boolean,default:!1}},setup(e){const t=e,a=n(!1),o=n(!1),i=n(!1),m=l((()=>{if(!t.value)return null;try{const e=JSON.parse(t.value);if(e.key&&e.type)return{key:e.key,type:e.type}}catch{const e=T(t.value);if(e)return{key:t.value,type:e}}return{key:t.value,type:null}})),w=l((()=>m.value?.key||null)),P=l((()=>m.value?.type||null)),I=l((()=>{if(!w.value||!P.value)return w.value;let e=w.value;return t.formatKey&&(e=$(w.value,P.value)),t.hideKeyPartial&&[C.CPF,C.CNPJ].includes(P.value)&&(e=N(e,P.value)),e})),X=l((()=>a.value?"hourglass_empty":o.value?"check":"content_copy")),A=l((()=>a.value?"Copiando...":o.value?"Copiado!":"Copiar chave PIX")),N=(e,t)=>t===C.CPF?e.replace(/\d{3}\.\d{3}\.\d{3}/,"***.***.***"):t===C.CNPJ?e.replace(/\d{2}\.\d{3}\.\d{3}\/\d{4}/,"**.***.***/****"):e,D=async()=>{if(t.copyToClipboard&&w.value&&!a.value)try{a.value=!0,await navigator.clipboard.writeText(w.value),o.value=!0,setTimeout((()=>{o.value=!1}),2e3)}catch(e){console.error("Failed to copy PIX key:",e);try{const e=document.createElement("textarea");e.value=w.value,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),o.value=!0,setTimeout((()=>{o.value=!1}),2e3)}catch(e){console.error("Fallback copy also failed:",e)}}finally{a.value=!1}};return(e,t)=>{const a=r("v-icon"),n=r("v-card-title"),l=r("v-card-text"),m=r("v-button"),C=r("v-card-actions"),T=r("v-card"),$=r("v-dialog"),N=g("tooltip");return d(),c("div",{class:y(["pix-key-display",{clickable:e.copyToClipboard}]),onClick:D},[s("div",R,[u(" Type Icon Only "),P.value?(d(),c("div",H,[p(a,{name:(K=P.value,_[K]||"qr_code"),size:"16"},null,8,["name"])])):u("v-if",!0),u(" PIX Key Value "),s("div",L,[I.value?(d(),c("span",{key:0,title:e.copyToClipboard?"Clique para copiar":""},v(I.value),9,M)):(d(),c("span",U,"—"))]),u(" Actions "),w.value&&(e.copyToClipboard||e.showQrCode)?(d(),c("div",Y,[u(" Copy Icon "),e.copyToClipboard?x((d(),b(a,{key:0,name:X.value,size:"16",class:"action-icon",onClick:k(D,["stop"])},null,8,["name"])),[[N,A.value]]):u("v-if",!0),u(" QR Code Icon "),e.showQrCode?x((d(),b(a,{key:1,name:"qr_code",size:"16",class:"action-icon",onClick:t[0]||(t[0]=k((e=>i.value=!0),["stop"]))},null,512)),[[N,"Gerar QR Code"]]):u("v-if",!0)])):u("v-if",!0)]),u(" Copy Success Notification "),o.value?(d(),c("div",G,[p(a,{name:"check",size:"12"}),t[4]||(t[4]=s("span",null,"Copiado!",-1))])):u("v-if",!0),u(" QR Code Dialog "),p($,{modelValue:i.value,"onUpdate:modelValue":t[2]||(t[2]=e=>i.value=e),onEsc:t[3]||(t[3]=e=>i.value=!1)},{default:f((()=>[p(T,null,{default:f((()=>[p(n,null,{default:f((()=>[s("div",W,[p(a,{name:"qr_code"}),t[5]||(t[5]=s("span",null,"QR Code - Chave PIX",-1))])])),_:1}),p(l,null,{default:f((()=>[s("div",Z,[s("div",ee,[p(a,{name:"qr_code",size:"120"}),t[6]||(t[6]=s("p",null,"QR Code seria gerado aqui",-1)),s("p",te,v(w.value),1)])])])),_:1}),p(C,null,{default:f((()=>[p(m,{onClick:t[1]||(t[1]=e=>i.value=!1)},{default:f((()=>t[7]||(t[7]=[h("Fechar")]))),_:1})])),_:1})])),_:1})])),_:1},8,["modelValue"])],2);var K}}});E("\n.pix-key-display[data-v-46003c0f] {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tmax-width: 100%;\n\tposition: relative;\n}\n.pix-key-display.clickable[data-v-46003c0f] {\n\tcursor: pointer;\n}\n.pix-key-content[data-v-46003c0f] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tmin-width: 0;\n\tflex: 1;\n}\n.type-icon[data-v-46003c0f] {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcolor: rgba(0, 0, 0, 0.6);\n\tflex-shrink: 0;\n}\n.pix-key-value[data-v-46003c0f] {\n\tfont-family: var(--family-sans-serif);\n\tfont-size: 13px;\n\tmin-width: 0;\n\tflex: 1;\n\tcolor: rgba(0, 0, 0, 0.8);\n}\n.pix-key-value span[data-v-46003c0f] {\n\tword-break: break-all;\n}\n.no-value[data-v-46003c0f] {\n\tcolor: rgba(0, 0, 0, 0.4);\n\tfont-style: italic;\n}\n.pix-key-actions[data-v-46003c0f] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tflex-shrink: 0;\n}\n.action-icon[data-v-46003c0f] {\n\tcolor: rgba(0, 0, 0, 0.6);\n\tcursor: pointer;\n\ttransition: color 0.2s ease;\n}\n.action-icon[data-v-46003c0f]:hover {\n\tcolor: rgba(0, 0, 0, 0.8);\n}\n.copy-success[data-v-46003c0f] {\n\tposition: absolute;\n\ttop: -30px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tpadding: 4px 8px;\n\tbackground: rgba(0, 0, 0, 0.8);\n\tcolor: white;\n\tborder-radius: 4px;\n\tfont-size: 11px;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\tanimation: fadeInOut-46003c0f 2s ease-in-out;\n}\n@keyframes fadeInOut-46003c0f {\n0%, 100% { opacity: 0; transform: translateX(-50%) translateY(4px);\n}\n20%, 80% { opacity: 1; transform: translateX(-50%) translateY(0);\n}\n}\n.dialog-title[data-v-46003c0f] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n}\n.qr-code-container[data-v-46003c0f] {\n\tdisplay: flex;\n\tjustify-content: center;\n\tpadding: 20px;\n}\n.qr-code-placeholder[data-v-46003c0f] {\n\ttext-align: center;\n\tcolor: rgba(0, 0, 0, 0.4);\n}\n.qr-code-placeholder p[data-v-46003c0f] {\n\tmargin: 8px 0;\n}\n.pix-key-text[data-v-46003c0f] {\n\tfont-family: var(--family-sans-serif);\n\tfont-size: 12px;\n\tbackground: rgba(0, 0, 0, 0.05);\n\tpadding: 8px;\n\tborder-radius: 4px;\n\tword-break: break-all;\n}\n\n/* Responsive design */\n@media (max-width: 600px) {\n.pix-key-content[data-v-46003c0f] {\n\t\tflex-direction: column;\n\t\talign-items: flex-start;\n\t\tgap: 4px;\n}\n.type-icon[data-v-46003c0f] {\n\t\talign-self: flex-start;\n}\n}\n",{});const ne=[Q],le=[t({id:"brazilian-pix-key-display",name:"Brazilian PIX Key Display",description:"Display Brazilian PIX key with type badge and proper formatting",icon:"qr_code",component:V(ae,[["__scopeId","data-v-46003c0f"],["__file","display.vue"]]),types:["string"],options:[{field:"show_type_badge",name:"Show Type Badge",type:"boolean",meta:{width:"half",interface:"boolean",note:"Display a badge showing the PIX key type (CPF, CNPJ, Phone, Email)"},schema:{default_value:!0}},{field:"format_key",name:"Format Key",type:"boolean",meta:{width:"half",interface:"boolean",note:"Apply formatting to CPF, CNPJ, and phone numbers"},schema:{default_value:!0}},{field:"hide_key_partial",name:"Hide Partial Key",type:"boolean",meta:{width:"half",interface:"boolean",note:"Hide part of the key for privacy (CPF and CNPJ only)"},schema:{default_value:!1}},{field:"copy_to_clipboard",name:"Enable Copy to Clipboard",type:"boolean",meta:{width:"half",interface:"boolean",note:"Allow users to copy the PIX key by clicking on it"},schema:{default_value:!0}},{field:"show_qr_code",name:"Show QR Code Option",type:"boolean",meta:{width:"half",interface:"boolean",note:"Show a button to generate QR code for the PIX key"},schema:{default_value:!1}}]})],oe=[],ie=[],re=[],de=[],ce=[];export{le as displays,ne as interfaces,oe as layouts,ie as modules,ce as operations,re as panels,de as themes};