1 | import * as Colors from '../src/props.colors.js'
|
2 |
|
3 | export 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 |