1 | export 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 |