UNPKG

1.22 kBJavaScriptView Raw
1export const toFigmaTokens = props => {
2 const figmatokens = {}
3
4 props.map(([key, token]) => {
5 let meta = {}
6
7 let isLength = key.includes('size') && !key.includes('border-size')
8 let isBorder = key.includes('border-size')
9 let isRadius = key.includes('radius')
10 let isShadow = key.includes('shadow')
11 let colors = ['gray','red','pink','grape','violet','indigo','blue','cyan','teal','green','lime','yellow','orange']
12 let isColor = colors.some(color => key.includes(color))
13
14 if (isLength) meta.type = 'sizing'
15 else if (isBorder) meta.type = 'borderWidth'
16 else if (isRadius) meta.type = 'borderRadius'
17 else if (isShadow) meta.type = 'boxShadow'
18 else if (isColor) meta.type = 'color'
19 else meta.type = 'other'
20
21 if (!(meta.type in figmatokens)) figmatokens[meta.type] = {}
22
23 if (isColor) {
24 let color = /--(.+?)-/.exec(key)[1]
25 if (!(color in figmatokens[meta.type])) figmatokens[meta.type][color] = {}
26 figmatokens[meta.type][color][key] = {
27 value: token,
28 ...meta,
29 }
30 } else {
31 figmatokens[meta.type][key] = {
32 value: token,
33 ...meta,
34 }
35 }
36 })
37
38 return figmatokens
39}
\No newline at end of file