Files
at-mintel/packages/cms-infra/extensions/unified-dashboard/index.js
Marc Mintel 9b1f3fb7e8
Some checks failed
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 2s
Monorepo Pipeline / 🧹 Lint (push) Successful in 1m1s
Monorepo Pipeline / 🚀 Release (push) Has been cancelled
Monorepo Pipeline / 🧪 Test (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been cancelled
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been cancelled
Monorepo Pipeline / 🏗️ Build (push) Has been cancelled
feat(next-feedback): add onActiveChange prop for controlled activation
2026-02-14 02:03:13 +01:00

2 lines
5.4 KiB
JavaScript

import{useApi as e,defineModule as t}from"@directus/extensions-sdk";import{defineComponent as a,ref as n,onMounted as r,resolveComponent as s,openBlock as d,createBlock as o,withCtx as i,createElementVNode as c,createVNode as l,toDisplayString as p,createTextVNode as u}from"vue";import{useRouter as m}from"vue-router";const v={class:"dashboard"},g={class:"stats-grid"},b={class:"stat-icon"},f={class:"stat-content"},h={class:"stat-value"},x={class:"stat-icon"},y={class:"stat-content"},w={class:"stat-value"},_={class:"stat-icon"},k={class:"stat-content"},C={class:"stat-value"},z={class:"recent-activity"},S={class:"action-grid"};var O=a({__name:"module",setup(t){const a=e(),O=m(),A=n({companies:0,people:0,leads:0});function N(e){O.push(e)}return r(async function(){try{const[e,t,n]=await Promise.all([a.get("/items/companies?aggregate[count]=*"),a.get("/items/people?aggregate[count]=*"),a.get("/items/leads?aggregate[count]=*")]);A.value={companies:e.data.data[0].count,people:t.data.data[0].count,leads:n.data.data[0].count}}catch(e){console.error("Failed to fetch stats:",e)}}),(e,t)=>{const a=s("v-icon"),n=s("v-button"),r=s("private-view");return d(),o(r,{title:"Overview"},{default:i(()=>[c("div",v,[t[11]||(t[11]=c("header",{class:"dashboard-header"},[c("h1",{class:"title"},"Infrastructure Stack"),c("p",{class:"subtitle"},"Zentrale Schnittstelle für Firmen, Personen und Leads.")],-1)),c("div",g,[c("div",{class:"stat-card",onClick:t[0]||(t[0]=e=>N("/company-manager"))},[c("div",b,[l(a,{name:"business",large:""})]),c("div",f,[t[5]||(t[5]=c("span",{class:"stat-label"},"Firmen",-1)),c("span",h,p(A.value.companies),1)]),l(a,{name:"chevron_right",class:"arrow"})]),c("div",{class:"stat-card",onClick:t[1]||(t[1]=e=>N("/people-manager"))},[c("div",x,[l(a,{name:"person",large:""})]),c("div",y,[t[6]||(t[6]=c("span",{class:"stat-label"},"Personen",-1)),c("span",w,p(A.value.people),1)]),l(a,{name:"chevron_right",class:"arrow"})]),c("div",{class:"stat-card",onClick:t[2]||(t[2]=e=>N("/acquisition-manager"))},[c("div",_,[l(a,{name:"auto_awesome",large:""})]),c("div",k,[t[7]||(t[7]=c("span",{class:"stat-label"},"Leads",-1)),c("span",C,p(A.value.leads),1)]),l(a,{name:"chevron_right",class:"arrow"})])]),c("div",z,[t[10]||(t[10]=c("h2",{class:"section-title"},"Schnellzugriff",-1)),c("div",S,[l(n,{secondary:"",block:"",onClick:t[3]||(t[3]=e=>N("/people-manager?create=true"))},{default:i(()=>[l(a,{name:"person_add",left:""}),t[8]||(t[8]=u(" Neue Person anlegen ",-1))]),_:1}),l(n,{secondary:"",block:"",onClick:t[4]||(t[4]=e=>N("/acquisition-manager?create=true"))},{default:i(()=>[l(a,{name:"add_link",left:""}),t[9]||(t[9]=u(" Neuen Lead registrieren ",-1))]),_:1})])])])]),_:1})}}}),A=[],N=[];!function(e,t){if(e&&"undefined"!=typeof document){var a,n=!0===t.prepend?"prepend":"append",r=!0===t.singleTag,s="string"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName("head")[0];if(r){var d=A.indexOf(s);-1===d&&(d=A.push(s)-1,N[d]={}),a=N[d]&&N[d][n]?N[d][n]:N[d][n]=o()}else a=o();65279===e.charCodeAt(0)&&(e=e.substring(1)),a.styleSheet?a.styleSheet.cssText+=e:a.appendChild(document.createTextNode(e))}function o(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),t.attributes)for(var a=Object.keys(t.attributes),r=0;r<a.length;r++)e.setAttribute(a[r],t.attributes[a[r]]);var d="prepend"===n?"afterbegin":"beforeend";return s.insertAdjacentElement(d,e),e}}("\n.dashboard[data-v-de73bdc6] { padding: 40px;\n}\n.dashboard-header[data-v-de73bdc6] { margin-bottom: 48px;\n}\n.title[data-v-de73bdc6] { font-size: 32px; font-weight: 800; letter-spacing: -0.5px; margin-bottom: 8px;\n}\n.subtitle[data-v-de73bdc6] { color: var(--theme--foreground-subdued); font-size: 16px;\n}\n.stats-grid[data-v-de73bdc6] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-bottom: 48px;\n}\n.stat-card[data-v-de73bdc6] {\n\tbackground: var(--theme--background-normal);\n\tborder: 1px solid var(--theme--border);\n\tpadding: 24px;\n\tborder-radius: 12px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 20px;\n\tcursor: pointer;\n\ttransition: all 0.2s ease;\n\tposition: relative;\n}\n.stat-card[data-v-de73bdc6]:hover {\n\tborder-color: var(--theme--primary);\n\ttransform: translateY(-2px);\n\tbox-shadow: 0 8px 16px rgba(0,0,0,0.1);\n}\n.stat-icon[data-v-de73bdc6] {\n\twidth: 56px;\n\theight: 56px;\n\tbackground: var(--theme--background-subdued);\n\tborder-radius: 12px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcolor: var(--theme--primary);\n}\n.stat-content[data-v-de73bdc6] { display: flex; flex-direction: column;\n}\n.stat-label[data-v-de73bdc6] { font-size: 12px; font-weight: 700; text-transform: uppercase; color: var(--theme--foreground-subdued); letter-spacing: 0.5px;\n}\n.stat-value[data-v-de73bdc6] { font-size: 28px; font-weight: 800; color: var(--theme--foreground);\n}\n.arrow[data-v-de73bdc6] { position: absolute; right: 24px; opacity: 0.2;\n}\n.stat-card:hover .arrow[data-v-de73bdc6] { opacity: 1; color: var(--theme--primary);\n}\n.recent-activity[data-v-de73bdc6] { max-width: 600px;\n}\n.section-title[data-v-de73bdc6] { font-size: 18px; font-weight: 700; margin-bottom: 24px;\n}\n.action-grid[data-v-de73bdc6] { display: grid; grid-template-columns: 1fr 1fr; gap: 16px;\n}\n",{});var P=t({id:"unified-dashboard",name:"Overview",icon:"dashboard",routes:[{path:"",component:((e,t)=>{const a=e.__vccOpts||e;for(const[e,n]of t)a[e]=n;return a})(O,[["__scopeId","data-v-de73bdc6"],["__file","module.vue"]])}]});export{P as default};