- button: unified press scale (active:scale-[0.97]), primary gets vertical brand gradient + tighter shadow, secondary gains subtle hover shadow - input/select/textarea: consistent focus border + 1.5px brand ring - empty states: icon in circular tinted badge with soft ring, larger rhythm - header: translucent frosted-glass surface (color-mix + backdrop blur), per-route lucide icon chip beside page title (desktop), subtitle hidden on phones to declutter - sidebar: active nav icon tinted brand via .nav-active > svg; user card avatar gets brand gradient + ring - dark theme: text-3 contrast raised (#68707e -> #747c8a) - verified live (headless): h1/chips/glass render on dashboard/timeline/ assessment/resume; tsc + vite build green; temp instrumentation reverted
2 lines
822 B
JavaScript
2 lines
822 B
JavaScript
import{r}from"./index-DH5SEuAI.js";import{g as f}from"./echarts-BIWefrIc.js";function p(){const[n,o]=r.useState(0);return r.useEffect(()=>{const s=()=>o(t=>t+1);return window.addEventListener("fp-theme-change",s),()=>window.removeEventListener("fp-theme-change",s)},[]),n}function d(n){return getComputedStyle(document.documentElement).getPropertyValue("--text-"+n).trim()||"#454e5c"}function h(n,o){const s=r.useRef(null),[t,i]=r.useState(null),u=r.useRef(n);return u.current=n,r.useEffect(()=>{if(!t)return;const e=f(t);s.current=e,e.setOption(u.current(),{notMerge:!0});const c=new ResizeObserver(()=>e.resize());return c.observe(t),()=>{c.disconnect(),e.dispose(),s.current=null}},[t]),r.useEffect(()=>{var e;(e=s.current)==null||e.setOption(u.current(),{notMerge:!0})},[t,...o]),e=>i(e)}export{h as a,d as i,p as u};
|