@weapp-vite/dashboard 6.15.14 → 6.15.15

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.
@@ -1 +1 @@
1
- import{F as e,I as t,_ as n,d as r,g as i,m as a,p as o,w as s,z as c}from"./vue.js";import{A as l,w as u}from"./index.js";var d={key:0,class:`text-[11px] uppercase tracking-[0.22em] text-[color:var(--dashboard-accent)]`},f={class:`flex h-10 w-10 items-center justify-center rounded-2xl bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-accent)]`},p={class:`h-5 w-5`},m={class:`font-semibold tracking-tight`},h={key:0,class:`mt-1 text-xs uppercase tracking-[0.16em] text-[color:var(--dashboard-text-soft)]`},g={key:1,class:`mt-2 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},_=n({__name:`AppIconFeatureCard`,props:{iconName:{},title:{},description:{},eyebrow:{},interactive:{type:Boolean},meta:{}},setup(n){return(_,v)=>(s(),a(`div`,{class:t(e(u)({interactive:n.interactive}))},[n.eyebrow?(s(),a(`p`,d,c(n.eyebrow),1)):o(``,!0),r(`div`,{class:t(n.eyebrow?`mt-3 flex items-start gap-3`:`flex items-start gap-3`)},[r(`span`,f,[r(`span`,p,[i(l,{name:n.iconName},null,8,[`name`])])]),r(`div`,null,[r(`h3`,m,c(n.title),1),n.meta?(s(),a(`p`,h,c(n.meta),1)):o(``,!0),n.description?(s(),a(`p`,g,c(n.description),1)):o(``,!0)])],2)],2))}});export{_ as t};
1
+ import{F as e,I as t,_ as n,d as r,g as i,m as a,p as o,w as s,z as c}from"./vue.js";import{A as l,w as u}from"./index.js";var d={key:0,class:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-accent)`},f={class:`flex h-10 w-10 items-center justify-center rounded-2xl bg-(--dashboard-accent-soft) text-(--dashboard-accent)`},p={class:`h-5 w-5`},m={class:`font-semibold tracking-tight`},h={key:0,class:`mt-1 text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},g={key:1,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},_=n({__name:`AppIconFeatureCard`,props:{iconName:{},title:{},description:{},eyebrow:{},interactive:{type:Boolean},meta:{}},setup(n){return(_,v)=>(s(),a(`div`,{class:t(e(u)({interactive:n.interactive}))},[n.eyebrow?(s(),a(`p`,d,c(n.eyebrow),1)):o(``,!0),r(`div`,{class:t(n.eyebrow?`mt-3 flex items-start gap-3`:`flex items-start gap-3`)},[r(`span`,f,[r(`span`,p,[i(l,{name:n.iconName},null,8,[`name`])])]),r(`div`,null,[r(`h3`,m,c(n.title),1),n.meta?(s(),a(`p`,h,c(n.meta),1)):o(``,!0),n.description?(s(),a(`p`,g,c(n.description),1)):o(``,!0)])],2)],2))}});export{_ as t};
@@ -1 +1 @@
1
- import{D as e,F as t,I as n,_ as r,d as i,m as a,p as o,w as s,z as c}from"./vue.js";import{w as l}from"./index.js";var u={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-[color:var(--dashboard-text-soft)]`},d=r({__name:`AppInsetPanel`,props:{eyebrow:{}},setup(r){return(d,f)=>(s(),a(`div`,{class:n(t(l)())},[r.eyebrow?(s(),a(`p`,u,c(r.eyebrow),1)):o(``,!0),i(`div`,{class:n(r.eyebrow?`mt-3`:void 0)},[e(d.$slots,`default`)],2)],2))}});export{d as t};
1
+ import{D as e,F as t,I as n,_ as r,d as i,m as a,p as o,w as s,z as c}from"./vue.js";import{w as l}from"./index.js";var u={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},d=r({__name:`AppInsetPanel`,props:{eyebrow:{}},setup(r){return(d,f)=>(s(),a(`div`,{class:n(t(l)())},[r.eyebrow?(s(),a(`p`,u,c(r.eyebrow),1)):o(``,!0),i(`div`,{class:n(r.eyebrow?`mt-3`:void 0)},[e(d.$slots,`default`)],2)],2))}});export{d as t};
@@ -1 +1 @@
1
- import{D as e,_ as t,d as n,m as r,p as i,w as a,z as o}from"./vue.js";var s={class:`space-y-1.5`},c={key:0,class:`text-[11px] uppercase tracking-[0.28em] text-[color:var(--dashboard-accent)]`},l={class:`flex flex-col gap-2 md:flex-row md:items-end md:justify-between`},u={class:`text-xl font-semibold tracking-tight md:text-2xl`},d={key:0,class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},f=t({__name:`AppSectionHeading`,props:{eyebrow:{default:void 0},title:{},description:{default:void 0}},setup(t){return(f,p)=>(a(),r(`div`,s,[t.eyebrow?(a(),r(`p`,c,o(t.eyebrow),1)):i(``,!0),n(`div`,l,[n(`div`,null,[n(`h2`,u,o(t.title),1),t.description?(a(),r(`p`,d,o(t.description),1)):i(``,!0)]),e(f.$slots,`aside`)])]))}});export{f as t};
1
+ import{D as e,_ as t,d as n,m as r,p as i,w as a,z as o}from"./vue.js";var s={class:`space-y-1.5`},c={key:0,class:`text-[11px] uppercase tracking-[0.28em] text-(--dashboard-accent)`},l={class:`flex flex-col gap-2 md:flex-row md:items-end md:justify-between`},u={class:`text-xl font-semibold tracking-tight md:text-2xl`},d={key:0,class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},f=t({__name:`AppSectionHeading`,props:{eyebrow:{default:void 0},title:{},description:{default:void 0}},setup(t){return(f,p)=>(a(),r(`div`,s,[t.eyebrow?(a(),r(`p`,c,o(t.eyebrow),1)):i(``,!0),n(`div`,l,[n(`div`,null,[n(`h2`,u,o(t.title),1),t.description?(a(),r(`p`,d,o(t.description),1)):i(``,!0)]),e(f.$slots,`aside`)])]))}});export{f as t};
@@ -1 +1 @@
1
- import{D as e,E as t,F as n,I as r,L as i,M as a,_ as o,b as s,d as c,f as l,g as u,h as d,k as f,l as p,m,p as h,u as g,v as _,w as v,z as y}from"./vue.js";import{E as b,m as x,o as S,s as C,w}from"./index.js";var T=o({__name:`AppEmptyState`,props:{as:{},compact:{type:Boolean}},setup(t){return(n,i)=>(v(),l(f(t.as??`div`),{class:r([`rounded-xl border border-dashed border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] text-sm text-[color:var(--dashboard-text-soft)]`,t.compact?`px-3 py-4`:`p-5`])},{default:a(()=>[e(n.$slots,`default`)]),_:3},8,[`class`]))}}),E=o({__name:`AppMetaLabel`,props:{accent:{type:Boolean}},setup(t){return(n,i)=>(v(),m(`p`,{class:r([`text-[11px] uppercase tracking-[0.18em]`,t.accent?`text-[color:var(--dashboard-accent)]`:`text-[color:var(--dashboard-text-soft)]`])},[e(n.$slots,`default`)],2))}}),D=o({__name:`AppRuntimeBadge`,props:{label:{},tone:{default:`neutral`}},setup(e){return(t,i)=>(v(),m(`span`,{class:r(n(b)({tone:e.tone}))},y(e.label),3))}}),O={class:`flex items-start justify-between gap-3`},k={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-[color:var(--dashboard-accent)]`},A={class:`mt-1 text-lg font-semibold tracking-tight`},j={class:`mt-3 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},M={key:0,class:`mt-3 text-[11px] uppercase tracking-[0.18em] text-[color:var(--dashboard-text-soft)]`},N={key:1,class:`mt-2 text-sm font-medium text-[color:var(--dashboard-text)]`},P=o({__name:`AppRuntimeFocusCard`,props:{event:{},eyebrow:{},emptyTitle:{},emptyDetail:{},durationText:{}},setup(t){let a=t,o=g(()=>a.event?S(a.event):null),u=g(()=>a.event?.title??a.emptyTitle??`尚无运行事件`),d=g(()=>a.event?.detail??a.emptyDetail??`当前工作区还没有推入结构化运行事件。`),f=g(()=>a.event?x(a.event):null);return(t,p)=>(v(),m(`div`,{class:r(n(w)())},[c(`div`,O,[c(`div`,null,[a.eyebrow?(v(),m(`p`,k,y(a.eyebrow),1)):h(``,!0),c(`h3`,A,y(u.value),1)]),o.value?(v(),l(D,i(s({key:0},o.value)),null,16)):h(``,!0)]),c(`p`,j,y(d.value),1),a.event?(v(),m(`p`,M,y(f.value),1)):h(``,!0),a.durationText?(v(),m(`p`,N,y(a.durationText),1)):h(``,!0),e(t.$slots,`default`)],2))}}),F={class:`flex items-start justify-between gap-3`},I={class:`min-w-0`},L={class:`truncate font-medium text-[color:var(--dashboard-text)]`},R={class:`mt-1 text-[11px] uppercase tracking-[0.16em] text-[color:var(--dashboard-text-soft)]`},z={key:0,class:`mt-3 flex flex-wrap gap-2 text-[11px] uppercase tracking-[0.14em] text-[color:var(--dashboard-text-soft)]`},B={key:1,class:`mt-3 text-sm text-[color:var(--dashboard-text-muted)]`},V=o({__name:`AppRuntimeSourceCard`,props:{source:{},count:{},errorCount:{},averageDuration:{},latestTimestamp:{},countLabel:{}},setup(e){let a=e,o=g(()=>C(a)),s=g(()=>a.latestTimestamp?`最近事件 ${a.latestTimestamp}`:`${a.count} ${a.countLabel??`条事件`}`),l=g(()=>[{key:`error-count`,label:`错误 ${a.errorCount}`},{key:`average-duration`,label:`平均耗时 ${a.averageDuration}`}]),d=g(()=>`平均耗时 ${a.averageDuration}`);return(e,f)=>(v(),m(`div`,{class:r(n(w)({padding:`sm`}))},[c(`div`,F,[c(`div`,I,[c(`p`,L,y(a.source),1),c(`p`,R,y(s.value),1)]),u(D,i(_(o.value)),null,16)]),a.latestTimestamp?(v(),m(`div`,z,[(v(!0),m(p,null,t(l.value,e=>(v(),m(`span`,{key:e.key,class:`rounded-full border border-[color:var(--dashboard-border)] px-2 py-0.5`},y(e.label),1))),128))])):(v(),m(`p`,B,y(d.value),1))],2))}}),H={class:`mt-1 text-lg font-semibold`},U=o({__name:`AppStatCard`,props:{label:{},value:{}},setup(e){let t=w({padding:`sm`});return(i,o)=>(v(),m(`div`,{class:r(n(t))},[u(E,null,{default:a(()=>[d(y(e.label),1)]),_:1}),c(`p`,H,y(e.value),1)],2))}});export{E as a,D as i,V as n,T as o,P as r,U as t};
1
+ import{D as e,E as t,F as n,I as r,L as i,M as a,_ as o,b as s,d as c,f as l,g as u,h as d,k as f,l as p,m,p as h,u as g,v as _,w as v,z as y}from"./vue.js";import{E as b,m as x,o as S,s as C,w}from"./index.js";var T=o({__name:`AppEmptyState`,props:{as:{},compact:{type:Boolean}},setup(t){return(n,i)=>(v(),l(f(t.as??`div`),{class:r([`rounded-xl border border-dashed border-(--dashboard-border) bg-(--dashboard-panel-muted) text-sm text-(--dashboard-text-soft)`,t.compact?`px-3 py-4`:`p-5`])},{default:a(()=>[e(n.$slots,`default`)]),_:3},8,[`class`]))}}),E=o({__name:`AppMetaLabel`,props:{accent:{type:Boolean}},setup(t){return(n,i)=>(v(),m(`p`,{class:r([`text-[11px] uppercase tracking-[0.18em]`,t.accent?`text-(--dashboard-accent)`:`text-(--dashboard-text-soft)`])},[e(n.$slots,`default`)],2))}}),D=o({__name:`AppRuntimeBadge`,props:{label:{},tone:{default:`neutral`}},setup(e){return(t,i)=>(v(),m(`span`,{class:r(n(b)({tone:e.tone}))},y(e.label),3))}}),O={class:`flex items-start justify-between gap-3`},k={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-accent)`},A={class:`mt-1 text-lg font-semibold tracking-tight`},j={class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},M={key:0,class:`mt-3 text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},N={key:1,class:`mt-2 text-sm font-medium text-(--dashboard-text)`},P=o({__name:`AppRuntimeFocusCard`,props:{event:{},eyebrow:{},emptyTitle:{},emptyDetail:{},durationText:{}},setup(t){let a=t,o=g(()=>a.event?S(a.event):null),u=g(()=>a.event?.title??a.emptyTitle??`尚无运行事件`),d=g(()=>a.event?.detail??a.emptyDetail??`当前工作区还没有推入结构化运行事件。`),f=g(()=>a.event?x(a.event):null);return(t,p)=>(v(),m(`div`,{class:r(n(w)())},[c(`div`,O,[c(`div`,null,[a.eyebrow?(v(),m(`p`,k,y(a.eyebrow),1)):h(``,!0),c(`h3`,A,y(u.value),1)]),o.value?(v(),l(D,i(s({key:0},o.value)),null,16)):h(``,!0)]),c(`p`,j,y(d.value),1),a.event?(v(),m(`p`,M,y(f.value),1)):h(``,!0),a.durationText?(v(),m(`p`,N,y(a.durationText),1)):h(``,!0),e(t.$slots,`default`)],2))}}),F={class:`flex items-start justify-between gap-3`},I={class:`min-w-0`},L={class:`truncate font-medium text-(--dashboard-text)`},R={class:`mt-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},z={key:0,class:`mt-3 flex flex-wrap gap-2 text-[11px] uppercase tracking-[0.14em] text-(--dashboard-text-soft)`},B={key:1,class:`mt-3 text-sm text-(--dashboard-text-muted)`},V=o({__name:`AppRuntimeSourceCard`,props:{source:{},count:{},errorCount:{},averageDuration:{},latestTimestamp:{},countLabel:{}},setup(e){let a=e,o=g(()=>C(a)),s=g(()=>a.latestTimestamp?`最近事件 ${a.latestTimestamp}`:`${a.count} ${a.countLabel??`条事件`}`),l=g(()=>[{key:`error-count`,label:`错误 ${a.errorCount}`},{key:`average-duration`,label:`平均耗时 ${a.averageDuration}`}]),d=g(()=>`平均耗时 ${a.averageDuration}`);return(e,f)=>(v(),m(`div`,{class:r(n(w)({padding:`sm`}))},[c(`div`,F,[c(`div`,I,[c(`p`,L,y(a.source),1),c(`p`,R,y(s.value),1)]),u(D,i(_(o.value)),null,16)]),a.latestTimestamp?(v(),m(`div`,z,[(v(!0),m(p,null,t(l.value,e=>(v(),m(`span`,{key:e.key,class:`rounded-full border border-(--dashboard-border) px-2 py-0.5`},y(e.label),1))),128))])):(v(),m(`p`,B,y(d.value),1))],2))}}),H={class:`mt-1 text-lg font-semibold`},U=o({__name:`AppStatCard`,props:{label:{},value:{}},setup(e){let t=w({padding:`sm`});return(i,o)=>(v(),m(`div`,{class:r(n(t))},[u(E,null,{default:a(()=>[d(y(e.label),1)]),_:1}),c(`p`,H,y(e.value),1)],2))}});export{E as a,D as i,V as n,T as o,P as r,U as t};
@@ -1 +1 @@
1
- import{E as e,F as t,I as n,L as r,M as i,N as a,_ as o,b as s,d as c,f as l,g as u,h as d,j as f,l as p,m,p as h,u as g,v as _,w as v,z as y}from"./vue.js";import{A as b,S as x,T as S,a as C,f as w,h as T,i as ee,m as E,o as D,p as O,r as k,u as A}from"./index.js";import{a as j,i as M,n as N,o as P,r as F,t as te}from"./AppStatCard.js";import{t as I}from"./AppInsetPanel.js";import{t as L}from"./AppSectionHeading.js";var R={class:`grid gap-3`},z={for:`dashboard-event-search`},B=[`value`],V={class:`grid gap-3`},H={class:`mt-2 flex flex-wrap gap-2`},U=[`onClick`],W={class:`mt-2 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},G={class:`mt-2 flex flex-wrap gap-2`},K=[`onClick`],q={class:`mt-2 flex flex-wrap gap-2`},J=[`onClick`],Y={class:`mt-2 flex flex-wrap gap-2`},X=[`onClick`],Z=o({__name:`AppEventFilterPanel`,props:{searchQuery:{},presetDescription:{},filterPresets:{},eventKindOptions:{},eventLevelOptions:{},eventSourceOptions:{},eventKindFilter:{},eventLevelFilter:{},eventSourceFilter:{}},emits:[`update:searchQuery`,`update:eventKindFilter`,`update:eventLevelFilter`,`update:eventSourceFilter`,`applyPreset`],setup(t,{emit:r}){let a=t,o=r;function s(){return S({kind:`theme`,active:!1})}function f(e,t){return S({kind:`theme`,active:e===t})}return(r,h)=>(v(),l(I,null,{default:i(()=>[c(`div`,R,[c(`div`,null,[c(`label`,z,[u(j,null,{default:i(()=>[...h[1]||=[d(` 搜索事件 `,-1)]]),_:1})]),c(`input`,{id:`dashboard-event-search`,value:t.searchQuery,type:`text`,placeholder:`搜索标题、详情、来源或标签`,class:`mt-2 w-full rounded-2xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)] px-3 py-2 text-sm text-[color:var(--dashboard-text)] outline-none transition focus:border-[color:var(--dashboard-border-strong)]`,onInput:h[0]||=e=>o(`update:searchQuery`,e.target.value)},null,40,B)]),c(`div`,V,[c(`div`,null,[u(j,null,{default:i(()=>[...h[2]||=[d(` 快速预设 `,-1)]]),_:1}),c(`div`,H,[(v(!0),m(p,null,e(t.filterPresets,e=>(v(),m(`button`,{key:e.key,class:n(s()),onClick:t=>o(`applyPreset`,e.key)},y(e.label),11,U))),128))]),c(`p`,W,y(t.presetDescription),1)]),c(`div`,null,[u(j,null,{default:i(()=>[...h[3]||=[d(` 类型过滤 `,-1)]]),_:1}),c(`div`,G,[(v(!0),m(p,null,e(t.eventKindOptions,e=>(v(),m(`button`,{key:e.value,class:n(f(a.eventKindFilter,e.value)),onClick:t=>o(`update:eventKindFilter`,e.value)},y(e.label),11,K))),128))])]),c(`div`,null,[u(j,null,{default:i(()=>[...h[4]||=[d(` 等级过滤 `,-1)]]),_:1}),c(`div`,q,[(v(!0),m(p,null,e(t.eventLevelOptions,e=>(v(),m(`button`,{key:e.value,class:n(f(a.eventLevelFilter,e.value)),onClick:t=>o(`update:eventLevelFilter`,e.value)},y(e.label),11,J))),128))])]),c(`div`,null,[u(j,null,{default:i(()=>[...h[5]||=[d(` 来源过滤 `,-1)]]),_:1}),c(`div`,Y,[(v(!0),m(p,null,e(t.eventSourceOptions,e=>(v(),m(`button`,{key:e.value,class:n(f(a.eventSourceFilter,e.value)),onClick:t=>o(`update:eventSourceFilter`,e.value)},y(e.label),11,X))),128))])])])])]),_:1}))}}),Q={class:`grid gap-2`},ne={class:`text-xs uppercase tracking-[0.16em] text-[color:var(--dashboard-text-soft)]`},re={class:`text-sm text-[color:var(--dashboard-text)]`},ie=`flex items-center justify-between gap-3 rounded-2xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)] px-3 py-2.5`,ae=o({__name:`AppKeyValueList`,props:{items:{}},setup(t){let r=t,i=g(()=>r.items.map(e=>({key:e.label,label:e.label,value:e.value})));return(t,r)=>(v(),m(`ul`,Q,[(v(!0),m(p,null,e(i.value,e=>(v(),m(`li`,{key:e.key,class:n(ie)},[c(`span`,ne,y(e.label),1),c(`strong`,re,y(e.value),1)]))),128))]))}}),oe={class:`flex flex-wrap gap-1.5`},se=`rounded-full border border-[color:var(--dashboard-border)] px-2 py-0.5 text-[11px] uppercase tracking-[0.12em] text-[color:var(--dashboard-text-soft)]`,$=o({__name:`AppTagList`,props:{tags:{}},setup(t){let r=t,i=g(()=>r.tags.map(e=>({key:e,label:e})));return(t,r)=>(v(),m(`div`,oe,[(v(!0),m(p,null,e(i.value,e=>(v(),m(`span`,{key:e.key,class:n(se)},y(e.label),1))),128))]))}}),ce={class:`flex items-start justify-between gap-3`},le={class:`font-medium text-[color:var(--dashboard-text)]`},ue={class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},de=o({__name:`AppRuntimeEventListItem`,props:{event:{},selected:{type:Boolean}},setup(e){let t=e,a=g(()=>D(t.event)),o=g(()=>E(t.event)),s=g(()=>t.selected?`border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-panel)]`:`border-[color:var(--dashboard-border)]`);return(e,f)=>(v(),m(`li`,{class:n([`rounded-[18px] border bg-[color:var(--dashboard-panel-muted)] px-4 py-3 transition`,s.value])},[c(`div`,ce,[c(`div`,null,[c(`p`,le,y(t.event.title),1),c(`p`,ue,y(t.event.detail),1),u(j,{class:`mt-2`},{default:i(()=>[d(y(o.value),1)]),_:1}),t.event.tags?.length?(v(),l($,{key:0,class:`mt-2`,tags:t.event.tags},null,8,[`tags`])):h(``,!0)]),u(M,r(_(a.value)),null,16)])],2))}}),fe={class:`grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(21rem,0.85fr)]`},pe={class:`mt-5 grid gap-3`},me={class:`flex items-start gap-3`},he={class:`mt-0.5 flex h-10 w-10 items-center justify-center rounded-2xl bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-accent)]`},ge={class:`h-5 w-5`},_e={class:`min-w-0`},ve={class:`flex flex-wrap items-center gap-2`},ye={class:`tracking-tight`},be={class:`rounded-full border border-[color:var(--dashboard-border)] px-2 py-0.5 text-[11px] uppercase tracking-[0.18em] text-[color:var(--dashboard-text-soft)]`},xe={class:`mt-2 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},Se={class:`grid gap-3`},Ce={class:`grid gap-2 sm:grid-cols-2`},we={class:`grid gap-2`},Te={class:`flex items-start justify-between gap-3`},Ee={class:`font-medium`},De={class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},Oe={class:`grid gap-3`},ke={key:0,class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},Ae={key:1,class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(16rem,0.78fr)]`},je={class:`grid gap-2 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},Me=o({__name:`activity`,setup(n){let{activityItems:r,diagnostics:o,eventSummary:_,runtimeEvents:S}=k(),E=a(`all`),D=a(`all`),j=a(`all`),R=a(``),z=a(null),B=[{value:`all`,label:`全部类型`},{value:`command`,label:`命令`},{value:`build`,label:`构建`},{value:`diagnostic`,label:`诊断`},{value:`hmr`,label:`HMR`},{value:`system`,label:`系统`}],V=[{value:`all`,label:`全部等级`},{value:`info`,label:`信息`},{value:`success`,label:`成功`},{value:`warning`,label:`警告`},{value:`error`,label:`错误`}],H=[{key:`all`,label:`查看全部`,description:`回到完整事件流`,apply(){E.value=`all`,D.value=`all`,j.value=`all`,R.value=``}},{key:`issues`,label:`异常优先`,description:`只看警告和错误`,apply(){E.value=`all`,D.value=`warning`,j.value=`all`,R.value=``}},{key:`commands`,label:`命令流`,description:`聚焦命令执行事件`,apply(){E.value=`command`,D.value=`all`,j.value=`all`,R.value=``}},{key:`hmr`,label:`HMR`,description:`观察热更新相关事件`,apply(){E.value=`hmr`,D.value=`all`,j.value=`all`,R.value=``}}],U=g(()=>[{value:`all`,label:`全部来源`},...[...new Set(S.value.map(e=>e.source??`dashboard`).filter(Boolean))].sort((e,t)=>e.localeCompare(t,`zh-CN`)).map(e=>({value:e,label:e}))]),W=g(()=>{let e=R.value.trim().toLowerCase();return S.value.filter(t=>E.value!==`all`&&t.kind!==E.value||D.value!==`all`&&t.level!==D.value||j.value!==`all`&&(t.source??`dashboard`)!==j.value?!1:e?[t.title,t.detail,t.kind,t.level,t.source??``,...t.tags??[]].join(` `).toLowerCase().includes(e):!0)}),G=g(()=>{let e=W.value.filter(e=>typeof e.durationMs==`number`),t=e.length>0?Math.round(e.reduce((e,t)=>e+(t.durationMs??0),0)/e.length):void 0;return[{label:`筛选后事件`,value:String(W.value.length)},{label:`当前类型`,value:E.value===`all`?`全部`:w(E.value)},{label:`当前等级`,value:D.value===`all`?`全部`:O(D.value)},{label:`当前来源`,value:j.value===`all`?`全部`:j.value},{label:`搜索关键字`,value:R.value.trim()||`未设置`},{label:`筛选平均耗时`,value:A(t)}]}),K=g(()=>ee(C(W.value))),q=g(()=>W.value.find(e=>e.id===z.value)??W.value[0]??null),J=g(()=>`${H.find(e=>e.key===`all`)?.description??``} 也可以直接组合下面的类型、等级和关键字筛选。`),Y=g(()=>q.value?[{label:`事件类型`,value:w(q.value.kind)},{label:`事件等级`,value:O(q.value.level)},{label:`事件来源`,value:T(q.value.source)},{label:`发生时间`,value:q.value.timestamp},{label:`持续时间`,value:A(q.value.durationMs)},{label:`标签数量`,value:String(q.value.tags?.length??0)}]:[]);return f(W,e=>{if(e.length===0){z.value=null;return}e.some(e=>e.id===z.value)||(z.value=e[0]?.id??null)},{immediate:!0}),(n,a)=>(v(),m(`div`,fe,[u(x,{tone:`strong`,padding:`md`},{default:i(()=>[u(L,{eyebrow:`Timeline`,title:`活动流与增强节奏`,description:`这一页先承载假数据时间线,后续最适合接入 dev server 事件、构建阶段、HMR 推送和 CLI 诊断结果。`}),c(`ol`,pe,[(v(!0),m(p,null,e(t(r),e=>(v(),m(`li`,{key:`${e.time}-${e.title}`,class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] p-4`},[c(`div`,me,[c(`span`,he,[c(`span`,ge,[u(b,{name:e.tone===`live`?`status-live`:`metric-time`},null,8,[`name`])])]),c(`div`,_e,[c(`div`,ve,[c(`strong`,ye,y(e.title),1),c(`span`,be,y(e.time),1)]),c(`p`,xe,y(e.summary),1)])])]))),128))])]),_:1}),c(`div`,Se,[u(x,{eyebrow:`Runtime`,title:`事件摘要`,description:`这组摘要来自共享工作区状态层。未来接 CLI 或 MCP 时,只需要持续往事件流里追加结构化事件。`,"icon-name":`metric-time`},{default:i(()=>[c(`div`,Ce,[(v(!0),m(p,null,e([...t(_),...G.value],e=>(v(),l(te,s({key:e.label},{ref_for:!0},e),null,16))),128))])]),_:1}),u(x,{eyebrow:`Diagnostics`,title:`当前诊断队列`,description:`这里不是产品逻辑页,而是 dashboard 未来最需要的第二层能力: 把运行状态和建议动作结构化展示。`,"icon-name":`metric-health`},{default:i(()=>[c(`ul`,we,[(v(!0),m(p,null,e(t(o),e=>(v(),m(`li`,{key:e.label,class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-4 py-3`},[c(`div`,Te,[c(`div`,null,[c(`p`,Ee,y(e.label),1),c(`p`,De,y(e.detail),1)]),u(M,{label:e.status,tone:`info`},null,8,[`label`])])]))),128))])]),_:1}),u(x,{eyebrow:`Event Feed`,title:`结构化事件控制台`,description:`当前事件已经支持按类型、等级和关键字过滤。后续即便接入主包真实事件,也可以复用这套前端交互层。`,"icon-name":`hero-commands`},{default:i(()=>[c(`div`,Oe,[u(Z,{"search-query":R.value,"preset-description":J.value,"filter-presets":H,"event-kind-options":B,"event-level-options":V,"event-source-options":U.value,"event-kind-filter":E.value,"event-level-filter":D.value,"event-source-filter":j.value,"onUpdate:searchQuery":a[0]||=e=>R.value=e,"onUpdate:eventKindFilter":a[1]||=e=>E.value=e,"onUpdate:eventLevelFilter":a[2]||=e=>D.value=e,"onUpdate:eventSourceFilter":a[3]||=e=>j.value=e,onApplyPreset:a[4]||=e=>H.find(t=>t.key===e)?.apply()},null,8,[`search-query`,`preset-description`,`event-source-options`,`event-kind-filter`,`event-level-filter`,`event-source-filter`]),K.value.length>0?(v(),m(`div`,ke,[(v(!0),m(p,null,e(K.value,e=>(v(),l(N,s({key:e.source},{ref_for:!0},e),null,16))),128))])):h(``,!0),q.value?(v(),m(`div`,Ae,[u(F,{event:q.value,eyebrow:`selected event`},{default:i(()=>[q.value.tags?.length?(v(),l($,{key:0,class:`mt-4`,tags:q.value.tags},null,8,[`tags`])):h(``,!0)]),_:1},8,[`event`]),u(I,{eyebrow:`event metadata`},{default:i(()=>[u(ae,{items:Y.value},null,8,[`items`])]),_:1})])):h(``,!0),W.value.length===0?(v(),l(P,{key:2,as:`p`},{default:i(()=>[...a[5]||=[d(` 当前过滤条件下没有匹配的事件。你可以清空关键字,或者切回“全部类型 / 全部等级”。 `,-1)]]),_:1})):h(``,!0),c(`ul`,je,[(v(!0),m(p,null,e(W.value,e=>(v(),l(de,{key:e.id,event:e,selected:q.value?.id===e.id,onClick:t=>z.value=e.id},null,8,[`event`,`selected`,`onClick`]))),128))])])]),_:1})])]))}});export{Me as default};
1
+ import{E as e,F as t,I as n,L as r,M as i,N as a,_ as o,b as s,d as c,f as l,g as u,h as d,j as f,l as p,m,p as h,u as g,v as _,w as v,z as y}from"./vue.js";import{A as b,S as x,T as S,a as C,f as w,h as T,i as ee,m as E,o as D,p as O,r as k,u as A}from"./index.js";import{a as j,i as M,n as N,o as P,r as F,t as te}from"./AppStatCard.js";import{t as I}from"./AppInsetPanel.js";import{t as L}from"./AppSectionHeading.js";var R={class:`grid gap-3`},z={for:`dashboard-event-search`},B=[`value`],V={class:`grid gap-3`},H={class:`mt-2 flex flex-wrap gap-2`},U=[`onClick`],W={class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},G={class:`mt-2 flex flex-wrap gap-2`},K=[`onClick`],q={class:`mt-2 flex flex-wrap gap-2`},J=[`onClick`],Y={class:`mt-2 flex flex-wrap gap-2`},X=[`onClick`],Z=o({__name:`AppEventFilterPanel`,props:{searchQuery:{},presetDescription:{},filterPresets:{},eventKindOptions:{},eventLevelOptions:{},eventSourceOptions:{},eventKindFilter:{},eventLevelFilter:{},eventSourceFilter:{}},emits:[`update:searchQuery`,`update:eventKindFilter`,`update:eventLevelFilter`,`update:eventSourceFilter`,`applyPreset`],setup(t,{emit:r}){let a=t,o=r;function s(){return S({kind:`theme`,active:!1})}function f(e,t){return S({kind:`theme`,active:e===t})}return(r,h)=>(v(),l(I,null,{default:i(()=>[c(`div`,R,[c(`div`,null,[c(`label`,z,[u(j,null,{default:i(()=>[...h[1]||=[d(` 搜索事件 `,-1)]]),_:1})]),c(`input`,{id:`dashboard-event-search`,value:t.searchQuery,type:`text`,placeholder:`搜索标题、详情、来源或标签`,class:`mt-2 w-full rounded-2xl border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)`,onInput:h[0]||=e=>o(`update:searchQuery`,e.target.value)},null,40,B)]),c(`div`,V,[c(`div`,null,[u(j,null,{default:i(()=>[...h[2]||=[d(` 快速预设 `,-1)]]),_:1}),c(`div`,H,[(v(!0),m(p,null,e(t.filterPresets,e=>(v(),m(`button`,{key:e.key,class:n(s()),onClick:t=>o(`applyPreset`,e.key)},y(e.label),11,U))),128))]),c(`p`,W,y(t.presetDescription),1)]),c(`div`,null,[u(j,null,{default:i(()=>[...h[3]||=[d(` 类型过滤 `,-1)]]),_:1}),c(`div`,G,[(v(!0),m(p,null,e(t.eventKindOptions,e=>(v(),m(`button`,{key:e.value,class:n(f(a.eventKindFilter,e.value)),onClick:t=>o(`update:eventKindFilter`,e.value)},y(e.label),11,K))),128))])]),c(`div`,null,[u(j,null,{default:i(()=>[...h[4]||=[d(` 等级过滤 `,-1)]]),_:1}),c(`div`,q,[(v(!0),m(p,null,e(t.eventLevelOptions,e=>(v(),m(`button`,{key:e.value,class:n(f(a.eventLevelFilter,e.value)),onClick:t=>o(`update:eventLevelFilter`,e.value)},y(e.label),11,J))),128))])]),c(`div`,null,[u(j,null,{default:i(()=>[...h[5]||=[d(` 来源过滤 `,-1)]]),_:1}),c(`div`,Y,[(v(!0),m(p,null,e(t.eventSourceOptions,e=>(v(),m(`button`,{key:e.value,class:n(f(a.eventSourceFilter,e.value)),onClick:t=>o(`update:eventSourceFilter`,e.value)},y(e.label),11,X))),128))])])])])]),_:1}))}}),Q={class:`grid gap-2`},ne={class:`text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},re={class:`text-sm text-(--dashboard-text)`},ie=`flex items-center justify-between gap-3 rounded-2xl border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2.5`,ae=o({__name:`AppKeyValueList`,props:{items:{}},setup(t){let r=t,i=g(()=>r.items.map(e=>({key:e.label,label:e.label,value:e.value})));return(t,r)=>(v(),m(`ul`,Q,[(v(!0),m(p,null,e(i.value,e=>(v(),m(`li`,{key:e.key,class:n(ie)},[c(`span`,ne,y(e.label),1),c(`strong`,re,y(e.value),1)]))),128))]))}}),oe={class:`flex flex-wrap gap-1.5`},se=`rounded-full border border-(--dashboard-border) px-2 py-0.5 text-[11px] uppercase tracking-[0.12em] text-(--dashboard-text-soft)`,$=o({__name:`AppTagList`,props:{tags:{}},setup(t){let r=t,i=g(()=>r.tags.map(e=>({key:e,label:e})));return(t,r)=>(v(),m(`div`,oe,[(v(!0),m(p,null,e(i.value,e=>(v(),m(`span`,{key:e.key,class:n(se)},y(e.label),1))),128))]))}}),ce={class:`flex items-start justify-between gap-3`},le={class:`font-medium text-(--dashboard-text)`},ue={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},de=o({__name:`AppRuntimeEventListItem`,props:{event:{},selected:{type:Boolean}},setup(e){let t=e,a=g(()=>D(t.event)),o=g(()=>E(t.event)),s=g(()=>t.selected?`border-(--dashboard-border-strong) bg-(--dashboard-panel)`:`border-(--dashboard-border)`);return(e,f)=>(v(),m(`li`,{class:n([`rounded-4.5 border bg-(--dashboard-panel-muted) px-4 py-3 transition`,s.value])},[c(`div`,ce,[c(`div`,null,[c(`p`,le,y(t.event.title),1),c(`p`,ue,y(t.event.detail),1),u(j,{class:`mt-2`},{default:i(()=>[d(y(o.value),1)]),_:1}),t.event.tags?.length?(v(),l($,{key:0,class:`mt-2`,tags:t.event.tags},null,8,[`tags`])):h(``,!0)]),u(M,r(_(a.value)),null,16)])],2))}}),fe={class:`grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(21rem,0.85fr)]`},pe={class:`mt-5 grid gap-3`},me={class:`flex items-start gap-3`},he={class:`mt-0.5 flex h-10 w-10 items-center justify-center rounded-2xl bg-(--dashboard-accent-soft) text-(--dashboard-accent)`},ge={class:`h-5 w-5`},_e={class:`min-w-0`},ve={class:`flex flex-wrap items-center gap-2`},ye={class:`tracking-tight`},be={class:`rounded-full border border-(--dashboard-border) px-2 py-0.5 text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},xe={class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`},Se={class:`grid gap-3`},Ce={class:`grid gap-2 sm:grid-cols-2`},we={class:`grid gap-2`},Te={class:`flex items-start justify-between gap-3`},Ee={class:`font-medium`},De={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},Oe={class:`grid gap-3`},ke={key:0,class:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`},Ae={key:1,class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(16rem,0.78fr)]`},je={class:`grid gap-2 text-sm leading-6 text-(--dashboard-text-muted)`},Me=o({__name:`activity`,setup(n){let{activityItems:r,diagnostics:o,eventSummary:_,runtimeEvents:S}=k(),E=a(`all`),D=a(`all`),j=a(`all`),R=a(``),z=a(null),B=[{value:`all`,label:`全部类型`},{value:`command`,label:`命令`},{value:`build`,label:`构建`},{value:`diagnostic`,label:`诊断`},{value:`hmr`,label:`HMR`},{value:`system`,label:`系统`}],V=[{value:`all`,label:`全部等级`},{value:`info`,label:`信息`},{value:`success`,label:`成功`},{value:`warning`,label:`警告`},{value:`error`,label:`错误`}],H=[{key:`all`,label:`查看全部`,description:`回到完整事件流`,apply(){E.value=`all`,D.value=`all`,j.value=`all`,R.value=``}},{key:`issues`,label:`异常优先`,description:`只看警告和错误`,apply(){E.value=`all`,D.value=`warning`,j.value=`all`,R.value=``}},{key:`commands`,label:`命令流`,description:`聚焦命令执行事件`,apply(){E.value=`command`,D.value=`all`,j.value=`all`,R.value=``}},{key:`hmr`,label:`HMR`,description:`观察热更新相关事件`,apply(){E.value=`hmr`,D.value=`all`,j.value=`all`,R.value=``}}],U=g(()=>[{value:`all`,label:`全部来源`},...[...new Set(S.value.map(e=>e.source??`dashboard`).filter(Boolean))].sort((e,t)=>e.localeCompare(t,`zh-CN`)).map(e=>({value:e,label:e}))]),W=g(()=>{let e=R.value.trim().toLowerCase();return S.value.filter(t=>E.value!==`all`&&t.kind!==E.value||D.value!==`all`&&t.level!==D.value||j.value!==`all`&&(t.source??`dashboard`)!==j.value?!1:e?[t.title,t.detail,t.kind,t.level,t.source??``,...t.tags??[]].join(` `).toLowerCase().includes(e):!0)}),G=g(()=>{let e=W.value.filter(e=>typeof e.durationMs==`number`),t=e.length>0?Math.round(e.reduce((e,t)=>e+(t.durationMs??0),0)/e.length):void 0;return[{label:`筛选后事件`,value:String(W.value.length)},{label:`当前类型`,value:E.value===`all`?`全部`:w(E.value)},{label:`当前等级`,value:D.value===`all`?`全部`:O(D.value)},{label:`当前来源`,value:j.value===`all`?`全部`:j.value},{label:`搜索关键字`,value:R.value.trim()||`未设置`},{label:`筛选平均耗时`,value:A(t)}]}),K=g(()=>ee(C(W.value))),q=g(()=>W.value.find(e=>e.id===z.value)??W.value[0]??null),J=g(()=>`${H.find(e=>e.key===`all`)?.description??``} 也可以直接组合下面的类型、等级和关键字筛选。`),Y=g(()=>q.value?[{label:`事件类型`,value:w(q.value.kind)},{label:`事件等级`,value:O(q.value.level)},{label:`事件来源`,value:T(q.value.source)},{label:`发生时间`,value:q.value.timestamp},{label:`持续时间`,value:A(q.value.durationMs)},{label:`标签数量`,value:String(q.value.tags?.length??0)}]:[]);return f(W,e=>{if(e.length===0){z.value=null;return}e.some(e=>e.id===z.value)||(z.value=e[0]?.id??null)},{immediate:!0}),(n,a)=>(v(),m(`div`,fe,[u(x,{tone:`strong`,padding:`md`},{default:i(()=>[u(L,{eyebrow:`Timeline`,title:`活动流与增强节奏`,description:`这一页先承载假数据时间线,后续最适合接入 dev server 事件、构建阶段、HMR 推送和 CLI 诊断结果。`}),c(`ol`,pe,[(v(!0),m(p,null,e(t(r),e=>(v(),m(`li`,{key:`${e.time}-${e.title}`,class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},[c(`div`,me,[c(`span`,he,[c(`span`,ge,[u(b,{name:e.tone===`live`?`status-live`:`metric-time`},null,8,[`name`])])]),c(`div`,_e,[c(`div`,ve,[c(`strong`,ye,y(e.title),1),c(`span`,be,y(e.time),1)]),c(`p`,xe,y(e.summary),1)])])]))),128))])]),_:1}),c(`div`,Se,[u(x,{eyebrow:`Runtime`,title:`事件摘要`,description:`这组摘要来自共享工作区状态层。未来接 CLI 或 MCP 时,只需要持续往事件流里追加结构化事件。`,"icon-name":`metric-time`},{default:i(()=>[c(`div`,Ce,[(v(!0),m(p,null,e([...t(_),...G.value],e=>(v(),l(te,s({key:e.label},{ref_for:!0},e),null,16))),128))])]),_:1}),u(x,{eyebrow:`Diagnostics`,title:`当前诊断队列`,description:`这里不是产品逻辑页,而是 dashboard 未来最需要的第二层能力: 把运行状态和建议动作结构化展示。`,"icon-name":`metric-health`},{default:i(()=>[c(`ul`,we,[(v(!0),m(p,null,e(t(o),e=>(v(),m(`li`,{key:e.label,class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3`},[c(`div`,Te,[c(`div`,null,[c(`p`,Ee,y(e.label),1),c(`p`,De,y(e.detail),1)]),u(M,{label:e.status,tone:`info`},null,8,[`label`])])]))),128))])]),_:1}),u(x,{eyebrow:`Event Feed`,title:`结构化事件控制台`,description:`当前事件已经支持按类型、等级和关键字过滤。后续即便接入主包真实事件,也可以复用这套前端交互层。`,"icon-name":`hero-commands`},{default:i(()=>[c(`div`,Oe,[u(Z,{"search-query":R.value,"preset-description":J.value,"filter-presets":H,"event-kind-options":B,"event-level-options":V,"event-source-options":U.value,"event-kind-filter":E.value,"event-level-filter":D.value,"event-source-filter":j.value,"onUpdate:searchQuery":a[0]||=e=>R.value=e,"onUpdate:eventKindFilter":a[1]||=e=>E.value=e,"onUpdate:eventLevelFilter":a[2]||=e=>D.value=e,"onUpdate:eventSourceFilter":a[3]||=e=>j.value=e,onApplyPreset:a[4]||=e=>H.find(t=>t.key===e)?.apply()},null,8,[`search-query`,`preset-description`,`event-source-options`,`event-kind-filter`,`event-level-filter`,`event-source-filter`]),K.value.length>0?(v(),m(`div`,ke,[(v(!0),m(p,null,e(K.value,e=>(v(),l(N,s({key:e.source},{ref_for:!0},e),null,16))),128))])):h(``,!0),q.value?(v(),m(`div`,Ae,[u(F,{event:q.value,eyebrow:`selected event`},{default:i(()=>[q.value.tags?.length?(v(),l($,{key:0,class:`mt-4`,tags:q.value.tags},null,8,[`tags`])):h(``,!0)]),_:1},8,[`event`]),u(I,{eyebrow:`event metadata`},{default:i(()=>[u(ae,{items:Y.value},null,8,[`items`])]),_:1})])):h(``,!0),W.value.length===0?(v(),l(P,{key:2,as:`p`},{default:i(()=>[...a[5]||=[d(` 当前过滤条件下没有匹配的事件。你可以清空关键字,或者切回“全部类型 / 全部等级”。 `,-1)]]),_:1})):h(``,!0),c(`ul`,je,[(v(!0),m(p,null,e(W.value,e=>(v(),l(de,{key:e.id,event:e,selected:q.value?.id===e.id,onClick:t=>z.value=e.id},null,8,[`event`,`selected`,`onClick`]))),128))])])]),_:1})])]))}});export{Me as default};
@@ -1 +1 @@
1
- import{C as e,D as t,E as n,F as r,I as i,M as a,P as o,S as s,_ as c,a as l,b as u,d,f,g as p,h as m,j as h,l as g,m as _,o as v,p as y,t as b,u as x,w as S,x as ee,z as C}from"./vue.js";import{A as w,C as T,D as te,O as E,S as D,T as O,c as k,d as A,g as j,i as ne,k as re,l as M,n as ie,r as ae,t as oe,u as se,x as ce}from"./index.js";import{a as le,i as ue,n as de,o as N,r as fe,t as pe}from"./AppStatCard.js";import{a as me,c as he,i as ge,n as _e,o as ve,r as ye,s as be,t as xe}from"./echarts.js";var P={class:`grid gap-2.5 md:grid-cols-2 xl:grid-cols-6`},Se={class:`flex items-start justify-between gap-3`},F={class:`text-[11px] uppercase tracking-[0.22em] text-[color:var(--dashboard-text-soft)]`},I={class:`mt-2 text-2xl font-semibold md:text-[1.65rem]`},L={class:`h-5 w-5`},R={key:0,class:`mt-3 flex flex-wrap gap-1.5`},Ce=c({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{}},setup(e){let t=e;function a(e){return[E({padding:`md`}),e.wide?`xl:col-span-2`:`xl:col-span-1`]}let o=x(()=>t.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?t.packageTypeSummary.map(e=>({label:A(e.label),value:String(e.value)})):[]})));return(e,t)=>(S(),_(`section`,P,[(S(!0),_(g,null,n(o.value,e=>(S(),_(`article`,{key:e.label,class:i(a(e))},[d(`div`,Se,[d(`div`,null,[d(`p`,F,C(e.label),1),d(`p`,I,C(e.value),1)]),d(`span`,{class:i(r(T)({size:`lg`}))},[d(`span`,L,[p(w,{name:e.iconName},null,8,[`name`])])],2)]),e.packageTypeTags.length>0?(S(),_(`div`,R,[(S(!0),_(g,null,n(e.packageTypeTags,e=>(S(),_(`span`,{key:e.label,class:`rounded-full border border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-accent-soft)] px-3 py-1 text-xs text-[color:var(--dashboard-text)]`},C(e.label)+` `+C(e.value),1))),128))])):y(``,!0)],2))),128))]))}}),z={class:`rounded-xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-3 py-2.5`},B={class:`flex items-start justify-between gap-3`},V={class:`min-w-0`},H={class:`mt-1 text-xs text-[color:var(--dashboard-text-soft)]`},U={key:0,class:`whitespace-nowrap font-medium text-[color:var(--dashboard-accent)]`},W=c({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean}},setup(e){return(t,n)=>(S(),_(`li`,z,[d(`div`,B,[d(`div`,V,[d(`p`,{class:i([`font-medium`,e.monoTitle?`truncate font-mono text-xs text-[color:var(--dashboard-text)]`:`truncate text-[color:var(--dashboard-text)]`])},C(e.title),3),d(`p`,H,C(e.meta),1)]),e.value?(S(),_(`span`,U,C(e.value),1)):y(``,!0)])]))}}),G={class:`flex items-center justify-between gap-3`},K={class:`flex items-center gap-2`},we={class:`h-5 w-5`},q={class:`text-lg font-semibold text-[color:var(--dashboard-text)]`},Te={key:0,class:`text-xs text-[color:var(--dashboard-text-soft)] md:text-sm`},J=c({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e){let n=T();return(a,o)=>(S(),_(`div`,G,[d(`div`,K,[d(`span`,{class:i(r(n))},[d(`span`,we,[p(w,{name:e.iconName},null,8,[`name`])])],2),d(`div`,null,[d(`h2`,q,C(e.title),1),e.description?(S(),_(`p`,Te,C(e.description),1)):y(``,!0)])]),t(a.$slots,`meta`)]))}}),Y={class:`rounded-xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] p-3.5`},X={class:`flex flex-wrap items-start justify-between gap-3`},Ee={class:`min-w-0`},Z={class:`mt-1 text-xs text-[color:var(--dashboard-text-soft)]`},De={key:0,class:`font-medium text-[color:var(--dashboard-accent)]`},Oe=c({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e){return(n,r)=>(S(),_(`article`,Y,[d(`div`,X,[d(`div`,Ee,[d(`p`,{class:i([`font-medium text-[color:var(--dashboard-text)]`,e.breakTitle?`break-all`:void 0])},C(e.title),3),d(`p`,Z,C(e.meta),1)]),e.value?(S(),_(`p`,De,C(e.value),1)):y(``,!0)]),t(n.$slots,`default`)]))}}),ke={class:`grid gap-3 xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`},Ae={key:0,class:`mt-4 space-y-2.5`},je={class:`mt-3 space-y-1.5 text-xs text-[color:var(--dashboard-text-muted)]`},Me={class:`font-medium text-[color:var(--dashboard-text)]`},Ne={class:`flex flex-col gap-3`},Pe={class:`mt-4 space-y-2.5`},Fe={class:`mt-4 space-y-2.5 text-sm text-[color:var(--dashboard-text-muted)]`},Ie=c({__name:`ModulesPanel`,props:{visibleDuplicateModules:{},moduleSourceSummary:{},visibleLargestFiles:{}},setup(e){let t=e;function o(e){return{title:e.source,meta:`${j(e.sourceType)} · ${e.packageCount} 个包 · ${M(e.bytes)}`}}function s(e){return{title:j(e.sourceType),meta:`${e.count} 个模块`,value:M(e.bytes)}}function c(e){return{title:e.file,meta:`${e.packageLabel} · ${k(e.from)} · ${e.moduleCount} 模块`}}let l=x(()=>t.visibleDuplicateModules.map(e=>({key:e.id,packages:e.packages,...o(e)}))),h=x(()=>t.moduleSourceSummary.map(e=>({key:e.sourceType,...s(e)}))),v=x(()=>t.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...c(e)})));return(e,t)=>(S(),_(`section`,ke,[d(`div`,{class:i(r(E)({padding:`md`}))},[p(J,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`优先看被多个包重复包含的源码与依赖。`}),l.value.length?(S(),_(`div`,Ae,[(S(!0),_(g,null,n(l.value,e=>(S(),f(Oe,u({key:e.key},{ref_for:!0},e,{"break-title":``}),{default:a(()=>[d(`ul`,je,[(S(!0),_(g,null,n(e.packages,n=>(S(),_(`li`,{key:`${e.key}:${n.packageId}`},[d(`span`,Me,C(n.packageLabel),1),t[0]||=d(`span`,{class:`text-[color:var(--dashboard-text-soft)]`},` · `,-1),d(`span`,null,C(n.files.join(`、`)),1)]))),128))])]),_:2},1040))),128))])):(S(),f(N,{key:1,class:`mt-4`},{default:a(()=>[...t[1]||=[m(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),d(`div`,Ne,[d(`section`,{class:i(r(E)({padding:`md`}))},[p(J,{"icon-name":`module-sources`,title:`模块来源`}),d(`div`,Pe,[(S(!0),_(g,null,n(h.value,e=>(S(),f(Oe,u({key:e.key},{ref_for:!0},e),null,16))),128))])],2),d(`section`,{class:i(r(E)({padding:`md`}))},[p(J,{"icon-name":`file-samples`,title:`文件样本`}),d(`ul`,Fe,[(S(!0),_(g,null,n(v.value,e=>(S(),f(W,u({key:e.key},{ref_for:!0},e,{"mono-title":``}),null,16))),128))])],2)])]))}}),Le=`Treemap`,Re=`从包体到文件再到模块,直接定位体积热点。`,ze=`overview`,Be=c({__name:`TreemapCard`,props:{bindChartRef:{type:Function}},setup(e){function t(){return O({kind:`badge`})}return(n,o)=>(S(),_(`div`,{class:i(r(E)({padding:`sm`}))},[p(J,{class:`mb-2 px-2`,"icon-name":`treemap`,title:Le,description:Re},{meta:a(()=>[d(`span`,{class:i(t())},C(ze),2)]),_:1}),d(`div`,{ref:e.bindChartRef,class:`h-[min(58vh,36rem)] min-h-[21rem] rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] p-2`},null,512)],2))}}),Ve={class:`grid gap-3 xl:grid-cols-[minmax(0,1.55fr)_minmax(21rem,0.75fr)] xl:items-stretch`},He={class:`grid gap-3 xl:h-[min(58vh,36rem)] xl:grid-rows-[minmax(0,1fr)_minmax(0,0.82fr)]`},Ue={class:`mt-3 grid h-[calc(100%-3.5rem)] min-h-0 gap-2 overflow-y-auto pr-1 text-sm xl:grid-cols-1`},We={class:`mt-3 grid h-[calc(100%-3.5rem)] min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-[color:var(--dashboard-text-muted)]`},Ge=c({__name:`OverviewPanel`,props:{bindChartRef:{type:Function},visibleLargestFiles:{},subPackages:{}},setup(e){let t=e;function o(e){return{title:e.file,meta:`${e.packageLabel} · ${A(e.packageType)} · ${e.type}`,value:M(e.size)}}function s(e){return{title:e.root,meta:`${e.name?`别名 ${e.name}`:`未设置别名`} · ${e.independent?`独立分包`:`普通分包`}`}}let c=x(()=>t.visibleLargestFiles.map(e=>({key:`${e.packageId}:${e.file}`,...o(e)}))),l=x(()=>t.subPackages.map(e=>({key:e.root,...s(e)}))),h=x(()=>l.value.length>0);return(t,o)=>(S(),_(`section`,Ve,[p(Be,{"bind-chart-ref":e.bindChartRef},null,8,[`bind-chart-ref`]),d(`div`,He,[d(`section`,{class:i([r(E)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(J,{"icon-name":`top-files`,title:`Top Files`,description:`最大体积样本`},{meta:a(()=>[...o[0]||=[d(`span`,{class:`text-[11px] uppercase tracking-[0.2em] text-[color:var(--dashboard-text-soft)]`},`Top 10`,-1)]]),_:1}),d(`ol`,Ue,[(S(!0),_(g,null,n(c.value,e=>(S(),f(W,u({key:e.key},{ref_for:!0},e),null,16))),128))])],2),d(`section`,{class:i([r(E)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(J,{"icon-name":`subpackages`,title:`Subpackages`,description:`分包根目录与模式`},{meta:a(()=>[...o[1]||=[d(`span`,{class:`text-[11px] uppercase tracking-[0.2em] text-[color:var(--dashboard-text-soft)]`},`Roots`,-1)]]),_:1}),d(`ul`,We,[h.value?y(``,!0):(S(),f(N,{key:0,as:`li`,compact:``},{default:a(()=>[...o[2]||=[m(` 当前构建没有配置分包。 `,-1)]]),_:1})),(S(!0),_(g,null,n(l.value,e=>(S(),f(W,u({key:e.key},{ref_for:!0},e),null,16))),128))])],2)])]))}}),Ke={class:`mt-1.5 text-base font-semibold text-[color:var(--dashboard-text)]`},qe=`rounded-xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] p-3`,Je=c({__name:`AppMetricTile`,props:{label:{},value:{}},setup(e){return(t,n)=>(S(),_(`div`,{class:i(qe)},[p(le,null,{default:a(()=>[m(C(e.label),1)]),_:1}),d(`p`,Ke,C(e.value),1)]))}}),Ye={class:`overflow-hidden rounded-xl border border-[color:var(--dashboard-border)]`},Xe={class:`min-w-full divide-y divide-[color:var(--dashboard-border)] text-left text-sm`},Ze={class:`divide-y divide-[color:var(--dashboard-border)] text-[color:var(--dashboard-text-muted)]`},Qe={class:`px-3 py-2 font-mono text-xs text-[color:var(--dashboard-text)]`},$e={class:`px-3 py-2`},et={class:`px-3 py-2`},tt={class:`px-3 py-2 font-medium text-[color:var(--dashboard-text)]`},nt=c({__name:`AppPackageFileTable`,props:{files:{}},setup(e){let t=e;function r(e){return{file:e.file,type:e.type,fromLabel:k(e.from),sizeLabel:M(e.size)}}let i=x(()=>t.files.map(e=>r(e)));return(e,t)=>(S(),_(`div`,Ye,[d(`table`,Xe,[t[0]||=d(`thead`,{class:`bg-[color:var(--dashboard-panel-muted)] text-[color:var(--dashboard-text-soft)]`},[d(`tr`,null,[d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 `)])],-1),d(`tbody`,Ze,[(S(!0),_(g,null,n(i.value,e=>(S(),_(`tr`,{key:e.file},[d(`td`,Qe,C(e.file),1),d(`td`,$e,C(e.type),1),d(`td`,et,C(e.fromLabel),1),d(`td`,tt,C(e.sizeLabel),1)]))),128))])])]))}}),rt={class:`grid gap-3`},it={class:`grid gap-3 xl:grid-cols-2`},at={class:`flex flex-wrap items-start justify-between gap-4`},ot={class:`min-w-0`},st={class:`mt-2 text-sm text-[color:var(--dashboard-text-soft)]`},ct={class:`text-right`},lt={class:`text-xl font-semibold text-[color:var(--dashboard-text)]`},ut={class:`text-xs text-[color:var(--dashboard-text-soft)]`},dt={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},ft={class:`mt-4`},pt=c({__name:`PackagesPanel`,props:{packageInsights:{}},setup(e){let t=e;function a(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`模块数`,value:e.moduleCount},{label:`跨包模块`,value:e.duplicateModuleCount}]}let o=x(()=>t.packageInsights.map(e=>{let t=A(e.type);return{...e,typeLabel:t,summaryText:`${t} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,totalBytesLabel:M(e.totalBytes),entryCountText:`${e.entryFileCount} 个 entry`,metrics:a(e)}}));return(e,t)=>(S(),_(`section`,rt,[d(`div`,it,[(S(!0),_(g,null,n(o.value,e=>(S(),_(`article`,{key:e.id,class:i(r(E)({padding:`md`}))},[d(`div`,at,[d(`div`,ot,[p(J,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),d(`p`,st,C(e.summaryText),1)]),d(`div`,ct,[d(`p`,lt,C(e.totalBytesLabel),1),d(`p`,ut,C(e.entryCountText),1)])]),d(`div`,dt,[(S(!0),_(g,null,n(e.metrics,e=>(S(),f(Je,u({key:e.label},{ref_for:!0},e),null,16))),128))]),d(`div`,ft,[p(nt,{files:e.topFiles},null,8,[`files`])])],2))),128))])]))}}),mt=c({__name:`SectionNote`,props:{text:{}},setup(e){let t=te();return(n,a)=>(S(),_(`div`,{class:i(r(t))},C(e.text),3))}});function Q(e){return e.size??0}function ht(e,t){return{label:e,value:t}}function gt(e,t){return{packageId:e.id,packageLabel:e.label,packageType:e.type,file:t.file,size:Q(t),type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0,source:t.source}}function _t(e){return{file:e.file,size:Q(e),type:e.type,from:e.from,isEntry:!!e.isEntry,moduleCount:e.modules?.length??0}}function vt(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function yt(e){return{sourceType:e,count:0,bytes:0}}function bt(e){let t=x(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),n=x(()=>{let t=new Map;for(let n of e.value?.packages??[])for(let e of n.files)for(let n of e.modules??[]){let e=t.get(n.id),r=n.bytes??0,i=n.originalBytes??r;if(!e){t.set(n.id,{bytes:r,originalBytes:i,sourceType:n.sourceType});continue}t.set(n.id,{bytes:Math.max(e.bytes,r),originalBytes:Math.max(e.originalBytes,i),sourceType:e.sourceType})}return t});return{summary:x(()=>{let t=e.value;if(!t)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0,subpackageCount:0,entryCount:0};let n=t.packages.flatMap(e=>e.files);return{packageCount:t.packages.length,moduleCount:t.modules.length,duplicateCount:t.modules.filter(e=>e.packages.length>1).length,totalBytes:n.reduce((e,t)=>e+Q(t),0),subpackageCount:t.subPackages.length,entryCount:n.filter(e=>e.isEntry).length}}),packageTypeSummary:x(()=>{let t=new Map;for(let n of e.value?.packages??[])t.set(n.type,(t.get(n.type)??0)+1);return Array.from(t.entries(),([e,t])=>ht(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}),packageInsights:x(()=>{let t=e.value;return t?t.packages.map(e=>{let n=new Set,r=0;for(let i of t.modules)i.packages.some(t=>t.packageId===e.id)&&(n.add(i.id),i.packages.length>1&&r++);let i=e.files.map(e=>_t(e)).sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,5);return{id:e.id,label:e.label,type:e.type,totalBytes:e.files.reduce((e,t)=>e+Q(t),0),fileCount:e.files.length,chunkCount:e.files.filter(e=>e.type===`chunk`).length,assetCount:e.files.filter(e=>e.type===`asset`).length,moduleCount:n.size,duplicateModuleCount:r,entryFileCount:e.files.filter(e=>e.isEntry).length,topFiles:i}}).sort((e,t)=>t.totalBytes-e.totalBytes||e.label.localeCompare(t.label)):[]}),largestFiles:x(()=>{let t=[];for(let n of e.value?.packages??[])for(let e of n.files)t.push(gt(n,e));return t.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}),duplicateModules:x(()=>{let r=e.value;return r?r.modules.filter(e=>e.packages.length>1).map(e=>{let r=n.value.get(e.id);return{id:e.id,source:e.source,sourceType:e.sourceType,packageCount:e.packages.length,bytes:r?.bytes??r?.originalBytes??0,packages:e.packages.map(e=>vt(t.value,e))}}).sort((e,t)=>t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)):[]}),moduleSourceSummary:x(()=>{let t=new Map;for(let r of e.value?.modules??[]){let e=n.value.get(r.id),i=t.get(r.sourceType)??yt(r.sourceType);i.count+=1,i.bytes+=e?.bytes??e?.originalBytes??0,t.set(r.sourceType,i)}return[...t.values()].sort((e,t)=>t.bytes-e.bytes||t.count-e.count||e.sourceType.localeCompare(t.sourceType))}),subPackages:x(()=>e.value?.subPackages??[])}}function $(e){return e}function xt(e){let t=l(),n=v(),r=x({get(){let e=t.query.tab;return e===`packages`||e===`modules`?e:`overview`},set(e){n.replace({query:e===`overview`?{}:{tab:e}})}}),i=x(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=x(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=x(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0));function s(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`metric-packages`}),$({label:`分包配置`,value:String(e.summary.value.subpackageCount),iconName:`metric-subpackages`}),$({label:`Chunk 数量`,value:String(i.value),iconName:`metric-chunks`}),$({label:`Asset 数量`,value:String(a.value),iconName:`metric-assets`}),$({label:`总产物体积`,value:M(e.summary.value.totalBytes),wide:!0,iconName:`metric-size-outline`})]}function c(){return[$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`来源类型`,value:String(e.moduleSourceSummary.value.length),iconName:`metric-sources`}),$({label:`复用体积`,value:o.value>0?M(o.value):`0 B`,iconName:`metric-copy`}),$({label:`最近刷新`,value:e.lastUpdatedAt.value,wide:!0,iconName:`metric-time`})]}function u(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`tab-packages`}),$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`Entry 数量`,value:String(e.summary.value.entryCount),iconName:`metric-entries`}),$({label:`总产物体积`,value:M(e.summary.value.totalBytes),wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:x(()=>r.value===`packages`?s():r.value===`modules`?c():u()),packageTypeSummary:e.packageTypeSummary}}var St={main:{fill:`#1d4ed8`,border:`#93c5fd`},subPackage:{fill:`#047857`,border:`#6ee7b7`},independent:{fill:`#b45309`,border:`#fbbf24`},virtual:{fill:`#7c3aed`,border:`#d8b4fe`}},Ct=[{itemStyle:{borderWidth:3,gapWidth:4},upperLabel:{show:!0,height:32,color:`#f8fafc`,fontWeight:`600`}},{itemStyle:{borderWidth:2,gapWidth:2}},{itemStyle:{borderWidth:1,gapWidth:1}}];function wt(e){if(!e)return``;let t=[];return e.kind===`package`?(t.push(`<strong>${e.packageLabel}</strong>`),t.push(`类型:${e.packageType}`),t.push(`产物数量:${e.fileCount}`),e.totalBytes&&t.push(`累计体积:${M(e.totalBytes)}`)):e.kind===`file`?(t.push(`<strong>${e.fileName}</strong>`),t.push(`所属:${e.packageLabel}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${e.from}`),t.push(`体积:${M(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${e.childCount}`)):e.kind===`module`?(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`源码类型:${j(e.sourceType)}`),t.push(`模块体积:${M(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`跨包复用:${e.packageCount} 次`)):e.kind===`asset`&&(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`资源体积:${M(e.bytes)}`)),t.join(`<br/>`)}function Tt(e,t,n,r){return{name:r.source,value:Math.max(r.bytes??r.originalBytes??1,1),meta:{kind:`module`,packageLabel:e,fileName:t,source:r.source,sourceType:r.sourceType,bytes:r.bytes,originalBytes:r.originalBytes,packageCount:n.get(r.id)??1}}}function Et(e,t,n){return{name:n.source??t,value:Math.max(n.size??1,1),meta:{kind:`asset`,packageLabel:e,fileName:t,source:n.source??t,bytes:n.size}}}function Dt(e,t,n,r,i){return{name:r.file,value:Math.max(r.size??1,1),meta:{kind:`file`,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},children:i.length>0?i:void 0}}function Ot(e,t,n){let r=St[e.type];return{name:e.label,value:Math.max(t,1),meta:{kind:`package`,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:t},itemStyle:{color:r.fill,borderColor:r.border},children:n}}function kt(e,t){let n=x(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),r=x(()=>new Map((e.value?.modules??[]).map(e=>[e.id,e.packages.length]))),i=x(()=>{let t=e.value;return t?t.packages.map(e=>Ot(e,e.files.reduce((e,t)=>e+(t.size??0),0),e.files.map(t=>{let i=t.type===`chunk`?(t.modules??[]).map(n=>Tt(e.label,t.file,r.value,n)):t.source?[Et(e.label,t.file,t)]:[];return Dt(e.label,e.id,n.value,t,i)}))):[]});return{treemapOption:x(()=>({backgroundColor:`transparent`,tooltip:{formatter:e=>wt(e.data?.meta),borderColor:t.value===`dark`?`rgba(148, 163, 184, 0.16)`:`rgba(71, 85, 105, 0.14)`,backgroundColor:t.value===`dark`?`rgba(15, 23, 42, 0.92)`:`rgba(255, 255, 255, 0.96)`,textStyle:{color:t.value===`dark`?`#e2e8f0`:`#0f172a`}},series:[{type:`treemap`,nodeClick:!1,roam:!1,breadcrumb:{show:!1},visibleMin:1,label:{show:!0,color:t.value===`dark`?`#f8fafc`:`#0f172a`,formatter:`{b}`},upperLabel:{show:!0},itemStyle:{borderColor:t.value===`dark`?`rgba(15, 23, 42, 0.88)`:`rgba(255, 255, 255, 0.92)`,borderWidth:2,gapWidth:2},emphasis:{itemStyle:{borderColor:t.value===`dark`?`#f8fafc`:`#0f172a`}},colorAlpha:[.94,.72],colorSaturation:[.4,.9],levels:Ct,data:i.value}]}))}}xe();var At={class:`grid gap-3`},jt={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},Mt={class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] p-4`},Nt={class:`mt-4 grid gap-2`},Pt={class:`grid gap-2`},Ft={class:`flex flex-col gap-2 xl:flex-row xl:items-center xl:justify-between`},It={class:`flex flex-wrap gap-2`},Lt=[`onClick`],Rt={class:`h-4.5 w-4.5`},zt={class:`flex flex-wrap items-center gap-2`},Bt={class:`flex flex-wrap items-center gap-2`},Vt=[`onClick`],Ht={class:`h-4 w-4`},Ut={class:`grid gap-3 xl:grid-cols-[minmax(0,1.05fr)_minmax(20rem,0.95fr)]`},Wt={class:`grid gap-3 lg:grid-cols-[minmax(0,0.92fr)_minmax(0,1.08fr)]`},Gt={class:`grid gap-2 sm:grid-cols-2`},Kt={class:`grid gap-2 sm:grid-cols-2`},qt={class:`grid gap-2`},Jt={class:`flex items-start justify-between gap-3`},Yt={class:`font-medium text-[color:var(--dashboard-text)]`},Xt={class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},Zt={key:0},Qt={key:1,class:`grid gap-3`},$t={key:2,class:`grid gap-3`},en=c({__name:`analyze`,setup(t){be([ve,me,ge,ye,_e]);let c=o(),l,{themePreference:v,resolvedTheme:T,setThemePreference:te}=ce(),{eventSummary:E,lastUpdatedAt:k,latestRuntimeEvent:A,resultRef:j,runtimeEvents:M,runtimeSourceSummary:N,updateCount:xe}=ae(),{treemapOption:P}=kt(j,T),{summary:Se,packageTypeSummary:F,packageInsights:I,largestFiles:L,duplicateModules:R,moduleSourceSummary:z,subPackages:B}=bt(j),V=x(()=>R.value.slice(0,12)),H=x(()=>L.value.slice(0,10)),U=x(()=>`${xe.value} 次数据同步`),W=x(()=>T.value===`dark`?`status-dark`:`status-light`),G=x(()=>[{iconName:W.value,label:U.value},{label:k.value}]),K=x(()=>M.value.slice(0,3)),we=x(()=>ne(N.value).slice(0,4)),{activeTab:q,topCards:Te,packageTypeSummary:J}=xt({summary:Se,packageInsights:I,packageTypeSummary:F,duplicateModules:R,moduleSourceSummary:z,lastUpdatedAt:k});function Y(){l?.resize()}function X(){l?.dispose(),l=void 0}function Ee(e){c.value=e instanceof HTMLDivElement?e:void 0}async function Z(){if(q.value!==`overview`){X();return}await ee(),c.value&&(l||=he(c.value,T.value===`dark`?`dark`:void 0,{renderer:`canvas`}),l.setOption(P.value,!0),l.resize())}return h(P,e=>{l&&l.setOption(e,!0)},{deep:!0}),h(q,()=>{Z()}),h(T,async()=>{l&&c.value&&X(),await Z()}),e(()=>{window.addEventListener(`resize`,Y),Z()}),s(()=>{window.removeEventListener(`resize`,Y),X()}),(e,t)=>(S(),_(`div`,At,[r(j)?y(``,!0):(S(),f(D,{key:0,eyebrow:`Analyze`,title:`等待分析数据注入`,description:`当前路由已经可独立打开,但还没有接收到来自 CLI 的 analyze payload。你可以先从工作台查看壳子结构,或者通过命令启动真实数据联调。`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:a(()=>[d(`div`,jt,[d(`div`,Mt,[t[0]||=d(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-[color:var(--dashboard-text-soft)]`},` recommended commands `,-1),d(`div`,Nt,[(S(),_(g,null,n([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>d(`code`,{key:e,class:`rounded-xl bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},C(e),1)),64))])]),d(`div`,Pt,[p(r(b),{class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-4 py-4 transition hover:border-[color:var(--dashboard-border-strong)] hover:bg-[color:var(--dashboard-panel)]`,to:`/`},{default:a(()=>[...t[1]||=[d(`p`,{class:`font-medium`},` 返回工作台 `,-1),d(`p`,{class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},` 继续查看应用壳子、命令面板和当前增强节奏。 `,-1)]]),_:1}),p(r(b),{class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-4 py-4 transition hover:border-[color:var(--dashboard-border-strong)] hover:bg-[color:var(--dashboard-panel)]`,to:`/activity`},{default:a(()=>[...t[2]||=[d(`p`,{class:`font-medium`},` 查看活动流 `,-1),d(`p`,{class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},` 后续可以在这里观察真实的构建事件和诊断状态。 `,-1)]]),_:1})])])]),_:1})),d(`section`,Ft,[d(`nav`,It,[(S(!0),_(g,null,n(r(oe),e=>(S(),_(`button`,{key:e.key,class:i(r(O)({kind:`nav`,active:r(q)===e.key})),onClick:t=>q.value=e.key},[d(`span`,Rt,[p(w,{name:e.iconName},null,8,[`name`])]),m(` `+C(e.label),1)],10,Lt))),128))]),d(`div`,zt,[d(`div`,Bt,[(S(!0),_(g,null,n(r(ie),e=>(S(),_(`button`,{key:e.value,class:i(r(O)({kind:`theme`,active:r(v)===e.value})),onClick:t=>r(te)(e.value)},[d(`span`,Ht,[p(w,{name:e.iconName},null,8,[`name`])]),m(` `+C(e.label),1)],10,Vt))),128))]),(S(!0),_(g,null,n(G.value,e=>(S(),f(re,u({key:e.label},{ref_for:!0},e,{uppercase:``}),null,16))),128))])]),r(j)?(S(),_(g,{key:1},[d(`section`,Ut,[p(D,{eyebrow:`Runtime Context`,title:`分析视图关联的运行上下文`,description:`treemap 和包体指标不再是孤立结果,这里会同步展示最近的运行事件,让你知道这份分析结果处在什么执行背景里。`,"icon-name":`metric-time`},{default:a(()=>[d(`div`,Wt,[p(fe,{event:r(A),eyebrow:`latest event`,"duration-text":r(A)?.durationMs===void 0?void 0:`最近一次耗时: ${r(se)(r(A).durationMs)}`},{default:a(()=>[p(r(b),{class:`mt-4 inline-flex rounded-full border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)] px-3 py-1.5 text-xs font-medium text-[color:var(--dashboard-text)] transition hover:border-[color:var(--dashboard-border-strong)]`,to:`/activity`},{default:a(()=>[...t[3]||=[m(` 打开事件控制台 `,-1)]]),_:1})]),_:1},8,[`event`,`duration-text`]),d(`div`,Gt,[(S(!0),_(g,null,n(r(E),e=>(S(),f(pe,u({key:e.label},{ref_for:!0},e),null,16))),128))])])]),_:1}),p(D,{eyebrow:`Source Signals`,title:`事件来源摘要`,description:`分析页直接按来源折叠运行事件,方便判断当前这份 payload 主要来自哪条链路。`,"icon-name":`hero-system`},{default:a(()=>[d(`div`,Kt,[(S(!0),_(g,null,n(we.value,e=>(S(),f(de,{key:e.source,source:e.source,count:e.count,"error-count":e.errorCount,"average-duration":e.averageDuration,"count-label":`条事件`},null,8,[`source`,`count`,`error-count`,`average-duration`]))),128))])]),_:1}),p(D,{eyebrow:`Recent Feed`,title:`最近事件样本`,description:`这些事件是分析页最直接的上游线索。后面如果某次 analyze 或 build 结果异常,这里会比看全量时间线更快定位。`,"icon-name":`hero-commands`},{default:a(()=>[d(`ul`,qt,[(S(!0),_(g,null,n(K.value,t=>(S(),_(`li`,{key:t.id,class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-4 py-3`},[d(`div`,Jt,[d(`div`,null,[d(`p`,Yt,C(t.title),1),d(`p`,Xt,C(t.detail),1),p(le,{class:`mt-2`},{default:a(()=>[m(C(e.formatRuntimeEventMeta(t)),1)]),_:2},1024)]),p(ue,{label:e.formatRuntimeEventLevel(t.level),tone:e.getRuntimeEventBadgeTone(t.level)},null,8,[`label`,`tone`])])]))),128))])]),_:1})]),p(Ce,{cards:r(Te),"package-type-summary":r(J)},null,8,[`cards`,`package-type-summary`]),r(q)===`overview`?(S(),_(`section`,Zt,[p(Ge,{"bind-chart-ref":Ee,"visible-largest-files":H.value,"sub-packages":r(B)},null,8,[`visible-largest-files`,`sub-packages`])])):r(q)===`packages`?(S(),_(`section`,Qt,[p(mt,{text:`包与产物视图优先展示每个包的结构和最大文件,支持在一个屏幕内快速对比。`}),p(pt,{"package-insights":r(I)},null,8,[`package-insights`])])):(S(),_(`section`,$t,[p(mt,{text:`模块与复用视图聚焦跨包重复、来源分布与文件样本。`}),p(Ie,{"visible-duplicate-modules":V.value,"module-source-summary":r(z),"visible-largest-files":H.value},null,8,[`visible-duplicate-modules`,`module-source-summary`,`visible-largest-files`])]))],64)):y(``,!0)]))}});export{en as default};
1
+ import{C as e,D as t,E as n,F as r,I as i,M as a,P as o,S as s,_ as c,a as l,b as u,d,f,g as p,h as m,j as h,l as g,m as _,o as v,p as y,t as b,u as x,w as S,x as ee,z as C}from"./vue.js";import{A as w,C as T,D as te,O as E,S as D,T as O,c as k,d as A,g as j,i as ne,k as re,l as M,n as ie,r as ae,t as oe,u as se,x as ce}from"./index.js";import{a as le,i as ue,n as de,o as N,r as fe,t as pe}from"./AppStatCard.js";import{a as me,c as he,i as ge,n as _e,o as ve,r as ye,s as be,t as xe}from"./echarts.js";var P={class:`grid gap-2.5 md:grid-cols-2 xl:grid-cols-6`},Se={class:`flex items-start justify-between gap-3`},F={class:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-text-soft)`},I={class:`mt-2 text-2xl font-semibold md:text-[1.65rem]`},L={class:`h-5 w-5`},R={key:0,class:`mt-3 flex flex-wrap gap-1.5`},Ce=c({__name:`DashboardMetricGrid`,props:{cards:{},packageTypeSummary:{}},setup(e){let t=e;function a(e){return[E({padding:`md`}),e.wide?`xl:col-span-2`:`xl:col-span-1`]}let o=x(()=>t.cards.map(e=>({...e,packageTypeTags:e.label===`总产物体积`?t.packageTypeSummary.map(e=>({label:A(e.label),value:String(e.value)})):[]})));return(e,t)=>(S(),_(`section`,P,[(S(!0),_(g,null,n(o.value,e=>(S(),_(`article`,{key:e.label,class:i(a(e))},[d(`div`,Se,[d(`div`,null,[d(`p`,F,C(e.label),1),d(`p`,I,C(e.value),1)]),d(`span`,{class:i(r(T)({size:`lg`}))},[d(`span`,L,[p(w,{name:e.iconName},null,8,[`name`])])],2)]),e.packageTypeTags.length>0?(S(),_(`div`,R,[(S(!0),_(g,null,n(e.packageTypeTags,e=>(S(),_(`span`,{key:e.label,class:`rounded-full border border-(--dashboard-border-strong) bg-(--dashboard-accent-soft) px-3 py-1 text-xs text-(--dashboard-text)`},C(e.label)+` `+C(e.value),1))),128))])):y(``,!0)],2))),128))]))}}),z={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`},B={class:`flex items-start justify-between gap-3`},V={class:`min-w-0`},H={class:`mt-1 text-xs text-(--dashboard-text-soft)`},U={key:0,class:`whitespace-nowrap font-medium text-(--dashboard-accent)`},W=c({__name:`AppCompactListItem`,props:{title:{},meta:{},value:{},monoTitle:{type:Boolean}},setup(e){return(t,n)=>(S(),_(`li`,z,[d(`div`,B,[d(`div`,V,[d(`p`,{class:i([`font-medium`,e.monoTitle?`truncate font-mono text-xs text-(--dashboard-text)`:`truncate text-(--dashboard-text)`])},C(e.title),3),d(`p`,H,C(e.meta),1)]),e.value?(S(),_(`span`,U,C(e.value),1)):y(``,!0)])]))}}),G={class:`flex items-center justify-between gap-3`},K={class:`flex items-center gap-2`},we={class:`h-5 w-5`},q={class:`text-lg font-semibold text-(--dashboard-text)`},Te={key:0,class:`text-xs text-(--dashboard-text-soft) md:text-sm`},J=c({__name:`AppPanelHeader`,props:{iconName:{},title:{},description:{}},setup(e){let n=T();return(a,o)=>(S(),_(`div`,G,[d(`div`,K,[d(`span`,{class:i(r(n))},[d(`span`,we,[p(w,{name:e.iconName},null,8,[`name`])])],2),d(`div`,null,[d(`h2`,q,C(e.title),1),e.description?(S(),_(`p`,Te,C(e.description),1)):y(``,!0)])]),t(a.$slots,`meta`)]))}}),Y={class:`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3.5`},X={class:`flex flex-wrap items-start justify-between gap-3`},Ee={class:`min-w-0`},Z={class:`mt-1 text-xs text-(--dashboard-text-soft)`},De={key:0,class:`font-medium text-(--dashboard-accent)`},Oe=c({__name:`AppSummaryValueCard`,props:{title:{},meta:{},value:{},breakTitle:{type:Boolean}},setup(e){return(n,r)=>(S(),_(`article`,Y,[d(`div`,X,[d(`div`,Ee,[d(`p`,{class:i([`font-medium text-(--dashboard-text)`,e.breakTitle?`break-all`:void 0])},C(e.title),3),d(`p`,Z,C(e.meta),1)]),e.value?(S(),_(`p`,De,C(e.value),1)):y(``,!0)]),t(n.$slots,`default`)]))}}),ke={class:`grid gap-3 xl:grid-cols-[minmax(0,1.24fr)_minmax(0,0.76fr)]`},Ae={key:0,class:`mt-4 space-y-2.5`},je={class:`mt-3 space-y-1.5 text-xs text-(--dashboard-text-muted)`},Me={class:`font-medium text-(--dashboard-text)`},Ne={class:`flex flex-col gap-3`},Pe={class:`mt-4 space-y-2.5`},Fe={class:`mt-4 space-y-2.5 text-sm text-(--dashboard-text-muted)`},Ie=c({__name:`ModulesPanel`,props:{visibleDuplicateModules:{},moduleSourceSummary:{},visibleLargestFiles:{}},setup(e){let t=e;function o(e){return{title:e.source,meta:`${j(e.sourceType)} · ${e.packageCount} 个包 · ${M(e.bytes)}`}}function s(e){return{title:j(e.sourceType),meta:`${e.count} 个模块`,value:M(e.bytes)}}function c(e){return{title:e.file,meta:`${e.packageLabel} · ${k(e.from)} · ${e.moduleCount} 模块`}}let l=x(()=>t.visibleDuplicateModules.map(e=>({key:e.id,packages:e.packages,...o(e)}))),h=x(()=>t.moduleSourceSummary.map(e=>({key:e.sourceType,...s(e)}))),v=x(()=>t.visibleLargestFiles.slice(0,6).map(e=>({key:`${e.packageId}:${e.file}`,...c(e)})));return(e,t)=>(S(),_(`section`,ke,[d(`div`,{class:i(r(E)({padding:`md`}))},[p(J,{"icon-name":`duplicate-modules`,title:`重复模块`,description:`优先看被多个包重复包含的源码与依赖。`}),l.value.length?(S(),_(`div`,Ae,[(S(!0),_(g,null,n(l.value,e=>(S(),f(Oe,u({key:e.key},{ref_for:!0},e,{"break-title":``}),{default:a(()=>[d(`ul`,je,[(S(!0),_(g,null,n(e.packages,n=>(S(),_(`li`,{key:`${e.key}:${n.packageId}`},[d(`span`,Me,C(n.packageLabel),1),t[0]||=d(`span`,{class:`text-(--dashboard-text-soft)`},` · `,-1),d(`span`,null,C(n.files.join(`、`)),1)]))),128))])]),_:2},1040))),128))])):(S(),f(N,{key:1,class:`mt-4`},{default:a(()=>[...t[1]||=[m(` 当前构建未检测到跨包重复模块。 `,-1)]]),_:1}))],2),d(`div`,Ne,[d(`section`,{class:i(r(E)({padding:`md`}))},[p(J,{"icon-name":`module-sources`,title:`模块来源`}),d(`div`,Pe,[(S(!0),_(g,null,n(h.value,e=>(S(),f(Oe,u({key:e.key},{ref_for:!0},e),null,16))),128))])],2),d(`section`,{class:i(r(E)({padding:`md`}))},[p(J,{"icon-name":`file-samples`,title:`文件样本`}),d(`ul`,Fe,[(S(!0),_(g,null,n(v.value,e=>(S(),f(W,u({key:e.key},{ref_for:!0},e,{"mono-title":``}),null,16))),128))])],2)])]))}}),Le=`Treemap`,Re=`从包体到文件再到模块,直接定位体积热点。`,ze=`overview`,Be=c({__name:`TreemapCard`,props:{bindChartRef:{type:Function}},setup(e){function t(){return O({kind:`badge`})}return(n,o)=>(S(),_(`div`,{class:i(r(E)({padding:`sm`}))},[p(J,{class:`mb-2 px-2`,"icon-name":`treemap`,title:Le,description:Re},{meta:a(()=>[d(`span`,{class:i(t())},C(ze),2)]),_:1}),d(`div`,{ref:e.bindChartRef,class:`h-[min(58vh,36rem)] min-h-84 rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-2`},null,512)],2))}}),Ve={class:`grid gap-3 xl:grid-cols-[minmax(0,1.55fr)_minmax(21rem,0.75fr)] xl:items-stretch`},He={class:`grid gap-3 xl:h-[min(58vh,36rem)] xl:grid-rows-[minmax(0,1fr)_minmax(0,0.82fr)]`},Ue={class:`mt-3 grid h-[calc(100%-3.5rem)] min-h-0 gap-2 overflow-y-auto pr-1 text-sm xl:grid-cols-1`},We={class:`mt-3 grid h-[calc(100%-3.5rem)] min-h-0 gap-2 overflow-y-auto pr-1 text-sm text-(--dashboard-text-muted)`},Ge=c({__name:`OverviewPanel`,props:{bindChartRef:{type:Function},visibleLargestFiles:{},subPackages:{}},setup(e){let t=e;function o(e){return{title:e.file,meta:`${e.packageLabel} · ${A(e.packageType)} · ${e.type}`,value:M(e.size)}}function s(e){return{title:e.root,meta:`${e.name?`别名 ${e.name}`:`未设置别名`} · ${e.independent?`独立分包`:`普通分包`}`}}let c=x(()=>t.visibleLargestFiles.map(e=>({key:`${e.packageId}:${e.file}`,...o(e)}))),l=x(()=>t.subPackages.map(e=>({key:e.root,...s(e)}))),h=x(()=>l.value.length>0);return(t,o)=>(S(),_(`section`,Ve,[p(Be,{"bind-chart-ref":e.bindChartRef},null,8,[`bind-chart-ref`]),d(`div`,He,[d(`section`,{class:i([r(E)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(J,{"icon-name":`top-files`,title:`Top Files`,description:`最大体积样本`},{meta:a(()=>[...o[0]||=[d(`span`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-text-soft)`},`Top 10`,-1)]]),_:1}),d(`ol`,Ue,[(S(!0),_(g,null,n(c.value,e=>(S(),f(W,u({key:e.key},{ref_for:!0},e),null,16))),128))])],2),d(`section`,{class:i([r(E)({padding:`md`}),`min-h-0 overflow-hidden`])},[p(J,{"icon-name":`subpackages`,title:`Subpackages`,description:`分包根目录与模式`},{meta:a(()=>[...o[1]||=[d(`span`,{class:`text-[11px] uppercase tracking-[0.2em] text-(--dashboard-text-soft)`},`Roots`,-1)]]),_:1}),d(`ul`,We,[h.value?y(``,!0):(S(),f(N,{key:0,as:`li`,compact:``},{default:a(()=>[...o[2]||=[m(` 当前构建没有配置分包。 `,-1)]]),_:1})),(S(!0),_(g,null,n(l.value,e=>(S(),f(W,u({key:e.key},{ref_for:!0},e),null,16))),128))])],2)])]))}}),Ke={class:`mt-1.5 text-base font-semibold text-(--dashboard-text)`},qe=`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`,Je=c({__name:`AppMetricTile`,props:{label:{},value:{}},setup(e){return(t,n)=>(S(),_(`div`,{class:i(qe)},[p(le,null,{default:a(()=>[m(C(e.label),1)]),_:1}),d(`p`,Ke,C(e.value),1)]))}}),Ye={class:`overflow-hidden rounded-xl border border-(--dashboard-border)`},Xe={class:`min-w-full divide-y divide-(--dashboard-border) text-left text-sm`},Ze={class:`divide-y divide-(--dashboard-border) text-(--dashboard-text-muted)`},Qe={class:`px-3 py-2 font-mono text-xs text-(--dashboard-text)`},$e={class:`px-3 py-2`},et={class:`px-3 py-2`},tt={class:`px-3 py-2 font-medium text-(--dashboard-text)`},nt=c({__name:`AppPackageFileTable`,props:{files:{}},setup(e){let t=e;function r(e){return{file:e.file,type:e.type,fromLabel:k(e.from),sizeLabel:M(e.size)}}let i=x(()=>t.files.map(e=>r(e)));return(e,t)=>(S(),_(`div`,Ye,[d(`table`,Xe,[t[0]||=d(`thead`,{class:`bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`},[d(`tr`,null,[d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 文件 `),d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 类型 `),d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 来源 `),d(`th`,{class:`px-3 py-2 text-[11px] font-medium uppercase tracking-[0.18em]`},` 体积 `)])],-1),d(`tbody`,Ze,[(S(!0),_(g,null,n(i.value,e=>(S(),_(`tr`,{key:e.file},[d(`td`,Qe,C(e.file),1),d(`td`,$e,C(e.type),1),d(`td`,et,C(e.fromLabel),1),d(`td`,tt,C(e.sizeLabel),1)]))),128))])])]))}}),rt={class:`grid gap-3`},it={class:`grid gap-3 xl:grid-cols-2`},at={class:`flex flex-wrap items-start justify-between gap-4`},ot={class:`min-w-0`},st={class:`mt-2 text-sm text-(--dashboard-text-soft)`},ct={class:`text-right`},lt={class:`text-xl font-semibold text-(--dashboard-text)`},ut={class:`text-xs text-(--dashboard-text-soft)`},dt={class:`mt-4 grid grid-cols-2 gap-2 text-sm md:grid-cols-4`},ft={class:`mt-4`},pt=c({__name:`PackagesPanel`,props:{packageInsights:{}},setup(e){let t=e;function a(e){return[{label:`Chunks`,value:e.chunkCount},{label:`Assets`,value:e.assetCount},{label:`模块数`,value:e.moduleCount},{label:`跨包模块`,value:e.duplicateModuleCount}]}let o=x(()=>t.packageInsights.map(e=>{let t=A(e.type);return{...e,typeLabel:t,summaryText:`${t} · ${e.fileCount} 个产物 · ${e.moduleCount} 个模块`,totalBytesLabel:M(e.totalBytes),entryCountText:`${e.entryFileCount} 个 entry`,metrics:a(e)}}));return(e,t)=>(S(),_(`section`,rt,[d(`div`,it,[(S(!0),_(g,null,n(o.value,e=>(S(),_(`article`,{key:e.id,class:i(r(E)({padding:`md`}))},[d(`div`,at,[d(`div`,ot,[p(J,{"icon-name":`tab-packages`,title:e.label,description:e.typeLabel},null,8,[`title`,`description`]),d(`p`,st,C(e.summaryText),1)]),d(`div`,ct,[d(`p`,lt,C(e.totalBytesLabel),1),d(`p`,ut,C(e.entryCountText),1)])]),d(`div`,dt,[(S(!0),_(g,null,n(e.metrics,e=>(S(),f(Je,u({key:e.label},{ref_for:!0},e),null,16))),128))]),d(`div`,ft,[p(nt,{files:e.topFiles},null,8,[`files`])])],2))),128))])]))}}),mt=c({__name:`SectionNote`,props:{text:{}},setup(e){let t=te();return(n,a)=>(S(),_(`div`,{class:i(r(t))},C(e.text),3))}});function Q(e){return e.size??0}function ht(e,t){return{label:e,value:t}}function gt(e,t){return{packageId:e.id,packageLabel:e.label,packageType:e.type,file:t.file,size:Q(t),type:t.type,from:t.from,isEntry:!!t.isEntry,moduleCount:t.modules?.length??0,source:t.source}}function _t(e){return{file:e.file,size:Q(e),type:e.type,from:e.from,isEntry:!!e.isEntry,moduleCount:e.modules?.length??0}}function vt(e,t){return{packageId:t.packageId,packageLabel:e.get(t.packageId)??t.packageId,files:t.files}}function yt(e){return{sourceType:e,count:0,bytes:0}}function bt(e){let t=x(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),n=x(()=>{let t=new Map;for(let n of e.value?.packages??[])for(let e of n.files)for(let n of e.modules??[]){let e=t.get(n.id),r=n.bytes??0,i=n.originalBytes??r;if(!e){t.set(n.id,{bytes:r,originalBytes:i,sourceType:n.sourceType});continue}t.set(n.id,{bytes:Math.max(e.bytes,r),originalBytes:Math.max(e.originalBytes,i),sourceType:e.sourceType})}return t});return{summary:x(()=>{let t=e.value;if(!t)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0,subpackageCount:0,entryCount:0};let n=t.packages.flatMap(e=>e.files);return{packageCount:t.packages.length,moduleCount:t.modules.length,duplicateCount:t.modules.filter(e=>e.packages.length>1).length,totalBytes:n.reduce((e,t)=>e+Q(t),0),subpackageCount:t.subPackages.length,entryCount:n.filter(e=>e.isEntry).length}}),packageTypeSummary:x(()=>{let t=new Map;for(let n of e.value?.packages??[])t.set(n.type,(t.get(n.type)??0)+1);return Array.from(t.entries(),([e,t])=>ht(e,t)).sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label))}),packageInsights:x(()=>{let t=e.value;return t?t.packages.map(e=>{let n=new Set,r=0;for(let i of t.modules)i.packages.some(t=>t.packageId===e.id)&&(n.add(i.id),i.packages.length>1&&r++);let i=e.files.map(e=>_t(e)).sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,5);return{id:e.id,label:e.label,type:e.type,totalBytes:e.files.reduce((e,t)=>e+Q(t),0),fileCount:e.files.length,chunkCount:e.files.filter(e=>e.type===`chunk`).length,assetCount:e.files.filter(e=>e.type===`asset`).length,moduleCount:n.size,duplicateModuleCount:r,entryFileCount:e.files.filter(e=>e.isEntry).length,topFiles:i}}).sort((e,t)=>t.totalBytes-e.totalBytes||e.label.localeCompare(t.label)):[]}),largestFiles:x(()=>{let t=[];for(let n of e.value?.packages??[])for(let e of n.files)t.push(gt(n,e));return t.sort((e,t)=>t.size-e.size||e.file.localeCompare(t.file)).slice(0,18)}),duplicateModules:x(()=>{let r=e.value;return r?r.modules.filter(e=>e.packages.length>1).map(e=>{let r=n.value.get(e.id);return{id:e.id,source:e.source,sourceType:e.sourceType,packageCount:e.packages.length,bytes:r?.bytes??r?.originalBytes??0,packages:e.packages.map(e=>vt(t.value,e))}}).sort((e,t)=>t.packageCount-e.packageCount||t.bytes-e.bytes||e.source.localeCompare(t.source)):[]}),moduleSourceSummary:x(()=>{let t=new Map;for(let r of e.value?.modules??[]){let e=n.value.get(r.id),i=t.get(r.sourceType)??yt(r.sourceType);i.count+=1,i.bytes+=e?.bytes??e?.originalBytes??0,t.set(r.sourceType,i)}return[...t.values()].sort((e,t)=>t.bytes-e.bytes||t.count-e.count||e.sourceType.localeCompare(t.sourceType))}),subPackages:x(()=>e.value?.subPackages??[])}}function $(e){return e}function xt(e){let t=l(),n=v(),r=x({get(){let e=t.query.tab;return e===`packages`||e===`modules`?e:`overview`},set(e){n.replace({query:e===`overview`?{}:{tab:e}})}}),i=x(()=>e.packageInsights.value.reduce((e,t)=>e+t.chunkCount,0)),a=x(()=>e.packageInsights.value.reduce((e,t)=>e+t.assetCount,0)),o=x(()=>e.duplicateModules.value.reduce((e,t)=>e+t.bytes,0));function s(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`metric-packages`}),$({label:`分包配置`,value:String(e.summary.value.subpackageCount),iconName:`metric-subpackages`}),$({label:`Chunk 数量`,value:String(i.value),iconName:`metric-chunks`}),$({label:`Asset 数量`,value:String(a.value),iconName:`metric-assets`}),$({label:`总产物体积`,value:M(e.summary.value.totalBytes),wide:!0,iconName:`metric-size-outline`})]}function c(){return[$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`来源类型`,value:String(e.moduleSourceSummary.value.length),iconName:`metric-sources`}),$({label:`复用体积`,value:o.value>0?M(o.value):`0 B`,iconName:`metric-copy`}),$({label:`最近刷新`,value:e.lastUpdatedAt.value,wide:!0,iconName:`metric-time`})]}function u(){return[$({label:`包体数量`,value:String(e.summary.value.packageCount),iconName:`tab-packages`}),$({label:`源码模块`,value:String(e.summary.value.moduleCount),iconName:`metric-modules`}),$({label:`跨包复用`,value:String(e.summary.value.duplicateCount),iconName:`metric-duplicates`}),$({label:`Entry 数量`,value:String(e.summary.value.entryCount),iconName:`metric-entries`}),$({label:`总产物体积`,value:M(e.summary.value.totalBytes),wide:!0,iconName:`metric-size`})]}return{activeTab:r,topCards:x(()=>r.value===`packages`?s():r.value===`modules`?c():u()),packageTypeSummary:e.packageTypeSummary}}var St={main:{fill:`#1d4ed8`,border:`#93c5fd`},subPackage:{fill:`#047857`,border:`#6ee7b7`},independent:{fill:`#b45309`,border:`#fbbf24`},virtual:{fill:`#7c3aed`,border:`#d8b4fe`}},Ct=[{itemStyle:{borderWidth:3,gapWidth:4},upperLabel:{show:!0,height:32,color:`#f8fafc`,fontWeight:`600`}},{itemStyle:{borderWidth:2,gapWidth:2}},{itemStyle:{borderWidth:1,gapWidth:1}}];function wt(e){if(!e)return``;let t=[];return e.kind===`package`?(t.push(`<strong>${e.packageLabel}</strong>`),t.push(`类型:${e.packageType}`),t.push(`产物数量:${e.fileCount}`),e.totalBytes&&t.push(`累计体积:${M(e.totalBytes)}`)):e.kind===`file`?(t.push(`<strong>${e.fileName}</strong>`),t.push(`所属:${e.packageLabel}`),t.push(`类型:${e.type===`chunk`?`代码 chunk`:`资源`} · 来源:${e.from}`),t.push(`体积:${M(e.bytes)}`),e.childCount>0&&t.push(`模块数量:${e.childCount}`)):e.kind===`module`?(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`源码类型:${j(e.sourceType)}`),t.push(`模块体积:${M(e.bytes??e.originalBytes)}`),e.packageCount>1&&t.push(`跨包复用:${e.packageCount} 次`)):e.kind===`asset`&&(t.push(`<strong>${e.source}</strong>`),t.push(`所属:${e.packageLabel} → ${e.fileName}`),t.push(`资源体积:${M(e.bytes)}`)),t.join(`<br/>`)}function Tt(e,t,n,r){return{name:r.source,value:Math.max(r.bytes??r.originalBytes??1,1),meta:{kind:`module`,packageLabel:e,fileName:t,source:r.source,sourceType:r.sourceType,bytes:r.bytes,originalBytes:r.originalBytes,packageCount:n.get(r.id)??1}}}function Et(e,t,n){return{name:n.source??t,value:Math.max(n.size??1,1),meta:{kind:`asset`,packageLabel:e,fileName:t,source:n.source??t,bytes:n.size}}}function Dt(e,t,n,r,i){return{name:r.file,value:Math.max(r.size??1,1),meta:{kind:`file`,packageLabel:n.get(t)??e,fileName:r.file,from:r.from,childCount:i.length,type:r.type,bytes:r.size},children:i.length>0?i:void 0}}function Ot(e,t,n){let r=St[e.type];return{name:e.label,value:Math.max(t,1),meta:{kind:`package`,packageLabel:e.label,packageType:e.type,fileCount:e.files.length,totalBytes:t},itemStyle:{color:r.fill,borderColor:r.border},children:n}}function kt(e,t){let n=x(()=>new Map((e.value?.packages??[]).map(e=>[e.id,e.label]))),r=x(()=>new Map((e.value?.modules??[]).map(e=>[e.id,e.packages.length]))),i=x(()=>{let t=e.value;return t?t.packages.map(e=>Ot(e,e.files.reduce((e,t)=>e+(t.size??0),0),e.files.map(t=>{let i=t.type===`chunk`?(t.modules??[]).map(n=>Tt(e.label,t.file,r.value,n)):t.source?[Et(e.label,t.file,t)]:[];return Dt(e.label,e.id,n.value,t,i)}))):[]});return{treemapOption:x(()=>({backgroundColor:`transparent`,tooltip:{formatter:e=>wt(e.data?.meta),borderColor:t.value===`dark`?`rgba(148, 163, 184, 0.16)`:`rgba(71, 85, 105, 0.14)`,backgroundColor:t.value===`dark`?`rgba(15, 23, 42, 0.92)`:`rgba(255, 255, 255, 0.96)`,textStyle:{color:t.value===`dark`?`#e2e8f0`:`#0f172a`}},series:[{type:`treemap`,nodeClick:!1,roam:!1,breadcrumb:{show:!1},visibleMin:1,label:{show:!0,color:t.value===`dark`?`#f8fafc`:`#0f172a`,formatter:`{b}`},upperLabel:{show:!0},itemStyle:{borderColor:t.value===`dark`?`rgba(15, 23, 42, 0.88)`:`rgba(255, 255, 255, 0.92)`,borderWidth:2,gapWidth:2},emphasis:{itemStyle:{borderColor:t.value===`dark`?`#f8fafc`:`#0f172a`}},colorAlpha:[.94,.72],colorSaturation:[.4,.9],levels:Ct,data:i.value}]}))}}xe();var At={class:`grid gap-3`},jt={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(18rem,0.92fr)]`},Mt={class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},Nt={class:`mt-4 grid gap-2`},Pt={class:`grid gap-2`},Ft={class:`flex flex-col gap-2 xl:flex-row xl:items-center xl:justify-between`},It={class:`flex flex-wrap gap-2`},Lt=[`onClick`],Rt={class:`h-4.5 w-4.5`},zt={class:`flex flex-wrap items-center gap-2`},Bt={class:`flex flex-wrap items-center gap-2`},Vt=[`onClick`],Ht={class:`h-4 w-4`},Ut={class:`grid gap-3 xl:grid-cols-[minmax(0,1.05fr)_minmax(20rem,0.95fr)]`},Wt={class:`grid gap-3 lg:grid-cols-[minmax(0,0.92fr)_minmax(0,1.08fr)]`},Gt={class:`grid gap-2 sm:grid-cols-2`},Kt={class:`grid gap-2 sm:grid-cols-2`},qt={class:`grid gap-2`},Jt={class:`flex items-start justify-between gap-3`},Yt={class:`font-medium text-(--dashboard-text)`},Xt={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},Zt={key:0},Qt={key:1,class:`grid gap-3`},$t={key:2,class:`grid gap-3`},en=c({__name:`analyze`,setup(t){be([ve,me,ge,ye,_e]);let c=o(),l,{themePreference:v,resolvedTheme:T,setThemePreference:te}=ce(),{eventSummary:E,lastUpdatedAt:k,latestRuntimeEvent:A,resultRef:j,runtimeEvents:M,runtimeSourceSummary:N,updateCount:xe}=ae(),{treemapOption:P}=kt(j,T),{summary:Se,packageTypeSummary:F,packageInsights:I,largestFiles:L,duplicateModules:R,moduleSourceSummary:z,subPackages:B}=bt(j),V=x(()=>R.value.slice(0,12)),H=x(()=>L.value.slice(0,10)),U=x(()=>`${xe.value} 次数据同步`),W=x(()=>T.value===`dark`?`status-dark`:`status-light`),G=x(()=>[{iconName:W.value,label:U.value},{label:k.value}]),K=x(()=>M.value.slice(0,3)),we=x(()=>ne(N.value).slice(0,4)),{activeTab:q,topCards:Te,packageTypeSummary:J}=xt({summary:Se,packageInsights:I,packageTypeSummary:F,duplicateModules:R,moduleSourceSummary:z,lastUpdatedAt:k});function Y(){l?.resize()}function X(){l?.dispose(),l=void 0}function Ee(e){c.value=e instanceof HTMLDivElement?e:void 0}async function Z(){if(q.value!==`overview`){X();return}await ee(),c.value&&(l||=he(c.value,T.value===`dark`?`dark`:void 0,{renderer:`canvas`}),l.setOption(P.value,!0),l.resize())}return h(P,e=>{l&&l.setOption(e,!0)},{deep:!0}),h(q,()=>{Z()}),h(T,async()=>{l&&c.value&&X(),await Z()}),e(()=>{window.addEventListener(`resize`,Y),Z()}),s(()=>{window.removeEventListener(`resize`,Y),X()}),(e,t)=>(S(),_(`div`,At,[r(j)?y(``,!0):(S(),f(D,{key:0,eyebrow:`Analyze`,title:`等待分析数据注入`,description:`当前路由已经可独立打开,但还没有接收到来自 CLI 的 analyze payload。你可以先从工作台查看壳子结构,或者通过命令启动真实数据联调。`,"icon-name":`hero-commands`,tone:`strong`,padding:`header`},{default:a(()=>[d(`div`,jt,[d(`div`,Mt,[t[0]||=d(`p`,{class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` recommended commands `,-1),d(`div`,Nt,[(S(),_(g,null,n([`weapp-vite analyze`,`weapp-vite build --ui`,`weapp-vite dev --ui`],e=>d(`code`,{key:e,class:`rounded-xl bg-slate-950 px-3 py-3 text-xs text-slate-100 dark:bg-slate-900`},C(e),1)),64))])]),d(`div`,Pt,[p(r(b),{class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/`},{default:a(()=>[...t[1]||=[d(`p`,{class:`font-medium`},` 返回工作台 `,-1),d(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 继续查看应用壳子、命令面板和当前增强节奏。 `,-1)]]),_:1}),p(r(b),{class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-4 transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,to:`/activity`},{default:a(()=>[...t[2]||=[d(`p`,{class:`font-medium`},` 查看活动流 `,-1),d(`p`,{class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},` 后续可以在这里观察真实的构建事件和诊断状态。 `,-1)]]),_:1})])])]),_:1})),d(`section`,Ft,[d(`nav`,It,[(S(!0),_(g,null,n(r(oe),e=>(S(),_(`button`,{key:e.key,class:i(r(O)({kind:`nav`,active:r(q)===e.key})),onClick:t=>q.value=e.key},[d(`span`,Rt,[p(w,{name:e.iconName},null,8,[`name`])]),m(` `+C(e.label),1)],10,Lt))),128))]),d(`div`,zt,[d(`div`,Bt,[(S(!0),_(g,null,n(r(ie),e=>(S(),_(`button`,{key:e.value,class:i(r(O)({kind:`theme`,active:r(v)===e.value})),onClick:t=>r(te)(e.value)},[d(`span`,Ht,[p(w,{name:e.iconName},null,8,[`name`])]),m(` `+C(e.label),1)],10,Vt))),128))]),(S(!0),_(g,null,n(G.value,e=>(S(),f(re,u({key:e.label},{ref_for:!0},e,{uppercase:``}),null,16))),128))])]),r(j)?(S(),_(g,{key:1},[d(`section`,Ut,[p(D,{eyebrow:`Runtime Context`,title:`分析视图关联的运行上下文`,description:`treemap 和包体指标不再是孤立结果,这里会同步展示最近的运行事件,让你知道这份分析结果处在什么执行背景里。`,"icon-name":`metric-time`},{default:a(()=>[d(`div`,Wt,[p(fe,{event:r(A),eyebrow:`latest event`,"duration-text":r(A)?.durationMs===void 0?void 0:`最近一次耗时: ${r(se)(r(A).durationMs)}`},{default:a(()=>[p(r(b),{class:`mt-4 inline-flex rounded-full border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-1.5 text-xs font-medium text-(--dashboard-text) transition hover:border-(--dashboard-border-strong)`,to:`/activity`},{default:a(()=>[...t[3]||=[m(` 打开事件控制台 `,-1)]]),_:1})]),_:1},8,[`event`,`duration-text`]),d(`div`,Gt,[(S(!0),_(g,null,n(r(E),e=>(S(),f(pe,u({key:e.label},{ref_for:!0},e),null,16))),128))])])]),_:1}),p(D,{eyebrow:`Source Signals`,title:`事件来源摘要`,description:`分析页直接按来源折叠运行事件,方便判断当前这份 payload 主要来自哪条链路。`,"icon-name":`hero-system`},{default:a(()=>[d(`div`,Kt,[(S(!0),_(g,null,n(we.value,e=>(S(),f(de,{key:e.source,source:e.source,count:e.count,"error-count":e.errorCount,"average-duration":e.averageDuration,"count-label":`条事件`},null,8,[`source`,`count`,`error-count`,`average-duration`]))),128))])]),_:1}),p(D,{eyebrow:`Recent Feed`,title:`最近事件样本`,description:`这些事件是分析页最直接的上游线索。后面如果某次 analyze 或 build 结果异常,这里会比看全量时间线更快定位。`,"icon-name":`hero-commands`},{default:a(()=>[d(`ul`,qt,[(S(!0),_(g,null,n(K.value,t=>(S(),_(`li`,{key:t.id,class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3`},[d(`div`,Jt,[d(`div`,null,[d(`p`,Yt,C(t.title),1),d(`p`,Xt,C(t.detail),1),p(le,{class:`mt-2`},{default:a(()=>[m(C(e.formatRuntimeEventMeta(t)),1)]),_:2},1024)]),p(ue,{label:e.formatRuntimeEventLevel(t.level),tone:e.getRuntimeEventBadgeTone(t.level)},null,8,[`label`,`tone`])])]))),128))])]),_:1})]),p(Ce,{cards:r(Te),"package-type-summary":r(J)},null,8,[`cards`,`package-type-summary`]),r(q)===`overview`?(S(),_(`section`,Zt,[p(Ge,{"bind-chart-ref":Ee,"visible-largest-files":H.value,"sub-packages":r(B)},null,8,[`visible-largest-files`,`sub-packages`])])):r(q)===`packages`?(S(),_(`section`,Qt,[p(mt,{text:`包与产物视图优先展示每个包的结构和最大文件,支持在一个屏幕内快速对比。`}),p(pt,{"package-insights":r(I)},null,8,[`package-insights`])])):(S(),_(`section`,$t,[p(mt,{text:`模块与复用视图聚焦跨包重复、来源分布与文件样本。`}),p(Ie,{"visible-duplicate-modules":V.value,"module-source-summary":r(z),"visible-largest-files":H.value},null,8,[`visible-duplicate-modules`,`module-source-summary`,`visible-largest-files`])]))],64)):y(``,!0)]))}});export{en as default};
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--dashboard-bg:#f4f7fb;--dashboard-bg-accent:radial-gradient(circle at top left, #3b82f629, transparent 28%), radial-gradient(circle at top right, #0ea5e91f, transparent 24%);--dashboard-panel:#ffffffe0;--dashboard-panel-strong:#fffffff5;--dashboard-panel-muted:#f8fafcdb;--dashboard-border:#94a3b838;--dashboard-border-strong:#3b82f63d;--dashboard-text:#0f172a;--dashboard-text-muted:#475569;--dashboard-text-soft:#64748b;--dashboard-accent:#0f766e;--dashboard-accent-soft:#0f766e1f;--dashboard-shadow:0 16px 48px #0f172a1a}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=dark]{--dashboard-bg:#020617;--dashboard-bg-accent:radial-gradient(circle at top left, #06b6d438, transparent 28%), radial-gradient(circle at top right, #0ea5e924, transparent 24%);--dashboard-panel:#0f172ad1;--dashboard-panel-strong:#0f172af0;--dashboard-panel-muted:#0f172ab8;--dashboard-border:#94a3b824;--dashboard-border-strong:#22d3ee33;--dashboard-text:#e2e8f0;--dashboard-text-muted:#cbd5e1;--dashboard-text-soft:#94a3b8;--dashboard-accent:#67e8f9;--dashboard-accent-soft:#22d3ee1f;--dashboard-shadow:0 22px 60px #0206176b}body{min-height:100vh;color:var(--dashboard-text);background-color:var(--dashboard-bg);background-image:var(--dashboard-bg-accent);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:IBM Plex Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}#app{min-height:100vh}::selection{background:#14b8a647}}@layer components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-3{inset-block:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.left-3{left:calc(var(--spacing) * 3)}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.icon-\[mdi--card-bulleted-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 15h-2v-2h2zm6 0h-4v-2h4zM8 11H6V9h2zm10 0h-8V9h8zm2 9H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2M4 6v12h16V6z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--chart-box-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M9 17H7v-7h2zm4 0h-2V7h2zm4 0h-2v-4h2zm2 2H5V5h14v14.1M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--chart-tree\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 6h8v16h-8zM2 4h20V2H2zm0 4h10V6H2zm7 14h3V10H9zm-7 0h5V10H2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--checkbox-blank-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--circle-slice-8\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 5c3.87 0 7 3.13 7 7s-3.13 7-7 7s-7-3.13-7-7s3.13-7 7-7m0-3c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12S6.5 2 12 2m0 2c-4.42 0-8 3.58-8 8s3.58 8 8 8s8-3.58 8-8s-3.58-8-8-8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--clock-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 20a8 8 0 0 0 8-8a8 8 0 0 0-8-8a8 8 0 0 0-8 8a8 8 0 0 0 8 8m0-18a10 10 0 0 1 10 10a10 10 0 0 1-10 10C6.47 22 2 17.5 2 12A10 10 0 0 1 12 2m.5 5v5.25l4.5 2.67l-.75 1.23L11 13V7z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--console-line\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M13 19v-3h8v3zm-4.5-6L2.47 7h4.24l4.96 4.95c.58.59.58 1.55 0 2.12L6.74 19H2.5z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--content-copy\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--cube-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--database-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 3C7.58 3 4 4.79 4 7v10c0 2.21 3.59 4 8 4s8-1.79 8-4V7c0-2.21-3.58-4-8-4m6 14c0 .5-2.13 2-6 2s-6-1.5-6-2v-2.23c1.61.78 3.72 1.23 6 1.23s4.39-.45 6-1.23zm0-4.55c-1.3.95-3.58 1.55-6 1.55s-4.7-.6-6-1.55V9.64c1.47.83 3.61 1.36 6 1.36s4.53-.53 6-1.36zM12 9C8.13 9 6 7.5 6 7s2.13-2 6-2s6 1.5 6 2s-2.13 2-6 2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--database\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 3C7.58 3 4 4.79 4 7s3.58 4 8 4s8-1.79 8-4s-3.58-4-8-4M4 9v3c0 2.21 3.58 4 8 4s8-1.79 8-4V9c0 2.21-3.58 4-8 4s-8-1.79-8-4m0 5v3c0 2.21 3.58 4 8 4s8-1.79 8-4v-3c0 2.21-3.58 4-8 4s-8-1.79-8-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--export-variant\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 1L8 5h3v9h2V5h3m2 18H6a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h3v2H6v12h12V9h-3V7h3a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--file-document-multiple-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M16 0H8C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6zm4 18H8V2h7v5h5zM4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm6 6v2h8v-2zm0 4v2h5v-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--file-document-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2h7v5h5v11H6zm2 8v2h8v-2zm0 4v2h5v-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--file-star-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zm-8.5-2l.7-2.8L8 13.3l2.9-.2l1.1-2.7l1.1 2.6l2.9.2l-2.2 1.9l.7 2.8l-2.5-1.4z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--format-letter-spacing\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14.4 10.7h4.1l-2-5.4zM15.6 3h1.7L22 15h-1.9l-1-2.6h-5.4l-1 2.6h-1.9zm-4.4 0h1.9L8.4 15H6.7L2 3h1.9l3.6 9.7M19 22v-2H5v2l-3-3l3-3v2h14v-2l3 3z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--heart-pulse\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M7.5 4A5.5 5.5 0 0 0 2 9.5c0 .5.09 1 .22 1.5H6.3l1.27-3.37c.3-.8 1.48-.88 1.86 0L11.5 13l.59-1.42c.13-.33.48-.58.91-.58h8.78c.13-.5.22-1 .22-1.5A5.5 5.5 0 0 0 16.5 4c-1.86 0-3.5.93-4.5 2.34C11 4.93 9.36 4 7.5 4M3 12.5a1 1 0 0 0-1 1a1 1 0 0 0 1 1h2.44L11 20c1 .9 1 .9 2 0l5.56-5.5H21a1 1 0 0 0 1-1a1 1 0 0 0-1-1h-7.6l-.93 2.3c-.4 1.01-1.55.87-1.92.03L8.5 9.5l-.96 2.33c-.15.38-.49.67-.94.67z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--layers-triple-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m12 16.54l7.37-5.74L21 12.07l-9 7l-9-7l1.62-1.26zM12 14L3 7l9-7l9 7zm0-11.47L6.26 7L12 11.47L17.74 7zm0 18.94l7.37-5.74L21 17l-9 7l-9-7l1.62-1.26z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--menu\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--moon-waning-crescent\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 12a10 10 0 0 0 13 9.54a10 10 0 0 1 0-19.08A10 10 0 0 0 2 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--motion-play-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m10 16.5l6-4.5l-6-4.5M22 12c0-5.54-4.46-10-10-10c-1.17 0-2.3.19-3.38.56l.7 1.94c.85-.34 1.74-.53 2.68-.53c4.41 0 8.03 3.62 8.03 8.03s-3.62 8.03-8.03 8.03S3.97 16.41 3.97 12c0-.94.19-1.88.53-2.72l-1.94-.66C2.19 9.7 2 10.83 2 12c0 5.54 4.46 10 10 10s10-4.46 10-10M5.47 3.97c.85 0 1.53.71 1.53 1.5C7 6.32 6.32 7 5.47 7c-.79 0-1.5-.68-1.5-1.53c0-.79.71-1.5 1.5-1.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--package-variant-closed\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15l-1.89 1.07L16 8.61l1.96-1.11zM6.04 7.5L12 10.85l1.96-1.1l-5.88-3.4zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--package-variant\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 10.96a.985.985 0 0 1-.37-1.37L3.13 7c.11-.2.28-.34.47-.42l7.83-4.4c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.19.1.35.26.44.46l1.45 2.52c.28.48.11 1.09-.36 1.36l-1 .58v4.96c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-5.54c-.3.17-.68.18-1 0m10-6.81v6.7l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-3.22l-5 2.9c-.33.18-.7.17-1 .01v3.69zm-5.15-2.55l6.28-3.63l-.58-1.01l-6.28 3.63z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--palette-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 22A10 10 0 0 1 2 12A10 10 0 0 1 12 2c5.5 0 10 4 10 9a6 6 0 0 1-6 6h-1.8c-.3 0-.5.2-.5.5c0 .1.1.2.1.3c.4.5.6 1.1.6 1.7c.1 1.4-1 2.5-2.4 2.5m0-18a8 8 0 0 0-8 8a8 8 0 0 0 8 8c.3 0 .5-.2.5-.5c0-.2-.1-.3-.1-.4c-.4-.5-.6-1-.6-1.6c0-1.4 1.1-2.5 2.5-2.5H16a4 4 0 0 0 4-4c0-3.9-3.6-7-8-7m-5.5 6c.8 0 1.5.7 1.5 1.5S7.3 13 6.5 13S5 12.3 5 11.5S5.7 10 6.5 10m3-4c.8 0 1.5.7 1.5 1.5S10.3 9 9.5 9S8 8.3 8 7.5S8.7 6 9.5 6m5 0c.8 0 1.5.7 1.5 1.5S15.3 9 14.5 9S13 8.3 13 7.5S13.7 6 14.5 6m3 4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--rocket-launch-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m13.16 22.19l-1.66-3.84c1.6-.58 3.07-1.35 4.43-2.27l-2.78 6.11m-7.5-9.69l-3.84-1.65l6.11-2.78C7 9.43 6.23 10.91 5.65 12.5M20 4c-2.96-.22-5.2.83-7.55 3.31c-2.36 2.47-3.36 4.5-3.95 6.04l2.17 2.1c2.29-.87 4.33-2.18 6.03-3.89C20 8.27 20.17 5.4 20 4m-9 1.9c2.63-2.8 7-4.82 10.66-3.55c0 0 2.12 4.96-3.55 10.65c-2.2 2.17-4.58 3.5-6.72 4.34c-.24.09-1.15.39-2.13-.46l-2.13-2.13c-.56-.56-.74-1.38-.47-2.13C7.5 10.5 8.41 8.69 11 5.9M6.25 22H4.84l4.09-4.1c.3.21.63.36.97.45zM2 22v-1.41l4.77-4.78l1.43 1.42L3.41 22zm0-2.83v-1.42l3.65-3.65c.09.35.24.68.45.97zM16 6a2 2 0 0 1 2 2c0 1.11-.89 2-2 2a2 2 0 1 1 0-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--shape-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M11 13.5v8H3v-8zm-2 2H5v4h4zM12 2l5.5 9h-11zm0 3.86L10.08 9h3.84zM17.5 13c2.5 0 4.5 2 4.5 4.5S20 22 17.5 22S13 20 13 17.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 0 0-2.5 2.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5a2.5 2.5 0 0 0-2.5-2.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--shield-check-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m-2-4l-4-4l1.41-1.41L10 14.17l6.59-6.59L18 9'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--source-branch\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M13 14c-3.36 0-4.46 1.35-4.82 2.24C9.25 16.7 10 17.76 10 19a3 3 0 0 1-3 3a3 3 0 0 1-3-3c0-1.31.83-2.42 2-2.83V7.83A2.99 2.99 0 0 1 4 5a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 1.31-.83 2.42-2 2.83v5.29c.88-.65 2.16-1.12 4-1.12c2.67 0 3.56-1.34 3.85-2.23A3.01 3.01 0 0 1 14 7a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 1.34-.88 2.5-2.09 2.86C17.65 11.29 16.68 14 13 14m-6 4a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1M7 4a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1m10 2a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--theme-light-dark\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M7.5 2c-1.79 1.15-3 3.18-3 5.5s1.21 4.35 3.03 5.5C4.46 13 2 10.54 2 7.5A5.5 5.5 0 0 1 7.5 2m11.57 1.5l1.43 1.43L4.93 20.5L3.5 19.07zm-6.18 2.43L11.41 5L9.97 6l.42-1.7L9 3.24l1.75-.12l.58-1.65L12 3.1l1.73.03l-1.35 1.13zm-3.3 3.61l-1.16-.73l-1.12.78l.34-1.32l-1.09-.83l1.36-.09l.45-1.29l.51 1.27l1.36.03l-1.05.87zM19 13.5a5.5 5.5 0 0 1-5.5 5.5c-1.22 0-2.35-.4-3.26-1.07l7.69-7.69c.67.91 1.07 2.04 1.07 3.26m-4.4 6.58l2.77-1.15l-.24 3.35zm4.33-2.7l1.15-2.77l2.2 2.54zm1.15-4.96l-1.14-2.78l3.34.24zM9.63 18.93l2.77 1.15l-2.53 2.19z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--timeline-text-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 12c0 1.11-.89 2-2 2a2 2 0 1 1 2-2M4 2v6H2V2zM2 22v-6h2v6zM24 6v12c0 1.11-.89 2-2 2H10a2 2 0 0 1-2-2v-4l-2-2l2-2V6a2 2 0 0 1 2-2h12c1.11 0 2 .89 2 2m-2 0H10v4.83L8.83 12L10 13.17V18h12zM12 9h8v2h-8zm0 4h6v2h-6z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--timer-sand\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M6 2h12v6l-4 4l4 4v6H6v-6l4-4l-4-4zm10 14.5l-4-4l-4 4V20h8zm-4-5l4-4V4H8v3.5zM10 6h4v.75l-2 2l-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--vector-link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 1c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h11c1.11 0 2-.89 2-2v-3h-2v3H3V3h11v2h2V3c0-1.11-.89-2-2-2M9 7c-1.11 0-2 .89-2 2v3h2V9h11v11H9v-2H7v2c0 1.11.89 2 2 2h11c1.11 0 2-.89 2-2V9c0-1.11-.89-2-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--view-dashboard-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M19 5v2h-4V5zM9 5v6H5V5zm10 8v6h-4v-6zM9 17v2H5v-2zM21 3h-8v6h8zM11 3H3v10h8zm10 8h-8v10h8zm-10 4H3v6h8z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--view-grid-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 11h8V3H3m2 2h4v4H5m8 12h8v-8h-8m2 2h4v4h-4M3 21h8v-8H3m2 2h4v4H5m8-16v8h8V3m-2 6h-4V5h4Z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--view-quilt-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M4 5v13h17V5zm2 11V7h3v9zm5 0v-3.5h3V16zm8 0h-3v-3.5h3zm-8-5.5V7h8v3.5z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--white-balance-sunny\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m3.55 19.09l1.41 1.41l1.8-1.79l-1.42-1.42M12 6c-3.31 0-6 2.69-6 6s2.69 6 6 6s6-2.69 6-6c0-3.32-2.69-6-6-6m8 7h3v-2h-3m-2.76 7.71l1.8 1.79l1.41-1.41l-1.79-1.8M20.45 5l-1.41-1.4l-1.8 1.79l1.42 1.42M13 1h-2v3h2M6.76 5.39L4.96 3.6L3.55 5l1.79 1.81zM1 13h3v-2H1m12 9h-2v3h2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-\[calc\(100\%-3\.5rem\)\]{height:calc(100% - 3.5rem)}.h-\[min\(58vh\,36rem\)\]{height:min(58vh,36rem)}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[21rem\]{min-height:21rem}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-14{width:calc(var(--spacing) * 14)}.w-\[min\(22rem\,calc\(100vw-1\.5rem\)\)\]{width:min(22rem,100vw - 1.5rem)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[1600px\]{max-width:1600px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8rem\]{min-width:8rem}.min-w-full{min-width:100%}.shrink-0{flex-shrink:0}.-translate-x-6{--tw-translate-x:calc(var(--spacing) * -6);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[color\:var\(--dashboard-border\)\]>:not(:last-child)){border-color:var(--dashboard-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-\[24px\]{border-radius:24px}.rounded-full{border-radius:3.40282e38px}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[color\:var\(--dashboard-accent\)\]{border-color:var(--dashboard-accent)}.border-\[color\:var\(--dashboard-border\)\]{border-color:var(--dashboard-border)}.border-\[color\:var\(--dashboard-border-strong\)\]{border-color:var(--dashboard-border-strong)}.border-amber-200{border-color:var(--color-amber-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-rose-200{border-color:var(--color-rose-200)}.bg-\[color\:var\(--dashboard-accent-soft\)\]{background-color:var(--dashboard-accent-soft)}.bg-\[color\:var\(--dashboard-panel\)\]{background-color:var(--dashboard-panel)}.bg-\[color\:var\(--dashboard-panel-muted\)\]{background-color:var(--dashboard-panel-muted)}.bg-\[color\:var\(--dashboard-panel-strong\)\]{background-color:var(--dashboard-panel-strong)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-slate-950\/35{background-color:#02061859}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/35{background-color:color-mix(in oklab, var(--color-slate-950) 35%, transparent)}}.bg-transparent{background-color:#0000}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-\[0\.28em\]{--tw-tracking:.28em;letter-spacing:.28em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-\[color\:var\(--dashboard-accent\)\]{color:var(--dashboard-accent)}.text-\[color\:var\(--dashboard-text\)\]{color:var(--dashboard-text)}.text-\[color\:var\(--dashboard-text-muted\)\]{color:var(--dashboard-text-muted)}.text-\[color\:var\(--dashboard-text-soft\)\]{color:var(--dashboard-text-soft)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-700{color:var(--color-emerald-700)}.text-rose-700{color:var(--color-rose-700)}.text-slate-100{color:var(--color-slate-100)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-\[var\(--dashboard-shadow\)\]{--tw-shadow:var(--dashboard-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:text-\[color\:var\(--dashboard-accent\)\]:is(:where(.group):hover *){color:var(--dashboard-accent)}.hover\:border-\[color\:var\(--dashboard-border-strong\)\]:hover{border-color:var(--dashboard-border-strong)}.hover\:bg-\[color\:var\(--dashboard-panel\)\]:hover{background-color:var(--dashboard-panel)}.hover\:text-\[color\:var\(--dashboard-text\)\]:hover{color:var(--dashboard-text)}}.focus\:border-\[color\:var\(--dashboard-border-strong\)\]:focus{border-color:var(--dashboard-border-strong)}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=48rem){.md\:hidden{display:none}.md\:inline-flex{display:inline-flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:justify-between{justify-content:space-between}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-\[1\.65rem\]{font-size:1.65rem}.md\:text-\[2rem\]{font-size:2rem}}@media (width>=64rem){.lg\:block{display:block}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[18\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:18.5rem minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,0\.92fr\)_minmax\(0\,1\.08fr\)\]{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)}.lg\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media (width>=80rem){.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:h-\[min\(58vh\,36rem\)\]{height:min(58vh,36rem)}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(20rem\,0\.9fr\)\]{grid-template-columns:minmax(0,1.1fr) minmax(20rem,.9fr)}.xl\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(20rem\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(20rem,.95fr)}.xl\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(21rem\,0\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(21rem,.85fr)}.xl\:grid-cols-\[minmax\(0\,1\.24fr\)_minmax\(0\,0\.76fr\)\]{grid-template-columns:minmax(0,1.24fr) minmax(0,.76fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(18rem\,0\.8fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(18rem,.8fr)}.xl\:grid-cols-\[minmax\(0\,1\.55fr\)_minmax\(21rem\,0\.75fr\)\]{grid-template-columns:minmax(0,1.55fr) minmax(21rem,.75fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(16rem\,0\.78fr\)\]{grid-template-columns:minmax(0,1fr) minmax(16rem,.78fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(18rem\,0\.92fr\)\]{grid-template-columns:minmax(0,1fr) minmax(18rem,.92fr)}.xl\:grid-rows-\[minmax\(0\,1fr\)_minmax\(0\,0\.82fr\)\]{grid-template-rows:minmax(0,1fr) minmax(0,.82fr)}.xl\:flex-row{flex-direction:row}.xl\:items-center{align-items:center}.xl\:items-stretch{align-items:stretch}.xl\:justify-between{justify-content:space-between}}@media (prefers-color-scheme:dark){.dark\:border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:bg-amber-500\/12{background-color:#f99c001f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/12{background-color:color-mix(in oklab, var(--color-amber-500) 12%, transparent)}}.dark\:bg-emerald-500\/12{background-color:#00bb7f1f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/12{background-color:color-mix(in oklab, var(--color-emerald-500) 12%, transparent)}}.dark\:bg-rose-500\/12{background-color:#ff23571f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-500\/12{background-color:color-mix(in oklab, var(--color-rose-500) 12%, transparent)}}.dark\:bg-slate-900{background-color:var(--color-slate-900)}.dark\:text-amber-300{color:var(--color-amber-300)}.dark\:text-emerald-300{color:var(--color-emerald-300)}.dark\:text-rose-300{color:var(--color-rose-300)}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--dashboard-bg:#f4f7fb;--dashboard-bg-accent:radial-gradient(circle at top left, #3b82f629, transparent 28%), radial-gradient(circle at top right, #0ea5e91f, transparent 24%);--dashboard-panel:#ffffffe0;--dashboard-panel-strong:#fffffff5;--dashboard-panel-muted:#f8fafcdb;--dashboard-border:#94a3b838;--dashboard-border-strong:#3b82f63d;--dashboard-text:#0f172a;--dashboard-text-muted:#475569;--dashboard-text-soft:#64748b;--dashboard-accent:#0f766e;--dashboard-accent-soft:#0f766e1f;--dashboard-shadow:0 16px 48px #0f172a1a}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=dark]{--dashboard-bg:#020617;--dashboard-bg-accent:radial-gradient(circle at top left, #06b6d438, transparent 28%), radial-gradient(circle at top right, #0ea5e924, transparent 24%);--dashboard-panel:#0f172ad1;--dashboard-panel-strong:#0f172af0;--dashboard-panel-muted:#0f172ab8;--dashboard-border:#94a3b824;--dashboard-border-strong:#22d3ee33;--dashboard-text:#e2e8f0;--dashboard-text-muted:#cbd5e1;--dashboard-text-soft:#94a3b8;--dashboard-accent:#67e8f9;--dashboard-accent-soft:#22d3ee1f;--dashboard-shadow:0 22px 60px #0206176b}body{min-height:100vh;color:var(--dashboard-text);background-color:var(--dashboard-bg);background-image:var(--dashboard-bg-accent);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:IBM Plex Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}#app{min-height:100vh}::selection{background:#14b8a647}}@layer components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-3{inset-block:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.left-3{left:calc(var(--spacing) * 3)}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.icon-\[mdi--card-bulleted-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 15h-2v-2h2zm6 0h-4v-2h4zM8 11H6V9h2zm10 0h-8V9h8zm2 9H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2M4 6v12h16V6z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--chart-box-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M9 17H7v-7h2zm4 0h-2V7h2zm4 0h-2v-4h2zm2 2H5V5h14v14.1M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--chart-tree\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 6h8v16h-8zM2 4h20V2H2zm0 4h10V6H2zm7 14h3V10H9zm-7 0h5V10H2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--checkbox-blank-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--circle-slice-8\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 5c3.87 0 7 3.13 7 7s-3.13 7-7 7s-7-3.13-7-7s3.13-7 7-7m0-3c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12S6.5 2 12 2m0 2c-4.42 0-8 3.58-8 8s3.58 8 8 8s8-3.58 8-8s-3.58-8-8-8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--clock-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 20a8 8 0 0 0 8-8a8 8 0 0 0-8-8a8 8 0 0 0-8 8a8 8 0 0 0 8 8m0-18a10 10 0 0 1 10 10a10 10 0 0 1-10 10C6.47 22 2 17.5 2 12A10 10 0 0 1 12 2m.5 5v5.25l4.5 2.67l-.75 1.23L11 13V7z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--console-line\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M13 19v-3h8v3zm-4.5-6L2.47 7h4.24l4.96 4.95c.58.59.58 1.55 0 2.12L6.74 19H2.5z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--content-copy\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--cube-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--database-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 3C7.58 3 4 4.79 4 7v10c0 2.21 3.59 4 8 4s8-1.79 8-4V7c0-2.21-3.58-4-8-4m6 14c0 .5-2.13 2-6 2s-6-1.5-6-2v-2.23c1.61.78 3.72 1.23 6 1.23s4.39-.45 6-1.23zm0-4.55c-1.3.95-3.58 1.55-6 1.55s-4.7-.6-6-1.55V9.64c1.47.83 3.61 1.36 6 1.36s4.53-.53 6-1.36zM12 9C8.13 9 6 7.5 6 7s2.13-2 6-2s6 1.5 6 2s-2.13 2-6 2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--database\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 3C7.58 3 4 4.79 4 7s3.58 4 8 4s8-1.79 8-4s-3.58-4-8-4M4 9v3c0 2.21 3.58 4 8 4s8-1.79 8-4V9c0 2.21-3.58 4-8 4s-8-1.79-8-4m0 5v3c0 2.21 3.58 4 8 4s8-1.79 8-4v-3c0 2.21-3.58 4-8 4s-8-1.79-8-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--export-variant\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 1L8 5h3v9h2V5h3m2 18H6a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h3v2H6v12h12V9h-3V7h3a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--file-document-multiple-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M16 0H8C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6zm4 18H8V2h7v5h5zM4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm6 6v2h8v-2zm0 4v2h5v-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--file-document-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2h7v5h5v11H6zm2 8v2h8v-2zm0 4v2h5v-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--file-star-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zm-8.5-2l.7-2.8L8 13.3l2.9-.2l1.1-2.7l1.1 2.6l2.9.2l-2.2 1.9l.7 2.8l-2.5-1.4z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--format-letter-spacing\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14.4 10.7h4.1l-2-5.4zM15.6 3h1.7L22 15h-1.9l-1-2.6h-5.4l-1 2.6h-1.9zm-4.4 0h1.9L8.4 15H6.7L2 3h1.9l3.6 9.7M19 22v-2H5v2l-3-3l3-3v2h14v-2l3 3z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--heart-pulse\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M7.5 4A5.5 5.5 0 0 0 2 9.5c0 .5.09 1 .22 1.5H6.3l1.27-3.37c.3-.8 1.48-.88 1.86 0L11.5 13l.59-1.42c.13-.33.48-.58.91-.58h8.78c.13-.5.22-1 .22-1.5A5.5 5.5 0 0 0 16.5 4c-1.86 0-3.5.93-4.5 2.34C11 4.93 9.36 4 7.5 4M3 12.5a1 1 0 0 0-1 1a1 1 0 0 0 1 1h2.44L11 20c1 .9 1 .9 2 0l5.56-5.5H21a1 1 0 0 0 1-1a1 1 0 0 0-1-1h-7.6l-.93 2.3c-.4 1.01-1.55.87-1.92.03L8.5 9.5l-.96 2.33c-.15.38-.49.67-.94.67z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--layers-triple-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m12 16.54l7.37-5.74L21 12.07l-9 7l-9-7l1.62-1.26zM12 14L3 7l9-7l9 7zm0-11.47L6.26 7L12 11.47L17.74 7zm0 18.94l7.37-5.74L21 17l-9 7l-9-7l1.62-1.26z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--menu\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--moon-waning-crescent\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 12a10 10 0 0 0 13 9.54a10 10 0 0 1 0-19.08A10 10 0 0 0 2 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--motion-play-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m10 16.5l6-4.5l-6-4.5M22 12c0-5.54-4.46-10-10-10c-1.17 0-2.3.19-3.38.56l.7 1.94c.85-.34 1.74-.53 2.68-.53c4.41 0 8.03 3.62 8.03 8.03s-3.62 8.03-8.03 8.03S3.97 16.41 3.97 12c0-.94.19-1.88.53-2.72l-1.94-.66C2.19 9.7 2 10.83 2 12c0 5.54 4.46 10 10 10s10-4.46 10-10M5.47 3.97c.85 0 1.53.71 1.53 1.5C7 6.32 6.32 7 5.47 7c-.79 0-1.5-.68-1.5-1.53c0-.79.71-1.5 1.5-1.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--package-variant-closed\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15l-1.89 1.07L16 8.61l1.96-1.11zM6.04 7.5L12 10.85l1.96-1.1l-5.88-3.4zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--package-variant\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 10.96a.985.985 0 0 1-.37-1.37L3.13 7c.11-.2.28-.34.47-.42l7.83-4.4c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.19.1.35.26.44.46l1.45 2.52c.28.48.11 1.09-.36 1.36l-1 .58v4.96c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-5.54c-.3.17-.68.18-1 0m10-6.81v6.7l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-3.22l-5 2.9c-.33.18-.7.17-1 .01v3.69zm-5.15-2.55l6.28-3.63l-.58-1.01l-6.28 3.63z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--palette-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 22A10 10 0 0 1 2 12A10 10 0 0 1 12 2c5.5 0 10 4 10 9a6 6 0 0 1-6 6h-1.8c-.3 0-.5.2-.5.5c0 .1.1.2.1.3c.4.5.6 1.1.6 1.7c.1 1.4-1 2.5-2.4 2.5m0-18a8 8 0 0 0-8 8a8 8 0 0 0 8 8c.3 0 .5-.2.5-.5c0-.2-.1-.3-.1-.4c-.4-.5-.6-1-.6-1.6c0-1.4 1.1-2.5 2.5-2.5H16a4 4 0 0 0 4-4c0-3.9-3.6-7-8-7m-5.5 6c.8 0 1.5.7 1.5 1.5S7.3 13 6.5 13S5 12.3 5 11.5S5.7 10 6.5 10m3-4c.8 0 1.5.7 1.5 1.5S10.3 9 9.5 9S8 8.3 8 7.5S8.7 6 9.5 6m5 0c.8 0 1.5.7 1.5 1.5S15.3 9 14.5 9S13 8.3 13 7.5S13.7 6 14.5 6m3 4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--rocket-launch-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m13.16 22.19l-1.66-3.84c1.6-.58 3.07-1.35 4.43-2.27l-2.78 6.11m-7.5-9.69l-3.84-1.65l6.11-2.78C7 9.43 6.23 10.91 5.65 12.5M20 4c-2.96-.22-5.2.83-7.55 3.31c-2.36 2.47-3.36 4.5-3.95 6.04l2.17 2.1c2.29-.87 4.33-2.18 6.03-3.89C20 8.27 20.17 5.4 20 4m-9 1.9c2.63-2.8 7-4.82 10.66-3.55c0 0 2.12 4.96-3.55 10.65c-2.2 2.17-4.58 3.5-6.72 4.34c-.24.09-1.15.39-2.13-.46l-2.13-2.13c-.56-.56-.74-1.38-.47-2.13C7.5 10.5 8.41 8.69 11 5.9M6.25 22H4.84l4.09-4.1c.3.21.63.36.97.45zM2 22v-1.41l4.77-4.78l1.43 1.42L3.41 22zm0-2.83v-1.42l3.65-3.65c.09.35.24.68.45.97zM16 6a2 2 0 0 1 2 2c0 1.11-.89 2-2 2a2 2 0 1 1 0-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--shape-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M11 13.5v8H3v-8zm-2 2H5v4h4zM12 2l5.5 9h-11zm0 3.86L10.08 9h3.84zM17.5 13c2.5 0 4.5 2 4.5 4.5S20 22 17.5 22S13 20 13 17.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 0 0-2.5 2.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5a2.5 2.5 0 0 0-2.5-2.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--shield-check-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m-2-4l-4-4l1.41-1.41L10 14.17l6.59-6.59L18 9'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--source-branch\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M13 14c-3.36 0-4.46 1.35-4.82 2.24C9.25 16.7 10 17.76 10 19a3 3 0 0 1-3 3a3 3 0 0 1-3-3c0-1.31.83-2.42 2-2.83V7.83A2.99 2.99 0 0 1 4 5a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 1.31-.83 2.42-2 2.83v5.29c.88-.65 2.16-1.12 4-1.12c2.67 0 3.56-1.34 3.85-2.23A3.01 3.01 0 0 1 14 7a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 1.34-.88 2.5-2.09 2.86C17.65 11.29 16.68 14 13 14m-6 4a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1M7 4a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1m10 2a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--theme-light-dark\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M7.5 2c-1.79 1.15-3 3.18-3 5.5s1.21 4.35 3.03 5.5C4.46 13 2 10.54 2 7.5A5.5 5.5 0 0 1 7.5 2m11.57 1.5l1.43 1.43L4.93 20.5L3.5 19.07zm-6.18 2.43L11.41 5L9.97 6l.42-1.7L9 3.24l1.75-.12l.58-1.65L12 3.1l1.73.03l-1.35 1.13zm-3.3 3.61l-1.16-.73l-1.12.78l.34-1.32l-1.09-.83l1.36-.09l.45-1.29l.51 1.27l1.36.03l-1.05.87zM19 13.5a5.5 5.5 0 0 1-5.5 5.5c-1.22 0-2.35-.4-3.26-1.07l7.69-7.69c.67.91 1.07 2.04 1.07 3.26m-4.4 6.58l2.77-1.15l-.24 3.35zm4.33-2.7l1.15-2.77l2.2 2.54zm1.15-4.96l-1.14-2.78l3.34.24zM9.63 18.93l2.77 1.15l-2.53 2.19z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--timeline-text-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 12c0 1.11-.89 2-2 2a2 2 0 1 1 2-2M4 2v6H2V2zM2 22v-6h2v6zM24 6v12c0 1.11-.89 2-2 2H10a2 2 0 0 1-2-2v-4l-2-2l2-2V6a2 2 0 0 1 2-2h12c1.11 0 2 .89 2 2m-2 0H10v4.83L8.83 12L10 13.17V18h12zM12 9h8v2h-8zm0 4h6v2h-6z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--timer-sand\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M6 2h12v6l-4 4l4 4v6H6v-6l4-4l-4-4zm10 14.5l-4-4l-4 4V20h8zm-4-5l4-4V4H8v3.5zM10 6h4v.75l-2 2l-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--vector-link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 1c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h11c1.11 0 2-.89 2-2v-3h-2v3H3V3h11v2h2V3c0-1.11-.89-2-2-2M9 7c-1.11 0-2 .89-2 2v3h2V9h11v11H9v-2H7v2c0 1.11.89 2 2 2h11c1.11 0 2-.89 2-2V9c0-1.11-.89-2-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--view-dashboard-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M19 5v2h-4V5zM9 5v6H5V5zm10 8v6h-4v-6zM9 17v2H5v-2zM21 3h-8v6h8zM11 3H3v10h8zm10 8h-8v10h8zm-10 4H3v6h8z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--view-grid-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 11h8V3H3m2 2h4v4H5m8 12h8v-8h-8m2 2h4v4h-4M3 21h8v-8H3m2 2h4v4H5m8-16v8h8V3m-2 6h-4V5h4Z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--view-quilt-outline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M4 5v13h17V5zm2 11V7h3v9zm5 0v-3.5h3V16zm8 0h-3v-3.5h3zm-8-5.5V7h8v3.5z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[mdi--white-balance-sunny\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m3.55 19.09l1.41 1.41l1.8-1.79l-1.42-1.42M12 6c-3.31 0-6 2.69-6 6s2.69 6 6 6s6-2.69 6-6c0-3.32-2.69-6-6-6m8 7h3v-2h-3m-2.76 7.71l1.8 1.79l1.41-1.41l-1.79-1.8M20.45 5l-1.41-1.4l-1.8 1.79l1.42 1.42M13 1h-2v3h2M6.76 5.39L4.96 3.6L3.55 5l1.79 1.81zM1 13h3v-2H1m12 9h-2v3h2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-\[calc\(100\%-3\.5rem\)\]{height:calc(100% - 3.5rem)}.h-\[min\(58vh\,36rem\)\]{height:min(58vh,36rem)}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-84{min-height:calc(var(--spacing) * 84)}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-14{width:calc(var(--spacing) * 14)}.w-\[min\(22rem\,calc\(100vw-1\.5rem\)\)\]{width:min(22rem,100vw - 1.5rem)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-400{max-width:calc(var(--spacing) * 400)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-full{min-width:100%}.shrink-0{flex-shrink:0}.-translate-x-6{--tw-translate-x:calc(var(--spacing) * -6);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\(--dashboard-border\)>:not(:last-child)){border-color:var(--dashboard-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--dashboard-accent\){border-color:var(--dashboard-accent)}.border-\(--dashboard-border\){border-color:var(--dashboard-border)}.border-\(--dashboard-border-strong\){border-color:var(--dashboard-border-strong)}.border-amber-200{border-color:var(--color-amber-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-rose-200{border-color:var(--color-rose-200)}.bg-\(--dashboard-accent-soft\){background-color:var(--dashboard-accent-soft)}.bg-\(--dashboard-panel\){background-color:var(--dashboard-panel)}.bg-\(--dashboard-panel-muted\){background-color:var(--dashboard-panel-muted)}.bg-\(--dashboard-panel-strong\){background-color:var(--dashboard-panel-strong)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-slate-950\/35{background-color:#02061859}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/35{background-color:color-mix(in oklab, var(--color-slate-950) 35%, transparent)}}.bg-transparent{background-color:#0000}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-\[0\.28em\]{--tw-tracking:.28em;letter-spacing:.28em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-\(--dashboard-accent\){color:var(--dashboard-accent)}.text-\(--dashboard-text\){color:var(--dashboard-text)}.text-\(--dashboard-text-muted\){color:var(--dashboard-text-muted)}.text-\(--dashboard-text-soft\){color:var(--dashboard-text-soft)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-700{color:var(--color-emerald-700)}.text-rose-700{color:var(--color-rose-700)}.text-slate-100{color:var(--color-slate-100)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-\(--dashboard-shadow\){--tw-shadow:var(--dashboard-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:text-\(--dashboard-accent\):is(:where(.group):hover *){color:var(--dashboard-accent)}.hover\:border-\(--dashboard-border-strong\):hover{border-color:var(--dashboard-border-strong)}.hover\:bg-\(--dashboard-panel\):hover{background-color:var(--dashboard-panel)}.hover\:text-\(--dashboard-text\):hover{color:var(--dashboard-text)}}.focus\:border-\(--dashboard-border-strong\):focus{border-color:var(--dashboard-border-strong)}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=48rem){.md\:hidden{display:none}.md\:inline-flex{display:inline-flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:justify-between{justify-content:space-between}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-\[1\.65rem\]{font-size:1.65rem}.md\:text-\[2rem\]{font-size:2rem}}@media (width>=64rem){.lg\:block{display:block}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[18\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:18.5rem minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,0\.92fr\)_minmax\(0\,1\.08fr\)\]{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)}.lg\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media (width>=80rem){.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:h-\[min\(58vh\,36rem\)\]{height:min(58vh,36rem)}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(20rem\,0\.9fr\)\]{grid-template-columns:minmax(0,1.1fr) minmax(20rem,.9fr)}.xl\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(20rem\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(20rem,.95fr)}.xl\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(21rem\,0\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(21rem,.85fr)}.xl\:grid-cols-\[minmax\(0\,1\.24fr\)_minmax\(0\,0\.76fr\)\]{grid-template-columns:minmax(0,1.24fr) minmax(0,.76fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(18rem\,0\.8fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(18rem,.8fr)}.xl\:grid-cols-\[minmax\(0\,1\.55fr\)_minmax\(21rem\,0\.75fr\)\]{grid-template-columns:minmax(0,1.55fr) minmax(21rem,.75fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(16rem\,0\.78fr\)\]{grid-template-columns:minmax(0,1fr) minmax(16rem,.78fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(18rem\,0\.92fr\)\]{grid-template-columns:minmax(0,1fr) minmax(18rem,.92fr)}.xl\:grid-rows-\[minmax\(0\,1fr\)_minmax\(0\,0\.82fr\)\]{grid-template-rows:minmax(0,1fr) minmax(0,.82fr)}.xl\:flex-row{flex-direction:row}.xl\:items-center{align-items:center}.xl\:items-stretch{align-items:stretch}.xl\:justify-between{justify-content:space-between}}@media (prefers-color-scheme:dark){.dark\:border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.dark\:border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-500\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.dark\:border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.dark\:border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.dark\:bg-amber-500\/12{background-color:#f99c001f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-500\/12{background-color:color-mix(in oklab, var(--color-amber-500) 12%, transparent)}}.dark\:bg-emerald-500\/12{background-color:#00bb7f1f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-500\/12{background-color:color-mix(in oklab, var(--color-emerald-500) 12%, transparent)}}.dark\:bg-rose-500\/12{background-color:#ff23571f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-rose-500\/12{background-color:color-mix(in oklab, var(--color-rose-500) 12%, transparent)}}.dark\:bg-slate-900{background-color:var(--color-slate-900)}.dark\:text-amber-300{color:var(--color-amber-300)}.dark\:text-emerald-300{color:var(--color-emerald-300)}.dark\:text-rose-300{color:var(--color-rose-300)}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
@@ -1 +1 @@
1
- import{A as e,C as t,D as n,E as r,F as i,I as a,M as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,c as m,d as h,f as g,g as _,h as v,i as y,j as b,l as x,m as S,n as ee,p as C,r as te,s as w,u as T,w as E,y as D,z as O}from"./vue.js";import{n as ne,t as k}from"./vendor.js";var A=f({__name:`DashboardIcon`,props:{name:{}},setup(e){let t=e,n={"theme-system":`icon-[mdi--theme-light-dark]`,"theme-light":`icon-[mdi--white-balance-sunny]`,"theme-dark":`icon-[mdi--moon-waning-crescent]`,"nav-menu":`icon-[mdi--menu]`,"nav-home":`icon-[mdi--view-grid-outline]`,"nav-analyze":`icon-[mdi--chart-box-outline]`,"nav-activity":`icon-[mdi--timeline-text-outline]`,"nav-tokens":`icon-[mdi--palette-outline]`,"tab-overview":`icon-[mdi--view-dashboard-outline]`,"tab-packages":`icon-[mdi--package-variant-closed]`,"tab-modules":`icon-[mdi--vector-link]`,"status-dark":`icon-[mdi--circle-slice-8]`,"status-light":`icon-[mdi--checkbox-blank-circle]`,"status-live":`icon-[mdi--motion-play-outline]`,"metric-packages":`icon-[mdi--package-variant]`,"metric-subpackages":`icon-[mdi--layers-triple-outline]`,"metric-chunks":`icon-[mdi--chart-tree]`,"metric-assets":`icon-[mdi--file-document-multiple-outline]`,"metric-size-outline":`icon-[mdi--database-outline]`,"metric-modules":`icon-[mdi--cube-outline]`,"metric-duplicates":`icon-[mdi--vector-link]`,"metric-sources":`icon-[mdi--source-branch]`,"metric-copy":`icon-[mdi--content-copy]`,"metric-time":`icon-[mdi--clock-outline]`,"metric-entries":`icon-[mdi--export-variant]`,"metric-size":`icon-[mdi--database]`,treemap:`icon-[mdi--chart-box-outline]`,"top-files":`icon-[mdi--file-star-outline]`,subpackages:`icon-[mdi--layers-triple-outline]`,"duplicate-modules":`icon-[mdi--vector-link]`,"module-sources":`icon-[mdi--source-branch]`,"file-samples":`icon-[mdi--file-document-outline]`,"hero-workspace":`icon-[mdi--view-quilt-outline]`,"hero-commands":`icon-[mdi--console-line]`,"hero-system":`icon-[mdi--shape-outline]`,"metric-ready":`icon-[mdi--rocket-launch-outline]`,"metric-health":`icon-[mdi--heart-pulse]`,"metric-latency":`icon-[mdi--timer-sand]`,"metric-quality":`icon-[mdi--shield-check-outline]`,"token-color":`icon-[mdi--palette-outline]`,"token-surface":`icon-[mdi--card-bulleted-outline]`,"token-type":`icon-[mdi--format-letter-spacing]`},r=T(()=>n[t.name]??`icon-[mdi--file-document-multiple-outline]`);return(e,t)=>(E(),S(`span`,{class:a([`h-full w-full`,r.value])},null,2))}}),re={key:0,class:`mr-1.5 h-4 w-4 text-[color:var(--dashboard-accent)]`},j=f({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e){return(t,n)=>(E(),S(`span`,{class:a([`inline-flex items-center rounded-full border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-2.5 py-1 text-xs font-medium text-[color:var(--dashboard-text-soft)]`,e.uppercase?`tracking-[0.18em] uppercase`:void 0])},[e.iconName?(E(),S(`span`,re,[_(A,{name:e.iconName},null,8,[`name`])])):C(``,!0),v(` `+O(e.label),1)],2))}}),ie={class:`flex flex-col gap-4 rounded-[24px] border border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-panel-strong)] px-4 py-4 shadow-[var(--dashboard-shadow)] md:px-5`},ae={class:`flex items-start justify-between gap-3`},oe={class:`flex items-start gap-3`},se={class:`h-5 w-5`},ce={class:`mt-1 text-2xl font-semibold tracking-tight md:text-[2rem]`},le={class:`mt-2 max-w-3xl text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},ue={class:`hidden items-center gap-2 rounded-full border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-3 py-2 text-xs font-medium text-[color:var(--dashboard-text-soft)] md:inline-flex`,for:`dashboard-global-theme`},de={class:`h-4 w-4 text-[color:var(--dashboard-accent)]`},fe=[`value`],pe=[`value`],me={class:`flex flex-wrap items-center gap-2 md:hidden`},he={class:`inline-flex items-center gap-2 rounded-full border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-3 py-2 text-xs font-medium text-[color:var(--dashboard-text-soft)]`,for:`dashboard-mobile-theme`},ge={class:`h-4 w-4 text-[color:var(--dashboard-accent)]`},_e=[`value`],ve=[`value`],ye=f({__name:`AppShellHeader`,props:{title:{},description:{},themeOptions:{},themePreference:{}},emits:[`menu`,`setTheme`],setup(e,{emit:t}){let n=e,i=t,a=T(()=>n.themeOptions.find(e=>e.value===n.themePreference)?.iconName??`theme-system`);function o(e){i(`setTheme`,e.target.value)}return(t,n)=>(E(),S(`header`,ie,[h(`div`,ae,[h(`div`,oe,[h(`button`,{class:`inline-flex h-11 w-11 items-center justify-center rounded-2xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] text-[color:var(--dashboard-text)] md:hidden`,type:`button`,onClick:n[0]||=e=>i(`menu`)},[h(`span`,se,[_(A,{name:`nav-menu`})])]),h(`div`,null,[n[1]||=h(`p`,{class:`text-[11px] uppercase tracking-[0.28em] text-[color:var(--dashboard-accent)]`},` weapp-vite dashboard `,-1),h(`h1`,ce,O(e.title),1),h(`p`,le,O(e.description),1)])]),h(`label`,ue,[h(`span`,de,[_(A,{name:a.value},null,8,[`name`])]),h(`select`,{id:`dashboard-global-theme`,class:`min-w-[8rem] bg-transparent text-[color:var(--dashboard-text)] outline-none`,value:e.themePreference,onChange:o},[(E(!0),S(x,null,r(e.themeOptions,e=>(E(),S(`option`,{key:e.value,value:e.value},O(e.label),9,pe))),128))],40,fe)])]),h(`div`,me,[h(`label`,he,[h(`span`,ge,[_(A,{name:a.value},null,8,[`name`])]),h(`select`,{id:`dashboard-mobile-theme`,class:`min-w-[8rem] bg-transparent text-[color:var(--dashboard-text)] outline-none`,value:e.themePreference,onChange:o},[(E(!0),S(x,null,r(e.themeOptions,e=>(E(),S(`option`,{key:e.value,value:e.value},O(e.label),9,ve))),128))],40,_e)]),_(j,{"icon-name":`status-live`,label:`shell ready`,uppercase:``})])]))}});function M(e,t){if(e){if(Array.isArray(e)){for(let n of e)M(n,t);return}if(typeof e==`object`){for(let[n,r]of Object.entries(e))r&&t.push(n);return}t.push(String(e))}}function N(...e){let t=[];for(let n of e)M(n,t);return ne(t.join(` `))}var be=k({base:`rounded-[20px] border shadow-[var(--dashboard-shadow)]`,variants:{tone:{default:`border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)]`,strong:`border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-panel-strong)]`,muted:`border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)]`},padding:{none:``,sm:`p-3`,md:`p-4`,header:`px-4 py-4 md:px-5`}},defaultVariants:{tone:`default`,padding:`md`}}),xe=k({base:`flex items-center justify-center rounded-xl bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-accent)]`,variants:{size:{sm:`h-8 w-8`,md:`h-9 w-9`,lg:`h-10 w-10`}},defaultVariants:{size:`md`}}),Se=k({base:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)]`,variants:{padding:{sm:`px-4 py-3`,md:`p-4`},interactive:{true:`transition hover:border-[color:var(--dashboard-border-strong)] hover:bg-[color:var(--dashboard-panel)]`,false:``}},defaultVariants:{padding:`md`,interactive:!1}}),Ce=k({base:`inline-flex items-center gap-2 rounded-full border transition`,variants:{kind:{nav:`px-3.5 py-1.5 text-sm`,theme:`px-3 py-1.5 text-xs font-medium`,badge:`px-2.5 py-1 text-[11px] uppercase tracking-[0.18em]`},active:{true:`border-[color:var(--dashboard-accent)] bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-text)]`,false:`border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] text-[color:var(--dashboard-text-soft)] hover:border-[color:var(--dashboard-border-strong)] hover:text-[color:var(--dashboard-text)]`}},defaultVariants:{kind:`nav`,active:!1}}),we=k({base:`rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,variants:{tone:{neutral:`border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] text-[color:var(--dashboard-text-soft)]`,info:`border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-accent)]`,success:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`,warning:`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`,error:`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`}},defaultVariants:{tone:`neutral`}}),Te=k({base:`rounded-[20px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)] px-4 py-3 text-[11px] uppercase tracking-[0.24em] text-[color:var(--dashboard-text-soft)] shadow-[var(--dashboard-shadow)]`}),Ee={key:0,class:`flex items-start justify-between gap-4`},De={class:`flex items-start gap-3`},Oe={class:`h-5 w-5`},ke={key:0,class:`text-[11px] uppercase tracking-[0.24em] text-[color:var(--dashboard-accent)]`},Ae={key:1,class:`text-lg font-semibold tracking-tight`},je={key:2,class:`mt-1 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},P=f({__name:`AppSurfaceCard`,props:{title:{default:void 0},description:{default:void 0},eyebrow:{default:void 0},iconName:{default:void 0},tone:{default:`default`},padding:{default:`md`},contentClass:{default:``}},setup(t){let r=t,o=e(),s=!!(r.title||r.description||o.header);return(e,r)=>(E(),S(`section`,{class:a(i(N)(i(be)({tone:t.tone,padding:t.padding}),t.contentClass))},[i(s)?(E(),S(`header`,Ee,[h(`div`,De,[t.iconName?(E(),S(`span`,{key:0,class:a([i(xe)({size:`md`}),`shrink-0`])},[h(`span`,Oe,[_(A,{name:t.iconName},null,8,[`name`])])],2)):C(``,!0),h(`div`,null,[t.eyebrow?(E(),S(`p`,ke,O(t.eyebrow),1)):C(``,!0),t.title?(E(),S(`h2`,Ae,O(t.title),1)):C(``,!0),t.description?(E(),S(`p`,je,O(t.description),1)):C(``,!0)])]),n(e.$slots,`header`)])):C(``,!0),h(`div`,{class:a(i(s)?`mt-4`:``)},[n(e.$slots,`default`)],2)],2))}}),F=`weapp-vite-dashboard-theme`;function Me(){if(typeof window>`u`)return`system`;let e=window.localStorage.getItem(F);return e===`light`||e===`dark`||e===`system`?e:`system`}function Ne(e,t){return e===`light`||e===`dark`?e:t?.matches?`dark`:`light`}function I(){let e=s(Me()),n=typeof window<`u`?window.matchMedia(`(prefers-color-scheme: dark)`):null,r=T(()=>Ne(e.value,n)),i=e=>{typeof document>`u`||(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)},a=e=>{typeof window>`u`||window.localStorage.setItem(F,e)},o=()=>{i(r.value)};return b(e,e=>{a(e),i(r.value)},{immediate:!0}),t(()=>{n?.addEventListener(`change`,o),i(r.value)}),u(()=>{n?.removeEventListener(`change`,o)}),{themePreference:e,resolvedTheme:r,setThemePreference(t){e.value=t}}}var L=Symbol(`dashboard-theme`);function Pe(e){d(L,e)}function Fe(){return D(L,null)||I()}var R=[{to:`/`,label:`工作台`,caption:`应用入口与状态总览`,iconName:`nav-home`},{to:`/analyze`,label:`分析视图`,caption:`保留现有 analyze 面板`,iconName:`nav-analyze`},{to:`/activity`,label:`活动流`,caption:`诊断、事件与后续动作`,iconName:`nav-activity`},{to:`/tokens`,label:`设计令牌`,caption:`主题、表面与组件预览`,iconName:`nav-tokens`}],Ie=[{title:`Workspace Readiness`,description:`把 dashboard 从单页分析器抬升成完整 UI 外壳,便于后续不断挂接调试能力。`,iconName:`hero-workspace`,eyebrow:`Structure`},{title:`Command Surface`,description:`为 CLI、MCP、构建分析和任务编排预留固定入口,不再把所有操作塞在一个页面里。`,iconName:`hero-commands`,eyebrow:`Action`},{title:`System Language`,description:`通过统一表面、徽标、区块标题和主题令牌,保证后续新增页面不会继续发散。`,iconName:`hero-system`,eyebrow:`Design`}],Le=[{label:`启动开发`,command:`pnpm --filter @weapp-vite/dashboard dev`,note:`本地预览完整 UI 壳子`},{label:`生产构建`,command:`pnpm --filter @weapp-vite/dashboard build`,note:`验证静态产物可发布`},{label:`主包联调`,command:`weapp-vite build --ui`,note:`从 CLI 注入真实分析数据`}],Re=["先保留 `analyze` 现有数据契约,不在第一轮改动里破坏 CLI 注入。",`新增页面全部基于假数据和通用组件,后面按模块逐步替换成真实数据源。`,`主题切换提升到应用级,避免每个页面各自维护深浅色状态。`],ze=[{time:`09:12`,title:`analyze payload synced`,summary:`CLI 已把最新构建结果注入 dashboard,全局状态已完成一次同步。`,tone:`live`},{time:`09:26`,title:`workspace shell extended`,summary:`新增工作台、活动流、设计令牌三个页面骨架,后续能力可按路由继续扩展。`,tone:`default`},{time:`10:03`,title:`theme system unified`,summary:`主题偏好收敛到应用根部,分析页和未来面板共享同一套明暗模式。`,tone:`default`}],Be=[{label:`CLI 注入链路`,detail:"保留 `window.__WEAPP_VITE_ANALYZE_RESULT__` 兼容层。",status:`兼容`},{label:`路由拓展性`,detail:`新增页面采用文件路由,后续新增面板不需要修改主路由表。`,status:`可扩展`},{label:`组件复用`,detail:`通用卡片与区块标题已独立,避免页面继续拷贝结构。`,status:`已落地`},{label:`视觉令牌`,detail:`颜色、表面、排版预览集中在 tokens 页面统一检查。`,status:`可验证`}],Ve=[{id:`evt-command-build-ui`,kind:`command`,level:`success`,title:`build --ui completed`,detail:`示例事件: dashboard 已经准备好承接来自 CLI 的真实命令生命周期事件。`,timestamp:`10:18:12`,source:`cli`,durationMs:842,tags:[`build`,`ui`]},{id:`evt-hmr-shell`,kind:`hmr`,level:`info`,title:`workspace shell hot updated`,detail:`应用壳子页面已完成一次热更新,后续可以继续细分到模块级刷新记录。`,timestamp:`10:19:44`,source:`vite-hmr`,tags:[`hmr`,`shell`]},{id:`evt-diagnostic-payload`,kind:`diagnostic`,level:`warning`,title:`analyze payload pending`,detail:`示例事件: 当前页面支持在没有 payload 时进入空态,而不是直接崩溃。`,timestamp:`10:20:07`,source:`dashboard`,tags:[`diagnostic`]}],He=[{title:`Accent`,iconName:`token-color`,tokens:[{name:`--dashboard-accent`,sample:`var(--dashboard-accent)`},{name:`--dashboard-accent-soft`,sample:`var(--dashboard-accent-soft)`},{name:`--dashboard-border-strong`,sample:`var(--dashboard-border-strong)`}]},{title:`Surfaces`,iconName:`token-surface`,tokens:[{name:`--dashboard-panel`,sample:`var(--dashboard-panel)`},{name:`--dashboard-panel-strong`,sample:`var(--dashboard-panel-strong)`},{name:`--dashboard-panel-muted`,sample:`var(--dashboard-panel-muted)`}]},{title:`Typography`,iconName:`token-type`,tokens:[{name:`--dashboard-text`,sample:`var(--dashboard-text)`},{name:`--dashboard-text-muted`,sample:`var(--dashboard-text-muted)`},{name:`--dashboard-text-soft`,sample:`var(--dashboard-text-soft)`}]}];function z(e){if(!e||Number.isNaN(e))return`—`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=e,i=0;for(;r>=t&&i<n.length-1;)r/=t,i++;return`${r.toFixed(r>=100||i===0?0:2)} ${n[i]}`}function Ue(e){switch(e){case`main`:return`主包`;case`subPackage`:return`分包`;case`independent`:return`独立分包`;case`virtual`:return`虚拟包`;default:return e}}function We(e){return e===`independent`?`独立构建`:`主构建`}function Ge(e){switch(e){case`src`:return`业务源码`;case`workspace`:return`工作区包`;case`plugin`:return`插件`;case`node_modules`:return`依赖`;default:return e}}function B(e){switch(e){case`command`:return`命令`;case`build`:return`构建`;case`diagnostic`:return`诊断`;case`hmr`:return`HMR`;case`system`:return`系统`;default:return e}}function V(e){switch(e){case`info`:return`信息`;case`success`:return`成功`;case`warning`:return`警告`;case`error`:return`错误`;default:return e}}function H(e){return e??`dashboard`}function Ke(e){return e}function qe(e){return{label:V(e.level),tone:Ke(e.level)}}function Je(e){return e>0?`error`:`info`}function Ye(e){return{label:e.latestTimestamp?`${e.count} 条`:`错误 ${e.errorCount}`,tone:Je(e.errorCount)}}function U(e){return typeof e!=`number`||Number.isNaN(e)||e<0?`未记录`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?1:2)} s`:`${e} ms`}function Xe(e){let t=[B(e.kind),H(e.source),e.timestamp];return typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)&&e.durationMs>=0&&t.push(U(e.durationMs)),t.join(` · `)}var Ze=[`command`,`build`,`diagnostic`,`hmr`,`system`],Qe=[`info`,`success`,`warning`,`error`];function $e(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function et(e){return typeof e==`string`&&Ze.includes(e)?e:`system`}function tt(e){return typeof e==`string`&&Qe.includes(e)?e:`info`}function W(e,t){return typeof e==`string`&&e.trim()?e:t}function nt(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function rt(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`&&e.trim()).map(e=>String(e));return t.length>0?t:void 0}function it(e,t){return{id:W(e.id,`dashboard-runtime-event-${t}`),kind:et(e.kind),level:tt(e.level),title:W(e.title,`untitled event`),detail:W(e.detail,`no event detail`),timestamp:W(e.timestamp,`—`),source:W(e.source,`dashboard`),durationMs:nt(e.durationMs),tags:rt(e.tags)}}function at(e){return{count:1,errorCount:+(e.level===`error`),latestTimestamp:e.timestamp,durationTotal:e.durationMs??0,timedCount:+(typeof e.durationMs==`number`)}}function ot(e,t){return{count:e.count+1,errorCount:e.errorCount+ +(t.level===`error`),latestTimestamp:e.latestTimestamp,durationTotal:e.durationTotal+(t.durationMs??0),timedCount:e.timedCount+ +(typeof t.durationMs==`number`)}}function st(e,t){return{source:e,count:t.count,errorCount:t.errorCount,latestTimestamp:t.latestTimestamp,averageDurationMs:t.timedCount>0?Math.round(t.durationTotal/t.timedCount):void 0}}function ct(e){return{...e,averageDuration:U(e.averageDurationMs)}}function lt(e,t){return $e(e)?it(e,t):null}function G(e){let t=(Array.isArray(e)?e:[e]).map((e,t)=>lt(e,t)).filter(e=>!!e),n=new Map;for(let e of t)n.set(e.id,e);return[...n.values()]}function K(e){let t=new Map;for(let n of e){let e=n.source??`dashboard`,r=t.get(e);if(!r){t.set(e,at(n));continue}t.set(e,ot(r,n))}return Array.from(t,([e,t])=>st(e,t)).sort((e,t)=>t.count-e.count||e.source.localeCompare(t.source,`zh-CN`))}function ut(e){return e.map(e=>ct(e))}var q=Symbol(`dashboard-workspace`);function J(){return new Date().toLocaleTimeString(`zh-CN`,{hour12:!1})}function Y(e,t){return{label:e,value:t}}function X(e){return e}function Z(e){return e}function dt(e){return e}function Q(e){return e}function ft(){let e=l(window.__WEAPP_VITE_ANALYZE_RESULT__??null),n=l(window.__WEAPP_VITE_DASHBOARD_EVENTS__?.length?G(window.__WEAPP_VITE_DASHBOARD_EVENTS__):G(Ve)),r=l(0),i=l(e.value?J():`—`),a=T(()=>{let t=e.value;if(!t)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0};let n=t.packages.flatMap(e=>e.files);return{packageCount:t.packages.length,moduleCount:t.modules.length,duplicateCount:t.modules.filter(e=>e.packages.length>1).length,totalBytes:n.reduce((e,t)=>e+(t.size??0),0)}}),o=T(()=>e.value?`payload ready`:`awaiting payload`),s=T(()=>e.value?`${a.value.packageCount} 个包 · ${a.value.moduleCount} 个模块`:`尚未接收到 CLI analyze 数据`),c=T(()=>n.value[0]??null),d=T(()=>{let e=n.value.filter(e=>e.level===`error`).length,t=n.value.filter(e=>e.level===`warning`).length,r=n.value.filter(e=>e.kind===`command`).length,i=n.value.filter(e=>typeof e.durationMs==`number`),a=i.length>0?Math.round(i.reduce((e,t)=>e+(t.durationMs??0),0)/i.length):void 0;return[Y(`总事件数`,String(n.value.length)),Y(`命令事件`,String(r)),Y(`已记录耗时`,String(i.length)),Y(`平均耗时`,U(a)),Y(`警告事件`,String(t)),Y(`错误事件`,String(e))]}),f=T(()=>K(n.value)),p=T(()=>[X({label:`页面骨架`,value:`4 个`,iconName:`metric-ready`}),X({label:`连接状态`,value:e.value?`已接入 payload`:`等待注入`,iconName:e.value?`status-live`:`metric-health`}),X({label:`数据同步`,value:`${r.value} 次`,iconName:`metric-latency`}),X({label:`产物体积`,value:e.value?z(a.value.totalBytes):`未载入`,iconName:`metric-quality`}),X({label:`运行事件`,value:`${n.value.length} 条`,iconName:c.value?.level===`error`?`metric-health`:`metric-time`})]),m=T(()=>e.value?[Z({label:`重新分析当前工程`,command:`weapp-vite analyze`,note:`最近同步于 ${i.value},当前可读取 ${a.value.packageCount} 个包。`}),Z({label:`进入构建联调`,command:`weapp-vite build --ui`,note:`当前产物总体积 ${z(a.value.totalBytes)},适合继续核对 chunk 结构。`}),Z({label:`观察开发态更新`,command:`weapp-vite dev --ui`,note:`已记录 ${r.value} 次 payload 同步,后续可继续接入更细粒度事件。`})]:Le),h=T(()=>{let t=[...ze];for(let e of n.value.slice(0,4))t.unshift(dt({time:e.timestamp,title:e.title,summary:e.detail,tone:e.level===`error`||e.level===`warning`?`default`:`live`}));return e.value&&t.unshift(dt({time:i.value,title:`workspace payload received`,summary:`已收到一份真实 analyze 结果,包含 ${a.value.packageCount} 个包和 ${a.value.moduleCount} 个模块。`,tone:`live`})),t}),g=T(()=>{let t=[...Be],n=c.value;return n&&t.unshift(Q({label:`最新运行事件`,detail:`${n.title} · ${n.detail}`,status:n.level})),e.value?[Q({label:`实时分析状态`,detail:`已接入 payload,当前记录 ${a.value.duplicateCount} 个跨包复用模块。`,status:`在线`}),Q({label:`产物规模`,detail:`总产物体积 ${z(a.value.totalBytes)},可继续进入分析页查看 treemap 与最大文件。`,status:`可分析`}),...t]:[Q({label:`CLI 注入链路`,detail:`尚未接收到 analyze payload,当前页面以空态方式工作。`,status:`待接入`}),...t]}),_=e=>{let t=G(e);if(t.length===0)return;let r=[...t,...n.value],i=new Map;for(let e of r)i.set(e.id,e);n.value=[...i.values()].slice(0,24),window.__WEAPP_VITE_DASHBOARD_EVENTS__=[...n.value]},v=()=>{window.__WEAPP_VITE_ANALYZE_RESULT__&&(e.value=window.__WEAPP_VITE_ANALYZE_RESULT__,r.value+=1,i.value=J())},y=e=>{let t=e instanceof CustomEvent?e.detail:null;_(Array.isArray(t)?t:t?[t]:null)};return t(()=>{window.addEventListener(`weapp-analyze:update`,v),window.addEventListener(`weapp-dashboard:event`,y),v(),_(window.__WEAPP_VITE_DASHBOARD_EVENTS__)}),u(()=>{window.removeEventListener(`weapp-analyze:update`,v),window.removeEventListener(`weapp-dashboard:event`,y)}),{resultRef:e,updateCount:r,lastUpdatedAt:i,statusLabel:o,statusSummary:s,commandItems:m,activityItems:h,diagnostics:g,signals:p,runtimeEvents:n,latestRuntimeEvent:c,eventSummary:d,runtimeSourceSummary:f}}function pt(e){d(q,e)}function mt(){let e=D(q,null);if(!e)throw Error(`[dashboard] workspace context is not available`);return e}var ht=[{value:`system`,label:`跟随系统`,iconName:`theme-system`},{value:`light`,label:`亮色`,iconName:`theme-light`},{value:`dark`,label:`暗色`,iconName:`theme-dark`}],gt=[{key:`overview`,label:`总览`,iconName:`tab-overview`},{key:`packages`,label:`包与产物`,iconName:`tab-packages`},{key:`modules`,label:`模块与复用`,iconName:`tab-modules`}],_t={class:`min-h-screen px-3 py-3 text-[color:var(--dashboard-text)] md:px-4 md:py-4 lg:px-5`},vt={class:`mx-auto grid max-w-[1600px] gap-3 lg:grid-cols-[18.5rem_minmax(0,1fr)]`},yt={class:`hidden lg:block`},bt={class:`sticky top-4 space-y-3`},xt={class:`grid gap-2`},St={class:`flex items-start gap-3`},Ct={class:`h-5 w-5`},wt={class:`min-w-0`},Tt={class:`font-medium text-[color:var(--dashboard-text)]`},Et={class:`mt-1 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},Dt={class:`min-w-0 space-y-3`},Ot={key:0,class:`fixed inset-y-3 left-3 z-50 w-[min(22rem,calc(100vw-1.5rem))] lg:hidden`},kt={class:`grid gap-2`},At={class:`flex items-start gap-3`},jt={class:`h-5 w-5`},Mt={class:`min-w-0`},Nt={class:`font-medium text-[color:var(--dashboard-text)]`},Pt={class:`mt-1 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},Ft=f({__name:`App`,setup(e){let t=p(),n=s(!1),{themePreference:l,resolvedTheme:u,setThemePreference:d}=I(),f=ft(),m=T(()=>!!f.resultRef.value);Pe({themePreference:l,resolvedTheme:u,setThemePreference:d}),pt(f);let v=T(()=>t.path.startsWith(`/analyze`)?{title:`Analyze Workspace`,description:`保留现有构建分析能力,并把包、模块与分包视图收敛进可持续扩展的应用框架。`}:t.path.startsWith(`/activity`)?{title:`Activity Stream`,description:`用统一的事件、诊断和下一步动作承载未来的 dev/build/ui 运行轨迹。`}:t.path.startsWith(`/tokens`)?{title:`Design Tokens`,description:`集中验证 dashboard 的色彩、表面和排版语义,避免后续页面各自漂移。`}:{title:`Workspace Console`,description:`这是 dashboard 的新入口页,用来承载基础壳子、命令面板和后续不断增强的调试模块。`});b(()=>t.fullPath,()=>{n.value=!1});function y(e,t){return t===`/`?e===`/`:e===t||e.startsWith(`${t}/`)}return(e,s)=>{let p=c(`RouterLink`);return E(),S(`div`,_t,[h(`div`,vt,[h(`aside`,yt,[h(`div`,bt,[_(P,{eyebrow:`Shell`,title:`weapp-vite dashboard`,description:`先搭好稳定壳子,再把 analyze、诊断、日志、MCP 等能力持续挂接进来。`,"icon-name":`hero-system`,tone:`strong`},{default:o(()=>[h(`nav`,xt,[(E(!0),S(x,null,r(i(R),e=>(E(),g(p,{key:e.to,to:e.to,class:a(i(N)(`group rounded-[18px] border px-3 py-3 transition`,y(i(t).path,e.to)?`border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-panel-strong)] shadow-[var(--dashboard-shadow)]`:`border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] hover:border-[color:var(--dashboard-border-strong)] hover:bg-[color:var(--dashboard-panel)]`))},{default:o(()=>[h(`div`,St,[h(`span`,{class:a(i(N)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,y(i(t).path,e.to)?`bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-accent)]`:`bg-[color:var(--dashboard-panel)] text-[color:var(--dashboard-text-soft)] group-hover:text-[color:var(--dashboard-accent)]`))},[h(`span`,Ct,[_(A,{name:e.iconName},null,8,[`name`])])],2),h(`div`,wt,[h(`p`,Tt,O(e.label),1),h(`p`,Et,O(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1}),_(P,{eyebrow:`Theme`,title:i(f).statusLabel.value,description:i(f).statusSummary.value,"icon-name":m.value?`status-live`:i(u)===`dark`?`theme-dark`:`theme-light`,padding:`sm`},null,8,[`title`,`description`,`icon-name`])])]),h(`div`,Dt,[_(ye,{title:v.value.title,description:v.value.description,"theme-options":i(ht),"theme-preference":i(l),onMenu:s[0]||=e=>n.value=!0,onSetTheme:i(d)},null,8,[`title`,`description`,`theme-options`,`theme-preference`,`onSetTheme`]),_(i(ee))])]),_(w,{"enter-active-class":`transition duration-200 ease-out`,"enter-from-class":`opacity-0`,"enter-to-class":`opacity-100`,"leave-active-class":`transition duration-150 ease-in`,"leave-from-class":`opacity-100`,"leave-to-class":`opacity-0`},{default:o(()=>[n.value?(E(),S(`div`,{key:0,class:`fixed inset-0 z-40 bg-slate-950/35 backdrop-blur-sm lg:hidden`,onClick:s[1]||=e=>n.value=!1})):C(``,!0)]),_:1}),_(w,{"enter-active-class":`transition duration-200 ease-out`,"enter-from-class":`-translate-x-6 opacity-0`,"enter-to-class":`translate-x-0 opacity-100`,"leave-active-class":`transition duration-150 ease-in`,"leave-from-class":`translate-x-0 opacity-100`,"leave-to-class":`-translate-x-6 opacity-0`},{default:o(()=>[n.value?(E(),S(`aside`,Ot,[_(P,{eyebrow:`Navigation`,title:`Workspace Modules`,description:`路由已经是第一层扩展边界,后续增强优先新增页面,不再继续堆叠单页。`,"icon-name":`nav-menu`,tone:`strong`,"content-class":`h-full`},{default:o(()=>[h(`nav`,kt,[(E(!0),S(x,null,r(i(R),e=>(E(),g(p,{key:e.to,to:e.to,class:a(i(N)(`group rounded-[18px] border px-3 py-3 transition`,y(i(t).path,e.to)?`border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-panel-strong)] shadow-[var(--dashboard-shadow)]`:`border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] hover:border-[color:var(--dashboard-border-strong)] hover:bg-[color:var(--dashboard-panel)]`)),onClick:s[2]||=e=>n.value=!1},{default:o(()=>[h(`div`,At,[h(`span`,{class:a(i(N)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,y(i(t).path,e.to)?`bg-[color:var(--dashboard-accent-soft)] text-[color:var(--dashboard-accent)]`:`bg-[color:var(--dashboard-panel)] text-[color:var(--dashboard-text-soft)] group-hover:text-[color:var(--dashboard-accent)]`))},[h(`span`,jt,[_(A,{name:e.iconName},null,8,[`name`])])],2),h(`div`,Mt,[h(`p`,Nt,O(e.label),1),h(`p`,Pt,O(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1})])):C(``,!0)]),_:1})])}}}),It=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),Lt=function(e,t){return new URL(e,t).href},Rt={},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Lt(t,n),t in Rt)return;Rt[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:It,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},zt=te({history:y(),routes:[{path:`/`,name:`/`,component:()=>$(()=>import(`./pages.js`),[],import.meta.url)},{path:`/activity`,name:`/activity`,component:()=>$(()=>import(`./activity.js`),[],import.meta.url)},{path:`/analyze`,name:`/analyze`,component:()=>$(()=>import(`./analyze.js`),[],import.meta.url)},{path:`/tokens`,name:`/tokens`,component:()=>$(()=>import(`./tokens.js`),[],import.meta.url)}]});function Bt(){let e=m(Ft);e.config.errorHandler=(e,t,n)=>{},e.use(zt),e.mount(`#app`)}try{Bt()}catch{}export{A,xe as C,Te as D,we as E,be as O,P as S,Ce as T,Re as _,K as a,R as b,We as c,Ue as d,B as f,Ge as g,H as h,ut as i,j as k,z as l,Xe as m,ht as n,qe as o,V as p,mt as r,Ye as s,gt as t,U as u,He as v,Se as w,Fe as x,Ie as y};
1
+ import{A as e,C as t,D as n,E as r,F as i,I as a,M as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,c as m,d as h,f as g,g as _,h as v,i as y,j as b,l as x,m as S,n as ee,p as C,r as te,s as w,u as T,w as E,y as D,z as O}from"./vue.js";import{n as ne,t as k}from"./vendor.js";var A=f({__name:`DashboardIcon`,props:{name:{}},setup(e){let t=e,n={"theme-system":`icon-[mdi--theme-light-dark]`,"theme-light":`icon-[mdi--white-balance-sunny]`,"theme-dark":`icon-[mdi--moon-waning-crescent]`,"nav-menu":`icon-[mdi--menu]`,"nav-home":`icon-[mdi--view-grid-outline]`,"nav-analyze":`icon-[mdi--chart-box-outline]`,"nav-activity":`icon-[mdi--timeline-text-outline]`,"nav-tokens":`icon-[mdi--palette-outline]`,"tab-overview":`icon-[mdi--view-dashboard-outline]`,"tab-packages":`icon-[mdi--package-variant-closed]`,"tab-modules":`icon-[mdi--vector-link]`,"status-dark":`icon-[mdi--circle-slice-8]`,"status-light":`icon-[mdi--checkbox-blank-circle]`,"status-live":`icon-[mdi--motion-play-outline]`,"metric-packages":`icon-[mdi--package-variant]`,"metric-subpackages":`icon-[mdi--layers-triple-outline]`,"metric-chunks":`icon-[mdi--chart-tree]`,"metric-assets":`icon-[mdi--file-document-multiple-outline]`,"metric-size-outline":`icon-[mdi--database-outline]`,"metric-modules":`icon-[mdi--cube-outline]`,"metric-duplicates":`icon-[mdi--vector-link]`,"metric-sources":`icon-[mdi--source-branch]`,"metric-copy":`icon-[mdi--content-copy]`,"metric-time":`icon-[mdi--clock-outline]`,"metric-entries":`icon-[mdi--export-variant]`,"metric-size":`icon-[mdi--database]`,treemap:`icon-[mdi--chart-box-outline]`,"top-files":`icon-[mdi--file-star-outline]`,subpackages:`icon-[mdi--layers-triple-outline]`,"duplicate-modules":`icon-[mdi--vector-link]`,"module-sources":`icon-[mdi--source-branch]`,"file-samples":`icon-[mdi--file-document-outline]`,"hero-workspace":`icon-[mdi--view-quilt-outline]`,"hero-commands":`icon-[mdi--console-line]`,"hero-system":`icon-[mdi--shape-outline]`,"metric-ready":`icon-[mdi--rocket-launch-outline]`,"metric-health":`icon-[mdi--heart-pulse]`,"metric-latency":`icon-[mdi--timer-sand]`,"metric-quality":`icon-[mdi--shield-check-outline]`,"token-color":`icon-[mdi--palette-outline]`,"token-surface":`icon-[mdi--card-bulleted-outline]`,"token-type":`icon-[mdi--format-letter-spacing]`},r=T(()=>n[t.name]??`icon-[mdi--file-document-multiple-outline]`);return(e,t)=>(E(),S(`span`,{class:a([`h-full w-full`,r.value])},null,2))}}),re={key:0,class:`mr-1.5 h-4 w-4 text-(--dashboard-accent)`},j=f({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e){return(t,n)=>(E(),S(`span`,{class:a([`inline-flex items-center rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-2.5 py-1 text-xs font-medium text-(--dashboard-text-soft)`,e.uppercase?`tracking-[0.18em] uppercase`:void 0])},[e.iconName?(E(),S(`span`,re,[_(A,{name:e.iconName},null,8,[`name`])])):C(``,!0),v(` `+O(e.label),1)],2))}}),ie={class:`flex flex-col gap-4 rounded-6 border border-(--dashboard-border-strong) bg-(--dashboard-panel-strong) px-4 py-4 shadow-(--dashboard-shadow) md:px-5`},ae={class:`flex items-start justify-between gap-3`},oe={class:`flex items-start gap-3`},se={class:`h-5 w-5`},ce={class:`mt-1 text-2xl font-semibold tracking-tight md:text-[2rem]`},le={class:`mt-2 max-w-3xl text-sm leading-6 text-(--dashboard-text-muted)`},ue={class:`hidden items-center gap-2 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2 text-xs font-medium text-(--dashboard-text-soft) md:inline-flex`,for:`dashboard-global-theme`},de={class:`h-4 w-4 text-(--dashboard-accent)`},fe=[`value`],pe=[`value`],me={class:`flex flex-wrap items-center gap-2 md:hidden`},he={class:`inline-flex items-center gap-2 rounded-full border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2 text-xs font-medium text-(--dashboard-text-soft)`,for:`dashboard-mobile-theme`},ge={class:`h-4 w-4 text-(--dashboard-accent)`},_e=[`value`],ve=[`value`],ye=f({__name:`AppShellHeader`,props:{title:{},description:{},themeOptions:{},themePreference:{}},emits:[`menu`,`setTheme`],setup(e,{emit:t}){let n=e,i=t,a=T(()=>n.themeOptions.find(e=>e.value===n.themePreference)?.iconName??`theme-system`);function o(e){i(`setTheme`,e.target.value)}return(t,n)=>(E(),S(`header`,ie,[h(`div`,ae,[h(`div`,oe,[h(`button`,{class:`inline-flex h-11 w-11 items-center justify-center rounded-2xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text) md:hidden`,type:`button`,onClick:n[0]||=e=>i(`menu`)},[h(`span`,se,[_(A,{name:`nav-menu`})])]),h(`div`,null,[n[1]||=h(`p`,{class:`text-[11px] uppercase tracking-[0.28em] text-(--dashboard-accent)`},` weapp-vite dashboard `,-1),h(`h1`,ce,O(e.title),1),h(`p`,le,O(e.description),1)])]),h(`label`,ue,[h(`span`,de,[_(A,{name:a.value},null,8,[`name`])]),h(`select`,{id:`dashboard-global-theme`,class:`min-w-32 bg-transparent text-(--dashboard-text) outline-none`,value:e.themePreference,onChange:o},[(E(!0),S(x,null,r(e.themeOptions,e=>(E(),S(`option`,{key:e.value,value:e.value},O(e.label),9,pe))),128))],40,fe)])]),h(`div`,me,[h(`label`,he,[h(`span`,ge,[_(A,{name:a.value},null,8,[`name`])]),h(`select`,{id:`dashboard-mobile-theme`,class:`min-w-32 bg-transparent text-(--dashboard-text) outline-none`,value:e.themePreference,onChange:o},[(E(!0),S(x,null,r(e.themeOptions,e=>(E(),S(`option`,{key:e.value,value:e.value},O(e.label),9,ve))),128))],40,_e)]),_(j,{"icon-name":`status-live`,label:`shell ready`,uppercase:``})])]))}});function M(e,t){if(e){if(Array.isArray(e)){for(let n of e)M(n,t);return}if(typeof e==`object`){for(let[n,r]of Object.entries(e))r&&t.push(n);return}t.push(String(e))}}function N(...e){let t=[];for(let n of e)M(n,t);return ne(t.join(` `))}var be=k({base:`rounded-5 border shadow-(--dashboard-shadow)`,variants:{tone:{default:`border-(--dashboard-border) bg-(--dashboard-panel)`,strong:`border-(--dashboard-border-strong) bg-(--dashboard-panel-strong)`,muted:`border-(--dashboard-border) bg-(--dashboard-panel-muted)`},padding:{none:``,sm:`p-3`,md:`p-4`,header:`px-4 py-4 md:px-5`}},defaultVariants:{tone:`default`,padding:`md`}}),xe=k({base:`flex items-center justify-center rounded-xl bg-(--dashboard-accent-soft) text-(--dashboard-accent)`,variants:{size:{sm:`h-8 w-8`,md:`h-9 w-9`,lg:`h-10 w-10`}},defaultVariants:{size:`md`}}),Se=k({base:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted)`,variants:{padding:{sm:`px-4 py-3`,md:`p-4`},interactive:{true:`transition hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`,false:``}},defaultVariants:{padding:`md`,interactive:!1}}),Ce=k({base:`inline-flex items-center gap-2 rounded-full border transition`,variants:{kind:{nav:`px-3.5 py-1.5 text-sm`,theme:`px-3 py-1.5 text-xs font-medium`,badge:`px-2.5 py-1 text-[11px] uppercase tracking-[0.18em]`},active:{true:`border-(--dashboard-accent) bg-(--dashboard-accent-soft) text-(--dashboard-text)`,false:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft) hover:border-(--dashboard-border-strong) hover:text-(--dashboard-text)`}},defaultVariants:{kind:`nav`,active:!1}}),we=k({base:`rounded-full border px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.16em]`,variants:{tone:{neutral:`border-(--dashboard-border) bg-(--dashboard-panel-muted) text-(--dashboard-text-soft)`,info:`border-(--dashboard-border-strong) bg-(--dashboard-accent-soft) text-(--dashboard-accent)`,success:`border-emerald-200 bg-emerald-100 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/12 dark:text-emerald-300`,warning:`border-amber-200 bg-amber-100 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/12 dark:text-amber-300`,error:`border-rose-200 bg-rose-100 text-rose-700 dark:border-rose-500/30 dark:bg-rose-500/12 dark:text-rose-300`}},defaultVariants:{tone:`neutral`}}),Te=k({base:`rounded-5 border border-(--dashboard-border) bg-(--dashboard-panel) px-4 py-3 text-[11px] uppercase tracking-[0.24em] text-(--dashboard-text-soft) shadow-(--dashboard-shadow)`}),Ee={key:0,class:`flex items-start justify-between gap-4`},De={class:`flex items-start gap-3`},Oe={class:`h-5 w-5`},ke={key:0,class:`text-[11px] uppercase tracking-[0.24em] text-(--dashboard-accent)`},Ae={key:1,class:`text-lg font-semibold tracking-tight`},je={key:2,class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},P=f({__name:`AppSurfaceCard`,props:{title:{default:void 0},description:{default:void 0},eyebrow:{default:void 0},iconName:{default:void 0},tone:{default:`default`},padding:{default:`md`},contentClass:{default:``}},setup(t){let r=t,o=e(),s=!!(r.title||r.description||o.header);return(e,r)=>(E(),S(`section`,{class:a(i(N)(i(be)({tone:t.tone,padding:t.padding}),t.contentClass))},[i(s)?(E(),S(`header`,Ee,[h(`div`,De,[t.iconName?(E(),S(`span`,{key:0,class:a([i(xe)({size:`md`}),`shrink-0`])},[h(`span`,Oe,[_(A,{name:t.iconName},null,8,[`name`])])],2)):C(``,!0),h(`div`,null,[t.eyebrow?(E(),S(`p`,ke,O(t.eyebrow),1)):C(``,!0),t.title?(E(),S(`h2`,Ae,O(t.title),1)):C(``,!0),t.description?(E(),S(`p`,je,O(t.description),1)):C(``,!0)])]),n(e.$slots,`header`)])):C(``,!0),h(`div`,{class:a(i(s)?`mt-4`:``)},[n(e.$slots,`default`)],2)],2))}}),F=`weapp-vite-dashboard-theme`;function Me(){if(typeof window>`u`)return`system`;let e=window.localStorage.getItem(F);return e===`light`||e===`dark`||e===`system`?e:`system`}function Ne(e,t){return e===`light`||e===`dark`?e:t?.matches?`dark`:`light`}function I(){let e=s(Me()),n=typeof window<`u`?window.matchMedia(`(prefers-color-scheme: dark)`):null,r=T(()=>Ne(e.value,n)),i=e=>{typeof document>`u`||(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)},a=e=>{typeof window>`u`||window.localStorage.setItem(F,e)},o=()=>{i(r.value)};return b(e,e=>{a(e),i(r.value)},{immediate:!0}),t(()=>{n?.addEventListener(`change`,o),i(r.value)}),u(()=>{n?.removeEventListener(`change`,o)}),{themePreference:e,resolvedTheme:r,setThemePreference(t){e.value=t}}}var L=Symbol(`dashboard-theme`);function Pe(e){d(L,e)}function Fe(){return D(L,null)||I()}var R=[{to:`/`,label:`工作台`,caption:`应用入口与状态总览`,iconName:`nav-home`},{to:`/analyze`,label:`分析视图`,caption:`保留现有 analyze 面板`,iconName:`nav-analyze`},{to:`/activity`,label:`活动流`,caption:`诊断、事件与后续动作`,iconName:`nav-activity`},{to:`/tokens`,label:`设计令牌`,caption:`主题、表面与组件预览`,iconName:`nav-tokens`}],Ie=[{title:`Workspace Readiness`,description:`把 dashboard 从单页分析器抬升成完整 UI 外壳,便于后续不断挂接调试能力。`,iconName:`hero-workspace`,eyebrow:`Structure`},{title:`Command Surface`,description:`为 CLI、MCP、构建分析和任务编排预留固定入口,不再把所有操作塞在一个页面里。`,iconName:`hero-commands`,eyebrow:`Action`},{title:`System Language`,description:`通过统一表面、徽标、区块标题和主题令牌,保证后续新增页面不会继续发散。`,iconName:`hero-system`,eyebrow:`Design`}],Le=[{label:`启动开发`,command:`pnpm --filter @weapp-vite/dashboard dev`,note:`本地预览完整 UI 壳子`},{label:`生产构建`,command:`pnpm --filter @weapp-vite/dashboard build`,note:`验证静态产物可发布`},{label:`主包联调`,command:`weapp-vite build --ui`,note:`从 CLI 注入真实分析数据`}],Re=["先保留 `analyze` 现有数据契约,不在第一轮改动里破坏 CLI 注入。",`新增页面全部基于假数据和通用组件,后面按模块逐步替换成真实数据源。`,`主题切换提升到应用级,避免每个页面各自维护深浅色状态。`],ze=[{time:`09:12`,title:`analyze payload synced`,summary:`CLI 已把最新构建结果注入 dashboard,全局状态已完成一次同步。`,tone:`live`},{time:`09:26`,title:`workspace shell extended`,summary:`新增工作台、活动流、设计令牌三个页面骨架,后续能力可按路由继续扩展。`,tone:`default`},{time:`10:03`,title:`theme system unified`,summary:`主题偏好收敛到应用根部,分析页和未来面板共享同一套明暗模式。`,tone:`default`}],Be=[{label:`CLI 注入链路`,detail:"保留 `window.__WEAPP_VITE_ANALYZE_RESULT__` 兼容层。",status:`兼容`},{label:`路由拓展性`,detail:`新增页面采用文件路由,后续新增面板不需要修改主路由表。`,status:`可扩展`},{label:`组件复用`,detail:`通用卡片与区块标题已独立,避免页面继续拷贝结构。`,status:`已落地`},{label:`视觉令牌`,detail:`颜色、表面、排版预览集中在 tokens 页面统一检查。`,status:`可验证`}],Ve=[{id:`evt-command-build-ui`,kind:`command`,level:`success`,title:`build --ui completed`,detail:`示例事件: dashboard 已经准备好承接来自 CLI 的真实命令生命周期事件。`,timestamp:`10:18:12`,source:`cli`,durationMs:842,tags:[`build`,`ui`]},{id:`evt-hmr-shell`,kind:`hmr`,level:`info`,title:`workspace shell hot updated`,detail:`应用壳子页面已完成一次热更新,后续可以继续细分到模块级刷新记录。`,timestamp:`10:19:44`,source:`vite-hmr`,tags:[`hmr`,`shell`]},{id:`evt-diagnostic-payload`,kind:`diagnostic`,level:`warning`,title:`analyze payload pending`,detail:`示例事件: 当前页面支持在没有 payload 时进入空态,而不是直接崩溃。`,timestamp:`10:20:07`,source:`dashboard`,tags:[`diagnostic`]}],He=[{title:`Accent`,iconName:`token-color`,tokens:[{name:`--dashboard-accent`,sample:`var(--dashboard-accent)`},{name:`--dashboard-accent-soft`,sample:`var(--dashboard-accent-soft)`},{name:`--dashboard-border-strong`,sample:`var(--dashboard-border-strong)`}]},{title:`Surfaces`,iconName:`token-surface`,tokens:[{name:`--dashboard-panel`,sample:`var(--dashboard-panel)`},{name:`--dashboard-panel-strong`,sample:`var(--dashboard-panel-strong)`},{name:`--dashboard-panel-muted`,sample:`var(--dashboard-panel-muted)`}]},{title:`Typography`,iconName:`token-type`,tokens:[{name:`--dashboard-text`,sample:`var(--dashboard-text)`},{name:`--dashboard-text-muted`,sample:`var(--dashboard-text-muted)`},{name:`--dashboard-text-soft`,sample:`var(--dashboard-text-soft)`}]}];function z(e){if(!e||Number.isNaN(e))return`—`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=e,i=0;for(;r>=t&&i<n.length-1;)r/=t,i++;return`${r.toFixed(r>=100||i===0?0:2)} ${n[i]}`}function Ue(e){switch(e){case`main`:return`主包`;case`subPackage`:return`分包`;case`independent`:return`独立分包`;case`virtual`:return`虚拟包`;default:return e}}function We(e){return e===`independent`?`独立构建`:`主构建`}function Ge(e){switch(e){case`src`:return`业务源码`;case`workspace`:return`工作区包`;case`plugin`:return`插件`;case`node_modules`:return`依赖`;default:return e}}function B(e){switch(e){case`command`:return`命令`;case`build`:return`构建`;case`diagnostic`:return`诊断`;case`hmr`:return`HMR`;case`system`:return`系统`;default:return e}}function V(e){switch(e){case`info`:return`信息`;case`success`:return`成功`;case`warning`:return`警告`;case`error`:return`错误`;default:return e}}function H(e){return e??`dashboard`}function Ke(e){return e}function qe(e){return{label:V(e.level),tone:Ke(e.level)}}function Je(e){return e>0?`error`:`info`}function Ye(e){return{label:e.latestTimestamp?`${e.count} 条`:`错误 ${e.errorCount}`,tone:Je(e.errorCount)}}function U(e){return typeof e!=`number`||Number.isNaN(e)||e<0?`未记录`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?1:2)} s`:`${e} ms`}function Xe(e){let t=[B(e.kind),H(e.source),e.timestamp];return typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)&&e.durationMs>=0&&t.push(U(e.durationMs)),t.join(` · `)}var Ze=[`command`,`build`,`diagnostic`,`hmr`,`system`],Qe=[`info`,`success`,`warning`,`error`];function $e(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function et(e){return typeof e==`string`&&Ze.includes(e)?e:`system`}function tt(e){return typeof e==`string`&&Qe.includes(e)?e:`info`}function W(e,t){return typeof e==`string`&&e.trim()?e:t}function nt(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function rt(e){if(!Array.isArray(e))return;let t=e.filter(e=>typeof e==`string`&&e.trim()).map(e=>String(e));return t.length>0?t:void 0}function it(e,t){return{id:W(e.id,`dashboard-runtime-event-${t}`),kind:et(e.kind),level:tt(e.level),title:W(e.title,`untitled event`),detail:W(e.detail,`no event detail`),timestamp:W(e.timestamp,`—`),source:W(e.source,`dashboard`),durationMs:nt(e.durationMs),tags:rt(e.tags)}}function at(e){return{count:1,errorCount:+(e.level===`error`),latestTimestamp:e.timestamp,durationTotal:e.durationMs??0,timedCount:+(typeof e.durationMs==`number`)}}function ot(e,t){return{count:e.count+1,errorCount:e.errorCount+ +(t.level===`error`),latestTimestamp:e.latestTimestamp,durationTotal:e.durationTotal+(t.durationMs??0),timedCount:e.timedCount+ +(typeof t.durationMs==`number`)}}function st(e,t){return{source:e,count:t.count,errorCount:t.errorCount,latestTimestamp:t.latestTimestamp,averageDurationMs:t.timedCount>0?Math.round(t.durationTotal/t.timedCount):void 0}}function ct(e){return{...e,averageDuration:U(e.averageDurationMs)}}function lt(e,t){return $e(e)?it(e,t):null}function G(e){let t=(Array.isArray(e)?e:[e]).map((e,t)=>lt(e,t)).filter(e=>!!e),n=new Map;for(let e of t)n.set(e.id,e);return[...n.values()]}function K(e){let t=new Map;for(let n of e){let e=n.source??`dashboard`,r=t.get(e);if(!r){t.set(e,at(n));continue}t.set(e,ot(r,n))}return Array.from(t,([e,t])=>st(e,t)).sort((e,t)=>t.count-e.count||e.source.localeCompare(t.source,`zh-CN`))}function ut(e){return e.map(e=>ct(e))}var q=Symbol(`dashboard-workspace`);function J(){return new Date().toLocaleTimeString(`zh-CN`,{hour12:!1})}function Y(e,t){return{label:e,value:t}}function X(e){return e}function Z(e){return e}function dt(e){return e}function Q(e){return e}function ft(){let e=l(window.__WEAPP_VITE_ANALYZE_RESULT__??null),n=l(window.__WEAPP_VITE_DASHBOARD_EVENTS__?.length?G(window.__WEAPP_VITE_DASHBOARD_EVENTS__):G(Ve)),r=l(0),i=l(e.value?J():`—`),a=T(()=>{let t=e.value;if(!t)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0};let n=t.packages.flatMap(e=>e.files);return{packageCount:t.packages.length,moduleCount:t.modules.length,duplicateCount:t.modules.filter(e=>e.packages.length>1).length,totalBytes:n.reduce((e,t)=>e+(t.size??0),0)}}),o=T(()=>e.value?`payload ready`:`awaiting payload`),s=T(()=>e.value?`${a.value.packageCount} 个包 · ${a.value.moduleCount} 个模块`:`尚未接收到 CLI analyze 数据`),c=T(()=>n.value[0]??null),d=T(()=>{let e=n.value.filter(e=>e.level===`error`).length,t=n.value.filter(e=>e.level===`warning`).length,r=n.value.filter(e=>e.kind===`command`).length,i=n.value.filter(e=>typeof e.durationMs==`number`),a=i.length>0?Math.round(i.reduce((e,t)=>e+(t.durationMs??0),0)/i.length):void 0;return[Y(`总事件数`,String(n.value.length)),Y(`命令事件`,String(r)),Y(`已记录耗时`,String(i.length)),Y(`平均耗时`,U(a)),Y(`警告事件`,String(t)),Y(`错误事件`,String(e))]}),f=T(()=>K(n.value)),p=T(()=>[X({label:`页面骨架`,value:`4 个`,iconName:`metric-ready`}),X({label:`连接状态`,value:e.value?`已接入 payload`:`等待注入`,iconName:e.value?`status-live`:`metric-health`}),X({label:`数据同步`,value:`${r.value} 次`,iconName:`metric-latency`}),X({label:`产物体积`,value:e.value?z(a.value.totalBytes):`未载入`,iconName:`metric-quality`}),X({label:`运行事件`,value:`${n.value.length} 条`,iconName:c.value?.level===`error`?`metric-health`:`metric-time`})]),m=T(()=>e.value?[Z({label:`重新分析当前工程`,command:`weapp-vite analyze`,note:`最近同步于 ${i.value},当前可读取 ${a.value.packageCount} 个包。`}),Z({label:`进入构建联调`,command:`weapp-vite build --ui`,note:`当前产物总体积 ${z(a.value.totalBytes)},适合继续核对 chunk 结构。`}),Z({label:`观察开发态更新`,command:`weapp-vite dev --ui`,note:`已记录 ${r.value} 次 payload 同步,后续可继续接入更细粒度事件。`})]:Le),h=T(()=>{let t=[...ze];for(let e of n.value.slice(0,4))t.unshift(dt({time:e.timestamp,title:e.title,summary:e.detail,tone:e.level===`error`||e.level===`warning`?`default`:`live`}));return e.value&&t.unshift(dt({time:i.value,title:`workspace payload received`,summary:`已收到一份真实 analyze 结果,包含 ${a.value.packageCount} 个包和 ${a.value.moduleCount} 个模块。`,tone:`live`})),t}),g=T(()=>{let t=[...Be],n=c.value;return n&&t.unshift(Q({label:`最新运行事件`,detail:`${n.title} · ${n.detail}`,status:n.level})),e.value?[Q({label:`实时分析状态`,detail:`已接入 payload,当前记录 ${a.value.duplicateCount} 个跨包复用模块。`,status:`在线`}),Q({label:`产物规模`,detail:`总产物体积 ${z(a.value.totalBytes)},可继续进入分析页查看 treemap 与最大文件。`,status:`可分析`}),...t]:[Q({label:`CLI 注入链路`,detail:`尚未接收到 analyze payload,当前页面以空态方式工作。`,status:`待接入`}),...t]}),_=e=>{let t=G(e);if(t.length===0)return;let r=[...t,...n.value],i=new Map;for(let e of r)i.set(e.id,e);n.value=[...i.values()].slice(0,24),window.__WEAPP_VITE_DASHBOARD_EVENTS__=[...n.value]},v=()=>{window.__WEAPP_VITE_ANALYZE_RESULT__&&(e.value=window.__WEAPP_VITE_ANALYZE_RESULT__,r.value+=1,i.value=J())},y=e=>{let t=e instanceof CustomEvent?e.detail:null;_(Array.isArray(t)?t:t?[t]:null)};return t(()=>{window.addEventListener(`weapp-analyze:update`,v),window.addEventListener(`weapp-dashboard:event`,y),v(),_(window.__WEAPP_VITE_DASHBOARD_EVENTS__)}),u(()=>{window.removeEventListener(`weapp-analyze:update`,v),window.removeEventListener(`weapp-dashboard:event`,y)}),{resultRef:e,updateCount:r,lastUpdatedAt:i,statusLabel:o,statusSummary:s,commandItems:m,activityItems:h,diagnostics:g,signals:p,runtimeEvents:n,latestRuntimeEvent:c,eventSummary:d,runtimeSourceSummary:f}}function pt(e){d(q,e)}function mt(){let e=D(q,null);if(!e)throw Error(`[dashboard] workspace context is not available`);return e}var ht=[{value:`system`,label:`跟随系统`,iconName:`theme-system`},{value:`light`,label:`亮色`,iconName:`theme-light`},{value:`dark`,label:`暗色`,iconName:`theme-dark`}],gt=[{key:`overview`,label:`总览`,iconName:`tab-overview`},{key:`packages`,label:`包与产物`,iconName:`tab-packages`},{key:`modules`,label:`模块与复用`,iconName:`tab-modules`}],_t={class:`min-h-screen px-3 py-3 text-(--dashboard-text) md:px-4 md:py-4 lg:px-5`},vt={class:`mx-auto grid max-w-400 gap-3 lg:grid-cols-[18.5rem_minmax(0,1fr)]`},yt={class:`hidden lg:block`},bt={class:`sticky top-4 space-y-3`},xt={class:`grid gap-2`},St={class:`flex items-start gap-3`},Ct={class:`h-5 w-5`},wt={class:`min-w-0`},Tt={class:`font-medium text-(--dashboard-text)`},Et={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Dt={class:`min-w-0 space-y-3`},Ot={key:0,class:`fixed inset-y-3 left-3 z-50 w-[min(22rem,calc(100vw-1.5rem))] lg:hidden`},kt={class:`grid gap-2`},At={class:`flex items-start gap-3`},jt={class:`h-5 w-5`},Mt={class:`min-w-0`},Nt={class:`font-medium text-(--dashboard-text)`},Pt={class:`mt-1 text-xs leading-5 text-(--dashboard-text-soft)`},Ft=f({__name:`App`,setup(e){let t=p(),n=s(!1),{themePreference:l,resolvedTheme:u,setThemePreference:d}=I(),f=ft(),m=T(()=>!!f.resultRef.value);Pe({themePreference:l,resolvedTheme:u,setThemePreference:d}),pt(f);let v=T(()=>t.path.startsWith(`/analyze`)?{title:`Analyze Workspace`,description:`保留现有构建分析能力,并把包、模块与分包视图收敛进可持续扩展的应用框架。`}:t.path.startsWith(`/activity`)?{title:`Activity Stream`,description:`用统一的事件、诊断和下一步动作承载未来的 dev/build/ui 运行轨迹。`}:t.path.startsWith(`/tokens`)?{title:`Design Tokens`,description:`集中验证 dashboard 的色彩、表面和排版语义,避免后续页面各自漂移。`}:{title:`Workspace Console`,description:`这是 dashboard 的新入口页,用来承载基础壳子、命令面板和后续不断增强的调试模块。`});b(()=>t.fullPath,()=>{n.value=!1});function y(e,t){return t===`/`?e===`/`:e===t||e.startsWith(`${t}/`)}return(e,s)=>{let p=c(`RouterLink`);return E(),S(`div`,_t,[h(`div`,vt,[h(`aside`,yt,[h(`div`,bt,[_(P,{eyebrow:`Shell`,title:`weapp-vite dashboard`,description:`先搭好稳定壳子,再把 analyze、诊断、日志、MCP 等能力持续挂接进来。`,"icon-name":`hero-system`,tone:`strong`},{default:o(()=>[h(`nav`,xt,[(E(!0),S(x,null,r(i(R),e=>(E(),g(p,{key:e.to,to:e.to,class:a(i(N)(`group rounded-4.5 border px-3 py-3 transition`,y(i(t).path,e.to)?`border-(--dashboard-border-strong) bg-(--dashboard-panel-strong) shadow-(--dashboard-shadow)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`))},{default:o(()=>[h(`div`,St,[h(`span`,{class:a(i(N)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,y(i(t).path,e.to)?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:`bg-(--dashboard-panel) text-(--dashboard-text-soft) group-hover:text-(--dashboard-accent)`))},[h(`span`,Ct,[_(A,{name:e.iconName},null,8,[`name`])])],2),h(`div`,wt,[h(`p`,Tt,O(e.label),1),h(`p`,Et,O(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1}),_(P,{eyebrow:`Theme`,title:i(f).statusLabel.value,description:i(f).statusSummary.value,"icon-name":m.value?`status-live`:i(u)===`dark`?`theme-dark`:`theme-light`,padding:`sm`},null,8,[`title`,`description`,`icon-name`])])]),h(`div`,Dt,[_(ye,{title:v.value.title,description:v.value.description,"theme-options":i(ht),"theme-preference":i(l),onMenu:s[0]||=e=>n.value=!0,onSetTheme:i(d)},null,8,[`title`,`description`,`theme-options`,`theme-preference`,`onSetTheme`]),_(i(ee))])]),_(w,{"enter-active-class":`transition duration-200 ease-out`,"enter-from-class":`opacity-0`,"enter-to-class":`opacity-100`,"leave-active-class":`transition duration-150 ease-in`,"leave-from-class":`opacity-100`,"leave-to-class":`opacity-0`},{default:o(()=>[n.value?(E(),S(`div`,{key:0,class:`fixed inset-0 z-40 bg-slate-950/35 backdrop-blur-sm lg:hidden`,onClick:s[1]||=e=>n.value=!1})):C(``,!0)]),_:1}),_(w,{"enter-active-class":`transition duration-200 ease-out`,"enter-from-class":`-translate-x-6 opacity-0`,"enter-to-class":`translate-x-0 opacity-100`,"leave-active-class":`transition duration-150 ease-in`,"leave-from-class":`translate-x-0 opacity-100`,"leave-to-class":`-translate-x-6 opacity-0`},{default:o(()=>[n.value?(E(),S(`aside`,Ot,[_(P,{eyebrow:`Navigation`,title:`Workspace Modules`,description:`路由已经是第一层扩展边界,后续增强优先新增页面,不再继续堆叠单页。`,"icon-name":`nav-menu`,tone:`strong`,"content-class":`h-full`},{default:o(()=>[h(`nav`,kt,[(E(!0),S(x,null,r(i(R),e=>(E(),g(p,{key:e.to,to:e.to,class:a(i(N)(`group rounded-4.5 border px-3 py-3 transition`,y(i(t).path,e.to)?`border-(--dashboard-border-strong) bg-(--dashboard-panel-strong) shadow-(--dashboard-shadow)`:`border-(--dashboard-border) bg-(--dashboard-panel-muted) hover:border-(--dashboard-border-strong) hover:bg-(--dashboard-panel)`)),onClick:s[2]||=e=>n.value=!1},{default:o(()=>[h(`div`,At,[h(`span`,{class:a(i(N)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,y(i(t).path,e.to)?`bg-(--dashboard-accent-soft) text-(--dashboard-accent)`:`bg-(--dashboard-panel) text-(--dashboard-text-soft) group-hover:text-(--dashboard-accent)`))},[h(`span`,jt,[_(A,{name:e.iconName},null,8,[`name`])])],2),h(`div`,Mt,[h(`p`,Nt,O(e.label),1),h(`p`,Pt,O(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1})])):C(``,!0)]),_:1})])}}}),It=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),Lt=function(e,t){return new URL(e,t).href},Rt={},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Lt(t,n),t in Rt)return;Rt[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:It,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},zt=te({history:y(),routes:[{path:`/`,name:`/`,component:()=>$(()=>import(`./pages.js`),[],import.meta.url)},{path:`/activity`,name:`/activity`,component:()=>$(()=>import(`./activity.js`),[],import.meta.url)},{path:`/analyze`,name:`/analyze`,component:()=>$(()=>import(`./analyze.js`),[],import.meta.url)},{path:`/tokens`,name:`/tokens`,component:()=>$(()=>import(`./tokens.js`),[],import.meta.url)}]});function Bt(){let e=m(Ft);e.config.errorHandler=(e,t,n)=>{},e.use(zt),e.mount(`#app`)}try{Bt()}catch{}export{A,xe as C,Te as D,we as E,be as O,P as S,Ce as T,Re as _,K as a,R as b,We as c,Ue as d,B as f,Ge as g,H as h,ut as i,j as k,z as l,Xe as m,ht as n,qe as o,V as p,mt as r,Ye as s,gt as t,U as u,He as v,Se as w,Fe as x,Ie as y};
@@ -1 +1 @@
1
- import{E as e,F as t,M as n,_ as r,b as i,d as a,f as o,g as s,h as c,l,m as u,t as d,w as f,z as p}from"./vue.js";import{A as m,S as h,_ as g,b as _,r as v,y}from"./index.js";import{t as b}from"./AppInsetPanel.js";import{t as x}from"./AppSectionHeading.js";import{t as S}from"./AppIconFeatureCard.js";var C={class:`grid gap-3`},w={class:`grid gap-3 xl:grid-cols-[minmax(0,1.35fr)_minmax(18rem,0.8fr)]`},T={class:`grid gap-3 md:grid-cols-3`},E={class:`grid gap-3`},D={class:`grid gap-2 text-sm`},O={class:`inline-flex items-center gap-2`},k={class:`h-4.5 w-4.5 text-[color:var(--dashboard-accent)]`},A={class:`text-[color:var(--dashboard-text)]`},j={class:`grid gap-3 md:grid-cols-2 xl:grid-cols-4`},M={class:`grid gap-3 xl:grid-cols-[minmax(0,1.1fr)_minmax(20rem,0.9fr)]`},N={class:`mt-4 grid gap-3`},P={class:`flex flex-col gap-2 md:flex-row md:items-center md:justify-between`},F={class:`font-medium`},I={class:`mt-1 text-sm text-[color:var(--dashboard-text-muted)]`},L={class:`rounded-xl bg-slate-950 px-3 py-2 text-xs text-slate-100 dark:bg-slate-900`},R={class:`grid gap-2 text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},z=r({__name:`index`,setup(r){let{commandItems:z,signals:B}=v(),V=_.map(e=>({iconName:e.iconName,title:e.label,description:e.caption}));return(r,v)=>(f(),u(`div`,C,[s(h,{eyebrow:`Workspace`,title:`面向持续增强的 dashboard 壳子`,description:`这一版先不急着继续堆业务逻辑,而是把信息架构、导航分层、主题切换和组件基座先收住。后面要接 analyze、dev server、MCP 或任务执行状态,都可以直接沿着路由扩展。`,"icon-name":`hero-workspace`,tone:`strong`,padding:`header`},{default:n(()=>[a(`div`,w,[a(`div`,T,[(f(!0),u(l,null,e(t(y),e=>(f(),o(S,i({key:e.title},{ref_for:!0},e),null,16))),128))]),a(`div`,E,[s(b,{eyebrow:`rollout signal`},{default:n(()=>[a(`ul`,D,[(f(!0),u(l,null,e(t(B),e=>(f(),u(`li`,{key:e.label,class:`flex items-center justify-between gap-3 rounded-2xl border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)] px-3 py-3`},[a(`span`,O,[a(`span`,k,[s(m,{name:e.iconName},null,8,[`name`])]),c(` `+p(e.label),1)]),a(`strong`,A,p(e.value),1)]))),128))])]),_:1})])])]),_:1}),s(h,{eyebrow:`Routes`,title:`页面跳转入口`,description:`工作台本身也要承担路由索引职责,后续页面越来越多时,首页需要负责把用户送到正确的功能区域。`,"icon-name":`nav-home`},{default:n(()=>[a(`div`,j,[(f(!0),u(l,null,e(t(_),(e,r)=>(f(),o(t(d),{key:e.to,to:e.to},{default:n(()=>[s(S,i({ref_for:!0},t(V)[r],{interactive:``}),null,16)]),_:2},1032,[`to`]))),128))])]),_:1}),a(`section`,M,[s(h,{tone:`default`,padding:`md`},{default:n(()=>[s(x,{eyebrow:`Commands`,title:`首轮操作面板`,description:`这里先用假数据承载常用动作。等 CLI 和 dashboard 进一步打通后,可以把这些条目替换成真实任务状态、最近运行记录和直接操作入口。`}),a(`div`,N,[(f(!0),u(l,null,e(t(z),e=>(f(),u(`article`,{key:e.command,class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] p-4`},[a(`div`,P,[a(`div`,null,[a(`h3`,F,p(e.label),1),a(`p`,I,p(e.note),1)]),a(`code`,L,p(e.command),1)])]))),128))])]),_:1}),s(h,{eyebrow:`Guardrails`,title:`第一轮增强原则`,description:`先做壳子,不急着过度抽象数据模型。所有新增页面都要能在没有真实 payload 的情况下独立预览。`,"icon-name":`metric-quality`},{default:n(()=>[a(`ol`,R,[(f(!0),u(l,null,e(t(g),e=>(f(),u(`li`,{key:e,class:`rounded-[18px] border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)] px-4 py-3`},p(e),1))),128))])]),_:1})])]))}});export{z as default};
1
+ import{E as e,F as t,M as n,_ as r,b as i,d as a,f as o,g as s,h as c,l,m as u,t as d,w as f,z as p}from"./vue.js";import{A as m,S as h,_ as g,b as _,r as v,y}from"./index.js";import{t as b}from"./AppInsetPanel.js";import{t as x}from"./AppSectionHeading.js";import{t as S}from"./AppIconFeatureCard.js";var C={class:`grid gap-3`},w={class:`grid gap-3 xl:grid-cols-[minmax(0,1.35fr)_minmax(18rem,0.8fr)]`},T={class:`grid gap-3 md:grid-cols-3`},E={class:`grid gap-3`},D={class:`grid gap-2 text-sm`},O={class:`inline-flex items-center gap-2`},k={class:`h-4.5 w-4.5 text-(--dashboard-accent)`},A={class:`text-(--dashboard-text)`},j={class:`grid gap-3 md:grid-cols-2 xl:grid-cols-4`},M={class:`grid gap-3 xl:grid-cols-[minmax(0,1.1fr)_minmax(20rem,0.9fr)]`},N={class:`mt-4 grid gap-3`},P={class:`flex flex-col gap-2 md:flex-row md:items-center md:justify-between`},F={class:`font-medium`},I={class:`mt-1 text-sm text-(--dashboard-text-muted)`},L={class:`rounded-xl bg-slate-950 px-3 py-2 text-xs text-slate-100 dark:bg-slate-900`},R={class:`grid gap-2 text-sm leading-6 text-(--dashboard-text-muted)`},z=r({__name:`index`,setup(r){let{commandItems:z,signals:B}=v(),V=_.map(e=>({iconName:e.iconName,title:e.label,description:e.caption}));return(r,v)=>(f(),u(`div`,C,[s(h,{eyebrow:`Workspace`,title:`面向持续增强的 dashboard 壳子`,description:`这一版先不急着继续堆业务逻辑,而是把信息架构、导航分层、主题切换和组件基座先收住。后面要接 analyze、dev server、MCP 或任务执行状态,都可以直接沿着路由扩展。`,"icon-name":`hero-workspace`,tone:`strong`,padding:`header`},{default:n(()=>[a(`div`,w,[a(`div`,T,[(f(!0),u(l,null,e(t(y),e=>(f(),o(S,i({key:e.title},{ref_for:!0},e),null,16))),128))]),a(`div`,E,[s(b,{eyebrow:`rollout signal`},{default:n(()=>[a(`ul`,D,[(f(!0),u(l,null,e(t(B),e=>(f(),u(`li`,{key:e.label,class:`flex items-center justify-between gap-3 rounded-2xl border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-3`},[a(`span`,O,[a(`span`,k,[s(m,{name:e.iconName},null,8,[`name`])]),c(` `+p(e.label),1)]),a(`strong`,A,p(e.value),1)]))),128))])]),_:1})])])]),_:1}),s(h,{eyebrow:`Routes`,title:`页面跳转入口`,description:`工作台本身也要承担路由索引职责,后续页面越来越多时,首页需要负责把用户送到正确的功能区域。`,"icon-name":`nav-home`},{default:n(()=>[a(`div`,j,[(f(!0),u(l,null,e(t(_),(e,r)=>(f(),o(t(d),{key:e.to,to:e.to},{default:n(()=>[s(S,i({ref_for:!0},t(V)[r],{interactive:``}),null,16)]),_:2},1032,[`to`]))),128))])]),_:1}),a(`section`,M,[s(h,{tone:`default`,padding:`md`},{default:n(()=>[s(x,{eyebrow:`Commands`,title:`首轮操作面板`,description:`这里先用假数据承载常用动作。等 CLI 和 dashboard 进一步打通后,可以把这些条目替换成真实任务状态、最近运行记录和直接操作入口。`}),a(`div`,N,[(f(!0),u(l,null,e(t(z),e=>(f(),u(`article`,{key:e.command,class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-4`},[a(`div`,P,[a(`div`,null,[a(`h3`,F,p(e.label),1),a(`p`,I,p(e.note),1)]),a(`code`,L,p(e.command),1)])]))),128))])]),_:1}),s(h,{eyebrow:`Guardrails`,title:`第一轮增强原则`,description:`先做壳子,不急着过度抽象数据模型。所有新增页面都要能在没有真实 payload 的情况下独立预览。`,"icon-name":`metric-quality`},{default:n(()=>[a(`ol`,R,[(f(!0),u(l,null,e(t(g),e=>(f(),u(`li`,{key:e,class:`rounded-4.5 border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3`},p(e),1))),128))])]),_:1})])]))}});export{z as default};
@@ -1 +1 @@
1
- import{E as e,F as t,I as n,M as r,R as i,_ as a,b as o,d as s,f as c,g as l,l as u,m as d,u as f,w as p,z as m}from"./vue.js";import{S as h,n as g,v as _,w as v}from"./index.js";import{t as y}from"./AppSectionHeading.js";import{t as b}from"./AppIconFeatureCard.js";var x=a({__name:`AppSurfaceSampleCard`,props:{label:{},tone:{}},setup(e){function t(e){switch(e){case`strong`:return`border border-[color:var(--dashboard-border-strong)] bg-[color:var(--dashboard-panel-strong)] shadow-[var(--dashboard-shadow)]`;case`muted`:return`border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel-muted)]`;default:return`border border-[color:var(--dashboard-border)] bg-[color:var(--dashboard-panel)]`}}return(r,i)=>(p(),d(`div`,{class:n([`rounded-[18px] p-4`,t(e.tone)])},m(e.label),3))}}),S={class:`flex items-center justify-between gap-3`},C={class:`text-xs text-[color:var(--dashboard-text-soft)]`},w=a({__name:`AppTokenSwatch`,props:{name:{},sample:{}},setup(e){let r=e,a=f(()=>({background:r.sample}));return(r,o)=>(p(),d(`li`,{class:n(t(v)())},[s(`div`,S,[s(`code`,C,m(e.name),1),s(`span`,{class:`h-8 w-14 rounded-xl border border-[color:var(--dashboard-border)]`,style:i(a.value)},null,4)])],2))}}),T={class:`grid gap-3`},E={class:`mt-5 grid gap-3 lg:grid-cols-3`},D={class:`grid gap-3 lg:grid-cols-3`},O={class:`grid gap-3`},k={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]`},A={class:`grid gap-3 md:grid-cols-3`},j=a({__name:`tokens`,setup(n){let i=[{label:`Default surface`,tone:`default`},{label:`Strong surface`,tone:`strong`},{label:`Muted surface`,tone:`muted`}],a=g.map(e=>({iconName:e.iconName,title:e.label,meta:e.value}));return(n,f)=>(p(),d(`div`,T,[l(h,{tone:`strong`,padding:`md`},{default:r(()=>[l(y,{eyebrow:`System`,title:`设计令牌与组件语义`,description:`这个页面不是给最终用户看的功能页,而是给 dashboard 自己看的设计控制台。后面改视觉体系时,先看这里再改其它页面。`}),s(`div`,E,[(p(!0),d(u,null,e(t(a),e=>(p(),c(b,o({key:e.meta},{ref_for:!0},e),null,16))),128))])]),_:1}),s(`section`,D,[(p(!0),d(u,null,e(t(_),t=>(p(),c(h,{key:t.title,title:t.title,"icon-name":t.iconName,padding:`md`},{default:r(()=>[s(`ul`,O,[(p(!0),d(u,null,e(t.tokens,e=>(p(),c(w,o({key:e.name},{ref_for:!0},e),null,16))),128))])]),_:2},1032,[`title`,`icon-name`]))),128))]),s(`section`,k,[l(h,{eyebrow:`Components`,title:`标准表面`,description:`统一的圆角、边框和阴影会比单独页面自由发挥更重要。`,"icon-name":`token-surface`},{default:r(()=>[s(`div`,A,[(p(),d(u,null,e(i,e=>l(x,o({key:e.label},{ref_for:!0},e),null,16)),64))])]),_:1}),l(h,{eyebrow:`Typography`,title:`文本层级`,description:`dashboard 需要明显的技术控制台语义,而不是普通后台模板样式。`,"icon-name":`token-type`},{default:r(()=>[...f[0]||=[s(`div`,{class:`space-y-3`},[s(`p`,{class:`text-3xl font-semibold tracking-tight`},` IBM Plex Sans Console `),s(`p`,{class:`text-base text-[color:var(--dashboard-text-muted)]`},` 说明文案采用偏紧凑的行高和较高的信息密度,适合后续挂载构建分析、事件流和诊断面板。 `),s(`p`,{class:`text-sm uppercase tracking-[0.24em] text-[color:var(--dashboard-text-soft)]`},` uppercased meta labels for control surfaces `)],-1)]]),_:1})])]))}});export{j as default};
1
+ import{E as e,F as t,I as n,M as r,R as i,_ as a,b as o,d as s,f as c,g as l,l as u,m as d,u as f,w as p,z as m}from"./vue.js";import{S as h,n as g,v as _,w as v}from"./index.js";import{t as y}from"./AppSectionHeading.js";import{t as b}from"./AppIconFeatureCard.js";var x=a({__name:`AppSurfaceSampleCard`,props:{label:{},tone:{}},setup(e){function t(e){switch(e){case`strong`:return`border border-(--dashboard-border-strong) bg-(--dashboard-panel-strong) shadow-(--dashboard-shadow)`;case`muted`:return`border border-(--dashboard-border) bg-(--dashboard-panel-muted)`;default:return`border border-(--dashboard-border) bg-(--dashboard-panel)`}}return(r,i)=>(p(),d(`div`,{class:n([`rounded-4.5 p-4`,t(e.tone)])},m(e.label),3))}}),S={class:`flex items-center justify-between gap-3`},C={class:`text-xs text-(--dashboard-text-soft)`},w=a({__name:`AppTokenSwatch`,props:{name:{},sample:{}},setup(e){let r=e,a=f(()=>({background:r.sample}));return(r,o)=>(p(),d(`li`,{class:n(t(v)())},[s(`div`,S,[s(`code`,C,m(e.name),1),s(`span`,{class:`h-8 w-14 rounded-xl border border-(--dashboard-border)`,style:i(a.value)},null,4)])],2))}}),T={class:`grid gap-3`},E={class:`mt-5 grid gap-3 lg:grid-cols-3`},D={class:`grid gap-3 lg:grid-cols-3`},O={class:`grid gap-3`},k={class:`grid gap-3 xl:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]`},A={class:`grid gap-3 md:grid-cols-3`},j=a({__name:`tokens`,setup(n){let i=[{label:`Default surface`,tone:`default`},{label:`Strong surface`,tone:`strong`},{label:`Muted surface`,tone:`muted`}],a=g.map(e=>({iconName:e.iconName,title:e.label,meta:e.value}));return(n,f)=>(p(),d(`div`,T,[l(h,{tone:`strong`,padding:`md`},{default:r(()=>[l(y,{eyebrow:`System`,title:`设计令牌与组件语义`,description:`这个页面不是给最终用户看的功能页,而是给 dashboard 自己看的设计控制台。后面改视觉体系时,先看这里再改其它页面。`}),s(`div`,E,[(p(!0),d(u,null,e(t(a),e=>(p(),c(b,o({key:e.meta},{ref_for:!0},e),null,16))),128))])]),_:1}),s(`section`,D,[(p(!0),d(u,null,e(t(_),t=>(p(),c(h,{key:t.title,title:t.title,"icon-name":t.iconName,padding:`md`},{default:r(()=>[s(`ul`,O,[(p(!0),d(u,null,e(t.tokens,e=>(p(),c(w,o({key:e.name},{ref_for:!0},e),null,16))),128))])]),_:2},1032,[`title`,`icon-name`]))),128))]),s(`section`,k,[l(h,{eyebrow:`Components`,title:`标准表面`,description:`统一的圆角、边框和阴影会比单独页面自由发挥更重要。`,"icon-name":`token-surface`},{default:r(()=>[s(`div`,A,[(p(),d(u,null,e(i,e=>l(x,o({key:e.label},{ref_for:!0},e),null,16)),64))])]),_:1}),l(h,{eyebrow:`Typography`,title:`文本层级`,description:`dashboard 需要明显的技术控制台语义,而不是普通后台模板样式。`,"icon-name":`token-type`},{default:r(()=>[...f[0]||=[s(`div`,{class:`space-y-3`},[s(`p`,{class:`text-3xl font-semibold tracking-tight`},` IBM Plex Sans Console `),s(`p`,{class:`text-base text-(--dashboard-text-muted)`},` 说明文案采用偏紧凑的行高和较高的信息密度,适合后续挂载构建分析、事件流和诊断面板。 `),s(`p`,{class:`text-sm uppercase tracking-[0.24em] text-(--dashboard-text-soft)`},` uppercased meta labels for control surfaces `)],-1)]]),_:1})])]))}});export{j as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@weapp-vite/dashboard",
3
3
  "type": "module",
4
- "version": "6.15.14",
4
+ "version": "6.15.15",
5
5
  "description": "Optional analyze dashboard for weapp-vite",
6
6
  "author": "ice breaker <1324318532@qq.com>",
7
7
  "license": "MIT",