UNPKG

1.28 kBJavaScriptView Raw
1import * as Colors from '../src/props.colors.js'
2
3export const toFigmaTokens = props => {
4 const figmatokens = {}
5
6 props.map(([key, token]) => {
7 let meta = {}
8
9 let isLength = key.includes('size') && !key.includes('border-size')
10 let isBorder = key.includes('border-size')
11 let isRadius = key.includes('radius')
12 let isShadow = key.includes('shadow')
13 let colors = Object.keys(Colors)
14 .filter(exportName => exportName !== "default")
15 .map(hueName => hueName.toLowerCase())
16 let isColor = colors.some(color => key.includes(color))
17
18 if (isLength) meta.type = 'sizing'
19 else if (isBorder) meta.type = 'borderWidth'
20 else if (isRadius) meta.type = 'borderRadius'
21 else if (isShadow) meta.type = 'boxShadow'
22 else if (isColor) meta.type = 'color'
23 else meta.type = 'other'
24
25 if (!(meta.type in figmatokens)) figmatokens[meta.type] = {}
26
27 if (isColor) {
28 let color = /--(.+?)-/.exec(key)[1]
29 if (!(color in figmatokens[meta.type])) figmatokens[meta.type][color] = {}
30 figmatokens[meta.type][color][key] = {
31 value: token,
32 ...meta,
33 }
34 } else {
35 figmatokens[meta.type][key] = {
36 value: token,
37 ...meta,
38 }
39 }
40 })
41
42 return figmatokens
43}
\No newline at end of file