UNPKG

@directus-labs/seo-plugin

Version:

SEO plugin for Directus

1 lines 51.3 kB
import{useApi as e,defineInterface as t,defineDisplay as n}from"@directus/extensions-sdk";import{defineComponent as a,ref as i,onMounted as r,openBlock as o,createElementBlock as l,createElementVNode as s,toDisplayString as d,computed as c,normalizeClass as u,normalizeStyle as p,renderSlot as f,createVNode as v,createTextVNode as h,inject as m,toRefs as g,resolveComponent as b,resolveDirective as y,createBlock as w,unref as _,withCtx as x,createSlots as S,withDirectives as k,watch as O,createCommentVNode as T,Fragment as E,renderList as $}from"vue";import{useI18n as P}from"vue-i18n";function A(e){return e.charAt(0).toUpperCase()+e.substring(1)}var I=["2D","3D","4WD","A2O","AI","API","BIOS","CC","CCTV","CCV","CD","CD-ROM","CIA","CMS","COBOL","CSS","CSV","CV","DB","DIY","DNA","DVD","E3","EIN","ESPN","FAQ","FAQs","FBI","FORTRAN","FPS","FTP","HTML","HTTP","HTTPS","ID","IP","ISO","JS","JSON","LASER","M2A","M2M","M2MM","M2O","MMORPG","NAFTA","NASA","NDA","O2A","O2M","PDF","PHP","POP","RAM","RNGR","ROM","RPG","RTFM","RTS","SCUBA","SDK","SITCOM","SKU","SMTP","SQL","SSL","SSN","SWAT","TBS","TLS","TNA","TS","TTL","TV","UI","URL","USB","UWP","VIP","W3C","WWE","WWF","WWW","WYSIWYG"],C=["a","an","the"],F=["and","that","but","or","as","if","when","than","because","while","where","after","so","though","since","until","whether","before","although","nor","like","once","unless","now","except"],j=["about","above","across","after","against","along","among","around","at","because of","before","behind","below","beneath","beside","besides","between","beyond","but","by","concerning","despite","down","during","except","excepting","for","from","in","in front of","inside","in spite of","instead of","into","like","near","of","off","on","onto","out","outside","over","past","regarding","since","through","throughout","to","toward","under","underneath","until","up","upon","up to","with","within","without","with regard to","with respect to"],M=["2FA","4K","5K","8K","AGI","BI","ChatGPT","CTA","DateTime","FMS","GitHub","GPT","HD","IBMid","IDs","iMac","IMAX","iOS","iPad","iPhone","iPod","LDAP","LinkedIn","LLM","macOS","McDonalds","ML","MySQL","NLG","NLP","NLU","OpenAI","PDFs","PIM","PEFT","pH","PostgreSQL","SEO","TTS","UHD","UUID","XSS","YouTube"];function D(e,t,n){const a=e.toLowerCase(),i=e.toUpperCase();for(const e of M)if(e.toLowerCase()===a)return e;return I.includes(i)?i:0===t||t===n.length-1||e.length>=4?e:j.includes(a)||F.includes(a)||C.includes(a)?a:e}function N(e,t){return`${e} ${t}`}function L(e,t=new RegExp("\\s|-|_","g")){return(n=e,n.replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1_$2").toLowerCase()).split(t).map(A).map(D).reduce(N);var n}var z="object"==typeof global&&global&&global.Object===Object&&global,U="object"==typeof self&&self&&self.Object===Object&&self,V=z||U||Function("return this")(),G=V.Symbol,q=Object.prototype,B=q.hasOwnProperty,W=q.toString,R=G?G.toStringTag:void 0;var H=Object.prototype.toString;var K=G?G.toStringTag:void 0;function Y(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":K&&K in Object(e)?function(e){var t=B.call(e,R),n=e[R];try{e[R]=void 0;var a=!0}catch(e){}var i=W.call(e);return a&&(t?e[R]=n:delete e[R]),i}(e):function(e){return H.call(e)}(e)}function Q(e){return"symbol"==typeof e||function(e){return null!=e&&"object"==typeof e}(e)&&"[object Symbol]"==Y(e)}var Z=Array.isArray,J=G?G.prototype:void 0,X=J?J.toString:void 0;function ee(e){if("string"==typeof e)return e;if(Z(e))return function(e,t){for(var n=-1,a=null==e?0:e.length,i=Array(a);++n<a;)i[n]=t(e[n],n,e);return i}(e,ee)+"";if(Q(e))return X?X.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function te(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}var ne,ae=V["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(ae&&ae.keys&&ae.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var re=Function.prototype.toString;var oe=/^\[object .+?Constructor\]$/,le=Function.prototype,se=Object.prototype,de=le.toString,ce=se.hasOwnProperty,ue=RegExp("^"+de.call(ce).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pe(e){if(!te(e)||(t=e,ie&&ie in t))return!1;var t,n=function(e){if(!te(e))return!1;var t=Y(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}(e)?ue:oe;return n.test(function(e){if(null!=e){try{return re.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function fe(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return pe(n)?n:void 0}var ve=function(){try{var e=fe(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),he=/^(?:0|[1-9]\d*)$/;function me(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&he.test(e))&&e>-1&&e%1==0&&e<t}function ge(e,t){return e===t||e!=e&&t!=t}var be=Object.prototype.hasOwnProperty;function ye(e,t,n){var a=e[t];be.call(e,t)&&ge(a,n)&&(void 0!==n||t in e)||function(e,t,n){"__proto__"==t&&ve?ve(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}(e,t,n)}var we=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_e=/^\w*$/;var xe=fe(Object,"create");var Se=Object.prototype.hasOwnProperty;var ke=Object.prototype.hasOwnProperty;function Oe(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}function Te(e,t){for(var n=e.length;n--;)if(ge(e[n][0],t))return n;return-1}Oe.prototype.clear=function(){this.__data__=xe?xe(null):{},this.size=0},Oe.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Oe.prototype.get=function(e){var t=this.__data__;if(xe){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return Se.call(t,e)?t[e]:void 0},Oe.prototype.has=function(e){var t=this.__data__;return xe?void 0!==t[e]:ke.call(t,e)},Oe.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=xe&&void 0===t?"__lodash_hash_undefined__":t,this};var Ee=Array.prototype.splice;function $e(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}$e.prototype.clear=function(){this.__data__=[],this.size=0},$e.prototype.delete=function(e){var t=this.__data__,n=Te(t,e);return!(n<0)&&(n==t.length-1?t.pop():Ee.call(t,n,1),--this.size,!0)},$e.prototype.get=function(e){var t=this.__data__,n=Te(t,e);return n<0?void 0:t[n][1]},$e.prototype.has=function(e){return Te(this.__data__,e)>-1},$e.prototype.set=function(e,t){var n=this.__data__,a=Te(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this};var Pe=fe(V,"Map");function Ae(e,t){var n,a,i=e.__data__;return("string"==(a=typeof(n=t))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function Ie(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}Ie.prototype.clear=function(){this.size=0,this.__data__={hash:new Oe,map:new(Pe||$e),string:new Oe}},Ie.prototype.delete=function(e){var t=Ae(this,e).delete(e);return this.size-=t?1:0,t},Ie.prototype.get=function(e){return Ae(this,e).get(e)},Ie.prototype.has=function(e){return Ae(this,e).has(e)},Ie.prototype.set=function(e,t){var n=Ae(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this};function Ce(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var a=arguments,i=t?t.apply(this,a):a[0],r=n.cache;if(r.has(i))return r.get(i);var o=e.apply(this,a);return n.cache=r.set(i,o)||r,o};return n.cache=new(Ce.Cache||Ie),n}Ce.Cache=Ie;var Fe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,je=/\\(\\)?/g,Me=function(e){var t=Ce(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Fe,(function(e,n,a,i){t.push(a?i.replace(je,"$1"):n||e)})),t})),De=Me;function Ne(e,t){return Z(e)?e:function(e,t){if(Z(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Q(e))||_e.test(e)||!we.test(e)||null!=t&&e in Object(t)}(e,t)?[e]:De(function(e){return null==e?"":ee(e)}(e))}function Le(e){if("string"==typeof e||Q(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ze(e,t,n){return null==e?e:function(e,t,n,a){if(!te(e))return e;for(var i=-1,r=(t=Ne(t,e)).length,o=r-1,l=e;null!=l&&++i<r;){var s=Le(t[i]),d=n;if("__proto__"===s||"constructor"===s||"prototype"===s)return e;if(i!=o){var c=l[s];void 0===(d=a?a(c,s,l):void 0)&&(d=te(c)?c:me(t[i+1])?[]:{})}ye(l,s,d),l=l[s]}return e}(e,t,n)}const Ue={class:"field"},Ve={class:"search-container"},Ge={class:"search-preview"},qe={class:"preview-url"},Be=["src"],We={class:"preview-url-text"},Re={class:"truncate"},He={class:"url-path-container truncate"},Ke={class:"preview-url-path"},Ye={class:"preview-url-path"},Qe={class:"preview-title"},Ze={class:"preview-description"};var Je=a({__name:"SearchPreview",props:{title:{},metaDescription:{},collection:{}},setup(e){const t=i("");function n(e,t){return e?e.length>t?`${e.slice(0,t)}...`:e:""}return r((()=>{"undefined"!=typeof window&&(t.value=window.location.origin)})),(e,a)=>{return o(),l("div",Ue,[a[2]||(a[2]=s("label",{class:"label field-label type-label"},"Search Preview",-1)),s("div",Ve,[s("div",Ge,[s("div",qe,[s("img",{src:(null==(i=window.document.querySelector("link[rel='apple-touch-icon']"))?void 0:i.getAttribute("href"))||(null==(r=window.document.querySelector("link[rel='icon']"))?void 0:r.getAttribute("href"))||(null==(c=window.document.querySelector("link[rel='shortcut icon']"))?void 0:c.getAttribute("href"))||"/favicon.ico",class:"preview-url-favicon",width:"20",height:"20",alt:"favicon",onError:a[0]||(a[0]=e=>e.target.innerHTML="🌐")},null,40,Be),s("div",We,[s("p",Re,d(window.document.title.split("·")[1].trim()),1),s("p",He,[s("span",Ke,d(t.value),1),a[1]||(a[1]=s("span",{class:"preview-url-arrow"},"›",-1)),s("span",Ye,d(e.collection),1)])])]),s("div",Qe,d(n(e.title,60)||"Enter a title to see preview"),1),s("div",Ze,d(n(e.metaDescription,160)||"Enter a meta description to see preview"),1)])])]);var i,r,c}}}),Xe=[],et=[];function tt(e,t){if(e&&"undefined"!=typeof document){var n,a=!0===t.prepend?"prepend":"append",i=!0===t.singleTag,r="string"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName("head")[0];if(i){var o=Xe.indexOf(r);-1===o&&(o=Xe.push(r)-1,et[o]={}),n=et[o]&&et[o][a]?et[o][a]:et[o][a]=l()}else n=l();65279===e.charCodeAt(0)&&(e=e.substring(1)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(document.createTextNode(e))}function l(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),t.attributes)for(var n=Object.keys(t.attributes),i=0;i<n.length;i++)e.setAttribute(n[i],t.attributes[n[i]]);var o="prepend"===a?"afterbegin":"beforeend";return r.insertAdjacentElement(o,e),e}}tt(".field[data-v-0d3e54b8] {\n display: flex;\n flex-direction: column;\n}\n\n.label[data-v-0d3e54b8] {\n margin-bottom: 0.5rem;\n}\n\n.search-container[data-v-0d3e54b8] {\n border: 2px solid var(--theme--border-color);\n border-radius: var(--theme--border-radius);\n padding: 1.5rem;\n}\n\n.search-preview[data-v-0d3e54b8] {\n padding: 0;\n border: 1px solid var(--theme--border--color);\n border-radius: var(--theme--border-radius);\n font-family: arial, sans-serif;\n max-width: 600px;\n}\n\n.preview-url-text[data-v-0d3e54b8] {\n width: 100%;\n flex: 1;\n min-width: 0;\n color: color-mix(in srgb, var(--theme--foreground), #fff 20%);\n font-size: 12px;\n}\n\n.preview-url[data-v-0d3e54b8] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n font-size: 12px;\n color: #202124;\n line-height: 1.3;\n}\n\n.preview-url-favicon[data-v-0d3e54b8] {\n margin-right: 4px;\n}\n\n.preview-url-arrow[data-v-0d3e54b8] {\n flex-shrink: 0;\n margin: 0 4px;\n}\n\n.preview-title[data-v-0d3e54b8] {\n color: var(--theme--primary);\n font-size: 20px;\n line-height: 1.3;\n margin-bottom: 3px;\n font-weight: 400;\n cursor: pointer;\n}\n\n.preview-title[data-v-0d3e54b8]:hover {\n text-decoration: underline;\n}\n\n.preview-description[data-v-0d3e54b8] {\n color: #4d5156;\n font-size: 14px;\n line-height: 1.58;\n word-wrap: break-word;\n}\n\n.preview-url-text p[data-v-0d3e54b8] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.url-path-container[data-v-0d3e54b8] {\n display: flex;\n align-items: center;\n}\n\n.preview-url-path[data-v-0d3e54b8] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}",{});var nt=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n},at=nt(Je,[["__scopeId","data-v-0d3e54b8"],["__file","SearchPreview.vue"]]),it=(0).constructor,rt=it.isFinite;it.isInteger;var ot=[].constructor.isArray;function lt(e){return null!==e&&"object"==typeof e}function st(e,t){return void 0===t&&(t=0),"string"==typeof e&&e.length>=t}function dt(e){return rt(e)}function ct(e){return ot(e)}function ut(e,t){return lt(e)&&t in e}var pt=new(function(){function e(e){this.size=e,this.reset()}return e.prototype.reset=function(){this.oldestIndex=0,this.map={},this.cachedKeys=new Array(this.size)},e.prototype.get=function(e){return this.map[e]},e.prototype.set=function(e,t){this.map[e]=t;var n=this.cachedKeys[this.oldestIndex];void 0!==n&&delete this.map[n],this.cachedKeys[this.oldestIndex]=e,this.oldestIndex++,this.oldestIndex%=this.size},e}())(1e3);function ft(e){var t=e.charAt(0),n=e.substr(-1);if("'\"`".includes(t)||"'\"`".includes(n)){if(e.length<2||t!==n)throw new SyntaxError('Mismatching string quotation: "'+e+'"');return e.substring(1,e.length-1)}if(e.includes("["))throw new SyntaxError('Missing ] in varName "'+e+'"');return"+"===t?e.substr(1):e}function vt(e,t,n){var a=t.trim();if(""===a)return e;if(a.startsWith(".")){if(!n)throw new SyntaxError('Unexpected . at the start of "'+t+'"');if(""===(a=a.substr(1).trim()))return e}else if(n)throw new SyntaxError('Missing . at the start of "'+t+'"');if(a.endsWith("."))throw new SyntaxError('Unexpected "." at the end of "'+t+'"');for(var i=0,r=a.split(".");i<r.length;i++){var o=r[i].trim();if(""===o)throw new SyntaxError('Empty prop name when parsing "'+t+'"');e.push(o)}return e}function ht(e){if(!st(e))throw new TypeError("Cannot parse path. Expected string. Got a "+typeof e);for(var t,n,a=0,i=!1,r=new Array(0),o=0;o<e.length&&-1!==(t=e.indexOf("[",o));o=a){if(-1===(a=e.indexOf("]",t)))throw new SyntaxError('Missing ] in varName "'+e+'"');if(0===(n=e.substring(t+1,a).trim()).length)throw new SyntaxError("Unexpected token ]");a++,vt(r,e.substring(o,t),i),r.push(ft(n)),i=!0}return vt(r,e.substring(a),i)}function mt(e,t,n){if(void 0===n&&(n={}),!lt(n))throw new TypeError("get expects an object option. Got "+typeof n);var a=n.depth,i=void 0===a?10:a;if(!dt(i)||i<=0)throw new RangeError("Expected a positive number for depth. Got "+i);var r=Array.isArray(t)?t:ht.cached(t),o=function(){return r.join(" > ")};if(r.length>i)throw new ReferenceError("The path cannot be deeper than "+i+' levels. Got "'+o()+'"');for(var l=e,s=0,d=r;s<d.length;s++){var c=d[s];if(!ut(l,c)){if(n.propsExist)throw new ReferenceError(c+' is not defined in the scope at path: "'+o()+'"');return}l=l[c]}return l}ht.cached=function(e){var t=pt.get(e);return void 0===t&&(t=ht(e),pt.set(e,t)),t};var gt=function(){function e(e,t){var n=this;if(void 0===t&&(t={}),this.tokens=e,this.options=t,this.render=function(e){void 0===e&&(e={});var t=n.tokens.varNames.length;n.cacheParsedPaths();for(var a=new Array(t),i=0;i<t;i++)a[i]=mt(e,n.toPathCache[i],n.options);return n.stringify(a)},this.renderFn=function(e,t){void 0===t&&(t={});var a=n.resolveVarNames(e,t);return n.stringify(a)},this.renderFnAsync=function(e,t){return void 0===t&&(t={}),Promise.all(n.resolveVarNames(e,t)).then((function(e){return n.stringify(e)}))},!lt(e)||!ct(e.strings)||!ct(e.varNames)||e.strings.length!==e.varNames.length+1)throw new TypeError("Invalid tokens object");if(!lt(t))throw new TypeError("Options should be an object. Got a "+typeof t);t.validateVarNames&&this.cacheParsedPaths()}return e.prototype.cacheParsedPaths=function(){var e=this.tokens.varNames;if(void 0===this.toPathCache){this.toPathCache=new Array(e.length);for(var t=0;t<e.length;t++)this.toPathCache[t]=ht.cached(e[t])}},e.prototype.resolveVarNames=function(e,t){void 0===t&&(t={});var n=this.tokens.varNames;if("function"!=typeof e)throw new TypeError("Expected a resolver function. Got "+String(e));for(var a=n.length,i=new Array(a),r=0;r<a;r++)i[r]=e.call(null,n[r],t);return i},e.prototype.stringify=function(e){for(var t=this.tokens.strings,n=this.options.explicit,a=e.length,i="",r=0;r<a;r++){i+=t[r];var o=e[r];(n||null!=o)&&(i+=o)}return i+=t[a]},e}();function bt(e,t){void 0===t&&(t={});var n=function(e,t){if(void 0===t&&(t={}),!st(e))throw new TypeError("The template parameter must be a string. Got a "+typeof e);if(!lt(t))throw new TypeError("Options should be an object. Got a "+typeof t);var n=t.tags,a=void 0===n?["{{","}}"]:n,i=t.maxVarNameLength,r=void 0===i?1e3:i;if(!ct(a)||2!==a.length)throw TypeError("tags should be an array of two elements. Got "+String(a));var o=a[0],l=a[1];if(!st(o,1)||!st(l,1)||o===l)throw new TypeError('The open and close symbols should be two distinct non-empty strings. Got "'+o+'" and "'+l+'"');if(!dt(r)||r<=0)throw new Error("Expected a positive number for maxVarNameLength. Got "+r);for(var s,d,c=o.length,u=l.length,p=0,f=[],v=[],h=0;h<e.length&&-1!==(s=e.indexOf(o,h));){var m=s+c;if(-1===(p=e.substr(m,r+u).indexOf(l)))throw new SyntaxError('Missing "'+l+'" in the template for the "'+o+'" at position '+s+" within "+r+" characters");if(p+=m,0===(d=e.substring(m,p).trim()).length)throw new SyntaxError('Unexpected "'+l+'" tag found at position '+s);if(d.includes(o))throw new SyntaxError('Variable names cannot have "'+o+'". But at position '+s+'. Got "'+d+'"');v.push(d),p+=u,f.push(e.substring(h,s)),h=p}return f.push(e.substring(p)),{strings:f,varNames:v}}(e,t);return new gt(n,t)}const yt={missing:{icon:{name:"error",class:"error"},message:"Missing"},"too-long":{icon:{name:"warning",class:"warning"},message:"Too long"},"too-short":{icon:{name:"warning",class:"warning"},message:"Too short"},ideal:{icon:{name:"check",class:"success"},message:"Ideal length"}};function wt(e,t,n=i({})){const a=i(!1),r=i(!1),o=c((()=>{var t,n;return null!=(n=null==(t=e.value)?void 0:t.length)?n:0})),l=c((()=>e.value&&t?Math.min(o.value/t.maxLength*100,100):0)),s=c((()=>e.value&&t?o.value>t.maxLength?"too-long":o.value<t.minLength?"too-short":"ideal":"missing"));return{isTouched:a,isTemplateUpdate:r,state:c((()=>{const e=s.value,t=yt[e];return{length:o.value,progress:l.value,status:e,message:t.message,icon:t.icon}})),transform:function(e){if(!e)return"";try{return t=e,a=n.value,bt(t,i).render(a)}catch(t){return console.warn("Template rendering error:",t),e}var t,a,i}}}const _t={title:{field:"title",minLength:45,maxLength:60},meta_description:{field:"meta_description",minLength:130,maxLength:160}},xt={class:"progress-bar"};var St=a({__name:"ProgressBar",props:{progress:{},status:{}},setup:e=>(e,t)=>(o(),l("div",xt,[s("div",{class:u(["progress",e.status]),style:p({width:`${e.progress}%`})},null,6)]))});tt("\n.progress-bar[data-v-ca1c03b7] {\n\theight: 5px;\n\tbackground-color: var(--theme--background-subdued);\n\tborder-radius: 2.5px;\n\tmargin: 0.5rem 0;\n}\n.progress[data-v-ca1c03b7] {\n\theight: 100%;\n\tborder-radius: 2.5px;\n\ttransition: width 0.3s;\n}\n.progress.too-short[data-v-ca1c03b7] {\n\tbackground-color: var(--theme--warning);\n}\n.progress.ideal[data-v-ca1c03b7] {\n\tbackground-color: var(--theme--success);\n}\n.progress.too-long[data-v-ca1c03b7],\n.progress.missing[data-v-ca1c03b7] {\n\tbackground-color: var(--theme--danger);\n}\n",{});var kt=nt(St,[["__scopeId","data-v-ca1c03b7"],["__file","ProgressBar.vue"]]);const Ot={class:"field"},Tt={class:"label field-label type-label"},Et={class:"hint"};var $t=a({__name:"SeoFieldWrapper",props:{label:{},state:{},rule:{}},setup:e=>(e,t)=>{var n;return o(),l("div",Ot,[s("label",Tt,d(e.label),1),f(e.$slots,"default",{},void 0,!0),v(kt,{progress:e.state.progress,status:e.state.status},null,8,["progress","status"]),s("small",Et,[s("span",null,d(e.state.message),1),h(" "+d(e.rule.minLength)+"-"+d(e.rule.maxLength)+" characters recommended. (Current: "+d(null!=(n=e.state.length)?n:"?")+") ",1)])])}});tt("\n.field[data-v-54ed0d08] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.label[data-v-54ed0d08] {\n\tmargin-bottom: 0.5rem;\n}\n.hint[data-v-54ed0d08] {\n\tfont-size: 0.875rem;\n\tcolor: var(--theme--foreground-subdued);\n}\n",{});var Pt=nt($t,[["__scopeId","data-v-54ed0d08"],["__file","SeoFieldWrapper.vue"]]),At=a({__name:"MetaDescriptionField",props:{modelValue:{},template:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,i=m("values"),{modelValue:r}=g(n),{isTouched:l,isTemplateUpdate:s,state:d,transform:c}=wt(r,_t.meta_description,i);function u(e){s.value||(l.value=!0),a("update:modelValue",e),s.value=!1}return(e,t)=>{const n=b("v-icon"),a=b("v-button"),i=b("v-textarea"),l=y("tooltip");return o(),w(Pt,{label:"Meta Description",state:_(d),rule:_(_t).meta_description},{default:x((()=>[v(i,{"model-value":_(r),placeholder:"Enter your meta description","onUpdate:modelValue":u},S({_:2},[e.template&&!e.disabled?{name:"append",fn:x((()=>[k((o(),w(a,{"x-small":"",secondary:"",icon:"",class:"template-button",onClick:t[0]||(t[0]=t=>u(_(c)(e.template)))},{default:x((()=>[v(n,{name:"auto_fix_high"})])),_:1})),[[l,"Generate from template"]])])),key:"0"}:void 0]),1032,["model-value"])])),_:1},8,["state","rule"])}}});tt("\n.field[data-v-f86f5b5b] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.label[data-v-f86f5b5b] {\n\tfont-weight: bold;\n\tmargin-bottom: 0.5rem;\n}\n.hint[data-v-f86f5b5b] {\n\tfont-size: 0.875rem;\n\tcolor: var(--theme--foreground-subdued);\n}\n.textarea-wrapper[data-v-f86f5b5b] {\n\tposition: relative;\n}\n.template-button[data-v-f86f5b5b] {\n\tposition: absolute;\n\tz-index: 10;\n\tright: 8px;\n\ttop: 8px;\n}\n",{});var It=nt(At,[["__scopeId","data-v-f86f5b5b"],["__file","MetaDescriptionField.vue"]]);function Ct(){return function(e){const t=e.split("/"),n=t.indexOf("admin");return`${t.slice(0,n).join("/")}/`}(window.location.pathname)}const Ft={key:2,class:"image-preview"},jt={key:0,class:"image-error"},Mt={class:"message"},Dt=["src","alt"],Nt={key:2,class:"fallback"},Lt={key:3,class:"actions"},zt={class:"info"},Ut={class:"title"},Vt={class:"meta"};var Gt=a({__name:"OgImage",props:{value:{default:null},disabled:{type:Boolean,default:!1},folder:{default:void 0},fileKeyToGet:{default:"filename_disk"},crop:{type:Boolean,default:!1},letterbox:{type:Boolean,default:!1},width:{default:"auto"}},emits:["input"],setup(t,{emit:n}){const a=t,r=n,p=i(!1),f=i(null),m=i(!1),g=i(null),S=i(!0),E=e(),{t:$,te:A}=P();function I(e,t,n){const a=n||function(e){var t;return(null==(t=e.defaults.headers.common.Authorization)?void 0:t.split(" ")[1])||null}(e);return a?function(e,t){const n=[];for(const[e,a]of Object.entries(t))n.push(`${e}=${a}`);return e.includes("?")?`${e}&${n.join("&")}`:`${e}?${n.join("&")}`}(t,{access_token:a}):t}const C=c((()=>{var e;if(!(null==(e=f.value)?void 0:e.type))return null;if(f.value.type.includes("svg"))return I(E,`${Ct()}assets/${f.value.id}`);if(f.value.type.includes("image")){const e=a.crop?"cover":"contain",t=`${Ct()}assets/${f.value.id}?key=system-large-${e}&cache-buster=${f.value.modified_on}`;return I(E,t)}return null})),F=c((()=>{if(!f.value)return null;const{filesize:e,width:t,height:n,type:a}=f.value;return t&&n?`${t}x${n} • ${e} • ${a}`:`${e} • ${a}`})),j=c((()=>a.value&&"object"==typeof a.value?a.value:{}));async function M(){var e,t,n,a;if(S.value=!1,C.value)try{await E.get(C.value)}catch(i){g.value=null==(a=null==(n=null==(t=null==(e=i.response)?void 0:e.data)?void 0:t.errors[0])?void 0:n.extensions)?void 0:a.code,g.value&&A(`errors.${g.value}`)||(g.value="UNKNOWN")}}function D(e){f.value=e,r("input",e[a.fileKeyToGet])}function N(){r("input",null),p.value=!1,f.value=null,m.value=!1}function L(){f.value&&r("input",f.value[a.fileKeyToGet])}return O((()=>a.value),((e,t)=>{e!==t&&(e&&async function(){var e;p.value=!0;try{let t="string"==typeof a.value?a.value:null==(e=a.value)?void 0:e.id;t=t.split(".").slice(0,-1).join(".");const n=await E.get(`/files/${t}`,{params:{fields:["id","title","width","height","filesize","type","filename_download"]}});null!==a.value&&"object"==typeof a.value?f.value={...n.data.data,...a.value}:f.value=n.data.data}finally{p.value=!1}}(),t&&null===e&&N())}),{immediate:!0}),(e,t)=>{const n=b("v-skeleton-loader"),a=b("v-notice"),i=b("v-icon"),r=b("v-button"),c=b("drawer-item"),O=b("v-upload"),E=y("tooltip");return o(),l("div",null,[t[3]||(t[3]=s("label",{class:"label field-label type-label"},"Social Image",-1)),s("div",{class:u(["image",[e.width,{crop:e.crop}]])},[p.value?(o(),w(n,{key:0,type:"input-tall"})):e.disabled&&!f.value?(o(),w(a,{key:1,class:"disabled-placeholder",center:"",icon:"hide_image"},{default:x((()=>[h(d(_($)("no_image_selected")),1)])),_:1})):f.value?(o(),l("div",Ft,[g.value||!C.value?(o(),l("div",jt,[v(i,{large:"",name:"UNKNOWN"===g.value?"error":"info"},null,8,["name"]),s("span",Mt,d(C.value?_($)(`errors.${g.value}`):_($)("errors.UNSUPPORTED_MEDIA_TYPE")),1)])):S.value?(o(),l("img",{key:1,src:C.value,class:u({"is-letterbox":e.letterbox}),alt:f.value.title||"",role:"presentation",onError:M},null,42,Dt)):(o(),l("div",Nt,[v(i,{name:"description"})])),t[2]||(t[2]=s("div",{class:"shadow"},null,-1)),e.disabled?T("v-if",!0):(o(),l("div",Lt,[T(' <v-button v-tooltip="t(\'zoom\')" icon rounded @click="lightboxActive = true">\n\t\t\t\t\t\t<v-icon name="zoom_in" />\n\t\t\t\t\t</v-button> '),k((o(),w(r,{icon:"",rounded:"",href:C.value,download:f.value.filename_download},{default:x((()=>[v(i,{name:"download"})])),_:1},8,["href","download"])),[[E,_($)("download")]]),k((o(),w(r,{icon:"",rounded:"",onClick:t[0]||(t[0]=e=>m.value=!0)},{default:x((()=>[v(i,{name:"open_in_new"})])),_:1})),[[E,_($)("edit_item")]]),k((o(),w(r,{icon:"",rounded:"",onClick:N},{default:x((()=>[v(i,{name:"close"})])),_:1})),[[E,_($)("deselect")]])])),s("div",zt,[s("div",Ut,d(f.value.title),1),s("div",Vt,d(F.value),1)]),!e.disabled&&f.value?(o(),w(c,{key:4,active:m.value,"onUpdate:active":t[1]||(t[1]=e=>m.value=e),collection:"directus_files","primary-key":f.value.id,edits:j.value,onInput:L},null,8,["active","primary-key","edits"])):T("v-if",!0),T(" TODO: Add lightbox functionality "),T(' <file-lightbox\n\t\t\t\t\tv-if="image"\n\t\t\t\t\tv-model="lightboxActive"\n\t\t\t\t\t:id="image.id"\n\t\t\t\t\t:title="image.title"\n\t\t\t\t/> ')])):(o(),w(O,{key:3,"from-library":"","from-url":"",folder:e.folder,onInput:D},null,8,["folder"]))],2)])}}});tt(".label[data-v-2c4b3fd8] {\n margin-bottom: 0.5rem;\n}\n\n.image-preview[data-v-2c4b3fd8] {\n position: relative;\n width: 100%;\n height: var(--input-height-tall);\n overflow: hidden;\n background-color: var(--theme--background-normal);\n border-radius: var(--theme--border-radius);\n}\n.image-preview img[data-v-2c4b3fd8] {\n z-index: 1;\n width: 100%;\n height: 100%;\n max-height: inherit;\n object-fit: contain;\n}\n.image-preview img.is-letterbox[data-v-2c4b3fd8] {\n padding: 32px;\n}\n\n.image.full .image-preview[data-v-2c4b3fd8], .image.fill .image-preview[data-v-2c4b3fd8] {\n height: auto;\n max-height: 400px;\n}\n.image.crop .image-preview img[data-v-2c4b3fd8] {\n object-fit: cover;\n}\n\n.fallback[data-v-2c4b3fd8] {\n background-color: var(--theme--background-normal);\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--input-height-tall);\n border-radius: var(--theme--border-radius);\n}\n\n.image-error[data-v-2c4b3fd8] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: var(--theme--foreground-subdued);\n background-color: var(--theme--background-normal);\n}\n.image-error .v-icon[data-v-2c4b3fd8] {\n margin-bottom: 6px;\n}\n.image-error .message[data-v-2c4b3fd8] {\n max-width: 300px;\n padding: 0 16px;\n text-align: center;\n}\n\n.shadow[data-v-2c4b3fd8] {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 2;\n width: 100%;\n height: 40px;\n overflow: hidden;\n line-height: 1;\n white-space: nowrap;\n text-overflow: ellipsis;\n background: linear-gradient(180deg, rgba(38, 50, 56, 0) 0%, rgba(38, 50, 56, 0.25) 100%);\n transition: height var(--fast) var(--transition);\n}\n\n.actions[data-v-2c4b3fd8] {\n --v-button-color: var(--theme--form--field--input--foreground-subdued);\n --v-button-background-color: var(--white);\n --v-button-color-hover: var(--theme--form--field--input--foreground);\n --v-button-background-color-hover: var(--white);\n position: absolute;\n top: 30%;\n left: 0;\n z-index: 3;\n display: flex;\n justify-content: center;\n width: 100%;\n}\n.actions .v-button[data-v-2c4b3fd8] {\n margin-right: 12px;\n transform: translateY(10px);\n opacity: 0;\n transition: var(--medium) var(--transition);\n transition-property: opacity transform;\n}\n.actions .v-button[data-v-2c4b3fd8][data-v-2c4b3fd8]:nth-of-type(1) {\n transition-delay: 0ms;\n}\n.actions .v-button[data-v-2c4b3fd8][data-v-2c4b3fd8]:nth-of-type(2) {\n transition-delay: 25ms;\n}\n.actions .v-button[data-v-2c4b3fd8][data-v-2c4b3fd8]:nth-of-type(3) {\n transition-delay: 50ms;\n}\n.actions .v-button[data-v-2c4b3fd8][data-v-2c4b3fd8]:nth-of-type(4) {\n transition-delay: 75ms;\n}\n.actions .v-button[data-v-2c4b3fd8][data-v-2c4b3fd8]:nth-of-type(5) {\n transition-delay: 100ms;\n}\n.actions .v-button[data-v-2c4b3fd8]:last-child {\n margin-right: 0px;\n}\n\n.info[data-v-2c4b3fd8] {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 3;\n width: 100%;\n padding: 8px 12px;\n line-height: 1.2;\n}\n\n.title[data-v-2c4b3fd8] {\n color: var(--white);\n}\n\n.meta[data-v-2c4b3fd8] {\n height: 17px;\n max-height: 0;\n overflow: hidden;\n color: rgba(255, 255, 255, 0.75);\n transition: max-height var(--fast) var(--transition);\n}\n\n.image-preview:hover .shadow[data-v-2c4b3fd8] {\n height: 100%;\n background: linear-gradient(180deg, rgba(38, 50, 56, 0) 0%, rgba(38, 50, 56, 0.5) 100%);\n}\n.image-preview:hover .actions .v-button[data-v-2c4b3fd8] {\n transform: translateY(0px);\n opacity: 1;\n}\n.image-preview:hover .meta[data-v-2c4b3fd8] {\n max-height: 17px;\n}\n\n.disabled-placeholder[data-v-2c4b3fd8] {\n height: var(--theme--input-height-tall);\n}",{});var qt=nt(Gt,[["__scopeId","data-v-2c4b3fd8"],["__file","OgImage.vue"]]),Bt=a({__name:"TitleField",props:{modelValue:{},template:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,i=m("values"),{modelValue:r}=g(n),{isTouched:l,isTemplateUpdate:s,state:d,transform:c}=wt(r,_t.title,i);function u(e){s.value||(l.value=!0),a("update:modelValue",e||""),s.value=!1}return(e,t)=>{const n=b("v-icon"),a=b("v-button"),i=b("v-input"),l=y("tooltip");return o(),w(Pt,{label:"Title",state:_(d),rule:_(_t).title},{default:x((()=>[v(i,{"model-value":_(r),placeholder:"Enter your SEO title","onUpdate:modelValue":u},S({_:2},[e.template&&!e.disabled?{name:"append",fn:x((()=>[k((o(),w(a,{"x-small":"",secondary:"",icon:"",class:"template-button",onClick:t[0]||(t[0]=t=>u(_(c)(e.template)))},{default:x((()=>[v(n,{name:"auto_fix_high"})])),_:1})),[[l,"Generate from template"]])])),key:"0"}:void 0]),1032,["model-value"])])),_:1},8,["state","rule"])}}});tt("\n.field[data-v-21940e6e] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.label[data-v-21940e6e] {\n\tmargin-bottom: 0.5rem;\n}\n.hint[data-v-21940e6e] {\n\tfont-size: 0.875rem;\n\tcolor: var(--theme--foreground-subdued);\n}\n.template-button[data-v-21940e6e] {\n\t--v-icon-color: var(--theme--foreground);\n}\n",{});var Wt=nt(Bt,[["__scopeId","data-v-21940e6e"],["__file","TitleField.vue"]]);const Rt=[{key:"no_index",label:"No Index",icon:"visibility_off",tooltip:"Prevents search engines from indexing this page"},{key:"no_follow",label:"No Follow",icon:"link_off",tooltip:"Prevents search engines from following links on this page"}],Ht=[{key:"change_frequency",label:"Change Frequency",icon:"update",tooltip:"How frequently this page is likely to change",options:[{text:"Always",value:"always"},{text:"Hourly",value:"hourly"},{text:"Daily",value:"daily"},{text:"Weekly",value:"weekly"},{text:"Monthly",value:"monthly"},{text:"Yearly",value:"yearly"},{text:"Never",value:"never"}]},{key:"priority",label:"Priority",icon:"signal_cellular_alt",tooltip:"Priority indicates the importance of this page relative to other pages (1.0 highest)",options:[{text:"Very High (1.0)",value:"1.0"},{text:"High (0.8)",value:"0.8"},{text:"Medium (0.5)",value:"0.5"},{text:"Low (0.3)",value:"0.3"},{text:"Very Low (0.1)",value:"0.1"}]}],Kt={class:"form-grid"},Yt={key:1,class:"field"},Qt={class:"label field-label type-label"},Zt={class:"form-grid"},Jt={key:0,class:"hint"},Xt={key:2,class:"field"},en={class:"label field-label type-label"},tn={class:"form-grid"},nn={key:3,class:"field"};var an=a({__name:"interface",props:{collection:{},field:{},value:{},disabled:{type:Boolean},titleTemplate:{},descriptionTemplate:{},showOgImage:{type:Boolean},showSearchControls:{type:Boolean},showSitemap:{type:Boolean},defaultChangeFrequency:{},defaultPriority:{},additionalFields:{}},emits:["input"],setup(e,{emit:t}){const n=e,a=t,{value:i}=g(n),r=c({get:()=>i.value?{...i.value,sitemap:{priority:n.defaultPriority||"0.5",change_frequency:n.defaultChangeFrequency||"weekly",...i.value.sitemap}}:{title:"",meta_description:"",og_image:"",sitemap:{priority:n.defaultPriority||"0.5",change_frequency:n.defaultChangeFrequency||"weekly"},no_index:!1,no_follow:!1,additional_fields:{}},set(e){i.value=e}});function u(e,t){if(!n.value){const n=ze({},e,t);return void a("input",n)}const i={...n.value};ze(i,e,t),a("input",i)}const p=c((()=>{var e,t;return null!=(t=null==(e=n.additionalFields)?void 0:e.map((e=>{if(!e||!e.field)return console.warn("Invalid field definition:",e),null;const{field:t,type:n,...a}=e;return{field:t,name:L(e.name||t),type:n,meta:{...a}}})).filter(Boolean))?t:[]}));return(e,t)=>{var a;const i=b("v-divider"),c=b("v-icon"),f=b("v-select"),m=b("interface-boolean"),g=b("v-notice"),S=b("v-form"),O=y("tooltip");return o(),l("div",Kt,[T(" Title "),v(Wt,{"model-value":r.value.title,template:n.titleTemplate,disabled:n.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>u("title",e))},null,8,["model-value","template","disabled"]),T(" Meta Description "),v(It,{"model-value":r.value.meta_description,template:n.descriptionTemplate,disabled:n.disabled,"onUpdate:modelValue":t[1]||(t[1]=e=>u("meta_description",e))},null,8,["model-value","template","disabled"]),T(" Search Preview "),v(at,{title:r.value.title,"meta-description":r.value.meta_description,collection:n.collection||""},null,8,["title","meta-description","collection"]),v(i,{class:"field"}),T(" OG Image Field "),n.showOgImage?(o(),w(qt,{key:0,value:r.value.og_image,disabled:n.disabled,class:"field",onInput:t[2]||(t[2]=e=>u("og_image",e))},null,8,["value","disabled"])):T("v-if",!0),T(" Sitemap Fields "),n.showSitemap?(o(),l("div",Yt,[s("label",Qt,[t[4]||(t[4]=h(" Sitemap Settings ")),k(v(c,{name:"info",small:"",class:"info-icon"},null,512),[[O,"Control how search engines crawl and index your site"]])]),s("div",Zt,[(o(!0),l(E,null,$(_(Ht),(e=>{var t;return o(),l("div",{key:e.key},[v(f,{"model-value":(null==(t=r.value.sitemap)?void 0:t[e.key])||"",items:e.options,disabled:n.disabled,placeholder:e.label,"onUpdate:modelValue":t=>u(`sitemap.${e.key}`,t)},{prepend:x((()=>[v(c,{name:e.icon},null,8,["name"])])),_:2},1032,["model-value","items","disabled","placeholder","onUpdate:modelValue"]),e.tooltip?(o(),l("small",Jt,d(e.tooltip),1)):T("v-if",!0)])})),128))])])):T("v-if",!0),T(" Search Engine Controls "),n.showSearchControls?(o(),l("div",Xt,[s("label",en,[t[5]||(t[5]=h(" Search Engine Controls ")),k(v(c,{name:"info",small:"",class:"info-icon"},null,512),[[O,"Control how search engines interact with this page"]])]),s("div",tn,[(o(!0),l(E,null,$(_(Rt),(e=>(o(),w(m,{key:e.key,"model-value":r.value[e.key],disabled:n.disabled,label:e.label,"onUpdate:modelValue":t=>u(e.key,t)},{append:x((()=>[k(v(c,{name:"visibility_off",small:"",class:"info-icon"},null,512),[[O,"Prevents search engines from indexing this page"]])])),_:2},1032,["model-value","disabled","label","onUpdate:modelValue"])))),128)),T(" Warning message when either option is enabled "),r.value.no_index||r.value.no_follow?(o(),w(g,{key:0,type:"warning",class:"field full"},{default:x((()=>[s("span",null,d(r.value.no_index&&r.value.no_follow?"This page will be hidden from search engines and its links won't be followed":r.value.no_index?"This page will be hidden from search engines":"Links on this page won't be followed by search engines"),1)])),_:1})):T("v-if",!0)])])):T("v-if",!0),T(" Custom Fields "),(null==(a=p.value)?void 0:a.length)?(o(),l("div",nn,[v(i,{class:"mb-8","inline-title":""},{default:x((()=>t[6]||(t[6]=[h(" Additional SEO Fields ")]))),_:1}),v(S,{fields:p.value,"model-value":r.value.additional_fields,"onUpdate:modelValue":t[3]||(t[3]=e=>u("additional_fields",e))},null,8,["fields","model-value"])])):T("v-if",!0)])}}});tt(".form-grid {\n display: grid;\n grid-template-columns: [start] minmax(0, 1fr) [half] minmax(0, 1fr) [full];\n gap: var(--theme--form--row-gap) var(--theme--form--column-gap);\n}\n.form-grid.with-fill {\n grid-template-columns: [start] minmax(0, var(--form-column-max-width)) [half] minmax(0, var(--form-column-max-width)) [full] 1fr [fill];\n}\n.form-grid .field {\n grid-column: start/fill;\n}\n@media (min-width: 960px) {\n .form-grid .field {\n grid-column: start/full;\n }\n}\n.form-grid .half,\n.form-grid .half-left,\n.form-grid .half-space {\n grid-column: start/fill;\n}\n@media (min-width: 960px) {\n .form-grid .half,\n .form-grid .half-left,\n .form-grid .half-space {\n grid-column: start/half;\n }\n}\n.form-grid .half + .half,\n.form-grid .half-right {\n grid-column: start/fill;\n}\n@media (min-width: 960px) {\n .form-grid .half + .half,\n .form-grid .half-right {\n grid-column: half/full;\n }\n}\n.form-grid .full {\n grid-column: start/fill;\n}\n@media (min-width: 960px) {\n .form-grid .full {\n grid-column: start/full;\n }\n}\n.form-grid .fill {\n grid-column: start/fill;\n}\n.form-grid .first-visible-field :deep(.presentation-divider) {\n margin-top: 0;\n}\n.form-grid.inline > .no-fields-info {\n grid-column: 1/-1;\n}\n\n.hint {\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: var(--theme--foreground-subdued);\n}\n\n.mb-8[data-v-5c657620] {\n margin-bottom: 1rem;\n}\n\n.info-icon[data-v-5c657620] {\n --v-icon-color: var(--theme--foreground-subdued);\n}\n\n.label[data-v-5c657620] {\n display: flex;\n align-items: center;\n gap: 4px;\n}",{});var rn=t({id:"seo-interface",name:"SEO Interface",description:"Comprehensive SEO metadata management interface",icon:"search",component:nt(an,[["__scopeId","data-v-5c657620"],["__file","interface.vue"]]),types:["json"],group:"standard",options:({collection:e})=>[{field:"titleTemplate",name:"SEO Title Template",type:"string",meta:{width:"full",interface:"system-display-template",required:!1,options:{collectionName:e,font:"monospace",placeholder:"{{title}} | My Website"},note:"Define how page titles should be formatted. Use {{field}} to include dynamic content."}},{field:"descriptionTemplate",name:"Meta Description Template",type:"string",meta:{width:"full",interface:"system-display-template",required:!1,options:{collectionName:e,font:"monospace",placeholder:"{{description}}"},note:"Template for meta descriptions. Use {{field}} to include dynamic content."}},{name:"Additional SEO Fields",field:"divider-meta",type:"alias",meta:{interface:"presentation-divider",width:"full",options:{title:"Additional SEO Fields",inlineTitle:!0}}},{field:"showOgImage",name:"Enable Social Media Image",type:"boolean",meta:{note:"Adds an Open Graph image field for social media sharing",width:"half"},schema:{default_value:!1}},{field:"showSearchControls",name:"Enable Search Engine Controls",type:"boolean",meta:{note:"Adds controls for no-index and no-follow tags",width:"half"},schema:{default_value:!1}},{field:"showSitemap",name:"Enable Sitemap Controls",type:"boolean",meta:{note:"Adds fields for sitemap configuration",width:"half"},schema:{default_value:!1}},{field:"divider-sitemap",type:"alias",meta:{interface:"presentation-divider",width:"full",options:{title:"Sitemap Defaults",inlineTitle:!0},hidden:!0,conditions:[{hidden:!1,rule:{_and:[{showSitemap:{_eq:!0}}]}}]}},{field:"defaultChangeFrequency",name:"Default Change Frequency",type:"string",meta:{note:"Default change frequency for items in this collection",width:"half",interface:"select-dropdown",hidden:!0,options:{choices:[{text:"Always",value:"always"},{text:"Hourly",value:"hourly"},{text:"Daily",value:"daily"},{text:"Weekly",value:"weekly"},{text:"Monthly",value:"monthly"},{text:"Yearly",value:"yearly"},{text:"Never",value:"never"}]},conditions:[{hidden:!1,rule:{_and:[{showSitemap:{_eq:!0}}]}}]},schema:{default_value:"weekly"}},{field:"defaultPriority",name:"Default Priority",type:"string",meta:{note:"Default priority for items in this collection (0.0 to 1.0)",width:"half",interface:"select-dropdown",hidden:!0,options:{choices:[{text:"Very High (1.0)",value:"1.0"},{text:"High (0.8)",value:"0.8"},{text:"Medium (0.5)",value:"0.5"},{text:"Low (0.3)",value:"0.3"},{text:"Very Low (0.1)",value:"0.1"}]},conditions:[{hidden:!1,rule:{_and:[{showSitemap:{_eq:!0}}]}}]},schema:{default_value:"0.5"}},{meta:{interface:"presentation-divider",width:"full",hidden:!0,conditions:[{hidden:!1,rule:{_and:[{showSitemap:{_eq:!0}}]}}]}},{field:"additionalFields",name:"Custom SEO Fields",type:"json",meta:{interface:"list",note:"Define additional custom SEO fields",options:{collection:e,fields:on({collection:e||""})},width:"full",required:!0}}]});function on({collection:e}){return[{name:"$t:field",field:"field",type:"string",meta:{interface:"input",width:"half",sort:2,required:!0,options:{dbSafe:!0,font:"monospace",placeholder:"$t:field_name_placeholder"}}},{name:"$t:field_width",field:"width",type:"string",meta:{interface:"select-dropdown",width:"half",sort:3,options:{choices:[{value:"half",text:"$t:half_width"},{value:"full",text:"$t:full_width"}]}}},{name:"$t:type",field:"type",type:"string",meta:{interface:"select-dropdown",width:"half",sort:4,options:{choices:[{text:"$t:string",value:"string"},{text:"$t:text",value:"text"},{divider:!0},{text:"$t:boolean",value:"boolean"},{divider:!0},{text:"$t:integer",value:"integer"},{text:"$t:bigInteger",value:"bigInteger"},{text:"$t:float",value:"float"},{text:"$t:decimal",value:"decimal"},{divider:!0},{text:"$t:geometry.All",value:"geometry"},{divider:!0},{text:"$t:timestamp",value:"timestamp"},{text:"$t:datetime",value:"dateTime"},{text:"$t:date",value:"date"},{text:"$t:time",value:"time"},{divider:!0},{text:"$t:json",value:"json"},{text:"$t:csv",value:"csv"},{text:"$t:uuid",value:"uuid"},{text:"$t:hash",value:"hash"}]}}},{name:"$t:required",field:"required",type:"boolean",meta:{interface:"boolean",sort:5,options:{label:"$t:requires_value"},width:"half"}},{name:"$t:note",field:"note",type:"string",meta:{interface:"system-input-translated-string",width:"full",sort:6,options:{placeholder:"$t:interfaces.list.field_note_placeholder"}}},{name:"$t:interfaces.list.interface_group",field:"group-interface",type:"alias",meta:{interface:"group-detail",field:"group-interface",width:"full",sort:7,options:{start:"open"},collection:e,special:["group","no-data","alias"]}},{name:"$t:interface_label",field:"interface",type:"string",meta:{interface:"system-interface",width:"half",sort:8,group:"group-interface",options:{typeField:"type"}}},{name:"$t:interface_options",field:"options",type:"string",meta:{interface:"system-interface-options",width:"full",sort:9,group:"group-interface",options:{interfaceField:"interface"}}},{name:"$t:interfaces.list.display_group",field:"group-display",type:"alias",meta:{interface:"group-detail",field:"group-display",width:"full",sort:10,options:{start:"closed"},collection:e,special:["group","no-data","alias"]}},{name:"$t:display_label",field:"display",type:"string",meta:{interface:"system-display",width:"half",group:"group-display",sort:11,options:{typeField:"type"}}},{name:"$t:display_options",field:"display_options",type:"string",meta:{interface:"system-display-options",width:"full",group:"group-display",sort:12,options:{displayField:"display"}}}]}const ln={class:"seo-display"},sn={class:"preview-box"},dn={class:"header-label field-label type-label"},cn={key:0,class:"preview-box-item"},un={class:"preview-box-item border-bottom-dash"},pn={key:0},fn={class:"preview-box-item border-bottom-dash"},vn={key:0},hn={key:1,class:"preview-box-item border-bottom-dash"},mn={key:2,class:"preview-box-item border-bottom-dash"},gn=["textContent"];var bn=a({__name:"display",props:{value:{},collection:{},interface:{},interfaceOptions:{},type:{},field:{},showSearchPreview:{type:Boolean}},setup(e){const t=e,{state:n}=wt(c((()=>{var e;return null==(e=t.value)?void 0:e.title})),_t.title),{state:a}=wt(c((()=>{var e;return null==(e=t.value)?void 0:e.meta_description})),_t.meta_description),i=c((()=>{const e=t.interfaceOptions.additionalFields;if(!(null==e?void 0:e.length))return null;const n=t.value.additional_fields,a=e=>null!=(null==n?void 0:n[e.field])&&""!==n[e.field],i=e.length,r=e.filter(a).length,o=e.filter((e=>e.required)).filter((e=>!a(e))).length;return o>0?{icon:"error",class:"error",text:`${o} required`}:r===i?{icon:"check",class:"success"}:{icon:"warning",class:"warning",text:i-r+" optional"}})),r=c((()=>{var e,i,r,o,l,s,d;if(null==(e=t.value)?void 0:e.no_index)return{icon:"visibility_off",color:"neutral"};if(!(null==(i=t.value)?void 0:i.title)||!(null==(r=t.value)?void 0:r.meta_description))return{icon:"error",color:"error"};return(null==(o=t.interfaceOptions.additionalFields)?void 0:o.some((e=>{var n;return e.required&&(!(null==(n=t.value.additional_fields)?void 0:n[e.field])||""===t.value.additional_fields[e.field])})))?{icon:"error",color:"error"}:"ideal"!==(null==(l=n.value)?void 0:l.status)||"ideal"!==(null==(s=a.value)?void 0:s.status)||t.interfaceOptions.showOgImage&&!(null==(d=t.value)?void 0:d.og_image)?{icon:"warning",color:"warning"}:{icon:"check",color:"success"}}));return(e,t)=>{const c=b("v-icon"),p=b("v-chip"),f=b("v-menu"),m=y("tooltip");return o(),l("div",ln,[v(f,{trigger:"hover",delay:300,"show-arrow":""},{activator:x((()=>[v(p,{outlined:""},{default:x((()=>[v(c,{name:r.value.icon,class:u(r.value.color)},null,8,["name","class"])])),_:1})])),default:x((()=>[s("div",sn,[s("label",dn,[t[0]||(t[0]=s("span",null,"SEO Status",-1)),k(v(c,{name:"info",small:"",class:"info-icon neutral"},null,512),[[m,"Quick checks to see if your SEO is optimized."]])]),T(" No Index "),e.interfaceOptions.showSearchControls?(o(),l("div",cn,[e.value.no_index?(o(),w(p,{key:0,small:"",label:""},{default:x((()=>[v(c,{name:"visibility_off",class:"chip-icon",small:""}),t[1]||(t[1]=h(" "+d("Hidden from search")))])),_:1})):T("v-if",!0),e.value.no_follow?(o(),w(p,{key:1,small:"",label:""},{default:x((()=>[v(c,{name:"link_off",class:"chip-icon",small:""}),t[2]||(t[2]=h(" "+d("Links not followed")))])),_:1})):T("v-if",!0)])):T("v-if",!0),T(" Title "),s("div",un,[t[3]||(t[3]=s("div",{class:"left"},[s("h3",null,"Title")],-1)),s("div",null,[v(p,{small:"",label:""},{default:x((()=>[v(c,{small:"",name:_(n).icon.name,class:u([_(n).icon.class,"chip-icon"])},null,8,["name","class"]),"ideal"!==_(n).status?(o(),l("span",pn,d(_(L)(_(n).status)),1)):T("v-if",!0)])),_:1})])]),s("div",fn,[t[4]||(t[4]=s("div",{class:"left"},[s("h3",null,"Meta Description")],-1)),s("div",null,[v(p,{small:"",label:""},{default:x((()=>[v(c,{small:"",name:_(a).icon.name,class:u([_(a).icon.class,"chip-icon"])},null,8,["name","class"]),"ideal"!==_(a).status?(o(),l("span",vn,d(_(L)(_(a).status)),1)):T("v-if",!0)])),_:1})])]),T(" OG Image "),e.interfaceOptions.showOgImage?(o(),l("div",hn,[t[5]||(t[5]=s("div",{class:"left"},[s("h3",null,"OG Image")],-1)),s("div",null,[v(p,{small:"",label:""},{default:x((()=>[v(c,{name:e.value.og_image?"check":"error",class:u([e.value.og_image?"success":"error","chip-icon"]),small:""},null,8,["name","class"]),h(" "+d(e.value.og_image?"":"Missing"),1)])),_:1})])])):T("v-if",!0),T(" Additional Fields "),i.value?(o(),l("div",mn,[t[6]||(t[6]=s("div",{class:"left"},[s("h3",null,"Additional Fields")],-1)),s("div",null,[v(p,{small:"",label:""},{default:x((()=>[v(c,{name:i.value.icon,class:u([i.value.class,"chip-icon"]),small:""},null,8,["name","class"]),i.value.text?(o(),l("span",{key:0,textContent:d(i.value.text)},null,8,gn)):T("v-if",!0)])),_:1})])])):T("v-if",!0),T(" Omitting the sitemap settings here on purpose. @TODO: Is it worth adding? "),T(" Search Preview "),e.showSearchPreview?(o(),w(at,{key:3,class:"full-width",title:e.value.title,"meta-description":e.value.meta_description,collection:e.collection},null,8,["title","meta-description","collection"])):T("v-if",!0)])])),_:1})])}}});tt(".seo-display[data-v-bc3389e4] {\n display: flex;\n}\n\n.neutral[data-v-bc3389e4] {\n --v-icon-color: var(--theme--foreground-subdued);\n}\n\n.warning[data-v-bc3389e4] {\n --v-icon-color: var(--theme--warning);\n}\n\n.success[data-v-bc3389e4] {\n --v-icon-color: var(--theme--success);\n}\n\n.error[data-v-bc3389e4] {\n --v-icon-color: var(--theme--danger);\n}\n\n.header-label[data-v-bc3389e4] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.preview-box[data-v-bc3389e4] {\n display: flex;\n flex-direction: column;\n min-width: 300px;\n padding: 12px;\n max-width