forked from mdn/yari
-
Notifications
You must be signed in to change notification settings - Fork 1
/
sd-config.js
83 lines (78 loc) · 1.92 KB
/
sd-config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const StyleDictionary = require("style-dictionary"); // eslint-disable-line node/no-unpublished-require
StyleDictionary.registerTransform({
name: "value/rewrite",
type: "value",
transformer: function (token) {
if (token.value && token.value.startsWith("$")) {
const baseTokenValue = token.value.replace("$", "");
return `{${baseTokenValue}.value}`;
}
return token.value;
},
});
StyleDictionary.registerTransform({
name: "value/tostring",
type: "value",
matcher: function (token) {
return token.attributes.category === "media-queries";
},
transformer: function (token) {
return `"${token.value}"`;
},
});
StyleDictionary.registerTransform({
name: "value/topx",
type: "value",
matcher: function (token) {
return token.attributes.category === "spacing";
},
transformer: function (token) {
return `${token.value}px`;
},
});
StyleDictionary.registerTransform({
name: "value/toint",
type: "value",
matcher: function (token) {
return token.attributes.category === "spacing";
},
transformer: function (token) {
return Number.parseInt(token.value, 10);
},
});
module.exports = {
source: ["./client/src/ui/style-dictionary/**/*.json"],
platforms: {
scss: {
transformGroup: "scss",
transforms: [
"value/rewrite",
"value/tostring",
"value/topx",
"name/cti/kebab",
],
buildPath: "./client/src/ui/vars/sass/",
prefix: "token",
files: [
{
destination: "_variables.scss",
format: "scss/variables",
options: {
outputReferences: true,
},
},
],
},
js: {
transformGroup: "js",
transforms: ["name/cti/camel", "value/rewrite", "value/toint"],
buildPath: "./client/src/ui/vars/js/",
files: [
{
destination: "variables.js",
format: "javascript/es6",
},
],
},
},
};