@weapp-vite/dashboard 6.15.7 → 6.15.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AppStatCard.js +1 -1
- package/dist/assets/activity.js +1 -1
- package/dist/assets/analyze.js +1 -1
- package/dist/assets/echarts.js +4 -4
- package/dist/assets/index.js +1 -1
- package/dist/assets/pages.js +1 -1
- package/dist/assets/rolldown-runtime.js +1 -1
- package/dist/assets/tokens.js +1 -1
- package/package.json +2 -2
- package/dist/assets/useDashboardTheme.js +0 -1
- package/dist/assets/useDashboardWorkspace.js +0 -1
- package/dist/assets/view.js +0 -1
package/dist/assets/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as e,F as t,I as n,M as r,N as i,O as a,_ as o,a as s,c,d as l,f as u,g as d,i as f,j as p,l as m,m as h,n as ee,p as g,r as _,s as v,u as y,w as b,z as x}from"./vue.js";import{_ as S,c as C,g as w,l as T}from"./shell.js";import{i as E,r as D,t as O}from"./useDashboardTheme.js";import{n as k,t as te}from"./useDashboardWorkspace.js";import{n as ne}from"./view.js";var A={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`},j={class:`flex items-start justify-between gap-3`},M={class:`flex items-start gap-3`},N={class:`h-5 w-5`},P={class:`mt-1 text-2xl font-semibold tracking-tight md:text-[2rem]`},F={class:`mt-2 max-w-3xl text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},I={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`},L={class:`h-4 w-4 text-[color:var(--dashboard-accent)]`},R=[`value`],z=[`value`],B={class:`flex flex-wrap items-center gap-2 md:hidden`},V={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`},H={class:`h-4 w-4 text-[color:var(--dashboard-accent)]`},U=[`value`],W=[`value`],G=o({__name:`AppShellHeader`,props:{title:{},description:{},themeOptions:{},themePreference:{}},emits:[`menu`,`setTheme`],setup(t,{emit:n}){let r=t,i=n,a=y(()=>r.themeOptions.find(e=>e.value===r.themePreference)?.iconName??`theme-system`);function o(e){i(`setTheme`,e.target.value)}return(n,r)=>(b(),h(`header`,A,[l(`div`,j,[l(`div`,M,[l(`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:r[0]||=e=>i(`menu`)},[l(`span`,N,[d(S,{name:`nav-menu`})])]),l(`div`,null,[r[1]||=l(`p`,{class:`text-[11px] uppercase tracking-[0.28em] text-[color:var(--dashboard-accent)]`},` weapp-vite dashboard `,-1),l(`h1`,P,x(t.title),1),l(`p`,F,x(t.description),1)])]),l(`label`,I,[l(`span`,L,[d(S,{name:a.value},null,8,[`name`])]),l(`select`,{id:`dashboard-global-theme`,class:`min-w-[8rem] bg-transparent text-[color:var(--dashboard-text)] outline-none`,value:t.themePreference,onChange:o},[(b(!0),h(m,null,e(t.themeOptions,e=>(b(),h(`option`,{key:e.value,value:e.value},x(e.label),9,z))),128))],40,R)])]),l(`div`,B,[l(`label`,V,[l(`span`,H,[d(S,{name:a.value},null,8,[`name`])]),l(`select`,{id:`dashboard-mobile-theme`,class:`min-w-[8rem] bg-transparent text-[color:var(--dashboard-text)] outline-none`,value:t.themePreference,onChange:o},[(b(!0),h(m,null,e(t.themeOptions,e=>(b(),h(`option`,{key:e.value,value:e.value},x(e.label),9,W))),128))],40,U)]),d(E,{"icon-name":`status-live`,label:`shell ready`,uppercase:``})])]))}}),K={class:`min-h-screen px-3 py-3 text-[color:var(--dashboard-text)] md:px-4 md:py-4 lg:px-5`},q={class:`mx-auto grid max-w-[1600px] gap-3 lg:grid-cols-[18.5rem_minmax(0,1fr)]`},J={class:`hidden lg:block`},Y={class:`sticky top-4 space-y-3`},X={class:`grid gap-2`},re={class:`flex items-start gap-3`},ie={class:`h-5 w-5`},ae={class:`min-w-0`},oe={class:`font-medium text-[color:var(--dashboard-text)]`},se={class:`mt-1 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},ce={class:`min-w-0 space-y-3`},le={key:0,class:`fixed inset-y-3 left-3 z-50 w-[min(22rem,calc(100vw-1.5rem))] lg:hidden`},ue={class:`grid gap-2`},de={class:`flex items-start gap-3`},fe={class:`h-5 w-5`},pe={class:`min-w-0`},me={class:`font-medium text-[color:var(--dashboard-text)]`},he={class:`mt-1 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},Z=o({__name:`App`,setup(o){let c=s(),f=i(!1),{themePreference:_,resolvedTheme:E,setThemePreference:A}=D(),j=te(),M=y(()=>!!j.resultRef.value);O({themePreference:_,resolvedTheme:E,setThemePreference:A}),k(j);let N=y(()=>c.path.startsWith(`/analyze`)?{title:`Analyze Workspace`,description:`保留现有构建分析能力,并把包、模块与分包视图收敛进可持续扩展的应用框架。`}:c.path.startsWith(`/activity`)?{title:`Activity Stream`,description:`用统一的事件、诊断和下一步动作承载未来的 dev/build/ui 运行轨迹。`}:c.path.startsWith(`/tokens`)?{title:`Design Tokens`,description:`集中验证 dashboard 的色彩、表面和排版语义,避免后续页面各自漂移。`}:{title:`Workspace Console`,description:`这是 dashboard 的新入口页,用来承载基础壳子、命令面板和后续不断增强的调试模块。`});p(()=>c.fullPath,()=>{f.value=!1});function P(e,t){return t===`/`?e===`/`:e===t||e.startsWith(`${t}/`)}return(i,o)=>{let s=a(`RouterLink`);return b(),h(`div`,K,[l(`div`,q,[l(`aside`,J,[l(`div`,Y,[d(T,{eyebrow:`Shell`,title:`weapp-vite dashboard`,description:`先搭好稳定壳子,再把 analyze、诊断、日志、MCP 等能力持续挂接进来。`,"icon-name":`hero-system`,tone:`strong`},{default:r(()=>[l(`nav`,X,[(b(!0),h(m,null,e(t(C),e=>(b(),u(s,{key:e.to,to:e.to,class:n(t(w)(`group rounded-[18px] border px-3 py-3 transition`,P(t(c).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:r(()=>[l(`div`,re,[l(`span`,{class:n(t(w)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,P(t(c).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)]`))},[l(`span`,ie,[d(S,{name:e.iconName},null,8,[`name`])])],2),l(`div`,ae,[l(`p`,oe,x(e.label),1),l(`p`,se,x(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1}),d(T,{eyebrow:`Theme`,title:t(j).statusLabel.value,description:t(j).statusSummary.value,"icon-name":M.value?`status-live`:t(E)===`dark`?`theme-dark`:`theme-light`,padding:`sm`},null,8,[`title`,`description`,`icon-name`])])]),l(`div`,ce,[d(G,{title:N.value.title,description:N.value.description,"theme-options":t(ne),"theme-preference":t(_),onMenu:o[0]||=e=>f.value=!0,onSetTheme:t(A)},null,8,[`title`,`description`,`theme-options`,`theme-preference`,`onSetTheme`]),d(t(ee))])]),d(v,{"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:r(()=>[f.value?(b(),h(`div`,{key:0,class:`fixed inset-0 z-40 bg-slate-950/35 backdrop-blur-sm lg:hidden`,onClick:o[1]||=e=>f.value=!1})):g(``,!0)]),_:1}),d(v,{"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:r(()=>[f.value?(b(),h(`aside`,le,[d(T,{eyebrow:`Navigation`,title:`Workspace Modules`,description:`路由已经是第一层扩展边界,后续增强优先新增页面,不再继续堆叠单页。`,"icon-name":`nav-menu`,tone:`strong`,"content-class":`h-full`},{default:r(()=>[l(`nav`,ue,[(b(!0),h(m,null,e(t(C),e=>(b(),u(s,{key:e.to,to:e.to,class:n(t(w)(`group rounded-[18px] border px-3 py-3 transition`,P(t(c).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:o[2]||=e=>f.value=!1},{default:r(()=>[l(`div`,de,[l(`span`,{class:n(t(w)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,P(t(c).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)]`))},[l(`span`,fe,[d(S,{name:e.iconName},null,8,[`name`])])],2),l(`div`,pe,[l(`p`,me,x(e.label),1),l(`p`,he,x(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1})])):g(``,!0)]),_:1})])}}}),ge=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),_e=function(e,t){return new URL(e,t).href},Q={},$=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=_e(t,n),t in Q)return;Q[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`:ge,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)})},ve=_({history:f(),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 ye(){let e=c(Z);e.config.errorHandler=(e,t,n)=>{},e.use(ve),e.mount(`#app`)}try{ye()}catch{}
|
|
1
|
+
import{C as e,E as t,F as n,I as r,M as i,N as a,O as o,P as s,S as c,T as l,_ as u,a as d,c as f,d as p,f as m,g as h,h as g,i as _,j as v,l as y,m as b,n as ee,p as x,r as S,s as C,u as w,w as T,y as E,z as D}from"./vue.js";import{_ as O,a as te,c as k,g as A,l as j,n as ne,r as re,t as ie}from"./shell.js";var ae={key:0,class:`mr-1.5 h-4 w-4 text-[color:var(--dashboard-accent)]`},M=u({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e){return(t,n)=>(T(),b(`span`,{class:r([`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?(T(),b(`span`,ae,[h(O,{name:e.iconName},null,8,[`name`])])):x(``,!0),g(` `+D(e.label),1)],2))}}),oe={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`},se={class:`flex items-start justify-between gap-3`},ce={class:`flex items-start gap-3`},le={class:`h-5 w-5`},ue={class:`mt-1 text-2xl font-semibold tracking-tight md:text-[2rem]`},de={class:`mt-2 max-w-3xl text-sm leading-6 text-[color:var(--dashboard-text-muted)]`},fe={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`},pe={class:`h-4 w-4 text-[color:var(--dashboard-accent)]`},me=[`value`],he=[`value`],ge={class:`flex flex-wrap items-center gap-2 md:hidden`},_e={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`},ve={class:`h-4 w-4 text-[color:var(--dashboard-accent)]`},ye=[`value`],be=[`value`],xe=u({__name:`AppShellHeader`,props:{title:{},description:{},themeOptions:{},themePreference:{}},emits:[`menu`,`setTheme`],setup(e,{emit:n}){let r=e,i=n,a=w(()=>r.themeOptions.find(e=>e.value===r.themePreference)?.iconName??`theme-system`);function o(e){i(`setTheme`,e.target.value)}return(n,r)=>(T(),b(`header`,oe,[p(`div`,se,[p(`div`,ce,[p(`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:r[0]||=e=>i(`menu`)},[p(`span`,le,[h(O,{name:`nav-menu`})])]),p(`div`,null,[r[1]||=p(`p`,{class:`text-[11px] uppercase tracking-[0.28em] text-[color:var(--dashboard-accent)]`},` weapp-vite dashboard `,-1),p(`h1`,ue,D(e.title),1),p(`p`,de,D(e.description),1)])]),p(`label`,fe,[p(`span`,pe,[h(O,{name:a.value},null,8,[`name`])]),p(`select`,{id:`dashboard-global-theme`,class:`min-w-[8rem] bg-transparent text-[color:var(--dashboard-text)] outline-none`,value:e.themePreference,onChange:o},[(T(!0),b(y,null,t(e.themeOptions,e=>(T(),b(`option`,{key:e.value,value:e.value},D(e.label),9,he))),128))],40,me)])]),p(`div`,ge,[p(`label`,_e,[p(`span`,ve,[h(O,{name:a.value},null,8,[`name`])]),p(`select`,{id:`dashboard-mobile-theme`,class:`min-w-[8rem] bg-transparent text-[color:var(--dashboard-text)] outline-none`,value:e.themePreference,onChange:o},[(T(!0),b(y,null,t(e.themeOptions,e=>(T(),b(`option`,{key:e.value,value:e.value},D(e.label),9,be))),128))],40,ye)]),h(M,{"icon-name":`status-live`,label:`shell ready`,uppercase:``})])]))}}),N=`weapp-vite-dashboard-theme`;function Se(){if(typeof window>`u`)return`system`;let e=window.localStorage.getItem(N);return e===`light`||e===`dark`||e===`system`?e:`system`}function Ce(e,t){return e===`light`||e===`dark`?e:t?.matches?`dark`:`light`}function P(){let t=a(Se()),n=typeof window<`u`?window.matchMedia(`(prefers-color-scheme: dark)`):null,r=w(()=>Ce(t.value,n)),i=e=>{typeof document>`u`||(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)},o=e=>{typeof window>`u`||window.localStorage.setItem(N,e)},s=()=>{i(r.value)};return v(t,e=>{o(e),i(r.value)},{immediate:!0}),e(()=>{n?.addEventListener(`change`,s),i(r.value)}),c(()=>{n?.removeEventListener(`change`,s)}),{themePreference:t,resolvedTheme:r,setThemePreference(e){t.value=e}}}var F=Symbol(`dashboard-theme`);function we(e){l(F,e)}function Te(){return E(F,null)||P()}function I(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 Ee(e){switch(e){case`main`:return`主包`;case`subPackage`:return`分包`;case`independent`:return`独立分包`;case`virtual`:return`虚拟包`;default:return e}}function De(e){return e===`independent`?`独立构建`:`主构建`}function Oe(e){switch(e){case`src`:return`业务源码`;case`workspace`:return`工作区包`;case`plugin`:return`插件`;case`node_modules`:return`依赖`;default:return e}}function L(e){switch(e){case`command`:return`命令`;case`build`:return`构建`;case`diagnostic`:return`诊断`;case`hmr`:return`HMR`;case`system`:return`系统`;default:return e}}function R(e){switch(e){case`info`:return`信息`;case`success`:return`成功`;case`warning`:return`警告`;case`error`:return`错误`;default:return e}}function z(e){return e??`dashboard`}function ke(e){return e}function Ae(e){return{label:R(e.level),tone:ke(e.level)}}function je(e){return e>0?`error`:`info`}function Me(e){return{label:e.latestTimestamp?`${e.count} 条`:`错误 ${e.errorCount}`,tone:je(e.errorCount)}}function B(e){return typeof e!=`number`||Number.isNaN(e)||e<0?`未记录`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?1:2)} s`:`${e} ms`}function Ne(e){let t=[L(e.kind),z(e.source),e.timestamp];return typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)&&e.durationMs>=0&&t.push(B(e.durationMs)),t.join(` · `)}var Pe=[`command`,`build`,`diagnostic`,`hmr`,`system`],Fe=[`info`,`success`,`warning`,`error`];function Ie(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Le(e){return typeof e==`string`&&Pe.includes(e)?e:`system`}function Re(e){return typeof e==`string`&&Fe.includes(e)?e:`info`}function V(e,t){return typeof e==`string`&&e.trim()?e:t}function ze(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function Be(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 Ve(e,t){return{id:V(e.id,`dashboard-runtime-event-${t}`),kind:Le(e.kind),level:Re(e.level),title:V(e.title,`untitled event`),detail:V(e.detail,`no event detail`),timestamp:V(e.timestamp,`—`),source:V(e.source,`dashboard`),durationMs:ze(e.durationMs),tags:Be(e.tags)}}function He(e){return{count:1,errorCount:+(e.level===`error`),latestTimestamp:e.timestamp,durationTotal:e.durationMs??0,timedCount:+(typeof e.durationMs==`number`)}}function Ue(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 We(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 Ge(e){return{...e,averageDuration:B(e.averageDurationMs)}}function Ke(e,t){return Ie(e)?Ve(e,t):null}function H(e){let t=(Array.isArray(e)?e:[e]).map((e,t)=>Ke(e,t)).filter(e=>!!e),n=new Map;for(let e of t)n.set(e.id,e);return[...n.values()]}function U(e){let t=new Map;for(let n of e){let e=n.source??`dashboard`,r=t.get(e);if(!r){t.set(e,He(n));continue}t.set(e,Ue(r,n))}return Array.from(t,([e,t])=>We(e,t)).sort((e,t)=>t.count-e.count||e.source.localeCompare(t.source,`zh-CN`))}function qe(e){return e.map(e=>Ge(e))}var W=Symbol(`dashboard-workspace`);function G(){return new Date().toLocaleTimeString(`zh-CN`,{hour12:!1})}function K(e,t){return{label:e,value:t}}function q(e){return e}function J(e){return e}function Y(e){return e}function X(e){return e}function Je(){let t=s(window.__WEAPP_VITE_ANALYZE_RESULT__??null),n=s(window.__WEAPP_VITE_DASHBOARD_EVENTS__?.length?H(window.__WEAPP_VITE_DASHBOARD_EVENTS__):H(te)),r=s(0),i=s(t.value?G():`—`),a=w(()=>{let e=t.value;if(!e)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0};let n=e.packages.flatMap(e=>e.files);return{packageCount:e.packages.length,moduleCount:e.modules.length,duplicateCount:e.modules.filter(e=>e.packages.length>1).length,totalBytes:n.reduce((e,t)=>e+(t.size??0),0)}}),o=w(()=>t.value?`payload ready`:`awaiting payload`),l=w(()=>t.value?`${a.value.packageCount} 个包 · ${a.value.moduleCount} 个模块`:`尚未接收到 CLI analyze 数据`),u=w(()=>n.value[0]??null),d=w(()=>{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[K(`总事件数`,String(n.value.length)),K(`命令事件`,String(r)),K(`已记录耗时`,String(i.length)),K(`平均耗时`,B(a)),K(`警告事件`,String(t)),K(`错误事件`,String(e))]}),f=w(()=>U(n.value)),p=w(()=>[q({label:`页面骨架`,value:`4 个`,iconName:`metric-ready`}),q({label:`连接状态`,value:t.value?`已接入 payload`:`等待注入`,iconName:t.value?`status-live`:`metric-health`}),q({label:`数据同步`,value:`${r.value} 次`,iconName:`metric-latency`}),q({label:`产物体积`,value:t.value?I(a.value.totalBytes):`未载入`,iconName:`metric-quality`}),q({label:`运行事件`,value:`${n.value.length} 条`,iconName:u.value?.level===`error`?`metric-health`:`metric-time`})]),m=w(()=>t.value?[J({label:`重新分析当前工程`,command:`weapp-vite analyze`,note:`最近同步于 ${i.value},当前可读取 ${a.value.packageCount} 个包。`}),J({label:`进入构建联调`,command:`weapp-vite build --ui`,note:`当前产物总体积 ${I(a.value.totalBytes)},适合继续核对 chunk 结构。`}),J({label:`观察开发态更新`,command:`weapp-vite dev --ui`,note:`已记录 ${r.value} 次 payload 同步,后续可继续接入更细粒度事件。`})]:re),h=w(()=>{let e=[...ie];for(let t of n.value.slice(0,4))e.unshift(Y({time:t.timestamp,title:t.title,summary:t.detail,tone:t.level===`error`||t.level===`warning`?`default`:`live`}));return t.value&&e.unshift(Y({time:i.value,title:`workspace payload received`,summary:`已收到一份真实 analyze 结果,包含 ${a.value.packageCount} 个包和 ${a.value.moduleCount} 个模块。`,tone:`live`})),e}),g=w(()=>{let e=[...ne],n=u.value;return n&&e.unshift(X({label:`最新运行事件`,detail:`${n.title} · ${n.detail}`,status:n.level})),t.value?[X({label:`实时分析状态`,detail:`已接入 payload,当前记录 ${a.value.duplicateCount} 个跨包复用模块。`,status:`在线`}),X({label:`产物规模`,detail:`总产物体积 ${I(a.value.totalBytes)},可继续进入分析页查看 treemap 与最大文件。`,status:`可分析`}),...e]:[X({label:`CLI 注入链路`,detail:`尚未接收到 analyze payload,当前页面以空态方式工作。`,status:`待接入`}),...e]}),_=e=>{let t=H(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__&&(t.value=window.__WEAPP_VITE_ANALYZE_RESULT__,r.value+=1,i.value=G())},y=e=>{let t=e instanceof CustomEvent?e.detail:null;_(Array.isArray(t)?t:t?[t]:null)};return e(()=>{window.addEventListener(`weapp-analyze:update`,v),window.addEventListener(`weapp-dashboard:event`,y),v(),_(window.__WEAPP_VITE_DASHBOARD_EVENTS__)}),c(()=>{window.removeEventListener(`weapp-analyze:update`,v),window.removeEventListener(`weapp-dashboard:event`,y)}),{resultRef:t,updateCount:r,lastUpdatedAt:i,statusLabel:o,statusSummary:l,commandItems:m,activityItems:h,diagnostics:g,signals:p,runtimeEvents:n,latestRuntimeEvent:u,eventSummary:d,runtimeSourceSummary:f}}function Ye(e){l(W,e)}function Xe(){let e=E(W,null);if(!e)throw Error(`[dashboard] workspace context is not available`);return e}var Z=[{value:`system`,label:`跟随系统`,iconName:`theme-system`},{value:`light`,label:`亮色`,iconName:`theme-light`},{value:`dark`,label:`暗色`,iconName:`theme-dark`}],Ze=[{key:`overview`,label:`总览`,iconName:`tab-overview`},{key:`packages`,label:`包与产物`,iconName:`tab-packages`},{key:`modules`,label:`模块与复用`,iconName:`tab-modules`}],Qe={class:`min-h-screen px-3 py-3 text-[color:var(--dashboard-text)] md:px-4 md:py-4 lg:px-5`},$e={class:`mx-auto grid max-w-[1600px] gap-3 lg:grid-cols-[18.5rem_minmax(0,1fr)]`},et={class:`hidden lg:block`},tt={class:`sticky top-4 space-y-3`},nt={class:`grid gap-2`},rt={class:`flex items-start gap-3`},it={class:`h-5 w-5`},at={class:`min-w-0`},ot={class:`font-medium text-[color:var(--dashboard-text)]`},st={class:`mt-1 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},ct={class:`min-w-0 space-y-3`},lt={key:0,class:`fixed inset-y-3 left-3 z-50 w-[min(22rem,calc(100vw-1.5rem))] lg:hidden`},ut={class:`grid gap-2`},dt={class:`flex items-start gap-3`},ft={class:`h-5 w-5`},pt={class:`min-w-0`},mt={class:`font-medium text-[color:var(--dashboard-text)]`},ht={class:`mt-1 text-xs leading-5 text-[color:var(--dashboard-text-soft)]`},gt=u({__name:`App`,setup(e){let s=d(),c=a(!1),{themePreference:l,resolvedTheme:u,setThemePreference:f}=P(),g=Je(),_=w(()=>!!g.resultRef.value);we({themePreference:l,resolvedTheme:u,setThemePreference:f}),Ye(g);let S=w(()=>s.path.startsWith(`/analyze`)?{title:`Analyze Workspace`,description:`保留现有构建分析能力,并把包、模块与分包视图收敛进可持续扩展的应用框架。`}:s.path.startsWith(`/activity`)?{title:`Activity Stream`,description:`用统一的事件、诊断和下一步动作承载未来的 dev/build/ui 运行轨迹。`}:s.path.startsWith(`/tokens`)?{title:`Design Tokens`,description:`集中验证 dashboard 的色彩、表面和排版语义,避免后续页面各自漂移。`}:{title:`Workspace Console`,description:`这是 dashboard 的新入口页,用来承载基础壳子、命令面板和后续不断增强的调试模块。`});v(()=>s.fullPath,()=>{c.value=!1});function E(e,t){return t===`/`?e===`/`:e===t||e.startsWith(`${t}/`)}return(e,a)=>{let d=o(`RouterLink`);return T(),b(`div`,Qe,[p(`div`,$e,[p(`aside`,et,[p(`div`,tt,[h(j,{eyebrow:`Shell`,title:`weapp-vite dashboard`,description:`先搭好稳定壳子,再把 analyze、诊断、日志、MCP 等能力持续挂接进来。`,"icon-name":`hero-system`,tone:`strong`},{default:i(()=>[p(`nav`,nt,[(T(!0),b(y,null,t(n(k),e=>(T(),m(d,{key:e.to,to:e.to,class:r(n(A)(`group rounded-[18px] border px-3 py-3 transition`,E(n(s).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:i(()=>[p(`div`,rt,[p(`span`,{class:r(n(A)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,E(n(s).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)]`))},[p(`span`,it,[h(O,{name:e.iconName},null,8,[`name`])])],2),p(`div`,at,[p(`p`,ot,D(e.label),1),p(`p`,st,D(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1}),h(j,{eyebrow:`Theme`,title:n(g).statusLabel.value,description:n(g).statusSummary.value,"icon-name":_.value?`status-live`:n(u)===`dark`?`theme-dark`:`theme-light`,padding:`sm`},null,8,[`title`,`description`,`icon-name`])])]),p(`div`,ct,[h(xe,{title:S.value.title,description:S.value.description,"theme-options":n(Z),"theme-preference":n(l),onMenu:a[0]||=e=>c.value=!0,onSetTheme:n(f)},null,8,[`title`,`description`,`theme-options`,`theme-preference`,`onSetTheme`]),h(n(ee))])]),h(C,{"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:i(()=>[c.value?(T(),b(`div`,{key:0,class:`fixed inset-0 z-40 bg-slate-950/35 backdrop-blur-sm lg:hidden`,onClick:a[1]||=e=>c.value=!1})):x(``,!0)]),_:1}),h(C,{"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:i(()=>[c.value?(T(),b(`aside`,lt,[h(j,{eyebrow:`Navigation`,title:`Workspace Modules`,description:`路由已经是第一层扩展边界,后续增强优先新增页面,不再继续堆叠单页。`,"icon-name":`nav-menu`,tone:`strong`,"content-class":`h-full`},{default:i(()=>[p(`nav`,ut,[(T(!0),b(y,null,t(n(k),e=>(T(),m(d,{key:e.to,to:e.to,class:r(n(A)(`group rounded-[18px] border px-3 py-3 transition`,E(n(s).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:a[2]||=e=>c.value=!1},{default:i(()=>[p(`div`,dt,[p(`span`,{class:r(n(A)(`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl`,E(n(s).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)]`))},[p(`span`,ft,[h(O,{name:e.iconName},null,8,[`name`])])],2),p(`div`,pt,[p(`p`,mt,D(e.label),1),p(`p`,ht,D(e.caption),1)])])]),_:2},1032,[`to`,`class`]))),128))])]),_:1})])):x(``,!0)]),_:1})])}}}),_t=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),vt=function(e,t){return new URL(e,t).href},Q={},$=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=vt(t,n),t in Q)return;Q[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`:_t,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)})},yt=S({history:_(),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=f(gt);e.config.errorHandler=(e,t,n)=>{},e.use(yt),e.mount(`#app`)}try{bt()}catch{}export{Te as _,U as a,De as c,Ee as d,L as f,Oe as g,z as h,qe as i,I as l,Ne as m,Z as n,Ae as o,R as p,Xe as r,Me as s,Ze as t,B as u,M as v};
|
package/dist/assets/pages.js
CHANGED
|
@@ -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{_ as m,c as h,i as g,l as _,s as v}from"./shell.js";import{r as y}from"./
|
|
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{_ as m,c as h,i as g,l as _,s as v}from"./shell.js";import{r as 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}=y(),V=h.map(e=>({iconName:e.iconName,title:e.label,description:e.caption}));return(r,y)=>(f(),u(`div`,C,[s(_,{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(v),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(_,{eyebrow:`Routes`,title:`页面跳转入口`,description:`工作台本身也要承担路由索引职责,后续页面越来越多时,首页需要负责把用户送到正确的功能区域。`,"icon-name":`nav-home`},{default:n(()=>[a(`div`,j,[(f(!0),u(l,null,e(t(h),(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(_,{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(_,{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 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(e,t)=>()=>(e&&(t=e(e=0)),t),a=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),o=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},s=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},c=t=>r.call(t,`module.exports`)?t[`module.exports`]:s(e({},`__esModule`,{value:!0}),t);export{c as i,i as n,o as r,a as t};
|
|
1
|
+
var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(e,t)=>()=>(e&&(t=e(e=0)),t),a=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),o=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},s=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},c=t=>r.call(t,`module.exports`)?t[`module.exports`]:s(e({},`__esModule`,{value:!0}),t);export{c as i,i as n,o as r,a as t};
|
package/dist/assets/tokens.js
CHANGED
|
@@ -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{d as h,l as g,o as _}from"./shell.js";import{n as v}from"./
|
|
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{d as h,l as g,o as _}from"./shell.js";import{n 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(h)())},[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=v.map(e=>({iconName:e.iconName,title:e.label,meta:e.value}));return(n,f)=>(p(),d(`div`,T,[l(g,{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(g,{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(g,{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(g,{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};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weapp-vite/dashboard",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.15.
|
|
4
|
+
"version": "6.15.10",
|
|
5
5
|
"description": "Optional analyze dashboard for weapp-vite",
|
|
6
6
|
"author": "ice breaker <1324318532@qq.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@vitejs/plugin-vue": "^6.0.6",
|
|
44
44
|
"tailwindcss": "^4.2.2",
|
|
45
45
|
"typescript": "^6.0.3",
|
|
46
|
-
"vite": "8.0.
|
|
46
|
+
"vite": "8.0.9"
|
|
47
47
|
},
|
|
48
48
|
"publishConfig": {
|
|
49
49
|
"access": "public",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,I as t,N as n,S as r,T as i,_ as a,g as o,h as s,j as c,m as l,p as u,u as d,w as f,y as p,z as m}from"./vue.js";import{_ as h}from"./shell.js";var g={key:0,class:`mr-1.5 h-4 w-4 text-[color:var(--dashboard-accent)]`},_=a({__name:`AppInfoPill`,props:{label:{},iconName:{},uppercase:{type:Boolean}},setup(e){return(n,r)=>(f(),l(`span`,{class:t([`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?(f(),l(`span`,g,[o(h,{name:e.iconName},null,8,[`name`])])):u(``,!0),s(` `+m(e.label),1)],2))}}),v=`weapp-vite-dashboard-theme`;function y(){if(typeof window>`u`)return`system`;let e=window.localStorage.getItem(v);return e===`light`||e===`dark`||e===`system`?e:`system`}function b(e,t){return e===`light`||e===`dark`?e:t?.matches?`dark`:`light`}function x(){let t=n(y()),i=typeof window<`u`?window.matchMedia(`(prefers-color-scheme: dark)`):null,a=d(()=>b(t.value,i)),o=e=>{typeof document>`u`||(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)},s=e=>{typeof window>`u`||window.localStorage.setItem(v,e)},l=()=>{o(a.value)};return c(t,e=>{s(e),o(a.value)},{immediate:!0}),e(()=>{i?.addEventListener(`change`,l),o(a.value)}),r(()=>{i?.removeEventListener(`change`,l)}),{themePreference:t,resolvedTheme:a,setThemePreference(e){t.value=e}}}var S=Symbol(`dashboard-theme`);function C(e){i(S,e)}function w(){return p(S,null)||x()}export{_ as i,w as n,x as r,C as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,P as t,S as n,T as r,u as i,y as a}from"./vue.js";import{a as o,n as s,r as c,t as l}from"./shell.js";function u(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 d(e){switch(e){case`main`:return`主包`;case`subPackage`:return`分包`;case`independent`:return`独立分包`;case`virtual`:return`虚拟包`;default:return e}}function f(e){return e===`independent`?`独立构建`:`主构建`}function p(e){switch(e){case`src`:return`业务源码`;case`workspace`:return`工作区包`;case`plugin`:return`插件`;case`node_modules`:return`依赖`;default:return e}}function m(e){switch(e){case`command`:return`命令`;case`build`:return`构建`;case`diagnostic`:return`诊断`;case`hmr`:return`HMR`;case`system`:return`系统`;default:return e}}function h(e){switch(e){case`info`:return`信息`;case`success`:return`成功`;case`warning`:return`警告`;case`error`:return`错误`;default:return e}}function g(e){return e??`dashboard`}function _(e){return e}function v(e){return{label:h(e.level),tone:_(e.level)}}function y(e){return e>0?`error`:`info`}function b(e){return{label:e.latestTimestamp?`${e.count} 条`:`错误 ${e.errorCount}`,tone:y(e.errorCount)}}function x(e){return typeof e!=`number`||Number.isNaN(e)||e<0?`未记录`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?1:2)} s`:`${e} ms`}function S(e){let t=[m(e.kind),g(e.source),e.timestamp];return typeof e.durationMs==`number`&&Number.isFinite(e.durationMs)&&e.durationMs>=0&&t.push(x(e.durationMs)),t.join(` · `)}var C=[`command`,`build`,`diagnostic`,`hmr`,`system`],w=[`info`,`success`,`warning`,`error`];function T(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function E(e){return typeof e==`string`&&C.includes(e)?e:`system`}function D(e){return typeof e==`string`&&w.includes(e)?e:`info`}function O(e,t){return typeof e==`string`&&e.trim()?e:t}function k(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0}function A(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 j(e,t){return{id:O(e.id,`dashboard-runtime-event-${t}`),kind:E(e.kind),level:D(e.level),title:O(e.title,`untitled event`),detail:O(e.detail,`no event detail`),timestamp:O(e.timestamp,`—`),source:O(e.source,`dashboard`),durationMs:k(e.durationMs),tags:A(e.tags)}}function M(e){return{count:1,errorCount:+(e.level===`error`),latestTimestamp:e.timestamp,durationTotal:e.durationMs??0,timedCount:+(typeof e.durationMs==`number`)}}function N(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 P(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 F(e){return{...e,averageDuration:x(e.averageDurationMs)}}function I(e,t){return T(e)?j(e,t):null}function L(e){let t=(Array.isArray(e)?e:[e]).map((e,t)=>I(e,t)).filter(e=>!!e),n=new Map;for(let e of t)n.set(e.id,e);return[...n.values()]}function R(e){let t=new Map;for(let n of e){let e=n.source??`dashboard`,r=t.get(e);if(!r){t.set(e,M(n));continue}t.set(e,N(r,n))}return Array.from(t,([e,t])=>P(e,t)).sort((e,t)=>t.count-e.count||e.source.localeCompare(t.source,`zh-CN`))}function z(e){return e.map(e=>F(e))}var B=Symbol(`dashboard-workspace`);function V(){return new Date().toLocaleTimeString(`zh-CN`,{hour12:!1})}function H(e,t){return{label:e,value:t}}function U(e){return e}function W(e){return e}function G(e){return e}function K(e){return e}function q(){let r=t(window.__WEAPP_VITE_ANALYZE_RESULT__??null),a=t(window.__WEAPP_VITE_DASHBOARD_EVENTS__?.length?L(window.__WEAPP_VITE_DASHBOARD_EVENTS__):L(o)),d=t(0),f=t(r.value?V():`—`),p=i(()=>{let e=r.value;if(!e)return{packageCount:0,moduleCount:0,duplicateCount:0,totalBytes:0};let t=e.packages.flatMap(e=>e.files);return{packageCount:e.packages.length,moduleCount:e.modules.length,duplicateCount:e.modules.filter(e=>e.packages.length>1).length,totalBytes:t.reduce((e,t)=>e+(t.size??0),0)}}),m=i(()=>r.value?`payload ready`:`awaiting payload`),h=i(()=>r.value?`${p.value.packageCount} 个包 · ${p.value.moduleCount} 个模块`:`尚未接收到 CLI analyze 数据`),g=i(()=>a.value[0]??null),_=i(()=>{let e=a.value.filter(e=>e.level===`error`).length,t=a.value.filter(e=>e.level===`warning`).length,n=a.value.filter(e=>e.kind===`command`).length,r=a.value.filter(e=>typeof e.durationMs==`number`),i=r.length>0?Math.round(r.reduce((e,t)=>e+(t.durationMs??0),0)/r.length):void 0;return[H(`总事件数`,String(a.value.length)),H(`命令事件`,String(n)),H(`已记录耗时`,String(r.length)),H(`平均耗时`,x(i)),H(`警告事件`,String(t)),H(`错误事件`,String(e))]}),v=i(()=>R(a.value)),y=i(()=>[U({label:`页面骨架`,value:`4 个`,iconName:`metric-ready`}),U({label:`连接状态`,value:r.value?`已接入 payload`:`等待注入`,iconName:r.value?`status-live`:`metric-health`}),U({label:`数据同步`,value:`${d.value} 次`,iconName:`metric-latency`}),U({label:`产物体积`,value:r.value?u(p.value.totalBytes):`未载入`,iconName:`metric-quality`}),U({label:`运行事件`,value:`${a.value.length} 条`,iconName:g.value?.level===`error`?`metric-health`:`metric-time`})]),b=i(()=>r.value?[W({label:`重新分析当前工程`,command:`weapp-vite analyze`,note:`最近同步于 ${f.value},当前可读取 ${p.value.packageCount} 个包。`}),W({label:`进入构建联调`,command:`weapp-vite build --ui`,note:`当前产物总体积 ${u(p.value.totalBytes)},适合继续核对 chunk 结构。`}),W({label:`观察开发态更新`,command:`weapp-vite dev --ui`,note:`已记录 ${d.value} 次 payload 同步,后续可继续接入更细粒度事件。`})]:c),S=i(()=>{let e=[...l];for(let t of a.value.slice(0,4))e.unshift(G({time:t.timestamp,title:t.title,summary:t.detail,tone:t.level===`error`||t.level===`warning`?`default`:`live`}));return r.value&&e.unshift(G({time:f.value,title:`workspace payload received`,summary:`已收到一份真实 analyze 结果,包含 ${p.value.packageCount} 个包和 ${p.value.moduleCount} 个模块。`,tone:`live`})),e}),C=i(()=>{let e=[...s],t=g.value;return t&&e.unshift(K({label:`最新运行事件`,detail:`${t.title} · ${t.detail}`,status:t.level})),r.value?[K({label:`实时分析状态`,detail:`已接入 payload,当前记录 ${p.value.duplicateCount} 个跨包复用模块。`,status:`在线`}),K({label:`产物规模`,detail:`总产物体积 ${u(p.value.totalBytes)},可继续进入分析页查看 treemap 与最大文件。`,status:`可分析`}),...e]:[K({label:`CLI 注入链路`,detail:`尚未接收到 analyze payload,当前页面以空态方式工作。`,status:`待接入`}),...e]}),w=e=>{let t=L(e);if(t.length===0)return;let n=[...t,...a.value],r=new Map;for(let e of n)r.set(e.id,e);a.value=[...r.values()].slice(0,24),window.__WEAPP_VITE_DASHBOARD_EVENTS__=[...a.value]},T=()=>{window.__WEAPP_VITE_ANALYZE_RESULT__&&(r.value=window.__WEAPP_VITE_ANALYZE_RESULT__,d.value+=1,f.value=V())},E=e=>{let t=e instanceof CustomEvent?e.detail:null;w(Array.isArray(t)?t:t?[t]:null)};return e(()=>{window.addEventListener(`weapp-analyze:update`,T),window.addEventListener(`weapp-dashboard:event`,E),T(),w(window.__WEAPP_VITE_DASHBOARD_EVENTS__)}),n(()=>{window.removeEventListener(`weapp-analyze:update`,T),window.removeEventListener(`weapp-dashboard:event`,E)}),{resultRef:r,updateCount:d,lastUpdatedAt:f,statusLabel:m,statusSummary:h,commandItems:b,activityItems:S,diagnostics:C,signals:y,runtimeEvents:a,latestRuntimeEvent:g,eventSummary:_,runtimeSourceSummary:v}}function J(e){r(B,e)}function Y(){let e=a(B,null);if(!e)throw Error(`[dashboard] workspace context is not available`);return e}export{R as a,f as c,d,m as f,p as g,g as h,z as i,u as l,S as m,J as n,v as o,h as p,Y as r,b as s,q as t,x as u};
|
package/dist/assets/view.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=[{value:`system`,label:`跟随系统`,iconName:`theme-system`},{value:`light`,label:`亮色`,iconName:`theme-light`},{value:`dark`,label:`暗色`,iconName:`theme-dark`}],t=[{key:`overview`,label:`总览`,iconName:`tab-overview`},{key:`packages`,label:`包与产物`,iconName:`tab-packages`},{key:`modules`,label:`模块与复用`,iconName:`tab-modules`}];export{e as n,t};
|