koishi-plugin-memesluna 0.5.8 → 0.5.9

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/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{send as f,icons as os}from"@koishijs/client";import{defineComponent as is,ref as u,computed as x,reactive as nt,onMounted as rs,onUnmounted as us,watch as je,openBlock as n,createElementBlock as o,createCommentVNode as d,createElementVNode as e,Fragment as g,toDisplayString as i,normalizeClass as m,createVNode as ds,Transition as cs,withCtx as vs,createTextVNode as C,withDirectives as y,vModelText as z,vModelSelect as Le,vShow as ce,renderList as h,withModifiers as B,createStaticVNode as ot,withKeys as Ke,normalizeStyle as gs,h as cl}from"vue";const ps={class:"memesluna-app-layout"},fs={class:"notion-content"},ms={class:"content-breadcrumb-header"},ys={class:"breadcrumbs"},hs={key:0,class:"crumb-parent"},bs={key:1,class:"crumb-parent"},ks={key:2,class:"crumb-parent"},ws={key:3,class:"crumb-parent"},_s={class:"crumb-child active"},Cs={key:0,class:"header-quick-stats"},xs={class:"stat-bubble"},Is={class:"stat-bubble"},$s={class:"stat-bubble"},Es={key:0,class:"notion-view-switcher"},Ss={key:0,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Ms={key:1,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},As={key:2,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Ts={key:1,class:"loading-container"},Ls={class:"content-body-wrapper"},Bs={key:0,class:"resources-router-view"},Us={key:0,class:"collections-folder-view"},Vs={class:"notion-db-header page-section-header collection-list-header"},zs={class:"notion-db-actions collection-toolbar"},Ps={class:"view-toggle-pill",title:"切换合集视图/标签视图"},Fs={class:"collection-search-shell"},Ns={class:"collection-filter-shell"},Rs={key:0,class:"empty-placeholder-card"},Ds={key:1,class:"empty-placeholder-card"},Os={key:2,class:"folders-grid"},Gs=["onClick"],Hs=["src","alt"],Ws={key:1,class:"folder-cover-empty"},js={key:2,class:"folder-cover-badge"},Ks={class:"folder-body"},qs={class:"folder-title-row"},Zs=["title"],Qs=["onClick"],Ys=["onClick"],Js=["onClick"],Xs={class:"folder-info-row"},ea={class:"folder-count"},ta={class:"folder-meta-row"},la={class:"folder-meta-item"},sa={key:3,class:"tag-view-section"},aa={key:0,class:"loading-container"},na={key:1,class:"empty-placeholder-card"},oa={key:2,class:"folders-grid"},ia=["onClick"],ra=["src"],ua=["src"],da={key:1,class:"folder-cover-empty"},ca={class:"folder-body tag-card-body"},va={class:"folder-title-row"},ga={class:"tag-synonym-names"},pa={class:"folder-info-row",style:{"margin-top":"6px"}},fa={class:"folder-count"},ma={key:1,class:"tag-detail-view"},ya={class:"detail-topbar"},ha={class:"detail-breadcrumbs"},ba={class:"detail-crumb-current"},ka={class:"detail-crumb-strong"},wa={key:0,class:"loading-container"},_a={key:1,class:"empty-placeholder-card"},Ca={key:2,class:"tag-images-grid notion-gallery-grid"},xa={class:"gallery-img-container"},Ia=["src"],$a={class:"gallery-card-footer"},Ea=["title"],Sa={class:"gallery-card-tags"},Ma=["onClick"],Aa={class:"asset-detail-shell"},Ta={class:"detail-topbar"},La={class:"detail-breadcrumbs"},Ba={class:"detail-crumb-current"},Ua={class:"detail-top-actions"},Va={class:"asset-hero-panel"},za={class:"asset-identity-card"},Pa={class:"asset-avatar-frame"},Fa=["src","alt"],Na={key:1,class:"asset-avatar-empty"},Ra={class:"asset-title-stack"},Da={class:"asset-title-row"},Oa={class:"asset-meta-line"},Ga={class:"asset-api-card"},Ha={class:"asset-api-row"},Wa=["disabled"],ja={key:0,class:"api-preview-strip"},Ka=["src"],qa={class:"asset-import-panel"},Za={class:"asset-import-header"},Qa={class:"asset-import-actions"},Ya={class:"tag-editor-dialog"},Ja={class:"tag-editor-header"},Xa={class:"tag-editor-subtitle"},en={style:{display:"flex",gap:"8px","align-items":"center"}},tn=["disabled"],ln={key:0,class:"animate-spin",viewBox:"0 0 24 24",fill:"none",width:"12",height:"12",style:{"margin-right":"2px"}},sn={key:1},an=["disabled"],nn={class:"tag-editor-body",style:{display:"flex","flex-direction":"column",gap:"16px"}},on={class:"tag-section-wrapper",style:{"border-bottom":"1px solid rgba(120, 120, 120, 0.15)","padding-bottom":"14px"}},rn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},un=["onClick","disabled"],dn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},cn={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},vn=["disabled"],gn={id:"allowed-tags-list"},pn=["value"],fn=["disabled"],mn={class:"tag-section-wrapper"},yn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},hn=["onClick","disabled"],bn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},kn={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},wn=["disabled"],_n=["disabled"],Cn={class:"tag-editor-dialog"},xn={class:"tag-editor-header"},In={class:"tag-editor-subtitle"},$n=["disabled"],En={class:"tag-editor-body",style:{display:"flex","flex-direction":"column",gap:"16px"}},Sn={style:{display:"flex","align-items":"center","justify-content":"space-between","border-bottom":"1px solid rgba(120, 120, 120, 0.15)","padding-bottom":"12px"}},Mn={class:"view-toggle-pill",style:{margin:"0"}},An={class:"tag-section-wrapper",style:{"border-bottom":"1px solid rgba(120, 120, 120, 0.15)","padding-bottom":"14px"}},Tn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},Ln=["onClick","disabled"],Bn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},Un={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},Vn=["disabled"],zn=["disabled"],Pn={class:"tag-section-wrapper"},Fn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},Nn=["onClick","disabled"],Rn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},Dn={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},On=["disabled"],Gn=["disabled"],Hn={class:"tag-editor-footer",style:{"margin-top":"18px",display:"flex",gap:"12px","justify-content":"flex-end","border-top":"1px solid rgba(120, 120, 120, 0.15)","padding-top":"12px"}},Wn=["disabled"],jn=["disabled"],Kn={class:"asset-gallery-section"},qn={class:"asset-gallery-toolbar"},Zn={class:"asset-tabs"},Qn={class:"asset-filter-bar"},Yn={class:"asset-search-box"},Jn={class:"asset-view-toggle"},Xn={class:"gallery-tab-content"},eo={key:0,class:"empty-gallery"},to={key:1,class:"empty-gallery"},lo={key:2},so={key:0,class:"gallery-bulk-toolbar floating"},ao={class:"bulk-status"},no={class:"bulk-meta"},oo={class:"bulk-actions"},io={key:1,class:"bulk-move-group"},ro=["value","disabled"],uo=["disabled"],co=["onClick","title"],vo={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},go=["onClick","title"],po=["src"],fo={class:"gallery-card-info"},mo=["title"],yo={class:"gallery-card-footer-row"},ho={key:0,class:"gallery-card-tags"},bo={key:0,class:"gallery-card-tag-empty"},ko={key:1,class:"gallery-card-tags-placeholder"},wo={class:"gallery-card-menu-container"},_o=["onClick"],Co=["onClick"],xo={key:0,class:"gallery-card-submenu-trigger"},Io={class:"gallery-card-submenu"},$o=["onClick"],Eo=["onClick"],So=["onClick"],Mo=["onClick"],Ao={key:1,class:"pagination-container"},To=["disabled"],Lo={class:"page-indicator"},Bo=["disabled"],Uo={class:"distribution-router-view"},Vo={class:"endpoint-layout"},zo={class:"notion-form-panel endpoint-editor-panel"},Po={class:"panel-title-row"},Fo={class:"notion-panel-title"},No={class:"form-fields endpoint-form-grid"},Ro={class:"form-group"},Do=["disabled"],Oo={class:"form-group"},Go={class:"form-group span-2"},Ho={class:"endpoint-preview span-2"},Wo={class:"form-actions span-2"},jo={class:"notion-table-panel"},Ko={class:"table-title-row"},qo={class:"table-count"},Zo={class:"table-container"},Qo={class:"flat-table"},Yo={key:0},Jo={class:"endpoint-name"},Xo=["title"],ei={class:"font-mono"},ti={class:"url-line"},li=["onClick"],si=["onClick"],ai=["title"],ni={style:{"text-align":"right"}},oi={class:"action-buttons"},ii=["href"],ri=["onClick"],ui=["onClick"],di={class:"staging-router-view"},ci={class:"notion-db-header page-section-header staging-page-header"},vi={class:"staging-header-actions"},gi=["disabled"],pi={class:"staging-toolbar"},fi={class:"asset-search-box staging-search-box"},mi={class:"staging-count-pill"},yi={key:0,class:"empty-placeholder-card staging-empty-card"},hi={key:1,class:"similar-staging-view"},bi={key:0,class:"empty-gallery"},ki={key:1,class:"similar-message"},wi={key:2,class:"empty-gallery"},_i={class:"similar-group-header"},Ci={class:"staging-grid"},xi=["onClick"],Ii=["src","alt"],$i={class:"staging-card-body"},Ei={class:"staging-title-row"},Si=["title"],Mi={class:"staging-ext-tag"},Ai={class:"staging-meta-grid"},Ti=["title"],Li=["onUpdate:modelValue","disabled"],Bi=["value"],Ui={class:"staging-actions"},Vi=["onClick","disabled"],zi=["onClick","disabled"],Pi={key:2,class:"empty-gallery"},Fi={key:3},Ni={key:0,class:"staging-batch-toolbar"},Ri={class:"bulk-status"},Di={class:"bulk-meta"},Oi={class:"bulk-actions"},Gi={class:"staging-grid"},Hi=["onClick","title"],Wi={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},ji=["onClick"],Ki=["src","alt"],qi={class:"staging-card-body"},Zi={class:"staging-title-row"},Qi=["title"],Yi={class:"staging-ext-tag"},Ji={class:"staging-meta-grid"},Xi=["title"],er=["onUpdate:modelValue","disabled"],tr=["value"],lr={class:"staging-actions"},sr=["onClick","disabled"],ar=["onClick","disabled"],nr={class:"settings-router-view"},or={class:"settings-preview-panel"},ir={class:"preview-dashboard-grid"},rr={class:"preview-card route-table-card"},ur={class:"preview-card-header"},dr=["disabled"],cr={key:0,class:"preview-table-wrap"},vr={class:"preview-route-table"},gr=["src","alt","onError"],pr={class:"preview-route-name"},fr=["title"],mr=["title","onClick"],yr={class:"preview-row-actions"},hr=["href"],br={key:1,class:"preview-empty-state"},kr={class:"preview-card prompt-card"},wr={class:"preview-card-header"},_r=["disabled"],Cr={class:"preview-code-block final-prompt polished"},xr={key:0},Ir={key:1,class:"text-gray-muted"},$r=is({__name:"Dashboard",setup(Be){const w=u(sessionStorage.getItem("memesluna_active_menu")||"resources"),T=u(sessionStorage.getItem("memesluna_active_resource_view")||"collection"),le=u([]),Ue=u(false);async function Bt(){if(T.value="tag",!le.value.length){Ue.value=true;try{const l=await f("memesluna/getTagSummary");le.value=Array.isArray(l)?l:[]}catch(l){console.error("Failed to load tag summary:",l),le.value=[]}finally{Ue.value=false}}}const se=u(""),ve=u([]),it=u(false);async function rt(l){se.value=l,it.value=true;try{const t=await f("memesluna/getImagesByTag",l);ve.value=Array.isArray(t==null?void 0:t.images)?t.images:[]}catch(t){console.error("Failed to load tag images:",t),ve.value=[]}finally{it.value=false}}function vl(){se.value="",ve.value=[]}const p=u(true),ge=u("/memesluna"),qe=u("http://localhost:5140"),pe=u([]),I=u([]),P=u([]),Ut=u([]),ut=x(()=>Ut.value.flatMap(l=>l.split(/[,,]/).map(t=>t.trim()).filter(Boolean))),dt=u(""),K=u({}),R=u(""),Y=u("all"),ct=u([]),fe=u(false),Ze=u(""),D=u(new Set),Ve=u(false),q=u(null),_=nt({name:"",group:"",description:"",url:""}),vt=u(new Set),Vt=u(""),v=u(null),Qe=u(""),me=u("all"),J=u(null),Ye=u(""),ze=u(""),E=nt({images:[],links:[]}),Z=nt({}),X=u("all"),Pe=u(false),O=u(new Set),ye=u(""),Fe=u(""),Ne=u("name"),Re=u("all"),he=u("grid"),F=u(""),Je=u(false),gt=u(false),ae=u(""),be=u(""),U=u([]),A=u([]),ke=u(""),we=u(""),N=u(false),S=u(false),ee=u({}),ne=u({}),_e=u(false),G=u([]),H=u([]),Ce=u(""),xe=u(""),V=u(false),Ie=u("add");function gl(){G.value=[],H.value=[],Ce.value="",xe.value="",Ie.value="add",_e.value=true}function zt(){const l=Ce.value.trim();if(l){if(!ut.value.includes(l)){r("标签必须是同义词组候选列表中的一个","error");return}G.value=[l],Ce.value=""}}function pl(l){G.value=G.value.filter(t=>t!==l)}function Pt(){const l=xe.value.trim();!l||H.value.includes(l)||(H.value=[...H.value,l],xe.value="")}function fl(l){H.value=H.value.filter(t=>t!==l)}async function ml(){if(!v.value||!M.value.length)return;V.value=true;const l=[...M.value],t=v.value.name;try{await Promise.all(l.map(async s=>{const a=De(t,s);let c=[...G.value],$=[...H.value];if(Ie.value==="add"){const j=ee.value[a]||[],Se=ne.value[a]||[];c=Array.from(new Set([...j,...c])),$=Array.from(new Set([...Se,...$]))}c.length>1&&(G.value.length>0?c=[G.value[0]]:c=[c[0]]),await f("memesluna/updateImageMetadata",{collectionName:t,filename:s,tags:c,aliases:$}),ee.value[a]=c,ne.value[a]=$})),r(`成功应用批量修改(共 ${l.length} 张图片)`,"success"),$e(),_e.value=false}catch(s){console.error("Failed to save bulk tags:",s),r("批量设置标签失败","error")}finally{V.value=false}}function De(l,t){return`${l}/${t}`}function Ft(l){return v.value?ee.value[De(v.value.name,l)]||[]:[]}async function yl(l,t){var a;const s=await Promise.allSettled(t.map(c=>f("memesluna/getImageMetadata",l,c)));for(let c=0;c<t.length;c++){const $=s[c];if($.status==="fulfilled"&&((a=$.value)!=null&&a.ok)){const j=De(l,t[c]);ee.value[j]=$.value.tags||[],ne.value[j]=$.value.aliases||[]}}}const Nt=["#f97316","#ec4899","#8b5cf6","#06b6d4","#22c55e","#eab308","#f43f5e","#14b8a6","#a855f7","#3b82f6"];function pt(l){let t=0;for(let s=0;s<l.length;s++)t=(t<<5)-t+l.charCodeAt(s);return Nt[Math.abs(t)%Nt.length]}async function hl(l,t){be.value=l,ae.value=t,ke.value="",we.value="",S.value=false;try{const s=await f("memesluna/getImageMetadata",l,t);U.value=s!=null&&s.ok?s.tags||[]:[],A.value=s!=null&&s.ok?s.aliases||[]:[]}catch{U.value=[],A.value=[]}gt.value=true}async function Rt(){const l=ke.value.trim();if(l){if(!ut.value.includes(l)){r("标签必须是同义词组候选列表中的一个","error");return}U.value=[l],ke.value="",await Xe()}}function bl(l){U.value=U.value.filter(t=>t!==l),Xe()}async function Dt(){const l=we.value.trim();!l||A.value.includes(l)||(A.value=[...A.value,l],we.value="",await Xe())}function kl(l){A.value=A.value.filter(t=>t!==l),Xe()}async function wl(){if(!(S.value||N.value)){S.value=true;try{const l=await f("memesluna/annotateImage",be.value,ae.value);if(l&&l.ok){U.value=l.tags||[],A.value=l.aliases||[];const t=De(be.value,ae.value);ee.value[t]=[...U.value],ne.value[t]=[...A.value],r("AI 语义标注已成功完成!","success")}else r((l==null?void 0:l.error)||"AI 标注失败,请检查配置或模型状态","error")}catch(l){r(l instanceof Error?l.message:"AI 标注接口请求出错","error")}finally{S.value=false}}}async function Xe(){N.value=true;try{await f("memesluna/updateImageMetadata",{collectionName:be.value,filename:ae.value,tags:U.value,aliases:A.value});const l=De(be.value,ae.value);ee.value[l]=[...U.value],ee.value={...ee.value},ne.value[l]=[...A.value],ne.value={...ne.value}}catch(l){console.error("Failed to save tags:",l)}finally{N.value=false}}function Ot(){gt.value=false,ae.value="",U.value=[],A.value=[],S.value=false}const _l=u(null),oe=u(null);function Cl(l){oe.value===l?oe.value=null:oe.value=l}function Oe(){oe.value=null}function ft(l){return O.value.has(l)}function Gt(l){const t=new Set(O.value);t.has(l)?t.delete(l):t.add(l),O.value=t}function $e(){O.value=new Set,ye.value=""}function xl(){const l=new Set(O.value),t=ht.value.filter(s=>s.type==="local");Ht.value?t.forEach(s=>l.delete(s.value)):t.forEach(s=>l.add(s.value)),O.value=l}function Il(l){if(l.type==="local"&&M.value.length){Gt(l.value);return}Mt(l.src)}const L=u(1),mt=u(24),$l=x(()=>{if(!v.value)return[];const l=E.images.map(s=>({id:`local:${s}`,type:"local",label:s,src:xt(v.value.name,s),value:s})),t=E.links.map(s=>({id:`external:${s}`,type:"external",label:Vl(s),src:s,value:s}));return X.value==="local"?l:X.value==="external"?t:[...l,...t]}),yt=x(()=>{const l=Fe.value.trim().toLowerCase();let t=$l.value.filter(s=>l?s.label.toLowerCase().includes(l)||s.value.toLowerCase().includes(l):true);return Re.value==="selected"&&(t=t.filter(s=>s.type==="local"&&O.value.has(s.value))),[...t].sort((s,a)=>Ne.value==="nameDesc"?a.label.localeCompare(s.label):s.label.localeCompare(a.label))}),Ee=x(()=>Math.max(1,Math.ceil(yt.value.length/mt.value))),ht=x(()=>{const l=(L.value-1)*mt.value;return yt.value.slice(l,l+mt.value)}),M=x(()=>Array.from(O.value)),Ht=x(()=>{const l=ht.value.filter(t=>t.type==="local");return l.length>0&&l.every(t=>O.value.has(t.value))}),Wt=x(()=>{if(!v.value)return"";const l=E.images[0];return l?xt(v.value.name,l):E.links[0]||""}),jt=x(()=>v.value?ue(v.value.name):""),Kt=x(()=>{var l;return((l=v.value)==null?void 0:l.totalCount)||E.images.length+E.links.length}),qt=x(()=>{const l=_.name.trim();return l?ue(l):""}),Zt=x(()=>{const l=I.value.filter(s=>s.hasContent).map(s=>({id:`collection:${s.name}`,type:"collection",typeLabel:"表情包",name:s.name,description:s.description||`${s.name} 表情包`,path:`${ge.value}/${s.name}`,fullUrl:ue(s.name),previewImages:Xt(s.name).slice(0,3)})),t=pe.value.map(s=>{const a=ue(s.name),c=vt.value.has(`endpoint:${s.name}`)?[]:[a];return{id:`endpoint:${s.name}`,type:"endpoint",typeLabel:"重定向",name:s.name,description:s.description||"302 重定向",path:`${ge.value}/${s.name}`,fullUrl:a,previewImages:c}});return[...l,...t]}),Qt=x(()=>{const l=Qe.value.trim().toLowerCase();return I.value.filter(t=>{const s=!l||t.name.toLowerCase().includes(l)||(t.description||"").toLowerCase().includes(l),a=me.value==="all"||me.value==="local"&&t.localCount>0&&t.linkCount===0||me.value==="external"&&t.linkCount>0;return s&&a})}),ie=x(()=>{const l=dt.value.trim().toLowerCase();return l?P.value.filter(t=>t.filename.toLowerCase().includes(l)||t.originalName.toLowerCase().includes(l)||t.source.toLowerCase().includes(l)||t.reason.toLowerCase().includes(l)):P.value}),bt=x(()=>{const l=new Set(ie.value.map(t=>t.id));return ct.value.map((t,s)=>({...t,label:String(s+1),items:t.items.filter(a=>l.has(a.id))})).filter(t=>t.items.length>1)}),El=x(()=>{const l=new Map;for(const t of bt.value)for(const s of t.items)l.set(s.id,s);return Array.from(l.values())}),Sl=x(()=>Array.from(D.value)),Yt=x(()=>{const l=ie.value;return l.length>0&&l.every(t=>D.value.has(t.id))});function kt(l){return D.value.has(l)}function Ml(l){const t=new Set(D.value);t.has(l)?t.delete(l):t.add(l),D.value=t}function Al(){const l=new Set(D.value);Yt.value?ie.value.forEach(t=>l.delete(t.id)):ie.value.forEach(t=>l.add(t.id)),D.value=l}function et(){D.value=new Set}async function Tl(){const l=Sl.value;if(l.length&&confirm(`确认永久删除已选择的 ${l.length} 张暂缓图片吗?此操作无法恢复!`))try{p.value=true,await Promise.all(l.map(t=>f("memesluna/deleteStagedImage",t))),r(`已删除 ${l.length} 张暂缓图片`,"success"),et(),await te(),await b()}catch(t){r(t instanceof Error?t.message:"批量删除暂缓图片失败","error")}finally{p.value=false}}async function Ll(){if(P.value.length&&confirm(`⚠️ 危险操作:确认永久删除暂缓区全部 ${P.value.length} 张图片吗?此操作不可逆!`))try{p.value=true;const l=await f("memesluna/deleteAllStagedImages");r(`已清空暂缓区,共删除 ${l} 张图片`,"success"),et(),await te(),await b()}catch(l){r(l instanceof Error?l.message:"清空暂缓区失败","error")}finally{p.value=false}}const wt=u(""),Ge=u(""),He=u(false),_t=u(null),Q=nt({show:false,message:"",type:"info"});let Ct=null;function r(l,t="info"){Ct&&clearTimeout(Ct),Q.message=l,Q.type=t,Q.show=true,Ct=setTimeout(()=>{Q.show=false},2500)}function tt(l){w.value=l,sessionStorage.setItem("memesluna_active_menu",l),l==="settings"&&Et(),l==="staging"?te():et()}function re(){const l=qe.value.endsWith("/")?qe.value.slice(0,-1):qe.value,t=ge.value.startsWith("/")?ge.value:`/${ge.value}`,s=t.endsWith("/")?t.slice(0,-1):t;return`${l}${s}`}function ue(l){return`${re()}/${l}`}function xt(l,t){return`${re()}/api/admin/collections/${encodeURIComponent(l)}/images/${encodeURIComponent(t)}`}function lt(l){return`${re()}/api/admin/staged-images/${encodeURIComponent(l)}`}function Bl(l){if(l.type!=="endpoint")return;const t=new Set(vt.value);t.add(l.id),vt.value=t}function st(l){if(!l)return"-";const t=new Date(l);return Number.isNaN(t.getTime())?"-":t.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})}function Ul(l){return Number.isFinite(l)?String(Math.round(l*100))+"%":"-"}function Jt(l){if(!Number.isFinite(l)||l<=0)return"-";const t=["B","KB","MB","GB"];let s=l,a=0;for(;s>=1024&&a<t.length-1;)s/=1024,a++;return`${s>=10||a===0?s.toFixed(0):s.toFixed(1)} ${t[a]}`}function It(l){const t=l.split(".").pop();return t?t.toUpperCase():"IMG"}function Vl(l){try{const t=new URL(l);return decodeURIComponent(t.pathname.split("/").filter(Boolean).pop()||t.hostname)||t.hostname}catch{return l}}function zl(l){return Z[l]}function Xt(l){var t;return((t=Z[l])==null?void 0:t.images)||[]}function $t(l){return Xt(l).slice(0,6)}async function Pl(l){var t;if(!(!l.hasContent||(t=Z[l.name])!=null&&t.images.length)){Z[l.name]=Z[l.name]||{loading:true,images:[]},Z[l.name].loading=true;try{const s=await fetch(`${re()}/api/collections/${encodeURIComponent(l.name)}/resources`);if(!s.ok)return;const a=await s.json(),c=9,$=Array.isArray(a.images)?a.images.slice(0,c).map(Se=>xt(l.name,Se)):[],j=Array.isArray(a.links)?a.links.slice(0,c-$.length):[];Z[l.name].images=[...$,...j]}catch{Z[l.name].images=[]}finally{Z[l.name].loading=false}}}function Fl(){I.value.filter(l=>l.hasContent).slice(0,24).forEach(l=>{Pl(l)})}async function b(){try{qe.value=window.location.origin;const l=await f("memesluna/getState");l&&(l.backendPath&&(ge.value=l.backendPath),pe.value=Array.isArray(l.endpoints)?l.endpoints:[],I.value=Array.isArray(l.collections)?l.collections:[],P.value=Array.isArray(l.stagedImages)?l.stagedImages:[],Array.isArray(l.synonymGroups)&&(Ut.value=l.synonymGroups),Fl())}catch(l){r(l instanceof Error?l.message:"获取插件状态同步失败","error")}}async function Et(){try{const l=await fetch(`${re()}/api/homepage-data`);if(l.ok){const t=await l.json();wt.value=t.routeInventory||"",Ge.value=t.llmPrompt||""}}catch(l){console.error("Failed to sync settings variables preview:",l)}}async function te(){try{const l=await f("memesluna/getStagedImages");P.value=Array.isArray(l)?l:[],Y.value==="similar"&&await el()}catch(l){r(l instanceof Error?l.message:"刷新暂缓区失败","error")}}async function el(){fe.value=true;try{const l=await f("memesluna/getSimilarStagedImages");ct.value=Array.isArray(l==null?void 0:l.groups)?l.groups:[],Ze.value=(l==null?void 0:l.message)||"",l&&l.available===false&&r(l.message||"相似图片筛选不可用","error")}catch(l){ct.value=[],Ze.value="",r(l instanceof Error?l.message:"筛选相似图片失败","error")}finally{fe.value=false}}async function Nl(){if(Y.value==="similar"){Y.value="all";return}Y.value="similar",await el()}async function tl(l){var s;const t=K.value[l.id];if(!t){r("请选择目标表情包","error");return}R.value=l.id;try{const a=await f("memesluna/promoteStagedImage",l.id,t);a?(r(`已归档到表情包 "${t}",新文件名 ${a}`,"success"),delete K.value[l.id]):r("暂缓图片不存在或已被处理","error"),await te(),await b(),((s=v.value)==null?void 0:s.name)===t&&await W(t)}catch(a){r(a instanceof Error?a.message:"归档暂缓图片失败","error")}finally{R.value=""}}async function ll(l){if(confirm(`确认从暂缓区删除 "${l.originalName||l.filename}" 吗?`)){R.value=l.id;try{await f("memesluna/deleteStagedImage",l.id)?(r("已从暂缓区删除","success"),delete K.value[l.id]):r("暂缓图片不存在或已被处理","error"),await te(),await b()}catch(t){r(t instanceof Error?t.message:"删除暂缓图片失败","error")}finally{R.value=""}}}async function Rl(l){let t=0;for(const s of l)try{const a=await Jl(s.file);await f("memesluna/addStagedImage",{base64:a,originalName:s.file.name,source:v.value?`upload:${v.value.name}`:"upload-filter",reason:s.reason}),t++}catch(a){console.error("Failed to stage filtered image:",s.file.name,a)}return t&&await te(),t}function Dl(){at(),Ve.value=true}function sl(){at(),Ve.value=false}function at(){q.value=null,_.name="",_.group="",_.description="",_.url=""}function Ol(l){q.value=l,Ve.value=true,_.name=l.name||"",_.group=l.group||"",_.description=l.description||"",_.url=l.url||""}async function Gl(){const l=_.name.trim(),t=_.url.trim();if(!l||!t){r("端点名称和目标直链 URL 均必填","error");return}const s={name:l,group:_.group.trim()||"默认分组",description:_.description.trim(),url:t,method:"redirect"};try{p.value=true,q.value?(await f("memesluna/updateEndpoint",q.value.name,s),r("端点路由参数已成功更新","success")):(await f("memesluna/createEndpoint",s),r("接口端点已成功创建","success")),await b(),at(),Ve.value=false}catch(a){r(a instanceof Error?a.message:"保存端点失败","error")}finally{p.value=false}}async function Hl(l){if(confirm(`确认删除端点路由 "${l}" 吗?`))try{p.value=true,await f("memesluna/deleteEndpoint",l),r("该分发端点已彻底删除","success"),await b(),q.value&&q.value.name===l&&at()}catch(t){r(t instanceof Error?t.message:"删除端点路由失败","error")}finally{p.value=false}}async function de(l){try{await navigator.clipboard.writeText(l),r("成功复制链接到剪贴板","success")}catch{r("复制失败","error")}}async function Wl(){var t;let l=Vt.value.trim();if(l||(l=((t=window.prompt("请输入表情包名称"))==null?void 0:t.trim())||""),!l){r("表情包名称不能为空","error");return}try{if(p.value=true,!await f("memesluna/createCollection",l)){r("该名称的表情包已存在,请更换其他名称","error");return}r("表情包已成功创建","success"),Vt.value="",await b()}catch(s){r(s instanceof Error?s.message:"创建失败","error")}finally{p.value=false}}async function al(l){if(J.value=null,!!confirm(`⚠️ 危险操作:确认永久且彻底删除表情包 "${l}",及其包含的所有本地图片文件吗?此项操作不可逆!`))try{p.value=true,await f("memesluna/deleteCollection",l),r("该表情包资源已彻底销毁删除","success"),v.value=null,await b()}catch(t){r(t instanceof Error?t.message:"删除失败","error")}finally{p.value=false}}async function St(l){J.value=null,v.value=l,sessionStorage.setItem("memesluna_active_collection",l.name),Ye.value=l.description||"",ze.value="",Fe.value="",Ne.value="name",Re.value="all",he.value="grid",F.value="",L.value=1,$e(),await W(l.name);const t=[...E.images];t.length&&yl(l.name,t)}function jl(){v.value=null,sessionStorage.removeItem("memesluna_active_collection"),F.value&&URL.revokeObjectURL(F.value),F.value="",$e()}async function W(l){try{const t=await fetch(`${re()}/api/collections/${encodeURIComponent(l)}/resources`);if(t.ok){const s=await t.json();E.images=Array.isArray(s.images)?s.images:[],E.links=Array.isArray(s.links)?s.links:[];const a=new Set(E.images);O.value=new Set(M.value.filter(c=>a.has(c)))}}catch{r("加载该表情包下的图片缓存失败","error")}}async function Kl(){if(!v.value)return;p.value=true,await W(v.value.name),await b();const l=I.value.find(t=>t.name===v.value.name);l&&(v.value=l),p.value=false,r("本地及缓存资源数据已刷新成功","success")}async function ql(){if(v.value){Je.value=true;try{const l=await fetch(jt.value,{redirect:"follow"});if(!l.ok){r("测试接口未返回可用图片","error");return}const t=await l.blob();if(!t.type.startsWith("image/")){r("测试接口返回的不是图片资源","error");return}F.value&&URL.revokeObjectURL(F.value),F.value=URL.createObjectURL(t),r("已获取随机图片预览","success"),await b();const s=I.value.find(a=>{var c;return a.name===((c=v.value)==null?void 0:c.name)});s&&(v.value=s)}catch(l){r(l instanceof Error?l.message:"测试接口失败","error")}finally{Je.value=false}}}async function nl(){if(v.value)try{p.value=true,await f("memesluna/setCollectionDescription",v.value.name,Ye.value.trim()),r("表情包描述已成功保存","success"),await b();const l=I.value.find(t=>t.name===v.value.name);l&&(v.value=l)}catch(l){r(l instanceof Error?l.message:"保存表情包描述失败","error")}finally{p.value=false}}function Zl(){_t.value&&_t.value.click()}function Ql(l){const t=l.target;t.files&&ol(t.files)}function Yl(l){He.value=false,l.dataTransfer&&l.dataTransfer.files&&ol(l.dataTransfer.files)}async function ol(l){if(!v.value)return;const t=10*1024*1024,a=Array.from(l).filter(k=>{const Te=k.name.toLowerCase();return k.type.startsWith("image/")||/\.(jpe?g|png|gif|bmp|webp|svg|tiff?|psd|avif)$/.test(Te)});if(!a.length){r("请拖入或选择有效的图片格式文件","error");return}const c=a.filter(k=>k.name.toLowerCase().endsWith(".avif")),$=a.filter(k=>!k.name.toLowerCase().endsWith(".avif")),j=new Map;for(const k of $)k.size>t&&j.set(k,"文件大小超过 10MB,需人工复核后再决定是否归档");const Se=Array.from(j,([k,Te])=>({file:k,reason:Te})),Me=$.filter(k=>!j.has(k));let Ae=0;if(Se.length&&(Ae=await Rl(Se)),!Me.length){if(Ae>0){const k=c.length?`,${c.length} 张 AVIF 已直接拦截`:"";r(`已将 ${Ae} 张被过滤图片放入暂缓区${k}`,"success")}else c.length?r("已拦截 AVIF 图片。此格式不会进入暂缓区,请先转码为 JPG/PNG/GIF/WEBP。","error"):r("图片已被过滤,但写入暂缓区失败","error");await b();return}if(Me.length>50){r("单次上传表情上限为 50 张,请分批次导入","error"),Ae&&await b();return}r(`开始上传 ${Me.length} 张表情图片...`,"info");let At=0,We=0;for(let k=0;k<Me.length;k++){const Te=Me[k];r(`正在上传: ${Te.name} (${k+1}/${Me.length})...`,"info");try{const Tt=new FormData;Tt.append("images",Te);const dl=await fetch(`${re()}/api/admin/collections/${encodeURIComponent(v.value.name)}/images`,{method:"POST",body:Tt});if(dl.ok){const Lt=await dl.json();Lt.ok&&Lt.uploaded&&Lt.uploaded.length>0?At++:We++}else We++}catch{We++}}const rl=Ae?`,另有 ${Ae} 张进入暂缓区`:"",ul=c.length?`,${c.length} 张 AVIF 已直接拦截`:"";At>0?r(`成功上传 ${At} 张图片${We?`,失败 ${We} 张`:""}${rl}${ul}`,"success"):r(`图片上传失败${rl}${ul}`,"error"),await W(v.value.name),await b()}function Jl(l){return new Promise((t,s)=>{const a=new FileReader;a.readAsDataURL(l),a.onload=()=>{const $=a.result.split(",")[1];t($)},a.onerror=c=>s(c)})}async function Xl(){if(!v.value)return;const l=ze.value.trim();if(!l){r("链接文本不能为空","error");return}try{p.value=true;const t=await f("memesluna/addLinks",v.value.name,l);r(`已成功录入 ${t} 条网络图片外链`,"success"),ze.value="",await W(v.value.name),await b()}catch(t){r(t instanceof Error?t.message:"添加失败","error")}finally{p.value=false}}async function es(l,t){if(confirm("确认删除该图片网络外链直链吗?"))try{p.value=true,await f("memesluna/deleteLink",l,t),r("外链直链已彻底删除","success"),await W(l),await b()}catch(s){r(s instanceof Error?s.message:"删除链接失败","error")}finally{p.value=false}}async function ts(l,t){if(confirm(`确认永久删除该本地图片素材 "${t}" 吗?此操作无法恢复!`))try{p.value=true,await f("memesluna/deleteLocalImage",l,t),r("该本地图片已永久删除","success"),await W(l),await b()}catch(s){r(s instanceof Error?s.message:"删除失败","error")}finally{p.value=false}}async function ls(){if(!v.value||!M.value.length)return;const l=M.value;if(confirm(`确认永久删除已选择的 ${l.length} 张本地图片素材吗?此操作无法恢复!`))try{p.value=true,await Promise.all(l.map(t=>f("memesluna/deleteLocalImage",v.value.name,t))),r(`已删除 ${l.length} 张本地图片`,"success"),$e(),await W(v.value.name),await b()}catch(t){r(t instanceof Error?t.message:"批量删除失败","error")}finally{p.value=false}}async function ss(l,t,s){try{p.value=true,await f("memesluna/moveLocalImage",l,t,s)?(r(`已将素材移动至表情包 "${t}" 并重命名`,"success"),await W(l),await b()):r("移动失败","error")}catch(a){r(a instanceof Error?a.message:"移库失败","error")}finally{p.value=false}}async function as(){if(!v.value||!M.value.length||!ye.value)return;const l=v.value.name,t=ye.value;if(t===l){r("不能移动到当前表情包","error");return}const s=M.value;try{p.value=true,await Promise.all(s.map(a=>f("memesluna/moveLocalImage",l,t,a))),r(`已将 ${s.length} 张素材移动至表情包 "${t}"`,"success"),$e(),await W(l),await b()}catch(a){r(a instanceof Error?a.message:"批量移动失败","error")}finally{p.value=false}}function Mt(l){window.open(l,"_blank")}function ns(l){J.value=J.value===l?null:l}const il=()=>{_l.value=null,J.value=null,oe.value=null};return rs(async()=>{if(window.addEventListener("click",il),p.value=true,await b(),w.value==="resources")if(T.value==="tag"){await Bt();const l=sessionStorage.getItem("memesluna_active_tag_view");l&&await rt(l)}else{const l=sessionStorage.getItem("memesluna_active_collection");if(l){const t=I.value.find(s=>s.name===l);t&&await St(t)}}else w.value==="staging"?await te():w.value==="settings"&&await Et();p.value=false}),us(()=>{window.removeEventListener("click",il),F.value&&URL.revokeObjectURL(F.value)}),je(E,()=>{L.value>Ee.value&&Ee.value>0&&(L.value=Ee.value)}),je([Fe,Ne,Re],()=>{L.value=1}),je([Qe,me],()=>{J.value=null}),je(T,l=>{sessionStorage.setItem("memesluna_active_resource_view",l)}),je(se,l=>{l?sessionStorage.setItem("memesluna_active_tag_view",l):sessionStorage.removeItem("memesluna_active_tag_view")}),(l,t)=>(n(),o("div",ps,[d(" MAIN CONTENT AREA "),e("main",fs,[d(" Top Notion Breadcrumbs "),e("header",ms,[e("div",ys,[t[46]||(t[46]=e("span",{class:"crumb-root"},"MemesLuna 控制台",-1)),t[47]||(t[47]=e("span",{class:"crumb-separator"},"/",-1)),w.value==="resources"?(n(),o("span",hs,"表情包管理")):w.value==="distribution"?(n(),o("span",bs,"分发管理")):w.value==="settings"?(n(),o("span",ks,"预览")):w.value==="staging"?(n(),o("span",ws,"暂缓区")):d("v-if",true),w.value==="resources"&&v.value?(n(),o(g,{key:4},[t[45]||(t[45]=e("span",{class:"crumb-separator"},"/",-1)),e("span",_s,"表情包: "+i(v.value.name),1)],64)):d("v-if",true)]),d(" Quick Stats Banner "),p.value?d("v-if",true):(n(),o("div",Cs,[e("span",xs,"📂 表情包总数: "+i(I.value.length),1),e("span",Is,"🌐 分发接口: "+i(pe.value.length),1),e("span",$s,"🕓 暂缓候选: "+i(P.value.length),1)]))]),d(" NOTION-STYLE HORIZONTAL VIEW SWITCHER "),v.value?d("v-if",true):(n(),o("div",Es,[e("button",{onClick:t[0]||(t[0]=s=>tt("resources")),class:m(["switcher-btn",w.value==="resources"?"active":""])},[...t[48]||(t[48]=[e("span",{class:"switcher-icon"},"📦",-1),e("span",{class:"switcher-label"},"表情包管理",-1)])],2),e("button",{onClick:t[1]||(t[1]=s=>tt("distribution")),class:m(["switcher-btn",w.value==="distribution"?"active":""])},[...t[49]||(t[49]=[e("span",{class:"switcher-icon"},"🌐",-1),e("span",{class:"switcher-label"},"分发管理",-1)])],2),e("button",{onClick:t[2]||(t[2]=s=>tt("staging")),class:m(["switcher-btn",w.value==="staging"?"active":""])},[...t[50]||(t[50]=[e("span",{class:"switcher-icon"},"🕓",-1),e("span",{class:"switcher-label"},"暂缓区",-1)])],2),e("button",{onClick:t[3]||(t[3]=s=>tt("settings")),class:m(["switcher-btn",w.value==="settings"?"active":""])},[...t[51]||(t[51]=[e("span",{class:"switcher-icon"},"👁️",-1),e("span",{class:"switcher-label"},"预览",-1)])],2)])),d(" Global Toast Alert Banner "),ds(cs,{name:"fade"},{default:vs(()=>[Q.show?(n(),o("div",{key:0,class:m(["toast-banner",Q.type])},[Q.type==="success"?(n(),o("svg",Ss,[...t[52]||(t[52]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):Q.type==="error"?(n(),o("svg",Ms,[...t[53]||(t[53]=[e("circle",{cx:"12",cy:"12",r:"10"},null,-1),e("line",{x1:"12",y1:"8",x2:"12",y2:"12"},null,-1),e("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"},null,-1)])])):(n(),o("svg",As,[...t[54]||(t[54]=[e("circle",{cx:"12",cy:"12",r:"10"},null,-1),e("line",{x1:"12",y1:"16",x2:"12",y2:"12"},null,-1),e("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"},null,-1)])])),e("span",null,i(Q.message),1)],2)):d("v-if",true)]),_:1}),d(" Loading Cover "),p.value?(n(),o("div",Ts,[...t[55]||(t[55]=[e("div",{class:"spinner"},null,-1),e("p",null,"正在同步数据...",-1)])])):(n(),o(g,{key:2},[d(" MAIN ROUTER BODY "),e("div",Ls,[d(" MENU VIEW 1: RESOURCES (📦) "),w.value==="resources"?(n(),o("div",Bs,[d(" Collection Lists (Folder view) "),!v.value&&!se.value?(n(),o("div",Us,[d(" Creator bar in Notion Style "),e("div",Vs,[t[62]||(t[62]=e("div",null,[e("h1",{class:"notion-main-title"},"表情包管理"),e("p",{class:"section-desc compact"},"管理表情包合集与图片素材")],-1)),e("div",zs,[d(" View toggle: collection / tag "),e("div",Ps,[e("button",{class:m(["pill-btn",T.value==="collection"?"active":""]),onClick:t[4]||(t[4]=s=>T.value="collection")},[...t[56]||(t[56]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1),C(" 合集 ",-1)])],2),e("button",{class:m(["pill-btn",T.value==="tag"?"active":""]),onClick:Bt},[...t[57]||(t[57]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[e("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),e("path",{d:"M7 7h.01"})],-1),C(" 标签 ",-1)])],2)]),e("div",Fs,[t[58]||(t[58]=e("svg",{class:"collection-toolbar-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("path",{d:"m21 21-4.3-4.3"})],-1)),y(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>Qe.value=s),class:"flat-input collection-search-input",placeholder:"搜索表情包合集..."},null,512),[[z,Qe.value]])]),e("label",Ns,[t[60]||(t[60]=e("svg",{class:"collection-toolbar-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 4h18l-7 8v6l-4 2v-8z"})],-1)),y(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>me.value=s),class:"flat-select collection-filter-select","aria-label":"筛选表情包合集"},[...t[59]||(t[59]=[e("option",{value:"all"},"全部",-1),e("option",{value:"local"},"仅本地",-1),e("option",{value:"external"},"含外链",-1)])],512),[[Le,me.value]])]),e("button",{onClick:Wl,class:"btn btn-primary btn-notion"},[...t[61]||(t[61]=[e("span",{class:"btn-plus"},"+",-1),C(" 新建表情包 ",-1)])])])]),t[71]||(t[71]=e("hr",{class:"notion-hr"},null,-1)),d(" Folders grid layout "),I.value.length?Qt.value.length?y((n(),o("div",Os,[(n(true),o(g,null,h(Qt.value,s=>{var a;return n(),o("div",{key:s.name,class:m(["folder-card",{"folder-card-active-menu":J.value===s.name}]),onClick:c=>St(s)},[e("div",{class:m(["folder-cover",$t(s.name).length?"has-preview":"empty"])},[$t(s.name).length?(n(true),o(g,{key:0},h($t(s.name),c=>(n(),o("img",{key:c,src:c,class:"folder-cover-img",loading:"lazy",alt:`${s.name} 预览图`},null,8,Hs))),128)):(n(),o("div",Ws,[...t[65]||(t[65]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1)])])),(a=zl(s.name))!=null&&a.loading?(n(),o("span",js,"同步中")):d("v-if",true)],2),e("div",Ks,[e("div",qs,[e("div",{class:"folder-name",title:s.description||s.name},i(s.name),9,Zs),e("button",{class:"folder-more-btn",title:"更多操作",onClick:B(c=>ns(s.name),["stop"])},[...t[66]||(t[66]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"5",cy:"12",r:"1"}),e("circle",{cx:"12",cy:"12",r:"1"}),e("circle",{cx:"19",cy:"12",r:"1"})],-1)])],8,Qs),J.value===s.name?(n(),o("div",{key:0,class:"folder-action-menu",onClick:t[7]||(t[7]=B(()=>{},["stop"]))},[e("button",{onClick:c=>St(s)},"打开详情",8,Ys),e("button",{class:"danger",onClick:c=>al(s.name)},"删除表情包",8,Js)])):d("v-if",true)]),e("div",Xs,[e("div",ea,i(s.totalCount)+" 张图片",1),e("div",ta,[e("span",la,[t[67]||(t[67]=e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 7a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"})],-1)),C(" 本地 "+i(s.localCount)+" · 外链 "+i(s.linkCount),1)])])])])],10,Gs)}),128))],512)),[[ce,T.value==="collection"]]):y((n(),o("div",Ds,[...t[64]||(t[64]=[e("div",{class:"empty-icon"},"🔎",-1),e("h3",null,"没有匹配的表情包合集",-1),e("p",null,"换个关键词或筛选条件再试试。",-1)])],512)),[[ce,T.value==="collection"]]):y((n(),o("div",Rs,[...t[63]||(t[63]=[e("div",{class:"empty-icon"},"📁",-1),e("h3",null,"尚未创建任何表情包",-1),e("p",null,"点击右上角按钮即可快速创建一个新的表情包合集。",-1)])],512)),[[ce,T.value==="collection"]]),d(" Tag View (alternative to collection grid) "),T.value==="tag"?(n(),o("div",sa,[Ue.value?(n(),o("div",aa,[...t[68]||(t[68]=[e("div",{class:"spinner"},null,-1),e("p",null,"加载标签数据...",-1)])])):le.value.length?(n(),o("div",oa,[(n(true),o(g,null,h(le.value,s=>(n(),o("div",{key:s.tag,class:"folder-card",onClick:a=>rt(s.tag)},[d(" 少于6张:单图居中拉伸;6张及以上:6宫格展示 "),e("div",{class:m(["folder-cover",s.previewUrls.length===0?"empty":s.previewUrls.length<6?"tag-cover-single has-preview":"tag-cover-grid has-preview"])},[s.previewUrls.length>0?(n(),o(g,{key:0},[s.previewUrls.length<6?(n(),o("img",{key:0,src:s.previewUrls[0],class:"folder-cover-img tag-cover-single-img",loading:"lazy"},null,8,ra)):(n(true),o(g,{key:1},h(s.previewUrls.slice(0,6),(a,c)=>(n(),o("img",{key:c,src:a,class:"folder-cover-img",loading:"lazy"},null,8,ua))),128))],64)):(n(),o("div",da,[...t[70]||(t[70]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),e("path",{d:"M7 7h.01"})],-1)])]))],2),e("div",ca,[e("div",va,[e("div",ga,[(n(true),o(g,null,h(s.synonymWords,(a,c)=>(n(),o("span",{key:c,class:m(["tag-synonym-chip",`tag-color-${(s.groupIndex>=0?s.groupIndex:0)%8}`])},i(a),3))),128))])]),e("div",pa,[e("div",fa,i(s.count)+" 张图片",1)])])],8,ia))),128))])):(n(),o("div",na,[...t[69]||(t[69]=[e("div",{class:"empty-icon"},"🏷️",-1),e("h3",null,"暂无标签",-1),e("p",null,"开启 AI 标注后,上传图片时会自动生成标签,也可以手动为图片添加标签。",-1)])]))])):d("v-if",true)])):d("v-if",true),d(" Tag Detail View (cross-collection images by tag) "),se.value?(n(),o("div",ma,[e("div",ya,[e("div",ha,[e("button",{onClick:vl,class:"detail-back-btn",title:"返回标签列表"},[...t[72]||(t[72]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"m15 18-6-6 6-6"})],-1),C(" 返回标签列表 ",-1)])]),t[73]||(t[73]=e("span",{class:"detail-separator"},"/",-1)),e("span",ba,"#"+i(se.value),1),t[74]||(t[74]=e("span",{class:"detail-separator"},"/",-1)),e("span",ka,i(ve.value.length)+" 张图片",1)])]),it.value?(n(),o("div",wa,[...t[75]||(t[75]=[e("div",{class:"spinner"},null,-1),e("p",null,"加载图片...",-1)])])):ve.value.length?(n(),o("div",Ca,[(n(true),o(g,null,h(ve.value,s=>(n(),o("div",{key:s.collection+"/"+s.filename,class:"notion-gallery-card"},[e("div",xa,[e("img",{src:s.imageUrl,class:"gallery-img",loading:"lazy"},null,8,Ia)]),e("div",$a,[e("div",{class:"gallery-card-collection",title:s.collection},i(s.collection),9,Ea),e("div",Sa,[(n(true),o(g,null,h(s.tags,a=>(n(),o("span",{key:a,class:m(["mini-tag",a===se.value?"active-tag":""]),onClick:B(c=>rt(a),["stop"])},i(a),11,Ma))),128))])])]))),128))])):(n(),o("div",_a,[...t[76]||(t[76]=[e("div",{class:"empty-icon"},"🏷️",-1),e("h3",null,"没有找到带此标签的图片",-1)])]))])):v.value?(n(),o(g,{key:2},[d(" Collection Details (Inside details view) "),e("div",{class:"collection-detail-layout",onDragover:t[37]||(t[37]=B(s=>He.value=true,["prevent"]))},[e("div",Aa,[e("div",Ta,[e("div",La,[e("button",{onClick:jl,class:"detail-back-btn",title:"返回列表"},[...t[77]||(t[77]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"m15 18-6-6 6-6"})],-1),C(" 返回列表 ",-1)])]),t[78]||(t[78]=e("span",{class:"detail-separator"},"/",-1)),e("span",Ba,i(v.value.name),1),t[79]||(t[79]=e("span",{class:"detail-separator"},"/",-1)),t[80]||(t[80]=e("span",{class:"detail-crumb-strong"},"图片素材",-1))]),e("div",Ua,[e("button",{onClick:Kl,class:"asset-btn secondary",title:"刷新缓存"},[...t[81]||(t[81]=[ot('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-38501121><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-38501121></path><path d="M3 21v-5h5" data-v-38501121></path><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-38501121></path><path d="M16 8h5V3" data-v-38501121></path></svg> 刷新缓存 ',2)])]),e("button",{onClick:Zl,class:"asset-btn primary"},[...t[82]||(t[82]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("path",{d:"m17 8-5-5-5 5"}),e("path",{d:"M12 3v12"})],-1),C(" 上传图片 ",-1)])]),e("button",{onClick:t[8]||(t[8]=s=>Pe.value=!Pe.value),class:"asset-btn secondary"},[...t[83]||(t[83]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),e("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})],-1),C(" 导入外链 ",-1)])]),e("button",{onClick:t[9]||(t[9]=s=>al(v.value.name)),class:"asset-btn danger ghost",title:"删除表情包"},[...t[84]||(t[84]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 6h18"}),e("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}),e("path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),e("input",{ref_key:"fileInput",ref:_t,type:"file",multiple:"",accept:"image/*",class:"hidden-file-input",onChange:Ql},null,544)])]),e("section",Va,[e("div",za,[e("div",Pa,[Wt.value?(n(),o("img",{key:0,src:Wt.value,class:"asset-avatar-img",alt:`${v.value.name} 封面`},null,8,Fa)):(n(),o("div",Na,[...t[85]||(t[85]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"})],-1)])]))]),e("div",Ra,[e("div",Da,[e("h1",null,i(v.value.name),1),t[86]||(t[86]=e("span",{class:"asset-pill"},"本地",-1))]),y(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>Ye.value=s),class:"asset-description-input",placeholder:"添加表情包描述",onBlur:nl,onKeyup:Ke(nl,["enter"])},null,544),[[z,Ye.value]]),e("div",Oa,[e("span",null,"创建于 "+i(st(v.value.createdAt)),1),e("span",null,"最后更新 "+i(st(v.value.updatedAt)),1),e("span",null,"共 "+i(Kt.value)+" 张图片",1)])])]),e("div",Ga,[t[89]||(t[89]=e("div",{class:"asset-card-label"},"API 调用地址",-1)),e("div",Ha,[e("code",null,i(jt.value),1),e("button",{onClick:ql,class:"asset-test-btn",disabled:Je.value},[t[87]||(t[87]=e("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M8 5v14l11-7z"})],-1)),C(" "+i(Je.value?"测试中":"测试接口"),1)],8,Wa)]),t[90]||(t[90]=e("div",{class:"asset-api-hint"},"直接访问该链接将随机返回一张表情图片",-1)),F.value?(n(),o("div",ja,[e("img",{src:F.value,alt:"API 返回图片预览"},null,8,Ka),t[88]||(t[88]=e("span",null,"随机预览",-1))])):d("v-if",true)])]),d(" Drag over drop zone area "),y(e("div",{class:"sidebar-drop-zone-overlay",onDragover:t[11]||(t[11]=B(s=>He.value=true,["prevent"])),onDragleave:t[12]||(t[12]=B(s=>He.value=false,["prevent"])),onDrop:B(Yl,["prevent"])},[...t[91]||(t[91]=[ot('<div class="drop-overlay-box" data-v-38501121><svg class="drop-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-38501121><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-v-38501121></path><polyline points="17 8 12 3 7 8" data-v-38501121></polyline><line x1="12" y1="3" x2="12" y2="15" data-v-38501121></line></svg><p data-v-38501121>释放图片文件以导入此表情包</p></div>',1)])],544),[[ce,He.value]]),y(e("div",qa,[e("div",Za,[t[93]||(t[93]=e("div",null,[e("div",{class:"asset-import-title"},"导入外链图片"),e("div",{class:"asset-import-desc"},"每行一个以 http:// 或 https:// 开头的图片链接")],-1)),e("button",{onClick:t[13]||(t[13]=s=>Pe.value=false),class:"asset-icon-btn compact",title:"关闭导入面板"},[...t[92]||(t[92]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])])]),y(e("textarea",{"onUpdate:modelValue":t[14]||(t[14]=s=>ze.value=s),rows:"4",class:"asset-link-textarea",placeholder:"每行一个以 http:// 或 https:// 开头的链接"},null,512),[[z,ze.value]]),e("div",Qa,[e("button",{onClick:Xl,class:"asset-btn primary"},"确认导入"),e("button",{onClick:t[15]||(t[15]=s=>Pe.value=false),class:"asset-btn secondary"},"取消")])],512),[[ce,Pe.value]]),d(" Tag Editor Dialog "),gt.value?(n(),o("div",{key:0,class:"tag-editor-overlay",onClick:B(Ot,["self"])},[e("div",Ya,[e("div",Ja,[e("div",null,[t[94]||(t[94]=e("div",{class:"tag-editor-title"},"编辑标注 & 标签",-1)),e("div",Xa,i(be.value)+" / "+i(ae.value),1)]),e("div",en,[e("button",{onClick:wl,class:"btn btn-secondary btn-small",disabled:S.value||N.value,style:{display:"flex","align-items":"center",gap:"4px",padding:"4px 8px","font-size":"12px"}},[S.value?(n(),o("svg",ln,[...t[95]||(t[95]=[e("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4",style:{opacity:"0.25"}},null,-1),e("path",{d:"M4 12a8 8 0 0 1 8-8V0C5.373 0 0 5.373 0 12h4z",fill:"currentColor"},null,-1)])])):(n(),o("span",sn,"✨")),C(" "+i(S.value?"自动标注中...":"AI 自动标注"),1)],8,tn),e("button",{onClick:Ot,class:"icon-btn hover-bg",disabled:S.value||N.value},[...t[96]||(t[96]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])],8,an)])]),e("div",nn,[d(" Tags Section "),e("div",on,[t[97]||(t[97]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🏷️"),e("span",null,"路由标签 (Tags)"),e("span",{style:{"font-size":"11px","font-weight":"normal",color:"var(--k-text-muted, #888)","margin-left":"4px"}},"用于跨合集路由随机返回")],-1)),e("div",rn,[(n(true),o(g,null,h(U.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag"},[C(i(s)+" ",1),e("button",{onClick:a=>bl(s),class:"tag-remove-btn",disabled:N.value||S.value},"×",8,un)]))),128)),U.value.length?d("v-if",true):(n(),o("span",dn,"暂无标签"))]),e("div",cn,[y(e("input",{"onUpdate:modelValue":t[16]||(t[16]=s=>ke.value=s),class:"flat-input tag-editor-input",list:"allowed-tags-list",placeholder:"选择或输入唯一候选标签",onKeyup:Ke(Rt,["enter"]),disabled:N.value||S.value,style:{"flex-grow":"1"}},null,40,vn),[[z,ke.value]]),e("datalist",gn,[(n(true),o(g,null,h(ut.value,s=>(n(),o("option",{key:s,value:s},null,8,pn))),128))]),e("button",{onClick:Rt,class:"btn btn-secondary btn-small",disabled:!ke.value.trim()||N.value||S.value}," 添加 ",8,fn)])]),d(" Aliases Section "),e("div",mn,[t[98]||(t[98]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🔍"),e("span",null,"检索别名 (Aliases)"),e("span",{style:{"font-size":"11px","font-weight":"normal",color:"var(--k-text-muted, #888)","margin-left":"4px"}},"用于合集内 q=关键词 语义检索")],-1)),e("div",yn,[(n(true),o(g,null,h(A.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag",style:{"background-color":"var(--k-bg-panel, rgba(120, 120, 120, 0.08))","border-color":"transparent"}},[C(i(s)+" ",1),e("button",{onClick:a=>kl(s),class:"tag-remove-btn",disabled:N.value||S.value},"×",8,hn)]))),128)),A.value.length?d("v-if",true):(n(),o("span",bn,"暂无别名"))]),e("div",kn,[y(e("input",{"onUpdate:modelValue":t[17]||(t[17]=s=>we.value=s),class:"flat-input tag-editor-input",placeholder:"添加搜索短语别名,回车添加",onKeyup:Ke(Dt,["enter"]),disabled:N.value||S.value,style:{"flex-grow":"1"}},null,40,wn),[[z,we.value]]),e("button",{onClick:Dt,class:"btn btn-secondary btn-small",disabled:!we.value.trim()||N.value||S.value}," 添加 ",8,_n)])])])])])):d("v-if",true),d(" Bulk Tag Editor Dialog "),_e.value?(n(),o("div",{key:1,class:"tag-editor-overlay",onClick:t[24]||(t[24]=B(s=>_e.value=false,["self"]))},[e("div",Cn,[e("div",xn,[e("div",null,[t[99]||(t[99]=e("div",{class:"tag-editor-title"},"批量设置标签 & 别名",-1)),e("div",In,"已选择 "+i(M.value.length)+" 张图片",1)]),e("button",{onClick:t[18]||(t[18]=s=>_e.value=false),class:"icon-btn hover-bg",disabled:V.value},[...t[100]||(t[100]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])],8,$n)]),e("div",En,[d(" Operation Mode Toggle "),e("div",Sn,[t[101]||(t[101]=e("span",{style:{"font-size":"13px","font-weight":"600"}},"操作模式",-1)),e("div",Mn,[e("button",{class:m(["pill-btn",Ie.value==="add"?"active":""]),onClick:t[19]||(t[19]=s=>Ie.value="add"),style:{"font-size":"12px",padding:"4px 8px"}}," 追加标签 ",2),e("button",{class:m(["pill-btn",Ie.value==="replace"?"active":""]),onClick:t[20]||(t[20]=s=>Ie.value="replace"),style:{"font-size":"12px",padding:"4px 8px"}}," 覆盖标签 ",2)])]),d(" Tags Section "),e("div",An,[t[102]||(t[102]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🏷️"),e("span",null,"批量添加标签 (Tags)")],-1)),e("div",Tn,[(n(true),o(g,null,h(G.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag"},[C(i(s)+" ",1),e("button",{onClick:a=>pl(s),class:"tag-remove-btn",disabled:V.value},"×",8,Ln)]))),128)),G.value.length?d("v-if",true):(n(),o("span",Bn,"等待添加标签"))]),e("div",Un,[y(e("input",{"onUpdate:modelValue":t[21]||(t[21]=s=>Ce.value=s),class:"flat-input tag-editor-input",list:"allowed-tags-list",placeholder:"选择或输入唯一候选标签",onKeyup:Ke(zt,["enter"]),disabled:V.value,style:{"flex-grow":"1"}},null,40,Vn),[[z,Ce.value]]),e("button",{onClick:zt,class:"btn btn-secondary btn-small",disabled:!Ce.value.trim()||V.value}," 添加 ",8,zn)])]),d(" Aliases Section "),e("div",Pn,[t[103]||(t[103]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🔍"),e("span",null,"批量添加别名 (Aliases)")],-1)),e("div",Fn,[(n(true),o(g,null,h(H.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag",style:{"background-color":"var(--k-bg-panel, rgba(120, 120, 120, 0.08))","border-color":"transparent"}},[C(i(s)+" ",1),e("button",{onClick:a=>fl(s),class:"tag-remove-btn",disabled:V.value},"×",8,Nn)]))),128)),H.value.length?d("v-if",true):(n(),o("span",Rn,"等待添加别名"))]),e("div",Dn,[y(e("input",{"onUpdate:modelValue":t[22]||(t[22]=s=>xe.value=s),class:"flat-input tag-editor-input",placeholder:"输入别名,回车添加",onKeyup:Ke(Pt,["enter"]),disabled:V.value,style:{"flex-grow":"1"}},null,40,On),[[z,xe.value]]),e("button",{onClick:Pt,class:"btn btn-secondary btn-small",disabled:!xe.value.trim()||V.value}," 添加 ",8,Gn)])])]),e("div",Hn,[e("button",{onClick:t[23]||(t[23]=s=>_e.value=false),class:"btn btn-secondary",disabled:V.value}," 取消 ",8,Wn),e("button",{onClick:ml,class:"btn btn-primary",disabled:V.value||!G.value.length&&!H.value.length},i(V.value?"保存中...":"确认应用"),9,jn)])])])):d("v-if",true),e("section",Kn,[e("div",qn,[e("div",Zn,[e("button",{onClick:t[25]||(t[25]=s=>{X.value="all",L.value=1}),class:m(["asset-tab",X.value==="all"?"active":""])},[t[104]||(t[104]=C(" 全部 ",-1)),e("span",null,i(Kt.value),1)],2),e("button",{onClick:t[26]||(t[26]=s=>{X.value="local",L.value=1}),class:m(["asset-tab",X.value==="local"?"active":""])},[t[105]||(t[105]=C(" 本地图片 ",-1)),e("span",null,i(E.images.length),1)],2),e("button",{onClick:t[27]||(t[27]=s=>{X.value="external",L.value=1}),class:m(["asset-tab",X.value==="external"?"active":""])},[t[106]||(t[106]=C(" 外链图片 ",-1)),e("span",null,i(E.links.length),1)],2)]),e("div",Qn,[e("div",Yn,[t[107]||(t[107]=e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("path",{d:"m21 21-4.3-4.3"})],-1)),y(e("input",{"onUpdate:modelValue":t[28]||(t[28]=s=>Fe.value=s),placeholder:"搜索图片或外链"},null,512),[[z,Fe.value]])]),y(e("select",{"onUpdate:modelValue":t[29]||(t[29]=s=>Re.value=s),class:"asset-select"},[...t[108]||(t[108]=[e("option",{value:"all"},"筛选: 全部",-1),e("option",{value:"selected"},"筛选: 已选",-1)])],512),[[Le,Re.value]]),y(e("select",{"onUpdate:modelValue":t[30]||(t[30]=s=>Ne.value=s),class:"asset-select"},[...t[109]||(t[109]=[e("option",{value:"name"},"排序: 文件名",-1),e("option",{value:"nameDesc"},"排序: 文件名倒序",-1)])],512),[[Le,Ne.value]]),e("div",Jn,[e("button",{onClick:t[31]||(t[31]=s=>he.value="grid"),class:m(he.value==="grid"?"active":""),title:"网格视图"},[...t[110]||(t[110]=[ot('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-38501121><rect x="3" y="3" width="7" height="7" rx="1" data-v-38501121></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-38501121></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-38501121></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-38501121></rect></svg>',1)])],2),e("button",{onClick:t[32]||(t[32]=s=>he.value="list"),class:m(he.value==="list"?"active":""),title:"列表视图"},[...t[111]||(t[111]=[ot('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-38501121><path d="M8 6h13" data-v-38501121></path><path d="M8 12h13" data-v-38501121></path><path d="M8 18h13" data-v-38501121></path><path d="M3 6h.01" data-v-38501121></path><path d="M3 12h.01" data-v-38501121></path><path d="M3 18h.01" data-v-38501121></path></svg>',1)])],2)])])]),e("div",Xn,[!E.images.length&&!E.links.length?(n(),o("div",eo," 表情包内尚无任何图片资源 ")):yt.value.length?(n(),o("div",lo,[M.value.length?(n(),o("div",so,[e("div",ao,[t[112]||(t[112]=e("span",{class:"bulk-title"},"本地素材",-1)),e("span",no,"已选择 "+i(M.value.length)+" 张",1)]),e("div",oo,[e("button",{onClick:xl,class:"toolbar-btn compact"},i(Ht.value?"取消本页":"选择本页"),1),M.value.length?(n(),o("button",{key:0,onClick:$e,class:"toolbar-btn compact"}," 清空选择 ")):d("v-if",true),M.value.length?(n(),o("div",io,[y(e("select",{"onUpdate:modelValue":t[33]||(t[33]=s=>ye.value=s),class:"flat-select compact-select"},[t[113]||(t[113]=e("option",{value:""},"移动到...",-1)),(n(true),o(g,null,h(I.value,s=>(n(),o("option",{key:s.name,value:s.name,disabled:s.name===v.value.name},i(s.name),9,ro))),128))],512),[[Le,ye.value]]),e("button",{onClick:as,class:"toolbar-btn compact",disabled:!ye.value}," 移动 ",8,uo)])):d("v-if",true),e("button",{onClick:gl,class:"toolbar-btn compact"},"设置标签"),M.value.length?(n(),o("button",{key:2,onClick:ls,class:"toolbar-btn compact danger"}," 批量删除 ")):d("v-if",true)])])):d("v-if",true),e("div",{class:m(["notion-gallery-grid",he.value==="list"?"list-mode":""])},[(n(true),o(g,null,h(ht.value,s=>(n(),o("div",{key:s.id,class:m(["notion-gallery-card",{"notion-gallery-card-active-dropdown":oe.value===s.value,selected:s.type==="local"&&ft(s.value),external:s.type==="external"}])},[s.type==="local"?(n(),o("button",{key:0,class:"gallery-select-toggle",onClick:B(a=>Gt(s.value),["stop"]),title:ft(s.value)?"取消选择":"选择图片"},[ft(s.value)?(n(),o("svg",vo,[...t[114]||(t[114]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):d("v-if",true)],8,co)):d("v-if",true),e("div",{class:"gallery-img-container",onClick:a=>Il(s),style:{cursor:"pointer"},title:s.type==="local"&&M.value.length?"切换选择状态":"在新标签页中打开原图"},[e("img",{src:s.src,class:"gallery-img",loading:"lazy"},null,8,po),e("span",{class:m(["image-format-badge",s.type])},i(s.type==="external"?"LINK":It(s.value)),3)],8,go),e("div",fo,[e("div",{class:"gallery-card-title",title:s.label},i(s.label),9,mo),e("div",yo,[s.type==="local"?(n(),o("div",ho,[(n(true),o(g,null,h(Ft(s.value),a=>(n(),o("span",{key:a,class:"gallery-card-tag-badge",style:gs({backgroundColor:pt(a)+"12",color:pt(a),borderColor:pt(a)+"22"})},i(a),5))),128)),Ft(s.value).length?d("v-if",true):(n(),o("span",bo,"暂无标签"))])):(n(),o("div",ko)),e("div",wo,[e("button",{class:"gallery-card-menu-btn",onClick:B(a=>Cl(s.value),["stop"]),title:"更多操作"},[...t[115]||(t[115]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[e("circle",{cx:"12",cy:"12",r:"1.5"}),e("circle",{cx:"19",cy:"12",r:"1.5"}),e("circle",{cx:"5",cy:"12",r:"1.5"})],-1)])],8,_o),d(" Dropdown menu "),y(e("div",{class:"gallery-card-menu-dropdown",onClick:t[34]||(t[34]=B(()=>{},["stop"]))},[s.type==="local"?(n(),o(g,{key:0},[e("button",{onClick:a=>{hl(v.value.name,s.value),Oe()}},"编辑标签",8,Co),I.value.length>1?(n(),o("div",xo,[t[116]||(t[116]=e("span",null,"移动至表情包",-1)),e("div",Io,[(n(true),o(g,null,h(I.value,a=>(n(),o(g,null,[a.name!==v.value.name?(n(),o("button",{key:a.name,onClick:c=>{ss(v.value.name,a.name,s.value),Oe()}},i(a.name),9,$o)):d("v-if",true)],64))),256))])])):d("v-if",true),e("button",{class:"danger",onClick:a=>{ts(v.value.name,s.value),Oe()}},"删除图片",8,Eo)],64)):(n(),o(g,{key:1},[e("button",{onClick:a=>{de(s.value),Oe()}},"复制链接",8,So),e("button",{class:"danger",onClick:a=>{es(v.value.name,s.value),Oe()}},"删除外链",8,Mo)],64))],512),[[ce,oe.value===s.value]])])])])],2))),128))],2),Ee.value>1?(n(),o("div",Ao,[e("button",{disabled:L.value===1,onClick:t[35]||(t[35]=s=>L.value--),class:"btn btn-secondary page-btn"}," 上一页 ",8,To),e("span",Lo,[t[117]||(t[117]=C("第 ",-1)),e("b",null,i(L.value),1),C(" / "+i(Ee.value)+" 页",1)]),e("button",{disabled:L.value===Ee.value,onClick:t[36]||(t[36]=s=>L.value++),class:"btn btn-secondary page-btn"}," 下一页 ",8,Bo)])):d("v-if",true)])):(n(),o("div",to," 没有匹配当前搜索或筛选条件的图片 "))])])])],32)],2112)):d("v-if",true)])):w.value==="distribution"?(n(),o(g,{key:1},[d(" MENU VIEW 2: DISTRIBUTION (🌐) "),e("div",Uo,[e("div",{class:"notion-db-header page-section-header"},[t[118]||(t[118]=e("div",null,[e("h1",{class:"notion-main-title"},"分发管理"),e("p",{class:"section-desc compact"},"管理统一重定向端点与外部目标地址")],-1)),e("button",{onClick:Dl,class:"btn btn-primary btn-notion"}," + 新建端点 ")]),t[133]||(t[133]=e("hr",{class:"notion-hr"},null,-1)),e("div",Vo,[d(" Endpoint Editor Form Panel "),y(e("div",zo,[e("div",Po,[e("h2",Fo,i(q.value?"编辑分发端点":"创建新分发端点"),1),e("button",{onClick:sl,class:"icon-btn hover-bg",title:"收起编辑器"},[...t[119]||(t[119]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),e("div",No,[e("div",Ro,[t[120]||(t[120]=e("label",null,"端点名称 *",-1)),y(e("input",{"onUpdate:modelValue":t[38]||(t[38]=s=>_.name=s),disabled:!!q.value,class:"flat-input",placeholder:"例如: moe"},null,8,Do),[[z,_.name]]),t[121]||(t[121]=e("span",{class:"field-hint"},"只能包含字母、数字、下划线和连字符",-1))]),e("div",Oo,[t[122]||(t[122]=e("label",null,"描述",-1)),y(e("input",{"onUpdate:modelValue":t[39]||(t[39]=s=>_.description=s),class:"flat-input",placeholder:"例如: 萌版横图"},null,512),[[z,_.description]])]),e("div",Go,[t[123]||(t[123]=e("label",null,"目标 URL *",-1)),y(e("input",{"onUpdate:modelValue":t[40]||(t[40]=s=>_.url=s),class:"flat-input",placeholder:"https://example.com/api"},null,512),[[z,_.url]])]),e("div",Ho,[t[124]||(t[124]=e("span",null,"访问预览",-1)),e("code",{onClick:t[41]||(t[41]=s=>de(qt.value))},i(qt.value||"填写端点名称后生成预览"),1)]),e("div",Wo,[e("button",{onClick:Gl,class:"btn btn-primary flex-grow"},i(q.value?"保存修改":"立即创建"),1),e("button",{onClick:sl,class:"btn btn-secondary"}," 取消 ")])])],512),[[ce,Ve.value]]),d(" Endpoints Table List "),e("div",jo,[e("div",Ko,[t[125]||(t[125]=e("h2",{class:"notion-panel-title"},"端点列表",-1)),e("span",qo,i(pe.value.length)+" 条路由",1)]),e("div",Zo,[e("table",Qo,[t[132]||(t[132]=e("thead",null,[e("tr",null,[e("th",{style:{width:"18%"}},"名称"),e("th",{style:{width:"20%"}},"描述"),e("th",{style:{width:"17%"}},"方式"),e("th",{style:{width:"35%"}},"访问路径 & 转发目标"),e("th",{style:{width:"10%","text-align":"right"}},"管理")])],-1)),e("tbody",null,[pe.value.length?d("v-if",true):(n(),o("tr",Yo,[...t[126]||(t[126]=[e("td",{colspan:"5",class:"empty-cell"},"尚未配置任何转发 API 端点",-1)])])),(n(true),o(g,null,h(pe.value,s=>(n(),o("tr",{key:s.name},[e("td",null,[e("div",Jo,i(s.name),1)]),e("td",{class:"cell-desc",title:s.description},i(s.description||"-"),9,Xo),t[131]||(t[131]=e("td",null,[e("span",{class:"method-tag redirect"},"重定向"),e("div",{class:"target-url"},"302 重定向")],-1)),e("td",ei,[e("div",ti,[e("span",{class:"link-text",onClick:a=>de(ue(s.name))}," /"+i(s.name),9,li),e("button",{onClick:a=>de(ue(s.name)),class:"icon-btn-inline",title:"复制完整链接"},[...t[127]||(t[127]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),e("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,si)]),e("div",{class:"target-url truncate",title:s.url}," → "+i(s.url),9,ai)]),e("td",ni,[e("div",oi,[e("a",{href:ue(s.name),target:"_blank",class:"icon-btn hover-bg",title:"测试该端点访问"},[...t[128]||(t[128]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])],8,ii),e("button",{onClick:a=>Ol(s),class:"icon-btn hover-bg",title:"编辑参数"},[...t[129]||(t[129]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e("path",{d:"M18.5 2.5a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,ri),e("button",{onClick:a=>Hl(s.name),class:"icon-btn hover-danger",title:"彻底删除"},[...t[130]||(t[130]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("polyline",{points:"3 6 5 6 21 6"}),e("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,ui)])])]))),128))])])])])])])],2112)):w.value==="staging"?(n(),o(g,{key:2},[d(" MENU VIEW 3: STAGING (暂缓区) "),e("div",di,[e("div",ci,[t[134]||(t[134]=e("div",null,[e("h1",{class:"notion-main-title"},"暂缓区"),e("p",{class:"section-desc compact"},"复核被上传过滤器拦截或自动收集的候选图片,再手动归档到表情包分组")],-1)),e("div",vi,[e("button",{onClick:Nl,class:m(["btn",Y.value==="similar"?"btn-primary":"btn-secondary","btn-notion"]),disabled:fe.value||P.value.length<2},i(fe.value?"筛选中...":Y.value==="similar"?"显示全部":"筛选相似图片"),11,gi),e("button",{onClick:te,class:"btn btn-secondary btn-notion"}," 刷新列表 "),P.value.length?(n(),o("button",{key:0,onClick:Ll,class:"btn btn-danger btn-notion"}," 一键清空 ")):d("v-if",true)])]),e("div",pi,[e("div",fi,[t[135]||(t[135]=e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("path",{d:"m21 21-4.3-4.3"})],-1)),y(e("input",{"onUpdate:modelValue":t[42]||(t[42]=s=>dt.value=s),placeholder:"搜索文件名、来源或原因"},null,512),[[z,dt.value]])]),e("div",mi,i(Y.value==="similar"?El.value.length:ie.value.length)+" / "+i(P.value.length)+" 张候选 ",1)]),P.value.length?Y.value==="similar"?(n(),o("div",hi,[fe.value?(n(),o("div",bi,"正在筛选相似图片...")):Ze.value?(n(),o("div",ki,i(Ze.value),1)):d("v-if",true),!fe.value&&!bt.value.length?(n(),o("div",wi," 暂缓区没有匹配当前条件的相似图片 ")):d("v-if",true),(n(true),o(g,null,h(bt.value,s=>(n(),o("section",{key:s.id,class:"similar-group"},[e("div",_i,[e("div",null,[e("h3",null,"相似组 "+i(s.label),1),e("p",null,i(s.items.length)+" 张候选,最高相似度 "+i(Ul(s.similarity)),1)])]),e("div",Ci,[(n(true),o(g,null,h(s.items,a=>(n(),o("article",{key:a.id,class:"staging-card"},[e("button",{class:"staging-image-shell",onClick:c=>Mt(lt(a.id)),title:"打开原图"},[e("img",{class:"staging-image",src:lt(a.id),alt:a.originalName||a.filename,loading:"lazy"},null,8,Ii)],8,xi),e("div",$i,[e("div",Ei,[e("div",{class:"staging-title",title:a.originalName||a.filename},i(a.originalName||a.filename),9,Si),e("span",Mi,i(It(a.filename)),1)]),e("div",Ai,[e("span",{title:a.reason||"暂缓候选"},i(a.reason||"暂缓候选"),9,Ti),e("span",null,i(a.source||"filter"),1),e("span",null,i(Jt(a.size)),1),e("span",null,i(st(a.createdAt)),1)]),y(e("select",{"onUpdate:modelValue":c=>K.value[a.id]=c,class:"flat-select staging-select",disabled:!I.value.length},[t[137]||(t[137]=e("option",{value:""},"选择目标表情包",-1)),(n(true),o(g,null,h(I.value,c=>(n(),o("option",{key:c.name,value:c.name},i(c.name),9,Bi))),128))],8,Li),[[Le,K.value[a.id]]]),e("div",Ui,[e("button",{onClick:c=>tl(a),class:"btn btn-primary staging-action-btn",disabled:R.value===a.id||!K.value[a.id]},i(R.value===a.id?"处理中...":"归档到表情包"),9,Vi),e("button",{onClick:c=>ll(a),class:"btn btn-danger staging-action-btn",disabled:R.value===a.id}," 删除 ",8,zi)])])]))),128))])]))),128))])):ie.value.length?(n(),o("div",Fi,[D.value.size?(n(),o("div",Ni,[e("div",Ri,[t[138]||(t[138]=e("span",{class:"bulk-title"},"暂缓区",-1)),e("span",Di,"已选择 "+i(D.value.size)+" 张",1)]),e("div",Oi,[e("button",{onClick:Al,class:"toolbar-btn compact"},i(Yt.value?"取消全选":"全选当前"),1),e("button",{onClick:et,class:"toolbar-btn compact"}," 清空选择 "),e("button",{onClick:Tl,class:"toolbar-btn compact danger"}," 批量删除 ")])])):d("v-if",true),e("div",Gi,[(n(true),o(g,null,h(ie.value,s=>(n(),o("article",{key:s.id,class:m(["staging-card",{"staging-card-selected":kt(s.id)}])},[e("button",{class:"staging-select-toggle",onClick:B(a=>Ml(s.id),["stop"]),title:kt(s.id)?"取消选择":"选择图片"},[kt(s.id)?(n(),o("svg",Wi,[...t[139]||(t[139]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):d("v-if",true)],8,Hi),e("button",{class:"staging-image-shell",onClick:a=>Mt(lt(s.id)),title:"打开原图"},[e("img",{class:"staging-image",src:lt(s.id),alt:s.originalName||s.filename,loading:"lazy"},null,8,Ki)],8,ji),e("div",qi,[e("div",Zi,[e("div",{class:"staging-title",title:s.originalName||s.filename},i(s.originalName||s.filename),9,Qi),e("span",Yi,i(It(s.filename)),1)]),e("div",Ji,[e("span",{title:s.reason||"暂缓候选"},i(s.reason||"暂缓候选"),9,Xi),e("span",null,i(s.source||"filter"),1),e("span",null,i(Jt(s.size)),1),e("span",null,i(st(s.createdAt)),1)]),y(e("select",{"onUpdate:modelValue":a=>K.value[s.id]=a,class:"flat-select staging-select",disabled:!I.value.length},[t[140]||(t[140]=e("option",{value:""},"选择目标表情包",-1)),(n(true),o(g,null,h(I.value,a=>(n(),o("option",{key:a.name,value:a.name},i(a.name),9,tr))),128))],8,er),[[Le,K.value[s.id]]]),e("div",lr,[e("button",{onClick:a=>tl(s),class:"btn btn-primary staging-action-btn",disabled:R.value===s.id||!K.value[s.id]},i(R.value===s.id?"处理中...":"归档到表情包"),9,sr),e("button",{onClick:a=>ll(s),class:"btn btn-danger staging-action-btn",disabled:R.value===s.id}," 删除 ",8,ar)])])],2))),128))])])):(n(),o("div",Pi," 没有匹配当前搜索条件的暂缓图片 ")):(n(),o("div",yi,[...t[136]||(t[136]=[e("div",{class:"empty-icon"},"🕓",-1),e("h3",null,"暂缓区为空",-1),e("p",null,"上传时被过滤器拦截或自动收集命中的候选图片会先保存在这里,等待人工复核。",-1)])]))])],2112)):w.value==="settings"?(n(),o(g,{key:3},[d(" MENU VIEW 4: PREVIEW (👁️ 预览) "),e("div",nr,[e("div",or,[e("div",{class:"notion-db-header page-section-header preview-page-header"},[t[141]||(t[141]=e("div",null,[e("h1",{class:"notion-main-title"},"预览"),e("p",{class:"section-desc compact"},"实时预览路由与最终提示词效果")],-1)),e("button",{onClick:Et,class:"btn btn-secondary btn-notion"}," 刷新预览 ")]),e("div",ir,[e("section",rr,[e("div",ur,[t[142]||(t[142]=e("div",null,[e("div",{class:"preview-card-title"},"路由清单"),e("div",{class:"preview-card-desc"},"{endpoint} 中可供 ChatLuna 使用的合集与端点")],-1)),e("button",{onClick:t[43]||(t[43]=s=>de(wt.value)),class:"preview-action-btn",disabled:!wt.value,title:"复制路由清单"}," 复制清单 ",8,dr)]),Zt.value.length?(n(),o("div",cr,[e("table",vr,[t[144]||(t[144]=e("thead",null,[e("tr",null,[e("th",null,"预览"),e("th",null,"包名"),e("th",null,"描述"),e("th",null,"路径"),e("th",null,"操作")])],-1)),e("tbody",null,[(n(true),o(g,null,h(Zt.value,s=>(n(),o("tr",{key:s.id},[e("td",null,[s.previewImages.length?(n(),o("div",{key:0,class:m(["preview-mini-cover",s.previewImages.length===1?"single":""])},[(n(true),o(g,null,h(s.previewImages,a=>(n(),o("img",{key:a,src:a,alt:`${s.name} 预览`,loading:"lazy",onError:c=>Bl(s)},null,40,gr))),128))],2)):(n(),o("div",{key:1,class:m(["preview-route-icon",s.type])},i(s.type==="collection"?"包":"API"),3))]),e("td",null,[e("div",pr,i(s.name),1),e("span",{class:m(["preview-route-type",s.type])},i(s.typeLabel),3)]),e("td",null,[e("div",{class:"preview-route-desc",title:s.description},i(s.description),9,fr)]),e("td",null,[e("code",{class:"preview-route-path",title:s.fullUrl,onClick:a=>de(s.fullUrl)},i(s.path),9,mr)]),e("td",null,[e("div",yr,[e("a",{href:s.fullUrl,target:"_blank",class:"icon-btn hover-bg",title:"打开预览"},[...t[143]||(t[143]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])],8,hr)])])]))),128))])])])):(n(),o("div",br," 暂无可用表情包及路由,请前往表情包管理或分发管理中创建。 "))]),e("section",kr,[e("div",wr,[t[145]||(t[145]=e("div",null,[e("div",{class:"preview-card-title"},"最终提示词"),e("div",{class:"preview-card-desc"},"{memesluna} 注入给 LLM 的完整文本")],-1)),e("button",{onClick:t[44]||(t[44]=s=>de(Ge.value)),class:"preview-action-btn",disabled:!Ge.value,title:"复制最终提示词"}," 复制提示词 ",8,_r)]),e("div",Cr,[Ge.value?(n(),o("pre",xr,i(Ge.value),1)):(n(),o("pre",Ir,"- 正在获取最终提示词预览... -"))])])])])])],2112)):d("v-if",true)])],2112))])]))}}),Er=(Be,w)=>{const T=Be.__vccOpts||Be;for(const[le,Ue]of w)T[le]=Ue;return T},Sr=Er($r,[["__scopeId","data-v-38501121"]]),Mr="M1024 512C1024 229.230208 794.769792 0 512 0 229.230208 0 0 229.230208 0 512 0 794.769792 229.230208 1024 512 1024 629.410831 1024 740.826187 984.331046 830.768465 912.686662 841.557579 904.092491 843.33693 888.379234 834.742758 877.590121 826.148587 866.801009 810.43533 865.021658 799.646219 873.615827 718.470035 938.277495 618.001779 974.048781 512 974.048781 256.817504 974.048781 49.951219 767.182496 49.951219 512 49.951219 256.817504 256.817504 49.951219 512 49.951219 767.182496 49.951219 974.048781 256.817504 974.048781 512 974.048781 599.492834 949.714859 683.336764 904.470807 755.960693 897.177109 767.668243 900.755245 783.071797 912.462793 790.365493 924.170342 797.659191 939.573897 794.081058 946.867595 782.373508 997.013826 701.880796 1024 608.898379 1024 512ZM337.170731 499.512194C371.654852 499.512194 399.609756 471.557291 399.609756 437.073171 399.609756 402.58905 371.654852 374.634146 337.170731 374.634146 302.686611 374.634146 274.731708 402.58905 274.731708 437.073171 274.731708 471.557291 302.686611 499.512194 337.170731 499.512194ZM711.804879 499.512194C746.288998 499.512194 774.243902 471.557291 774.243902 437.073171 774.243902 402.58905 746.288998 374.634146 711.804879 374.634146 677.320757 374.634146 649.365854 402.58905 649.365854 437.073171 649.365854 471.557291 677.320757 499.512194 711.804879 499.512194ZM352.788105 768.770967C396.165222 803.472661 453.151987 824.195121 524.487806 824.195121 595.823622 824.195121 652.810387 803.472661 696.187505 768.770967 722.700531 747.560546 738.882517 725.984565 746.631548 710.486505 752.800254 698.149092 747.799529 683.146916 735.462114 676.978208 723.124702 670.809502 708.122526 675.810227 701.953818 688.147642 701.03616 689.982957 698.492224 694.172969 694.165854 699.941463 686.602473 710.025971 676.927317 720.210345 664.983226 729.765617 630.311565 757.502948 584.273939 774.243902 524.487806 774.243902 464.70167 774.243902 418.664045 757.502948 383.992384 729.765617 372.048292 720.210345 362.373137 710.025971 354.809756 699.941463 350.483386 694.172969 347.93945 689.982957 347.021792 688.147642 340.853084 675.810227 325.850908 670.809502 313.513495 676.978208 301.176081 683.146916 296.175356 698.149092 302.344062 710.486505 310.093092 725.984565 326.275078 747.560546 352.788105 768.770967Z",Ar={name:"MemesLunaIcon",render(){return cl("svg",{class:"k-icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},[cl("path",{fill:"currentColor",d:Mr})])}};os.register("MemesLunaEmoji",Ar);const Br=Be=>{Be.page({name:"MemesLuna",path:"/memesluna",icon:"MemesLunaEmoji",component:Sr,authority:1,order:500})};export{Br as default};
1
+ import{send as f,icons as os}from"@koishijs/client";import{defineComponent as is,ref as u,computed as x,reactive as nt,onMounted as rs,onUnmounted as us,watch as je,openBlock as n,createElementBlock as o,createCommentVNode as d,createElementVNode as e,Fragment as g,toDisplayString as i,normalizeClass as m,createVNode as ds,Transition as cs,withCtx as vs,createTextVNode as C,withDirectives as y,vModelText as z,vModelSelect as Le,vShow as ce,renderList as h,withModifiers as B,createStaticVNode as ot,withKeys as Ke,normalizeStyle as gs,h as cl}from"vue";const ps={class:"memesluna-app-layout"},fs={class:"notion-content"},ms={class:"content-breadcrumb-header"},ys={class:"breadcrumbs"},hs={key:0,class:"crumb-parent"},bs={key:1,class:"crumb-parent"},ks={key:2,class:"crumb-parent"},ws={key:3,class:"crumb-parent"},_s={class:"crumb-child active"},Cs={key:0,class:"header-quick-stats"},xs={class:"stat-bubble"},Is={class:"stat-bubble"},$s={class:"stat-bubble"},Es={key:0,class:"notion-view-switcher"},Ss={key:0,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Ms={key:1,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},As={key:2,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Ts={key:1,class:"loading-container"},Ls={class:"content-body-wrapper"},Bs={key:0,class:"resources-router-view"},Us={key:0,class:"collections-folder-view"},Vs={class:"notion-db-header page-section-header collection-list-header"},zs={class:"notion-db-actions collection-toolbar"},Ps={class:"view-toggle-pill",title:"切换合集视图/标签视图"},Fs={class:"collection-search-shell"},Ns={class:"collection-filter-shell"},Rs={key:0,class:"empty-placeholder-card"},Ds={key:1,class:"empty-placeholder-card"},Os={key:2,class:"folders-grid"},Gs=["onClick"],Hs=["src","alt"],Ws={key:1,class:"folder-cover-empty"},js={key:2,class:"folder-cover-badge"},Ks={class:"folder-body"},qs={class:"folder-title-row"},Zs=["title"],Qs=["onClick"],Ys=["onClick"],Js=["onClick"],Xs={class:"folder-info-row"},ea={class:"folder-count"},ta={class:"folder-meta-row"},la={class:"folder-meta-item"},sa={key:3,class:"tag-view-section"},aa={key:0,class:"loading-container"},na={key:1,class:"empty-placeholder-card"},oa={key:2,class:"folders-grid"},ia=["onClick"],ra=["src"],ua=["src"],da={key:1,class:"folder-cover-empty"},ca={class:"folder-body tag-card-body"},va={class:"folder-title-row"},ga={class:"tag-synonym-names"},pa={class:"folder-info-row",style:{"margin-top":"6px"}},fa={class:"folder-count"},ma={key:1,class:"tag-detail-view"},ya={class:"detail-topbar"},ha={class:"detail-breadcrumbs"},ba={class:"detail-crumb-current"},ka={class:"detail-crumb-strong"},wa={key:0,class:"loading-container"},_a={key:1,class:"empty-placeholder-card"},Ca={key:2,class:"tag-images-grid notion-gallery-grid"},xa={class:"gallery-img-container"},Ia=["src"],$a={class:"gallery-card-footer"},Ea=["title"],Sa={class:"gallery-card-tags"},Ma=["onClick"],Aa={class:"asset-detail-shell"},Ta={class:"detail-topbar"},La={class:"detail-breadcrumbs"},Ba={class:"detail-crumb-current"},Ua={class:"detail-top-actions"},Va={class:"asset-hero-panel"},za={class:"asset-identity-card"},Pa={class:"asset-avatar-frame"},Fa=["src","alt"],Na={key:1,class:"asset-avatar-empty"},Ra={class:"asset-title-stack"},Da={class:"asset-title-row"},Oa={class:"asset-meta-line"},Ga={class:"asset-api-card"},Ha={class:"asset-api-row"},Wa=["disabled"],ja={key:0,class:"api-preview-strip"},Ka=["src"],qa={class:"asset-import-panel"},Za={class:"asset-import-header"},Qa={class:"asset-import-actions"},Ya={class:"tag-editor-dialog"},Ja={class:"tag-editor-header"},Xa={class:"tag-editor-subtitle"},en={style:{display:"flex",gap:"8px","align-items":"center"}},tn=["disabled"],ln={key:0,class:"animate-spin",viewBox:"0 0 24 24",fill:"none",width:"12",height:"12",style:{"margin-right":"2px"}},sn={key:1},an=["disabled"],nn={class:"tag-editor-body",style:{display:"flex","flex-direction":"column",gap:"16px"}},on={class:"tag-section-wrapper",style:{"border-bottom":"1px solid rgba(120, 120, 120, 0.15)","padding-bottom":"14px"}},rn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},un=["onClick","disabled"],dn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},cn={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},vn=["disabled"],gn={id:"allowed-tags-list"},pn=["value"],fn=["disabled"],mn={class:"tag-section-wrapper"},yn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},hn=["onClick","disabled"],bn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},kn={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},wn=["disabled"],_n=["disabled"],Cn={class:"tag-editor-dialog"},xn={class:"tag-editor-header"},In={class:"tag-editor-subtitle"},$n=["disabled"],En={class:"tag-editor-body",style:{display:"flex","flex-direction":"column",gap:"16px"}},Sn={style:{display:"flex","align-items":"center","justify-content":"space-between","border-bottom":"1px solid rgba(120, 120, 120, 0.15)","padding-bottom":"12px"}},Mn={class:"view-toggle-pill",style:{margin:"0"}},An={class:"tag-section-wrapper",style:{"border-bottom":"1px solid rgba(120, 120, 120, 0.15)","padding-bottom":"14px"}},Tn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},Ln=["onClick","disabled"],Bn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},Un={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},Vn=["disabled"],zn=["disabled"],Pn={class:"tag-section-wrapper"},Fn={class:"tag-editor-list",style:{"margin-bottom":"8px","min-height":"36px",display:"flex","flex-wrap":"wrap",gap:"6px"}},Nn=["onClick","disabled"],Rn={key:0,class:"tag-editor-empty",style:{color:"var(--k-text-muted, #888)","font-size":"12px","font-style":"italic"}},Dn={class:"tag-editor-input-row",style:{display:"flex",gap:"8px"}},On=["disabled"],Gn=["disabled"],Hn={class:"tag-editor-footer",style:{"margin-top":"18px",display:"flex",gap:"12px","justify-content":"flex-end","border-top":"1px solid rgba(120, 120, 120, 0.15)","padding-top":"12px"}},Wn=["disabled"],jn=["disabled"],Kn={class:"asset-gallery-section"},qn={class:"asset-gallery-toolbar"},Zn={class:"asset-tabs"},Qn={class:"asset-filter-bar"},Yn={class:"asset-search-box"},Jn={class:"asset-view-toggle"},Xn={class:"gallery-tab-content"},eo={key:0,class:"empty-gallery"},to={key:1,class:"empty-gallery"},lo={key:2},so={key:0,class:"gallery-bulk-toolbar floating"},ao={class:"bulk-status"},no={class:"bulk-meta"},oo={class:"bulk-actions"},io={key:1,class:"bulk-move-group"},ro=["value","disabled"],uo=["disabled"],co=["onClick","title"],vo={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},go=["onClick","title"],po=["src"],fo={class:"gallery-card-info"},mo=["title"],yo={class:"gallery-card-footer-row"},ho={key:0,class:"gallery-card-tags"},bo={key:0,class:"gallery-card-tag-empty"},ko={key:1,class:"gallery-card-tags-placeholder"},wo={class:"gallery-card-menu-container"},_o=["onClick"],Co=["onClick"],xo={key:0,class:"gallery-card-submenu-trigger"},Io={class:"gallery-card-submenu"},$o=["onClick"],Eo=["onClick"],So=["onClick"],Mo=["onClick"],Ao={key:1,class:"pagination-container"},To=["disabled"],Lo={class:"page-indicator"},Bo=["disabled"],Uo={class:"distribution-router-view"},Vo={class:"endpoint-layout"},zo={class:"notion-form-panel endpoint-editor-panel"},Po={class:"panel-title-row"},Fo={class:"notion-panel-title"},No={class:"form-fields endpoint-form-grid"},Ro={class:"form-group"},Do=["disabled"],Oo={class:"form-group"},Go={class:"form-group span-2"},Ho={class:"endpoint-preview span-2"},Wo={class:"form-actions span-2"},jo={class:"notion-table-panel"},Ko={class:"table-title-row"},qo={class:"table-count"},Zo={class:"table-container"},Qo={class:"flat-table"},Yo={key:0},Jo={class:"endpoint-name"},Xo=["title"],ei={class:"font-mono"},ti={class:"url-line"},li=["onClick"],si=["onClick"],ai=["title"],ni={style:{"text-align":"right"}},oi={class:"action-buttons"},ii=["href"],ri=["onClick"],ui=["onClick"],di={class:"staging-router-view"},ci={class:"notion-db-header page-section-header staging-page-header"},vi={class:"staging-header-actions"},gi=["disabled"],pi={class:"staging-toolbar"},fi={class:"asset-search-box staging-search-box"},mi={class:"staging-count-pill"},yi={key:0,class:"empty-placeholder-card staging-empty-card"},hi={key:1,class:"similar-staging-view"},bi={key:0,class:"empty-gallery"},ki={key:1,class:"similar-message"},wi={key:2,class:"empty-gallery"},_i={class:"similar-group-header"},Ci={class:"staging-grid"},xi=["onClick"],Ii=["src","alt"],$i={class:"staging-card-body"},Ei={class:"staging-title-row"},Si=["title"],Mi={class:"staging-ext-tag"},Ai={class:"staging-meta-grid"},Ti=["title"],Li=["onUpdate:modelValue","disabled"],Bi=["value"],Ui={class:"staging-actions"},Vi=["onClick","disabled"],zi=["onClick","disabled"],Pi={key:2,class:"empty-gallery"},Fi={key:3},Ni={key:0,class:"staging-batch-toolbar"},Ri={class:"bulk-status"},Di={class:"bulk-meta"},Oi={class:"bulk-actions"},Gi={class:"staging-grid"},Hi=["onClick","title"],Wi={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},ji=["onClick"],Ki=["src","alt"],qi={class:"staging-card-body"},Zi={class:"staging-title-row"},Qi=["title"],Yi={class:"staging-ext-tag"},Ji={class:"staging-meta-grid"},Xi=["title"],er=["onUpdate:modelValue","disabled"],tr=["value"],lr={class:"staging-actions"},sr=["onClick","disabled"],ar=["onClick","disabled"],nr={class:"settings-router-view"},or={class:"settings-preview-panel"},ir={class:"preview-dashboard-grid"},rr={class:"preview-card route-table-card"},ur={class:"preview-card-header"},dr=["disabled"],cr={key:0,class:"preview-table-wrap"},vr={class:"preview-route-table"},gr=["src","alt","onError"],pr={class:"preview-route-name"},fr=["title"],mr=["title","onClick"],yr={class:"preview-row-actions"},hr=["href"],br={key:1,class:"preview-empty-state"},kr={class:"preview-card prompt-card"},wr={class:"preview-card-header"},_r=["disabled"],Cr={class:"preview-code-block final-prompt polished"},xr={key:0},Ir={key:1,class:"text-gray-muted"},$r=is({__name:"Dashboard",setup(Be){const w=u(sessionStorage.getItem("memesluna_active_menu")||"resources"),T=u(sessionStorage.getItem("memesluna_active_resource_view")||"collection"),le=u([]),Ue=u(false);async function Bt(){if(T.value="tag",!le.value.length){Ue.value=true;try{const l=await f("memesluna/getTagSummary");le.value=Array.isArray(l)?l:[]}catch(l){console.error("Failed to load tag summary:",l),le.value=[]}finally{Ue.value=false}}}const se=u(""),ve=u([]),it=u(false);async function rt(l){se.value=l,it.value=true;try{const t=await f("memesluna/getImagesByTag",l);ve.value=Array.isArray(t==null?void 0:t.images)?t.images:[]}catch(t){console.error("Failed to load tag images:",t),ve.value=[]}finally{it.value=false}}function vl(){se.value="",ve.value=[]}const p=u(true),ge=u("/memesluna"),qe=u("http://localhost:5140"),pe=u([]),I=u([]),P=u([]),Ut=u([]),ut=x(()=>Ut.value.flatMap(l=>l.split(/[,,]/).map(t=>t.trim()).filter(Boolean))),dt=u(""),K=u({}),R=u(""),Y=u("all"),ct=u([]),fe=u(false),Ze=u(""),D=u(new Set),Ve=u(false),q=u(null),_=nt({name:"",group:"",description:"",url:""}),vt=u(new Set),Vt=u(""),v=u(null),Qe=u(""),me=u("all"),J=u(null),Ye=u(""),ze=u(""),E=nt({images:[],links:[]}),Z=nt({}),X=u("all"),Pe=u(false),O=u(new Set),ye=u(""),Fe=u(""),Ne=u("name"),Re=u("all"),he=u("grid"),F=u(""),Je=u(false),gt=u(false),ae=u(""),be=u(""),U=u([]),A=u([]),ke=u(""),we=u(""),N=u(false),S=u(false),ee=u({}),ne=u({}),_e=u(false),G=u([]),H=u([]),Ce=u(""),xe=u(""),V=u(false),Ie=u("add");function gl(){G.value=[],H.value=[],Ce.value="",xe.value="",Ie.value="add",_e.value=true}function zt(){const l=Ce.value.trim();if(l){if(!ut.value.includes(l)){r("标签必须是同义词组候选列表中的一个","error");return}G.value=[l],Ce.value=""}}function pl(l){G.value=G.value.filter(t=>t!==l)}function Pt(){const l=xe.value.trim();!l||H.value.includes(l)||(H.value=[...H.value,l],xe.value="")}function fl(l){H.value=H.value.filter(t=>t!==l)}async function ml(){if(!v.value||!M.value.length)return;V.value=true;const l=[...M.value],t=v.value.name;try{await Promise.all(l.map(async s=>{const a=De(t,s);let c=[...G.value],$=[...H.value];if(Ie.value==="add"){const j=ee.value[a]||[],Se=ne.value[a]||[];c=Array.from(new Set([...j,...c])),$=Array.from(new Set([...Se,...$]))}c.length>1&&(G.value.length>0?c=[G.value[0]]:c=[c[0]]),await f("memesluna/updateImageMetadata",{collectionName:t,filename:s,tags:c,aliases:$}),ee.value[a]=c,ne.value[a]=$})),r(`成功应用批量修改(共 ${l.length} 张图片)`,"success"),$e(),_e.value=false}catch(s){console.error("Failed to save bulk tags:",s),r("批量设置标签失败","error")}finally{V.value=false}}function De(l,t){return`${l}/${t}`}function Ft(l){return v.value?ee.value[De(v.value.name,l)]||[]:[]}async function yl(l,t){var a;const s=await Promise.allSettled(t.map(c=>f("memesluna/getImageMetadata",l,c)));for(let c=0;c<t.length;c++){const $=s[c];if($.status==="fulfilled"&&((a=$.value)!=null&&a.ok)){const j=De(l,t[c]);ee.value[j]=$.value.tags||[],ne.value[j]=$.value.aliases||[]}}}const Nt=["#f97316","#ec4899","#8b5cf6","#06b6d4","#22c55e","#eab308","#f43f5e","#14b8a6","#a855f7","#3b82f6"];function pt(l){let t=0;for(let s=0;s<l.length;s++)t=(t<<5)-t+l.charCodeAt(s);return Nt[Math.abs(t)%Nt.length]}async function hl(l,t){be.value=l,ae.value=t,ke.value="",we.value="",S.value=false;try{const s=await f("memesluna/getImageMetadata",l,t);U.value=s!=null&&s.ok?s.tags||[]:[],A.value=s!=null&&s.ok?s.aliases||[]:[]}catch{U.value=[],A.value=[]}gt.value=true}async function Rt(){const l=ke.value.trim();if(l){if(!ut.value.includes(l)){r("标签必须是同义词组候选列表中的一个","error");return}U.value=[l],ke.value="",await Xe()}}function bl(l){U.value=U.value.filter(t=>t!==l),Xe()}async function Dt(){const l=we.value.trim();!l||A.value.includes(l)||(A.value=[...A.value,l],we.value="",await Xe())}function kl(l){A.value=A.value.filter(t=>t!==l),Xe()}async function wl(){if(!(S.value||N.value)){S.value=true;try{const l=await f("memesluna/annotateImage",be.value,ae.value);if(l&&l.ok){U.value=l.tags||[],A.value=l.aliases||[];const t=De(be.value,ae.value);ee.value[t]=[...U.value],ne.value[t]=[...A.value],r("AI 语义标注已成功完成!","success")}else r((l==null?void 0:l.error)||"AI 标注失败,请检查配置或模型状态","error")}catch(l){r(l instanceof Error?l.message:"AI 标注接口请求出错","error")}finally{S.value=false}}}async function Xe(){N.value=true;try{await f("memesluna/updateImageMetadata",{collectionName:be.value,filename:ae.value,tags:U.value,aliases:A.value});const l=De(be.value,ae.value);ee.value[l]=[...U.value],ee.value={...ee.value},ne.value[l]=[...A.value],ne.value={...ne.value}}catch(l){console.error("Failed to save tags:",l)}finally{N.value=false}}function Ot(){gt.value=false,ae.value="",U.value=[],A.value=[],S.value=false}const _l=u(null),oe=u(null);function Cl(l){oe.value===l?oe.value=null:oe.value=l}function Oe(){oe.value=null}function ft(l){return O.value.has(l)}function Gt(l){const t=new Set(O.value);t.has(l)?t.delete(l):t.add(l),O.value=t}function $e(){O.value=new Set,ye.value=""}function xl(){const l=new Set(O.value),t=ht.value.filter(s=>s.type==="local");Ht.value?t.forEach(s=>l.delete(s.value)):t.forEach(s=>l.add(s.value)),O.value=l}function Il(l){if(l.type==="local"&&M.value.length){Gt(l.value);return}Mt(l.src)}const L=u(1),mt=u(24),$l=x(()=>{if(!v.value)return[];const l=E.images.map(s=>({id:`local:${s}`,type:"local",label:s,src:xt(v.value.name,s),value:s})),t=E.links.map(s=>({id:`external:${s}`,type:"external",label:Vl(s),src:s,value:s}));return X.value==="local"?l:X.value==="external"?t:[...l,...t]}),yt=x(()=>{const l=Fe.value.trim().toLowerCase();let t=$l.value.filter(s=>l?s.label.toLowerCase().includes(l)||s.value.toLowerCase().includes(l):true);return Re.value==="selected"&&(t=t.filter(s=>s.type==="local"&&O.value.has(s.value))),[...t].sort((s,a)=>Ne.value==="nameDesc"?a.label.localeCompare(s.label):s.label.localeCompare(a.label))}),Ee=x(()=>Math.max(1,Math.ceil(yt.value.length/mt.value))),ht=x(()=>{const l=(L.value-1)*mt.value;return yt.value.slice(l,l+mt.value)}),M=x(()=>Array.from(O.value)),Ht=x(()=>{const l=ht.value.filter(t=>t.type==="local");return l.length>0&&l.every(t=>O.value.has(t.value))}),Wt=x(()=>{if(!v.value)return"";const l=E.images[0];return l?xt(v.value.name,l):E.links[0]||""}),jt=x(()=>v.value?ue(v.value.name):""),Kt=x(()=>{var l;return((l=v.value)==null?void 0:l.totalCount)||E.images.length+E.links.length}),qt=x(()=>{const l=_.name.trim();return l?ue(l):""}),Zt=x(()=>{const l=I.value.filter(s=>s.hasContent).map(s=>({id:`collection:${s.name}`,type:"collection",typeLabel:"表情包",name:s.name,description:s.description||`${s.name} 表情包`,path:`${ge.value}/${s.name}`,fullUrl:ue(s.name),previewImages:Xt(s.name).slice(0,3)})),t=pe.value.map(s=>{const a=ue(s.name),c=vt.value.has(`endpoint:${s.name}`)?[]:[a];return{id:`endpoint:${s.name}`,type:"endpoint",typeLabel:"重定向",name:s.name,description:s.description||"302 重定向",path:`${ge.value}/${s.name}`,fullUrl:a,previewImages:c}});return[...l,...t]}),Qt=x(()=>{const l=Qe.value.trim().toLowerCase();return I.value.filter(t=>{const s=!l||t.name.toLowerCase().includes(l)||(t.description||"").toLowerCase().includes(l),a=me.value==="all"||me.value==="local"&&t.localCount>0&&t.linkCount===0||me.value==="external"&&t.linkCount>0;return s&&a})}),ie=x(()=>{const l=dt.value.trim().toLowerCase();return l?P.value.filter(t=>t.filename.toLowerCase().includes(l)||t.originalName.toLowerCase().includes(l)||t.source.toLowerCase().includes(l)||t.reason.toLowerCase().includes(l)):P.value}),bt=x(()=>{const l=new Set(ie.value.map(t=>t.id));return ct.value.map((t,s)=>({...t,label:String(s+1),items:t.items.filter(a=>l.has(a.id))})).filter(t=>t.items.length>1)}),El=x(()=>{const l=new Map;for(const t of bt.value)for(const s of t.items)l.set(s.id,s);return Array.from(l.values())}),Sl=x(()=>Array.from(D.value)),Yt=x(()=>{const l=ie.value;return l.length>0&&l.every(t=>D.value.has(t.id))});function kt(l){return D.value.has(l)}function Ml(l){const t=new Set(D.value);t.has(l)?t.delete(l):t.add(l),D.value=t}function Al(){const l=new Set(D.value);Yt.value?ie.value.forEach(t=>l.delete(t.id)):ie.value.forEach(t=>l.add(t.id)),D.value=l}function et(){D.value=new Set}async function Tl(){const l=Sl.value;if(l.length&&confirm(`确认永久删除已选择的 ${l.length} 张暂缓图片吗?此操作无法恢复!`))try{p.value=true,await Promise.all(l.map(t=>f("memesluna/deleteStagedImage",t))),r(`已删除 ${l.length} 张暂缓图片`,"success"),et(),await te(),await b()}catch(t){r(t instanceof Error?t.message:"批量删除暂缓图片失败","error")}finally{p.value=false}}async function Ll(){if(P.value.length&&confirm(`⚠️ 危险操作:确认永久删除暂缓区全部 ${P.value.length} 张图片吗?此操作不可逆!`))try{p.value=true;const l=await f("memesluna/deleteAllStagedImages");r(`已清空暂缓区,共删除 ${l} 张图片`,"success"),et(),await te(),await b()}catch(l){r(l instanceof Error?l.message:"清空暂缓区失败","error")}finally{p.value=false}}const wt=u(""),Ge=u(""),He=u(false),_t=u(null),Q=nt({show:false,message:"",type:"info"});let Ct=null;function r(l,t="info"){Ct&&clearTimeout(Ct),Q.message=l,Q.type=t,Q.show=true,Ct=setTimeout(()=>{Q.show=false},2500)}function tt(l){w.value=l,sessionStorage.setItem("memesluna_active_menu",l),l==="settings"&&Et(),l==="staging"?te():et()}function re(){const l=qe.value.endsWith("/")?qe.value.slice(0,-1):qe.value,t=ge.value.startsWith("/")?ge.value:`/${ge.value}`,s=t.endsWith("/")?t.slice(0,-1):t;return`${l}${s}`}function ue(l){return`${re()}/${l}`}function xt(l,t){return`${re()}/api/admin/collections/${encodeURIComponent(l)}/images/${encodeURIComponent(t)}`}function lt(l){return`${re()}/api/admin/staged-images/${encodeURIComponent(l)}`}function Bl(l){if(l.type!=="endpoint")return;const t=new Set(vt.value);t.add(l.id),vt.value=t}function st(l){if(!l)return"-";const t=new Date(l);return Number.isNaN(t.getTime())?"-":t.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})}function Ul(l){return Number.isFinite(l)?String(Math.round(l*100))+"%":"-"}function Jt(l){if(!Number.isFinite(l)||l<=0)return"-";const t=["B","KB","MB","GB"];let s=l,a=0;for(;s>=1024&&a<t.length-1;)s/=1024,a++;return`${s>=10||a===0?s.toFixed(0):s.toFixed(1)} ${t[a]}`}function It(l){const t=l.split(".").pop();return t?t.toUpperCase():"IMG"}function Vl(l){try{const t=new URL(l);return decodeURIComponent(t.pathname.split("/").filter(Boolean).pop()||t.hostname)||t.hostname}catch{return l}}function zl(l){return Z[l]}function Xt(l){var t;return((t=Z[l])==null?void 0:t.images)||[]}function $t(l){return Xt(l).slice(0,6)}async function Pl(l){var t;if(!(!l.hasContent||(t=Z[l.name])!=null&&t.images.length)){Z[l.name]=Z[l.name]||{loading:true,images:[]},Z[l.name].loading=true;try{const s=await fetch(`${re()}/api/collections/${encodeURIComponent(l.name)}/resources`);if(!s.ok)return;const a=await s.json(),c=9,$=Array.isArray(a.images)?a.images.slice(0,c).map(Se=>xt(l.name,Se)):[],j=Array.isArray(a.links)?a.links.slice(0,c-$.length):[];Z[l.name].images=[...$,...j]}catch{Z[l.name].images=[]}finally{Z[l.name].loading=false}}}function Fl(){I.value.filter(l=>l.hasContent).slice(0,24).forEach(l=>{Pl(l)})}async function b(){try{qe.value=window.location.origin;const l=await f("memesluna/getState");l&&(l.backendPath&&(ge.value=l.backendPath),pe.value=Array.isArray(l.endpoints)?l.endpoints:[],I.value=Array.isArray(l.collections)?l.collections:[],P.value=Array.isArray(l.stagedImages)?l.stagedImages:[],Array.isArray(l.synonymGroups)&&(Ut.value=l.synonymGroups),Fl())}catch(l){r(l instanceof Error?l.message:"获取插件状态同步失败","error")}}async function Et(){try{const l=await fetch(`${re()}/api/homepage-data`);if(l.ok){const t=await l.json();wt.value=t.routeInventory||"",Ge.value=t.llmPrompt||""}}catch(l){console.error("Failed to sync settings variables preview:",l)}}async function te(){try{const l=await f("memesluna/getStagedImages");P.value=Array.isArray(l)?l:[],Y.value==="similar"&&await el()}catch(l){r(l instanceof Error?l.message:"刷新暂缓区失败","error")}}async function el(){fe.value=true;try{const l=await f("memesluna/getSimilarStagedImages");ct.value=Array.isArray(l==null?void 0:l.groups)?l.groups:[],Ze.value=(l==null?void 0:l.message)||"",l&&l.available===false&&r(l.message||"相似图片筛选不可用","error")}catch(l){ct.value=[],Ze.value="",r(l instanceof Error?l.message:"筛选相似图片失败","error")}finally{fe.value=false}}async function Nl(){if(Y.value==="similar"){Y.value="all";return}Y.value="similar",await el()}async function tl(l){var s;const t=K.value[l.id];if(!t){r("请选择目标表情包","error");return}R.value=l.id;try{const a=await f("memesluna/promoteStagedImage",l.id,t);a?(r(`已归档到表情包 "${t}",新文件名 ${a}`,"success"),delete K.value[l.id]):r("暂缓图片不存在或已被处理","error"),await te(),await b(),((s=v.value)==null?void 0:s.name)===t&&await W(t)}catch(a){r(a instanceof Error?a.message:"归档暂缓图片失败","error")}finally{R.value=""}}async function ll(l){if(confirm(`确认从暂缓区删除 "${l.originalName||l.filename}" 吗?`)){R.value=l.id;try{await f("memesluna/deleteStagedImage",l.id)?(r("已从暂缓区删除","success"),delete K.value[l.id]):r("暂缓图片不存在或已被处理","error"),await te(),await b()}catch(t){r(t instanceof Error?t.message:"删除暂缓图片失败","error")}finally{R.value=""}}}async function Rl(l){let t=0;for(const s of l)try{const a=await Jl(s.file);await f("memesluna/addStagedImage",{base64:a,originalName:s.file.name,source:v.value?`upload:${v.value.name}`:"upload-filter",reason:s.reason}),t++}catch(a){console.error("Failed to stage filtered image:",s.file.name,a)}return t&&await te(),t}function Dl(){at(),Ve.value=true}function sl(){at(),Ve.value=false}function at(){q.value=null,_.name="",_.group="",_.description="",_.url=""}function Ol(l){q.value=l,Ve.value=true,_.name=l.name||"",_.group=l.group||"",_.description=l.description||"",_.url=l.url||""}async function Gl(){const l=_.name.trim(),t=_.url.trim();if(!l||!t){r("端点名称和目标直链 URL 均必填","error");return}const s={name:l,group:_.group.trim()||"默认分组",description:_.description.trim(),url:t,method:"redirect"};try{p.value=true,q.value?(await f("memesluna/updateEndpoint",q.value.name,s),r("端点路由参数已成功更新","success")):(await f("memesluna/createEndpoint",s),r("接口端点已成功创建","success")),await b(),at(),Ve.value=false}catch(a){r(a instanceof Error?a.message:"保存端点失败","error")}finally{p.value=false}}async function Hl(l){if(confirm(`确认删除端点路由 "${l}" 吗?`))try{p.value=true,await f("memesluna/deleteEndpoint",l),r("该分发端点已彻底删除","success"),await b(),q.value&&q.value.name===l&&at()}catch(t){r(t instanceof Error?t.message:"删除端点路由失败","error")}finally{p.value=false}}async function de(l){try{await navigator.clipboard.writeText(l),r("成功复制链接到剪贴板","success")}catch{r("复制失败","error")}}async function Wl(){var t;let l=Vt.value.trim();if(l||(l=((t=window.prompt("请输入表情包名称"))==null?void 0:t.trim())||""),!l){r("表情包名称不能为空","error");return}try{if(p.value=true,!await f("memesluna/createCollection",l)){r("该名称的表情包已存在,请更换其他名称","error");return}r("表情包已成功创建","success"),Vt.value="",await b()}catch(s){r(s instanceof Error?s.message:"创建失败","error")}finally{p.value=false}}async function al(l){if(J.value=null,!!confirm(`⚠️ 危险操作:确认永久且彻底删除表情包 "${l}",及其包含的所有本地图片文件吗?此项操作不可逆!`))try{p.value=true,await f("memesluna/deleteCollection",l),r("该表情包资源已彻底销毁删除","success"),v.value=null,await b()}catch(t){r(t instanceof Error?t.message:"删除失败","error")}finally{p.value=false}}async function St(l){J.value=null,v.value=l,sessionStorage.setItem("memesluna_active_collection",l.name),Ye.value=l.description||"",ze.value="",Fe.value="",Ne.value="name",Re.value="all",he.value="grid",F.value="",L.value=1,$e(),await W(l.name);const t=[...E.images];t.length&&yl(l.name,t)}function jl(){v.value=null,sessionStorage.removeItem("memesluna_active_collection"),F.value&&URL.revokeObjectURL(F.value),F.value="",$e()}async function W(l){try{const t=await fetch(`${re()}/api/collections/${encodeURIComponent(l)}/resources`);if(t.ok){const s=await t.json();E.images=Array.isArray(s.images)?s.images:[],E.links=Array.isArray(s.links)?s.links:[];const a=new Set(E.images);O.value=new Set(M.value.filter(c=>a.has(c)))}}catch{r("加载该表情包下的图片缓存失败","error")}}async function Kl(){if(!v.value)return;p.value=true,await W(v.value.name),await b();const l=I.value.find(t=>t.name===v.value.name);l&&(v.value=l),p.value=false,r("本地及缓存资源数据已刷新成功","success")}async function ql(){if(v.value){Je.value=true;try{const l=await fetch(jt.value,{redirect:"follow"});if(!l.ok){r("测试接口未返回可用图片","error");return}const t=await l.blob();if(!t.type.startsWith("image/")){r("测试接口返回的不是图片资源","error");return}F.value&&URL.revokeObjectURL(F.value),F.value=URL.createObjectURL(t),r("已获取随机图片预览","success"),await b();const s=I.value.find(a=>{var c;return a.name===((c=v.value)==null?void 0:c.name)});s&&(v.value=s)}catch(l){r(l instanceof Error?l.message:"测试接口失败","error")}finally{Je.value=false}}}async function nl(){if(v.value)try{p.value=true,await f("memesluna/setCollectionDescription",v.value.name,Ye.value.trim()),r("表情包描述已成功保存","success"),await b();const l=I.value.find(t=>t.name===v.value.name);l&&(v.value=l)}catch(l){r(l instanceof Error?l.message:"保存表情包描述失败","error")}finally{p.value=false}}function Zl(){_t.value&&_t.value.click()}function Ql(l){const t=l.target;t.files&&ol(t.files)}function Yl(l){He.value=false,l.dataTransfer&&l.dataTransfer.files&&ol(l.dataTransfer.files)}async function ol(l){if(!v.value)return;const t=10*1024*1024,a=Array.from(l).filter(k=>{const Te=k.name.toLowerCase();return k.type.startsWith("image/")||/\.(jpe?g|png|gif|bmp|webp|svg|tiff?|psd|avif)$/.test(Te)});if(!a.length){r("请拖入或选择有效的图片格式文件","error");return}const c=a.filter(k=>k.name.toLowerCase().endsWith(".avif")),$=a.filter(k=>!k.name.toLowerCase().endsWith(".avif")),j=new Map;for(const k of $)k.size>t&&j.set(k,"文件大小超过 10MB,需人工复核后再决定是否归档");const Se=Array.from(j,([k,Te])=>({file:k,reason:Te})),Me=$.filter(k=>!j.has(k));let Ae=0;if(Se.length&&(Ae=await Rl(Se)),!Me.length){if(Ae>0){const k=c.length?`,${c.length} 张 AVIF 已直接拦截`:"";r(`已将 ${Ae} 张被过滤图片放入暂缓区${k}`,"success")}else c.length?r("已拦截 AVIF 图片。此格式不会进入暂缓区,请先转码为 JPG/PNG/GIF/WEBP。","error"):r("图片已被过滤,但写入暂缓区失败","error");await b();return}if(Me.length>500){r("单次选择图片上限为 500 张,请分批次导入或使用磁盘同步","error"),Ae&&await b();return}r(`开始上传 ${Me.length} 张表情图片...`,"info");let At=0,We=0;for(let k=0;k<Me.length;k++){const Te=Me[k];r(`正在上传: ${Te.name} (${k+1}/${Me.length})...`,"info");try{const Tt=new FormData;Tt.append("images",Te);const dl=await fetch(`${re()}/api/admin/collections/${encodeURIComponent(v.value.name)}/images`,{method:"POST",body:Tt});if(dl.ok){const Lt=await dl.json();Lt.ok&&Lt.uploaded&&Lt.uploaded.length>0?At++:We++}else We++}catch{We++}}const rl=Ae?`,另有 ${Ae} 张进入暂缓区`:"",ul=c.length?`,${c.length} 张 AVIF 已直接拦截`:"";At>0?r(`成功上传 ${At} 张图片${We?`,失败 ${We} 张`:""}${rl}${ul}`,"success"):r(`图片上传失败${rl}${ul}`,"error"),await W(v.value.name),await b()}function Jl(l){return new Promise((t,s)=>{const a=new FileReader;a.readAsDataURL(l),a.onload=()=>{const $=a.result.split(",")[1];t($)},a.onerror=c=>s(c)})}async function Xl(){if(!v.value)return;const l=ze.value.trim();if(!l){r("链接文本不能为空","error");return}try{p.value=true;const t=await f("memesluna/addLinks",v.value.name,l);r(`已成功录入 ${t} 条网络图片外链`,"success"),ze.value="",await W(v.value.name),await b()}catch(t){r(t instanceof Error?t.message:"添加失败","error")}finally{p.value=false}}async function es(l,t){if(confirm("确认删除该图片网络外链直链吗?"))try{p.value=true,await f("memesluna/deleteLink",l,t),r("外链直链已彻底删除","success"),await W(l),await b()}catch(s){r(s instanceof Error?s.message:"删除链接失败","error")}finally{p.value=false}}async function ts(l,t){if(confirm(`确认永久删除该本地图片素材 "${t}" 吗?此操作无法恢复!`))try{p.value=true,await f("memesluna/deleteLocalImage",l,t),r("该本地图片已永久删除","success"),await W(l),await b()}catch(s){r(s instanceof Error?s.message:"删除失败","error")}finally{p.value=false}}async function ls(){if(!v.value||!M.value.length)return;const l=M.value;if(confirm(`确认永久删除已选择的 ${l.length} 张本地图片素材吗?此操作无法恢复!`))try{p.value=true,await Promise.all(l.map(t=>f("memesluna/deleteLocalImage",v.value.name,t))),r(`已删除 ${l.length} 张本地图片`,"success"),$e(),await W(v.value.name),await b()}catch(t){r(t instanceof Error?t.message:"批量删除失败","error")}finally{p.value=false}}async function ss(l,t,s){try{p.value=true,await f("memesluna/moveLocalImage",l,t,s)?(r(`已将素材移动至表情包 "${t}" 并重命名`,"success"),await W(l),await b()):r("移动失败","error")}catch(a){r(a instanceof Error?a.message:"移库失败","error")}finally{p.value=false}}async function as(){if(!v.value||!M.value.length||!ye.value)return;const l=v.value.name,t=ye.value;if(t===l){r("不能移动到当前表情包","error");return}const s=M.value;try{p.value=true,await Promise.all(s.map(a=>f("memesluna/moveLocalImage",l,t,a))),r(`已将 ${s.length} 张素材移动至表情包 "${t}"`,"success"),$e(),await W(l),await b()}catch(a){r(a instanceof Error?a.message:"批量移动失败","error")}finally{p.value=false}}function Mt(l){window.open(l,"_blank")}function ns(l){J.value=J.value===l?null:l}const il=()=>{_l.value=null,J.value=null,oe.value=null};return rs(async()=>{if(window.addEventListener("click",il),p.value=true,await b(),w.value==="resources")if(T.value==="tag"){await Bt();const l=sessionStorage.getItem("memesluna_active_tag_view");l&&await rt(l)}else{const l=sessionStorage.getItem("memesluna_active_collection");if(l){const t=I.value.find(s=>s.name===l);t&&await St(t)}}else w.value==="staging"?await te():w.value==="settings"&&await Et();p.value=false}),us(()=>{window.removeEventListener("click",il),F.value&&URL.revokeObjectURL(F.value)}),je(E,()=>{L.value>Ee.value&&Ee.value>0&&(L.value=Ee.value)}),je([Fe,Ne,Re],()=>{L.value=1}),je([Qe,me],()=>{J.value=null}),je(T,l=>{sessionStorage.setItem("memesluna_active_resource_view",l)}),je(se,l=>{l?sessionStorage.setItem("memesluna_active_tag_view",l):sessionStorage.removeItem("memesluna_active_tag_view")}),(l,t)=>(n(),o("div",ps,[d(" MAIN CONTENT AREA "),e("main",fs,[d(" Top Notion Breadcrumbs "),e("header",ms,[e("div",ys,[t[46]||(t[46]=e("span",{class:"crumb-root"},"MemesLuna 控制台",-1)),t[47]||(t[47]=e("span",{class:"crumb-separator"},"/",-1)),w.value==="resources"?(n(),o("span",hs,"表情包管理")):w.value==="distribution"?(n(),o("span",bs,"分发管理")):w.value==="settings"?(n(),o("span",ks,"预览")):w.value==="staging"?(n(),o("span",ws,"暂缓区")):d("v-if",true),w.value==="resources"&&v.value?(n(),o(g,{key:4},[t[45]||(t[45]=e("span",{class:"crumb-separator"},"/",-1)),e("span",_s,"表情包: "+i(v.value.name),1)],64)):d("v-if",true)]),d(" Quick Stats Banner "),p.value?d("v-if",true):(n(),o("div",Cs,[e("span",xs,"📂 表情包总数: "+i(I.value.length),1),e("span",Is,"🌐 分发接口: "+i(pe.value.length),1),e("span",$s,"🕓 暂缓候选: "+i(P.value.length),1)]))]),d(" NOTION-STYLE HORIZONTAL VIEW SWITCHER "),v.value?d("v-if",true):(n(),o("div",Es,[e("button",{onClick:t[0]||(t[0]=s=>tt("resources")),class:m(["switcher-btn",w.value==="resources"?"active":""])},[...t[48]||(t[48]=[e("span",{class:"switcher-icon"},"📦",-1),e("span",{class:"switcher-label"},"表情包管理",-1)])],2),e("button",{onClick:t[1]||(t[1]=s=>tt("distribution")),class:m(["switcher-btn",w.value==="distribution"?"active":""])},[...t[49]||(t[49]=[e("span",{class:"switcher-icon"},"🌐",-1),e("span",{class:"switcher-label"},"分发管理",-1)])],2),e("button",{onClick:t[2]||(t[2]=s=>tt("staging")),class:m(["switcher-btn",w.value==="staging"?"active":""])},[...t[50]||(t[50]=[e("span",{class:"switcher-icon"},"🕓",-1),e("span",{class:"switcher-label"},"暂缓区",-1)])],2),e("button",{onClick:t[3]||(t[3]=s=>tt("settings")),class:m(["switcher-btn",w.value==="settings"?"active":""])},[...t[51]||(t[51]=[e("span",{class:"switcher-icon"},"👁️",-1),e("span",{class:"switcher-label"},"预览",-1)])],2)])),d(" Global Toast Alert Banner "),ds(cs,{name:"fade"},{default:vs(()=>[Q.show?(n(),o("div",{key:0,class:m(["toast-banner",Q.type])},[Q.type==="success"?(n(),o("svg",Ss,[...t[52]||(t[52]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):Q.type==="error"?(n(),o("svg",Ms,[...t[53]||(t[53]=[e("circle",{cx:"12",cy:"12",r:"10"},null,-1),e("line",{x1:"12",y1:"8",x2:"12",y2:"12"},null,-1),e("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"},null,-1)])])):(n(),o("svg",As,[...t[54]||(t[54]=[e("circle",{cx:"12",cy:"12",r:"10"},null,-1),e("line",{x1:"12",y1:"16",x2:"12",y2:"12"},null,-1),e("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"},null,-1)])])),e("span",null,i(Q.message),1)],2)):d("v-if",true)]),_:1}),d(" Loading Cover "),p.value?(n(),o("div",Ts,[...t[55]||(t[55]=[e("div",{class:"spinner"},null,-1),e("p",null,"正在同步数据...",-1)])])):(n(),o(g,{key:2},[d(" MAIN ROUTER BODY "),e("div",Ls,[d(" MENU VIEW 1: RESOURCES (📦) "),w.value==="resources"?(n(),o("div",Bs,[d(" Collection Lists (Folder view) "),!v.value&&!se.value?(n(),o("div",Us,[d(" Creator bar in Notion Style "),e("div",Vs,[t[62]||(t[62]=e("div",null,[e("h1",{class:"notion-main-title"},"表情包管理"),e("p",{class:"section-desc compact"},"管理表情包合集与图片素材")],-1)),e("div",zs,[d(" View toggle: collection / tag "),e("div",Ps,[e("button",{class:m(["pill-btn",T.value==="collection"?"active":""]),onClick:t[4]||(t[4]=s=>T.value="collection")},[...t[56]||(t[56]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1),C(" 合集 ",-1)])],2),e("button",{class:m(["pill-btn",T.value==="tag"?"active":""]),onClick:Bt},[...t[57]||(t[57]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[e("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),e("path",{d:"M7 7h.01"})],-1),C(" 标签 ",-1)])],2)]),e("div",Fs,[t[58]||(t[58]=e("svg",{class:"collection-toolbar-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("path",{d:"m21 21-4.3-4.3"})],-1)),y(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>Qe.value=s),class:"flat-input collection-search-input",placeholder:"搜索表情包合集..."},null,512),[[z,Qe.value]])]),e("label",Ns,[t[60]||(t[60]=e("svg",{class:"collection-toolbar-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 4h18l-7 8v6l-4 2v-8z"})],-1)),y(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>me.value=s),class:"flat-select collection-filter-select","aria-label":"筛选表情包合集"},[...t[59]||(t[59]=[e("option",{value:"all"},"全部",-1),e("option",{value:"local"},"仅本地",-1),e("option",{value:"external"},"含外链",-1)])],512),[[Le,me.value]])]),e("button",{onClick:Wl,class:"btn btn-primary btn-notion"},[...t[61]||(t[61]=[e("span",{class:"btn-plus"},"+",-1),C(" 新建表情包 ",-1)])])])]),t[71]||(t[71]=e("hr",{class:"notion-hr"},null,-1)),d(" Folders grid layout "),I.value.length?Qt.value.length?y((n(),o("div",Os,[(n(true),o(g,null,h(Qt.value,s=>{var a;return n(),o("div",{key:s.name,class:m(["folder-card",{"folder-card-active-menu":J.value===s.name}]),onClick:c=>St(s)},[e("div",{class:m(["folder-cover",$t(s.name).length?"has-preview":"empty"])},[$t(s.name).length?(n(true),o(g,{key:0},h($t(s.name),c=>(n(),o("img",{key:c,src:c,class:"folder-cover-img",loading:"lazy",alt:`${s.name} 预览图`},null,8,Hs))),128)):(n(),o("div",Ws,[...t[65]||(t[65]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1)])])),(a=zl(s.name))!=null&&a.loading?(n(),o("span",js,"同步中")):d("v-if",true)],2),e("div",Ks,[e("div",qs,[e("div",{class:"folder-name",title:s.description||s.name},i(s.name),9,Zs),e("button",{class:"folder-more-btn",title:"更多操作",onClick:B(c=>ns(s.name),["stop"])},[...t[66]||(t[66]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"5",cy:"12",r:"1"}),e("circle",{cx:"12",cy:"12",r:"1"}),e("circle",{cx:"19",cy:"12",r:"1"})],-1)])],8,Qs),J.value===s.name?(n(),o("div",{key:0,class:"folder-action-menu",onClick:t[7]||(t[7]=B(()=>{},["stop"]))},[e("button",{onClick:c=>St(s)},"打开详情",8,Ys),e("button",{class:"danger",onClick:c=>al(s.name)},"删除表情包",8,Js)])):d("v-if",true)]),e("div",Xs,[e("div",ea,i(s.totalCount)+" 张图片",1),e("div",ta,[e("span",la,[t[67]||(t[67]=e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 7a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"})],-1)),C(" 本地 "+i(s.localCount)+" · 外链 "+i(s.linkCount),1)])])])])],10,Gs)}),128))],512)),[[ce,T.value==="collection"]]):y((n(),o("div",Ds,[...t[64]||(t[64]=[e("div",{class:"empty-icon"},"🔎",-1),e("h3",null,"没有匹配的表情包合集",-1),e("p",null,"换个关键词或筛选条件再试试。",-1)])],512)),[[ce,T.value==="collection"]]):y((n(),o("div",Rs,[...t[63]||(t[63]=[e("div",{class:"empty-icon"},"📁",-1),e("h3",null,"尚未创建任何表情包",-1),e("p",null,"点击右上角按钮即可快速创建一个新的表情包合集。",-1)])],512)),[[ce,T.value==="collection"]]),d(" Tag View (alternative to collection grid) "),T.value==="tag"?(n(),o("div",sa,[Ue.value?(n(),o("div",aa,[...t[68]||(t[68]=[e("div",{class:"spinner"},null,-1),e("p",null,"加载标签数据...",-1)])])):le.value.length?(n(),o("div",oa,[(n(true),o(g,null,h(le.value,s=>(n(),o("div",{key:s.tag,class:"folder-card",onClick:a=>rt(s.tag)},[d(" 少于6张:单图居中拉伸;6张及以上:6宫格展示 "),e("div",{class:m(["folder-cover",s.previewUrls.length===0?"empty":s.previewUrls.length<6?"tag-cover-single has-preview":"tag-cover-grid has-preview"])},[s.previewUrls.length>0?(n(),o(g,{key:0},[s.previewUrls.length<6?(n(),o("img",{key:0,src:s.previewUrls[0],class:"folder-cover-img tag-cover-single-img",loading:"lazy"},null,8,ra)):(n(true),o(g,{key:1},h(s.previewUrls.slice(0,6),(a,c)=>(n(),o("img",{key:c,src:a,class:"folder-cover-img",loading:"lazy"},null,8,ua))),128))],64)):(n(),o("div",da,[...t[70]||(t[70]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"}),e("path",{d:"M7 7h.01"})],-1)])]))],2),e("div",ca,[e("div",va,[e("div",ga,[(n(true),o(g,null,h(s.synonymWords,(a,c)=>(n(),o("span",{key:c,class:m(["tag-synonym-chip",`tag-color-${(s.groupIndex>=0?s.groupIndex:0)%8}`])},i(a),3))),128))])]),e("div",pa,[e("div",fa,i(s.count)+" 张图片",1)])])],8,ia))),128))])):(n(),o("div",na,[...t[69]||(t[69]=[e("div",{class:"empty-icon"},"🏷️",-1),e("h3",null,"暂无标签",-1),e("p",null,"开启 AI 标注后,上传图片时会自动生成标签,也可以手动为图片添加标签。",-1)])]))])):d("v-if",true)])):d("v-if",true),d(" Tag Detail View (cross-collection images by tag) "),se.value?(n(),o("div",ma,[e("div",ya,[e("div",ha,[e("button",{onClick:vl,class:"detail-back-btn",title:"返回标签列表"},[...t[72]||(t[72]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"m15 18-6-6 6-6"})],-1),C(" 返回标签列表 ",-1)])]),t[73]||(t[73]=e("span",{class:"detail-separator"},"/",-1)),e("span",ba,"#"+i(se.value),1),t[74]||(t[74]=e("span",{class:"detail-separator"},"/",-1)),e("span",ka,i(ve.value.length)+" 张图片",1)])]),it.value?(n(),o("div",wa,[...t[75]||(t[75]=[e("div",{class:"spinner"},null,-1),e("p",null,"加载图片...",-1)])])):ve.value.length?(n(),o("div",Ca,[(n(true),o(g,null,h(ve.value,s=>(n(),o("div",{key:s.collection+"/"+s.filename,class:"notion-gallery-card"},[e("div",xa,[e("img",{src:s.imageUrl,class:"gallery-img",loading:"lazy"},null,8,Ia)]),e("div",$a,[e("div",{class:"gallery-card-collection",title:s.collection},i(s.collection),9,Ea),e("div",Sa,[(n(true),o(g,null,h(s.tags,a=>(n(),o("span",{key:a,class:m(["mini-tag",a===se.value?"active-tag":""]),onClick:B(c=>rt(a),["stop"])},i(a),11,Ma))),128))])])]))),128))])):(n(),o("div",_a,[...t[76]||(t[76]=[e("div",{class:"empty-icon"},"🏷️",-1),e("h3",null,"没有找到带此标签的图片",-1)])]))])):v.value?(n(),o(g,{key:2},[d(" Collection Details (Inside details view) "),e("div",{class:"collection-detail-layout",onDragover:t[37]||(t[37]=B(s=>He.value=true,["prevent"]))},[e("div",Aa,[e("div",Ta,[e("div",La,[e("button",{onClick:jl,class:"detail-back-btn",title:"返回列表"},[...t[77]||(t[77]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"m15 18-6-6 6-6"})],-1),C(" 返回列表 ",-1)])]),t[78]||(t[78]=e("span",{class:"detail-separator"},"/",-1)),e("span",Ba,i(v.value.name),1),t[79]||(t[79]=e("span",{class:"detail-separator"},"/",-1)),t[80]||(t[80]=e("span",{class:"detail-crumb-strong"},"图片素材",-1))]),e("div",Ua,[e("button",{onClick:Kl,class:"asset-btn secondary",title:"刷新缓存"},[...t[81]||(t[81]=[ot('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b9d911f><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-1b9d911f></path><path d="M3 21v-5h5" data-v-1b9d911f></path><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-1b9d911f></path><path d="M16 8h5V3" data-v-1b9d911f></path></svg> 刷新缓存 ',2)])]),e("button",{onClick:Zl,class:"asset-btn primary"},[...t[82]||(t[82]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e("path",{d:"m17 8-5-5-5 5"}),e("path",{d:"M12 3v12"})],-1),C(" 上传图片 ",-1)])]),e("button",{onClick:t[8]||(t[8]=s=>Pe.value=!Pe.value),class:"asset-btn secondary"},[...t[83]||(t[83]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),e("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})],-1),C(" 导入外链 ",-1)])]),e("button",{onClick:t[9]||(t[9]=s=>al(v.value.name)),class:"asset-btn danger ghost",title:"删除表情包"},[...t[84]||(t[84]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 6h18"}),e("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}),e("path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),e("input",{ref_key:"fileInput",ref:_t,type:"file",multiple:"",accept:"image/*",class:"hidden-file-input",onChange:Ql},null,544)])]),e("section",Va,[e("div",za,[e("div",Pa,[Wt.value?(n(),o("img",{key:0,src:Wt.value,class:"asset-avatar-img",alt:`${v.value.name} 封面`},null,8,Fa)):(n(),o("div",Na,[...t[85]||(t[85]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"})],-1)])]))]),e("div",Ra,[e("div",Da,[e("h1",null,i(v.value.name),1),t[86]||(t[86]=e("span",{class:"asset-pill"},"本地",-1))]),y(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>Ye.value=s),class:"asset-description-input",placeholder:"添加表情包描述",onBlur:nl,onKeyup:Ke(nl,["enter"])},null,544),[[z,Ye.value]]),e("div",Oa,[e("span",null,"创建于 "+i(st(v.value.createdAt)),1),e("span",null,"最后更新 "+i(st(v.value.updatedAt)),1),e("span",null,"共 "+i(Kt.value)+" 张图片",1)])])]),e("div",Ga,[t[89]||(t[89]=e("div",{class:"asset-card-label"},"API 调用地址",-1)),e("div",Ha,[e("code",null,i(jt.value),1),e("button",{onClick:ql,class:"asset-test-btn",disabled:Je.value},[t[87]||(t[87]=e("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M8 5v14l11-7z"})],-1)),C(" "+i(Je.value?"测试中":"测试接口"),1)],8,Wa)]),t[90]||(t[90]=e("div",{class:"asset-api-hint"},"直接访问该链接将随机返回一张表情图片",-1)),F.value?(n(),o("div",ja,[e("img",{src:F.value,alt:"API 返回图片预览"},null,8,Ka),t[88]||(t[88]=e("span",null,"随机预览",-1))])):d("v-if",true)])]),d(" Drag over drop zone area "),y(e("div",{class:"sidebar-drop-zone-overlay",onDragover:t[11]||(t[11]=B(s=>He.value=true,["prevent"])),onDragleave:t[12]||(t[12]=B(s=>He.value=false,["prevent"])),onDrop:B(Yl,["prevent"])},[...t[91]||(t[91]=[ot('<div class="drop-overlay-box" data-v-1b9d911f><svg class="drop-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b9d911f><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-v-1b9d911f></path><polyline points="17 8 12 3 7 8" data-v-1b9d911f></polyline><line x1="12" y1="3" x2="12" y2="15" data-v-1b9d911f></line></svg><p data-v-1b9d911f>释放图片文件以导入此表情包</p></div>',1)])],544),[[ce,He.value]]),y(e("div",qa,[e("div",Za,[t[93]||(t[93]=e("div",null,[e("div",{class:"asset-import-title"},"导入外链图片"),e("div",{class:"asset-import-desc"},"每行一个以 http:// 或 https:// 开头的图片链接")],-1)),e("button",{onClick:t[13]||(t[13]=s=>Pe.value=false),class:"asset-icon-btn compact",title:"关闭导入面板"},[...t[92]||(t[92]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])])]),y(e("textarea",{"onUpdate:modelValue":t[14]||(t[14]=s=>ze.value=s),rows:"4",class:"asset-link-textarea",placeholder:"每行一个以 http:// 或 https:// 开头的链接"},null,512),[[z,ze.value]]),e("div",Qa,[e("button",{onClick:Xl,class:"asset-btn primary"},"确认导入"),e("button",{onClick:t[15]||(t[15]=s=>Pe.value=false),class:"asset-btn secondary"},"取消")])],512),[[ce,Pe.value]]),d(" Tag Editor Dialog "),gt.value?(n(),o("div",{key:0,class:"tag-editor-overlay",onClick:B(Ot,["self"])},[e("div",Ya,[e("div",Ja,[e("div",null,[t[94]||(t[94]=e("div",{class:"tag-editor-title"},"编辑标注 & 标签",-1)),e("div",Xa,i(be.value)+" / "+i(ae.value),1)]),e("div",en,[e("button",{onClick:wl,class:"btn btn-secondary btn-small",disabled:S.value||N.value,style:{display:"flex","align-items":"center",gap:"4px",padding:"4px 8px","font-size":"12px"}},[S.value?(n(),o("svg",ln,[...t[95]||(t[95]=[e("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4",style:{opacity:"0.25"}},null,-1),e("path",{d:"M4 12a8 8 0 0 1 8-8V0C5.373 0 0 5.373 0 12h4z",fill:"currentColor"},null,-1)])])):(n(),o("span",sn,"✨")),C(" "+i(S.value?"自动标注中...":"AI 自动标注"),1)],8,tn),e("button",{onClick:Ot,class:"icon-btn hover-bg",disabled:S.value||N.value},[...t[96]||(t[96]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])],8,an)])]),e("div",nn,[d(" Tags Section "),e("div",on,[t[97]||(t[97]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🏷️"),e("span",null,"路由标签 (Tags)"),e("span",{style:{"font-size":"11px","font-weight":"normal",color:"var(--k-text-muted, #888)","margin-left":"4px"}},"用于跨合集路由随机返回")],-1)),e("div",rn,[(n(true),o(g,null,h(U.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag"},[C(i(s)+" ",1),e("button",{onClick:a=>bl(s),class:"tag-remove-btn",disabled:N.value||S.value},"×",8,un)]))),128)),U.value.length?d("v-if",true):(n(),o("span",dn,"暂无标签"))]),e("div",cn,[y(e("input",{"onUpdate:modelValue":t[16]||(t[16]=s=>ke.value=s),class:"flat-input tag-editor-input",list:"allowed-tags-list",placeholder:"选择或输入唯一候选标签",onKeyup:Ke(Rt,["enter"]),disabled:N.value||S.value,style:{"flex-grow":"1"}},null,40,vn),[[z,ke.value]]),e("datalist",gn,[(n(true),o(g,null,h(ut.value,s=>(n(),o("option",{key:s,value:s},null,8,pn))),128))]),e("button",{onClick:Rt,class:"btn btn-secondary btn-small",disabled:!ke.value.trim()||N.value||S.value}," 添加 ",8,fn)])]),d(" Aliases Section "),e("div",mn,[t[98]||(t[98]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🔍"),e("span",null,"检索别名 (Aliases)"),e("span",{style:{"font-size":"11px","font-weight":"normal",color:"var(--k-text-muted, #888)","margin-left":"4px"}},"用于合集内 q=关键词 语义检索")],-1)),e("div",yn,[(n(true),o(g,null,h(A.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag",style:{"background-color":"var(--k-bg-panel, rgba(120, 120, 120, 0.08))","border-color":"transparent"}},[C(i(s)+" ",1),e("button",{onClick:a=>kl(s),class:"tag-remove-btn",disabled:N.value||S.value},"×",8,hn)]))),128)),A.value.length?d("v-if",true):(n(),o("span",bn,"暂无别名"))]),e("div",kn,[y(e("input",{"onUpdate:modelValue":t[17]||(t[17]=s=>we.value=s),class:"flat-input tag-editor-input",placeholder:"添加搜索短语别名,回车添加",onKeyup:Ke(Dt,["enter"]),disabled:N.value||S.value,style:{"flex-grow":"1"}},null,40,wn),[[z,we.value]]),e("button",{onClick:Dt,class:"btn btn-secondary btn-small",disabled:!we.value.trim()||N.value||S.value}," 添加 ",8,_n)])])])])])):d("v-if",true),d(" Bulk Tag Editor Dialog "),_e.value?(n(),o("div",{key:1,class:"tag-editor-overlay",onClick:t[24]||(t[24]=B(s=>_e.value=false,["self"]))},[e("div",Cn,[e("div",xn,[e("div",null,[t[99]||(t[99]=e("div",{class:"tag-editor-title"},"批量设置标签 & 别名",-1)),e("div",In,"已选择 "+i(M.value.length)+" 张图片",1)]),e("button",{onClick:t[18]||(t[18]=s=>_e.value=false),class:"icon-btn hover-bg",disabled:V.value},[...t[100]||(t[100]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[e("path",{d:"M18 6 6 18"}),e("path",{d:"m6 6 12 12"})],-1)])],8,$n)]),e("div",En,[d(" Operation Mode Toggle "),e("div",Sn,[t[101]||(t[101]=e("span",{style:{"font-size":"13px","font-weight":"600"}},"操作模式",-1)),e("div",Mn,[e("button",{class:m(["pill-btn",Ie.value==="add"?"active":""]),onClick:t[19]||(t[19]=s=>Ie.value="add"),style:{"font-size":"12px",padding:"4px 8px"}}," 追加标签 ",2),e("button",{class:m(["pill-btn",Ie.value==="replace"?"active":""]),onClick:t[20]||(t[20]=s=>Ie.value="replace"),style:{"font-size":"12px",padding:"4px 8px"}}," 覆盖标签 ",2)])]),d(" Tags Section "),e("div",An,[t[102]||(t[102]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🏷️"),e("span",null,"批量添加标签 (Tags)")],-1)),e("div",Tn,[(n(true),o(g,null,h(G.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag"},[C(i(s)+" ",1),e("button",{onClick:a=>pl(s),class:"tag-remove-btn",disabled:V.value},"×",8,Ln)]))),128)),G.value.length?d("v-if",true):(n(),o("span",Bn,"等待添加标签"))]),e("div",Un,[y(e("input",{"onUpdate:modelValue":t[21]||(t[21]=s=>Ce.value=s),class:"flat-input tag-editor-input",list:"allowed-tags-list",placeholder:"选择或输入唯一候选标签",onKeyup:Ke(zt,["enter"]),disabled:V.value,style:{"flex-grow":"1"}},null,40,Vn),[[z,Ce.value]]),e("button",{onClick:zt,class:"btn btn-secondary btn-small",disabled:!Ce.value.trim()||V.value}," 添加 ",8,zn)])]),d(" Aliases Section "),e("div",Pn,[t[103]||(t[103]=e("div",{class:"tag-section-label",style:{"font-weight":"600","font-size":"13px","margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("span",null,"🔍"),e("span",null,"批量添加别名 (Aliases)")],-1)),e("div",Fn,[(n(true),o(g,null,h(H.value,s=>(n(),o("span",{key:s,class:"tag-editor-tag",style:{"background-color":"var(--k-bg-panel, rgba(120, 120, 120, 0.08))","border-color":"transparent"}},[C(i(s)+" ",1),e("button",{onClick:a=>fl(s),class:"tag-remove-btn",disabled:V.value},"×",8,Nn)]))),128)),H.value.length?d("v-if",true):(n(),o("span",Rn,"等待添加别名"))]),e("div",Dn,[y(e("input",{"onUpdate:modelValue":t[22]||(t[22]=s=>xe.value=s),class:"flat-input tag-editor-input",placeholder:"输入别名,回车添加",onKeyup:Ke(Pt,["enter"]),disabled:V.value,style:{"flex-grow":"1"}},null,40,On),[[z,xe.value]]),e("button",{onClick:Pt,class:"btn btn-secondary btn-small",disabled:!xe.value.trim()||V.value}," 添加 ",8,Gn)])])]),e("div",Hn,[e("button",{onClick:t[23]||(t[23]=s=>_e.value=false),class:"btn btn-secondary",disabled:V.value}," 取消 ",8,Wn),e("button",{onClick:ml,class:"btn btn-primary",disabled:V.value||!G.value.length&&!H.value.length},i(V.value?"保存中...":"确认应用"),9,jn)])])])):d("v-if",true),e("section",Kn,[e("div",qn,[e("div",Zn,[e("button",{onClick:t[25]||(t[25]=s=>{X.value="all",L.value=1}),class:m(["asset-tab",X.value==="all"?"active":""])},[t[104]||(t[104]=C(" 全部 ",-1)),e("span",null,i(Kt.value),1)],2),e("button",{onClick:t[26]||(t[26]=s=>{X.value="local",L.value=1}),class:m(["asset-tab",X.value==="local"?"active":""])},[t[105]||(t[105]=C(" 本地图片 ",-1)),e("span",null,i(E.images.length),1)],2),e("button",{onClick:t[27]||(t[27]=s=>{X.value="external",L.value=1}),class:m(["asset-tab",X.value==="external"?"active":""])},[t[106]||(t[106]=C(" 外链图片 ",-1)),e("span",null,i(E.links.length),1)],2)]),e("div",Qn,[e("div",Yn,[t[107]||(t[107]=e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("path",{d:"m21 21-4.3-4.3"})],-1)),y(e("input",{"onUpdate:modelValue":t[28]||(t[28]=s=>Fe.value=s),placeholder:"搜索图片或外链"},null,512),[[z,Fe.value]])]),y(e("select",{"onUpdate:modelValue":t[29]||(t[29]=s=>Re.value=s),class:"asset-select"},[...t[108]||(t[108]=[e("option",{value:"all"},"筛选: 全部",-1),e("option",{value:"selected"},"筛选: 已选",-1)])],512),[[Le,Re.value]]),y(e("select",{"onUpdate:modelValue":t[30]||(t[30]=s=>Ne.value=s),class:"asset-select"},[...t[109]||(t[109]=[e("option",{value:"name"},"排序: 文件名",-1),e("option",{value:"nameDesc"},"排序: 文件名倒序",-1)])],512),[[Le,Ne.value]]),e("div",Jn,[e("button",{onClick:t[31]||(t[31]=s=>he.value="grid"),class:m(he.value==="grid"?"active":""),title:"网格视图"},[...t[110]||(t[110]=[ot('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b9d911f><rect x="3" y="3" width="7" height="7" rx="1" data-v-1b9d911f></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-1b9d911f></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-1b9d911f></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-1b9d911f></rect></svg>',1)])],2),e("button",{onClick:t[32]||(t[32]=s=>he.value="list"),class:m(he.value==="list"?"active":""),title:"列表视图"},[...t[111]||(t[111]=[ot('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b9d911f><path d="M8 6h13" data-v-1b9d911f></path><path d="M8 12h13" data-v-1b9d911f></path><path d="M8 18h13" data-v-1b9d911f></path><path d="M3 6h.01" data-v-1b9d911f></path><path d="M3 12h.01" data-v-1b9d911f></path><path d="M3 18h.01" data-v-1b9d911f></path></svg>',1)])],2)])])]),e("div",Xn,[!E.images.length&&!E.links.length?(n(),o("div",eo," 表情包内尚无任何图片资源 ")):yt.value.length?(n(),o("div",lo,[M.value.length?(n(),o("div",so,[e("div",ao,[t[112]||(t[112]=e("span",{class:"bulk-title"},"本地素材",-1)),e("span",no,"已选择 "+i(M.value.length)+" 张",1)]),e("div",oo,[e("button",{onClick:xl,class:"toolbar-btn compact"},i(Ht.value?"取消本页":"选择本页"),1),M.value.length?(n(),o("button",{key:0,onClick:$e,class:"toolbar-btn compact"}," 清空选择 ")):d("v-if",true),M.value.length?(n(),o("div",io,[y(e("select",{"onUpdate:modelValue":t[33]||(t[33]=s=>ye.value=s),class:"flat-select compact-select"},[t[113]||(t[113]=e("option",{value:""},"移动到...",-1)),(n(true),o(g,null,h(I.value,s=>(n(),o("option",{key:s.name,value:s.name,disabled:s.name===v.value.name},i(s.name),9,ro))),128))],512),[[Le,ye.value]]),e("button",{onClick:as,class:"toolbar-btn compact",disabled:!ye.value}," 移动 ",8,uo)])):d("v-if",true),e("button",{onClick:gl,class:"toolbar-btn compact"},"设置标签"),M.value.length?(n(),o("button",{key:2,onClick:ls,class:"toolbar-btn compact danger"}," 批量删除 ")):d("v-if",true)])])):d("v-if",true),e("div",{class:m(["notion-gallery-grid",he.value==="list"?"list-mode":""])},[(n(true),o(g,null,h(ht.value,s=>(n(),o("div",{key:s.id,class:m(["notion-gallery-card",{"notion-gallery-card-active-dropdown":oe.value===s.value,selected:s.type==="local"&&ft(s.value),external:s.type==="external"}])},[s.type==="local"?(n(),o("button",{key:0,class:"gallery-select-toggle",onClick:B(a=>Gt(s.value),["stop"]),title:ft(s.value)?"取消选择":"选择图片"},[ft(s.value)?(n(),o("svg",vo,[...t[114]||(t[114]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):d("v-if",true)],8,co)):d("v-if",true),e("div",{class:"gallery-img-container",onClick:a=>Il(s),style:{cursor:"pointer"},title:s.type==="local"&&M.value.length?"切换选择状态":"在新标签页中打开原图"},[e("img",{src:s.src,class:"gallery-img",loading:"lazy"},null,8,po),e("span",{class:m(["image-format-badge",s.type])},i(s.type==="external"?"LINK":It(s.value)),3)],8,go),e("div",fo,[e("div",{class:"gallery-card-title",title:s.label},i(s.label),9,mo),e("div",yo,[s.type==="local"?(n(),o("div",ho,[(n(true),o(g,null,h(Ft(s.value),a=>(n(),o("span",{key:a,class:"gallery-card-tag-badge",style:gs({backgroundColor:pt(a)+"12",color:pt(a),borderColor:pt(a)+"22"})},i(a),5))),128)),Ft(s.value).length?d("v-if",true):(n(),o("span",bo,"暂无标签"))])):(n(),o("div",ko)),e("div",wo,[e("button",{class:"gallery-card-menu-btn",onClick:B(a=>Cl(s.value),["stop"]),title:"更多操作"},[...t[115]||(t[115]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[e("circle",{cx:"12",cy:"12",r:"1.5"}),e("circle",{cx:"19",cy:"12",r:"1.5"}),e("circle",{cx:"5",cy:"12",r:"1.5"})],-1)])],8,_o),d(" Dropdown menu "),y(e("div",{class:"gallery-card-menu-dropdown",onClick:t[34]||(t[34]=B(()=>{},["stop"]))},[s.type==="local"?(n(),o(g,{key:0},[e("button",{onClick:a=>{hl(v.value.name,s.value),Oe()}},"编辑标签",8,Co),I.value.length>1?(n(),o("div",xo,[t[116]||(t[116]=e("span",null,"移动至表情包",-1)),e("div",Io,[(n(true),o(g,null,h(I.value,a=>(n(),o(g,null,[a.name!==v.value.name?(n(),o("button",{key:a.name,onClick:c=>{ss(v.value.name,a.name,s.value),Oe()}},i(a.name),9,$o)):d("v-if",true)],64))),256))])])):d("v-if",true),e("button",{class:"danger",onClick:a=>{ts(v.value.name,s.value),Oe()}},"删除图片",8,Eo)],64)):(n(),o(g,{key:1},[e("button",{onClick:a=>{de(s.value),Oe()}},"复制链接",8,So),e("button",{class:"danger",onClick:a=>{es(v.value.name,s.value),Oe()}},"删除外链",8,Mo)],64))],512),[[ce,oe.value===s.value]])])])])],2))),128))],2),Ee.value>1?(n(),o("div",Ao,[e("button",{disabled:L.value===1,onClick:t[35]||(t[35]=s=>L.value--),class:"btn btn-secondary page-btn"}," 上一页 ",8,To),e("span",Lo,[t[117]||(t[117]=C("第 ",-1)),e("b",null,i(L.value),1),C(" / "+i(Ee.value)+" 页",1)]),e("button",{disabled:L.value===Ee.value,onClick:t[36]||(t[36]=s=>L.value++),class:"btn btn-secondary page-btn"}," 下一页 ",8,Bo)])):d("v-if",true)])):(n(),o("div",to," 没有匹配当前搜索或筛选条件的图片 "))])])])],32)],2112)):d("v-if",true)])):w.value==="distribution"?(n(),o(g,{key:1},[d(" MENU VIEW 2: DISTRIBUTION (🌐) "),e("div",Uo,[e("div",{class:"notion-db-header page-section-header"},[t[118]||(t[118]=e("div",null,[e("h1",{class:"notion-main-title"},"分发管理"),e("p",{class:"section-desc compact"},"管理统一重定向端点与外部目标地址")],-1)),e("button",{onClick:Dl,class:"btn btn-primary btn-notion"}," + 新建端点 ")]),t[133]||(t[133]=e("hr",{class:"notion-hr"},null,-1)),e("div",Vo,[d(" Endpoint Editor Form Panel "),y(e("div",zo,[e("div",Po,[e("h2",Fo,i(q.value?"编辑分发端点":"创建新分发端点"),1),e("button",{onClick:sl,class:"icon-btn hover-bg",title:"收起编辑器"},[...t[119]||(t[119]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),e("div",No,[e("div",Ro,[t[120]||(t[120]=e("label",null,"端点名称 *",-1)),y(e("input",{"onUpdate:modelValue":t[38]||(t[38]=s=>_.name=s),disabled:!!q.value,class:"flat-input",placeholder:"例如: moe"},null,8,Do),[[z,_.name]]),t[121]||(t[121]=e("span",{class:"field-hint"},"只能包含字母、数字、下划线和连字符",-1))]),e("div",Oo,[t[122]||(t[122]=e("label",null,"描述",-1)),y(e("input",{"onUpdate:modelValue":t[39]||(t[39]=s=>_.description=s),class:"flat-input",placeholder:"例如: 萌版横图"},null,512),[[z,_.description]])]),e("div",Go,[t[123]||(t[123]=e("label",null,"目标 URL *",-1)),y(e("input",{"onUpdate:modelValue":t[40]||(t[40]=s=>_.url=s),class:"flat-input",placeholder:"https://example.com/api"},null,512),[[z,_.url]])]),e("div",Ho,[t[124]||(t[124]=e("span",null,"访问预览",-1)),e("code",{onClick:t[41]||(t[41]=s=>de(qt.value))},i(qt.value||"填写端点名称后生成预览"),1)]),e("div",Wo,[e("button",{onClick:Gl,class:"btn btn-primary flex-grow"},i(q.value?"保存修改":"立即创建"),1),e("button",{onClick:sl,class:"btn btn-secondary"}," 取消 ")])])],512),[[ce,Ve.value]]),d(" Endpoints Table List "),e("div",jo,[e("div",Ko,[t[125]||(t[125]=e("h2",{class:"notion-panel-title"},"端点列表",-1)),e("span",qo,i(pe.value.length)+" 条路由",1)]),e("div",Zo,[e("table",Qo,[t[132]||(t[132]=e("thead",null,[e("tr",null,[e("th",{style:{width:"18%"}},"名称"),e("th",{style:{width:"20%"}},"描述"),e("th",{style:{width:"17%"}},"方式"),e("th",{style:{width:"35%"}},"访问路径 & 转发目标"),e("th",{style:{width:"10%","text-align":"right"}},"管理")])],-1)),e("tbody",null,[pe.value.length?d("v-if",true):(n(),o("tr",Yo,[...t[126]||(t[126]=[e("td",{colspan:"5",class:"empty-cell"},"尚未配置任何转发 API 端点",-1)])])),(n(true),o(g,null,h(pe.value,s=>(n(),o("tr",{key:s.name},[e("td",null,[e("div",Jo,i(s.name),1)]),e("td",{class:"cell-desc",title:s.description},i(s.description||"-"),9,Xo),t[131]||(t[131]=e("td",null,[e("span",{class:"method-tag redirect"},"重定向"),e("div",{class:"target-url"},"302 重定向")],-1)),e("td",ei,[e("div",ti,[e("span",{class:"link-text",onClick:a=>de(ue(s.name))}," /"+i(s.name),9,li),e("button",{onClick:a=>de(ue(s.name)),class:"icon-btn-inline",title:"复制完整链接"},[...t[127]||(t[127]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),e("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,si)]),e("div",{class:"target-url truncate",title:s.url}," → "+i(s.url),9,ai)]),e("td",ni,[e("div",oi,[e("a",{href:ue(s.name),target:"_blank",class:"icon-btn hover-bg",title:"测试该端点访问"},[...t[128]||(t[128]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])],8,ii),e("button",{onClick:a=>Ol(s),class:"icon-btn hover-bg",title:"编辑参数"},[...t[129]||(t[129]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e("path",{d:"M18.5 2.5a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,ri),e("button",{onClick:a=>Hl(s.name),class:"icon-btn hover-danger",title:"彻底删除"},[...t[130]||(t[130]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("polyline",{points:"3 6 5 6 21 6"}),e("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,ui)])])]))),128))])])])])])])],2112)):w.value==="staging"?(n(),o(g,{key:2},[d(" MENU VIEW 3: STAGING (暂缓区) "),e("div",di,[e("div",ci,[t[134]||(t[134]=e("div",null,[e("h1",{class:"notion-main-title"},"暂缓区"),e("p",{class:"section-desc compact"},"复核被上传过滤器拦截或自动收集的候选图片,再手动归档到表情包分组")],-1)),e("div",vi,[e("button",{onClick:Nl,class:m(["btn",Y.value==="similar"?"btn-primary":"btn-secondary","btn-notion"]),disabled:fe.value||P.value.length<2},i(fe.value?"筛选中...":Y.value==="similar"?"显示全部":"筛选相似图片"),11,gi),e("button",{onClick:te,class:"btn btn-secondary btn-notion"}," 刷新列表 "),P.value.length?(n(),o("button",{key:0,onClick:Ll,class:"btn btn-danger btn-notion"}," 一键清空 ")):d("v-if",true)])]),e("div",pi,[e("div",fi,[t[135]||(t[135]=e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("circle",{cx:"11",cy:"11",r:"8"}),e("path",{d:"m21 21-4.3-4.3"})],-1)),y(e("input",{"onUpdate:modelValue":t[42]||(t[42]=s=>dt.value=s),placeholder:"搜索文件名、来源或原因"},null,512),[[z,dt.value]])]),e("div",mi,i(Y.value==="similar"?El.value.length:ie.value.length)+" / "+i(P.value.length)+" 张候选 ",1)]),P.value.length?Y.value==="similar"?(n(),o("div",hi,[fe.value?(n(),o("div",bi,"正在筛选相似图片...")):Ze.value?(n(),o("div",ki,i(Ze.value),1)):d("v-if",true),!fe.value&&!bt.value.length?(n(),o("div",wi," 暂缓区没有匹配当前条件的相似图片 ")):d("v-if",true),(n(true),o(g,null,h(bt.value,s=>(n(),o("section",{key:s.id,class:"similar-group"},[e("div",_i,[e("div",null,[e("h3",null,"相似组 "+i(s.label),1),e("p",null,i(s.items.length)+" 张候选,最高相似度 "+i(Ul(s.similarity)),1)])]),e("div",Ci,[(n(true),o(g,null,h(s.items,a=>(n(),o("article",{key:a.id,class:"staging-card"},[e("button",{class:"staging-image-shell",onClick:c=>Mt(lt(a.id)),title:"打开原图"},[e("img",{class:"staging-image",src:lt(a.id),alt:a.originalName||a.filename,loading:"lazy"},null,8,Ii)],8,xi),e("div",$i,[e("div",Ei,[e("div",{class:"staging-title",title:a.originalName||a.filename},i(a.originalName||a.filename),9,Si),e("span",Mi,i(It(a.filename)),1)]),e("div",Ai,[e("span",{title:a.reason||"暂缓候选"},i(a.reason||"暂缓候选"),9,Ti),e("span",null,i(a.source||"filter"),1),e("span",null,i(Jt(a.size)),1),e("span",null,i(st(a.createdAt)),1)]),y(e("select",{"onUpdate:modelValue":c=>K.value[a.id]=c,class:"flat-select staging-select",disabled:!I.value.length},[t[137]||(t[137]=e("option",{value:""},"选择目标表情包",-1)),(n(true),o(g,null,h(I.value,c=>(n(),o("option",{key:c.name,value:c.name},i(c.name),9,Bi))),128))],8,Li),[[Le,K.value[a.id]]]),e("div",Ui,[e("button",{onClick:c=>tl(a),class:"btn btn-primary staging-action-btn",disabled:R.value===a.id||!K.value[a.id]},i(R.value===a.id?"处理中...":"归档到表情包"),9,Vi),e("button",{onClick:c=>ll(a),class:"btn btn-danger staging-action-btn",disabled:R.value===a.id}," 删除 ",8,zi)])])]))),128))])]))),128))])):ie.value.length?(n(),o("div",Fi,[D.value.size?(n(),o("div",Ni,[e("div",Ri,[t[138]||(t[138]=e("span",{class:"bulk-title"},"暂缓区",-1)),e("span",Di,"已选择 "+i(D.value.size)+" 张",1)]),e("div",Oi,[e("button",{onClick:Al,class:"toolbar-btn compact"},i(Yt.value?"取消全选":"全选当前"),1),e("button",{onClick:et,class:"toolbar-btn compact"}," 清空选择 "),e("button",{onClick:Tl,class:"toolbar-btn compact danger"}," 批量删除 ")])])):d("v-if",true),e("div",Gi,[(n(true),o(g,null,h(ie.value,s=>(n(),o("article",{key:s.id,class:m(["staging-card",{"staging-card-selected":kt(s.id)}])},[e("button",{class:"staging-select-toggle",onClick:B(a=>Ml(s.id),["stop"]),title:kt(s.id)?"取消选择":"选择图片"},[kt(s.id)?(n(),o("svg",Wi,[...t[139]||(t[139]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):d("v-if",true)],8,Hi),e("button",{class:"staging-image-shell",onClick:a=>Mt(lt(s.id)),title:"打开原图"},[e("img",{class:"staging-image",src:lt(s.id),alt:s.originalName||s.filename,loading:"lazy"},null,8,Ki)],8,ji),e("div",qi,[e("div",Zi,[e("div",{class:"staging-title",title:s.originalName||s.filename},i(s.originalName||s.filename),9,Qi),e("span",Yi,i(It(s.filename)),1)]),e("div",Ji,[e("span",{title:s.reason||"暂缓候选"},i(s.reason||"暂缓候选"),9,Xi),e("span",null,i(s.source||"filter"),1),e("span",null,i(Jt(s.size)),1),e("span",null,i(st(s.createdAt)),1)]),y(e("select",{"onUpdate:modelValue":a=>K.value[s.id]=a,class:"flat-select staging-select",disabled:!I.value.length},[t[140]||(t[140]=e("option",{value:""},"选择目标表情包",-1)),(n(true),o(g,null,h(I.value,a=>(n(),o("option",{key:a.name,value:a.name},i(a.name),9,tr))),128))],8,er),[[Le,K.value[s.id]]]),e("div",lr,[e("button",{onClick:a=>tl(s),class:"btn btn-primary staging-action-btn",disabled:R.value===s.id||!K.value[s.id]},i(R.value===s.id?"处理中...":"归档到表情包"),9,sr),e("button",{onClick:a=>ll(s),class:"btn btn-danger staging-action-btn",disabled:R.value===s.id}," 删除 ",8,ar)])])],2))),128))])])):(n(),o("div",Pi," 没有匹配当前搜索条件的暂缓图片 ")):(n(),o("div",yi,[...t[136]||(t[136]=[e("div",{class:"empty-icon"},"🕓",-1),e("h3",null,"暂缓区为空",-1),e("p",null,"上传时被过滤器拦截或自动收集命中的候选图片会先保存在这里,等待人工复核。",-1)])]))])],2112)):w.value==="settings"?(n(),o(g,{key:3},[d(" MENU VIEW 4: PREVIEW (👁️ 预览) "),e("div",nr,[e("div",or,[e("div",{class:"notion-db-header page-section-header preview-page-header"},[t[141]||(t[141]=e("div",null,[e("h1",{class:"notion-main-title"},"预览"),e("p",{class:"section-desc compact"},"实时预览路由与最终提示词效果")],-1)),e("button",{onClick:Et,class:"btn btn-secondary btn-notion"}," 刷新预览 ")]),e("div",ir,[e("section",rr,[e("div",ur,[t[142]||(t[142]=e("div",null,[e("div",{class:"preview-card-title"},"路由清单"),e("div",{class:"preview-card-desc"},"{endpoint} 中可供 ChatLuna 使用的合集与端点")],-1)),e("button",{onClick:t[43]||(t[43]=s=>de(wt.value)),class:"preview-action-btn",disabled:!wt.value,title:"复制路由清单"}," 复制清单 ",8,dr)]),Zt.value.length?(n(),o("div",cr,[e("table",vr,[t[144]||(t[144]=e("thead",null,[e("tr",null,[e("th",null,"预览"),e("th",null,"包名"),e("th",null,"描述"),e("th",null,"路径"),e("th",null,"操作")])],-1)),e("tbody",null,[(n(true),o(g,null,h(Zt.value,s=>(n(),o("tr",{key:s.id},[e("td",null,[s.previewImages.length?(n(),o("div",{key:0,class:m(["preview-mini-cover",s.previewImages.length===1?"single":""])},[(n(true),o(g,null,h(s.previewImages,a=>(n(),o("img",{key:a,src:a,alt:`${s.name} 预览`,loading:"lazy",onError:c=>Bl(s)},null,40,gr))),128))],2)):(n(),o("div",{key:1,class:m(["preview-route-icon",s.type])},i(s.type==="collection"?"包":"API"),3))]),e("td",null,[e("div",pr,i(s.name),1),e("span",{class:m(["preview-route-type",s.type])},i(s.typeLabel),3)]),e("td",null,[e("div",{class:"preview-route-desc",title:s.description},i(s.description),9,fr)]),e("td",null,[e("code",{class:"preview-route-path",title:s.fullUrl,onClick:a=>de(s.fullUrl)},i(s.path),9,mr)]),e("td",null,[e("div",yr,[e("a",{href:s.fullUrl,target:"_blank",class:"icon-btn hover-bg",title:"打开预览"},[...t[143]||(t[143]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e("polyline",{points:"15 3 21 3 21 9"}),e("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])],8,hr)])])]))),128))])])])):(n(),o("div",br," 暂无可用表情包及路由,请前往表情包管理或分发管理中创建。 "))]),e("section",kr,[e("div",wr,[t[145]||(t[145]=e("div",null,[e("div",{class:"preview-card-title"},"最终提示词"),e("div",{class:"preview-card-desc"},"{memesluna} 注入给 LLM 的完整文本")],-1)),e("button",{onClick:t[44]||(t[44]=s=>de(Ge.value)),class:"preview-action-btn",disabled:!Ge.value,title:"复制最终提示词"}," 复制提示词 ",8,_r)]),e("div",Cr,[Ge.value?(n(),o("pre",xr,i(Ge.value),1)):(n(),o("pre",Ir,"- 正在获取最终提示词预览... -"))])])])])])],2112)):d("v-if",true)])],2112))])]))}}),Er=(Be,w)=>{const T=Be.__vccOpts||Be;for(const[le,Ue]of w)T[le]=Ue;return T},Sr=Er($r,[["__scopeId","data-v-1b9d911f"]]),Mr="M1024 512C1024 229.230208 794.769792 0 512 0 229.230208 0 0 229.230208 0 512 0 794.769792 229.230208 1024 512 1024 629.410831 1024 740.826187 984.331046 830.768465 912.686662 841.557579 904.092491 843.33693 888.379234 834.742758 877.590121 826.148587 866.801009 810.43533 865.021658 799.646219 873.615827 718.470035 938.277495 618.001779 974.048781 512 974.048781 256.817504 974.048781 49.951219 767.182496 49.951219 512 49.951219 256.817504 256.817504 49.951219 512 49.951219 767.182496 49.951219 974.048781 256.817504 974.048781 512 974.048781 599.492834 949.714859 683.336764 904.470807 755.960693 897.177109 767.668243 900.755245 783.071797 912.462793 790.365493 924.170342 797.659191 939.573897 794.081058 946.867595 782.373508 997.013826 701.880796 1024 608.898379 1024 512ZM337.170731 499.512194C371.654852 499.512194 399.609756 471.557291 399.609756 437.073171 399.609756 402.58905 371.654852 374.634146 337.170731 374.634146 302.686611 374.634146 274.731708 402.58905 274.731708 437.073171 274.731708 471.557291 302.686611 499.512194 337.170731 499.512194ZM711.804879 499.512194C746.288998 499.512194 774.243902 471.557291 774.243902 437.073171 774.243902 402.58905 746.288998 374.634146 711.804879 374.634146 677.320757 374.634146 649.365854 402.58905 649.365854 437.073171 649.365854 471.557291 677.320757 499.512194 711.804879 499.512194ZM352.788105 768.770967C396.165222 803.472661 453.151987 824.195121 524.487806 824.195121 595.823622 824.195121 652.810387 803.472661 696.187505 768.770967 722.700531 747.560546 738.882517 725.984565 746.631548 710.486505 752.800254 698.149092 747.799529 683.146916 735.462114 676.978208 723.124702 670.809502 708.122526 675.810227 701.953818 688.147642 701.03616 689.982957 698.492224 694.172969 694.165854 699.941463 686.602473 710.025971 676.927317 720.210345 664.983226 729.765617 630.311565 757.502948 584.273939 774.243902 524.487806 774.243902 464.70167 774.243902 418.664045 757.502948 383.992384 729.765617 372.048292 720.210345 362.373137 710.025971 354.809756 699.941463 350.483386 694.172969 347.93945 689.982957 347.021792 688.147642 340.853084 675.810227 325.850908 670.809502 313.513495 676.978208 301.176081 683.146916 296.175356 698.149092 302.344062 710.486505 310.093092 725.984565 326.275078 747.560546 352.788105 768.770967Z",Ar={name:"MemesLunaIcon",render(){return cl("svg",{class:"k-icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},[cl("path",{fill:"currentColor",d:Mr})])}};os.register("MemesLunaEmoji",Ar);const Br=Be=>{Be.page({name:"MemesLuna",path:"/memesluna",icon:"MemesLunaEmoji",component:Sr,authority:1,order:500})};export{Br as default};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @keyframes spin-38501121{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-38501121]{animation:spin-38501121 1s linear infinite;display:inline-block}.memesluna-app-layout[data-v-38501121]{min-height:100vh;padding-left:64px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Segoe UI Emoji","Apple Color Emoji";background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #37352f);box-sizing:border-box;color-scheme:light;--k-bg-card: var(--k-card-bg, #ffffff);--k-bg-panel: var(--k-hover-bg, #f7f7f5);--k-bg-button-hover: var(--k-hover-bg, rgba(55, 53, 47, .04));--k-text-muted: var(--k-text-light, rgba(55, 53, 47, .55));--memesluna-drop-overlay-bg: rgba(255, 255, 255, .85);--memesluna-floating-action-bg: rgba(255, 255, 255, .92);--memesluna-floating-shadow: none;--memesluna-focus-ring: rgba(35, 131, 226, .15);--memesluna-primary-soft-bg: rgba(35, 131, 226, .1);--memesluna-primary-faint-bg: rgba(35, 131, 226, .04);--memesluna-success-soft-bg: rgba(43, 138, 92, .1);--memesluna-danger-soft-bg: rgba(235, 87, 87, .08);--memesluna-danger-border: rgba(235, 87, 87, .25);--memesluna-toast-success-bg: #f2f9f5;--memesluna-toast-error-bg: #fdf2f2;--memesluna-final-prompt-bg: rgba(35, 131, 226, .02);--memesluna-final-prompt-text: #1e3a8a;--memesluna-code-bg: #ffffff;--memesluna-code-text: #111827;--memesluna-code-border: rgba(15, 23, 42, .09);--memesluna-soft-shadow: none;--memesluna-card-shadow: none;--memesluna-popover-shadow: none}html.dark .memesluna-app-layout,.theme-root.dark .memesluna-app-layout{color-scheme:dark;--k-bg-card: var(--k-card-bg, #252529);--k-bg-panel: var(--k-hover-bg, #303036);--k-bg-button-hover: var(--k-hover-bg, rgba(255, 255, 255, .06));--k-text-muted: var(--k-text-light, rgba(235, 235, 245, .62));--memesluna-drop-overlay-bg: rgba(20, 20, 24, .82);--memesluna-floating-action-bg: rgba(42, 42, 48, .94);--memesluna-floating-shadow: none;--memesluna-focus-ring: rgba(64, 158, 255, .24);--memesluna-primary-soft-bg: rgba(64, 158, 255, .16);--memesluna-primary-faint-bg: rgba(64, 158, 255, .1);--memesluna-success-soft-bg: rgba(103, 194, 58, .16);--memesluna-danger-soft-bg: rgba(235, 87, 87, .16);--memesluna-danger-border: rgba(235, 87, 87, .34);--memesluna-toast-success-bg: rgba(43, 138, 92, .16);--memesluna-toast-error-bg: rgba(235, 87, 87, .16);--memesluna-final-prompt-bg: rgba(64, 158, 255, .12);--memesluna-final-prompt-text: var(--k-color-primary-tint, #8ab4f8);--memesluna-code-bg: #000000;--memesluna-code-text: #f8fafc;--memesluna-code-border: rgba(255, 255, 255, .14);--memesluna-soft-shadow: none;--memesluna-card-shadow: none;--memesluna-popover-shadow: none}.notion-content[data-v-38501121]{padding:80px 112px 112px;box-sizing:border-box;max-width:1880px;margin:0 auto}.content-breadcrumb-header[data-v-38501121]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08))}.breadcrumbs[data-v-38501121]{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.crumb-root[data-v-38501121]{font-weight:500}.crumb-parent[data-v-38501121]{color:var(--k-text-normal, #37352f);font-weight:500}.crumb-child.active[data-v-38501121]{color:var(--k-color-primary, #2383e2);font-weight:600}.crumb-separator[data-v-38501121]{color:var(--k-color-border, rgba(55, 53, 47, .25))}.header-quick-stats[data-v-38501121]{display:flex;gap:8px}.stat-bubble[data-v-38501121]{font-size:.72rem;font-weight:500;background-color:var(--k-bg-panel, rgba(55, 53, 47, .05));color:var(--k-text-muted, rgba(55, 53, 47, .65));padding:2px 8px;border-radius:4px}.notion-view-switcher[data-v-38501121]{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08));margin-bottom:24px;padding-bottom:2px}.switcher-btn[data-v-38501121]{background:transparent;border:none;padding:6px 16px;font-size:.85rem;font-weight:500;color:var(--k-text-muted-light, rgba(55, 53, 47, .3));cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .1s ease,color .1s ease;border-bottom:2px solid transparent;border-radius:4px 4px 0 0;margin-bottom:-1px}.switcher-btn[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.switcher-btn.active[data-v-38501121]{color:var(--k-text-normal, #37352f);border-bottom:2px solid var(--k-text-normal, #37352f);font-weight:600;border-radius:0}.switcher-icon[data-v-38501121]{font-size:.95rem}.notion-db-header[data-v-38501121]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;margin-bottom:12px}.collection-list-header[data-v-38501121]{gap:20px;justify-content:flex-end}.collection-title-group[data-v-38501121]{display:flex;align-items:center;gap:22px;min-width:0}.notion-db-title[data-v-38501121]{font-size:1.24rem;font-weight:700;margin:0;color:var(--k-text-normal, #37352f);white-space:nowrap}.collection-total-count[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.82rem;white-space:nowrap}.notion-db-actions[data-v-38501121]{display:flex;align-items:center;gap:8px}.collection-toolbar[data-v-38501121]{flex-wrap:nowrap;justify-content:flex-end}.collection-search-shell[data-v-38501121],.collection-filter-shell[data-v-38501121]{position:relative;display:inline-flex;align-items:center;color:var(--k-text-muted, rgba(55, 53, 47, .52))}.collection-toolbar-icon[data-v-38501121]{position:absolute;right:11px;width:15px;height:15px;pointer-events:none;color:currentColor;z-index:1}.collection-search-shell .collection-search-input[data-v-38501121]{width:280px;height:36px;padding-left:12px;padding-right:36px;border-radius:6px;font-size:.82rem;background-color:var(--k-bg-card, #ffffff)}.collection-filter-shell .collection-filter-select[data-v-38501121]{width:128px;height:36px;padding-left:12px;padding-right:36px;border-radius:6px;font-size:.82rem;background-color:var(--k-bg-card, #ffffff);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.collection-name-input-notion[data-v-38501121]{width:200px;height:28px;font-size:.78rem}.btn-notion[data-v-38501121]{height:36px;padding:0 14px;gap:6px;border-radius:6px;font-size:.84rem;font-weight:600;white-space:nowrap}.btn-plus[data-v-38501121]{font-size:1rem;line-height:1}.notion-hr[data-v-38501121]{border:none;border-top:1px solid var(--k-color-border, rgba(55, 53, 47, .09));margin:8px 0 20px}.folders-grid[data-v-38501121]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px 24px}.folder-card[data-v-38501121]{background:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:8px;overflow:hidden;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;min-width:0;box-shadow:0 2px 8px #0f172a0d}.folder-card-active-menu[data-v-38501121]{overflow:visible!important;z-index:60!important}.folder-card[data-v-38501121]:hover{border-color:#2383e247;box-shadow:0 8px 24px #0f172a14;transform:translateY(-1px)}.folder-cover[data-v-38501121]{position:relative;aspect-ratio:2.18 / 1;min-height:132px;background-color:var(--k-bg-panel, #f7f7f5);border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08));display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden}.folder-cover.has-preview[data-v-38501121]{background-color:var(--k-color-border, rgba(15, 23, 42, .08))}.folder-cover.empty[data-v-38501121]{display:flex;align-items:center;justify-content:center;color:var(--k-text-muted, rgba(55, 53, 47, .4))}.folder-card:hover .folder-cover.empty[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .55));background-color:var(--k-bg-button-hover, #f1f1ef)}.folder-cover-empty svg[data-v-38501121]{width:32px;height:32px}.folder-cover-img[data-v-38501121]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.folder-cover-badge[data-v-38501121]{position:absolute;right:8px;bottom:8px;padding:1px 6px;border-radius:3px;background-color:var(--memesluna-floating-action-bg);box-shadow:var(--memesluna-floating-shadow);color:var(--k-text-muted, rgba(55, 53, 47, .6));font-size:.65rem;font-weight:500}.folder-body[data-v-38501121]{padding:13px 16px 14px;display:flex;flex-direction:column;box-sizing:border-box}.tag-card-body[data-v-38501121]{padding:10px 14px 12px}.folder-cover.tag-cover-single[data-v-38501121]{display:block;position:relative}.folder-cover.tag-cover-single .tag-cover-single-img[data-v-38501121]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.folder-cover.tag-cover-grid[data-v-38501121]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:1px}.tag-synonym-names[data-v-38501121]{display:flex;flex-wrap:wrap;gap:4px;min-width:0}.tag-synonym-chip[data-v-38501121]{display:inline-block;padding:1px 7px;border-radius:4px;font-size:.82rem;font-weight:600;line-height:1.7;white-space:nowrap}.tag-color-0[data-v-38501121]{background:#34a8531f;color:#1a7a3c}.tag-color-1[data-v-38501121]{background:#4285f41f;color:#1a56c4}.tag-color-2[data-v-38501121]{background:#fbbc0524;color:#8a6000}.tag-color-3[data-v-38501121]{background:#ea43351f;color:#b92a1a}.tag-color-4[data-v-38501121]{background:#9932cc1f;color:#7218a0}.tag-color-5[data-v-38501121]{background:#00bcd41f;color:#007a8a}.tag-color-6[data-v-38501121]{background:#ff6f001f;color:#b84c00}.tag-color-7[data-v-38501121]{background:#2196f31a;color:#0d6dbd}@media (prefers-color-scheme: dark){.tag-color-0[data-v-38501121]{background:#34a8532e;color:#6bcf8a}.tag-color-1[data-v-38501121]{background:#4285f42e;color:#7ab3ff}.tag-color-2[data-v-38501121]{background:#fbbc052e;color:#f5c842}.tag-color-3[data-v-38501121]{background:#ea43352e;color:#ff7a6e}.tag-color-4[data-v-38501121]{background:#9932cc2e;color:#c580e8}.tag-color-5[data-v-38501121]{background:#00bcd42e;color:#5ddff5}.tag-color-6[data-v-38501121]{background:#ff6f002e;color:#ffa050}.tag-color-7[data-v-38501121]{background:#2196f32e;color:#6bbaff}}.folder-title-row[data-v-38501121]{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}.folder-name[data-v-38501121]{min-width:0;font-size:.96rem;font-weight:700;color:var(--k-text-normal, #37352f);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-more-btn[data-v-38501121]{width:26px;height:26px;border:none;border-radius:5px;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .56));display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex-shrink:0}.folder-more-btn[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .06));color:var(--k-text-normal, #37352f)}.folder-more-btn svg[data-v-38501121]{width:17px;height:17px}.folder-action-menu[data-v-38501121]{position:absolute;right:0;top:30px;min-width:112px;padding:5px;border-radius:6px;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(15, 23, 42, .12));box-shadow:0 10px 28px #0f172a24;z-index:20}.folder-action-menu button[data-v-38501121]{width:100%;height:28px;padding:0 9px;border:none;border-radius:4px;background:transparent;color:var(--k-text-normal, #37352f);text-align:left;font:inherit;font-size:.78rem;cursor:pointer}.folder-action-menu button[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .06))}.folder-action-menu button.danger[data-v-38501121]{color:var(--k-color-danger, #eb5757)}.folder-info-row[data-v-38501121]{display:flex;justify-content:space-between;align-items:center;margin-top:9px;gap:8px}.folder-count[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .62));font-size:.86rem;line-height:1.4;white-space:nowrap}.folder-meta-row[data-v-38501121]{display:flex;align-items:center;min-width:0}.folder-meta-item[data-v-38501121]{min-width:0;display:inline-flex;align-items:center;gap:5px;color:var(--k-text-muted, rgba(55, 53, 47, .6));font-size:.8rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.folder-meta-item svg[data-v-38501121]{width:15px;height:15px;flex-shrink:0}.collection-detail-layout[data-v-38501121]{margin-top:4px}.asset-detail-shell[data-v-38501121]{display:flex;flex-direction:column;gap:14px}.detail-topbar[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:8px}.detail-breadcrumbs[data-v-38501121]{display:flex;align-items:center;gap:8px;min-width:0;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.82rem}.detail-back-btn[data-v-38501121]{border:none;background:transparent;color:inherit;display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border-radius:8px;cursor:pointer;font:inherit}.detail-back-btn[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05));color:var(--k-text-normal, #111827)}.detail-back-btn svg[data-v-38501121],.asset-btn svg[data-v-38501121],.asset-icon-btn svg[data-v-38501121],.asset-test-btn svg[data-v-38501121],.asset-view-toggle svg[data-v-38501121]{width:16px;height:16px;flex:0 0 16px}.detail-separator[data-v-38501121]{color:var(--k-color-border, rgba(55, 53, 47, .3))}.detail-crumb-current[data-v-38501121],.detail-crumb-strong[data-v-38501121]{color:var(--k-text-normal, #111827);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-top-actions[data-v-38501121]{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.asset-btn[data-v-38501121],.asset-icon-btn[data-v-38501121],.asset-test-btn[data-v-38501121]{border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #111827);border-radius:12px;min-height:36px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:.8rem;font-weight:650;cursor:pointer;box-shadow:none;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.asset-btn[data-v-38501121]:hover,.asset-icon-btn[data-v-38501121]:hover,.asset-test-btn[data-v-38501121]:hover{background-color:var(--k-bg-panel, #f8fafc)}.asset-btn.primary[data-v-38501121],.asset-test-btn[data-v-38501121]{border-color:transparent;background:#1f6feb;color:#fff;box-shadow:none}.asset-btn.primary[data-v-38501121]:hover,.asset-test-btn[data-v-38501121]:hover{background:#1a5fd0}.asset-btn.secondary[data-v-38501121]{background-color:var(--k-bg-card, #ffffff)}.asset-btn.ghost[data-v-38501121]{width:36px;padding:0}.asset-btn.danger[data-v-38501121]{color:var(--k-color-danger, #eb5757)}.asset-btn.danger[data-v-38501121]:hover{background-color:var(--memesluna-danger-soft-bg);border-color:var(--memesluna-danger-border)}.asset-hero-panel[data-v-38501121]{display:grid;grid-template-columns:minmax(280px,.95fr) minmax(520px,1.55fr);gap:14px;align-items:stretch;padding:18px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));border-radius:16px;background:var(--k-bg-card, #ffffff);box-shadow:var(--memesluna-soft-shadow)}.asset-identity-card[data-v-38501121]{display:flex;align-items:center;gap:16px;min-width:0}.asset-avatar-frame[data-v-38501121]{width:96px;height:96px;border-radius:18px;overflow:hidden;flex:0 0 96px;background:var(--k-bg-panel, #f6f8fb);box-shadow:inset 0 0 0 1px var(--k-color-border, rgba(15, 23, 42, .08))}.asset-avatar-img[data-v-38501121]{width:100%;height:100%;object-fit:cover}.asset-avatar-empty[data-v-38501121]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--k-text-muted, rgba(55, 53, 47, .42))}.asset-avatar-empty svg[data-v-38501121]{width:34px;height:34px}.asset-title-stack[data-v-38501121]{min-width:0;flex:1}.asset-title-row[data-v-38501121]{display:flex;align-items:center;gap:9px}.asset-title-row h1[data-v-38501121]{margin:0;color:var(--k-text-normal, #0f172a);font-size:1.7rem;line-height:1.1;font-weight:760;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-pill[data-v-38501121]{padding:3px 8px;border-radius:999px;background-color:var(--memesluna-danger-soft-bg);color:var(--k-color-danger, #eb5757);font-size:.72rem;font-weight:700}.asset-description-input[data-v-38501121]{margin-top:9px;width:100%;border:none;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .68));font-size:.88rem;line-height:1.4;padding:4px 0;outline:none;font-family:inherit}.asset-description-input[data-v-38501121]:focus{color:var(--k-text-normal, #111827)}.asset-meta-line[data-v-38501121]{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:12px;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.75rem}.asset-api-card[data-v-38501121]{min-width:0;align-self:center;width:100%;box-shadow:none}.asset-card-label[data-v-38501121]{color:var(--k-text-normal, #111827);font-size:.8rem;font-weight:720;margin-bottom:9px}.asset-api-row[data-v-38501121]{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:center}.asset-api-row code[data-v-38501121]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:9px 10px;border-radius:10px;background-color:var(--memesluna-primary-faint-bg);color:var(--k-color-primary, #2563eb);font:.82rem SFMono-Regular,Consolas,monospace;box-shadow:inset 0 0 0 1px #2563eb14}.asset-icon-btn[data-v-38501121]{min-height:34px;padding:0 11px;border-radius:10px;font-size:.76rem}.asset-icon-btn.compact[data-v-38501121]{width:32px;min-height:32px;padding:0}.asset-test-btn[data-v-38501121]:disabled{opacity:.68;cursor:wait}.asset-api-hint[data-v-38501121]{margin-top:10px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.74rem}.api-preview-strip[data-v-38501121]{margin-top:10px;display:flex;align-items:center;gap:9px;color:var(--k-text-muted, rgba(55, 53, 47, .6));font-size:.75rem}.api-preview-strip img[data-v-38501121]{width:42px;height:42px;object-fit:cover;border-radius:10px;box-shadow:none}.asset-import-panel[data-v-38501121]{padding:14px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));border-radius:14px;background-color:var(--k-bg-card, #ffffff);box-shadow:none}.asset-import-header[data-v-38501121]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.asset-import-title[data-v-38501121]{color:var(--k-text-normal, #111827);font-size:.9rem;font-weight:720}.asset-import-desc[data-v-38501121]{margin-top:3px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.75rem}.asset-link-textarea[data-v-38501121]{width:100%;resize:vertical;min-height:92px;box-sizing:border-box;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-panel, #f8fafc);color:var(--k-text-normal, #111827);padding:10px 12px;font:.8rem SFMono-Regular,Consolas,monospace;outline:none}.asset-link-textarea[data-v-38501121]:focus{border-color:var(--k-color-primary, #2563eb);box-shadow:0 0 0 3px var(--memesluna-focus-ring);background-color:var(--k-bg-card, #ffffff)}.asset-import-actions[data-v-38501121]{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.asset-gallery-section[data-v-38501121]{border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));border-radius:16px;background-color:var(--k-bg-card, #ffffff);box-shadow:none;overflow:hidden}.asset-gallery-toolbar[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08))}.asset-tabs[data-v-38501121],.asset-filter-bar[data-v-38501121],.asset-view-toggle[data-v-38501121]{display:flex;align-items:center;gap:6px}.asset-tabs[data-v-38501121]{flex-wrap:wrap}.asset-tab[data-v-38501121]{border:none;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .62));border-radius:999px;padding:7px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:680}.asset-tab[data-v-38501121]:hover,.asset-tab.active[data-v-38501121]{color:var(--k-color-primary, #2563eb);background-color:var(--memesluna-primary-soft-bg)}.asset-tab span[data-v-38501121]{min-width:20px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;border-radius:999px;background-color:var(--k-bg-panel, rgba(15, 23, 42, .06));color:inherit;font-size:.7rem}.asset-filter-bar[data-v-38501121]{flex:1;justify-content:flex-end;min-width:0}.asset-search-box[data-v-38501121]{flex:1;max-width:320px;min-width:180px;height:36px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-card, #ffffff);color:var(--k-text-muted, rgba(55, 53, 47, .5))}.asset-search-box svg[data-v-38501121]{width:16px;height:16px;flex:0 0 16px}.asset-search-box input[data-v-38501121]{min-width:0;flex:1;border:none;background:transparent;color:var(--k-text-normal, #111827);outline:none;font:inherit;font-size:.8rem}.asset-select[data-v-38501121]{height:36px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #111827);padding:0 10px;font-size:.78rem;font-weight:600;outline:none}.asset-view-toggle[data-v-38501121]{padding:3px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-panel, #f8fafc)}.asset-view-toggle button[data-v-38501121]{width:30px;height:28px;border:none;border-radius:9px;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .55));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.asset-view-toggle button.active[data-v-38501121]{background-color:var(--k-bg-card, #ffffff);color:var(--k-color-primary, #2563eb)}.notion-page-toolbar[data-v-38501121]{display:flex;align-items:center;gap:8px;margin-bottom:20px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08));padding-bottom:8px}.toolbar-btn[data-v-38501121]{background:transparent;border:none;font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .6));cursor:pointer;display:inline-flex;align-items:center;padding:4px 10px;border-radius:4px;font-weight:500;transition:all .1s ease}.toolbar-btn[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.toolbar-btn.danger[data-v-38501121]{color:var(--k-color-danger, #eb5757)}.toolbar-btn.danger[data-v-38501121]:hover{background-color:var(--memesluna-danger-soft-bg)}.toolbar-divider[data-v-38501121]{width:1px;height:14px;background-color:var(--k-color-border, rgba(55, 53, 47, .12))}.notion-properties-panel[data-v-38501121]{margin-bottom:20px;display:flex;flex-direction:column;gap:6px}.property-row[data-v-38501121]{display:flex;align-items:center;font-size:.82rem}.property-label[data-v-38501121]{width:110px;color:var(--k-text-muted, rgba(55, 53, 47, .45));display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none}.prop-icon[data-v-38501121]{font-size:.95rem}.property-value[data-v-38501121]{flex:1}.property-input-text[data-v-38501121]{border:none;background:transparent;font-size:.82rem;color:var(--k-text-normal, #37352f);width:100%;padding:4px 8px;border-radius:4px;box-sizing:border-box;font-family:inherit;transition:background .1s ease}.property-input-text[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .03))}.property-input-text[data-v-38501121]:focus{background-color:var(--k-bg-card, #ffffff);box-shadow:inset 0 0 0 1px var(--k-color-primary, #2383e2);outline:none}.notion-callout[data-v-38501121]{display:flex;gap:12px;padding:14px 16px;border-radius:4px;background-color:var(--k-bg-panel, rgba(242, 241, 237, .45));border:1px solid var(--k-color-border, rgba(55, 53, 47, .08))}.callout-icon[data-v-38501121]{font-size:1.15rem;-webkit-user-select:none;user-select:none}.callout-content[data-v-38501121]{flex:1;min-width:0}.callout-title[data-v-38501121]{font-weight:600;font-size:.85rem;color:var(--k-text-normal, #37352f);margin-bottom:2px}.callout-desc[data-v-38501121]{font-size:.75rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin-bottom:10px;line-height:1.4}.callout-actions[data-v-38501121]{display:flex;gap:8px}.btn-small[data-v-38501121]{font-size:.75rem;padding:2px 10px;height:24px}.hidden-file-input[data-v-38501121]{display:none}.sidebar-drop-zone-overlay[data-v-38501121]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background-color:var(--memesluna-drop-overlay-bg);display:flex;align-items:center;justify-content:center;padding:40px;box-sizing:border-box}.drop-overlay-box[data-v-38501121]{border:2px dashed var(--k-color-primary, #2383e2);background-color:var(--memesluna-primary-faint-bg);border-radius:8px;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--k-color-primary, #2383e2);font-size:1.1rem;font-weight:500}.drop-overlay-box .drop-icon[data-v-38501121]{width:48px;height:48px;margin-bottom:16px}.gallery-view-switcher[data-v-38501121]{display:flex;gap:16px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .09));padding-bottom:2px}.gallery-tab-btn[data-v-38501121]{background:transparent;border:none;font-size:.82rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));cursor:pointer;padding-bottom:6px;border-bottom:2px solid transparent;font-weight:500;transition:all .1s ease}.gallery-tab-btn[data-v-38501121]:hover{color:var(--k-text-normal, #37352f)}.gallery-tab-btn.active[data-v-38501121]{color:var(--k-text-normal, #37352f);border-bottom-color:var(--k-text-normal, #37352f)}.gallery-tab-content[data-v-38501121]{padding:14px;margin-top:0}.gallery-bulk-toolbar[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 auto 12px;padding:9px 10px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:14px;background-color:var(--memesluna-floating-action-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.gallery-bulk-toolbar.floating[data-v-38501121]{position:sticky;top:8px;z-index:40;max-width:920px}.bulk-status[data-v-38501121]{display:flex;align-items:center;gap:8px;min-width:0}.bulk-title[data-v-38501121]{font-size:.82rem;font-weight:720;color:var(--k-text-normal, #37352f)}.bulk-meta[data-v-38501121]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .55))}.bulk-actions[data-v-38501121],.bulk-move-group[data-v-38501121]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.toolbar-btn.compact[data-v-38501121]{font-size:.74rem;padding:5px 9px;border-radius:10px}.toolbar-btn[data-v-38501121]:disabled{opacity:.45;cursor:not-allowed}.compact-select[data-v-38501121]{height:30px;padding:2px 9px;font-size:.74rem;border-radius:10px}.notion-gallery-grid[data-v-38501121]{display:grid;grid-template-columns:repeat(auto-fill,minmax(174px,1fr));gap:7px}.notion-gallery-card[data-v-38501121]{background:var(--k-bg-card, #fff);border:1px solid var(--k-color-border, rgba(55,53,47,.08));border-radius:8px;position:relative;transition:opacity .15s ease;box-shadow:none;overflow:hidden;display:flex;flex-direction:column}.notion-gallery-card[data-v-38501121]:hover,.notion-gallery-card.selected[data-v-38501121]{box-shadow:none}.notion-gallery-card.selected .gallery-img-container[data-v-38501121]{box-shadow:inset 0 0 0 2px var(--k-color-primary, #2563eb)}.notion-gallery-card.external .gallery-img-container[data-v-38501121]{background-color:var(--k-bg-card, #ffffff)}.gallery-select-toggle[data-v-38501121]{position:absolute;top:9px;left:9px;z-index:12;width:24px;height:24px;border:1px solid rgba(255,255,255,.82);border-radius:999px;background-color:var(--memesluna-floating-action-bg);box-shadow:none;color:var(--k-color-primary, #2383e2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .12s ease,border-color .12s ease}.gallery-select-toggle svg[data-v-38501121]{width:14px;height:14px}.notion-gallery-card:hover .gallery-select-toggle[data-v-38501121],.notion-gallery-card.selected .gallery-select-toggle[data-v-38501121]{opacity:1}.gallery-img-container[data-v-38501121]{width:100%;aspect-ratio:4 / 3;background-color:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;box-shadow:inset 0 0 0 1px #0f172a14}.gallery-img[data-v-38501121]{width:100%;height:100%;object-fit:cover}.image-format-badge[data-v-38501121]{position:absolute;right:8px;bottom:8px;z-index:12;padding:2px 6px;border-radius:7px;background:#0f172a9e;color:#fff;font-size:.68rem;font-weight:700;line-height:1.1}.image-format-badge.external[data-v-38501121]{background:#0d9488d1}.gallery-card-info[data-v-38501121]{padding:10px 12px;background:var(--k-bg-card, #fff);display:flex;flex-direction:column;gap:6px;flex:1;min-width:0;box-sizing:border-box}.notion-gallery-grid.list-mode[data-v-38501121]{grid-template-columns:1fr;gap:8px}.notion-gallery-grid.list-mode .notion-gallery-card[data-v-38501121]{aspect-ratio:auto;min-height:76px;display:grid;grid-template-columns:96px 1fr;align-items:center;gap:12px;padding:8px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));background-color:var(--k-bg-card, #ffffff)}.notion-gallery-grid.list-mode .gallery-img-container[data-v-38501121]{height:68px}.notion-gallery-grid.list-mode .gallery-card-info[data-v-38501121]{padding:0;background:transparent}.gallery-card-footer-row[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:8px;position:relative;width:100%}.gallery-card-tags-placeholder[data-v-38501121]{flex:1}.notion-gallery-card-active-dropdown[data-v-38501121]{overflow:visible!important;z-index:60!important}.gallery-card-title[data-v-38501121]{font-size:.82rem;font-weight:600;color:var(--k-text-normal, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.gallery-card-menu-container[data-v-38501121]{position:relative;display:inline-flex}.gallery-card-menu-btn[data-v-38501121]{background:transparent;border:none;cursor:pointer;width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--k-text-muted, rgba(55, 53, 47, .45));padding:0;transition:background .1s ease,color .1s ease}.gallery-card-menu-btn[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05));color:var(--k-text-normal, #111827)}.gallery-card-menu-btn svg[data-v-38501121]{width:14px;height:14px}.gallery-card-menu-dropdown[data-v-38501121]{position:absolute;bottom:100%;right:0;margin-bottom:6px;min-width:130px;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:6px;box-shadow:0 6px 20px #0f172a1f;z-index:50;padding:4px}.gallery-card-menu-dropdown button[data-v-38501121]{width:100%;border:none;background:transparent;text-align:left;padding:6px 10px;font-size:.76rem;cursor:pointer;color:var(--k-text-normal, #37352f);border-radius:4px;font-weight:500;transition:background .1s ease}.gallery-card-menu-dropdown button[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05))}.gallery-card-menu-dropdown button.danger[data-v-38501121]{color:var(--k-color-danger, #eb5757)}.gallery-card-menu-dropdown button.danger[data-v-38501121]:hover{background-color:var(--memesluna-danger-soft-bg)}.gallery-card-submenu-trigger[data-v-38501121]{position:relative}.gallery-card-submenu-trigger span[data-v-38501121]{display:block;padding:6px 10px;font-size:.76rem;font-weight:500;color:var(--k-text-normal, #37352f);cursor:pointer;border-radius:4px;transition:background .1s ease}.gallery-card-submenu-trigger:hover>span[data-v-38501121]{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05))}.gallery-card-submenu[data-v-38501121]{position:absolute;bottom:0;right:100%;margin-right:6px;min-width:120px;max-height:180px;overflow-y:auto;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:6px;box-shadow:0 4px 15px #0f172a1a;padding:4px;opacity:0;pointer-events:none;transition:opacity .1s ease}.gallery-card-submenu-trigger:hover .gallery-card-submenu[data-v-38501121]{opacity:1;pointer-events:auto}.gallery-card-submenu button[data-v-38501121]{padding:5px 8px;font-size:.72rem}.gallery-card-tags[data-v-38501121]{display:flex;flex-wrap:wrap;gap:4px;min-height:20px;align-items:center}.gallery-card-tag-badge[data-v-38501121]{font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;border:1px solid transparent;white-space:nowrap}.gallery-card-tag-empty[data-v-38501121]{font-size:.68rem;color:var(--k-text-muted, rgba(55, 53, 47, .35));font-style:italic}.flat-input[data-v-38501121],.flat-select[data-v-38501121],.flat-textarea[data-v-38501121]{box-sizing:border-box;padding:6px 10px;border:1px solid var(--k-color-border, rgba(15, 15, 15, .12));border-radius:4px;background:var(--k-bg-panel, rgba(242, 241, 237, .45));color:var(--k-text-normal, #37352f);font-size:.82rem;font-family:inherit;transition:background .1s ease,border-color .1s ease;outline:none}.flat-input[data-v-38501121]:focus,.flat-select[data-v-38501121]:focus,.flat-textarea[data-v-38501121]:focus{border-color:var(--k-color-primary, #2383e2);background:var(--k-bg-card, #ffffff);box-shadow:0 0 0 2px var(--memesluna-focus-ring)}.flat-input[data-v-38501121]::placeholder,.flat-textarea[data-v-38501121]::placeholder,.property-input-text[data-v-38501121]::placeholder{color:var(--k-text-muted, rgba(55, 53, 47, .45));opacity:.78}.flat-input[data-v-38501121]:disabled{background:var(--k-bg-panel, rgba(55, 53, 47, .05));color:var(--k-text-muted, rgba(55, 53, 47, .4));cursor:not-allowed}.field-hint[data-v-38501121]{font-size:.7rem;color:var(--k-text-muted, rgba(55, 53, 47, .45));margin-top:4px;display:block}.btn[data-v-38501121]{box-sizing:border-box;padding:4px 14px;font-size:.82rem;font-weight:500;border-radius:4px;cursor:pointer;transition:all .1s ease;display:inline-flex;align-items:center;justify-content:center;height:32px;border:none}.btn-primary[data-v-38501121]{background-color:var(--k-color-primary, #2383e2);color:#fff}.btn-primary[data-v-38501121]:hover{background-color:var(--k-color-primary-shade, #1a6cb8)}.btn-secondary[data-v-38501121]{background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #37352f);border:1px solid var(--k-color-border, rgba(55, 53, 47, .16))}.btn-secondary[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.btn-danger[data-v-38501121]{background-color:var(--k-color-danger, #eb5757);color:#fff}.btn-danger[data-v-38501121]:hover{background-color:var(--k-color-danger-shade, #d44c4c)}.w-full[data-v-38501121]{width:100%}.mt-2[data-v-38501121]{margin-top:8px}.mt-3[data-v-38501121]{margin-top:12px}.mt-4[data-v-38501121]{margin-top:16px}.empty-placeholder-card[data-v-38501121]{padding:60px 20px;text-align:center;border:1px dashed var(--k-color-border, rgba(55, 53, 47, .2));border-radius:8px;background-color:var(--k-bg-panel, rgba(55, 53, 47, .01))}.empty-icon[data-v-38501121]{font-size:2.5rem;margin-bottom:12px}.empty-placeholder-card h3[data-v-38501121]{font-size:.95rem;margin:0 0 6px;font-weight:600}.empty-placeholder-card p[data-v-38501121]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.empty-gallery[data-v-38501121]{padding:36px;text-align:center;color:var(--k-text-muted, rgba(55, 53, 47, .4));background-color:var(--k-bg-panel, #f7f7f5);border-radius:6px;font-size:.78rem}.move-dropdown-container[data-v-38501121]{position:relative}.move-dropdown-menu[data-v-38501121]{position:absolute;top:100%;left:0;margin-top:4px;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:6px;z-index:100;min-width:120px;width:max-content;box-sizing:border-box}.dropdown-item[data-v-38501121]{border:none;background:transparent;width:100%;text-align:left;padding:4px 6px;font-size:.68rem;cursor:pointer;color:var(--k-text-normal, #37352f)}.dropdown-item[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.pagination-container[data-v-38501121]{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px;padding-top:12px;border-top:1px solid var(--k-color-border, rgba(55, 53, 47, .06))}.page-indicator[data-v-38501121]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .6))}.page-btn[data-v-38501121]{height:28px;padding:0 10px;font-size:.75rem}.links-list-container[data-v-38501121]{border:1px solid var(--k-color-border, rgba(55, 53, 47, .09));border-radius:6px;overflow:hidden}.link-item-row[data-v-38501121]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .06));background-color:var(--k-bg-card, #ffffff)}.link-item-row[data-v-38501121]:last-child{border-bottom:none}.link-item-row[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .015))}.link-url-wrapper[data-v-38501121]{display:flex;align-items:center;gap:8px;flex:1;min-width:0;margin-right:16px}.bullet[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-weight:700}.link-url-text[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .65));font-family:SFMono-Regular,Consolas,monospace;font-size:.75rem;cursor:pointer}.link-url-text[data-v-38501121]:hover{color:var(--k-color-primary, #2383e2);text-decoration:underline}.link-actions[data-v-38501121]{display:flex;gap:6px}.staging-router-view[data-v-38501121]{display:flex;flex-direction:column;gap:16px}.staging-page-header[data-v-38501121]{margin-bottom:4px}.staging-header-actions[data-v-38501121]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.similar-staging-view[data-v-38501121]{display:flex;flex-direction:column;gap:16px}.similar-message[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.78rem;font-weight:650}.similar-group[data-v-38501121]{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:1px solid var(--k-color-border, rgba(15, 23, 42, .08))}.similar-group[data-v-38501121]:first-of-type{padding-top:0;border-top:none}.similar-group-header[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:12px}.similar-group-header h3[data-v-38501121]{margin:0;color:var(--k-text-normal, #111827);font-size:.96rem;font-weight:750}.similar-group-header p[data-v-38501121]{margin:4px 0 0;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.74rem}.staging-toolbar[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--k-color-border, rgba(15, 23, 42, .06));border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .06))}.staging-search-box[data-v-38501121]{max-width:420px}.staging-count-pill[data-v-38501121]{height:28px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;background-color:var(--k-bg-panel, rgba(15, 23, 42, .05));color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.76rem;font-weight:650;white-space:nowrap}.staging-empty-card[data-v-38501121]{margin-top:8px}.staging-grid[data-v-38501121]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.staging-card[data-v-38501121]{position:relative;min-width:0;overflow:hidden;border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:8px;background-color:var(--k-bg-card, #ffffff);box-shadow:none}.staging-card-selected[data-v-38501121]{border-color:var(--k-color-primary, #2383e2);box-shadow:0 0 0 2px var(--memesluna-focus-ring)}.staging-select-toggle[data-v-38501121]{position:absolute;top:8px;left:8px;z-index:5;width:24px;height:24px;border-radius:6px;border:2px solid rgba(255,255,255,.8);background-color:#ffffffd9;color:var(--k-color-primary, #2383e2);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background-color .15s ease}.staging-select-toggle[data-v-38501121]:hover{background-color:#fffffff2}.staging-select-toggle svg[data-v-38501121]{width:14px;height:14px}.staging-batch-toolbar[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin-bottom:14px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:8px;background-color:var(--memesluna-floating-action-bg, rgba(255, 255, 255, .92))}.staging-image-shell[data-v-38501121]{width:100%;aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;padding:0;border:none;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08));background-color:#fff;cursor:pointer}.staging-image[data-v-38501121]{width:100%;height:100%;object-fit:contain;display:block}.staging-card-body[data-v-38501121]{padding:12px;display:flex;flex-direction:column;gap:10px}.staging-title-row[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.staging-title[data-v-38501121]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--k-text-normal, #111827);font-size:.86rem;font-weight:700}.staging-ext-tag[data-v-38501121]{flex:0 0 auto;padding:1px 5px;border-radius:4px;background-color:var(--k-bg-panel, #f1f5f9);color:var(--k-text-muted, #64748b);border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.staging-meta-grid[data-v-38501121]{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.72rem;line-height:1.35}.staging-meta-grid span[data-v-38501121]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staging-select[data-v-38501121]{width:100%;height:34px}.staging-actions[data-v-38501121]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.staging-action-btn[data-v-38501121]{min-width:0;width:100%;white-space:nowrap}.page-section-header[data-v-38501121]{align-items:center;justify-content:space-between;gap:16px;margin-top:0;margin-bottom:14px}.page-section-header>div[data-v-38501121]{min-width:0}.page-section-header .notion-main-title[data-v-38501121]{margin:0;font-size:1.78rem;line-height:1.18;font-weight:700;color:var(--k-text-normal, #37352f)}.page-section-header .btn-notion[data-v-38501121]{align-self:center}.section-desc.compact[data-v-38501121]{margin:8px 0 0;max-width:620px;line-height:1.45}.endpoint-layout[data-v-38501121]{display:flex;flex-direction:column;gap:16px}.notion-form-panel[data-v-38501121]{padding:12px 0}.endpoint-editor-panel[data-v-38501121]{padding:14px;border:1px solid var(--k-color-border, rgba(55, 53, 47, .08));border-radius:6px;background-color:var(--k-bg-card, #ffffff)}.panel-title-row[data-v-38501121],.table-title-row[data-v-38501121]{display:flex;align-items:center;justify-content:space-between;gap:12px}.notion-panel-title[data-v-38501121]{font-size:1rem;font-weight:600;margin-top:0;margin-bottom:16px;color:var(--k-text-normal, #37352f)}.panel-title-row .notion-panel-title[data-v-38501121],.table-title-row .notion-panel-title[data-v-38501121]{margin-bottom:0}.table-count[data-v-38501121]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.form-fields[data-v-38501121]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-38501121]{display:flex;flex-direction:column}.endpoint-form-grid[data-v-38501121]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.span-2[data-v-38501121]{grid-column:1 / -1}.form-group label[data-v-38501121]{font-size:.75rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .65));margin-bottom:4px}.form-row[data-v-38501121]{display:flex;gap:10px}.form-actions[data-v-38501121]{display:flex;gap:8px;margin-top:8px}.flex-grow[data-v-38501121]{flex:1}.endpoint-preview[data-v-38501121]{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:4px;background-color:var(--k-bg-panel, rgba(55, 53, 47, .04))}.endpoint-preview span[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .5));font-size:.72rem;font-weight:600;flex-shrink:0}.endpoint-preview code[data-v-38501121]{color:var(--k-color-primary, #2383e2);font-family:SFMono-Regular,Consolas,monospace;font-size:.74rem;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notion-table-panel[data-v-38501121]{padding:12px 0}.table-title-row[data-v-38501121]{margin-bottom:8px}.table-container[data-v-38501121]{overflow-x:auto;border:1px solid var(--k-color-border, rgba(55, 53, 47, .08));border-radius:6px;background-color:var(--k-bg-card, #ffffff)}.flat-table[data-v-38501121]{width:100%;border-collapse:collapse;font-size:.78rem}.flat-table th[data-v-38501121]{padding:8px 12px;background-color:var(--k-bg-panel, #f7f7f5);border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08));color:var(--k-text-muted, rgba(55, 53, 47, .55));font-weight:600;font-size:.72rem;text-transform:uppercase;text-align:left}.flat-table td[data-v-38501121]{padding:10px 12px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .05));text-align:left}.flat-table tr:last-child td[data-v-38501121]{border-bottom:none}.empty-cell[data-v-38501121]{text-align:center;padding:40px!important;color:var(--k-text-muted, rgba(55, 53, 47, .35))}.endpoint-name[data-v-38501121]{font-weight:600}.group-badge[data-v-38501121]{display:inline-block;background-color:var(--k-bg-panel, rgba(55, 53, 47, .06));color:var(--k-text-muted, rgba(55, 53, 47, .6));padding:1px 6px;border-radius:3px;font-size:.65rem;font-weight:500;margin-top:4px}.cell-desc[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .55));max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.method-tag[data-v-38501121]{font-size:.65rem;font-weight:600;padding:1px 5px;border-radius:3px;text-transform:uppercase;margin-right:6px}.method-tag.redirect[data-v-38501121]{background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2383e2)}.link-text[data-v-38501121]{font-weight:500;color:var(--k-color-primary, #2383e2);cursor:pointer}.link-text[data-v-38501121]:hover{text-decoration:underline}.target-url[data-v-38501121]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .4));max-width:300px;margin-top:2px}.url-line[data-v-38501121]{display:flex;align-items:center;gap:4px}.font-mono[data-v-38501121]{font-family:SFMono-Regular,Consolas,monospace}.truncate[data-v-38501121]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-buttons[data-v-38501121]{display:flex;justify-content:flex-end;gap:4px}.icon-btn[data-v-38501121]{background:transparent;border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:4px;padding:3px;cursor:pointer;color:var(--k-text-muted, rgba(55, 53, 47, .55));display:inline-flex}.icon-btn svg[data-v-38501121]{width:12px;height:12px}.icon-btn.hover-bg[data-v-38501121]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.icon-btn.hover-danger[data-v-38501121]:hover{background-color:var(--memesluna-danger-soft-bg);border-color:var(--memesluna-danger-border);color:var(--k-color-danger, #eb5757)}.icon-btn-inline[data-v-38501121]{background:transparent;border:none;cursor:pointer;color:var(--k-text-muted, rgba(55, 53, 47, .35));display:inline-flex;padding:0;vertical-align:middle}.icon-btn-inline[data-v-38501121]:hover{color:var(--k-color-primary, #2383e2)}.icon-btn-inline svg[data-v-38501121]{width:10px;height:10px}.settings-preview-panel[data-v-38501121]{width:100%;max-width:none;margin:0 auto}.preview-page-header[data-v-38501121]{margin-bottom:12px}.preview-dashboard-grid[data-v-38501121]{display:grid;grid-template-columns:minmax(560px,1fr) minmax(420px,.9fr);gap:22px;align-items:start}.preview-card[data-v-38501121]{min-width:0;border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:14px;background-color:var(--k-bg-card, #ffffff);box-shadow:0 10px 32px #0f172a0f;overflow:hidden}.preview-card-header[data-v-38501121]{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:18px 20px 16px;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08))}.preview-card-title[data-v-38501121]{color:var(--k-text-normal, #111827);font-size:1rem;line-height:1.25;font-weight:760}.preview-card-desc[data-v-38501121]{margin-top:5px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.76rem;line-height:1.45}.preview-action-btn[data-v-38501121]{height:32px;padding:0 11px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:8px;background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #111827);font-size:.76rem;font-weight:650;cursor:pointer;white-space:nowrap}.preview-action-btn[data-v-38501121]:hover:not(:disabled){background-color:var(--k-bg-panel, #f8fafc)}.preview-action-btn[data-v-38501121]:disabled{opacity:.45;cursor:not-allowed}.preview-table-wrap[data-v-38501121]{overflow-x:auto}.preview-route-table[data-v-38501121]{width:100%;border-collapse:collapse;table-layout:fixed}.preview-route-table th[data-v-38501121],.preview-route-table td[data-v-38501121]{padding:12px 14px;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .06));text-align:left;vertical-align:middle}.preview-route-table th[data-v-38501121]{background-color:var(--k-bg-panel, #f8fafc);color:var(--k-text-muted, rgba(55, 53, 47, .54));font-size:.7rem;font-weight:740}.preview-route-table tr:last-child td[data-v-38501121]{border-bottom:none}.preview-route-table th[data-v-38501121]:nth-child(1),.preview-route-table td[data-v-38501121]:nth-child(1){width:86px}.preview-route-table th[data-v-38501121]:nth-child(2),.preview-route-table td[data-v-38501121]:nth-child(2){width:130px}.preview-route-table th[data-v-38501121]:nth-child(4),.preview-route-table td[data-v-38501121]:nth-child(4){width:186px}.preview-route-table th[data-v-38501121]:nth-child(5),.preview-route-table td[data-v-38501121]:nth-child(5){width:64px;text-align:center}.preview-mini-cover[data-v-38501121]{width:58px;height:42px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;overflow:hidden;border-radius:8px;background-color:var(--k-color-border, rgba(15, 23, 42, .08))}.preview-mini-cover.single[data-v-38501121]{display:block}.preview-mini-cover img[data-v-38501121]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.preview-route-icon[data-v-38501121]{width:58px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:var(--memesluna-primary-faint-bg);color:var(--k-color-primary, #2383e2);font-size:.7rem;font-weight:760}.preview-route-icon.endpoint[data-v-38501121]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-name[data-v-38501121]{min-width:0;color:var(--k-text-normal, #111827);font-size:.84rem;font-weight:730;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-route-type[data-v-38501121]{display:inline-flex;align-items:center;margin-top:5px;padding:2px 6px;border-radius:999px;background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2383e2);font-size:.66rem;font-weight:700}.preview-route-type.endpoint[data-v-38501121]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-desc[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .64));font-size:.78rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;line-height:1.45;max-height:4.35em}.preview-route-path[data-v-38501121]{display:block;max-width:100%;padding:6px 8px;border-radius:7px;background-color:var(--memesluna-primary-faint-bg);color:var(--k-color-primary, #2383e2);font-family:SFMono-Regular,Consolas,monospace;font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.preview-row-actions[data-v-38501121]{display:flex;align-items:center;justify-content:center}.preview-empty-state[data-v-38501121]{padding:64px 20px;color:var(--k-text-muted, rgba(55, 53, 47, .48));text-align:center;font-size:.82rem}.preview-prompt-container[data-v-38501121]{display:flex;flex-direction:column;gap:12px}.preview-sub-title[data-v-38501121]{font-size:.72rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .45));text-transform:uppercase}.preview-sub-desc[data-v-38501121]{margin-top:2px;font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .45))}.preview-block-header[data-v-38501121]{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.preview-code-block[data-v-38501121]{background-color:var(--k-bg-panel, #faf9f6);border:1px solid var(--k-color-border, rgba(55, 53, 47, .08));border-radius:6px;padding:12px;max-height:150px;overflow-y:auto}.preview-code-block pre[data-v-38501121]{margin:0;font-family:SFMono-Regular,Consolas,monospace;font-size:.72rem;white-space:pre-wrap;word-break:break-all;color:var(--k-text-normal, #27272a)}.preview-code-block.final-prompt[data-v-38501121]{max-height:620px;background-color:var(--memesluna-final-prompt-bg);border-color:var(--memesluna-primary-soft-bg)}.preview-code-block.polished[data-v-38501121]{margin:16px;border-radius:12px;background:var(--memesluna-code-bg);border-color:var(--memesluna-code-border);box-shadow:none}.preview-code-block.final-prompt pre[data-v-38501121]{color:var(--memesluna-code-text);font-size:.76rem;line-height:1.7}.text-gray-muted[data-v-38501121]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-style:italic}.toast-banner[data-v-38501121]{position:fixed;top:24px;right:24px;z-index:10000;display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:6px;font-size:.78rem;font-weight:500;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));box-shadow:var(--memesluna-card-shadow);color:var(--k-text-normal, #37352f)}.toast-banner.success[data-v-38501121]{background-color:var(--memesluna-toast-success-bg);border-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.toast-banner.error[data-v-38501121]{background-color:var(--memesluna-toast-error-bg);border-color:var(--memesluna-danger-border);color:var(--k-color-danger, #eb5757)}.toast-icon[data-v-38501121]{width:14px;height:14px;flex-shrink:0}.loading-container[data-v-38501121]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0}.spinner[data-v-38501121]{width:20px;height:20px;border:2px solid var(--k-color-border, rgba(55, 53, 47, .08));border-top-color:var(--k-text-normal, rgba(55, 53, 47, .6));border-radius:50%;animation:spin-38501121 .8s linear infinite;margin-bottom:12px}@keyframes spin-38501121{to{transform:rotate(360deg)}}.loading-container p[data-v-38501121]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.fade-enter-active[data-v-38501121],.fade-leave-active[data-v-38501121]{transition:opacity .15s ease,transform .15s ease}.fade-enter-from[data-v-38501121],.fade-leave-to[data-v-38501121]{opacity:0;transform:translateY(-8px)}@media (max-width: 1280px){.notion-content[data-v-38501121]{padding:64px 80px 96px}.preview-dashboard-grid[data-v-38501121]{grid-template-columns:1fr}.staging-grid[data-v-38501121]{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}@media (max-width: 780px){.memesluna-app-layout[data-v-38501121]{padding-left:0}.notion-content[data-v-38501121]{padding:18px 16px}.content-breadcrumb-header[data-v-38501121],.notion-db-header[data-v-38501121],.page-section-header[data-v-38501121],.notion-page-header[data-v-38501121],.gallery-bulk-toolbar[data-v-38501121]{align-items:stretch;flex-direction:column}.notion-db-actions[data-v-38501121],.bulk-actions[data-v-38501121],.form-actions[data-v-38501121],.staging-header-actions[data-v-38501121],.collection-name-input-notion[data-v-38501121],.notion-db-actions .btn[data-v-38501121],.form-actions .btn[data-v-38501121]{width:100%}.endpoint-form-grid[data-v-38501121]{grid-template-columns:1fr}.span-2[data-v-38501121]{grid-column:auto}.folders-grid[data-v-38501121]{grid-template-columns:1fr}.notion-gallery-grid[data-v-38501121]{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.preview-block-header[data-v-38501121],.preview-card-header[data-v-38501121]{align-items:stretch;flex-direction:column}.preview-action-btn[data-v-38501121]{width:100%}.staging-toolbar[data-v-38501121]{align-items:stretch;flex-direction:column}.staging-search-box[data-v-38501121]{max-width:none;width:100%}.preview-route-table[data-v-38501121]{min-width:720px}}.view-toggle-pill[data-v-38501121]{display:inline-flex;background:#37352f0f;border-radius:6px;padding:2px;margin-right:8px}.pill-btn[data-v-38501121]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:.78rem;font-weight:500;border:none;border-radius:4px;cursor:pointer;background:transparent;color:#37352f66;transition:all .15s ease}.pill-btn[data-v-38501121]:hover{color:#37352fa6;background:#37352f0a}.pill-btn.active[data-v-38501121]{background:#fff;color:#37352f;box-shadow:0 1px 3px #00000014}.tag-view-section[data-v-38501121]{margin-top:8px}.tag-detail-view[data-v-38501121]{padding:0}.tag-images-grid[data-v-38501121]{margin-top:16px}.gallery-card-footer[data-v-38501121]{padding:8px 10px;font-size:.75rem}.gallery-card-collection[data-v-38501121]{font-weight:500;color:var(--k-text-normal, #37352f);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-card-tags[data-v-38501121]{display:flex;flex-wrap:wrap;gap:3px}.mini-tag[data-v-38501121]{display:inline-block;font-size:.65rem;padding:1px 5px;border-radius:3px;background:#37352f0f;color:#37352f8c;cursor:pointer;transition:all .1s ease;white-space:nowrap}.mini-tag[data-v-38501121]:hover{background:#37352f1a;color:#37352fcc}.mini-tag.active-tag[data-v-38501121]{background:#2383e21f;color:#2383e2;font-weight:500}.tag-editor-overlay[data-v-38501121]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:1000;display:flex;align-items:center;justify-content:center}.tag-editor-dialog[data-v-38501121]{background:#fff;border-radius:10px;box-shadow:0 8px 30px #00000026;width:420px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.tag-editor-header[data-v-38501121]{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px 12px;border-bottom:1px solid rgba(55,53,47,.08)}.tag-editor-title[data-v-38501121]{font-size:1rem;font-weight:600;color:#37352f}.tag-editor-subtitle[data-v-38501121]{font-size:.75rem;color:#37352f66;margin-top:2px;word-break:break-all}.tag-editor-body[data-v-38501121]{padding:16px 20px 20px;overflow-y:auto}.tag-editor-list[data-v-38501121]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;min-height:32px}.tag-editor-tag[data-v-38501121]{display:inline-flex;align-items:center;gap:4px;font-size:.78rem;padding:3px 8px;border-radius:4px;background:#2383e21a;color:#2383e2}.tag-remove-btn[data-v-38501121]{background:none;border:none;font-size:1rem;color:inherit;cursor:pointer;opacity:.5;padding:0 2px;line-height:1}.tag-remove-btn[data-v-38501121]:hover{opacity:1}.tag-editor-empty[data-v-38501121]{font-size:.78rem;color:#37352f4d}.tag-editor-input-row[data-v-38501121]{display:flex;gap:8px}.tag-editor-input[data-v-38501121]{flex:1}@media (max-width: 1180px){.asset-hero-panel[data-v-38501121]{grid-template-columns:1fr}}@media (max-width: 980px){.detail-topbar[data-v-38501121],.asset-gallery-toolbar[data-v-38501121]{align-items:stretch;flex-direction:column}.detail-top-actions[data-v-38501121],.asset-filter-bar[data-v-38501121]{justify-content:flex-start}.asset-filter-bar[data-v-38501121]{flex-wrap:wrap}.asset-search-box[data-v-38501121]{max-width:none;width:100%}}@media (max-width: 640px){.asset-hero-panel[data-v-38501121]{padding:14px;border-radius:14px}.asset-identity-card[data-v-38501121]{align-items:flex-start}.asset-avatar-frame[data-v-38501121]{width:72px;height:72px;flex-basis:72px;border-radius:14px}.asset-title-row h1[data-v-38501121]{font-size:1.35rem}.asset-api-row[data-v-38501121]{grid-template-columns:1fr}.asset-tabs[data-v-38501121],.detail-top-actions[data-v-38501121]{width:100%}.asset-btn[data-v-38501121]{flex:1}.notion-gallery-grid[data-v-38501121]{grid-template-columns:repeat(auto-fill,minmax(138px,1fr))}.staging-grid[data-v-38501121],.staging-actions[data-v-38501121]{grid-template-columns:1fr}}
1
+ @keyframes spin-1b9d911f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-1b9d911f]{animation:spin-1b9d911f 1s linear infinite;display:inline-block}.memesluna-app-layout[data-v-1b9d911f]{min-height:100vh;padding-left:64px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Segoe UI Emoji","Apple Color Emoji";background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #37352f);box-sizing:border-box;color-scheme:light;--k-bg-card: var(--k-card-bg, #ffffff);--k-bg-panel: var(--k-hover-bg, #f7f7f5);--k-bg-button-hover: var(--k-hover-bg, rgba(55, 53, 47, .04));--k-text-muted: var(--k-text-light, rgba(55, 53, 47, .55));--memesluna-drop-overlay-bg: rgba(255, 255, 255, .85);--memesluna-floating-action-bg: rgba(255, 255, 255, .92);--memesluna-floating-shadow: none;--memesluna-focus-ring: rgba(35, 131, 226, .15);--memesluna-primary-soft-bg: rgba(35, 131, 226, .1);--memesluna-primary-faint-bg: rgba(35, 131, 226, .04);--memesluna-success-soft-bg: rgba(43, 138, 92, .1);--memesluna-danger-soft-bg: rgba(235, 87, 87, .08);--memesluna-danger-border: rgba(235, 87, 87, .25);--memesluna-toast-success-bg: #f2f9f5;--memesluna-toast-error-bg: #fdf2f2;--memesluna-final-prompt-bg: rgba(35, 131, 226, .02);--memesluna-final-prompt-text: #1e3a8a;--memesluna-code-bg: #ffffff;--memesluna-code-text: #111827;--memesluna-code-border: rgba(15, 23, 42, .09);--memesluna-soft-shadow: none;--memesluna-card-shadow: none;--memesluna-popover-shadow: none}html.dark .memesluna-app-layout,.theme-root.dark .memesluna-app-layout{color-scheme:dark;--k-bg-card: var(--k-card-bg, #252529);--k-bg-panel: var(--k-hover-bg, #303036);--k-bg-button-hover: var(--k-hover-bg, rgba(255, 255, 255, .06));--k-text-muted: var(--k-text-light, rgba(235, 235, 245, .62));--memesluna-drop-overlay-bg: rgba(20, 20, 24, .82);--memesluna-floating-action-bg: rgba(42, 42, 48, .94);--memesluna-floating-shadow: none;--memesluna-focus-ring: rgba(64, 158, 255, .24);--memesluna-primary-soft-bg: rgba(64, 158, 255, .16);--memesluna-primary-faint-bg: rgba(64, 158, 255, .1);--memesluna-success-soft-bg: rgba(103, 194, 58, .16);--memesluna-danger-soft-bg: rgba(235, 87, 87, .16);--memesluna-danger-border: rgba(235, 87, 87, .34);--memesluna-toast-success-bg: rgba(43, 138, 92, .16);--memesluna-toast-error-bg: rgba(235, 87, 87, .16);--memesluna-final-prompt-bg: rgba(64, 158, 255, .12);--memesluna-final-prompt-text: var(--k-color-primary-tint, #8ab4f8);--memesluna-code-bg: #000000;--memesluna-code-text: #f8fafc;--memesluna-code-border: rgba(255, 255, 255, .14);--memesluna-soft-shadow: none;--memesluna-card-shadow: none;--memesluna-popover-shadow: none}.notion-content[data-v-1b9d911f]{padding:80px 112px 112px;box-sizing:border-box;max-width:1880px;margin:0 auto}.content-breadcrumb-header[data-v-1b9d911f]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08))}.breadcrumbs[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.crumb-root[data-v-1b9d911f]{font-weight:500}.crumb-parent[data-v-1b9d911f]{color:var(--k-text-normal, #37352f);font-weight:500}.crumb-child.active[data-v-1b9d911f]{color:var(--k-color-primary, #2383e2);font-weight:600}.crumb-separator[data-v-1b9d911f]{color:var(--k-color-border, rgba(55, 53, 47, .25))}.header-quick-stats[data-v-1b9d911f]{display:flex;gap:8px}.stat-bubble[data-v-1b9d911f]{font-size:.72rem;font-weight:500;background-color:var(--k-bg-panel, rgba(55, 53, 47, .05));color:var(--k-text-muted, rgba(55, 53, 47, .65));padding:2px 8px;border-radius:4px}.notion-view-switcher[data-v-1b9d911f]{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08));margin-bottom:24px;padding-bottom:2px}.switcher-btn[data-v-1b9d911f]{background:transparent;border:none;padding:6px 16px;font-size:.85rem;font-weight:500;color:var(--k-text-muted-light, rgba(55, 53, 47, .3));cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .1s ease,color .1s ease;border-bottom:2px solid transparent;border-radius:4px 4px 0 0;margin-bottom:-1px}.switcher-btn[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.switcher-btn.active[data-v-1b9d911f]{color:var(--k-text-normal, #37352f);border-bottom:2px solid var(--k-text-normal, #37352f);font-weight:600;border-radius:0}.switcher-icon[data-v-1b9d911f]{font-size:.95rem}.notion-db-header[data-v-1b9d911f]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;margin-bottom:12px}.collection-list-header[data-v-1b9d911f]{gap:20px;justify-content:flex-end}.collection-title-group[data-v-1b9d911f]{display:flex;align-items:center;gap:22px;min-width:0}.notion-db-title[data-v-1b9d911f]{font-size:1.24rem;font-weight:700;margin:0;color:var(--k-text-normal, #37352f);white-space:nowrap}.collection-total-count[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.82rem;white-space:nowrap}.notion-db-actions[data-v-1b9d911f]{display:flex;align-items:center;gap:8px}.collection-toolbar[data-v-1b9d911f]{flex-wrap:nowrap;justify-content:flex-end}.collection-search-shell[data-v-1b9d911f],.collection-filter-shell[data-v-1b9d911f]{position:relative;display:inline-flex;align-items:center;color:var(--k-text-muted, rgba(55, 53, 47, .52))}.collection-toolbar-icon[data-v-1b9d911f]{position:absolute;right:11px;width:15px;height:15px;pointer-events:none;color:currentColor;z-index:1}.collection-search-shell .collection-search-input[data-v-1b9d911f]{width:280px;height:36px;padding-left:12px;padding-right:36px;border-radius:6px;font-size:.82rem;background-color:var(--k-bg-card, #ffffff)}.collection-filter-shell .collection-filter-select[data-v-1b9d911f]{width:128px;height:36px;padding-left:12px;padding-right:36px;border-radius:6px;font-size:.82rem;background-color:var(--k-bg-card, #ffffff);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.collection-name-input-notion[data-v-1b9d911f]{width:200px;height:28px;font-size:.78rem}.btn-notion[data-v-1b9d911f]{height:36px;padding:0 14px;gap:6px;border-radius:6px;font-size:.84rem;font-weight:600;white-space:nowrap}.btn-plus[data-v-1b9d911f]{font-size:1rem;line-height:1}.notion-hr[data-v-1b9d911f]{border:none;border-top:1px solid var(--k-color-border, rgba(55, 53, 47, .09));margin:8px 0 20px}.folders-grid[data-v-1b9d911f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px 24px}.folder-card[data-v-1b9d911f]{background:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:8px;overflow:hidden;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;min-width:0;box-shadow:0 2px 8px #0f172a0d}.folder-card-active-menu[data-v-1b9d911f]{overflow:visible!important;z-index:60!important}.folder-card[data-v-1b9d911f]:hover{border-color:#2383e247;box-shadow:0 8px 24px #0f172a14;transform:translateY(-1px)}.folder-cover[data-v-1b9d911f]{position:relative;aspect-ratio:2.18 / 1;min-height:132px;background-color:var(--k-bg-panel, #f7f7f5);border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08));display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden}.folder-cover.has-preview[data-v-1b9d911f]{background-color:var(--k-color-border, rgba(15, 23, 42, .08))}.folder-cover.empty[data-v-1b9d911f]{display:flex;align-items:center;justify-content:center;color:var(--k-text-muted, rgba(55, 53, 47, .4))}.folder-card:hover .folder-cover.empty[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .55));background-color:var(--k-bg-button-hover, #f1f1ef)}.folder-cover-empty svg[data-v-1b9d911f]{width:32px;height:32px}.folder-cover-img[data-v-1b9d911f]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.folder-cover-badge[data-v-1b9d911f]{position:absolute;right:8px;bottom:8px;padding:1px 6px;border-radius:3px;background-color:var(--memesluna-floating-action-bg);box-shadow:var(--memesluna-floating-shadow);color:var(--k-text-muted, rgba(55, 53, 47, .6));font-size:.65rem;font-weight:500}.folder-body[data-v-1b9d911f]{padding:13px 16px 14px;display:flex;flex-direction:column;box-sizing:border-box}.tag-card-body[data-v-1b9d911f]{padding:10px 14px 12px}.folder-cover.tag-cover-single[data-v-1b9d911f]{display:block;position:relative}.folder-cover.tag-cover-single .tag-cover-single-img[data-v-1b9d911f]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.folder-cover.tag-cover-grid[data-v-1b9d911f]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:1px}.tag-synonym-names[data-v-1b9d911f]{display:flex;flex-wrap:wrap;gap:4px;min-width:0}.tag-synonym-chip[data-v-1b9d911f]{display:inline-block;padding:1px 7px;border-radius:4px;font-size:.82rem;font-weight:600;line-height:1.7;white-space:nowrap}.tag-color-0[data-v-1b9d911f]{background:#34a8531f;color:#1a7a3c}.tag-color-1[data-v-1b9d911f]{background:#4285f41f;color:#1a56c4}.tag-color-2[data-v-1b9d911f]{background:#fbbc0524;color:#8a6000}.tag-color-3[data-v-1b9d911f]{background:#ea43351f;color:#b92a1a}.tag-color-4[data-v-1b9d911f]{background:#9932cc1f;color:#7218a0}.tag-color-5[data-v-1b9d911f]{background:#00bcd41f;color:#007a8a}.tag-color-6[data-v-1b9d911f]{background:#ff6f001f;color:#b84c00}.tag-color-7[data-v-1b9d911f]{background:#2196f31a;color:#0d6dbd}@media (prefers-color-scheme: dark){.tag-color-0[data-v-1b9d911f]{background:#34a8532e;color:#6bcf8a}.tag-color-1[data-v-1b9d911f]{background:#4285f42e;color:#7ab3ff}.tag-color-2[data-v-1b9d911f]{background:#fbbc052e;color:#f5c842}.tag-color-3[data-v-1b9d911f]{background:#ea43352e;color:#ff7a6e}.tag-color-4[data-v-1b9d911f]{background:#9932cc2e;color:#c580e8}.tag-color-5[data-v-1b9d911f]{background:#00bcd42e;color:#5ddff5}.tag-color-6[data-v-1b9d911f]{background:#ff6f002e;color:#ffa050}.tag-color-7[data-v-1b9d911f]{background:#2196f32e;color:#6bbaff}}.folder-title-row[data-v-1b9d911f]{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}.folder-name[data-v-1b9d911f]{min-width:0;font-size:.96rem;font-weight:700;color:var(--k-text-normal, #37352f);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-more-btn[data-v-1b9d911f]{width:26px;height:26px;border:none;border-radius:5px;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .56));display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex-shrink:0}.folder-more-btn[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .06));color:var(--k-text-normal, #37352f)}.folder-more-btn svg[data-v-1b9d911f]{width:17px;height:17px}.folder-action-menu[data-v-1b9d911f]{position:absolute;right:0;top:30px;min-width:112px;padding:5px;border-radius:6px;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(15, 23, 42, .12));box-shadow:0 10px 28px #0f172a24;z-index:20}.folder-action-menu button[data-v-1b9d911f]{width:100%;height:28px;padding:0 9px;border:none;border-radius:4px;background:transparent;color:var(--k-text-normal, #37352f);text-align:left;font:inherit;font-size:.78rem;cursor:pointer}.folder-action-menu button[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .06))}.folder-action-menu button.danger[data-v-1b9d911f]{color:var(--k-color-danger, #eb5757)}.folder-info-row[data-v-1b9d911f]{display:flex;justify-content:space-between;align-items:center;margin-top:9px;gap:8px}.folder-count[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .62));font-size:.86rem;line-height:1.4;white-space:nowrap}.folder-meta-row[data-v-1b9d911f]{display:flex;align-items:center;min-width:0}.folder-meta-item[data-v-1b9d911f]{min-width:0;display:inline-flex;align-items:center;gap:5px;color:var(--k-text-muted, rgba(55, 53, 47, .6));font-size:.8rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.folder-meta-item svg[data-v-1b9d911f]{width:15px;height:15px;flex-shrink:0}.collection-detail-layout[data-v-1b9d911f]{margin-top:4px}.asset-detail-shell[data-v-1b9d911f]{display:flex;flex-direction:column;gap:14px}.detail-topbar[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:8px}.detail-breadcrumbs[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;min-width:0;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.82rem}.detail-back-btn[data-v-1b9d911f]{border:none;background:transparent;color:inherit;display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border-radius:8px;cursor:pointer;font:inherit}.detail-back-btn[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05));color:var(--k-text-normal, #111827)}.detail-back-btn svg[data-v-1b9d911f],.asset-btn svg[data-v-1b9d911f],.asset-icon-btn svg[data-v-1b9d911f],.asset-test-btn svg[data-v-1b9d911f],.asset-view-toggle svg[data-v-1b9d911f]{width:16px;height:16px;flex:0 0 16px}.detail-separator[data-v-1b9d911f]{color:var(--k-color-border, rgba(55, 53, 47, .3))}.detail-crumb-current[data-v-1b9d911f],.detail-crumb-strong[data-v-1b9d911f]{color:var(--k-text-normal, #111827);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-top-actions[data-v-1b9d911f]{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.asset-btn[data-v-1b9d911f],.asset-icon-btn[data-v-1b9d911f],.asset-test-btn[data-v-1b9d911f]{border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #111827);border-radius:12px;min-height:36px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:.8rem;font-weight:650;cursor:pointer;box-shadow:none;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.asset-btn[data-v-1b9d911f]:hover,.asset-icon-btn[data-v-1b9d911f]:hover,.asset-test-btn[data-v-1b9d911f]:hover{background-color:var(--k-bg-panel, #f8fafc)}.asset-btn.primary[data-v-1b9d911f],.asset-test-btn[data-v-1b9d911f]{border-color:transparent;background:#1f6feb;color:#fff;box-shadow:none}.asset-btn.primary[data-v-1b9d911f]:hover,.asset-test-btn[data-v-1b9d911f]:hover{background:#1a5fd0}.asset-btn.secondary[data-v-1b9d911f]{background-color:var(--k-bg-card, #ffffff)}.asset-btn.ghost[data-v-1b9d911f]{width:36px;padding:0}.asset-btn.danger[data-v-1b9d911f]{color:var(--k-color-danger, #eb5757)}.asset-btn.danger[data-v-1b9d911f]:hover{background-color:var(--memesluna-danger-soft-bg);border-color:var(--memesluna-danger-border)}.asset-hero-panel[data-v-1b9d911f]{display:grid;grid-template-columns:minmax(280px,.95fr) minmax(520px,1.55fr);gap:14px;align-items:stretch;padding:18px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));border-radius:16px;background:var(--k-bg-card, #ffffff);box-shadow:var(--memesluna-soft-shadow)}.asset-identity-card[data-v-1b9d911f]{display:flex;align-items:center;gap:16px;min-width:0}.asset-avatar-frame[data-v-1b9d911f]{width:96px;height:96px;border-radius:18px;overflow:hidden;flex:0 0 96px;background:var(--k-bg-panel, #f6f8fb);box-shadow:inset 0 0 0 1px var(--k-color-border, rgba(15, 23, 42, .08))}.asset-avatar-img[data-v-1b9d911f]{width:100%;height:100%;object-fit:cover}.asset-avatar-empty[data-v-1b9d911f]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--k-text-muted, rgba(55, 53, 47, .42))}.asset-avatar-empty svg[data-v-1b9d911f]{width:34px;height:34px}.asset-title-stack[data-v-1b9d911f]{min-width:0;flex:1}.asset-title-row[data-v-1b9d911f]{display:flex;align-items:center;gap:9px}.asset-title-row h1[data-v-1b9d911f]{margin:0;color:var(--k-text-normal, #0f172a);font-size:1.7rem;line-height:1.1;font-weight:760;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-pill[data-v-1b9d911f]{padding:3px 8px;border-radius:999px;background-color:var(--memesluna-danger-soft-bg);color:var(--k-color-danger, #eb5757);font-size:.72rem;font-weight:700}.asset-description-input[data-v-1b9d911f]{margin-top:9px;width:100%;border:none;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .68));font-size:.88rem;line-height:1.4;padding:4px 0;outline:none;font-family:inherit}.asset-description-input[data-v-1b9d911f]:focus{color:var(--k-text-normal, #111827)}.asset-meta-line[data-v-1b9d911f]{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:12px;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.75rem}.asset-api-card[data-v-1b9d911f]{min-width:0;align-self:center;width:100%;box-shadow:none}.asset-card-label[data-v-1b9d911f]{color:var(--k-text-normal, #111827);font-size:.8rem;font-weight:720;margin-bottom:9px}.asset-api-row[data-v-1b9d911f]{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:center}.asset-api-row code[data-v-1b9d911f]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:9px 10px;border-radius:10px;background-color:var(--memesluna-primary-faint-bg);color:var(--k-color-primary, #2563eb);font:.82rem SFMono-Regular,Consolas,monospace;box-shadow:inset 0 0 0 1px #2563eb14}.asset-icon-btn[data-v-1b9d911f]{min-height:34px;padding:0 11px;border-radius:10px;font-size:.76rem}.asset-icon-btn.compact[data-v-1b9d911f]{width:32px;min-height:32px;padding:0}.asset-test-btn[data-v-1b9d911f]:disabled{opacity:.68;cursor:wait}.asset-api-hint[data-v-1b9d911f]{margin-top:10px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.74rem}.api-preview-strip[data-v-1b9d911f]{margin-top:10px;display:flex;align-items:center;gap:9px;color:var(--k-text-muted, rgba(55, 53, 47, .6));font-size:.75rem}.api-preview-strip img[data-v-1b9d911f]{width:42px;height:42px;object-fit:cover;border-radius:10px;box-shadow:none}.asset-import-panel[data-v-1b9d911f]{padding:14px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));border-radius:14px;background-color:var(--k-bg-card, #ffffff);box-shadow:none}.asset-import-header[data-v-1b9d911f]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.asset-import-title[data-v-1b9d911f]{color:var(--k-text-normal, #111827);font-size:.9rem;font-weight:720}.asset-import-desc[data-v-1b9d911f]{margin-top:3px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.75rem}.asset-link-textarea[data-v-1b9d911f]{width:100%;resize:vertical;min-height:92px;box-sizing:border-box;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-panel, #f8fafc);color:var(--k-text-normal, #111827);padding:10px 12px;font:.8rem SFMono-Regular,Consolas,monospace;outline:none}.asset-link-textarea[data-v-1b9d911f]:focus{border-color:var(--k-color-primary, #2563eb);box-shadow:0 0 0 3px var(--memesluna-focus-ring);background-color:var(--k-bg-card, #ffffff)}.asset-import-actions[data-v-1b9d911f]{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.asset-gallery-section[data-v-1b9d911f]{border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));border-radius:16px;background-color:var(--k-bg-card, #ffffff);box-shadow:none;overflow:hidden}.asset-gallery-toolbar[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08))}.asset-tabs[data-v-1b9d911f],.asset-filter-bar[data-v-1b9d911f],.asset-view-toggle[data-v-1b9d911f]{display:flex;align-items:center;gap:6px}.asset-tabs[data-v-1b9d911f]{flex-wrap:wrap}.asset-tab[data-v-1b9d911f]{border:none;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .62));border-radius:999px;padding:7px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:680}.asset-tab[data-v-1b9d911f]:hover,.asset-tab.active[data-v-1b9d911f]{color:var(--k-color-primary, #2563eb);background-color:var(--memesluna-primary-soft-bg)}.asset-tab span[data-v-1b9d911f]{min-width:20px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;border-radius:999px;background-color:var(--k-bg-panel, rgba(15, 23, 42, .06));color:inherit;font-size:.7rem}.asset-filter-bar[data-v-1b9d911f]{flex:1;justify-content:flex-end;min-width:0}.asset-search-box[data-v-1b9d911f]{flex:1;max-width:320px;min-width:180px;height:36px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-card, #ffffff);color:var(--k-text-muted, rgba(55, 53, 47, .5))}.asset-search-box svg[data-v-1b9d911f]{width:16px;height:16px;flex:0 0 16px}.asset-search-box input[data-v-1b9d911f]{min-width:0;flex:1;border:none;background:transparent;color:var(--k-text-normal, #111827);outline:none;font:inherit;font-size:.8rem}.asset-select[data-v-1b9d911f]{height:36px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #111827);padding:0 10px;font-size:.78rem;font-weight:600;outline:none}.asset-view-toggle[data-v-1b9d911f]{padding:3px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:12px;background-color:var(--k-bg-panel, #f8fafc)}.asset-view-toggle button[data-v-1b9d911f]{width:30px;height:28px;border:none;border-radius:9px;background:transparent;color:var(--k-text-muted, rgba(55, 53, 47, .55));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.asset-view-toggle button.active[data-v-1b9d911f]{background-color:var(--k-bg-card, #ffffff);color:var(--k-color-primary, #2563eb)}.notion-page-toolbar[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;margin-bottom:20px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08));padding-bottom:8px}.toolbar-btn[data-v-1b9d911f]{background:transparent;border:none;font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .6));cursor:pointer;display:inline-flex;align-items:center;padding:4px 10px;border-radius:4px;font-weight:500;transition:all .1s ease}.toolbar-btn[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.toolbar-btn.danger[data-v-1b9d911f]{color:var(--k-color-danger, #eb5757)}.toolbar-btn.danger[data-v-1b9d911f]:hover{background-color:var(--memesluna-danger-soft-bg)}.toolbar-divider[data-v-1b9d911f]{width:1px;height:14px;background-color:var(--k-color-border, rgba(55, 53, 47, .12))}.notion-properties-panel[data-v-1b9d911f]{margin-bottom:20px;display:flex;flex-direction:column;gap:6px}.property-row[data-v-1b9d911f]{display:flex;align-items:center;font-size:.82rem}.property-label[data-v-1b9d911f]{width:110px;color:var(--k-text-muted, rgba(55, 53, 47, .45));display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none}.prop-icon[data-v-1b9d911f]{font-size:.95rem}.property-value[data-v-1b9d911f]{flex:1}.property-input-text[data-v-1b9d911f]{border:none;background:transparent;font-size:.82rem;color:var(--k-text-normal, #37352f);width:100%;padding:4px 8px;border-radius:4px;box-sizing:border-box;font-family:inherit;transition:background .1s ease}.property-input-text[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .03))}.property-input-text[data-v-1b9d911f]:focus{background-color:var(--k-bg-card, #ffffff);box-shadow:inset 0 0 0 1px var(--k-color-primary, #2383e2);outline:none}.notion-callout[data-v-1b9d911f]{display:flex;gap:12px;padding:14px 16px;border-radius:4px;background-color:var(--k-bg-panel, rgba(242, 241, 237, .45));border:1px solid var(--k-color-border, rgba(55, 53, 47, .08))}.callout-icon[data-v-1b9d911f]{font-size:1.15rem;-webkit-user-select:none;user-select:none}.callout-content[data-v-1b9d911f]{flex:1;min-width:0}.callout-title[data-v-1b9d911f]{font-weight:600;font-size:.85rem;color:var(--k-text-normal, #37352f);margin-bottom:2px}.callout-desc[data-v-1b9d911f]{font-size:.75rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin-bottom:10px;line-height:1.4}.callout-actions[data-v-1b9d911f]{display:flex;gap:8px}.btn-small[data-v-1b9d911f]{font-size:.75rem;padding:2px 10px;height:24px}.hidden-file-input[data-v-1b9d911f]{display:none}.sidebar-drop-zone-overlay[data-v-1b9d911f]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background-color:var(--memesluna-drop-overlay-bg);display:flex;align-items:center;justify-content:center;padding:40px;box-sizing:border-box}.drop-overlay-box[data-v-1b9d911f]{border:2px dashed var(--k-color-primary, #2383e2);background-color:var(--memesluna-primary-faint-bg);border-radius:8px;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--k-color-primary, #2383e2);font-size:1.1rem;font-weight:500}.drop-overlay-box .drop-icon[data-v-1b9d911f]{width:48px;height:48px;margin-bottom:16px}.gallery-view-switcher[data-v-1b9d911f]{display:flex;gap:16px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .09));padding-bottom:2px}.gallery-tab-btn[data-v-1b9d911f]{background:transparent;border:none;font-size:.82rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));cursor:pointer;padding-bottom:6px;border-bottom:2px solid transparent;font-weight:500;transition:all .1s ease}.gallery-tab-btn[data-v-1b9d911f]:hover{color:var(--k-text-normal, #37352f)}.gallery-tab-btn.active[data-v-1b9d911f]{color:var(--k-text-normal, #37352f);border-bottom-color:var(--k-text-normal, #37352f)}.gallery-tab-content[data-v-1b9d911f]{padding:14px;margin-top:0}.gallery-bulk-toolbar[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 auto 12px;padding:9px 10px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:14px;background-color:var(--memesluna-floating-action-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.gallery-bulk-toolbar.floating[data-v-1b9d911f]{position:sticky;top:8px;z-index:40;max-width:920px}.bulk-status[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;min-width:0}.bulk-title[data-v-1b9d911f]{font-size:.82rem;font-weight:720;color:var(--k-text-normal, #37352f)}.bulk-meta[data-v-1b9d911f]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .55))}.bulk-actions[data-v-1b9d911f],.bulk-move-group[data-v-1b9d911f]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.toolbar-btn.compact[data-v-1b9d911f]{font-size:.74rem;padding:5px 9px;border-radius:10px}.toolbar-btn[data-v-1b9d911f]:disabled{opacity:.45;cursor:not-allowed}.compact-select[data-v-1b9d911f]{height:30px;padding:2px 9px;font-size:.74rem;border-radius:10px}.notion-gallery-grid[data-v-1b9d911f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(174px,1fr));gap:7px}.notion-gallery-card[data-v-1b9d911f]{background:var(--k-bg-card, #fff);border:1px solid var(--k-color-border, rgba(55,53,47,.08));border-radius:8px;position:relative;transition:opacity .15s ease;box-shadow:none;overflow:hidden;display:flex;flex-direction:column}.notion-gallery-card[data-v-1b9d911f]:hover,.notion-gallery-card.selected[data-v-1b9d911f]{box-shadow:none}.notion-gallery-card.selected .gallery-img-container[data-v-1b9d911f]{box-shadow:inset 0 0 0 2px var(--k-color-primary, #2563eb)}.notion-gallery-card.external .gallery-img-container[data-v-1b9d911f]{background-color:var(--k-bg-card, #ffffff)}.gallery-select-toggle[data-v-1b9d911f]{position:absolute;top:9px;left:9px;z-index:12;width:24px;height:24px;border:1px solid rgba(255,255,255,.82);border-radius:999px;background-color:var(--memesluna-floating-action-bg);box-shadow:none;color:var(--k-color-primary, #2383e2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .12s ease,border-color .12s ease}.gallery-select-toggle svg[data-v-1b9d911f]{width:14px;height:14px}.notion-gallery-card:hover .gallery-select-toggle[data-v-1b9d911f],.notion-gallery-card.selected .gallery-select-toggle[data-v-1b9d911f]{opacity:1}.gallery-img-container[data-v-1b9d911f]{width:100%;aspect-ratio:4 / 3;background-color:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;box-shadow:inset 0 0 0 1px #0f172a14}.gallery-img[data-v-1b9d911f]{width:100%;height:100%;object-fit:cover}.image-format-badge[data-v-1b9d911f]{position:absolute;right:8px;bottom:8px;z-index:12;padding:2px 6px;border-radius:7px;background:#0f172a9e;color:#fff;font-size:.68rem;font-weight:700;line-height:1.1}.image-format-badge.external[data-v-1b9d911f]{background:#0d9488d1}.gallery-card-info[data-v-1b9d911f]{padding:10px 12px;background:var(--k-bg-card, #fff);display:flex;flex-direction:column;gap:6px;flex:1;min-width:0;box-sizing:border-box}.notion-gallery-grid.list-mode[data-v-1b9d911f]{grid-template-columns:1fr;gap:8px}.notion-gallery-grid.list-mode .notion-gallery-card[data-v-1b9d911f]{aspect-ratio:auto;min-height:76px;display:grid;grid-template-columns:96px 1fr;align-items:center;gap:12px;padding:8px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));background-color:var(--k-bg-card, #ffffff)}.notion-gallery-grid.list-mode .gallery-img-container[data-v-1b9d911f]{height:68px}.notion-gallery-grid.list-mode .gallery-card-info[data-v-1b9d911f]{padding:0;background:transparent}.gallery-card-footer-row[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:8px;position:relative;width:100%}.gallery-card-tags-placeholder[data-v-1b9d911f]{flex:1}.notion-gallery-card-active-dropdown[data-v-1b9d911f]{overflow:visible!important;z-index:60!important}.gallery-card-title[data-v-1b9d911f]{font-size:.82rem;font-weight:600;color:var(--k-text-normal, #111827);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.gallery-card-menu-container[data-v-1b9d911f]{position:relative;display:inline-flex}.gallery-card-menu-btn[data-v-1b9d911f]{background:transparent;border:none;cursor:pointer;width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--k-text-muted, rgba(55, 53, 47, .45));padding:0;transition:background .1s ease,color .1s ease}.gallery-card-menu-btn[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05));color:var(--k-text-normal, #111827)}.gallery-card-menu-btn svg[data-v-1b9d911f]{width:14px;height:14px}.gallery-card-menu-dropdown[data-v-1b9d911f]{position:absolute;bottom:100%;right:0;margin-bottom:6px;min-width:130px;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:6px;box-shadow:0 6px 20px #0f172a1f;z-index:50;padding:4px}.gallery-card-menu-dropdown button[data-v-1b9d911f]{width:100%;border:none;background:transparent;text-align:left;padding:6px 10px;font-size:.76rem;cursor:pointer;color:var(--k-text-normal, #37352f);border-radius:4px;font-weight:500;transition:background .1s ease}.gallery-card-menu-dropdown button[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05))}.gallery-card-menu-dropdown button.danger[data-v-1b9d911f]{color:var(--k-color-danger, #eb5757)}.gallery-card-menu-dropdown button.danger[data-v-1b9d911f]:hover{background-color:var(--memesluna-danger-soft-bg)}.gallery-card-submenu-trigger[data-v-1b9d911f]{position:relative}.gallery-card-submenu-trigger span[data-v-1b9d911f]{display:block;padding:6px 10px;font-size:.76rem;font-weight:500;color:var(--k-text-normal, #37352f);cursor:pointer;border-radius:4px;transition:background .1s ease}.gallery-card-submenu-trigger:hover>span[data-v-1b9d911f]{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .05))}.gallery-card-submenu[data-v-1b9d911f]{position:absolute;bottom:0;right:100%;margin-right:6px;min-width:120px;max-height:180px;overflow-y:auto;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:6px;box-shadow:0 4px 15px #0f172a1a;padding:4px;opacity:0;pointer-events:none;transition:opacity .1s ease}.gallery-card-submenu-trigger:hover .gallery-card-submenu[data-v-1b9d911f]{opacity:1;pointer-events:auto}.gallery-card-submenu button[data-v-1b9d911f]{padding:5px 8px;font-size:.72rem}.gallery-card-tags[data-v-1b9d911f]{display:flex;flex-wrap:wrap;gap:4px;min-height:20px;align-items:center}.gallery-card-tag-badge[data-v-1b9d911f]{font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;border:1px solid transparent;white-space:nowrap}.gallery-card-tag-empty[data-v-1b9d911f]{font-size:.68rem;color:var(--k-text-muted, rgba(55, 53, 47, .35));font-style:italic}.flat-input[data-v-1b9d911f],.flat-select[data-v-1b9d911f],.flat-textarea[data-v-1b9d911f]{box-sizing:border-box;padding:6px 10px;border:1px solid var(--k-color-border, rgba(15, 15, 15, .12));border-radius:4px;background:var(--k-bg-panel, rgba(242, 241, 237, .45));color:var(--k-text-normal, #37352f);font-size:.82rem;font-family:inherit;transition:background .1s ease,border-color .1s ease;outline:none}.flat-input[data-v-1b9d911f]:focus,.flat-select[data-v-1b9d911f]:focus,.flat-textarea[data-v-1b9d911f]:focus{border-color:var(--k-color-primary, #2383e2);background:var(--k-bg-card, #ffffff);box-shadow:0 0 0 2px var(--memesluna-focus-ring)}.flat-input[data-v-1b9d911f]::placeholder,.flat-textarea[data-v-1b9d911f]::placeholder,.property-input-text[data-v-1b9d911f]::placeholder{color:var(--k-text-muted, rgba(55, 53, 47, .45));opacity:.78}.flat-input[data-v-1b9d911f]:disabled{background:var(--k-bg-panel, rgba(55, 53, 47, .05));color:var(--k-text-muted, rgba(55, 53, 47, .4));cursor:not-allowed}.field-hint[data-v-1b9d911f]{font-size:.7rem;color:var(--k-text-muted, rgba(55, 53, 47, .45));margin-top:4px;display:block}.btn[data-v-1b9d911f]{box-sizing:border-box;padding:4px 14px;font-size:.82rem;font-weight:500;border-radius:4px;cursor:pointer;transition:all .1s ease;display:inline-flex;align-items:center;justify-content:center;height:32px;border:none}.btn-primary[data-v-1b9d911f]{background-color:var(--k-color-primary, #2383e2);color:#fff}.btn-primary[data-v-1b9d911f]:hover{background-color:var(--k-color-primary-shade, #1a6cb8)}.btn-secondary[data-v-1b9d911f]{background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #37352f);border:1px solid var(--k-color-border, rgba(55, 53, 47, .16))}.btn-secondary[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.btn-danger[data-v-1b9d911f]{background-color:var(--k-color-danger, #eb5757);color:#fff}.btn-danger[data-v-1b9d911f]:hover{background-color:var(--k-color-danger-shade, #d44c4c)}.w-full[data-v-1b9d911f]{width:100%}.mt-2[data-v-1b9d911f]{margin-top:8px}.mt-3[data-v-1b9d911f]{margin-top:12px}.mt-4[data-v-1b9d911f]{margin-top:16px}.empty-placeholder-card[data-v-1b9d911f]{padding:60px 20px;text-align:center;border:1px dashed var(--k-color-border, rgba(55, 53, 47, .2));border-radius:8px;background-color:var(--k-bg-panel, rgba(55, 53, 47, .01))}.empty-icon[data-v-1b9d911f]{font-size:2.5rem;margin-bottom:12px}.empty-placeholder-card h3[data-v-1b9d911f]{font-size:.95rem;margin:0 0 6px;font-weight:600}.empty-placeholder-card p[data-v-1b9d911f]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.empty-gallery[data-v-1b9d911f]{padding:36px;text-align:center;color:var(--k-text-muted, rgba(55, 53, 47, .4));background-color:var(--k-bg-panel, #f7f7f5);border-radius:6px;font-size:.78rem}.move-dropdown-container[data-v-1b9d911f]{position:relative}.move-dropdown-menu[data-v-1b9d911f]{position:absolute;top:100%;left:0;margin-top:4px;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:6px;z-index:100;min-width:120px;width:max-content;box-sizing:border-box}.dropdown-item[data-v-1b9d911f]{border:none;background:transparent;width:100%;text-align:left;padding:4px 6px;font-size:.68rem;cursor:pointer;color:var(--k-text-normal, #37352f)}.dropdown-item[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.pagination-container[data-v-1b9d911f]{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px;padding-top:12px;border-top:1px solid var(--k-color-border, rgba(55, 53, 47, .06))}.page-indicator[data-v-1b9d911f]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .6))}.page-btn[data-v-1b9d911f]{height:28px;padding:0 10px;font-size:.75rem}.links-list-container[data-v-1b9d911f]{border:1px solid var(--k-color-border, rgba(55, 53, 47, .09));border-radius:6px;overflow:hidden}.link-item-row[data-v-1b9d911f]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .06));background-color:var(--k-bg-card, #ffffff)}.link-item-row[data-v-1b9d911f]:last-child{border-bottom:none}.link-item-row[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .015))}.link-url-wrapper[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;flex:1;min-width:0;margin-right:16px}.bullet[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-weight:700}.link-url-text[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .65));font-family:SFMono-Regular,Consolas,monospace;font-size:.75rem;cursor:pointer}.link-url-text[data-v-1b9d911f]:hover{color:var(--k-color-primary, #2383e2);text-decoration:underline}.link-actions[data-v-1b9d911f]{display:flex;gap:6px}.staging-router-view[data-v-1b9d911f]{display:flex;flex-direction:column;gap:16px}.staging-page-header[data-v-1b9d911f]{margin-bottom:4px}.staging-header-actions[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.similar-staging-view[data-v-1b9d911f]{display:flex;flex-direction:column;gap:16px}.similar-message[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.78rem;font-weight:650}.similar-group[data-v-1b9d911f]{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:1px solid var(--k-color-border, rgba(15, 23, 42, .08))}.similar-group[data-v-1b9d911f]:first-of-type{padding-top:0;border-top:none}.similar-group-header[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:12px}.similar-group-header h3[data-v-1b9d911f]{margin:0;color:var(--k-text-normal, #111827);font-size:.96rem;font-weight:750}.similar-group-header p[data-v-1b9d911f]{margin:4px 0 0;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.74rem}.staging-toolbar[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--k-color-border, rgba(15, 23, 42, .06));border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .06))}.staging-search-box[data-v-1b9d911f]{max-width:420px}.staging-count-pill[data-v-1b9d911f]{height:28px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;background-color:var(--k-bg-panel, rgba(15, 23, 42, .05));color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.76rem;font-weight:650;white-space:nowrap}.staging-empty-card[data-v-1b9d911f]{margin-top:8px}.staging-grid[data-v-1b9d911f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.staging-card[data-v-1b9d911f]{position:relative;min-width:0;overflow:hidden;border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:8px;background-color:var(--k-bg-card, #ffffff);box-shadow:none}.staging-card-selected[data-v-1b9d911f]{border-color:var(--k-color-primary, #2383e2);box-shadow:0 0 0 2px var(--memesluna-focus-ring)}.staging-select-toggle[data-v-1b9d911f]{position:absolute;top:8px;left:8px;z-index:5;width:24px;height:24px;border-radius:6px;border:2px solid rgba(255,255,255,.8);background-color:#ffffffd9;color:var(--k-color-primary, #2383e2);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background-color .15s ease}.staging-select-toggle[data-v-1b9d911f]:hover{background-color:#fffffff2}.staging-select-toggle svg[data-v-1b9d911f]{width:14px;height:14px}.staging-batch-toolbar[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin-bottom:14px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:8px;background-color:var(--memesluna-floating-action-bg, rgba(255, 255, 255, .92))}.staging-image-shell[data-v-1b9d911f]{width:100%;aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;padding:0;border:none;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08));background-color:#fff;cursor:pointer}.staging-image[data-v-1b9d911f]{width:100%;height:100%;object-fit:contain;display:block}.staging-card-body[data-v-1b9d911f]{padding:12px;display:flex;flex-direction:column;gap:10px}.staging-title-row[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.staging-title[data-v-1b9d911f]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--k-text-normal, #111827);font-size:.86rem;font-weight:700}.staging-ext-tag[data-v-1b9d911f]{flex:0 0 auto;padding:1px 5px;border-radius:4px;background-color:var(--k-bg-panel, #f1f5f9);color:var(--k-text-muted, #64748b);border:1px solid var(--k-color-border, rgba(15, 23, 42, .08));font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.staging-meta-grid[data-v-1b9d911f]{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.72rem;line-height:1.35}.staging-meta-grid span[data-v-1b9d911f]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staging-select[data-v-1b9d911f]{width:100%;height:34px}.staging-actions[data-v-1b9d911f]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.staging-action-btn[data-v-1b9d911f]{min-width:0;width:100%;white-space:nowrap}.page-section-header[data-v-1b9d911f]{align-items:center;justify-content:space-between;gap:16px;margin-top:0;margin-bottom:14px}.page-section-header>div[data-v-1b9d911f]{min-width:0}.page-section-header .notion-main-title[data-v-1b9d911f]{margin:0;font-size:1.78rem;line-height:1.18;font-weight:700;color:var(--k-text-normal, #37352f)}.page-section-header .btn-notion[data-v-1b9d911f]{align-self:center}.section-desc.compact[data-v-1b9d911f]{margin:8px 0 0;max-width:620px;line-height:1.45}.endpoint-layout[data-v-1b9d911f]{display:flex;flex-direction:column;gap:16px}.notion-form-panel[data-v-1b9d911f]{padding:12px 0}.endpoint-editor-panel[data-v-1b9d911f]{padding:14px;border:1px solid var(--k-color-border, rgba(55, 53, 47, .08));border-radius:6px;background-color:var(--k-bg-card, #ffffff)}.panel-title-row[data-v-1b9d911f],.table-title-row[data-v-1b9d911f]{display:flex;align-items:center;justify-content:space-between;gap:12px}.notion-panel-title[data-v-1b9d911f]{font-size:1rem;font-weight:600;margin-top:0;margin-bottom:16px;color:var(--k-text-normal, #37352f)}.panel-title-row .notion-panel-title[data-v-1b9d911f],.table-title-row .notion-panel-title[data-v-1b9d911f]{margin-bottom:0}.table-count[data-v-1b9d911f]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.form-fields[data-v-1b9d911f]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-1b9d911f]{display:flex;flex-direction:column}.endpoint-form-grid[data-v-1b9d911f]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.span-2[data-v-1b9d911f]{grid-column:1 / -1}.form-group label[data-v-1b9d911f]{font-size:.75rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .65));margin-bottom:4px}.form-row[data-v-1b9d911f]{display:flex;gap:10px}.form-actions[data-v-1b9d911f]{display:flex;gap:8px;margin-top:8px}.flex-grow[data-v-1b9d911f]{flex:1}.endpoint-preview[data-v-1b9d911f]{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:4px;background-color:var(--k-bg-panel, rgba(55, 53, 47, .04))}.endpoint-preview span[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .5));font-size:.72rem;font-weight:600;flex-shrink:0}.endpoint-preview code[data-v-1b9d911f]{color:var(--k-color-primary, #2383e2);font-family:SFMono-Regular,Consolas,monospace;font-size:.74rem;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notion-table-panel[data-v-1b9d911f]{padding:12px 0}.table-title-row[data-v-1b9d911f]{margin-bottom:8px}.table-container[data-v-1b9d911f]{overflow-x:auto;border:1px solid var(--k-color-border, rgba(55, 53, 47, .08));border-radius:6px;background-color:var(--k-bg-card, #ffffff)}.flat-table[data-v-1b9d911f]{width:100%;border-collapse:collapse;font-size:.78rem}.flat-table th[data-v-1b9d911f]{padding:8px 12px;background-color:var(--k-bg-panel, #f7f7f5);border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .08));color:var(--k-text-muted, rgba(55, 53, 47, .55));font-weight:600;font-size:.72rem;text-transform:uppercase;text-align:left}.flat-table td[data-v-1b9d911f]{padding:10px 12px;border-bottom:1px solid var(--k-color-border, rgba(55, 53, 47, .05));text-align:left}.flat-table tr:last-child td[data-v-1b9d911f]{border-bottom:none}.empty-cell[data-v-1b9d911f]{text-align:center;padding:40px!important;color:var(--k-text-muted, rgba(55, 53, 47, .35))}.endpoint-name[data-v-1b9d911f]{font-weight:600}.group-badge[data-v-1b9d911f]{display:inline-block;background-color:var(--k-bg-panel, rgba(55, 53, 47, .06));color:var(--k-text-muted, rgba(55, 53, 47, .6));padding:1px 6px;border-radius:3px;font-size:.65rem;font-weight:500;margin-top:4px}.cell-desc[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .55));max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.method-tag[data-v-1b9d911f]{font-size:.65rem;font-weight:600;padding:1px 5px;border-radius:3px;text-transform:uppercase;margin-right:6px}.method-tag.redirect[data-v-1b9d911f]{background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2383e2)}.link-text[data-v-1b9d911f]{font-weight:500;color:var(--k-color-primary, #2383e2);cursor:pointer}.link-text[data-v-1b9d911f]:hover{text-decoration:underline}.target-url[data-v-1b9d911f]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .4));max-width:300px;margin-top:2px}.url-line[data-v-1b9d911f]{display:flex;align-items:center;gap:4px}.font-mono[data-v-1b9d911f]{font-family:SFMono-Regular,Consolas,monospace}.truncate[data-v-1b9d911f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-buttons[data-v-1b9d911f]{display:flex;justify-content:flex-end;gap:4px}.icon-btn[data-v-1b9d911f]{background:transparent;border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));border-radius:4px;padding:3px;cursor:pointer;color:var(--k-text-muted, rgba(55, 53, 47, .55));display:inline-flex}.icon-btn svg[data-v-1b9d911f]{width:12px;height:12px}.icon-btn.hover-bg[data-v-1b9d911f]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.icon-btn.hover-danger[data-v-1b9d911f]:hover{background-color:var(--memesluna-danger-soft-bg);border-color:var(--memesluna-danger-border);color:var(--k-color-danger, #eb5757)}.icon-btn-inline[data-v-1b9d911f]{background:transparent;border:none;cursor:pointer;color:var(--k-text-muted, rgba(55, 53, 47, .35));display:inline-flex;padding:0;vertical-align:middle}.icon-btn-inline[data-v-1b9d911f]:hover{color:var(--k-color-primary, #2383e2)}.icon-btn-inline svg[data-v-1b9d911f]{width:10px;height:10px}.settings-preview-panel[data-v-1b9d911f]{width:100%;max-width:none;margin:0 auto}.preview-page-header[data-v-1b9d911f]{margin-bottom:12px}.preview-dashboard-grid[data-v-1b9d911f]{display:grid;grid-template-columns:minmax(560px,1fr) minmax(420px,.9fr);gap:22px;align-items:start}.preview-card[data-v-1b9d911f]{min-width:0;border:1px solid var(--k-color-border, rgba(15, 23, 42, .09));border-radius:14px;background-color:var(--k-bg-card, #ffffff);box-shadow:0 10px 32px #0f172a0f;overflow:hidden}.preview-card-header[data-v-1b9d911f]{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:18px 20px 16px;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .08))}.preview-card-title[data-v-1b9d911f]{color:var(--k-text-normal, #111827);font-size:1rem;line-height:1.25;font-weight:760}.preview-card-desc[data-v-1b9d911f]{margin-top:5px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.76rem;line-height:1.45}.preview-action-btn[data-v-1b9d911f]{height:32px;padding:0 11px;border:1px solid var(--k-color-border, rgba(15, 23, 42, .1));border-radius:8px;background-color:var(--k-bg-card, #ffffff);color:var(--k-text-normal, #111827);font-size:.76rem;font-weight:650;cursor:pointer;white-space:nowrap}.preview-action-btn[data-v-1b9d911f]:hover:not(:disabled){background-color:var(--k-bg-panel, #f8fafc)}.preview-action-btn[data-v-1b9d911f]:disabled{opacity:.45;cursor:not-allowed}.preview-table-wrap[data-v-1b9d911f]{overflow-x:auto}.preview-route-table[data-v-1b9d911f]{width:100%;border-collapse:collapse;table-layout:fixed}.preview-route-table th[data-v-1b9d911f],.preview-route-table td[data-v-1b9d911f]{padding:12px 14px;border-bottom:1px solid var(--k-color-border, rgba(15, 23, 42, .06));text-align:left;vertical-align:middle}.preview-route-table th[data-v-1b9d911f]{background-color:var(--k-bg-panel, #f8fafc);color:var(--k-text-muted, rgba(55, 53, 47, .54));font-size:.7rem;font-weight:740}.preview-route-table tr:last-child td[data-v-1b9d911f]{border-bottom:none}.preview-route-table th[data-v-1b9d911f]:nth-child(1),.preview-route-table td[data-v-1b9d911f]:nth-child(1){width:86px}.preview-route-table th[data-v-1b9d911f]:nth-child(2),.preview-route-table td[data-v-1b9d911f]:nth-child(2){width:130px}.preview-route-table th[data-v-1b9d911f]:nth-child(4),.preview-route-table td[data-v-1b9d911f]:nth-child(4){width:186px}.preview-route-table th[data-v-1b9d911f]:nth-child(5),.preview-route-table td[data-v-1b9d911f]:nth-child(5){width:64px;text-align:center}.preview-mini-cover[data-v-1b9d911f]{width:58px;height:42px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;overflow:hidden;border-radius:8px;background-color:var(--k-color-border, rgba(15, 23, 42, .08))}.preview-mini-cover.single[data-v-1b9d911f]{display:block}.preview-mini-cover img[data-v-1b9d911f]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.preview-route-icon[data-v-1b9d911f]{width:58px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:var(--memesluna-primary-faint-bg);color:var(--k-color-primary, #2383e2);font-size:.7rem;font-weight:760}.preview-route-icon.endpoint[data-v-1b9d911f]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-name[data-v-1b9d911f]{min-width:0;color:var(--k-text-normal, #111827);font-size:.84rem;font-weight:730;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-route-type[data-v-1b9d911f]{display:inline-flex;align-items:center;margin-top:5px;padding:2px 6px;border-radius:999px;background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2383e2);font-size:.66rem;font-weight:700}.preview-route-type.endpoint[data-v-1b9d911f]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-desc[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .64));font-size:.78rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;line-height:1.45;max-height:4.35em}.preview-route-path[data-v-1b9d911f]{display:block;max-width:100%;padding:6px 8px;border-radius:7px;background-color:var(--memesluna-primary-faint-bg);color:var(--k-color-primary, #2383e2);font-family:SFMono-Regular,Consolas,monospace;font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.preview-row-actions[data-v-1b9d911f]{display:flex;align-items:center;justify-content:center}.preview-empty-state[data-v-1b9d911f]{padding:64px 20px;color:var(--k-text-muted, rgba(55, 53, 47, .48));text-align:center;font-size:.82rem}.preview-prompt-container[data-v-1b9d911f]{display:flex;flex-direction:column;gap:12px}.preview-sub-title[data-v-1b9d911f]{font-size:.72rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .45));text-transform:uppercase}.preview-sub-desc[data-v-1b9d911f]{margin-top:2px;font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .45))}.preview-block-header[data-v-1b9d911f]{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.preview-code-block[data-v-1b9d911f]{background-color:var(--k-bg-panel, #faf9f6);border:1px solid var(--k-color-border, rgba(55, 53, 47, .08));border-radius:6px;padding:12px;max-height:150px;overflow-y:auto}.preview-code-block pre[data-v-1b9d911f]{margin:0;font-family:SFMono-Regular,Consolas,monospace;font-size:.72rem;white-space:pre-wrap;word-break:break-all;color:var(--k-text-normal, #27272a)}.preview-code-block.final-prompt[data-v-1b9d911f]{max-height:620px;background-color:var(--memesluna-final-prompt-bg);border-color:var(--memesluna-primary-soft-bg)}.preview-code-block.polished[data-v-1b9d911f]{margin:16px;border-radius:12px;background:var(--memesluna-code-bg);border-color:var(--memesluna-code-border);box-shadow:none}.preview-code-block.final-prompt pre[data-v-1b9d911f]{color:var(--memesluna-code-text);font-size:.76rem;line-height:1.7}.text-gray-muted[data-v-1b9d911f]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-style:italic}.toast-banner[data-v-1b9d911f]{position:fixed;top:24px;right:24px;z-index:10000;display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:6px;font-size:.78rem;font-weight:500;background-color:var(--k-bg-card, #ffffff);border:1px solid var(--k-color-border, rgba(55, 53, 47, .15));box-shadow:var(--memesluna-card-shadow);color:var(--k-text-normal, #37352f)}.toast-banner.success[data-v-1b9d911f]{background-color:var(--memesluna-toast-success-bg);border-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.toast-banner.error[data-v-1b9d911f]{background-color:var(--memesluna-toast-error-bg);border-color:var(--memesluna-danger-border);color:var(--k-color-danger, #eb5757)}.toast-icon[data-v-1b9d911f]{width:14px;height:14px;flex-shrink:0}.loading-container[data-v-1b9d911f]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0}.spinner[data-v-1b9d911f]{width:20px;height:20px;border:2px solid var(--k-color-border, rgba(55, 53, 47, .08));border-top-color:var(--k-text-normal, rgba(55, 53, 47, .6));border-radius:50%;animation:spin-1b9d911f .8s linear infinite;margin-bottom:12px}@keyframes spin-1b9d911f{to{transform:rotate(360deg)}}.loading-container p[data-v-1b9d911f]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.fade-enter-active[data-v-1b9d911f],.fade-leave-active[data-v-1b9d911f]{transition:opacity .15s ease,transform .15s ease}.fade-enter-from[data-v-1b9d911f],.fade-leave-to[data-v-1b9d911f]{opacity:0;transform:translateY(-8px)}@media (max-width: 1280px){.notion-content[data-v-1b9d911f]{padding:64px 80px 96px}.preview-dashboard-grid[data-v-1b9d911f]{grid-template-columns:1fr}.staging-grid[data-v-1b9d911f]{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}@media (max-width: 780px){.memesluna-app-layout[data-v-1b9d911f]{padding-left:0}.notion-content[data-v-1b9d911f]{padding:18px 16px}.content-breadcrumb-header[data-v-1b9d911f],.notion-db-header[data-v-1b9d911f],.page-section-header[data-v-1b9d911f],.notion-page-header[data-v-1b9d911f],.gallery-bulk-toolbar[data-v-1b9d911f]{align-items:stretch;flex-direction:column}.notion-db-actions[data-v-1b9d911f],.bulk-actions[data-v-1b9d911f],.form-actions[data-v-1b9d911f],.staging-header-actions[data-v-1b9d911f],.collection-name-input-notion[data-v-1b9d911f],.notion-db-actions .btn[data-v-1b9d911f],.form-actions .btn[data-v-1b9d911f]{width:100%}.endpoint-form-grid[data-v-1b9d911f]{grid-template-columns:1fr}.span-2[data-v-1b9d911f]{grid-column:auto}.folders-grid[data-v-1b9d911f]{grid-template-columns:1fr}.notion-gallery-grid[data-v-1b9d911f]{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.preview-block-header[data-v-1b9d911f],.preview-card-header[data-v-1b9d911f]{align-items:stretch;flex-direction:column}.preview-action-btn[data-v-1b9d911f]{width:100%}.staging-toolbar[data-v-1b9d911f]{align-items:stretch;flex-direction:column}.staging-search-box[data-v-1b9d911f]{max-width:none;width:100%}.preview-route-table[data-v-1b9d911f]{min-width:720px}}.view-toggle-pill[data-v-1b9d911f]{display:inline-flex;background:#37352f0f;border-radius:6px;padding:2px;margin-right:8px}.pill-btn[data-v-1b9d911f]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:.78rem;font-weight:500;border:none;border-radius:4px;cursor:pointer;background:transparent;color:#37352f66;transition:all .15s ease}.pill-btn[data-v-1b9d911f]:hover{color:#37352fa6;background:#37352f0a}.pill-btn.active[data-v-1b9d911f]{background:#fff;color:#37352f;box-shadow:0 1px 3px #00000014}.tag-view-section[data-v-1b9d911f]{margin-top:8px}.tag-detail-view[data-v-1b9d911f]{padding:0}.tag-images-grid[data-v-1b9d911f]{margin-top:16px}.gallery-card-footer[data-v-1b9d911f]{padding:8px 10px;font-size:.75rem}.gallery-card-collection[data-v-1b9d911f]{font-weight:500;color:var(--k-text-normal, #37352f);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-card-tags[data-v-1b9d911f]{display:flex;flex-wrap:wrap;gap:3px}.mini-tag[data-v-1b9d911f]{display:inline-block;font-size:.65rem;padding:1px 5px;border-radius:3px;background:#37352f0f;color:#37352f8c;cursor:pointer;transition:all .1s ease;white-space:nowrap}.mini-tag[data-v-1b9d911f]:hover{background:#37352f1a;color:#37352fcc}.mini-tag.active-tag[data-v-1b9d911f]{background:#2383e21f;color:#2383e2;font-weight:500}.tag-editor-overlay[data-v-1b9d911f]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:1000;display:flex;align-items:center;justify-content:center}.tag-editor-dialog[data-v-1b9d911f]{background:#fff;border-radius:10px;box-shadow:0 8px 30px #00000026;width:420px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.tag-editor-header[data-v-1b9d911f]{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px 12px;border-bottom:1px solid rgba(55,53,47,.08)}.tag-editor-title[data-v-1b9d911f]{font-size:1rem;font-weight:600;color:#37352f}.tag-editor-subtitle[data-v-1b9d911f]{font-size:.75rem;color:#37352f66;margin-top:2px;word-break:break-all}.tag-editor-body[data-v-1b9d911f]{padding:16px 20px 20px;overflow-y:auto}.tag-editor-list[data-v-1b9d911f]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;min-height:32px}.tag-editor-tag[data-v-1b9d911f]{display:inline-flex;align-items:center;gap:4px;font-size:.78rem;padding:3px 8px;border-radius:4px;background:#2383e21a;color:#2383e2}.tag-remove-btn[data-v-1b9d911f]{background:none;border:none;font-size:1rem;color:inherit;cursor:pointer;opacity:.5;padding:0 2px;line-height:1}.tag-remove-btn[data-v-1b9d911f]:hover{opacity:1}.tag-editor-empty[data-v-1b9d911f]{font-size:.78rem;color:#37352f4d}.tag-editor-input-row[data-v-1b9d911f]{display:flex;gap:8px}.tag-editor-input[data-v-1b9d911f]{flex:1}@media (max-width: 1180px){.asset-hero-panel[data-v-1b9d911f]{grid-template-columns:1fr}}@media (max-width: 980px){.detail-topbar[data-v-1b9d911f],.asset-gallery-toolbar[data-v-1b9d911f]{align-items:stretch;flex-direction:column}.detail-top-actions[data-v-1b9d911f],.asset-filter-bar[data-v-1b9d911f]{justify-content:flex-start}.asset-filter-bar[data-v-1b9d911f]{flex-wrap:wrap}.asset-search-box[data-v-1b9d911f]{max-width:none;width:100%}}@media (max-width: 640px){.asset-hero-panel[data-v-1b9d911f]{padding:14px;border-radius:14px}.asset-identity-card[data-v-1b9d911f]{align-items:flex-start}.asset-avatar-frame[data-v-1b9d911f]{width:72px;height:72px;flex-basis:72px;border-radius:14px}.asset-title-row h1[data-v-1b9d911f]{font-size:1.35rem}.asset-api-row[data-v-1b9d911f]{grid-template-columns:1fr}.asset-tabs[data-v-1b9d911f],.detail-top-actions[data-v-1b9d911f]{width:100%}.asset-btn[data-v-1b9d911f]{flex:1}.notion-gallery-grid[data-v-1b9d911f]{grid-template-columns:repeat(auto-fill,minmax(138px,1fr))}.staging-grid[data-v-1b9d911f],.staging-actions[data-v-1b9d911f]{grid-template-columns:1fr}}
package/lib/index.js CHANGED
@@ -159,7 +159,7 @@ function isReservedPath(name2) {
159
159
  }
160
160
  __name(isReservedPath, "isReservedPath");
161
161
  var COLLECTION_NAME_REGEXP = /^[^\/\\?%*:|"<>.]+$/;
162
- var ENDPOINT_NAME_REGEXP = /^[a-zA-Z0-9_-]+$/;
162
+ var ENDPOINT_NAME_REGEXP = /^[^\/\\?%*:|"<>.]+$/;
163
163
  var MemesLunaService = class extends import_koishi.Service {
164
164
  constructor(ctx, config) {
165
165
  super(ctx, "memesluna", true);
@@ -626,12 +626,12 @@ var MemesLunaService = class extends import_koishi.Service {
626
626
  }
627
627
  ensureCollectionName(name2) {
628
628
  if (!this.isValidCollectionName(name2)) {
629
- throw new Error("Invalid collection name: only letters, numbers, _ and - are allowed.");
629
+ throw new Error('Invalid collection name: special characters like /\\?%*:|"<>. are not allowed.');
630
630
  }
631
631
  }
632
632
  ensureEndpointName(name2) {
633
633
  if (!name2 || !ENDPOINT_NAME_REGEXP.test(name2)) {
634
- throw new Error("Invalid endpoint name: only letters, numbers, _ and - are allowed.");
634
+ throw new Error('Invalid endpoint name: special characters like /\\?%*:|"<>. are not allowed.');
635
635
  }
636
636
  if (isReservedPath(name2)) {
637
637
  throw new Error("Endpoint name is a reserved path.");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-memesluna",
3
3
  "description": "Image Forward service for Koishi with ChatLuna integration",
4
- "version": "0.5.8",
4
+ "version": "0.5.9",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "types": "lib/index.d.ts",