koishi-plugin-memesluna 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{send as x,icons as _t}from"@koishijs/client";import{defineComponent as $t,ref as d,reactive as ve,computed as $,onMounted as It,onUnmounted as Et,watch as Ee,openBlock as n,createElementBlock as a,createCommentVNode as c,createElementVNode as t,Fragment as w,toDisplayString as u,normalizeClass as g,createVNode as Mt,Transition as Lt,withCtx as Ut,withDirectives as h,vModelText as z,vModelSelect as pe,createTextVNode as U,renderList as V,withModifiers as I,createStaticVNode as fe,withKeys as Bt,vShow as me,h as Qe}from"vue";const St={class:"memesluna-app-layout"},Rt={class:"notion-content"},Tt={class:"content-breadcrumb-header"},Pt={class:"breadcrumbs"},At={key:0,class:"crumb-parent"},Dt={key:1,class:"crumb-parent"},Vt={key:2,class:"crumb-parent"},Nt={class:"crumb-child active"},Ft={key:0,class:"header-quick-stats"},Ot={class:"stat-bubble"},zt={class:"stat-bubble"},Ht={key:0,class:"notion-view-switcher"},jt={key:0,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Wt={key:1,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Gt={key:2,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},Qt={key:1,class:"loading-container"},Zt={class:"content-body-wrapper"},qt={key:0,class:"resources-router-view"},Kt={key:0,class:"collections-folder-view"},Yt={class:"notion-db-header page-section-header collection-list-header"},Jt={class:"notion-db-actions collection-toolbar"},Xt={class:"collection-search-shell"},el={class:"collection-filter-shell"},tl={key:0,class:"empty-placeholder-card"},ll={key:1,class:"empty-placeholder-card"},sl={key:2,class:"folders-grid"},nl=["onClick"],al=["src","alt"],ol={key:1,class:"folder-cover-empty"},il={key:2,class:"folder-cover-badge"},rl={class:"folder-body"},ul={class:"folder-title-row"},cl=["title"],dl=["onClick"],vl=["onClick"],pl=["onClick"],fl={class:"folder-count"},ml={class:"folder-meta-row"},gl={class:"folder-meta-item"},yl={class:"asset-detail-shell"},hl={class:"detail-topbar"},bl={class:"detail-breadcrumbs"},wl={class:"detail-crumb-current"},kl={class:"detail-top-actions"},Cl={class:"asset-hero-panel"},xl={class:"asset-identity-card"},_l={class:"asset-avatar-frame"},$l=["src","alt"],Il={key:1,class:"asset-avatar-empty"},El={class:"asset-title-stack"},Ml={class:"asset-title-row"},Ll={class:"asset-meta-line"},Ul={class:"asset-api-card"},Bl={class:"asset-api-row"},Sl=["disabled"],Rl={key:0,class:"api-preview-strip"},Tl=["src"],Pl={class:"asset-import-panel"},Al={class:"asset-import-header"},Dl={class:"asset-import-actions"},Vl={class:"asset-gallery-section"},Nl={class:"asset-gallery-toolbar"},Fl={class:"asset-tabs"},Ol={class:"asset-filter-bar"},zl={class:"asset-search-box"},Hl={class:"asset-view-toggle"},jl={class:"gallery-tab-content"},Wl={key:0,class:"empty-gallery"},Gl={key:1,class:"empty-gallery"},Ql={key:2},Zl={key:0,class:"gallery-bulk-toolbar floating"},ql={class:"bulk-status"},Kl={class:"bulk-meta"},Yl={class:"bulk-actions"},Jl={key:1,class:"bulk-move-group"},Xl=["value","disabled"],es=["disabled"],ts=["onClick","title"],ls={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},ss=["onClick","title"],ns=["src"],as={class:"gallery-list-meta"},os={class:"gallery-card-overlay"},is={key:0,class:"overlay-actions"},rs=["onClick"],us={class:"move-dropdown-menu"},cs=["onClick"],ds=["onClick"],vs={key:1,class:"overlay-actions"},ps=["onClick"],fs=["onClick"],ms={key:1,class:"pagination-container"},gs=["disabled"],ys={class:"page-indicator"},hs=["disabled"],bs={class:"distribution-router-view"},ws={class:"endpoint-layout"},ks={class:"notion-form-panel endpoint-editor-panel"},Cs={class:"panel-title-row"},xs={class:"notion-panel-title"},_s={class:"form-fields endpoint-form-grid"},$s={class:"form-group"},Is=["disabled"],Es={class:"form-group"},Ms={class:"form-group span-2"},Ls={class:"endpoint-preview span-2"},Us={class:"form-actions span-2"},Bs={class:"notion-table-panel"},Ss={class:"table-title-row"},Rs={class:"table-count"},Ts={class:"table-container"},Ps={class:"flat-table"},As={key:0},Ds={class:"endpoint-name"},Vs=["title"],Ns={class:"font-mono"},Fs={class:"url-line"},Os=["onClick"],zs=["onClick"],Hs=["title"],js={style:{"text-align":"right"}},Ws={class:"action-buttons"},Gs=["href"],Qs=["onClick"],Zs=["onClick"],qs={class:"settings-router-view"},Ks={class:"settings-preview-panel"},Ys={class:"preview-dashboard-grid"},Js={class:"preview-card route-table-card"},Xs={class:"preview-card-header"},en=["disabled"],tn={key:0,class:"preview-table-wrap"},ln={class:"preview-route-table"},sn=["src","alt","onError"],nn={class:"preview-route-name"},an=["title"],on=["title","onClick"],rn={class:"preview-row-actions"},un=["href"],cn={key:1,class:"preview-empty-state"},dn={class:"preview-card prompt-card"},vn={class:"preview-card-header"},pn=["disabled"],fn={class:"preview-code-block final-prompt polished"},mn={key:0},gn={key:1,class:"text-gray-muted"},yn=$t({__name:"Dashboard",setup(Y){const k=d("resources"),v=d(true),A=d("/memesluna"),H=d("http://localhost:5140"),j=d([]),E=d([]),J=d(false),S=d(null),f=ve({name:"",group:"",description:"",url:""}),ge=d(new Set),Me=d(""),i=d(null),re=d(""),W=d("all"),N=d(null),ue=d(""),X=d(""),b=ve({images:[],links:[]}),R=ve({}),D=d("all"),ee=d(false),B=d(new Set),G=d(""),te=d(""),le=d("name"),se=d("all"),Q=d("grid"),M=d(""),ce=d(false),Z=d(null);function Ze(s){Z.value===s?Z.value=null:Z.value=s}function ye(s){return B.value.has(s)}function Le(s){const e=new Set(B.value);e.has(s)?e.delete(s):e.add(s),B.value=e}function ne(){B.value=new Set,G.value=""}function qe(){const s=new Set(B.value),e=we.value.filter(l=>l.type==="local");Ue.value?e.forEach(l=>s.delete(l.value)):e.forEach(l=>s.add(l.value)),B.value=s}function Ke(s){if(s.type==="local"&&_.value.length){Le(s.value);return}kt(s.src)}const C=d(1),he=d(24),Ye=$(()=>{if(!i.value)return[];const s=b.images.map(l=>({id:`local:${l}`,type:"local",label:l,src:$e(i.value.name,l),value:l})),e=b.links.map(l=>({id:`external:${l}`,type:"external",label:Xe(l),src:l,value:l}));return D.value==="local"?s:D.value==="external"?e:[...s,...e]}),be=$(()=>{const s=te.value.trim().toLowerCase();let e=Ye.value.filter(l=>s?l.label.toLowerCase().includes(s)||l.value.toLowerCase().includes(s):true);return se.value==="selected"&&(e=e.filter(l=>l.type==="local"&&B.value.has(l.value))),[...e].sort((l,o)=>le.value==="nameDesc"?o.label.localeCompare(l.label):l.label.localeCompare(o.label))}),q=$(()=>Math.max(1,Math.ceil(be.value.length/he.value))),we=$(()=>{const s=(C.value-1)*he.value;return be.value.slice(s,s+he.value)}),_=$(()=>Array.from(B.value)),Ue=$(()=>{const s=we.value.filter(e=>e.type==="local");return s.length>0&&s.every(e=>B.value.has(e.value))}),Be=$(()=>{if(!i.value)return"";const s=b.images[0];return s?$e(i.value.name,s):b.links[0]||""}),Se=$(()=>i.value?F(i.value.name):""),Re=$(()=>{var s;return((s=i.value)==null?void 0:s.totalCount)||b.images.length+b.links.length}),Te=$(()=>{const s=f.name.trim();return s?F(s):""}),Pe=$(()=>{const s=E.value.filter(l=>l.hasContent).map(l=>({id:`collection:${l.name}`,type:"collection",typeLabel:"表情包",name:l.name,description:l.description||`${l.name} 表情包`,path:`${A.value}/${l.name}`,fullUrl:F(l.name),previewImages:Ne(l.name).slice(0,3)})),e=j.value.map(l=>{const o=F(l.name),p=ge.value.has(`endpoint:${l.name}`)?[]:[o];return{id:`endpoint:${l.name}`,type:"endpoint",typeLabel:"重定向",name:l.name,description:l.description||"302 重定向",path:`${A.value}/${l.name}`,fullUrl:o,previewImages:p}});return[...s,...e]}),Ae=$(()=>{const s=re.value.trim().toLowerCase();return E.value.filter(e=>{const l=!s||e.name.toLowerCase().includes(s)||(e.description||"").toLowerCase().includes(s),o=W.value==="all"||W.value==="local"&&e.localCount>0&&e.linkCount===0||W.value==="external"&&e.linkCount>0;return l&&o})}),ke=d(""),ae=d(""),oe=d(false),Ce=d(null),T=ve({show:false,message:"",type:"info"});let xe=null;function r(s,e="info"){xe&&clearTimeout(xe),T.message=s,T.type=e,T.show=true,xe=setTimeout(()=>{T.show=false},2500)}function _e(s){k.value=s,s==="settings"&&Fe()}function K(){const s=H.value.endsWith("/")?H.value.slice(0,-1):H.value,e=A.value.startsWith("/")?A.value:`/${A.value}`,l=e.endsWith("/")?e.slice(0,-1):e;return`${s}${l}`}function F(s){return`${K()}/${s}`}function $e(s,e){return`${K()}/api/admin/collections/${encodeURIComponent(s)}/images/${encodeURIComponent(e)}`}function Je(s){if(s.type!=="endpoint")return;const e=new Set(ge.value);e.add(s.id),ge.value=e}function De(s){if(!s)return"-";const e=new Date(s);return Number.isNaN(e.getTime())?"-":e.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})}function Ve(s){const e=s.split(".").pop();return e?e.toUpperCase():"IMG"}function Xe(s){try{const e=new URL(s);return decodeURIComponent(e.pathname.split("/").filter(Boolean).pop()||e.hostname)||e.hostname}catch{return s}}function et(s){return R[s]}function Ne(s){var e;return((e=R[s])==null?void 0:e.images)||[]}function Ie(s){return Ne(s).slice(0,6)}async function tt(s){var e;if(!(!s.hasContent||(e=R[s.name])!=null&&e.images.length)){R[s.name]=R[s.name]||{loading:true,images:[]},R[s.name].loading=true;try{const l=await fetch(`${K()}/api/collections/${encodeURIComponent(s.name)}/resources`);if(!l.ok)return;const o=await l.json(),p=9,m=Array.isArray(o.images)?o.images.slice(0,p).map(L=>$e(s.name,L)):[],ie=Array.isArray(o.links)?o.links.slice(0,p-m.length):[];R[s.name].images=[...m,...ie]}catch{R[s.name].images=[]}finally{R[s.name].loading=false}}}function lt(){E.value.filter(s=>s.hasContent).slice(0,24).forEach(s=>{tt(s)})}async function y(){try{H.value=window.location.origin;const s=await x("memesluna/getState");s&&(s.backendPath&&(A.value=s.backendPath),j.value=Array.isArray(s.endpoints)?s.endpoints:[],E.value=Array.isArray(s.collections)?s.collections:[],lt())}catch(s){r(s instanceof Error?s.message:"获取插件状态同步失败","error")}}async function Fe(){try{const s=await fetch(`${K()}/api/homepage-data`);if(s.ok){const e=await s.json();ke.value=e.routeInventory||"",ae.value=e.llmPrompt||""}}catch(s){console.error("Failed to sync settings variables preview:",s)}}function st(){de(),J.value=true}function Oe(){de(),J.value=false}function de(){S.value=null,f.name="",f.group="",f.description="",f.url=""}function nt(s){S.value=s,J.value=true,f.name=s.name||"",f.group=s.group||"",f.description=s.description||"",f.url=s.url||""}async function at(){const s=f.name.trim(),e=f.url.trim();if(!s||!e){r("端点名称和目标直链 URL 均必填","error");return}const l={name:s,group:f.group.trim()||"默认分组",description:f.description.trim(),url:e,method:"redirect"};try{v.value=true,S.value?(await x("memesluna/updateEndpoint",S.value.name,l),r("端点路由参数已成功更新","success")):(await x("memesluna/createEndpoint",l),r("接口端点已成功创建","success")),await y(),de(),J.value=false}catch(o){r(o instanceof Error?o.message:"保存端点失败","error")}finally{v.value=false}}async function ot(s){if(confirm(`确认删除端点路由 "${s}" 吗?`))try{v.value=true,await x("memesluna/deleteEndpoint",s),r("该分发端点已彻底删除","success"),await y(),S.value&&S.value.name===s&&de()}catch(e){r(e instanceof Error?e.message:"删除端点路由失败","error")}finally{v.value=false}}async function O(s){try{await navigator.clipboard.writeText(s),r("成功复制链接到剪贴板","success")}catch{r("复制失败","error")}}async function it(){var e;let s=Me.value.trim();if(s||(s=((e=window.prompt("请输入表情包名称"))==null?void 0:e.trim())||""),!s){r("表情包名称不能为空","error");return}try{if(v.value=true,!await x("memesluna/createCollection",s)){r("该名称的表情包已存在,请更换其他名称","error");return}r("表情包已成功创建","success"),Me.value="",await y()}catch(l){r(l instanceof Error?l.message:"创建失败","error")}finally{v.value=false}}async function ze(s){if(N.value=null,!!confirm(`⚠️ 危险操作:确认永久且彻底删除表情包 "${s}",及其包含的所有本地图片文件吗?此项操作不可逆!`))try{v.value=true,await x("memesluna/deleteCollection",s),r("该表情包资源已彻底销毁删除","success"),i.value=null,await y()}catch(e){r(e instanceof Error?e.message:"删除失败","error")}finally{v.value=false}}async function He(s){N.value=null,i.value=s,ue.value=s.description||"",X.value="",te.value="",le.value="name",se.value="all",Q.value="grid",M.value="",C.value=1,ne(),await P(s.name)}function rt(){i.value=null,M.value&&URL.revokeObjectURL(M.value),M.value="",ne()}async function P(s){try{const e=await fetch(`${K()}/api/collections/${encodeURIComponent(s)}/resources`);if(e.ok){const l=await e.json();b.images=Array.isArray(l.images)?l.images:[],b.links=Array.isArray(l.links)?l.links:[];const o=new Set(b.images);B.value=new Set(_.value.filter(p=>o.has(p)))}}catch{r("加载该表情包下的图片缓存失败","error")}}async function ut(){if(!i.value)return;v.value=true,await P(i.value.name),await y();const s=E.value.find(e=>e.name===i.value.name);s&&(i.value=s),v.value=false,r("本地及缓存资源数据已刷新成功","success")}async function ct(){if(i.value){ce.value=true;try{const s=await fetch(Se.value,{redirect:"follow"});if(!s.ok){r("测试接口未返回可用图片","error");return}const e=await s.blob();if(!e.type.startsWith("image/")){r("测试接口返回的不是图片资源","error");return}M.value&&URL.revokeObjectURL(M.value),M.value=URL.createObjectURL(e),r("已获取随机图片预览","success"),await y();const l=E.value.find(o=>{var p;return o.name===((p=i.value)==null?void 0:p.name)});l&&(i.value=l)}catch(s){r(s instanceof Error?s.message:"测试接口失败","error")}finally{ce.value=false}}}async function je(){if(i.value)try{v.value=true,await x("memesluna/setCollectionDescription",i.value.name,ue.value.trim()),r("表情包描述已成功保存","success"),await y();const s=E.value.find(e=>e.name===i.value.name);s&&(i.value=s)}catch(s){r(s instanceof Error?s.message:"保存表情包描述失败","error")}finally{v.value=false}}function dt(){Ce.value&&Ce.value.click()}function vt(s){const e=s.target;e.files&&We(e.files)}function pt(s){oe.value=false,s.dataTransfer&&s.dataTransfer.files&&We(s.dataTransfer.files)}async function We(s){if(!i.value)return;const e=Array.from(s);if(e.filter(m=>m.name.toLowerCase().endsWith(".avif")).length>0){r("已自动拦截 avif 图片。QQ 机器人框架无法渲染及读取此格式。","error");return}const o=e.filter(m=>m.type.startsWith("image/"));if(!o.length){r("请拖入或选择有效的图片格式文件","error");return}if(o.length>50){r("单次上传表情上限为 50 张,请分批次导入","error");return}if(o.filter(m=>m.size>10*1024*1024).length>0){r("已拦截大小超出 10MB 的单个图片素材","error");return}r(`正在转码并上传 ${o.length} 张表情图片...`,"info");try{const m=[];for(const L of o){const xt=await ft(L);m.push({base64:xt,originalName:L.name})}const ie=await fetch(`${K()}/api/admin/collections/${encodeURIComponent(i.value.name)}/images`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({images:m})});if(ie.ok){const L=await ie.json();L.ok&&L.uploaded&&L.uploaded.length>0?r(`成功将 ${L.uploaded.length} 张表情入库并完成数字重命名`,"success"):r("上传图片写入失败","error")}else{const L=await ie.json().catch(()=>({}));r(L.error||"上传中继失败","error")}}catch(m){r(`上传网络错误: ${m instanceof Error?m.message:"错误"}`,"error")}finally{await P(i.value.name),await y()}}function ft(s){return new Promise((e,l)=>{const o=new FileReader;o.readAsDataURL(s),o.onload=()=>{const m=o.result.split(",")[1];e(m)},o.onerror=p=>l(p)})}async function mt(){if(!i.value)return;const s=X.value.trim();if(!s){r("链接文本不能为空","error");return}try{v.value=true;const e=await x("memesluna/addLinks",i.value.name,s);r(`已成功录入 ${e} 条网络图片外链`,"success"),X.value="",await P(i.value.name),await y()}catch(e){r(e instanceof Error?e.message:"添加失败","error")}finally{v.value=false}}async function gt(s,e){if(confirm("确认删除该图片网络外链直链吗?"))try{v.value=true,await x("memesluna/deleteLink",s,e),r("外链直链已彻底删除","success"),await P(s),await y()}catch(l){r(l instanceof Error?l.message:"删除链接失败","error")}finally{v.value=false}}async function yt(s,e){if(confirm(`确认永久删除该本地图片素材 "${e}" 吗?此操作无法恢复!`))try{v.value=true,await x("memesluna/deleteLocalImage",s,e),r("该本地图片已永久删除","success"),await P(s),await y()}catch(l){r(l instanceof Error?l.message:"删除失败","error")}finally{v.value=false}}async function ht(){if(!i.value||!_.value.length)return;const s=_.value;if(confirm(`确认永久删除已选择的 ${s.length} 张本地图片素材吗?此操作无法恢复!`))try{v.value=true;for(const e of s)await x("memesluna/deleteLocalImage",i.value.name,e);r(`已删除 ${s.length} 张本地图片`,"success"),ne(),await P(i.value.name),await y()}catch(e){r(e instanceof Error?e.message:"批量删除失败","error")}finally{v.value=false}}async function bt(s,e,l){try{v.value=true,await x("memesluna/moveLocalImage",s,e,l)?(r(`已将素材移动至表情包 "${e}" 并重命名`,"success"),await P(s),await y()):r("移动失败","error")}catch(o){r(o instanceof Error?o.message:"移库失败","error")}finally{v.value=false}}async function wt(){if(!i.value||!_.value.length||!G.value)return;const s=i.value.name,e=G.value;if(e===s){r("不能移动到当前表情包","error");return}const l=_.value;try{v.value=true;for(const o of l)await x("memesluna/moveLocalImage",s,e,o);r(`已将 ${l.length} 张素材移动至表情包 "${e}"`,"success"),ne(),await P(s),await y()}catch(o){r(o instanceof Error?o.message:"批量移动失败","error")}finally{v.value=false}}function kt(s){window.open(s,"_blank")}function Ct(s){N.value=N.value===s?null:s}const Ge=()=>{Z.value=null,N.value=null};return It(async()=>{window.addEventListener("click",Ge),v.value=true,await y(),v.value=false}),Et(()=>{window.removeEventListener("click",Ge),M.value&&URL.revokeObjectURL(M.value)}),Ee(b,()=>{C.value>q.value&&q.value>0&&(C.value=q.value)}),Ee([te,le,se],()=>{C.value=1}),Ee([re,W],()=>{N.value=null}),(s,e)=>(n(),a("div",St,[c(" MAIN CONTENT AREA "),t("main",Rt,[c(" Top Notion Breadcrumbs "),t("header",Tt,[t("div",Pt,[e[33]||(e[33]=t("span",{class:"crumb-root"},"MemesLuna 控制台",-1)),e[34]||(e[34]=t("span",{class:"crumb-separator"},"/",-1)),k.value==="resources"?(n(),a("span",At,"表情包管理")):k.value==="distribution"?(n(),a("span",Dt,"分发管理")):k.value==="settings"?(n(),a("span",Vt,"预览")):c("v-if",true),k.value==="resources"&&i.value?(n(),a(w,{key:3},[e[32]||(e[32]=t("span",{class:"crumb-separator"},"/",-1)),t("span",Nt,"表情包: "+u(i.value.name),1)],64)):c("v-if",true)]),c(" Quick Stats Banner "),v.value?c("v-if",true):(n(),a("div",Ft,[t("span",Ot,"📂 表情包总数: "+u(E.value.length),1),t("span",zt,"🌐 分发接口: "+u(j.value.length),1)]))]),c(" NOTION-STYLE HORIZONTAL VIEW SWITCHER "),i.value?c("v-if",true):(n(),a("div",Ht,[t("button",{onClick:e[0]||(e[0]=l=>_e("resources")),class:g(["switcher-btn",k.value==="resources"?"active":""])},[...e[35]||(e[35]=[t("span",{class:"switcher-icon"},"📦",-1),t("span",{class:"switcher-label"},"表情包管理",-1)])],2),t("button",{onClick:e[1]||(e[1]=l=>_e("distribution")),class:g(["switcher-btn",k.value==="distribution"?"active":""])},[...e[36]||(e[36]=[t("span",{class:"switcher-icon"},"🌐",-1),t("span",{class:"switcher-label"},"分发管理",-1)])],2),t("button",{onClick:e[2]||(e[2]=l=>_e("settings")),class:g(["switcher-btn",k.value==="settings"?"active":""])},[...e[37]||(e[37]=[t("span",{class:"switcher-icon"},"👁️",-1),t("span",{class:"switcher-label"},"预览",-1)])],2)])),c(" Global Toast Alert Banner "),Mt(Lt,{name:"fade"},{default:Ut(()=>[T.show?(n(),a("div",{key:0,class:g(["toast-banner",T.type])},[T.type==="success"?(n(),a("svg",jt,[...e[38]||(e[38]=[t("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):T.type==="error"?(n(),a("svg",Wt,[...e[39]||(e[39]=[t("circle",{cx:"12",cy:"12",r:"10"},null,-1),t("line",{x1:"12",y1:"8",x2:"12",y2:"12"},null,-1),t("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"},null,-1)])])):(n(),a("svg",Gt,[...e[40]||(e[40]=[t("circle",{cx:"12",cy:"12",r:"10"},null,-1),t("line",{x1:"12",y1:"16",x2:"12",y2:"12"},null,-1),t("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"},null,-1)])])),t("span",null,u(T.message),1)],2)):c("v-if",true)]),_:1}),c(" Loading Cover "),v.value?(n(),a("div",Qt,[...e[41]||(e[41]=[t("div",{class:"spinner"},null,-1),t("p",null,"正在同步数据...",-1)])])):(n(),a(w,{key:2},[c(" MAIN ROUTER BODY "),t("div",Zt,[c(" MENU VIEW 1: RESOURCES (📦) "),k.value==="resources"?(n(),a("div",qt,[c(" Collection Lists (Folder view) "),i.value?(n(),a(w,{key:1},[c(" Collection Details (Inside details view) "),t("div",{class:"collection-detail-layout",onDragover:e[25]||(e[25]=I(l=>oe.value=true,["prevent"]))},[t("div",yl,[t("div",hl,[t("div",bl,[t("button",{onClick:rt,class:"detail-back-btn",title:"返回列表"},[...e[53]||(e[53]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"m15 18-6-6 6-6"})],-1),U(" 返回列表 ",-1)])]),e[54]||(e[54]=t("span",{class:"detail-separator"},"/",-1)),t("span",wl,u(i.value.name),1),e[55]||(e[55]=t("span",{class:"detail-separator"},"/",-1)),e[56]||(e[56]=t("span",{class:"detail-crumb-strong"},"图片素材",-1))]),t("div",kl,[t("button",{onClick:ut,class:"asset-btn secondary",title:"刷新缓存"},[...e[57]||(e[57]=[fe('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-e3a296f0><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-e3a296f0></path><path d="M3 21v-5h5" data-v-e3a296f0></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-e3a296f0></path><path d="M16 8h5V3" data-v-e3a296f0></path></svg> 刷新缓存 ',2)])]),t("button",{onClick:dt,class:"asset-btn primary"},[...e[58]||(e[58]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),t("path",{d:"m17 8-5-5-5 5"}),t("path",{d:"M12 3v12"})],-1),U(" 上传图片 ",-1)])]),t("button",{onClick:e[6]||(e[6]=l=>ee.value=!ee.value),class:"asset-btn secondary"},[...e[59]||(e[59]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),t("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),U(" 导入外链 ",-1)])]),t("button",{onClick:e[7]||(e[7]=l=>ze(i.value.name)),class:"asset-btn danger ghost",title:"删除表情包"},[...e[60]||(e[60]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M3 6h18"}),t("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}),t("path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),t("input",{ref_key:"fileInput",ref:Ce,type:"file",multiple:"",accept:"image/*",class:"hidden-file-input",onChange:vt},null,544)])]),t("section",Cl,[t("div",xl,[t("div",_l,[Be.value?(n(),a("img",{key:0,src:Be.value,class:"asset-avatar-img",alt:`${i.value.name} 封面`},null,8,$l)):(n(),a("div",Il,[...e[61]||(e[61]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("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)])]))]),t("div",El,[t("div",Ml,[t("h1",null,u(i.value.name),1),e[62]||(e[62]=t("span",{class:"asset-pill"},"本地",-1))]),h(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>ue.value=l),class:"asset-description-input",placeholder:"添加表情包描述",onBlur:je,onKeyup:Bt(je,["enter"])},null,544),[[z,ue.value]]),t("div",Ll,[t("span",null,"创建于 "+u(De(i.value.createdAt)),1),t("span",null,"最后更新 "+u(De(i.value.updatedAt)),1),t("span",null,"共 "+u(Re.value)+" 张图片",1)])])]),t("div",Ul,[e[65]||(e[65]=t("div",{class:"asset-card-label"},"API 调用地址",-1)),t("div",Bl,[t("code",null,u(Se.value),1),t("button",{onClick:ct,class:"asset-test-btn",disabled:ce.value},[e[63]||(e[63]=t("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M8 5v14l11-7z"})],-1)),U(" "+u(ce.value?"测试中":"测试接口"),1)],8,Sl)]),e[66]||(e[66]=t("div",{class:"asset-api-hint"},"直接访问该链接将随机返回一张表情图片",-1)),M.value?(n(),a("div",Rl,[t("img",{src:M.value,alt:"API 返回图片预览"},null,8,Tl),e[64]||(e[64]=t("span",null,"随机预览",-1))])):c("v-if",true)])]),c(" Drag over drop zone area "),h(t("div",{class:"sidebar-drop-zone-overlay",onDragover:e[9]||(e[9]=I(l=>oe.value=true,["prevent"])),onDragleave:e[10]||(e[10]=I(l=>oe.value=false,["prevent"])),onDrop:I(pt,["prevent"])},[...e[67]||(e[67]=[fe('<div class="drop-overlay-box" data-v-e3a296f0><svg class="drop-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-e3a296f0><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-v-e3a296f0></path><polyline points="17 8 12 3 7 8" data-v-e3a296f0></polyline><line x1="12" y1="3" x2="12" y2="15" data-v-e3a296f0></line></svg><p data-v-e3a296f0>释放图片文件以导入此表情包</p></div>',1)])],544),[[me,oe.value]]),h(t("div",Pl,[t("div",Al,[e[69]||(e[69]=t("div",null,[t("div",{class:"asset-import-title"},"导入外链图片"),t("div",{class:"asset-import-desc"},"每行一个以 http:// 或 https:// 开头的图片链接")],-1)),t("button",{onClick:e[11]||(e[11]=l=>ee.value=false),class:"asset-icon-btn compact",title:"关闭导入面板"},[...e[68]||(e[68]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M18 6 6 18"}),t("path",{d:"m6 6 12 12"})],-1)])])]),h(t("textarea",{"onUpdate:modelValue":e[12]||(e[12]=l=>X.value=l),rows:"4",class:"asset-link-textarea",placeholder:"每行一个以 http:// 或 https:// 开头的链接"},null,512),[[z,X.value]]),t("div",Dl,[t("button",{onClick:mt,class:"asset-btn primary"},"确认导入"),t("button",{onClick:e[13]||(e[13]=l=>ee.value=false),class:"asset-btn secondary"},"取消")])],512),[[me,ee.value]]),t("section",Vl,[t("div",Nl,[t("div",Fl,[t("button",{onClick:e[14]||(e[14]=l=>{D.value="all",C.value=1}),class:g(["asset-tab",D.value==="all"?"active":""])},[e[70]||(e[70]=U(" 全部 ",-1)),t("span",null,u(Re.value),1)],2),t("button",{onClick:e[15]||(e[15]=l=>{D.value="local",C.value=1}),class:g(["asset-tab",D.value==="local"?"active":""])},[e[71]||(e[71]=U(" 本地图片 ",-1)),t("span",null,u(b.images.length),1)],2),t("button",{onClick:e[16]||(e[16]=l=>{D.value="external",C.value=1}),class:g(["asset-tab",D.value==="external"?"active":""])},[e[72]||(e[72]=U(" 外链图片 ",-1)),t("span",null,u(b.links.length),1)],2)]),t("div",Ol,[t("div",zl,[e[73]||(e[73]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("circle",{cx:"11",cy:"11",r:"8"}),t("path",{d:"m21 21-4.3-4.3"})],-1)),h(t("input",{"onUpdate:modelValue":e[17]||(e[17]=l=>te.value=l),placeholder:"搜索图片或外链"},null,512),[[z,te.value]])]),h(t("select",{"onUpdate:modelValue":e[18]||(e[18]=l=>se.value=l),class:"asset-select"},[...e[74]||(e[74]=[t("option",{value:"all"},"筛选: 全部",-1),t("option",{value:"selected"},"筛选: 已选",-1)])],512),[[pe,se.value]]),h(t("select",{"onUpdate:modelValue":e[19]||(e[19]=l=>le.value=l),class:"asset-select"},[...e[75]||(e[75]=[t("option",{value:"name"},"排序: 文件名",-1),t("option",{value:"nameDesc"},"排序: 文件名倒序",-1)])],512),[[pe,le.value]]),t("div",Hl,[t("button",{onClick:e[20]||(e[20]=l=>Q.value="grid"),class:g(Q.value==="grid"?"active":""),title:"网格视图"},[...e[76]||(e[76]=[fe('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-e3a296f0><rect x="3" y="3" width="7" height="7" rx="1" data-v-e3a296f0></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-e3a296f0></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-e3a296f0></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-e3a296f0></rect></svg>',1)])],2),t("button",{onClick:e[21]||(e[21]=l=>Q.value="list"),class:g(Q.value==="list"?"active":""),title:"列表视图"},[...e[77]||(e[77]=[fe('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-e3a296f0><path d="M8 6h13" data-v-e3a296f0></path><path d="M8 12h13" data-v-e3a296f0></path><path d="M8 18h13" data-v-e3a296f0></path><path d="M3 6h.01" data-v-e3a296f0></path><path d="M3 12h.01" data-v-e3a296f0></path><path d="M3 18h.01" data-v-e3a296f0></path></svg>',1)])],2)])])]),t("div",jl,[!b.images.length&&!b.links.length?(n(),a("div",Wl," 表情包内尚无任何图片资源 ")):be.value.length?(n(),a("div",Ql,[_.value.length?(n(),a("div",Zl,[t("div",ql,[e[78]||(e[78]=t("span",{class:"bulk-title"},"本地素材",-1)),t("span",Kl,"已选择 "+u(_.value.length)+" 张",1)]),t("div",Yl,[t("button",{onClick:qe,class:"toolbar-btn compact"},u(Ue.value?"取消本页":"选择本页"),1),_.value.length?(n(),a("button",{key:0,onClick:ne,class:"toolbar-btn compact"}," 清空选择 ")):c("v-if",true),_.value.length?(n(),a("div",Jl,[h(t("select",{"onUpdate:modelValue":e[22]||(e[22]=l=>G.value=l),class:"flat-select compact-select"},[e[79]||(e[79]=t("option",{value:""},"移动到...",-1)),(n(true),a(w,null,V(E.value,l=>(n(),a("option",{key:l.name,value:l.name,disabled:l.name===i.value.name},u(l.name),9,Xl))),128))],512),[[pe,G.value]]),t("button",{onClick:wt,class:"toolbar-btn compact",disabled:!G.value}," 移动 ",8,es)])):c("v-if",true),e[80]||(e[80]=t("button",{class:"toolbar-btn compact",disabled:""},"设置标签",-1)),_.value.length?(n(),a("button",{key:2,onClick:ht,class:"toolbar-btn compact danger"}," 批量删除 ")):c("v-if",true)])])):c("v-if",true),t("div",{class:g(["notion-gallery-grid",Q.value==="list"?"list-mode":""])},[(n(true),a(w,null,V(we.value,l=>(n(),a("div",{key:l.id,class:g(["notion-gallery-card",{"notion-gallery-card-active-dropdown":l.type==="local"&&Z.value===l.value,selected:l.type==="local"&&ye(l.value),external:l.type==="external"}])},[l.type==="local"?(n(),a("button",{key:0,class:"gallery-select-toggle",onClick:I(o=>Le(l.value),["stop"]),title:ye(l.value)?"取消选择":"选择图片"},[ye(l.value)?(n(),a("svg",ls,[...e[81]||(e[81]=[t("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):c("v-if",true)],8,ts)):c("v-if",true),t("div",{class:"gallery-img-container",onClick:o=>Ke(l),style:{cursor:"pointer"},title:l.type==="local"&&_.value.length?"切换选择状态":"在新标签页中打开原图"},[t("img",{src:l.src,class:"gallery-img",loading:"lazy"},null,8,ns),t("span",{class:g(["image-format-badge",l.type])},u(l.type==="external"?"LINK":Ve(l.value)),3)],8,ss),t("div",as,[t("div",null,u(l.label),1),t("span",null,u(l.type==="external"?"外链图片":Ve(l.value)),1)]),t("div",os,[l.type==="local"?(n(),a("div",is,[t("div",{class:"card-action-btn move move-dropdown-container",onClick:I(o=>Ze(l.value),["stop"])},[e[82]||(e[82]=t("span",null,"修改",-1)),h(t("div",us,[(n(true),a(w,null,V(E.value,o=>(n(),a(w,null,[o.name!==i.value.name?(n(),a("button",{key:o.name,onClick:I(p=>bt(i.value.name,o.name,l.value),["stop"]),class:"dropdown-item"},u(o.name),9,cs)):c("v-if",true)],64))),256))],512),[[me,Z.value===l.value]])],8,rs),t("button",{onClick:I(o=>yt(i.value.name,l.value),["stop"]),class:"card-action-btn danger"}," 删除 ",8,ds)])):(n(),a("div",vs,[t("button",{onClick:I(o=>O(l.value),["stop"]),class:"card-action-btn"}," 复制 ",8,ps),t("button",{onClick:I(o=>gt(i.value.name,l.value),["stop"]),class:"card-action-btn danger"}," 删除 ",8,fs)]))])],2))),128))],2),q.value>1?(n(),a("div",ms,[t("button",{disabled:C.value===1,onClick:e[23]||(e[23]=l=>C.value--),class:"btn btn-secondary page-btn"}," 上一页 ",8,gs),t("span",ys,[e[83]||(e[83]=U("第 ",-1)),t("b",null,u(C.value),1),U(" / "+u(q.value)+" 页",1)]),t("button",{disabled:C.value===q.value,onClick:e[24]||(e[24]=l=>C.value++),class:"btn btn-secondary page-btn"}," 下一页 ",8,hs)])):c("v-if",true)])):(n(),a("div",Gl," 没有匹配当前搜索或筛选条件的图片 "))])])])],32)],2112)):(n(),a("div",Kt,[c(" Creator bar in Notion Style "),t("div",Yt,[e[46]||(e[46]=t("div",null,[t("h1",{class:"notion-main-title"},"表情包管理"),t("p",{class:"section-desc compact"},"管理表情包合集与图片素材")],-1)),t("div",Jt,[t("div",Xt,[e[42]||(e[42]=t("svg",{class:"collection-toolbar-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("circle",{cx:"11",cy:"11",r:"8"}),t("path",{d:"m21 21-4.3-4.3"})],-1)),h(t("input",{"onUpdate:modelValue":e[3]||(e[3]=l=>re.value=l),class:"flat-input collection-search-input",placeholder:"搜索表情包合集..."},null,512),[[z,re.value]])]),t("label",el,[e[44]||(e[44]=t("svg",{class:"collection-toolbar-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M3 4h18l-7 8v6l-4 2v-8z"})],-1)),h(t("select",{"onUpdate:modelValue":e[4]||(e[4]=l=>W.value=l),class:"flat-select collection-filter-select","aria-label":"筛选表情包合集"},[...e[43]||(e[43]=[t("option",{value:"all"},"全部",-1),t("option",{value:"local"},"仅本地",-1),t("option",{value:"external"},"含外链",-1)])],512),[[pe,W.value]])]),t("button",{onClick:it,class:"btn btn-primary btn-notion"},[...e[45]||(e[45]=[t("span",{class:"btn-plus"},"+",-1),U(" 新建表情包 ",-1)])])])]),e[52]||(e[52]=t("hr",{class:"notion-hr"},null,-1)),c(" Folders grid layout "),E.value.length?Ae.value.length?(n(),a("div",sl,[(n(true),a(w,null,V(Ae.value,l=>{var o;return n(),a("div",{key:l.name,class:"folder-card",onClick:p=>He(l)},[t("div",{class:g(["folder-cover",Ie(l.name).length?"has-preview":"empty"])},[Ie(l.name).length?(n(true),a(w,{key:0},V(Ie(l.name),p=>(n(),a("img",{key:p,src:p,class:"folder-cover-img",loading:"lazy",alt:`${l.name} 预览图`},null,8,al))),128)):(n(),a("div",ol,[...e[49]||(e[49]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("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)])])),(o=et(l.name))!=null&&o.loading?(n(),a("span",il,"同步中")):c("v-if",true)],2),t("div",rl,[t("div",ul,[t("div",{class:"folder-name",title:l.description||l.name},u(l.name),9,cl),t("button",{class:"folder-more-btn",title:"更多操作",onClick:I(p=>Ct(l.name),["stop"])},[...e[50]||(e[50]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("circle",{cx:"5",cy:"12",r:"1"}),t("circle",{cx:"12",cy:"12",r:"1"}),t("circle",{cx:"19",cy:"12",r:"1"})],-1)])],8,dl),N.value===l.name?(n(),a("div",{key:0,class:"folder-action-menu",onClick:e[5]||(e[5]=I(()=>{},["stop"]))},[t("button",{onClick:p=>He(l)},"打开详情",8,vl),t("button",{class:"danger",onClick:p=>ze(l.name)},"删除表情包",8,pl)])):c("v-if",true)]),t("div",fl,u(l.totalCount)+" 张图片",1),t("div",ml,[t("span",gl,[e[51]||(e[51]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("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)),U(" 本地 "+u(l.localCount)+" · 外链 "+u(l.linkCount),1)])])])],8,nl)}),128))])):(n(),a("div",ll,[...e[48]||(e[48]=[t("div",{class:"empty-icon"},"🔎",-1),t("h3",null,"没有匹配的表情包合集",-1),t("p",null,"换个关键词或筛选条件再试试。",-1)])])):(n(),a("div",tl,[...e[47]||(e[47]=[t("div",{class:"empty-icon"},"📁",-1),t("h3",null,"尚未创建任何表情包",-1),t("p",null,"点击右上角按钮即可快速创建一个新的表情包合集。",-1)])]))]))])):k.value==="distribution"?(n(),a(w,{key:1},[c(" MENU VIEW 2: DISTRIBUTION (🌐) "),t("div",bs,[t("div",{class:"notion-db-header page-section-header"},[e[84]||(e[84]=t("div",null,[t("h1",{class:"notion-main-title"},"分发管理"),t("p",{class:"section-desc compact"},"管理统一重定向端点与外部目标地址")],-1)),t("button",{onClick:st,class:"btn btn-primary btn-notion"}," + 新建端点 ")]),e[99]||(e[99]=t("hr",{class:"notion-hr"},null,-1)),t("div",ws,[c(" Endpoint Editor Form Panel "),h(t("div",ks,[t("div",Cs,[t("h2",xs,u(S.value?"编辑分发端点":"创建新分发端点"),1),t("button",{onClick:Oe,class:"icon-btn hover-bg",title:"收起编辑器"},[...e[85]||(e[85]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),t("div",_s,[t("div",$s,[e[86]||(e[86]=t("label",null,"端点名称 *",-1)),h(t("input",{"onUpdate:modelValue":e[26]||(e[26]=l=>f.name=l),disabled:!!S.value,class:"flat-input",placeholder:"例如: moe"},null,8,Is),[[z,f.name]]),e[87]||(e[87]=t("span",{class:"field-hint"},"只能包含字母、数字、下划线和连字符",-1))]),t("div",Es,[e[88]||(e[88]=t("label",null,"描述",-1)),h(t("input",{"onUpdate:modelValue":e[27]||(e[27]=l=>f.description=l),class:"flat-input",placeholder:"例如: 萌版横图"},null,512),[[z,f.description]])]),t("div",Ms,[e[89]||(e[89]=t("label",null,"目标 URL *",-1)),h(t("input",{"onUpdate:modelValue":e[28]||(e[28]=l=>f.url=l),class:"flat-input",placeholder:"https://example.com/api"},null,512),[[z,f.url]])]),t("div",Ls,[e[90]||(e[90]=t("span",null,"访问预览",-1)),t("code",{onClick:e[29]||(e[29]=l=>O(Te.value))},u(Te.value||"填写端点名称后生成预览"),1)]),t("div",Us,[t("button",{onClick:at,class:"btn btn-primary flex-grow"},u(S.value?"保存修改":"立即创建"),1),t("button",{onClick:Oe,class:"btn btn-secondary"}," 取消 ")])])],512),[[me,J.value]]),c(" Endpoints Table List "),t("div",Bs,[t("div",Ss,[e[91]||(e[91]=t("h2",{class:"notion-panel-title"},"端点列表",-1)),t("span",Rs,u(j.value.length)+" 条路由",1)]),t("div",Ts,[t("table",Ps,[e[98]||(e[98]=t("thead",null,[t("tr",null,[t("th",{style:{width:"18%"}},"名称"),t("th",{style:{width:"20%"}},"描述"),t("th",{style:{width:"17%"}},"方式"),t("th",{style:{width:"35%"}},"访问路径 & 转发目标"),t("th",{style:{width:"10%","text-align":"right"}},"管理")])],-1)),t("tbody",null,[j.value.length?c("v-if",true):(n(),a("tr",As,[...e[92]||(e[92]=[t("td",{colspan:"5",class:"empty-cell"},"尚未配置任何转发 API 端点",-1)])])),(n(true),a(w,null,V(j.value,l=>(n(),a("tr",{key:l.name},[t("td",null,[t("div",Ds,u(l.name),1)]),t("td",{class:"cell-desc",title:l.description},u(l.description||"-"),9,Vs),e[97]||(e[97]=t("td",null,[t("span",{class:"method-tag redirect"},"重定向"),t("div",{class:"target-url"},"302 重定向")],-1)),t("td",Ns,[t("div",Fs,[t("span",{class:"link-text",onClick:o=>O(F(l.name))}," /"+u(l.name),9,Os),t("button",{onClick:o=>O(F(l.name)),class:"icon-btn-inline",title:"复制完整链接"},[...e[93]||(e[93]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),t("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,zs)]),t("div",{class:"target-url truncate",title:l.url}," → "+u(l.url),9,Hs)]),t("td",js,[t("div",Ws,[t("a",{href:F(l.name),target:"_blank",class:"icon-btn hover-bg",title:"测试该端点访问"},[...e[94]||(e[94]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),t("polyline",{points:"15 3 21 3 21 9"}),t("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])],8,Gs),t("button",{onClick:o=>nt(l),class:"icon-btn hover-bg",title:"编辑参数"},[...e[95]||(e[95]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),t("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,Qs),t("button",{onClick:o=>ot(l.name),class:"icon-btn hover-danger",title:"彻底删除"},[...e[96]||(e[96]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("polyline",{points:"3 6 5 6 21 6"}),t("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,Zs)])])]))),128))])])])])])])],2112)):k.value==="settings"?(n(),a(w,{key:2},[c(" MENU VIEW 3: PREVIEW (👁️ 预览) "),t("div",qs,[t("div",Ks,[t("div",{class:"notion-db-header page-section-header preview-page-header"},[e[100]||(e[100]=t("div",null,[t("h1",{class:"notion-main-title"},"预览"),t("p",{class:"section-desc compact"},"实时预览路由与最终提示词效果")],-1)),t("button",{onClick:Fe,class:"btn btn-secondary btn-notion"}," 刷新预览 ")]),t("div",Ys,[t("section",Js,[t("div",Xs,[e[101]||(e[101]=t("div",null,[t("div",{class:"preview-card-title"},"路由清单"),t("div",{class:"preview-card-desc"},"{endpoint} 中可供 ChatLuna 使用的合集与端点")],-1)),t("button",{onClick:e[30]||(e[30]=l=>O(ke.value)),class:"preview-action-btn",disabled:!ke.value,title:"复制路由清单"}," 复制清单 ",8,en)]),Pe.value.length?(n(),a("div",tn,[t("table",ln,[e[103]||(e[103]=t("thead",null,[t("tr",null,[t("th",null,"预览"),t("th",null,"包名"),t("th",null,"描述"),t("th",null,"路径"),t("th",null,"操作")])],-1)),t("tbody",null,[(n(true),a(w,null,V(Pe.value,l=>(n(),a("tr",{key:l.id},[t("td",null,[l.previewImages.length?(n(),a("div",{key:0,class:g(["preview-mini-cover",l.previewImages.length===1?"single":""])},[(n(true),a(w,null,V(l.previewImages,o=>(n(),a("img",{key:o,src:o,alt:`${l.name} 预览`,loading:"lazy",onError:p=>Je(l)},null,40,sn))),128))],2)):(n(),a("div",{key:1,class:g(["preview-route-icon",l.type])},u(l.type==="collection"?"包":"API"),3))]),t("td",null,[t("div",nn,u(l.name),1),t("span",{class:g(["preview-route-type",l.type])},u(l.typeLabel),3)]),t("td",null,[t("div",{class:"preview-route-desc",title:l.description},u(l.description),9,an)]),t("td",null,[t("code",{class:"preview-route-path",title:l.fullUrl,onClick:o=>O(l.fullUrl)},u(l.path),9,on)]),t("td",null,[t("div",rn,[t("a",{href:l.fullUrl,target:"_blank",class:"icon-btn hover-bg",title:"打开预览"},[...e[102]||(e[102]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),t("polyline",{points:"15 3 21 3 21 9"}),t("line",{x1:"10",y1:"14",x2:"21",y2:"3"})],-1)])],8,un)])])]))),128))])])])):(n(),a("div",cn," 暂无可用表情包及路由,请前往表情包管理或分发管理中创建。 "))]),t("section",dn,[t("div",vn,[e[104]||(e[104]=t("div",null,[t("div",{class:"preview-card-title"},"最终提示词"),t("div",{class:"preview-card-desc"},"{memesluna} 注入给 LLM 的完整文本")],-1)),t("button",{onClick:e[31]||(e[31]=l=>O(ae.value)),class:"preview-action-btn",disabled:!ae.value,title:"复制最终提示词"}," 复制提示词 ",8,pn)]),t("div",fn,[ae.value?(n(),a("pre",mn,u(ae.value),1)):(n(),a("pre",gn,"- 正在获取最终提示词预览... -"))])])])])])],2112)):c("v-if",true)])],2112))])]))}}),hn=(Y,k)=>{const v=Y.__vccOpts||Y;for(const[A,H]of k)v[A]=H;return v},bn=hn(yn,[["__scopeId","data-v-e3a296f0"]]),wn="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",kn={name:"MemesLunaIcon",render(){return Qe("svg",{class:"k-icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},[Qe("path",{fill:"currentColor",d:wn})])}};_t.register("MemesLunaEmoji",kn);const _n=Y=>{Y.page({name:"MemesLuna",path:"/memesluna",icon:"MemesLunaEmoji",component:bn,authority:1,order:500})};export{_n as default};
1
+ import{send as b,icons as Qt}from"@koishijs/client";import{defineComponent as Jt,ref as c,reactive as Se,computed as _,onMounted as Yt,onUnmounted as Xt,watch as qe,openBlock as n,createElementBlock as o,createCommentVNode as d,createElementVNode as e,Fragment as f,toDisplayString as i,normalizeClass as y,createVNode as es,Transition as ts,withCtx as ss,withDirectives as w,vModelText as H,vModelSelect as ne,createTextVNode as S,renderList as $,withModifiers as E,createStaticVNode as Ue,withKeys as ls,vShow as Be,h as ht}from"vue";const as={class:"memesluna-app-layout"},ns={class:"notion-content"},os={class:"content-breadcrumb-header"},is={class:"breadcrumbs"},rs={key:0,class:"crumb-parent"},us={key:1,class:"crumb-parent"},cs={key:2,class:"crumb-parent"},ds={key:3,class:"crumb-parent"},vs={class:"crumb-child active"},ps={key:0,class:"header-quick-stats"},gs={class:"stat-bubble"},fs={class:"stat-bubble"},ms={class:"stat-bubble"},hs={key:0,class:"notion-view-switcher"},bs={key:0,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},ys={key:1,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},ws={key:2,class:"toast-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},ks={key:1,class:"loading-container"},Cs={class:"content-body-wrapper"},_s={key:0,class:"resources-router-view"},xs={key:0,class:"collections-folder-view"},Is={class:"notion-db-header page-section-header collection-list-header"},$s={class:"notion-db-actions collection-toolbar"},Ms={class:"collection-search-shell"},Es={class:"collection-filter-shell"},Ls={key:0,class:"empty-placeholder-card"},Ss={key:1,class:"empty-placeholder-card"},Us={key:2,class:"folders-grid"},Bs=["onClick"],As=["src","alt"],Vs={key:1,class:"folder-cover-empty"},Ns={key:2,class:"folder-cover-badge"},Ps={class:"folder-body"},Rs={class:"folder-title-row"},Ts=["title"],Ds=["onClick"],Fs=["onClick"],zs=["onClick"],Os={class:"folder-count"},Hs={class:"folder-meta-row"},Ws={class:"folder-meta-item"},Gs={class:"asset-detail-shell"},js={class:"detail-topbar"},Zs={class:"detail-breadcrumbs"},qs={class:"detail-crumb-current"},Ks={class:"detail-top-actions"},Qs={class:"asset-hero-panel"},Js={class:"asset-identity-card"},Ys={class:"asset-avatar-frame"},Xs=["src","alt"],el={key:1,class:"asset-avatar-empty"},tl={class:"asset-title-stack"},sl={class:"asset-title-row"},ll={class:"asset-meta-line"},al={class:"asset-api-card"},nl={class:"asset-api-row"},ol=["disabled"],il={key:0,class:"api-preview-strip"},rl=["src"],ul={class:"asset-import-panel"},cl={class:"asset-import-header"},dl={class:"asset-import-actions"},vl={class:"asset-gallery-section"},pl={class:"asset-gallery-toolbar"},gl={class:"asset-tabs"},fl={class:"asset-filter-bar"},ml={class:"asset-search-box"},hl={class:"asset-view-toggle"},bl={class:"gallery-tab-content"},yl={key:0,class:"empty-gallery"},wl={key:1,class:"empty-gallery"},kl={key:2},Cl={key:0,class:"gallery-bulk-toolbar floating"},_l={class:"bulk-status"},xl={class:"bulk-meta"},Il={class:"bulk-actions"},$l={key:1,class:"bulk-move-group"},Ml=["value","disabled"],El=["disabled"],Ll=["onClick","title"],Sl={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},Ul=["onClick","title"],Bl=["src"],Al={class:"gallery-list-meta"},Vl={class:"gallery-card-overlay"},Nl={key:0,class:"overlay-actions"},Pl=["onClick"],Rl={class:"move-dropdown-menu"},Tl=["onClick"],Dl=["onClick"],Fl={key:1,class:"overlay-actions"},zl=["onClick"],Ol=["onClick"],Hl={key:1,class:"pagination-container"},Wl=["disabled"],Gl={class:"page-indicator"},jl=["disabled"],Zl={class:"distribution-router-view"},ql={class:"endpoint-layout"},Kl={class:"notion-form-panel endpoint-editor-panel"},Ql={class:"panel-title-row"},Jl={class:"notion-panel-title"},Yl={class:"form-fields endpoint-form-grid"},Xl={class:"form-group"},ea=["disabled"],ta={class:"form-group"},sa={class:"form-group span-2"},la={class:"endpoint-preview span-2"},aa={class:"form-actions span-2"},na={class:"notion-table-panel"},oa={class:"table-title-row"},ia={class:"table-count"},ra={class:"table-container"},ua={class:"flat-table"},ca={key:0},da={class:"endpoint-name"},va=["title"],pa={class:"font-mono"},ga={class:"url-line"},fa=["onClick"],ma=["onClick"],ha=["title"],ba={style:{"text-align":"right"}},ya={class:"action-buttons"},wa=["href"],ka=["onClick"],Ca=["onClick"],_a={class:"staging-router-view"},xa={class:"notion-db-header page-section-header staging-page-header"},Ia={class:"staging-header-actions"},$a=["disabled"],Ma={class:"staging-toolbar"},Ea={class:"asset-search-box staging-search-box"},La={class:"staging-count-pill"},Sa={key:0,class:"empty-placeholder-card staging-empty-card"},Ua={key:1,class:"similar-staging-view"},Ba={key:0,class:"empty-gallery"},Aa={key:1,class:"similar-message"},Va={key:2,class:"empty-gallery"},Na={class:"similar-group-header"},Pa={class:"staging-grid"},Ra=["onClick"],Ta=["src","alt"],Da={class:"staging-card-body"},Fa={class:"staging-title-row"},za=["title"],Oa={class:"staging-ext-tag"},Ha={class:"staging-meta-grid"},Wa=["title"],Ga=["onUpdate:modelValue","disabled"],ja=["value"],Za={class:"staging-actions"},qa=["onClick","disabled"],Ka=["onClick","disabled"],Qa={key:2,class:"empty-gallery"},Ja={key:3,class:"staging-grid"},Ya=["onClick"],Xa=["src","alt"],en={class:"staging-card-body"},tn={class:"staging-title-row"},sn=["title"],ln={class:"staging-ext-tag"},an={class:"staging-meta-grid"},nn=["title"],on=["onUpdate:modelValue","disabled"],rn=["value"],un={class:"staging-actions"},cn=["onClick","disabled"],dn=["onClick","disabled"],vn={class:"settings-router-view"},pn={class:"settings-preview-panel"},gn={class:"preview-dashboard-grid"},fn={class:"preview-card route-table-card"},mn={class:"preview-card-header"},hn=["disabled"],bn={key:0,class:"preview-table-wrap"},yn={class:"preview-route-table"},wn=["src","alt","onError"],kn={class:"preview-route-name"},Cn=["title"],_n=["title","onClick"],xn={class:"preview-row-actions"},In=["href"],$n={key:1,class:"preview-empty-state"},Mn={class:"preview-card prompt-card"},En={class:"preview-card-header"},Ln=["disabled"],Sn={class:"preview-code-block final-prompt polished"},Un={key:0},Bn={key:1,class:"text-gray-muted"},An=Jt({__name:"Dashboard",setup(oe){const k=c("resources"),p=c(true),D=c("/memesluna"),Q=c("http://localhost:5140"),J=c([]),C=c([]),F=c([]),Ae=c(""),V=c({}),U=c(""),z=c("all"),Ve=c([]),Y=c(false),be=c(""),ie=c(false),N=c(null),m=Se({name:"",group:"",description:"",url:""}),Ne=c(new Set),Ke=c(""),u=c(null),ye=c(""),X=c("all"),W=c(null),we=c(""),re=c(""),x=Se({images:[],links:[]}),P=Se({}),O=c("all"),ue=c(false),B=c(new Set),ee=c(""),ce=c(""),de=c("name"),ve=c("all"),te=c("grid"),L=c(""),ke=c(false),se=c(null);function bt(l){se.value===l?se.value=null:se.value=l}function Pe(l){return B.value.has(l)}function Qe(l){const t=new Set(B.value);t.has(l)?t.delete(l):t.add(l),B.value=t}function pe(){B.value=new Set,ee.value=""}function yt(){const l=new Set(B.value),t=De.value.filter(s=>s.type==="local");Je.value?t.forEach(s=>l.delete(s.value)):t.forEach(s=>l.add(s.value)),B.value=l}function wt(l){if(l.type==="local"&&M.value.length){Qe(l.value);return}je(l.src)}const I=c(1),Re=c(24),kt=_(()=>{if(!u.value)return[];const l=x.images.map(s=>({id:`local:${s}`,type:"local",label:s,src:We(u.value.name,s),value:s})),t=x.links.map(s=>({id:`external:${s}`,type:"external",label:It(s),src:s,value:s}));return O.value==="local"?l:O.value==="external"?t:[...l,...t]}),Te=_(()=>{const l=ce.value.trim().toLowerCase();let t=kt.value.filter(s=>l?s.label.toLowerCase().includes(l)||s.value.toLowerCase().includes(l):true);return ve.value==="selected"&&(t=t.filter(s=>s.type==="local"&&B.value.has(s.value))),[...t].sort((s,a)=>de.value==="nameDesc"?a.label.localeCompare(s.label):s.label.localeCompare(a.label))}),le=_(()=>Math.max(1,Math.ceil(Te.value.length/Re.value))),De=_(()=>{const l=(I.value-1)*Re.value;return Te.value.slice(l,l+Re.value)}),M=_(()=>Array.from(B.value)),Je=_(()=>{const l=De.value.filter(t=>t.type==="local");return l.length>0&&l.every(t=>B.value.has(t.value))}),Ye=_(()=>{if(!u.value)return"";const l=x.images[0];return l?We(u.value.name,l):x.links[0]||""}),Xe=_(()=>u.value?j(u.value.name):""),et=_(()=>{var l;return((l=u.value)==null?void 0:l.totalCount)||x.images.length+x.links.length}),tt=_(()=>{const l=m.name.trim();return l?j(l):""}),st=_(()=>{const l=C.value.filter(s=>s.hasContent).map(s=>({id:`collection:${s.name}`,type:"collection",typeLabel:"表情包",name:s.name,description:s.description||`${s.name} 表情包`,path:`${D.value}/${s.name}`,fullUrl:j(s.name),previewImages:nt(s.name).slice(0,3)})),t=J.value.map(s=>{const a=j(s.name),v=Ne.value.has(`endpoint:${s.name}`)?[]:[a];return{id:`endpoint:${s.name}`,type:"endpoint",typeLabel:"重定向",name:s.name,description:s.description||"302 重定向",path:`${D.value}/${s.name}`,fullUrl:a,previewImages:v}});return[...l,...t]}),lt=_(()=>{const l=ye.value.trim().toLowerCase();return C.value.filter(t=>{const s=!l||t.name.toLowerCase().includes(l)||(t.description||"").toLowerCase().includes(l),a=X.value==="all"||X.value==="local"&&t.localCount>0&&t.linkCount===0||X.value==="external"&&t.linkCount>0;return s&&a})}),Ce=_(()=>{const l=Ae.value.trim().toLowerCase();return l?F.value.filter(t=>t.filename.toLowerCase().includes(l)||t.originalName.toLowerCase().includes(l)||t.source.toLowerCase().includes(l)||t.reason.toLowerCase().includes(l)):F.value}),Fe=_(()=>{const l=new Set(Ce.value.map(t=>t.id));return Ve.value.map((t,s)=>({...t,label:String(s+1),items:t.items.filter(a=>l.has(a.id))})).filter(t=>t.items.length>1)}),Ct=_(()=>{const l=new Map;for(const t of Fe.value)for(const s of t.items)l.set(s.id,s);return Array.from(l.values())}),ze=c(""),ge=c(""),fe=c(false),Oe=c(null),R=Se({show:false,message:"",type:"info"});let He=null;function r(l,t="info"){He&&clearTimeout(He),R.message=l,R.type=t,R.show=true,He=setTimeout(()=>{R.show=false},2500)}function _e(l){k.value=l,l==="settings"&&ot(),l==="staging"&&me()}function G(){const l=Q.value.endsWith("/")?Q.value.slice(0,-1):Q.value,t=D.value.startsWith("/")?D.value:`/${D.value}`,s=t.endsWith("/")?t.slice(0,-1):t;return`${l}${s}`}function j(l){return`${G()}/${l}`}function We(l,t){return`${G()}/api/admin/collections/${encodeURIComponent(l)}/images/${encodeURIComponent(t)}`}function xe(l){return`${G()}/api/admin/staged-images/${encodeURIComponent(l)}`}function _t(l){if(l.type!=="endpoint")return;const t=new Set(Ne.value);t.add(l.id),Ne.value=t}function Ie(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 xt(l){return Number.isFinite(l)?String(Math.round(l*100))+"%":"-"}function at(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 $e(l){const t=l.split(".").pop();return t?t.toUpperCase():"IMG"}function It(l){try{const t=new URL(l);return decodeURIComponent(t.pathname.split("/").filter(Boolean).pop()||t.hostname)||t.hostname}catch{return l}}function $t(l){return P[l]}function nt(l){var t;return((t=P[l])==null?void 0:t.images)||[]}function Ge(l){return nt(l).slice(0,6)}async function Mt(l){var t;if(!(!l.hasContent||(t=P[l.name])!=null&&t.images.length)){P[l.name]=P[l.name]||{loading:true,images:[]},P[l.name].loading=true;try{const s=await fetch(`${G()}/api/collections/${encodeURIComponent(l.name)}/resources`);if(!s.ok)return;const a=await s.json(),v=9,q=Array.isArray(a.images)?a.images.slice(0,v).map(Ee=>We(l.name,Ee)):[],he=Array.isArray(a.links)?a.links.slice(0,v-q.length):[];P[l.name].images=[...q,...he]}catch{P[l.name].images=[]}finally{P[l.name].loading=false}}}function Et(){C.value.filter(l=>l.hasContent).slice(0,24).forEach(l=>{Mt(l)})}async function h(){try{Q.value=window.location.origin;const l=await b("memesluna/getState");l&&(l.backendPath&&(D.value=l.backendPath),J.value=Array.isArray(l.endpoints)?l.endpoints:[],C.value=Array.isArray(l.collections)?l.collections:[],F.value=Array.isArray(l.stagedImages)?l.stagedImages:[],Et())}catch(l){r(l instanceof Error?l.message:"获取插件状态同步失败","error")}}async function ot(){try{const l=await fetch(`${G()}/api/homepage-data`);if(l.ok){const t=await l.json();ze.value=t.routeInventory||"",ge.value=t.llmPrompt||""}}catch(l){console.error("Failed to sync settings variables preview:",l)}}async function me(){try{const l=await b("memesluna/getStagedImages");F.value=Array.isArray(l)?l:[],z.value==="similar"&&await it()}catch(l){r(l instanceof Error?l.message:"刷新暂缓区失败","error")}}async function it(){Y.value=true;try{const l=await b("memesluna/getSimilarStagedImages");Ve.value=Array.isArray(l==null?void 0:l.groups)?l.groups:[],be.value=(l==null?void 0:l.message)||"",l&&l.available===false&&r(l.message||"相似图片筛选不可用","error")}catch(l){Ve.value=[],be.value="",r(l instanceof Error?l.message:"筛选相似图片失败","error")}finally{Y.value=false}}async function Lt(){if(z.value==="similar"){z.value="all";return}z.value="similar",await it()}async function rt(l){var s;const t=V.value[l.id];if(!t){r("请选择目标表情包","error");return}U.value=l.id;try{const a=await b("memesluna/promoteStagedImage",l.id,t);a?(r(`已归档到表情包 "${t}",新文件名 ${a}`,"success"),delete V.value[l.id]):r("暂缓图片不存在或已被处理","error"),await me(),await h(),((s=u.value)==null?void 0:s.name)===t&&await A(t)}catch(a){r(a instanceof Error?a.message:"归档暂缓图片失败","error")}finally{U.value=""}}async function ut(l){if(confirm(`确认从暂缓区删除 "${l.originalName||l.filename}" 吗?`)){U.value=l.id;try{await b("memesluna/deleteStagedImage",l.id)?(r("已从暂缓区删除","success"),delete V.value[l.id]):r("暂缓图片不存在或已被处理","error"),await me(),await h()}catch(t){r(t instanceof Error?t.message:"删除暂缓图片失败","error")}finally{U.value=""}}}async function St(l){let t=0;for(const s of l)try{const a=await ft(s.file);await b("memesluna/addStagedImage",{base64:a,originalName:s.file.name,source:u.value?`upload:${u.value.name}`:"upload-filter",reason:s.reason}),t++}catch(a){console.error("Failed to stage filtered image:",s.file.name,a)}return t&&await me(),t}function Ut(){Me(),ie.value=true}function ct(){Me(),ie.value=false}function Me(){N.value=null,m.name="",m.group="",m.description="",m.url=""}function Bt(l){N.value=l,ie.value=true,m.name=l.name||"",m.group=l.group||"",m.description=l.description||"",m.url=l.url||""}async function At(){const l=m.name.trim(),t=m.url.trim();if(!l||!t){r("端点名称和目标直链 URL 均必填","error");return}const s={name:l,group:m.group.trim()||"默认分组",description:m.description.trim(),url:t,method:"redirect"};try{p.value=true,N.value?(await b("memesluna/updateEndpoint",N.value.name,s),r("端点路由参数已成功更新","success")):(await b("memesluna/createEndpoint",s),r("接口端点已成功创建","success")),await h(),Me(),ie.value=false}catch(a){r(a instanceof Error?a.message:"保存端点失败","error")}finally{p.value=false}}async function Vt(l){if(confirm(`确认删除端点路由 "${l}" 吗?`))try{p.value=true,await b("memesluna/deleteEndpoint",l),r("该分发端点已彻底删除","success"),await h(),N.value&&N.value.name===l&&Me()}catch(t){r(t instanceof Error?t.message:"删除端点路由失败","error")}finally{p.value=false}}async function Z(l){try{await navigator.clipboard.writeText(l),r("成功复制链接到剪贴板","success")}catch{r("复制失败","error")}}async function Nt(){var t;let l=Ke.value.trim();if(l||(l=((t=window.prompt("请输入表情包名称"))==null?void 0:t.trim())||""),!l){r("表情包名称不能为空","error");return}try{if(p.value=true,!await b("memesluna/createCollection",l)){r("该名称的表情包已存在,请更换其他名称","error");return}r("表情包已成功创建","success"),Ke.value="",await h()}catch(s){r(s instanceof Error?s.message:"创建失败","error")}finally{p.value=false}}async function dt(l){if(W.value=null,!!confirm(`⚠️ 危险操作:确认永久且彻底删除表情包 "${l}",及其包含的所有本地图片文件吗?此项操作不可逆!`))try{p.value=true,await b("memesluna/deleteCollection",l),r("该表情包资源已彻底销毁删除","success"),u.value=null,await h()}catch(t){r(t instanceof Error?t.message:"删除失败","error")}finally{p.value=false}}async function vt(l){W.value=null,u.value=l,we.value=l.description||"",re.value="",ce.value="",de.value="name",ve.value="all",te.value="grid",L.value="",I.value=1,pe(),await A(l.name)}function Pt(){u.value=null,L.value&&URL.revokeObjectURL(L.value),L.value="",pe()}async function A(l){try{const t=await fetch(`${G()}/api/collections/${encodeURIComponent(l)}/resources`);if(t.ok){const s=await t.json();x.images=Array.isArray(s.images)?s.images:[],x.links=Array.isArray(s.links)?s.links:[];const a=new Set(x.images);B.value=new Set(M.value.filter(v=>a.has(v)))}}catch{r("加载该表情包下的图片缓存失败","error")}}async function Rt(){if(!u.value)return;p.value=true,await A(u.value.name),await h();const l=C.value.find(t=>t.name===u.value.name);l&&(u.value=l),p.value=false,r("本地及缓存资源数据已刷新成功","success")}async function Tt(){if(u.value){ke.value=true;try{const l=await fetch(Xe.value,{redirect:"follow"});if(!l.ok){r("测试接口未返回可用图片","error");return}const t=await l.blob();if(!t.type.startsWith("image/")){r("测试接口返回的不是图片资源","error");return}L.value&&URL.revokeObjectURL(L.value),L.value=URL.createObjectURL(t),r("已获取随机图片预览","success"),await h();const s=C.value.find(a=>{var v;return a.name===((v=u.value)==null?void 0:v.name)});s&&(u.value=s)}catch(l){r(l instanceof Error?l.message:"测试接口失败","error")}finally{ke.value=false}}}async function pt(){if(u.value)try{p.value=true,await b("memesluna/setCollectionDescription",u.value.name,we.value.trim()),r("表情包描述已成功保存","success"),await h();const l=C.value.find(t=>t.name===u.value.name);l&&(u.value=l)}catch(l){r(l instanceof Error?l.message:"保存表情包描述失败","error")}finally{p.value=false}}function Dt(){Oe.value&&Oe.value.click()}function Ft(l){const t=l.target;t.files&&gt(t.files)}function zt(l){fe.value=false,l.dataTransfer&&l.dataTransfer.files&&gt(l.dataTransfer.files)}async function gt(l){if(!u.value)return;const t=10*1024*1024,a=Array.from(l).filter(g=>{const K=g.name.toLowerCase();return g.type.startsWith("image/")||/\.(jpe?g|png|gif|bmp|webp|svg|tiff?|psd|avif)$/.test(K)});if(!a.length){r("请拖入或选择有效的图片格式文件","error");return}const v=a.filter(g=>g.name.toLowerCase().endsWith(".avif")),q=a.filter(g=>!g.name.toLowerCase().endsWith(".avif")),he=new Map;for(const g of q)g.size>t&&he.set(g,"文件大小超过 10MB,需人工复核后再决定是否归档");const Ee=Array.from(he,([g,K])=>({file:g,reason:K})),Le=q.filter(g=>!he.has(g));let ae=0;if(Ee.length&&(ae=await St(Ee)),!Le.length){if(ae>0){const g=v.length?`,${v.length} 张 AVIF 已直接拦截`:"";r(`已将 ${ae} 张被过滤图片放入暂缓区${g}`,"success")}else v.length?r("已拦截 AVIF 图片。此格式不会进入暂缓区,请先转码为 JPG/PNG/GIF/WEBP。","error"):r("图片已被过滤,但写入暂缓区失败","error");await h();return}if(Le.length>50){r("单次上传表情上限为 50 张,请分批次导入","error"),ae&&await h();return}r(`正在转码并上传 ${Le.length} 张表情图片...`,"info");try{const g=[];for(const T of Le){const Ze=await ft(T);g.push({base64:Ze,originalName:T.name})}const K=await fetch(`${G()}/api/admin/collections/${encodeURIComponent(u.value.name)}/images`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({images:g})});if(K.ok){const T=await K.json();if(T.ok&&T.uploaded&&T.uploaded.length>0){const Ze=ae?`,另有 ${ae} 张进入暂缓区`:"",Kt=v.length?`,${v.length} 张 AVIF 已直接拦截`:"";r(`成功将 ${T.uploaded.length} 张表情入库并完成数字重命名${Ze}${Kt}`,"success")}else r("上传图片写入失败","error")}else{const T=await K.json().catch(()=>({}));r(T.error||"上传中继失败","error")}}catch(g){r(`上传网络错误: ${g instanceof Error?g.message:"错误"}`,"error")}finally{await A(u.value.name),await h()}}function ft(l){return new Promise((t,s)=>{const a=new FileReader;a.readAsDataURL(l),a.onload=()=>{const q=a.result.split(",")[1];t(q)},a.onerror=v=>s(v)})}async function Ot(){if(!u.value)return;const l=re.value.trim();if(!l){r("链接文本不能为空","error");return}try{p.value=true;const t=await b("memesluna/addLinks",u.value.name,l);r(`已成功录入 ${t} 条网络图片外链`,"success"),re.value="",await A(u.value.name),await h()}catch(t){r(t instanceof Error?t.message:"添加失败","error")}finally{p.value=false}}async function Ht(l,t){if(confirm("确认删除该图片网络外链直链吗?"))try{p.value=true,await b("memesluna/deleteLink",l,t),r("外链直链已彻底删除","success"),await A(l),await h()}catch(s){r(s instanceof Error?s.message:"删除链接失败","error")}finally{p.value=false}}async function Wt(l,t){if(confirm(`确认永久删除该本地图片素材 "${t}" 吗?此操作无法恢复!`))try{p.value=true,await b("memesluna/deleteLocalImage",l,t),r("该本地图片已永久删除","success"),await A(l),await h()}catch(s){r(s instanceof Error?s.message:"删除失败","error")}finally{p.value=false}}async function Gt(){if(!u.value||!M.value.length)return;const l=M.value;if(confirm(`确认永久删除已选择的 ${l.length} 张本地图片素材吗?此操作无法恢复!`))try{p.value=true;for(const t of l)await b("memesluna/deleteLocalImage",u.value.name,t);r(`已删除 ${l.length} 张本地图片`,"success"),pe(),await A(u.value.name),await h()}catch(t){r(t instanceof Error?t.message:"批量删除失败","error")}finally{p.value=false}}async function jt(l,t,s){try{p.value=true,await b("memesluna/moveLocalImage",l,t,s)?(r(`已将素材移动至表情包 "${t}" 并重命名`,"success"),await A(l),await h()):r("移动失败","error")}catch(a){r(a instanceof Error?a.message:"移库失败","error")}finally{p.value=false}}async function Zt(){if(!u.value||!M.value.length||!ee.value)return;const l=u.value.name,t=ee.value;if(t===l){r("不能移动到当前表情包","error");return}const s=M.value;try{p.value=true;for(const a of s)await b("memesluna/moveLocalImage",l,t,a);r(`已将 ${s.length} 张素材移动至表情包 "${t}"`,"success"),pe(),await A(l),await h()}catch(a){r(a instanceof Error?a.message:"批量移动失败","error")}finally{p.value=false}}function je(l){window.open(l,"_blank")}function qt(l){W.value=W.value===l?null:l}const mt=()=>{se.value=null,W.value=null};return Yt(async()=>{window.addEventListener("click",mt),p.value=true,await h(),p.value=false}),Xt(()=>{window.removeEventListener("click",mt),L.value&&URL.revokeObjectURL(L.value)}),qe(x,()=>{I.value>le.value&&le.value>0&&(I.value=le.value)}),qe([ce,de,ve],()=>{I.value=1}),qe([ye,X],()=>{W.value=null}),(l,t)=>(n(),o("div",as,[d(" MAIN CONTENT AREA "),e("main",ns,[d(" Top Notion Breadcrumbs "),e("header",os,[e("div",is,[t[35]||(t[35]=e("span",{class:"crumb-root"},"MemesLuna 控制台",-1)),t[36]||(t[36]=e("span",{class:"crumb-separator"},"/",-1)),k.value==="resources"?(n(),o("span",rs,"表情包管理")):k.value==="distribution"?(n(),o("span",us,"分发管理")):k.value==="settings"?(n(),o("span",cs,"预览")):k.value==="staging"?(n(),o("span",ds,"暂缓区")):d("v-if",true),k.value==="resources"&&u.value?(n(),o(f,{key:4},[t[34]||(t[34]=e("span",{class:"crumb-separator"},"/",-1)),e("span",vs,"表情包: "+i(u.value.name),1)],64)):d("v-if",true)]),d(" Quick Stats Banner "),p.value?d("v-if",true):(n(),o("div",ps,[e("span",gs,"📂 表情包总数: "+i(C.value.length),1),e("span",fs,"🌐 分发接口: "+i(J.value.length),1),e("span",ms,"🕓 暂缓候选: "+i(F.value.length),1)]))]),d(" NOTION-STYLE HORIZONTAL VIEW SWITCHER "),u.value?d("v-if",true):(n(),o("div",hs,[e("button",{onClick:t[0]||(t[0]=s=>_e("resources")),class:y(["switcher-btn",k.value==="resources"?"active":""])},[...t[37]||(t[37]=[e("span",{class:"switcher-icon"},"📦",-1),e("span",{class:"switcher-label"},"表情包管理",-1)])],2),e("button",{onClick:t[1]||(t[1]=s=>_e("distribution")),class:y(["switcher-btn",k.value==="distribution"?"active":""])},[...t[38]||(t[38]=[e("span",{class:"switcher-icon"},"🌐",-1),e("span",{class:"switcher-label"},"分发管理",-1)])],2),e("button",{onClick:t[2]||(t[2]=s=>_e("staging")),class:y(["switcher-btn",k.value==="staging"?"active":""])},[...t[39]||(t[39]=[e("span",{class:"switcher-icon"},"🕓",-1),e("span",{class:"switcher-label"},"暂缓区",-1)])],2),e("button",{onClick:t[3]||(t[3]=s=>_e("settings")),class:y(["switcher-btn",k.value==="settings"?"active":""])},[...t[40]||(t[40]=[e("span",{class:"switcher-icon"},"👁️",-1),e("span",{class:"switcher-label"},"预览",-1)])],2)])),d(" Global Toast Alert Banner "),es(ts,{name:"fade"},{default:ss(()=>[R.show?(n(),o("div",{key:0,class:y(["toast-banner",R.type])},[R.type==="success"?(n(),o("svg",bs,[...t[41]||(t[41]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):R.type==="error"?(n(),o("svg",ys,[...t[42]||(t[42]=[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",ws,[...t[43]||(t[43]=[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(R.message),1)],2)):d("v-if",true)]),_:1}),d(" Loading Cover "),p.value?(n(),o("div",ks,[...t[44]||(t[44]=[e("div",{class:"spinner"},null,-1),e("p",null,"正在同步数据...",-1)])])):(n(),o(f,{key:2},[d(" MAIN ROUTER BODY "),e("div",Cs,[d(" MENU VIEW 1: RESOURCES (📦) "),k.value==="resources"?(n(),o("div",_s,[d(" Collection Lists (Folder view) "),u.value?(n(),o(f,{key:1},[d(" Collection Details (Inside details view) "),e("div",{class:"collection-detail-layout",onDragover:t[26]||(t[26]=E(s=>fe.value=true,["prevent"]))},[e("div",Gs,[e("div",js,[e("div",Zs,[e("button",{onClick:Pt,class:"detail-back-btn",title:"返回列表"},[...t[56]||(t[56]=[e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"m15 18-6-6 6-6"})],-1),S(" 返回列表 ",-1)])]),t[57]||(t[57]=e("span",{class:"detail-separator"},"/",-1)),e("span",qs,i(u.value.name),1),t[58]||(t[58]=e("span",{class:"detail-separator"},"/",-1)),t[59]||(t[59]=e("span",{class:"detail-crumb-strong"},"图片素材",-1))]),e("div",Ks,[e("button",{onClick:Rt,class:"asset-btn secondary",title:"刷新缓存"},[...t[60]||(t[60]=[Ue('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-cbb0f9f4><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-cbb0f9f4></path><path d="M3 21v-5h5" data-v-cbb0f9f4></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-cbb0f9f4></path><path d="M16 8h5V3" data-v-cbb0f9f4></path></svg> 刷新缓存 ',2)])]),e("button",{onClick:Dt,class:"asset-btn primary"},[...t[61]||(t[61]=[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),S(" 上传图片 ",-1)])]),e("button",{onClick:t[7]||(t[7]=s=>ue.value=!ue.value),class:"asset-btn secondary"},[...t[62]||(t[62]=[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),S(" 导入外链 ",-1)])]),e("button",{onClick:t[8]||(t[8]=s=>dt(u.value.name)),class:"asset-btn danger ghost",title:"删除表情包"},[...t[63]||(t[63]=[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:Oe,type:"file",multiple:"",accept:"image/*",class:"hidden-file-input",onChange:Ft},null,544)])]),e("section",Qs,[e("div",Js,[e("div",Ys,[Ye.value?(n(),o("img",{key:0,src:Ye.value,class:"asset-avatar-img",alt:`${u.value.name} 封面`},null,8,Xs)):(n(),o("div",el,[...t[64]||(t[64]=[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",tl,[e("div",sl,[e("h1",null,i(u.value.name),1),t[65]||(t[65]=e("span",{class:"asset-pill"},"本地",-1))]),w(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>we.value=s),class:"asset-description-input",placeholder:"添加表情包描述",onBlur:pt,onKeyup:ls(pt,["enter"])},null,544),[[H,we.value]]),e("div",ll,[e("span",null,"创建于 "+i(Ie(u.value.createdAt)),1),e("span",null,"最后更新 "+i(Ie(u.value.updatedAt)),1),e("span",null,"共 "+i(et.value)+" 张图片",1)])])]),e("div",al,[t[68]||(t[68]=e("div",{class:"asset-card-label"},"API 调用地址",-1)),e("div",nl,[e("code",null,i(Xe.value),1),e("button",{onClick:Tt,class:"asset-test-btn",disabled:ke.value},[t[66]||(t[66]=e("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M8 5v14l11-7z"})],-1)),S(" "+i(ke.value?"测试中":"测试接口"),1)],8,ol)]),t[69]||(t[69]=e("div",{class:"asset-api-hint"},"直接访问该链接将随机返回一张表情图片",-1)),L.value?(n(),o("div",il,[e("img",{src:L.value,alt:"API 返回图片预览"},null,8,rl),t[67]||(t[67]=e("span",null,"随机预览",-1))])):d("v-if",true)])]),d(" Drag over drop zone area "),w(e("div",{class:"sidebar-drop-zone-overlay",onDragover:t[10]||(t[10]=E(s=>fe.value=true,["prevent"])),onDragleave:t[11]||(t[11]=E(s=>fe.value=false,["prevent"])),onDrop:E(zt,["prevent"])},[...t[70]||(t[70]=[Ue('<div class="drop-overlay-box" data-v-cbb0f9f4><svg class="drop-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-cbb0f9f4><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-v-cbb0f9f4></path><polyline points="17 8 12 3 7 8" data-v-cbb0f9f4></polyline><line x1="12" y1="3" x2="12" y2="15" data-v-cbb0f9f4></line></svg><p data-v-cbb0f9f4>释放图片文件以导入此表情包</p></div>',1)])],544),[[Be,fe.value]]),w(e("div",ul,[e("div",cl,[t[72]||(t[72]=e("div",null,[e("div",{class:"asset-import-title"},"导入外链图片"),e("div",{class:"asset-import-desc"},"每行一个以 http:// 或 https:// 开头的图片链接")],-1)),e("button",{onClick:t[12]||(t[12]=s=>ue.value=false),class:"asset-icon-btn compact",title:"关闭导入面板"},[...t[71]||(t[71]=[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)])])]),w(e("textarea",{"onUpdate:modelValue":t[13]||(t[13]=s=>re.value=s),rows:"4",class:"asset-link-textarea",placeholder:"每行一个以 http:// 或 https:// 开头的链接"},null,512),[[H,re.value]]),e("div",dl,[e("button",{onClick:Ot,class:"asset-btn primary"},"确认导入"),e("button",{onClick:t[14]||(t[14]=s=>ue.value=false),class:"asset-btn secondary"},"取消")])],512),[[Be,ue.value]]),e("section",vl,[e("div",pl,[e("div",gl,[e("button",{onClick:t[15]||(t[15]=s=>{O.value="all",I.value=1}),class:y(["asset-tab",O.value==="all"?"active":""])},[t[73]||(t[73]=S(" 全部 ",-1)),e("span",null,i(et.value),1)],2),e("button",{onClick:t[16]||(t[16]=s=>{O.value="local",I.value=1}),class:y(["asset-tab",O.value==="local"?"active":""])},[t[74]||(t[74]=S(" 本地图片 ",-1)),e("span",null,i(x.images.length),1)],2),e("button",{onClick:t[17]||(t[17]=s=>{O.value="external",I.value=1}),class:y(["asset-tab",O.value==="external"?"active":""])},[t[75]||(t[75]=S(" 外链图片 ",-1)),e("span",null,i(x.links.length),1)],2)]),e("div",fl,[e("div",ml,[t[76]||(t[76]=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)),w(e("input",{"onUpdate:modelValue":t[18]||(t[18]=s=>ce.value=s),placeholder:"搜索图片或外链"},null,512),[[H,ce.value]])]),w(e("select",{"onUpdate:modelValue":t[19]||(t[19]=s=>ve.value=s),class:"asset-select"},[...t[77]||(t[77]=[e("option",{value:"all"},"筛选: 全部",-1),e("option",{value:"selected"},"筛选: 已选",-1)])],512),[[ne,ve.value]]),w(e("select",{"onUpdate:modelValue":t[20]||(t[20]=s=>de.value=s),class:"asset-select"},[...t[78]||(t[78]=[e("option",{value:"name"},"排序: 文件名",-1),e("option",{value:"nameDesc"},"排序: 文件名倒序",-1)])],512),[[ne,de.value]]),e("div",hl,[e("button",{onClick:t[21]||(t[21]=s=>te.value="grid"),class:y(te.value==="grid"?"active":""),title:"网格视图"},[...t[79]||(t[79]=[Ue('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-cbb0f9f4><rect x="3" y="3" width="7" height="7" rx="1" data-v-cbb0f9f4></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-cbb0f9f4></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-cbb0f9f4></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-cbb0f9f4></rect></svg>',1)])],2),e("button",{onClick:t[22]||(t[22]=s=>te.value="list"),class:y(te.value==="list"?"active":""),title:"列表视图"},[...t[80]||(t[80]=[Ue('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-cbb0f9f4><path d="M8 6h13" data-v-cbb0f9f4></path><path d="M8 12h13" data-v-cbb0f9f4></path><path d="M8 18h13" data-v-cbb0f9f4></path><path d="M3 6h.01" data-v-cbb0f9f4></path><path d="M3 12h.01" data-v-cbb0f9f4></path><path d="M3 18h.01" data-v-cbb0f9f4></path></svg>',1)])],2)])])]),e("div",bl,[!x.images.length&&!x.links.length?(n(),o("div",yl," 表情包内尚无任何图片资源 ")):Te.value.length?(n(),o("div",kl,[M.value.length?(n(),o("div",Cl,[e("div",_l,[t[81]||(t[81]=e("span",{class:"bulk-title"},"本地素材",-1)),e("span",xl,"已选择 "+i(M.value.length)+" 张",1)]),e("div",Il,[e("button",{onClick:yt,class:"toolbar-btn compact"},i(Je.value?"取消本页":"选择本页"),1),M.value.length?(n(),o("button",{key:0,onClick:pe,class:"toolbar-btn compact"}," 清空选择 ")):d("v-if",true),M.value.length?(n(),o("div",$l,[w(e("select",{"onUpdate:modelValue":t[23]||(t[23]=s=>ee.value=s),class:"flat-select compact-select"},[t[82]||(t[82]=e("option",{value:""},"移动到...",-1)),(n(true),o(f,null,$(C.value,s=>(n(),o("option",{key:s.name,value:s.name,disabled:s.name===u.value.name},i(s.name),9,Ml))),128))],512),[[ne,ee.value]]),e("button",{onClick:Zt,class:"toolbar-btn compact",disabled:!ee.value}," 移动 ",8,El)])):d("v-if",true),t[83]||(t[83]=e("button",{class:"toolbar-btn compact",disabled:""},"设置标签",-1)),M.value.length?(n(),o("button",{key:2,onClick:Gt,class:"toolbar-btn compact danger"}," 批量删除 ")):d("v-if",true)])])):d("v-if",true),e("div",{class:y(["notion-gallery-grid",te.value==="list"?"list-mode":""])},[(n(true),o(f,null,$(De.value,s=>(n(),o("div",{key:s.id,class:y(["notion-gallery-card",{"notion-gallery-card-active-dropdown":s.type==="local"&&se.value===s.value,selected:s.type==="local"&&Pe(s.value),external:s.type==="external"}])},[s.type==="local"?(n(),o("button",{key:0,class:"gallery-select-toggle",onClick:E(a=>Qe(s.value),["stop"]),title:Pe(s.value)?"取消选择":"选择图片"},[Pe(s.value)?(n(),o("svg",Sl,[...t[84]||(t[84]=[e("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):d("v-if",true)],8,Ll)):d("v-if",true),e("div",{class:"gallery-img-container",onClick:a=>wt(s),style:{cursor:"pointer"},title:s.type==="local"&&M.value.length?"切换选择状态":"在新标签页中打开原图"},[e("img",{src:s.src,class:"gallery-img",loading:"lazy"},null,8,Bl),e("span",{class:y(["image-format-badge",s.type])},i(s.type==="external"?"LINK":$e(s.value)),3)],8,Ul),e("div",Al,[e("div",null,i(s.label),1),e("span",null,i(s.type==="external"?"外链图片":$e(s.value)),1)]),e("div",Vl,[s.type==="local"?(n(),o("div",Nl,[e("div",{class:"card-action-btn move move-dropdown-container",onClick:E(a=>bt(s.value),["stop"])},[t[85]||(t[85]=e("span",null,"修改",-1)),w(e("div",Rl,[(n(true),o(f,null,$(C.value,a=>(n(),o(f,null,[a.name!==u.value.name?(n(),o("button",{key:a.name,onClick:E(v=>jt(u.value.name,a.name,s.value),["stop"]),class:"dropdown-item"},i(a.name),9,Tl)):d("v-if",true)],64))),256))],512),[[Be,se.value===s.value]])],8,Pl),e("button",{onClick:E(a=>Wt(u.value.name,s.value),["stop"]),class:"card-action-btn danger"}," 删除 ",8,Dl)])):(n(),o("div",Fl,[e("button",{onClick:E(a=>Z(s.value),["stop"]),class:"card-action-btn"}," 复制 ",8,zl),e("button",{onClick:E(a=>Ht(u.value.name,s.value),["stop"]),class:"card-action-btn danger"}," 删除 ",8,Ol)]))])],2))),128))],2),le.value>1?(n(),o("div",Hl,[e("button",{disabled:I.value===1,onClick:t[24]||(t[24]=s=>I.value--),class:"btn btn-secondary page-btn"}," 上一页 ",8,Wl),e("span",Gl,[t[86]||(t[86]=S("第 ",-1)),e("b",null,i(I.value),1),S(" / "+i(le.value)+" 页",1)]),e("button",{disabled:I.value===le.value,onClick:t[25]||(t[25]=s=>I.value++),class:"btn btn-secondary page-btn"}," 下一页 ",8,jl)])):d("v-if",true)])):(n(),o("div",wl," 没有匹配当前搜索或筛选条件的图片 "))])])])],32)],2112)):(n(),o("div",xs,[d(" Creator bar in Notion Style "),e("div",Is,[t[49]||(t[49]=e("div",null,[e("h1",{class:"notion-main-title"},"表情包管理"),e("p",{class:"section-desc compact"},"管理表情包合集与图片素材")],-1)),e("div",$s,[e("div",Ms,[t[45]||(t[45]=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)),w(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>ye.value=s),class:"flat-input collection-search-input",placeholder:"搜索表情包合集..."},null,512),[[H,ye.value]])]),e("label",Es,[t[47]||(t[47]=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)),w(e("select",{"onUpdate:modelValue":t[5]||(t[5]=s=>X.value=s),class:"flat-select collection-filter-select","aria-label":"筛选表情包合集"},[...t[46]||(t[46]=[e("option",{value:"all"},"全部",-1),e("option",{value:"local"},"仅本地",-1),e("option",{value:"external"},"含外链",-1)])],512),[[ne,X.value]])]),e("button",{onClick:Nt,class:"btn btn-primary btn-notion"},[...t[48]||(t[48]=[e("span",{class:"btn-plus"},"+",-1),S(" 新建表情包 ",-1)])])])]),t[55]||(t[55]=e("hr",{class:"notion-hr"},null,-1)),d(" Folders grid layout "),C.value.length?lt.value.length?(n(),o("div",Us,[(n(true),o(f,null,$(lt.value,s=>{var a;return n(),o("div",{key:s.name,class:"folder-card",onClick:v=>vt(s)},[e("div",{class:y(["folder-cover",Ge(s.name).length?"has-preview":"empty"])},[Ge(s.name).length?(n(true),o(f,{key:0},$(Ge(s.name),v=>(n(),o("img",{key:v,src:v,class:"folder-cover-img",loading:"lazy",alt:`${s.name} 预览图`},null,8,As))),128)):(n(),o("div",Vs,[...t[52]||(t[52]=[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=$t(s.name))!=null&&a.loading?(n(),o("span",Ns,"同步中")):d("v-if",true)],2),e("div",Ps,[e("div",Rs,[e("div",{class:"folder-name",title:s.description||s.name},i(s.name),9,Ts),e("button",{class:"folder-more-btn",title:"更多操作",onClick:E(v=>qt(s.name),["stop"])},[...t[53]||(t[53]=[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,Ds),W.value===s.name?(n(),o("div",{key:0,class:"folder-action-menu",onClick:t[6]||(t[6]=E(()=>{},["stop"]))},[e("button",{onClick:v=>vt(s)},"打开详情",8,Fs),e("button",{class:"danger",onClick:v=>dt(s.name)},"删除表情包",8,zs)])):d("v-if",true)]),e("div",Os,i(s.totalCount)+" 张图片",1),e("div",Hs,[e("span",Ws,[t[54]||(t[54]=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)),S(" 本地 "+i(s.localCount)+" · 外链 "+i(s.linkCount),1)])])])],8,Bs)}),128))])):(n(),o("div",Ss,[...t[51]||(t[51]=[e("div",{class:"empty-icon"},"🔎",-1),e("h3",null,"没有匹配的表情包合集",-1),e("p",null,"换个关键词或筛选条件再试试。",-1)])])):(n(),o("div",Ls,[...t[50]||(t[50]=[e("div",{class:"empty-icon"},"📁",-1),e("h3",null,"尚未创建任何表情包",-1),e("p",null,"点击右上角按钮即可快速创建一个新的表情包合集。",-1)])]))]))])):k.value==="distribution"?(n(),o(f,{key:1},[d(" MENU VIEW 2: DISTRIBUTION (🌐) "),e("div",Zl,[e("div",{class:"notion-db-header page-section-header"},[t[87]||(t[87]=e("div",null,[e("h1",{class:"notion-main-title"},"分发管理"),e("p",{class:"section-desc compact"},"管理统一重定向端点与外部目标地址")],-1)),e("button",{onClick:Ut,class:"btn btn-primary btn-notion"}," + 新建端点 ")]),t[102]||(t[102]=e("hr",{class:"notion-hr"},null,-1)),e("div",ql,[d(" Endpoint Editor Form Panel "),w(e("div",Kl,[e("div",Ql,[e("h2",Jl,i(N.value?"编辑分发端点":"创建新分发端点"),1),e("button",{onClick:ct,class:"icon-btn hover-bg",title:"收起编辑器"},[...t[88]||(t[88]=[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",Yl,[e("div",Xl,[t[89]||(t[89]=e("label",null,"端点名称 *",-1)),w(e("input",{"onUpdate:modelValue":t[27]||(t[27]=s=>m.name=s),disabled:!!N.value,class:"flat-input",placeholder:"例如: moe"},null,8,ea),[[H,m.name]]),t[90]||(t[90]=e("span",{class:"field-hint"},"只能包含字母、数字、下划线和连字符",-1))]),e("div",ta,[t[91]||(t[91]=e("label",null,"描述",-1)),w(e("input",{"onUpdate:modelValue":t[28]||(t[28]=s=>m.description=s),class:"flat-input",placeholder:"例如: 萌版横图"},null,512),[[H,m.description]])]),e("div",sa,[t[92]||(t[92]=e("label",null,"目标 URL *",-1)),w(e("input",{"onUpdate:modelValue":t[29]||(t[29]=s=>m.url=s),class:"flat-input",placeholder:"https://example.com/api"},null,512),[[H,m.url]])]),e("div",la,[t[93]||(t[93]=e("span",null,"访问预览",-1)),e("code",{onClick:t[30]||(t[30]=s=>Z(tt.value))},i(tt.value||"填写端点名称后生成预览"),1)]),e("div",aa,[e("button",{onClick:At,class:"btn btn-primary flex-grow"},i(N.value?"保存修改":"立即创建"),1),e("button",{onClick:ct,class:"btn btn-secondary"}," 取消 ")])])],512),[[Be,ie.value]]),d(" Endpoints Table List "),e("div",na,[e("div",oa,[t[94]||(t[94]=e("h2",{class:"notion-panel-title"},"端点列表",-1)),e("span",ia,i(J.value.length)+" 条路由",1)]),e("div",ra,[e("table",ua,[t[101]||(t[101]=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,[J.value.length?d("v-if",true):(n(),o("tr",ca,[...t[95]||(t[95]=[e("td",{colspan:"5",class:"empty-cell"},"尚未配置任何转发 API 端点",-1)])])),(n(true),o(f,null,$(J.value,s=>(n(),o("tr",{key:s.name},[e("td",null,[e("div",da,i(s.name),1)]),e("td",{class:"cell-desc",title:s.description},i(s.description||"-"),9,va),t[100]||(t[100]=e("td",null,[e("span",{class:"method-tag redirect"},"重定向"),e("div",{class:"target-url"},"302 重定向")],-1)),e("td",pa,[e("div",ga,[e("span",{class:"link-text",onClick:a=>Z(j(s.name))}," /"+i(s.name),9,fa),e("button",{onClick:a=>Z(j(s.name)),class:"icon-btn-inline",title:"复制完整链接"},[...t[96]||(t[96]=[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,ma)]),e("div",{class:"target-url truncate",title:s.url}," → "+i(s.url),9,ha)]),e("td",ba,[e("div",ya,[e("a",{href:j(s.name),target:"_blank",class:"icon-btn hover-bg",title:"测试该端点访问"},[...t[97]||(t[97]=[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,wa),e("button",{onClick:a=>Bt(s),class:"icon-btn hover-bg",title:"编辑参数"},[...t[98]||(t[98]=[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,ka),e("button",{onClick:a=>Vt(s.name),class:"icon-btn hover-danger",title:"彻底删除"},[...t[99]||(t[99]=[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,Ca)])])]))),128))])])])])])])],2112)):k.value==="staging"?(n(),o(f,{key:2},[d(" MENU VIEW 3: STAGING (暂缓区) "),e("div",_a,[e("div",xa,[t[103]||(t[103]=e("div",null,[e("h1",{class:"notion-main-title"},"暂缓区"),e("p",{class:"section-desc compact"},"复核被上传过滤器拦截或自动收集的候选图片,再手动归档到表情包分组")],-1)),e("div",Ia,[e("button",{onClick:Lt,class:y(["btn",z.value==="similar"?"btn-primary":"btn-secondary","btn-notion"]),disabled:Y.value||F.value.length<2},i(Y.value?"筛选中...":z.value==="similar"?"显示全部":"筛选相似图片"),11,$a),e("button",{onClick:me,class:"btn btn-secondary btn-notion"}," 刷新列表 ")])]),e("div",Ma,[e("div",Ea,[t[104]||(t[104]=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)),w(e("input",{"onUpdate:modelValue":t[31]||(t[31]=s=>Ae.value=s),placeholder:"搜索文件名、来源或原因"},null,512),[[H,Ae.value]])]),e("div",La,i(z.value==="similar"?Ct.value.length:Ce.value.length)+" / "+i(F.value.length)+" 张候选 ",1)]),F.value.length?z.value==="similar"?(n(),o("div",Ua,[Y.value?(n(),o("div",Ba,"正在筛选相似图片...")):be.value?(n(),o("div",Aa,i(be.value),1)):d("v-if",true),!Y.value&&!Fe.value.length?(n(),o("div",Va," 暂缓区没有匹配当前条件的相似图片 ")):d("v-if",true),(n(true),o(f,null,$(Fe.value,s=>(n(),o("section",{key:s.id,class:"similar-group"},[e("div",Na,[e("div",null,[e("h3",null,"相似组 "+i(s.label),1),e("p",null,i(s.items.length)+" 张候选,最高相似度 "+i(xt(s.similarity)),1)])]),e("div",Pa,[(n(true),o(f,null,$(s.items,a=>(n(),o("article",{key:a.id,class:"staging-card"},[e("button",{class:"staging-image-shell",onClick:v=>je(xe(a.id)),title:"打开原图"},[e("img",{class:"staging-image",src:xe(a.id),alt:a.originalName||a.filename,loading:"lazy"},null,8,Ta)],8,Ra),e("div",Da,[e("div",Fa,[e("div",{class:"staging-title",title:a.originalName||a.filename},i(a.originalName||a.filename),9,za),e("span",Oa,i($e(a.filename)),1)]),e("div",Ha,[e("span",{title:a.reason||"暂缓候选"},i(a.reason||"暂缓候选"),9,Wa),e("span",null,i(a.source||"filter"),1),e("span",null,i(at(a.size)),1),e("span",null,i(Ie(a.createdAt)),1)]),w(e("select",{"onUpdate:modelValue":v=>V.value[a.id]=v,class:"flat-select staging-select",disabled:!C.value.length},[t[106]||(t[106]=e("option",{value:""},"选择目标表情包",-1)),(n(true),o(f,null,$(C.value,v=>(n(),o("option",{key:v.name,value:v.name},i(v.name),9,ja))),128))],8,Ga),[[ne,V.value[a.id]]]),e("div",Za,[e("button",{onClick:v=>rt(a),class:"btn btn-primary staging-action-btn",disabled:U.value===a.id||!V.value[a.id]},i(U.value===a.id?"处理中...":"归档到表情包"),9,qa),e("button",{onClick:v=>ut(a),class:"btn btn-danger staging-action-btn",disabled:U.value===a.id}," 删除 ",8,Ka)])])]))),128))])]))),128))])):Ce.value.length?(n(),o("div",Ja,[(n(true),o(f,null,$(Ce.value,s=>(n(),o("article",{key:s.id,class:"staging-card"},[e("button",{class:"staging-image-shell",onClick:a=>je(xe(s.id)),title:"打开原图"},[e("img",{class:"staging-image",src:xe(s.id),alt:s.originalName||s.filename,loading:"lazy"},null,8,Xa)],8,Ya),e("div",en,[e("div",tn,[e("div",{class:"staging-title",title:s.originalName||s.filename},i(s.originalName||s.filename),9,sn),e("span",ln,i($e(s.filename)),1)]),e("div",an,[e("span",{title:s.reason||"暂缓候选"},i(s.reason||"暂缓候选"),9,nn),e("span",null,i(s.source||"filter"),1),e("span",null,i(at(s.size)),1),e("span",null,i(Ie(s.createdAt)),1)]),w(e("select",{"onUpdate:modelValue":a=>V.value[s.id]=a,class:"flat-select staging-select",disabled:!C.value.length},[t[107]||(t[107]=e("option",{value:""},"选择目标表情包",-1)),(n(true),o(f,null,$(C.value,a=>(n(),o("option",{key:a.name,value:a.name},i(a.name),9,rn))),128))],8,on),[[ne,V.value[s.id]]]),e("div",un,[e("button",{onClick:a=>rt(s),class:"btn btn-primary staging-action-btn",disabled:U.value===s.id||!V.value[s.id]},i(U.value===s.id?"处理中...":"归档到表情包"),9,cn),e("button",{onClick:a=>ut(s),class:"btn btn-danger staging-action-btn",disabled:U.value===s.id}," 删除 ",8,dn)])])]))),128))])):(n(),o("div",Qa," 没有匹配当前搜索条件的暂缓图片 ")):(n(),o("div",Sa,[...t[105]||(t[105]=[e("div",{class:"empty-icon"},"🕓",-1),e("h3",null,"暂缓区为空",-1),e("p",null,"上传时被过滤器拦截或自动收集命中的候选图片会先保存在这里,等待人工复核。",-1)])]))])],2112)):k.value==="settings"?(n(),o(f,{key:3},[d(" MENU VIEW 4: PREVIEW (👁️ 预览) "),e("div",vn,[e("div",pn,[e("div",{class:"notion-db-header page-section-header preview-page-header"},[t[108]||(t[108]=e("div",null,[e("h1",{class:"notion-main-title"},"预览"),e("p",{class:"section-desc compact"},"实时预览路由与最终提示词效果")],-1)),e("button",{onClick:ot,class:"btn btn-secondary btn-notion"}," 刷新预览 ")]),e("div",gn,[e("section",fn,[e("div",mn,[t[109]||(t[109]=e("div",null,[e("div",{class:"preview-card-title"},"路由清单"),e("div",{class:"preview-card-desc"},"{endpoint} 中可供 ChatLuna 使用的合集与端点")],-1)),e("button",{onClick:t[32]||(t[32]=s=>Z(ze.value)),class:"preview-action-btn",disabled:!ze.value,title:"复制路由清单"}," 复制清单 ",8,hn)]),st.value.length?(n(),o("div",bn,[e("table",yn,[t[111]||(t[111]=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(f,null,$(st.value,s=>(n(),o("tr",{key:s.id},[e("td",null,[s.previewImages.length?(n(),o("div",{key:0,class:y(["preview-mini-cover",s.previewImages.length===1?"single":""])},[(n(true),o(f,null,$(s.previewImages,a=>(n(),o("img",{key:a,src:a,alt:`${s.name} 预览`,loading:"lazy",onError:v=>_t(s)},null,40,wn))),128))],2)):(n(),o("div",{key:1,class:y(["preview-route-icon",s.type])},i(s.type==="collection"?"包":"API"),3))]),e("td",null,[e("div",kn,i(s.name),1),e("span",{class:y(["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,Cn)]),e("td",null,[e("code",{class:"preview-route-path",title:s.fullUrl,onClick:a=>Z(s.fullUrl)},i(s.path),9,_n)]),e("td",null,[e("div",xn,[e("a",{href:s.fullUrl,target:"_blank",class:"icon-btn hover-bg",title:"打开预览"},[...t[110]||(t[110]=[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,In)])])]))),128))])])])):(n(),o("div",$n," 暂无可用表情包及路由,请前往表情包管理或分发管理中创建。 "))]),e("section",Mn,[e("div",En,[t[112]||(t[112]=e("div",null,[e("div",{class:"preview-card-title"},"最终提示词"),e("div",{class:"preview-card-desc"},"{memesluna} 注入给 LLM 的完整文本")],-1)),e("button",{onClick:t[33]||(t[33]=s=>Z(ge.value)),class:"preview-action-btn",disabled:!ge.value,title:"复制最终提示词"}," 复制提示词 ",8,Ln)]),e("div",Sn,[ge.value?(n(),o("pre",Un,i(ge.value),1)):(n(),o("pre",Bn,"- 正在获取最终提示词预览... -"))])])])])])],2112)):d("v-if",true)])],2112))])]))}}),Vn=(oe,k)=>{const p=oe.__vccOpts||oe;for(const[D,Q]of k)p[D]=Q;return p},Nn=Vn(An,[["__scopeId","data-v-cbb0f9f4"]]),Pn="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",Rn={name:"MemesLunaIcon",render(){return ht("svg",{class:"k-icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},[ht("path",{fill:"currentColor",d:Pn})])}};Qt.register("MemesLunaEmoji",Rn);const Fn=oe=>{oe.page({name:"MemesLuna",path:"/memesluna",icon:"MemesLunaEmoji",component:Nn,authority:1,order:500})};export{Fn as default};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .memesluna-app-layout[data-v-e3a296f0]{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-e3a296f0]{padding:80px 112px 112px;box-sizing:border-box;max-width:1880px;margin:0 auto}.content-breadcrumb-header[data-v-e3a296f0]{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-e3a296f0]{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.crumb-root[data-v-e3a296f0]{font-weight:500}.crumb-parent[data-v-e3a296f0]{color:var(--k-text-normal, #37352f);font-weight:500}.crumb-child.active[data-v-e3a296f0]{color:var(--k-color-primary, #2383e2);font-weight:600}.crumb-separator[data-v-e3a296f0]{color:var(--k-color-border, rgba(55, 53, 47, .25))}.header-quick-stats[data-v-e3a296f0]{display:flex;gap:8px}.stat-bubble[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{background:transparent;border:none;padding:6px 16px;font-size:.85rem;font-weight:500;color:var(--k-text-muted, rgba(55, 53, 47, .5));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-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.switcher-btn.active[data-v-e3a296f0]{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-e3a296f0]{font-size:.95rem}.notion-db-header[data-v-e3a296f0]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;margin-bottom:12px}.collection-list-header[data-v-e3a296f0]{gap:20px;justify-content:flex-end}.collection-title-group[data-v-e3a296f0]{display:flex;align-items:center;gap:22px;min-width:0}.notion-db-title[data-v-e3a296f0]{font-size:1.24rem;font-weight:700;margin:0;color:var(--k-text-normal, #37352f);white-space:nowrap}.collection-total-count[data-v-e3a296f0]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.82rem;white-space:nowrap}.notion-db-actions[data-v-e3a296f0]{display:flex;align-items:center;gap:8px}.collection-toolbar[data-v-e3a296f0]{flex-wrap:nowrap;justify-content:flex-end}.collection-search-shell[data-v-e3a296f0],.collection-filter-shell[data-v-e3a296f0]{position:relative;display:inline-flex;align-items:center;color:var(--k-text-muted, rgba(55, 53, 47, .52))}.collection-toolbar-icon[data-v-e3a296f0]{position:absolute;right:11px;width:15px;height:15px;pointer-events:none;color:currentColor;z-index:1}.collection-search-shell .collection-search-input[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{width:200px;height:28px;font-size:.78rem}.btn-notion[data-v-e3a296f0]{height:36px;padding:0 14px;gap:6px;border-radius:6px;font-size:.84rem;font-weight:600;white-space:nowrap}.btn-plus[data-v-e3a296f0]{font-size:1rem;line-height:1}.notion-hr[data-v-e3a296f0]{border:none;border-top:1px solid var(--k-color-border, rgba(55, 53, 47, .09));margin:8px 0 20px}.folders-grid[data-v-e3a296f0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px 24px}.folder-card[data-v-e3a296f0]{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;display:flex;flex-direction:column;min-width:0;box-shadow:0 2px 8px #0f172a0d}.folder-card[data-v-e3a296f0]:hover{border-color:#2383e247;box-shadow:0 8px 24px #0f172a14;transform:translateY(-1px)}.folder-cover[data-v-e3a296f0]{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-e3a296f0]{background-color:var(--k-color-border, rgba(15, 23, 42, .08))}.folder-cover.empty[data-v-e3a296f0]{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-e3a296f0]{color:var(--k-text-muted, rgba(55, 53, 47, .55));background-color:var(--k-bg-button-hover, #f1f1ef)}.folder-cover-empty svg[data-v-e3a296f0]{width:32px;height:32px}.folder-cover-img[data-v-e3a296f0]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.folder-cover-badge[data-v-e3a296f0]{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-e3a296f0]{padding:15px 16px 16px;flex:1;display:flex;flex-direction:column;box-sizing:border-box;min-height:108px}.folder-title-row[data-v-e3a296f0]{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}.folder-name[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]: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-e3a296f0]{width:17px;height:17px}.folder-action-menu[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .06))}.folder-action-menu button.danger[data-v-e3a296f0]{color:var(--k-color-danger, #eb5757)}.folder-count[data-v-e3a296f0]{margin-top:9px;color:var(--k-text-muted, rgba(55, 53, 47, .62));font-size:.86rem;line-height:1.4}.folder-meta-row[data-v-e3a296f0]{margin-top:8px;display:flex;align-items:center;min-width:0}.folder-meta-item[data-v-e3a296f0]{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-e3a296f0]{width:15px;height:15px;flex-shrink:0}.collection-detail-layout[data-v-e3a296f0]{margin-top:4px}.asset-detail-shell[data-v-e3a296f0]{display:flex;flex-direction:column;gap:14px}.detail-topbar[data-v-e3a296f0]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:8px}.detail-breadcrumbs[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]: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-e3a296f0],.asset-btn svg[data-v-e3a296f0],.asset-icon-btn svg[data-v-e3a296f0],.asset-test-btn svg[data-v-e3a296f0],.asset-view-toggle svg[data-v-e3a296f0]{width:16px;height:16px;flex:0 0 16px}.detail-separator[data-v-e3a296f0]{color:var(--k-color-border, rgba(55, 53, 47, .3))}.detail-crumb-current[data-v-e3a296f0],.detail-crumb-strong[data-v-e3a296f0]{color:var(--k-text-normal, #111827);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-top-actions[data-v-e3a296f0]{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.asset-btn[data-v-e3a296f0],.asset-icon-btn[data-v-e3a296f0],.asset-test-btn[data-v-e3a296f0]{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-e3a296f0]:hover,.asset-icon-btn[data-v-e3a296f0]:hover,.asset-test-btn[data-v-e3a296f0]:hover{background-color:var(--k-bg-panel, #f8fafc)}.asset-btn.primary[data-v-e3a296f0],.asset-test-btn[data-v-e3a296f0]{border-color:transparent;background:#1f6feb;color:#fff;box-shadow:none}.asset-btn.primary[data-v-e3a296f0]:hover,.asset-test-btn[data-v-e3a296f0]:hover{background:#1a5fd0}.asset-btn.secondary[data-v-e3a296f0]{background-color:var(--k-bg-card, #ffffff)}.asset-btn.ghost[data-v-e3a296f0]{width:36px;padding:0}.asset-btn.danger[data-v-e3a296f0]{color:var(--k-color-danger, #eb5757)}.asset-btn.danger[data-v-e3a296f0]:hover{background-color:var(--memesluna-danger-soft-bg);border-color:var(--memesluna-danger-border)}.asset-hero-panel[data-v-e3a296f0]{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-e3a296f0]{display:flex;align-items:center;gap:16px;min-width:0}.asset-avatar-frame[data-v-e3a296f0]{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-e3a296f0]{width:100%;height:100%;object-fit:cover}.asset-avatar-empty[data-v-e3a296f0]{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-e3a296f0]{width:34px;height:34px}.asset-title-stack[data-v-e3a296f0]{min-width:0;flex:1}.asset-title-row[data-v-e3a296f0]{display:flex;align-items:center;gap:9px}.asset-title-row h1[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{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-e3a296f0]:focus{color:var(--k-text-normal, #111827)}.asset-meta-line[data-v-e3a296f0]{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-e3a296f0]{min-width:0;align-self:center;width:100%;box-shadow:none}.asset-card-label[data-v-e3a296f0]{color:var(--k-text-normal, #111827);font-size:.8rem;font-weight:720;margin-bottom:9px}.asset-api-row[data-v-e3a296f0]{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:center}.asset-api-row code[data-v-e3a296f0]{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-e3a296f0]{min-height:34px;padding:0 11px;border-radius:10px;font-size:.76rem}.asset-icon-btn.compact[data-v-e3a296f0]{width:32px;min-height:32px;padding:0}.asset-test-btn[data-v-e3a296f0]:disabled{opacity:.68;cursor:wait}.asset-api-hint[data-v-e3a296f0]{margin-top:10px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.74rem}.api-preview-strip[data-v-e3a296f0]{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-e3a296f0]{width:42px;height:42px;object-fit:cover;border-radius:10px;box-shadow:none}.asset-import-panel[data-v-e3a296f0]{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-e3a296f0]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.asset-import-title[data-v-e3a296f0]{color:var(--k-text-normal, #111827);font-size:.9rem;font-weight:720}.asset-import-desc[data-v-e3a296f0]{margin-top:3px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.75rem}.asset-link-textarea[data-v-e3a296f0]{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-e3a296f0]: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-e3a296f0]{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.asset-gallery-section[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0],.asset-filter-bar[data-v-e3a296f0],.asset-view-toggle[data-v-e3a296f0]{display:flex;align-items:center;gap:6px}.asset-tabs[data-v-e3a296f0]{flex-wrap:wrap}.asset-tab[data-v-e3a296f0]{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-e3a296f0]:hover,.asset-tab.active[data-v-e3a296f0]{color:var(--k-color-primary, #2563eb);background-color:var(--memesluna-primary-soft-bg)}.asset-tab span[data-v-e3a296f0]{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-e3a296f0]{flex:1;justify-content:flex-end;min-width:0}.asset-search-box[data-v-e3a296f0]{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-e3a296f0]{width:16px;height:16px;flex:0 0 16px}.asset-search-box input[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{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-e3a296f0]{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-e3a296f0]{background-color:var(--k-bg-card, #ffffff);color:var(--k-color-primary, #2563eb)}.notion-page-toolbar[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.toolbar-btn.danger[data-v-e3a296f0]{color:var(--k-color-danger, #eb5757)}.toolbar-btn.danger[data-v-e3a296f0]:hover{background-color:var(--memesluna-danger-soft-bg)}.toolbar-divider[data-v-e3a296f0]{width:1px;height:14px;background-color:var(--k-color-border, rgba(55, 53, 47, .12))}.notion-properties-panel[data-v-e3a296f0]{margin-bottom:20px;display:flex;flex-direction:column;gap:6px}.property-row[data-v-e3a296f0]{display:flex;align-items:center;font-size:.82rem}.property-label[data-v-e3a296f0]{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-e3a296f0]{font-size:.95rem}.property-value[data-v-e3a296f0]{flex:1}.property-input-text[data-v-e3a296f0]{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-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .03))}.property-input-text[data-v-e3a296f0]: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-e3a296f0]{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-e3a296f0]{font-size:1.15rem;-webkit-user-select:none;user-select:none}.callout-content[data-v-e3a296f0]{flex:1;min-width:0}.callout-title[data-v-e3a296f0]{font-weight:600;font-size:.85rem;color:var(--k-text-normal, #37352f);margin-bottom:2px}.callout-desc[data-v-e3a296f0]{font-size:.75rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin-bottom:10px;line-height:1.4}.callout-actions[data-v-e3a296f0]{display:flex;gap:8px}.btn-small[data-v-e3a296f0]{font-size:.75rem;padding:2px 10px;height:24px}.hidden-file-input[data-v-e3a296f0]{display:none}.sidebar-drop-zone-overlay[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{width:48px;height:48px;margin-bottom:16px}.gallery-view-switcher[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]:hover{color:var(--k-text-normal, #37352f)}.gallery-tab-btn.active[data-v-e3a296f0]{color:var(--k-text-normal, #37352f);border-bottom-color:var(--k-text-normal, #37352f)}.gallery-tab-content[data-v-e3a296f0]{padding:14px;margin-top:0}.gallery-bulk-toolbar[data-v-e3a296f0]{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-e3a296f0]{position:sticky;top:8px;z-index:40;max-width:920px}.bulk-status[data-v-e3a296f0]{display:flex;align-items:center;gap:8px;min-width:0}.bulk-title[data-v-e3a296f0]{font-size:.82rem;font-weight:720;color:var(--k-text-normal, #37352f)}.bulk-meta[data-v-e3a296f0]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .55))}.bulk-actions[data-v-e3a296f0],.bulk-move-group[data-v-e3a296f0]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.toolbar-btn.compact[data-v-e3a296f0]{font-size:.74rem;padding:5px 9px;border-radius:10px}.toolbar-btn[data-v-e3a296f0]:disabled{opacity:.45;cursor:not-allowed}.compact-select[data-v-e3a296f0]{height:30px;padding:2px 9px;font-size:.74rem;border-radius:10px}.notion-gallery-grid[data-v-e3a296f0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(174px,1fr));gap:7px}.notion-gallery-card[data-v-e3a296f0]{background:transparent;border:none;border-radius:12px;position:relative;aspect-ratio:4 / 3;transition:opacity .15s ease;box-shadow:none;overflow:hidden}.notion-gallery-card[data-v-e3a296f0]:hover,.notion-gallery-card.selected[data-v-e3a296f0]{box-shadow:none}.notion-gallery-card.selected .gallery-img-container[data-v-e3a296f0]{box-shadow:inset 0 0 0 2px var(--k-color-primary, #2563eb)}.notion-gallery-card.external .gallery-img-container[data-v-e3a296f0]{background-color:var(--k-bg-card, #ffffff)}.gallery-select-toggle[data-v-e3a296f0]{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-e3a296f0]{width:14px;height:14px}.notion-gallery-card:hover .gallery-select-toggle[data-v-e3a296f0],.notion-gallery-card.selected .gallery-select-toggle[data-v-e3a296f0]{opacity:1}.gallery-img-container[data-v-e3a296f0]{width:100%;height:100%;background-color:var(--k-bg-panel, #f7f7f5);display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:12px;box-shadow:inset 0 0 0 1px #0f172a14}.gallery-img[data-v-e3a296f0]{width:100%;height:100%;object-fit:cover}.image-format-badge[data-v-e3a296f0]{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-e3a296f0]{background:#0d9488d1}.gallery-list-meta[data-v-e3a296f0]{display:none}.notion-gallery-grid.list-mode[data-v-e3a296f0]{grid-template-columns:1fr;gap:8px}.notion-gallery-grid.list-mode .notion-gallery-card[data-v-e3a296f0]{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-e3a296f0]{height:68px}.notion-gallery-grid.list-mode .gallery-list-meta[data-v-e3a296f0]{display:block;min-width:0;padding-right:88px}.gallery-list-meta div[data-v-e3a296f0]{color:var(--k-text-normal, #111827);font-size:.82rem;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gallery-list-meta span[data-v-e3a296f0]{display:block;margin-top:4px;color:var(--k-text-muted, rgba(55, 53, 47, .55));font-size:.72rem}.gallery-card-overlay[data-v-e3a296f0]{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom,#00000047,#0000 35%,#0000);border-radius:12px;opacity:0;transition:opacity .15s ease;pointer-events:none;z-index:10}.notion-gallery-card:hover .gallery-card-overlay[data-v-e3a296f0],.notion-gallery-card-active-dropdown .gallery-card-overlay[data-v-e3a296f0]{opacity:1}.overlay-actions[data-v-e3a296f0]{position:absolute;top:8px;right:8px;display:flex;gap:6px;pointer-events:auto}.overlay-actions .card-action-btn[data-v-e3a296f0]{border:none;background-color:var(--memesluna-floating-action-bg);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--k-text-normal, #37352f);font-size:.65rem;padding:3px 8px;border-radius:9px;cursor:pointer;font-weight:500;box-shadow:var(--memesluna-floating-shadow);transition:all .1s ease;display:flex;align-items:center;justify-content:center}.overlay-actions .card-action-btn.move[data-v-e3a296f0]:hover{background:var(--k-color-success, #2b8a5c);color:#fff}.overlay-actions .card-action-btn[data-v-e3a296f0]:hover{background:var(--k-bg-card, #ffffff);color:var(--k-color-primary, #2563eb)}.overlay-actions .card-action-btn.danger[data-v-e3a296f0]{color:var(--k-color-danger, #eb5757)}.overlay-actions .card-action-btn.danger[data-v-e3a296f0]:hover{background:var(--k-color-danger, #eb5757);color:#fff}.flat-input[data-v-e3a296f0],.flat-select[data-v-e3a296f0],.flat-textarea[data-v-e3a296f0]{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-e3a296f0]:focus,.flat-select[data-v-e3a296f0]:focus,.flat-textarea[data-v-e3a296f0]: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-e3a296f0]::placeholder,.flat-textarea[data-v-e3a296f0]::placeholder,.property-input-text[data-v-e3a296f0]::placeholder{color:var(--k-text-muted, rgba(55, 53, 47, .45));opacity:.78}.flat-input[data-v-e3a296f0]: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-e3a296f0]{font-size:.7rem;color:var(--k-text-muted, rgba(55, 53, 47, .45));margin-top:4px;display:block}.btn[data-v-e3a296f0]{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-e3a296f0]{background-color:var(--k-color-primary, #2383e2);color:#fff}.btn-primary[data-v-e3a296f0]:hover{background-color:var(--k-color-primary-shade, #1a6cb8)}.btn-secondary[data-v-e3a296f0]{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-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.btn-danger[data-v-e3a296f0]{background-color:var(--k-color-danger, #eb5757);color:#fff}.btn-danger[data-v-e3a296f0]:hover{background-color:var(--k-color-danger-shade, #d44c4c)}.w-full[data-v-e3a296f0]{width:100%}.mt-2[data-v-e3a296f0]{margin-top:8px}.mt-3[data-v-e3a296f0]{margin-top:12px}.mt-4[data-v-e3a296f0]{margin-top:16px}.empty-placeholder-card[data-v-e3a296f0]{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-e3a296f0]{font-size:2.5rem;margin-bottom:12px}.empty-placeholder-card h3[data-v-e3a296f0]{font-size:.95rem;margin:0 0 6px;font-weight:600}.empty-placeholder-card p[data-v-e3a296f0]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.empty-gallery[data-v-e3a296f0]{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-e3a296f0]{position:relative}.move-dropdown-menu[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.pagination-container[data-v-e3a296f0]{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-e3a296f0]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .6))}.page-btn[data-v-e3a296f0]{height:28px;padding:0 10px;font-size:.75rem}.links-list-container[data-v-e3a296f0]{border:1px solid var(--k-color-border, rgba(55, 53, 47, .09));border-radius:6px;overflow:hidden}.link-item-row[data-v-e3a296f0]{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-e3a296f0]:last-child{border-bottom:none}.link-item-row[data-v-e3a296f0]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .015))}.link-url-wrapper[data-v-e3a296f0]{display:flex;align-items:center;gap:8px;flex:1;min-width:0;margin-right:16px}.bullet[data-v-e3a296f0]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-weight:700}.link-url-text[data-v-e3a296f0]{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-e3a296f0]:hover{color:var(--k-color-primary, #2383e2);text-decoration:underline}.link-actions[data-v-e3a296f0]{display:flex;gap:6px}.page-section-header[data-v-e3a296f0]{align-items:center;justify-content:space-between;gap:16px;margin-top:0;margin-bottom:14px}.page-section-header>div[data-v-e3a296f0]{min-width:0}.page-section-header .notion-main-title[data-v-e3a296f0]{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-e3a296f0]{align-self:center}.section-desc.compact[data-v-e3a296f0]{margin:8px 0 0;max-width:620px;line-height:1.45}.endpoint-layout[data-v-e3a296f0]{display:flex;flex-direction:column;gap:16px}.notion-form-panel[data-v-e3a296f0]{padding:12px 0}.endpoint-editor-panel[data-v-e3a296f0]{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-e3a296f0],.table-title-row[data-v-e3a296f0]{display:flex;align-items:center;justify-content:space-between;gap:12px}.notion-panel-title[data-v-e3a296f0]{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-e3a296f0],.table-title-row .notion-panel-title[data-v-e3a296f0]{margin-bottom:0}.table-count[data-v-e3a296f0]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.form-fields[data-v-e3a296f0]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-e3a296f0]{display:flex;flex-direction:column}.endpoint-form-grid[data-v-e3a296f0]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.span-2[data-v-e3a296f0]{grid-column:1 / -1}.form-group label[data-v-e3a296f0]{font-size:.75rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .65));margin-bottom:4px}.form-row[data-v-e3a296f0]{display:flex;gap:10px}.form-actions[data-v-e3a296f0]{display:flex;gap:8px;margin-top:8px}.flex-grow[data-v-e3a296f0]{flex:1}.endpoint-preview[data-v-e3a296f0]{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-e3a296f0]{color:var(--k-text-muted, rgba(55, 53, 47, .5));font-size:.72rem;font-weight:600;flex-shrink:0}.endpoint-preview code[data-v-e3a296f0]{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-e3a296f0]{padding:12px 0}.table-title-row[data-v-e3a296f0]{margin-bottom:8px}.table-container[data-v-e3a296f0]{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-e3a296f0]{width:100%;border-collapse:collapse;font-size:.78rem}.flat-table th[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{border-bottom:none}.empty-cell[data-v-e3a296f0]{text-align:center;padding:40px!important;color:var(--k-text-muted, rgba(55, 53, 47, .35))}.endpoint-name[data-v-e3a296f0]{font-weight:600}.group-badge[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{font-size:.65rem;font-weight:600;padding:1px 5px;border-radius:3px;text-transform:uppercase;margin-right:6px}.method-tag.redirect[data-v-e3a296f0]{background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2383e2)}.link-text[data-v-e3a296f0]{font-weight:500;color:var(--k-color-primary, #2383e2);cursor:pointer}.link-text[data-v-e3a296f0]:hover{text-decoration:underline}.target-url[data-v-e3a296f0]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .4));max-width:300px;margin-top:2px}.url-line[data-v-e3a296f0]{display:flex;align-items:center;gap:4px}.font-mono[data-v-e3a296f0]{font-family:SFMono-Regular,Consolas,monospace}.truncate[data-v-e3a296f0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-buttons[data-v-e3a296f0]{display:flex;justify-content:flex-end;gap:4px}.icon-btn[data-v-e3a296f0]{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-e3a296f0]{width:12px;height:12px}.icon-btn.hover-bg[data-v-e3a296f0]: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-e3a296f0]: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-e3a296f0]{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-e3a296f0]:hover{color:var(--k-color-primary, #2383e2)}.icon-btn-inline svg[data-v-e3a296f0]{width:10px;height:10px}.settings-preview-panel[data-v-e3a296f0]{width:100%;max-width:none;margin:0 auto}.preview-page-header[data-v-e3a296f0]{margin-bottom:12px}.preview-dashboard-grid[data-v-e3a296f0]{display:grid;grid-template-columns:minmax(560px,1fr) minmax(420px,.9fr);gap:22px;align-items:start}.preview-card[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{color:var(--k-text-normal, #111827);font-size:1rem;line-height:1.25;font-weight:760}.preview-card-desc[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]:hover:not(:disabled){background-color:var(--k-bg-panel, #f8fafc)}.preview-action-btn[data-v-e3a296f0]:disabled{opacity:.45;cursor:not-allowed}.preview-table-wrap[data-v-e3a296f0]{overflow-x:auto}.preview-route-table[data-v-e3a296f0]{width:100%;border-collapse:collapse;table-layout:fixed}.preview-route-table th[data-v-e3a296f0],.preview-route-table td[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{border-bottom:none}.preview-route-table th[data-v-e3a296f0]:nth-child(1),.preview-route-table td[data-v-e3a296f0]:nth-child(1){width:86px}.preview-route-table th[data-v-e3a296f0]:nth-child(2),.preview-route-table td[data-v-e3a296f0]:nth-child(2){width:130px}.preview-route-table th[data-v-e3a296f0]:nth-child(4),.preview-route-table td[data-v-e3a296f0]:nth-child(4){width:186px}.preview-route-table th[data-v-e3a296f0]:nth-child(5),.preview-route-table td[data-v-e3a296f0]:nth-child(5){width:64px;text-align:center}.preview-mini-cover[data-v-e3a296f0]{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-e3a296f0]{display:block}.preview-mini-cover img[data-v-e3a296f0]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.preview-route-icon[data-v-e3a296f0]{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-e3a296f0]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-name[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-desc[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{display:flex;align-items:center;justify-content:center}.preview-empty-state[data-v-e3a296f0]{padding:64px 20px;color:var(--k-text-muted, rgba(55, 53, 47, .48));text-align:center;font-size:.82rem}.preview-prompt-container[data-v-e3a296f0]{display:flex;flex-direction:column;gap:12px}.preview-sub-title[data-v-e3a296f0]{font-size:.72rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .45));text-transform:uppercase}.preview-sub-desc[data-v-e3a296f0]{margin-top:2px;font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .45))}.preview-block-header[data-v-e3a296f0]{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.preview-code-block[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{max-height:620px;background-color:var(--memesluna-final-prompt-bg);border-color:var(--memesluna-primary-soft-bg)}.preview-code-block.polished[data-v-e3a296f0]{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-e3a296f0]{color:var(--memesluna-code-text);font-size:.76rem;line-height:1.7}.text-gray-muted[data-v-e3a296f0]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-style:italic}.toast-banner[data-v-e3a296f0]{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-e3a296f0]{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-e3a296f0]{background-color:var(--memesluna-toast-error-bg);border-color:var(--memesluna-danger-border);color:var(--k-color-danger, #eb5757)}.toast-icon[data-v-e3a296f0]{width:14px;height:14px;flex-shrink:0}.loading-container[data-v-e3a296f0]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0}.spinner[data-v-e3a296f0]{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-e3a296f0 .8s linear infinite;margin-bottom:12px}@keyframes spin-e3a296f0{to{transform:rotate(360deg)}}.loading-container p[data-v-e3a296f0]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.fade-enter-active[data-v-e3a296f0],.fade-leave-active[data-v-e3a296f0]{transition:opacity .15s ease,transform .15s ease}.fade-enter-from[data-v-e3a296f0],.fade-leave-to[data-v-e3a296f0]{opacity:0;transform:translateY(-8px)}@media (max-width: 1280px){.notion-content[data-v-e3a296f0]{padding:64px 80px 96px}.preview-dashboard-grid[data-v-e3a296f0]{grid-template-columns:1fr}}@media (max-width: 780px){.memesluna-app-layout[data-v-e3a296f0]{padding-left:0}.notion-content[data-v-e3a296f0]{padding:18px 16px}.content-breadcrumb-header[data-v-e3a296f0],.notion-db-header[data-v-e3a296f0],.page-section-header[data-v-e3a296f0],.notion-page-header[data-v-e3a296f0],.gallery-bulk-toolbar[data-v-e3a296f0]{align-items:stretch;flex-direction:column}.notion-db-actions[data-v-e3a296f0],.bulk-actions[data-v-e3a296f0],.form-actions[data-v-e3a296f0],.collection-name-input-notion[data-v-e3a296f0],.notion-db-actions .btn[data-v-e3a296f0],.form-actions .btn[data-v-e3a296f0]{width:100%}.endpoint-form-grid[data-v-e3a296f0]{grid-template-columns:1fr}.span-2[data-v-e3a296f0]{grid-column:auto}.folders-grid[data-v-e3a296f0]{grid-template-columns:1fr}.notion-gallery-grid[data-v-e3a296f0]{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.preview-block-header[data-v-e3a296f0],.preview-card-header[data-v-e3a296f0]{align-items:stretch;flex-direction:column}.preview-action-btn[data-v-e3a296f0]{width:100%}.preview-route-table[data-v-e3a296f0]{min-width:720px}}@media (max-width: 1180px){.asset-hero-panel[data-v-e3a296f0]{grid-template-columns:1fr}}@media (max-width: 980px){.detail-topbar[data-v-e3a296f0],.asset-gallery-toolbar[data-v-e3a296f0]{align-items:stretch;flex-direction:column}.detail-top-actions[data-v-e3a296f0],.asset-filter-bar[data-v-e3a296f0]{justify-content:flex-start}.asset-filter-bar[data-v-e3a296f0]{flex-wrap:wrap}.asset-search-box[data-v-e3a296f0]{max-width:none;width:100%}}@media (max-width: 640px){.asset-hero-panel[data-v-e3a296f0]{padding:14px;border-radius:14px}.asset-identity-card[data-v-e3a296f0]{align-items:flex-start}.asset-avatar-frame[data-v-e3a296f0]{width:72px;height:72px;flex-basis:72px;border-radius:14px}.asset-title-row h1[data-v-e3a296f0]{font-size:1.35rem}.asset-api-row[data-v-e3a296f0]{grid-template-columns:1fr}.asset-tabs[data-v-e3a296f0],.detail-top-actions[data-v-e3a296f0]{width:100%}.asset-btn[data-v-e3a296f0]{flex:1}.notion-gallery-grid[data-v-e3a296f0]{grid-template-columns:repeat(auto-fill,minmax(138px,1fr))}}
1
+ .memesluna-app-layout[data-v-cbb0f9f4]{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-cbb0f9f4]{padding:80px 112px 112px;box-sizing:border-box;max-width:1880px;margin:0 auto}.content-breadcrumb-header[data-v-cbb0f9f4]{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-cbb0f9f4]{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.crumb-root[data-v-cbb0f9f4]{font-weight:500}.crumb-parent[data-v-cbb0f9f4]{color:var(--k-text-normal, #37352f);font-weight:500}.crumb-child.active[data-v-cbb0f9f4]{color:var(--k-color-primary, #2383e2);font-weight:600}.crumb-separator[data-v-cbb0f9f4]{color:var(--k-color-border, rgba(55, 53, 47, .25))}.header-quick-stats[data-v-cbb0f9f4]{display:flex;gap:8px}.stat-bubble[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{background:transparent;border:none;padding:6px 16px;font-size:.85rem;font-weight:500;color:var(--k-text-muted, rgba(55, 53, 47, .5));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-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.switcher-btn.active[data-v-cbb0f9f4]{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-cbb0f9f4]{font-size:.95rem}.notion-db-header[data-v-cbb0f9f4]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;margin-bottom:12px}.collection-list-header[data-v-cbb0f9f4]{gap:20px;justify-content:flex-end}.collection-title-group[data-v-cbb0f9f4]{display:flex;align-items:center;gap:22px;min-width:0}.notion-db-title[data-v-cbb0f9f4]{font-size:1.24rem;font-weight:700;margin:0;color:var(--k-text-normal, #37352f);white-space:nowrap}.collection-total-count[data-v-cbb0f9f4]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.82rem;white-space:nowrap}.notion-db-actions[data-v-cbb0f9f4]{display:flex;align-items:center;gap:8px}.collection-toolbar[data-v-cbb0f9f4]{flex-wrap:nowrap;justify-content:flex-end}.collection-search-shell[data-v-cbb0f9f4],.collection-filter-shell[data-v-cbb0f9f4]{position:relative;display:inline-flex;align-items:center;color:var(--k-text-muted, rgba(55, 53, 47, .52))}.collection-toolbar-icon[data-v-cbb0f9f4]{position:absolute;right:11px;width:15px;height:15px;pointer-events:none;color:currentColor;z-index:1}.collection-search-shell .collection-search-input[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{width:200px;height:28px;font-size:.78rem}.btn-notion[data-v-cbb0f9f4]{height:36px;padding:0 14px;gap:6px;border-radius:6px;font-size:.84rem;font-weight:600;white-space:nowrap}.btn-plus[data-v-cbb0f9f4]{font-size:1rem;line-height:1}.notion-hr[data-v-cbb0f9f4]{border:none;border-top:1px solid var(--k-color-border, rgba(55, 53, 47, .09));margin:8px 0 20px}.folders-grid[data-v-cbb0f9f4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px 24px}.folder-card[data-v-cbb0f9f4]{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;display:flex;flex-direction:column;min-width:0;box-shadow:0 2px 8px #0f172a0d}.folder-card[data-v-cbb0f9f4]:hover{border-color:#2383e247;box-shadow:0 8px 24px #0f172a14;transform:translateY(-1px)}.folder-cover[data-v-cbb0f9f4]{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-cbb0f9f4]{background-color:var(--k-color-border, rgba(15, 23, 42, .08))}.folder-cover.empty[data-v-cbb0f9f4]{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-cbb0f9f4]{color:var(--k-text-muted, rgba(55, 53, 47, .55));background-color:var(--k-bg-button-hover, #f1f1ef)}.folder-cover-empty svg[data-v-cbb0f9f4]{width:32px;height:32px}.folder-cover-img[data-v-cbb0f9f4]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.folder-cover-badge[data-v-cbb0f9f4]{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-cbb0f9f4]{padding:15px 16px 16px;flex:1;display:flex;flex-direction:column;box-sizing:border-box;min-height:108px}.folder-title-row[data-v-cbb0f9f4]{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}.folder-name[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]: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-cbb0f9f4]{width:17px;height:17px}.folder-action-menu[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .06))}.folder-action-menu button.danger[data-v-cbb0f9f4]{color:var(--k-color-danger, #eb5757)}.folder-count[data-v-cbb0f9f4]{margin-top:9px;color:var(--k-text-muted, rgba(55, 53, 47, .62));font-size:.86rem;line-height:1.4}.folder-meta-row[data-v-cbb0f9f4]{margin-top:8px;display:flex;align-items:center;min-width:0}.folder-meta-item[data-v-cbb0f9f4]{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-cbb0f9f4]{width:15px;height:15px;flex-shrink:0}.collection-detail-layout[data-v-cbb0f9f4]{margin-top:4px}.asset-detail-shell[data-v-cbb0f9f4]{display:flex;flex-direction:column;gap:14px}.detail-topbar[data-v-cbb0f9f4]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:8px}.detail-breadcrumbs[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]: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-cbb0f9f4],.asset-btn svg[data-v-cbb0f9f4],.asset-icon-btn svg[data-v-cbb0f9f4],.asset-test-btn svg[data-v-cbb0f9f4],.asset-view-toggle svg[data-v-cbb0f9f4]{width:16px;height:16px;flex:0 0 16px}.detail-separator[data-v-cbb0f9f4]{color:var(--k-color-border, rgba(55, 53, 47, .3))}.detail-crumb-current[data-v-cbb0f9f4],.detail-crumb-strong[data-v-cbb0f9f4]{color:var(--k-text-normal, #111827);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-top-actions[data-v-cbb0f9f4]{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.asset-btn[data-v-cbb0f9f4],.asset-icon-btn[data-v-cbb0f9f4],.asset-test-btn[data-v-cbb0f9f4]{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-cbb0f9f4]:hover,.asset-icon-btn[data-v-cbb0f9f4]:hover,.asset-test-btn[data-v-cbb0f9f4]:hover{background-color:var(--k-bg-panel, #f8fafc)}.asset-btn.primary[data-v-cbb0f9f4],.asset-test-btn[data-v-cbb0f9f4]{border-color:transparent;background:#1f6feb;color:#fff;box-shadow:none}.asset-btn.primary[data-v-cbb0f9f4]:hover,.asset-test-btn[data-v-cbb0f9f4]:hover{background:#1a5fd0}.asset-btn.secondary[data-v-cbb0f9f4]{background-color:var(--k-bg-card, #ffffff)}.asset-btn.ghost[data-v-cbb0f9f4]{width:36px;padding:0}.asset-btn.danger[data-v-cbb0f9f4]{color:var(--k-color-danger, #eb5757)}.asset-btn.danger[data-v-cbb0f9f4]:hover{background-color:var(--memesluna-danger-soft-bg);border-color:var(--memesluna-danger-border)}.asset-hero-panel[data-v-cbb0f9f4]{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-cbb0f9f4]{display:flex;align-items:center;gap:16px;min-width:0}.asset-avatar-frame[data-v-cbb0f9f4]{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-cbb0f9f4]{width:100%;height:100%;object-fit:cover}.asset-avatar-empty[data-v-cbb0f9f4]{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-cbb0f9f4]{width:34px;height:34px}.asset-title-stack[data-v-cbb0f9f4]{min-width:0;flex:1}.asset-title-row[data-v-cbb0f9f4]{display:flex;align-items:center;gap:9px}.asset-title-row h1[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]:focus{color:var(--k-text-normal, #111827)}.asset-meta-line[data-v-cbb0f9f4]{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-cbb0f9f4]{min-width:0;align-self:center;width:100%;box-shadow:none}.asset-card-label[data-v-cbb0f9f4]{color:var(--k-text-normal, #111827);font-size:.8rem;font-weight:720;margin-bottom:9px}.asset-api-row[data-v-cbb0f9f4]{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:center}.asset-api-row code[data-v-cbb0f9f4]{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-cbb0f9f4]{min-height:34px;padding:0 11px;border-radius:10px;font-size:.76rem}.asset-icon-btn.compact[data-v-cbb0f9f4]{width:32px;min-height:32px;padding:0}.asset-test-btn[data-v-cbb0f9f4]:disabled{opacity:.68;cursor:wait}.asset-api-hint[data-v-cbb0f9f4]{margin-top:10px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.74rem}.api-preview-strip[data-v-cbb0f9f4]{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-cbb0f9f4]{width:42px;height:42px;object-fit:cover;border-radius:10px;box-shadow:none}.asset-import-panel[data-v-cbb0f9f4]{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-cbb0f9f4]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.asset-import-title[data-v-cbb0f9f4]{color:var(--k-text-normal, #111827);font-size:.9rem;font-weight:720}.asset-import-desc[data-v-cbb0f9f4]{margin-top:3px;color:var(--k-text-muted, rgba(55, 53, 47, .56));font-size:.75rem}.asset-link-textarea[data-v-cbb0f9f4]{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-cbb0f9f4]: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-cbb0f9f4]{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.asset-gallery-section[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4],.asset-filter-bar[data-v-cbb0f9f4],.asset-view-toggle[data-v-cbb0f9f4]{display:flex;align-items:center;gap:6px}.asset-tabs[data-v-cbb0f9f4]{flex-wrap:wrap}.asset-tab[data-v-cbb0f9f4]{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-cbb0f9f4]:hover,.asset-tab.active[data-v-cbb0f9f4]{color:var(--k-color-primary, #2563eb);background-color:var(--memesluna-primary-soft-bg)}.asset-tab span[data-v-cbb0f9f4]{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-cbb0f9f4]{flex:1;justify-content:flex-end;min-width:0}.asset-search-box[data-v-cbb0f9f4]{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-cbb0f9f4]{width:16px;height:16px;flex:0 0 16px}.asset-search-box input[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{background-color:var(--k-bg-card, #ffffff);color:var(--k-color-primary, #2563eb)}.notion-page-toolbar[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04));color:var(--k-text-normal, #37352f)}.toolbar-btn.danger[data-v-cbb0f9f4]{color:var(--k-color-danger, #eb5757)}.toolbar-btn.danger[data-v-cbb0f9f4]:hover{background-color:var(--memesluna-danger-soft-bg)}.toolbar-divider[data-v-cbb0f9f4]{width:1px;height:14px;background-color:var(--k-color-border, rgba(55, 53, 47, .12))}.notion-properties-panel[data-v-cbb0f9f4]{margin-bottom:20px;display:flex;flex-direction:column;gap:6px}.property-row[data-v-cbb0f9f4]{display:flex;align-items:center;font-size:.82rem}.property-label[data-v-cbb0f9f4]{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-cbb0f9f4]{font-size:.95rem}.property-value[data-v-cbb0f9f4]{flex:1}.property-input-text[data-v-cbb0f9f4]{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-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .03))}.property-input-text[data-v-cbb0f9f4]: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-cbb0f9f4]{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-cbb0f9f4]{font-size:1.15rem;-webkit-user-select:none;user-select:none}.callout-content[data-v-cbb0f9f4]{flex:1;min-width:0}.callout-title[data-v-cbb0f9f4]{font-weight:600;font-size:.85rem;color:var(--k-text-normal, #37352f);margin-bottom:2px}.callout-desc[data-v-cbb0f9f4]{font-size:.75rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin-bottom:10px;line-height:1.4}.callout-actions[data-v-cbb0f9f4]{display:flex;gap:8px}.btn-small[data-v-cbb0f9f4]{font-size:.75rem;padding:2px 10px;height:24px}.hidden-file-input[data-v-cbb0f9f4]{display:none}.sidebar-drop-zone-overlay[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{width:48px;height:48px;margin-bottom:16px}.gallery-view-switcher[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]:hover{color:var(--k-text-normal, #37352f)}.gallery-tab-btn.active[data-v-cbb0f9f4]{color:var(--k-text-normal, #37352f);border-bottom-color:var(--k-text-normal, #37352f)}.gallery-tab-content[data-v-cbb0f9f4]{padding:14px;margin-top:0}.gallery-bulk-toolbar[data-v-cbb0f9f4]{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-cbb0f9f4]{position:sticky;top:8px;z-index:40;max-width:920px}.bulk-status[data-v-cbb0f9f4]{display:flex;align-items:center;gap:8px;min-width:0}.bulk-title[data-v-cbb0f9f4]{font-size:.82rem;font-weight:720;color:var(--k-text-normal, #37352f)}.bulk-meta[data-v-cbb0f9f4]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .55))}.bulk-actions[data-v-cbb0f9f4],.bulk-move-group[data-v-cbb0f9f4]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.toolbar-btn.compact[data-v-cbb0f9f4]{font-size:.74rem;padding:5px 9px;border-radius:10px}.toolbar-btn[data-v-cbb0f9f4]:disabled{opacity:.45;cursor:not-allowed}.compact-select[data-v-cbb0f9f4]{height:30px;padding:2px 9px;font-size:.74rem;border-radius:10px}.notion-gallery-grid[data-v-cbb0f9f4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(174px,1fr));gap:7px}.notion-gallery-card[data-v-cbb0f9f4]{background:transparent;border:none;border-radius:12px;position:relative;aspect-ratio:4 / 3;transition:opacity .15s ease;box-shadow:none;overflow:hidden}.notion-gallery-card[data-v-cbb0f9f4]:hover,.notion-gallery-card.selected[data-v-cbb0f9f4]{box-shadow:none}.notion-gallery-card.selected .gallery-img-container[data-v-cbb0f9f4]{box-shadow:inset 0 0 0 2px var(--k-color-primary, #2563eb)}.notion-gallery-card.external .gallery-img-container[data-v-cbb0f9f4]{background-color:var(--k-bg-card, #ffffff)}.gallery-select-toggle[data-v-cbb0f9f4]{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-cbb0f9f4]{width:14px;height:14px}.notion-gallery-card:hover .gallery-select-toggle[data-v-cbb0f9f4],.notion-gallery-card.selected .gallery-select-toggle[data-v-cbb0f9f4]{opacity:1}.gallery-img-container[data-v-cbb0f9f4]{width:100%;height:100%;background-color:var(--k-bg-panel, #f7f7f5);display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:12px;box-shadow:inset 0 0 0 1px #0f172a14}.gallery-img[data-v-cbb0f9f4]{width:100%;height:100%;object-fit:cover}.image-format-badge[data-v-cbb0f9f4]{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-cbb0f9f4]{background:#0d9488d1}.gallery-list-meta[data-v-cbb0f9f4]{display:none}.notion-gallery-grid.list-mode[data-v-cbb0f9f4]{grid-template-columns:1fr;gap:8px}.notion-gallery-grid.list-mode .notion-gallery-card[data-v-cbb0f9f4]{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-cbb0f9f4]{height:68px}.notion-gallery-grid.list-mode .gallery-list-meta[data-v-cbb0f9f4]{display:block;min-width:0;padding-right:88px}.gallery-list-meta div[data-v-cbb0f9f4]{color:var(--k-text-normal, #111827);font-size:.82rem;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gallery-list-meta span[data-v-cbb0f9f4]{display:block;margin-top:4px;color:var(--k-text-muted, rgba(55, 53, 47, .55));font-size:.72rem}.gallery-card-overlay[data-v-cbb0f9f4]{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom,#00000047,#0000 35%,#0000);border-radius:12px;opacity:0;transition:opacity .15s ease;pointer-events:none;z-index:10}.notion-gallery-card:hover .gallery-card-overlay[data-v-cbb0f9f4],.notion-gallery-card-active-dropdown .gallery-card-overlay[data-v-cbb0f9f4]{opacity:1}.overlay-actions[data-v-cbb0f9f4]{position:absolute;top:8px;right:8px;display:flex;gap:6px;pointer-events:auto}.overlay-actions .card-action-btn[data-v-cbb0f9f4]{border:none;background-color:var(--memesluna-floating-action-bg);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--k-text-normal, #37352f);font-size:.65rem;padding:3px 8px;border-radius:9px;cursor:pointer;font-weight:500;box-shadow:var(--memesluna-floating-shadow);transition:all .1s ease;display:flex;align-items:center;justify-content:center}.overlay-actions .card-action-btn.move[data-v-cbb0f9f4]:hover{background:var(--k-color-success, #2b8a5c);color:#fff}.overlay-actions .card-action-btn[data-v-cbb0f9f4]:hover{background:var(--k-bg-card, #ffffff);color:var(--k-color-primary, #2563eb)}.overlay-actions .card-action-btn.danger[data-v-cbb0f9f4]{color:var(--k-color-danger, #eb5757)}.overlay-actions .card-action-btn.danger[data-v-cbb0f9f4]:hover{background:var(--k-color-danger, #eb5757);color:#fff}.flat-input[data-v-cbb0f9f4],.flat-select[data-v-cbb0f9f4],.flat-textarea[data-v-cbb0f9f4]{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-cbb0f9f4]:focus,.flat-select[data-v-cbb0f9f4]:focus,.flat-textarea[data-v-cbb0f9f4]: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-cbb0f9f4]::placeholder,.flat-textarea[data-v-cbb0f9f4]::placeholder,.property-input-text[data-v-cbb0f9f4]::placeholder{color:var(--k-text-muted, rgba(55, 53, 47, .45));opacity:.78}.flat-input[data-v-cbb0f9f4]: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-cbb0f9f4]{font-size:.7rem;color:var(--k-text-muted, rgba(55, 53, 47, .45));margin-top:4px;display:block}.btn[data-v-cbb0f9f4]{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-cbb0f9f4]{background-color:var(--k-color-primary, #2383e2);color:#fff}.btn-primary[data-v-cbb0f9f4]:hover{background-color:var(--k-color-primary-shade, #1a6cb8)}.btn-secondary[data-v-cbb0f9f4]{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-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.btn-danger[data-v-cbb0f9f4]{background-color:var(--k-color-danger, #eb5757);color:#fff}.btn-danger[data-v-cbb0f9f4]:hover{background-color:var(--k-color-danger-shade, #d44c4c)}.w-full[data-v-cbb0f9f4]{width:100%}.mt-2[data-v-cbb0f9f4]{margin-top:8px}.mt-3[data-v-cbb0f9f4]{margin-top:12px}.mt-4[data-v-cbb0f9f4]{margin-top:16px}.empty-placeholder-card[data-v-cbb0f9f4]{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-cbb0f9f4]{font-size:2.5rem;margin-bottom:12px}.empty-placeholder-card h3[data-v-cbb0f9f4]{font-size:.95rem;margin:0 0 6px;font-weight:600}.empty-placeholder-card p[data-v-cbb0f9f4]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.empty-gallery[data-v-cbb0f9f4]{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-cbb0f9f4]{position:relative}.move-dropdown-menu[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .04))}.pagination-container[data-v-cbb0f9f4]{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-cbb0f9f4]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .6))}.page-btn[data-v-cbb0f9f4]{height:28px;padding:0 10px;font-size:.75rem}.links-list-container[data-v-cbb0f9f4]{border:1px solid var(--k-color-border, rgba(55, 53, 47, .09));border-radius:6px;overflow:hidden}.link-item-row[data-v-cbb0f9f4]{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-cbb0f9f4]:last-child{border-bottom:none}.link-item-row[data-v-cbb0f9f4]:hover{background-color:var(--k-bg-button-hover, rgba(55, 53, 47, .015))}.link-url-wrapper[data-v-cbb0f9f4]{display:flex;align-items:center;gap:8px;flex:1;min-width:0;margin-right:16px}.bullet[data-v-cbb0f9f4]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-weight:700}.link-url-text[data-v-cbb0f9f4]{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-cbb0f9f4]:hover{color:var(--k-color-primary, #2383e2);text-decoration:underline}.link-actions[data-v-cbb0f9f4]{display:flex;gap:6px}.staging-router-view[data-v-cbb0f9f4]{display:flex;flex-direction:column;gap:16px}.staging-page-header[data-v-cbb0f9f4]{margin-bottom:4px}.staging-header-actions[data-v-cbb0f9f4]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.similar-staging-view[data-v-cbb0f9f4]{display:flex;flex-direction:column;gap:16px}.similar-message[data-v-cbb0f9f4]{color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.78rem;font-weight:650}.similar-group[data-v-cbb0f9f4]{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-cbb0f9f4]:first-of-type{padding-top:0;border-top:none}.similar-group-header[data-v-cbb0f9f4]{display:flex;align-items:center;justify-content:space-between;gap:12px}.similar-group-header h3[data-v-cbb0f9f4]{margin:0;color:var(--k-text-normal, #111827);font-size:.96rem;font-weight:750}.similar-group-header p[data-v-cbb0f9f4]{margin:4px 0 0;color:var(--k-text-muted, rgba(55, 53, 47, .58));font-size:.74rem}.staging-toolbar[data-v-cbb0f9f4]{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-cbb0f9f4]{max-width:420px}.staging-count-pill[data-v-cbb0f9f4]{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-cbb0f9f4]{margin-top:8px}.staging-grid[data-v-cbb0f9f4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.staging-card[data-v-cbb0f9f4]{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-image-shell[data-v-cbb0f9f4]{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:var(--k-bg-panel, #f8fafc);cursor:pointer}.staging-image[data-v-cbb0f9f4]{width:100%;height:100%;object-fit:contain;display:block}.staging-card-body[data-v-cbb0f9f4]{padding:12px;display:flex;flex-direction:column;gap:10px}.staging-title-row[data-v-cbb0f9f4]{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.staging-title[data-v-cbb0f9f4]{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-cbb0f9f4]{flex:0 0 auto;padding:2px 7px;border-radius:999px;background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2563eb);font-size:.66rem;font-weight:750}.staging-meta-grid[data-v-cbb0f9f4]{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-cbb0f9f4]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staging-select[data-v-cbb0f9f4]{width:100%;height:34px}.staging-actions[data-v-cbb0f9f4]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.staging-action-btn[data-v-cbb0f9f4]{min-width:0;width:100%;white-space:nowrap}.page-section-header[data-v-cbb0f9f4]{align-items:center;justify-content:space-between;gap:16px;margin-top:0;margin-bottom:14px}.page-section-header>div[data-v-cbb0f9f4]{min-width:0}.page-section-header .notion-main-title[data-v-cbb0f9f4]{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-cbb0f9f4]{align-self:center}.section-desc.compact[data-v-cbb0f9f4]{margin:8px 0 0;max-width:620px;line-height:1.45}.endpoint-layout[data-v-cbb0f9f4]{display:flex;flex-direction:column;gap:16px}.notion-form-panel[data-v-cbb0f9f4]{padding:12px 0}.endpoint-editor-panel[data-v-cbb0f9f4]{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-cbb0f9f4],.table-title-row[data-v-cbb0f9f4]{display:flex;align-items:center;justify-content:space-between;gap:12px}.notion-panel-title[data-v-cbb0f9f4]{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-cbb0f9f4],.table-title-row .notion-panel-title[data-v-cbb0f9f4]{margin-bottom:0}.table-count[data-v-cbb0f9f4]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .5))}.form-fields[data-v-cbb0f9f4]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-cbb0f9f4]{display:flex;flex-direction:column}.endpoint-form-grid[data-v-cbb0f9f4]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.span-2[data-v-cbb0f9f4]{grid-column:1 / -1}.form-group label[data-v-cbb0f9f4]{font-size:.75rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .65));margin-bottom:4px}.form-row[data-v-cbb0f9f4]{display:flex;gap:10px}.form-actions[data-v-cbb0f9f4]{display:flex;gap:8px;margin-top:8px}.flex-grow[data-v-cbb0f9f4]{flex:1}.endpoint-preview[data-v-cbb0f9f4]{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-cbb0f9f4]{color:var(--k-text-muted, rgba(55, 53, 47, .5));font-size:.72rem;font-weight:600;flex-shrink:0}.endpoint-preview code[data-v-cbb0f9f4]{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-cbb0f9f4]{padding:12px 0}.table-title-row[data-v-cbb0f9f4]{margin-bottom:8px}.table-container[data-v-cbb0f9f4]{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-cbb0f9f4]{width:100%;border-collapse:collapse;font-size:.78rem}.flat-table th[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{border-bottom:none}.empty-cell[data-v-cbb0f9f4]{text-align:center;padding:40px!important;color:var(--k-text-muted, rgba(55, 53, 47, .35))}.endpoint-name[data-v-cbb0f9f4]{font-weight:600}.group-badge[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{font-size:.65rem;font-weight:600;padding:1px 5px;border-radius:3px;text-transform:uppercase;margin-right:6px}.method-tag.redirect[data-v-cbb0f9f4]{background-color:var(--memesluna-primary-soft-bg);color:var(--k-color-primary, #2383e2)}.link-text[data-v-cbb0f9f4]{font-weight:500;color:var(--k-color-primary, #2383e2);cursor:pointer}.link-text[data-v-cbb0f9f4]:hover{text-decoration:underline}.target-url[data-v-cbb0f9f4]{font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .4));max-width:300px;margin-top:2px}.url-line[data-v-cbb0f9f4]{display:flex;align-items:center;gap:4px}.font-mono[data-v-cbb0f9f4]{font-family:SFMono-Regular,Consolas,monospace}.truncate[data-v-cbb0f9f4]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-buttons[data-v-cbb0f9f4]{display:flex;justify-content:flex-end;gap:4px}.icon-btn[data-v-cbb0f9f4]{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-cbb0f9f4]{width:12px;height:12px}.icon-btn.hover-bg[data-v-cbb0f9f4]: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-cbb0f9f4]: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-cbb0f9f4]{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-cbb0f9f4]:hover{color:var(--k-color-primary, #2383e2)}.icon-btn-inline svg[data-v-cbb0f9f4]{width:10px;height:10px}.settings-preview-panel[data-v-cbb0f9f4]{width:100%;max-width:none;margin:0 auto}.preview-page-header[data-v-cbb0f9f4]{margin-bottom:12px}.preview-dashboard-grid[data-v-cbb0f9f4]{display:grid;grid-template-columns:minmax(560px,1fr) minmax(420px,.9fr);gap:22px;align-items:start}.preview-card[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{color:var(--k-text-normal, #111827);font-size:1rem;line-height:1.25;font-weight:760}.preview-card-desc[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]:hover:not(:disabled){background-color:var(--k-bg-panel, #f8fafc)}.preview-action-btn[data-v-cbb0f9f4]:disabled{opacity:.45;cursor:not-allowed}.preview-table-wrap[data-v-cbb0f9f4]{overflow-x:auto}.preview-route-table[data-v-cbb0f9f4]{width:100%;border-collapse:collapse;table-layout:fixed}.preview-route-table th[data-v-cbb0f9f4],.preview-route-table td[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{border-bottom:none}.preview-route-table th[data-v-cbb0f9f4]:nth-child(1),.preview-route-table td[data-v-cbb0f9f4]:nth-child(1){width:86px}.preview-route-table th[data-v-cbb0f9f4]:nth-child(2),.preview-route-table td[data-v-cbb0f9f4]:nth-child(2){width:130px}.preview-route-table th[data-v-cbb0f9f4]:nth-child(4),.preview-route-table td[data-v-cbb0f9f4]:nth-child(4){width:186px}.preview-route-table th[data-v-cbb0f9f4]:nth-child(5),.preview-route-table td[data-v-cbb0f9f4]:nth-child(5){width:64px;text-align:center}.preview-mini-cover[data-v-cbb0f9f4]{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-cbb0f9f4]{display:block}.preview-mini-cover img[data-v-cbb0f9f4]{width:100%;height:100%;object-fit:cover;background-color:var(--k-bg-panel, #f7f7f5)}.preview-route-icon[data-v-cbb0f9f4]{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-cbb0f9f4]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-name[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{background-color:var(--memesluna-success-soft-bg);color:var(--k-color-success, #2b8a5c)}.preview-route-desc[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{display:flex;align-items:center;justify-content:center}.preview-empty-state[data-v-cbb0f9f4]{padding:64px 20px;color:var(--k-text-muted, rgba(55, 53, 47, .48));text-align:center;font-size:.82rem}.preview-prompt-container[data-v-cbb0f9f4]{display:flex;flex-direction:column;gap:12px}.preview-sub-title[data-v-cbb0f9f4]{font-size:.72rem;font-weight:600;color:var(--k-text-muted, rgba(55, 53, 47, .45));text-transform:uppercase}.preview-sub-desc[data-v-cbb0f9f4]{margin-top:2px;font-size:.72rem;color:var(--k-text-muted, rgba(55, 53, 47, .45))}.preview-block-header[data-v-cbb0f9f4]{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.preview-code-block[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{max-height:620px;background-color:var(--memesluna-final-prompt-bg);border-color:var(--memesluna-primary-soft-bg)}.preview-code-block.polished[data-v-cbb0f9f4]{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-cbb0f9f4]{color:var(--memesluna-code-text);font-size:.76rem;line-height:1.7}.text-gray-muted[data-v-cbb0f9f4]{color:var(--k-text-muted, rgba(55, 53, 47, .35));font-style:italic}.toast-banner[data-v-cbb0f9f4]{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-cbb0f9f4]{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-cbb0f9f4]{background-color:var(--memesluna-toast-error-bg);border-color:var(--memesluna-danger-border);color:var(--k-color-danger, #eb5757)}.toast-icon[data-v-cbb0f9f4]{width:14px;height:14px;flex-shrink:0}.loading-container[data-v-cbb0f9f4]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0}.spinner[data-v-cbb0f9f4]{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-cbb0f9f4 .8s linear infinite;margin-bottom:12px}@keyframes spin-cbb0f9f4{to{transform:rotate(360deg)}}.loading-container p[data-v-cbb0f9f4]{font-size:.78rem;color:var(--k-text-muted, rgba(55, 53, 47, .5));margin:0}.fade-enter-active[data-v-cbb0f9f4],.fade-leave-active[data-v-cbb0f9f4]{transition:opacity .15s ease,transform .15s ease}.fade-enter-from[data-v-cbb0f9f4],.fade-leave-to[data-v-cbb0f9f4]{opacity:0;transform:translateY(-8px)}@media (max-width: 1280px){.notion-content[data-v-cbb0f9f4]{padding:64px 80px 96px}.preview-dashboard-grid[data-v-cbb0f9f4]{grid-template-columns:1fr}.staging-grid[data-v-cbb0f9f4]{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}@media (max-width: 780px){.memesluna-app-layout[data-v-cbb0f9f4]{padding-left:0}.notion-content[data-v-cbb0f9f4]{padding:18px 16px}.content-breadcrumb-header[data-v-cbb0f9f4],.notion-db-header[data-v-cbb0f9f4],.page-section-header[data-v-cbb0f9f4],.notion-page-header[data-v-cbb0f9f4],.gallery-bulk-toolbar[data-v-cbb0f9f4]{align-items:stretch;flex-direction:column}.notion-db-actions[data-v-cbb0f9f4],.bulk-actions[data-v-cbb0f9f4],.form-actions[data-v-cbb0f9f4],.staging-header-actions[data-v-cbb0f9f4],.collection-name-input-notion[data-v-cbb0f9f4],.notion-db-actions .btn[data-v-cbb0f9f4],.form-actions .btn[data-v-cbb0f9f4]{width:100%}.endpoint-form-grid[data-v-cbb0f9f4]{grid-template-columns:1fr}.span-2[data-v-cbb0f9f4]{grid-column:auto}.folders-grid[data-v-cbb0f9f4]{grid-template-columns:1fr}.notion-gallery-grid[data-v-cbb0f9f4]{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.preview-block-header[data-v-cbb0f9f4],.preview-card-header[data-v-cbb0f9f4]{align-items:stretch;flex-direction:column}.preview-action-btn[data-v-cbb0f9f4]{width:100%}.staging-toolbar[data-v-cbb0f9f4]{align-items:stretch;flex-direction:column}.staging-search-box[data-v-cbb0f9f4]{max-width:none;width:100%}.preview-route-table[data-v-cbb0f9f4]{min-width:720px}}@media (max-width: 1180px){.asset-hero-panel[data-v-cbb0f9f4]{grid-template-columns:1fr}}@media (max-width: 980px){.detail-topbar[data-v-cbb0f9f4],.asset-gallery-toolbar[data-v-cbb0f9f4]{align-items:stretch;flex-direction:column}.detail-top-actions[data-v-cbb0f9f4],.asset-filter-bar[data-v-cbb0f9f4]{justify-content:flex-start}.asset-filter-bar[data-v-cbb0f9f4]{flex-wrap:wrap}.asset-search-box[data-v-cbb0f9f4]{max-width:none;width:100%}}@media (max-width: 640px){.asset-hero-panel[data-v-cbb0f9f4]{padding:14px;border-radius:14px}.asset-identity-card[data-v-cbb0f9f4]{align-items:flex-start}.asset-avatar-frame[data-v-cbb0f9f4]{width:72px;height:72px;flex-basis:72px;border-radius:14px}.asset-title-row h1[data-v-cbb0f9f4]{font-size:1.35rem}.asset-api-row[data-v-cbb0f9f4]{grid-template-columns:1fr}.asset-tabs[data-v-cbb0f9f4],.detail-top-actions[data-v-cbb0f9f4]{width:100%}.asset-btn[data-v-cbb0f9f4]{flex:1}.notion-gallery-grid[data-v-cbb0f9f4]{grid-template-columns:repeat(auto-fill,minmax(138px,1fr))}.staging-grid[data-v-cbb0f9f4],.staging-actions[data-v-cbb0f9f4]{grid-template-columns:1fr}}
package/lib/config.d.ts CHANGED
@@ -6,6 +6,14 @@ export interface Config {
6
6
  injectVariables: boolean;
7
7
  variableRefreshIntervalMs: number;
8
8
  injectVariablesPrompt: string;
9
+ autoCollect: boolean;
10
+ whitelistGroups: string[];
11
+ emojiFrequencyWindowMinutes: number;
12
+ emojiFrequencyThreshold: number;
13
+ minEmojiSize: number;
14
+ maxEmojiSize: number;
15
+ groupAutoCollectLimit: number;
16
+ similarityThreshold: number;
9
17
  }
10
18
  export declare const Config: Schema<Config>;
11
19
  export declare const name = "memesluna";