Files
at-mintel/directus/extensions/feedback-commander/index.js
Marc Mintel 81deaf447f fix(acquisition): standardize bundling and externalize React/PDF dependencies
- Added JSX support to esbuild configuration.
- Externalized react, react-dom, and @react-pdf/renderer to avoid redundant bundling.
- Updated acquisition-library exports for modular PDF generation.
2026-02-12 21:24:15 +01:00

2 lines
19 KiB
JavaScript

import{useApi as e,defineModule as a}from"@directus/extensions-sdk";import{defineComponent as t,ref as n,computed as l,onMounted as r,resolveComponent as o,openBlock as d,createBlock as s,withCtx as i,createVNode as c,createTextVNode as u,toDisplayString as p,createElementVNode as v,createElementBlock as b,Fragment as m,renderList as f,createCommentVNode as x,TransitionGroup as g,normalizeClass as h,normalizeStyle as y,Transition as k}from"vue";const _={class:"sidebar-header"},w={class:"feedback-container"},C={key:0,class:"empty-state"},j={key:1,class:"empty-state"},S={key:2,class:"operational-layout"},z={class:"triage-lane"},F={class:"lane-header"},A={class:"lane-content scrollbar"},E=["onClick"],T={class:"card-body"},V={class:"card-header"},D={class:"card-user"},P={class:"card-date"},L={class:"card-text"},O={class:"card-footer"},I={class:"meta-tags"},R={class:"processing-desk scrollbar"},U={class:"desk-header"},M={class:"headline-group"},Y={class:"status-indicator"},q={class:"status-text"},B={class:"header-actions"},N={class:"desk-grid"},H={class:"main-column"},W={key:0,class:"visual-proof"},X={class:"proof-label"},$=["src"],G={class:"main-text"},J={class:"reply-section"},K={class:"section-divider"},Q={class:"thread"},Z={class:"reply-header"},ee={class:"reply-user"},ae={class:"reply-date"},te={class:"reply-text"},ne={key:0,class:"empty-state-mini"},le={class:"composer"},re={class:"composer-actions"},oe={class:"meta-column"},de={class:"meta-item"},se={class:"meta-item"},ie=["title"],ce={class:"meta-item"},ue={class:"trace-code"},pe={class:"meta-item"},ve={class:"coords"},be={class:"meta-item"},me={class:"id-code"},fe={class:"help-box"},xe={key:1,class:"no-selection-desk"};var ge=t({__name:"module",setup(a){const t=e(),ge=n([]),he=n([]),ye=n(!0),ke=n(null),_e=n(!1),we=n(null),Ce=n("all"),je=n("open"),Se=n(""),ze=[{text:"Open",value:"open",icon:"warning",color:"#E91E63"},{text:"In Progress",value:"in_progress",icon:"play_arrow",color:"#2196F3"},{text:"Resolved",value:"resolved",icon:"check_circle",color:"#4CAF50"}],Fe=[{text:"All Statuses",value:"all"},...ze],Ae=l(()=>{const e=new Set(ge.value.map(e=>e.project).filter(Boolean));return Array.from(e).sort()}),Ee=l(()=>ge.value.filter(e=>{const a="all"===Ce.value||e.project===Ce.value,t=e.status||"open",n="all"===je.value||t===je.value;return a&&n}));async function Te(){ye.value=!0,ke.value=null;try{const e=await t.get("/items/visual_feedback",{params:{sort:"-date_created,-id",limit:300}});ge.value=e.data.data}catch(e){ke.value=e.message}finally{ye.value=!1}}async function Ve(e){if(we.value)try{await t.patch(`/items/visual_feedback/${we.value.id}`,{status:e}),Te()}catch(e){console.error(e)}}async function De(){if(Se.value.trim()&&we.value){_e.value=!0;try{const e=await t.post("/items/visual_feedback_comments",{feedback_id:we.value.id,user_name:"Operator",text:Se.value});he.value.unshift(e.data.data),Se.value=""}catch(e){console.error(e)}finally{_e.value=!1}}}function Pe(e){return e&&"number"!=typeof e?new Date(e).toLocaleDateString()+" "+new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"Legacy"}function Le(e){const a=function(e){if(!e||!e.url)return"";try{const a=new URL(e.url);return a.searchParams.set("fb_id",e.id),a.toString()}catch(a){return e.url+"?fb_id="+e.id}}(e);a&&window.open(a,"_blank")}function Oe(e){const a=ze.find(a=>a.value===e);return a?a.color:"var(--foreground-subdued)"}return r(()=>{Te()}),(e,a)=>{const n=o("v-breadcrumb"),l=o("v-chip"),r=o("v-text-overflow"),Ie=o("v-icon"),Re=o("v-list-item-icon"),Ue=o("v-list-item-content"),Me=o("v-list-item"),Ye=o("v-list"),qe=o("v-info"),Be=o("v-button"),Ne=o("v-select"),He=o("v-card-title"),We=o("v-card-text"),Xe=o("v-card"),$e=o("v-divider"),Ge=o("v-textarea"),Je=o("private-view");return d(),s(Je,{title:"Feedback Commander"},{headline:i(()=>[c(n,{items:[{name:"Feedback",to:"/feedback-commander"}]})]),"title-outer:after":i(()=>[ye.value?(d(),s(l,{key:0,label:"",color:"blue",small:""},{default:i(()=>[...a[6]||(a[6]=[u("Loading...",-1)])]),_:1})):ke.value?(d(),s(l,{key:1,label:"",color:"red",small:""},{default:i(()=>[...a[7]||(a[7]=[u("Fetch Error",-1)])]),_:1})):(d(),s(l,{key:2,label:"",color:"green",small:""},{default:i(()=>[u(p(ge.value.length)+" Items",1)]),_:1}))]),navigation:i(()=>[v("div",_,[c(r,{text:"Websites",class:"header-text"})]),c(Ye,{nav:""},{default:i(()=>[c(Me,{active:"all"===Ce.value,onClick:a[0]||(a[0]=e=>Ce.value="all"),clickable:""},{default:i(()=>[c(Re,null,{default:i(()=>[c(Ie,{name:"language"})]),_:1}),c(Ue,null,{default:i(()=>[c(r,{text:"All Projects"})]),_:1})]),_:1},8,["active"]),(d(!0),b(m,null,f(Ae.value,e=>(d(),s(Me,{key:e,active:Ce.value===e,onClick:a=>Ce.value=e,clickable:""},{default:i(()=>[c(Re,null,{default:i(()=>[c(Ie,{name:"public",color:"var(--primary)"})]),_:1}),c(Ue,null,{default:i(()=>[c(r,{text:e||"Unknown"},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"]))),128))]),_:1})]),default:i(()=>[v("div",w,[ge.value.length||ye.value||ke.value?x("v-if",!0):(d(),b("div",C,[c(qe,{icon:"inbox",title:"Clean Inbox",center:""},{default:i(()=>[...a[8]||(a[8]=[u(" All feedback has been processed. Great job! ",-1)])]),_:1})])),ke.value?(d(),b("div",j,[c(qe,{icon:"error",title:"Fetch Failed",description:ke.value,center:""},null,8,["description"]),c(Be,{onClick:Te,secondary:"",small:""},{default:i(()=>[...a[9]||(a[9]=[u("Retry",-1)])]),_:1})])):ge.value.length?(d(),b("div",S,[x(" Detailed Triage Lane "),v("aside",z,[v("div",F,[c(Ne,{modelValue:je.value,"onUpdate:modelValue":a[1]||(a[1]=e=>je.value=e),items:Fe,small:"",placeholder:"Status Filter"},null,8,["modelValue"])]),v("div",A,[c(g,{name:"list"},{default:i(()=>[(d(!0),b(m,null,f(Ee.value,e=>{var a,n;return d(),b("div",{key:e.id,class:h(["feedback-card",{active:(null==(a=we.value)?void 0:a.id)===e.id}]),onClick:a=>async function(e){we.value=null,setTimeout(async()=>{we.value=e,he.value=[];try{const a=await t.get("/items/visual_feedback_comments",{params:{filter:{feedback_id:{_eq:e.id}},sort:"-date_created,-id"}});he.value=a.data.data}catch(e){console.error(e)}},10)}(e)},[v("div",{class:"card-status-bar",style:y({background:Oe(e.status||"open")})},null,4),v("div",T,[v("header",V,[v("span",D,p(e.user_name),1),v("span",P,p(Pe(e.date_created||e.id)),1)]),v("div",L,p(e.text),1),v("footer",O,[v("div",I,[c(l,{"x-small":"",outline:""},{default:i(()=>[u(p(e.project),1)]),_:2},1024),c(Ie,{name:"bug"===e.type?"bug_report":"lightbulb",color:"bug"===e.type?"#E91E63":"#FFC107",small:""},null,8,["name","color"])]),(null==(n=we.value)?void 0:n.id)===e.id?(d(),s(Ie,{key:0,name:"chevron_right",small:""})):x("v-if",!0)])])],10,E)}),128))]),_:1})])]),x(" Elaborated Master-Detail Desk "),v("main",R,[c(k,{name:"fade",mode:"out-in"},{default:i(()=>{return[we.value?(d(),b("div",{key:we.value.id,class:"desk-content"},[v("header",U,[v("div",M,[v("div",Y,[v("div",{class:"status-dot",style:y({background:Oe(we.value.status||"open")})},null,4),v("span",q,p((e=we.value.status||"open",e.charAt(0).toUpperCase()+e.slice(1).replace("_"," "))),1)]),v("h2",null,p(we.value.user_name)+"'s Submission",1)]),v("div",B,[c(Be,{primary:"",onClick:a[2]||(a[2]=e=>Le(we.value))},{default:i(()=>[c(Ie,{name:"open_in_new",left:""}),a[10]||(a[10]=u(" Open & Highlight ",-1))]),_:1}),c(Ne,{modelValue:we.value.status,"onUpdate:modelValue":[a[3]||(a[3]=e=>we.value.status=e),Ve],items:ze,inline:""},null,8,["modelValue"])])]),v("div",N,[x(" Message Container "),v("div",H,[c(Xe,{class:"content-card"},{default:i(()=>[c(He,null,{default:i(()=>[c(Ie,{name:"format_quote",left:""}),a[11]||(a[11]=u(" Feedback Content ",-1))]),_:1}),c(We,{class:"feedback-body"},{default:i(()=>{return[we.value.screenshot?(d(),b("div",W,[v("label",X,[c(Ie,{name:"photo","x-small":""}),a[12]||(a[12]=u(" Element Snapshot",-1))]),v("img",{src:(e=we.value.screenshot,e?`/assets/${e}`:""),class:"screenshot-img"},null,8,$)])):x("v-if",!0),v("div",G,p(we.value.text),1)];var e}),_:1})]),_:1}),v("section",J,[v("div",K,[c($e),a[13]||(a[13]=v("span",{class:"divider-label"},"Internal Communication",-1)),c($e)]),v("div",Q,[c(g,{name:"thread-list"},{default:i(()=>[(d(!0),b(m,null,f(he.value,e=>(d(),b("div",{key:e.id,class:"reply-bubble"},[v("header",Z,[v("span",ee,p(e.user_name),1),v("span",ae,p(Pe(e.date_created||e.id)),1)]),v("div",te,p(e.text),1)]))),128))]),_:1}),he.value.length?x("v-if",!0):(d(),b("div",ne,[c(Ie,{name:"auto_awesome",small:""}),a[14]||(a[14]=u(" No replies yet. Start the thread. ",-1))]))]),v("div",le,[c(Ge,{modelValue:Se.value,"onUpdate:modelValue":a[4]||(a[4]=e=>Se.value=e),placeholder:"Compose internal response...","auto-grow":""},null,8,["modelValue"]),v("div",re,[c(Be,{secondary:"",loading:_e.value,onClick:De},{default:i(()=>[...a[15]||(a[15]=[u("Post Reply",-1)])]),_:1},8,["loading"])])])])]),x(" Technical Sidebar "),v("aside",oe,[c(Xe,{class:"meta-card"},{default:i(()=>[c(He,null,{default:i(()=>[...a[16]||(a[16]=[u("Context",-1)])]),_:1}),c(We,{class:"meta-list"},{default:i(()=>{return[v("div",de,[v("label",null,[c(Ie,{name:"public","x-small":""}),a[17]||(a[17]=u(" Website",-1))]),v("strong",null,p(we.value.project),1)]),v("div",se,[v("label",null,[c(Ie,{name:"link","x-small":""}),a[18]||(a[18]=u(" Source Path",-1))]),v("span",{class:"truncate-path",title:we.value.url},p((e=we.value.url,e?e.replace(/^https?:\/\//,""):"")),9,ie),c(Be,{icon:"",small:"",onClick:a[5]||(a[5]=e=>function(e){e&&window.open(e,"_blank")}(we.value.url))},{default:i(()=>[c(Ie,{name:"launch"})]),_:1})]),c($e),v("div",ce,[v("label",null,[c(Ie,{name:"layers","x-small":""}),a[19]||(a[19]=u(" Element Trace",-1))]),v("code",ue,p(we.value.selector||"Body"),1)]),v("div",pe,[v("label",null,[c(Ie,{name:"location_searching","x-small":""}),a[20]||(a[20]=u(" Precise Mark",-1))]),v("span",ve,"X: "+p(Math.round(we.value.x))+"px / Y: "+p(Math.round(we.value.y))+"px",1)]),v("div",be,[v("label",null,[c(Ie,{name:"fingerprint","x-small":""}),a[21]||(a[21]=u(" Reference ID",-1))]),v("code",me,p(we.value.id),1)])];var e}),_:1})]),_:1}),v("div",fe,[c(Ie,{name:"help_outline","x-small":""}),a[22]||(a[22]=v("span",null,'Click "Open & Highlight" to jump directly to this element on the live site.',-1))])])])])):(d(),b("div",xe,[c(qe,{icon:"touch_app",title:"Select Feedback",center:""},{default:i(()=>[...a[23]||(a[23]=[u(" Choose an entry from the triage list to view details and process. ",-1)])]),_:1})]))];var e}),_:1})])])):x("v-if",!0)])]),_:1})}}}),he=[],ye=[];!function(e,a){if(e&&"undefined"!=typeof document){var t,n=!0===a.prepend?"prepend":"append",l=!0===a.singleTag,r="string"==typeof a.container?document.querySelector(a.container):document.getElementsByTagName("head")[0];if(l){var o=he.indexOf(r);-1===o&&(o=he.push(r)-1,ye[o]={}),t=ye[o]&&ye[o][n]?ye[o][n]:ye[o][n]=d()}else t=d();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function d(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),a.attributes)for(var t=Object.keys(a.attributes),l=0;l<t.length;l++)e.setAttribute(t[l],a.attributes[t[l]]);var o="prepend"===n?"afterbegin":"beforeend";return r.insertAdjacentElement(o,e),e}}("\n.feedback-container[data-v-409b935e] {\n\theight: calc(100vh - 64px);\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: var(--background-subdued);\n}\n.operational-layout[data-v-409b935e] {\n\tdisplay: flex;\n\theight: 100%;\n}\n\n/* Triage Lane Polish */\n.triage-lane[data-v-409b935e] {\n\twidth: 360px;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: var(--background-normal);\n\tborder-right: 1px solid var(--border-normal);\n\tbox-shadow: 2px 0 8px rgba(0,0,0,0.02);\n}\n.lane-header[data-v-409b935e] {\n\tpadding: 16px;\n\tbackground: var(--background-normal);\n\tborder-bottom: 1px solid var(--border-normal);\n}\n.lane-content[data-v-409b935e] {\n\tflex: 1;\n\toverflow-y: auto;\n\tpadding: 12px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 12px;\n}\n.feedback-card[data-v-409b935e] {\n\tbackground: var(--background-normal);\n\tborder: 1px solid var(--border-subdued);\n\tborder-radius: 8px;\n\tdisplay: flex;\n\toverflow: hidden;\n\tcursor: pointer;\n\ttransition: all var(--transition);\n}\n.feedback-card[data-v-409b935e]:hover {\n\tborder-color: var(--border-normal);\n\tbackground: var(--background-subdued);\n\ttransform: translateY(-1px);\n\tbox-shadow: 0 4px 8px rgba(0,0,0,0.04);\n}\n.feedback-card.active[data-v-409b935e] {\n\tborder-color: var(--primary);\n\tbackground: var(--background-accent);\n\tbox-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.1);\n}\n.card-status-bar[data-v-409b935e] {\n\twidth: 4px;\n}\n.card-body[data-v-409b935e] {\n\tflex: 1;\n\tpadding: 12px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.card-header[data-v-409b935e] {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tfont-size: 11px;\n}\n.card-user[data-v-409b935e] { font-weight: bold; color: var(--foreground-normal);\n}\n.card-date[data-v-409b935e] { color: var(--foreground-subdued);\n}\n.card-text[data-v-409b935e] {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tcolor: var(--foreground-normal);\n\tdisplay: -webkit-box;\n\t-webkit-line-clamp: 2;\n\t-webkit-box-orient: vertical;\n\toverflow: hidden;\n}\n.card-footer[data-v-409b935e] {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n.meta-tags[data-v-409b935e] {\n\tdisplay: flex;\n\tgap: 8px;\n\talign-items: center;\n}\n\n/* Processing Desk Refinement */\n.processing-desk[data-v-409b935e] {\n\tflex: 1;\n\theight: 100%;\n\toverflow-y: auto;\n\tpadding: 32px;\n}\n.desk-content[data-v-409b935e] {\n\tmax-width: 1100px;\n\tmargin: 0 auto;\n}\n.desk-header[data-v-409b935e] {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: flex-end;\n\tmargin-bottom: 32px;\n\tborder-bottom: 2px solid var(--border-normal);\n\tpadding-bottom: 20px;\n}\n.headline-group[data-v-409b935e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.status-indicator[data-v-409b935e] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\ttext-transform: uppercase;\n\tcolor: var(--foreground-subdued);\n}\n.status-dot[data-v-409b935e] {\n\twidth: 8px;\n\theight: 8px;\n\tborder-radius: 50%;\n}\n.status-text[data-v-409b935e] { letter-spacing: 0.5px;\n}\n.header-actions[data-v-409b935e] {\n\tdisplay: flex;\n\tgap: 16px;\n\talign-items: center;\n}\n.desk-grid[data-v-409b935e] {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr 300px;\n\tgap: 24px;\n\talign-items: start;\n}\n.content-card[data-v-409b935e] {\n\tborder-radius: 12px;\n\toverflow: hidden;\n}\n.feedback-body[data-v-409b935e] {\n\tfont-size: 18px;\n\tline-height: 1.6;\n\tpadding: 24px;\n\tcolor: var(--foreground-normal);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 20px;\n}\n.visual-proof[data-v-409b935e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n}\n.proof-label[data-v-409b935e] {\n\tfont-size: 10px;\n\ttext-transform: uppercase;\n\tfont-weight: 800;\n\tcolor: var(--foreground-subdued);\n\tletter-spacing: 0.5px;\n}\n.screenshot-img[data-v-409b935e] {\n\twidth: 100%;\n\tborder-radius: 8px;\n\tborder: 1px solid var(--border-normal);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,0.1);\n\tbackground: var(--background-subdued);\n}\n.main-text[data-v-409b935e] {\n\twhite-space: pre-wrap;\n}\n.reply-section[data-v-409b935e] {\n\tmargin-top: 40px;\n}\n.section-divider[data-v-409b935e] {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 16px;\n\tmargin-bottom: 24px;\n}\n.divider-label[data-v-409b935e] {\n\tfont-size: 11px;\n\ttext-transform: uppercase;\n\tfont-weight: 800;\n\tcolor: var(--foreground-subdued);\n\twhite-space: nowrap;\n\tletter-spacing: 1px;\n}\n.thread[data-v-409b935e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 16px;\n\tmargin-bottom: 32px;\n}\n.reply-bubble[data-v-409b935e] {\n\tpadding: 16px;\n\tborder-radius: 12px;\n\tbackground: var(--background-normal);\n\tborder: 1px solid var(--border-subdued);\n}\n.reply-header[data-v-409b935e] {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tfont-size: 11px;\n\tmargin-bottom: 8px;\n}\n.reply-user[data-v-409b935e] { font-weight: 800; color: var(--primary);\n}\n.reply-date[data-v-409b935e] { color: var(--foreground-subdued);\n}\n.reply-text[data-v-409b935e] { font-size: 14px; line-height: 1.5;\n}\n.composer[data-v-409b935e] {\n\tbackground: var(--background-normal);\n\tborder: 1px solid var(--border-normal);\n\tborder-radius: 12px;\n\tpadding: 16px;\n}\n.composer-actions[data-v-409b935e] {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tmargin-top: 12px;\n}\n.meta-card[data-v-409b935e] {\n\tborder-radius: 12px;\n}\n.meta-list[data-v-409b935e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 16px;\n\tpadding: 16px;\n}\n.meta-item[data-v-409b935e] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tfont-size: 13px;\n}\n.meta-item label[data-v-409b935e] {\n\tfont-size: 10px;\n\ttext-transform: uppercase;\n\tfont-weight: bold;\n\tcolor: var(--foreground-subdued);\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n}\n.truncate-path[data-v-409b935e] {\n\tcolor: var(--primary);\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n.trace-code[data-v-409b935e], .id-code[data-v-409b935e] {\n\tbackground: var(--background-subdued);\n\tpadding: 4px 8px;\n\tborder-radius: 4px;\n\tfont-size: 11px;\n\tword-break: break-all;\n}\n.coords[data-v-409b935e] { font-weight: bold; font-family: var(--family-monospace);\n}\n.help-box[data-v-409b935e] {\n\tmargin-top: 20px;\n\tpadding: 16px;\n\tbackground: rgba(var(--primary-rgb), 0.05);\n\tborder-radius: 12px;\n\tfont-size: 12px;\n\tcolor: var(--primary);\n\tdisplay: flex;\n\tgap: 8px;\n\tline-height: 1.4;\n}\n.no-selection-desk[data-v-409b935e] {\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.empty-state-mini[data-v-409b935e] {\n\ttext-align: center;\n\tpadding: 24px;\n\tfont-size: 12px;\n\tcolor: var(--foreground-subdued);\n\tbackground: var(--background-subdued);\n\tborder-radius: 12px;\n\tborder: 1px dashed var(--border-normal);\n}\n\n/* Animations */\n.list-enter-active[data-v-409b935e], .list-leave-active[data-v-409b935e] { transition: all 0.3s ease;\n}\n.list-enter-from[data-v-409b935e], .list-leave-to[data-v-409b935e] { opacity: 0; transform: translateX(-20px);\n}\n.fade-enter-active[data-v-409b935e], .fade-leave-active[data-v-409b935e] { transition: opacity 0.2s ease, transform 0.2s ease;\n}\n.fade-enter-from[data-v-409b935e] { opacity: 0; transform: translateY(10px);\n}\n.fade-leave-to[data-v-409b935e] { opacity: 0; transform: translateY(-10px);\n}\n.thread-list-enter-active[data-v-409b935e] { transition: all 0.4s ease; transform-origin: top;\n}\n.thread-list-enter-from[data-v-409b935e] { opacity: 0; transform: scaleY(0.9);\n}\n.scrollbar[data-v-409b935e]::-webkit-scrollbar { width: 6px;\n}\n.scrollbar[data-v-409b935e]::-webkit-scrollbar-track { background: transparent;\n}\n.scrollbar[data-v-409b935e]::-webkit-scrollbar-thumb { background: var(--border-subdued); border-radius: 3px;\n}\n.scrollbar[data-v-409b935e]::-webkit-scrollbar-thumb:hover { background: var(--border-normal);\n}\n",{});var ke=a({id:"feedback-commander",name:"Feedback Commander",icon:"view_kanban",routes:[{path:"",component:((e,a)=>{const t=e.__vccOpts||e;for(const[e,n]of a)t[e]=n;return t})(ge,[["__scopeId","data-v-409b935e"],["__file","module.vue"]])}]});export{ke as default};