export function kebabify(str: string) { return str.replace(/\/|\s/g, "-").replace(/\(|\)|\[|\]/g, "") } export function ignoreStyles(mode: { name: string }) { if (mode.name === "Style") { // Ignore Figma Styles, we only want to process variables. // But the exported variables.json includes Figma Styles too. return false } return true } // Some tokens are the same for all themes. Group them into this theme. export const FALLBACK_THEME = "base" // The variables exported from Figma are not grouped by theme. // We used this function to help us group by theme. // Returns the theme the given token belongs to by matching theme names inside // the token name. export function getThemeForToken( token: string | { name: string }, mode: { name: string }, themes: Map ) { // If the given value is an object and has a name property, use that as comparison value. const compare = typeof token === "string" ? token : token.name const theme = Array.from(themes.keys()).find((theme) => { // Match against "theme/", use that if it matches if (compare.indexOf(theme + "/") >= 0) { return theme } // Match against mode, use that if it matches if (mode.name === theme) { return theme } }) // If a theme was found, use that if (theme) { return theme } // If no theme was found, return the fallback return FALLBACK_THEME }