@mochabug/adapt-web
Version:
Browser client library for Adapt automation platform
2 lines (1 loc) • 1.76 kB
JavaScript
function parseHex(hex){const m=/^#([0-9a-f]{3,8})$/i.exec(hex.trim());if(!m)return null;const h=m[1];return h.length===3?[parseInt(h[0]+h[0],16),parseInt(h[1]+h[1],16),parseInt(h[2]+h[2],16)]:h.length===6||h.length===8?[parseInt(h.slice(0,2),16),parseInt(h.slice(2,4),16),parseInt(h.slice(4,6),16)]:null}function hexToRgba(hex,alpha){const rgb=parseHex(hex);return rgb?`rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${alpha})`:hex}function resolveTheme(theme){const result={};if(theme.primary){const p=theme.primary;result["--mb-adapt-separator-active"]=hexToRgba(p,.4),result["--mb-adapt-drop-border"]=p,result["--mb-adapt-drop-header-bg"]=hexToRgba(p,.15),result["--mb-adapt-drop-center-bg"]=hexToRgba(p,.1),result["--mb-adapt-drop-split-bg"]=hexToRgba(p,.12),result["--mb-adapt-status-icon-bg"]=hexToRgba(p,.08),result["--mb-adapt-cap-spinner-color"]=p}if(theme.background&&(result["--mb-adapt-bg"]=theme.background,result["--mb-adapt-fork-tab-active-bg"]=theme.background,result["--mb-adapt-status-card-bg"]=theme.background),theme.surface&&(result["--mb-adapt-fork-bg"]=theme.surface,result["--mb-adapt-fork-tab-bg"]=theme.surface),theme.text&&(result["--mb-adapt-fork-tab-color"]=theme.text,result["--mb-adapt-status-text"]=theme.text,result["--mb-adapt-cap-color"]=theme.text),theme.textSecondary&&(result["--mb-adapt-fork-tab-inactive-color"]=theme.textSecondary),theme.border&&(result["--mb-adapt-fork-separator"]=theme.border,result["--mb-adapt-status-card-border"]=theme.border,result["--mb-adapt-cap-border-color"]=theme.border),theme.font&&(result["--mb-adapt-font"]=theme.font,result["--mb-adapt-cap-font"]=theme.font),theme.vars)for(const[key,value]of Object.entries(theme.vars))result[`--mb-adapt-${key}`]=value;return result}export{resolveTheme};