@thinkbuff/figma-theme
Version:
4 lines (3 loc) • 1.77 kB
JavaScript
import{definePreset as g}from"unocss";import{BaseThemeCSSVariables as c,FigmaLightThemeCSSVariables as m,generateCSSVariables as n}from"../colors/index.mjs";import{THEME_BASE_CSS as s}from"../constants.mjs";const l=Object.keys({...c,...m});function t(r,e=""){const o=`--figma-color-${r}`;return l.filter(i=>i!==o&&i.startsWith(o)).map(i=>`${e}${i.slice(o.length+1)}`).join("|")}const f=[[/^font-size-(\d+|\d+\/\d+)$/,([,r])=>{const[e,o]=r.split("/");return{"font-size":`${e}px`,"line-height":`${o||16}px`}},{autocomplete:"font-size-(<num>|<num>/<num>)"}],[/^(bg|border|text)-figma?(.*)$/,([,r,e])=>{if(e&&e.startsWith(r,1))return"";const o=["bg","border","text","icon"].some(i=>e?.startsWith?.(i,1))?`${e||""}`:`-${r}${e}`;return e&&!l.includes(`--figma-color${o}`)?"":{[{bg:"background-color",border:"border-color",text:"color"}[r]]:`var(--color${o})`}},{autocomplete:[`border-figma-(${t("border")}|${t("text","text-")}|${t("icon","icon-")}|${t("bg","bg-")})`,`text-figma-(${t("text")}|${t("border","border-")}|${t("icon","icon-")}|${t("bg","bg-")})`,`bg-figma-(${t("bg")}|${t("border","border-")}|${t("icon","icon-")}|${t("text","text-")})`]}],[/^(fill|stroke|outline)-figma(.*)$/,([,r,e])=>e&&!l.includes(`--figma-color${e}`)?"":{[{fill:"fill",outline:"outline-color",stroke:"stroke"}[r]]:`var(--color${e||""})`},{autocomplete:`(fill|stroke|outline)-figma-(${t("bg","bg-")}|${t("border","border-")}|${t("text","text-")}|${t("icon","icon-")})`}]],a=g((r={})=>{const{preflight:e="figma"}=r;return{name:"unocss-preset-figma-theme",rules:f,preflights:typeof e=="string"&&["figma","figjam","all"].includes(e)?[{layer:"preflights",async getCSS(){return e==="all"?[n("figma"),n("figjam"),s].join(`
`):[n(e),s].join(`
`)}}]:[]}});export{a as default,a as presetFigmaTheme};