├── .gitattributes
├── .gitignore
├── LICENSE
├── README.html
├── README.md
├── design-tokens
├── css
│ ├── style.css
│ └── tokens-page-style.css
├── fav-ico
│ ├── android-chrome-192x192.png
│ ├── android-chrome-384x384.png
│ ├── apple-touch-icon.png
│ ├── browserconfig.xml
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── mstile-150x150.png
│ ├── site.webmanifest
│ └── thumb.png
├── images
│ └── wz-logo.svg
├── index.html
├── scripts
│ └── main.js
└── source
│ ├── pug
│ └── index.pug
│ └── scss
│ ├── base.scss
│ ├── font-styles.scss
│ ├── style.scss
│ ├── tokens-page-style.scss
│ └── tokens
│ ├── _colors.scss
│ ├── _grids.scss
│ ├── _spacers.scss
│ └── _typography.scss
├── prepros-6.config
├── promo
├── css
│ ├── normalize.css
│ └── style.css
├── fav-ico
│ ├── android-chrome-192x192.png
│ ├── android-chrome-384x384.png
│ ├── apple-touch-icon.png
│ ├── browserconfig.xml
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── mstile-150x150.png
│ ├── site.webmanifest
│ └── thumb.png
├── images
│ ├── figma-logo.svg
│ ├── ipad-sprite.png
│ ├── ipad.png
│ ├── iphone-sprite.png
│ ├── iphone.png
│ ├── macbook-sprite.png
│ ├── macbook.png
│ └── wz-logo.svg
├── index.html
├── scripts
│ └── main.js
└── source
│ ├── pug
│ └── index.pug
│ └── scss
│ ├── base.scss
│ ├── font-styles.scss
│ ├── style.scss
│ └── tokens
│ ├── _colors.scss
│ ├── _grids.scss
│ ├── _spacers.scss
│ └── _typography.scss
├── style-dictionary
├── README.md
├── build.js
├── build
│ └── web
│ │ ├── _colors.scss
│ │ ├── _grids.scss
│ │ ├── _spacers.scss
│ │ └── _typography.scss
├── package.json
├── src
│ └── base.json
└── yarn.lock
└── yarn-error.log
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS generated files #
2 | ######################
3 | .DS_Store
4 | .DS_Store?
5 |
6 | # node modules
7 | node_modules
8 | /node_modules
9 | style-dictionary/node_modules
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Pavel Laptev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | README.md
5 |
6 |
7 | wunderzin
8 | A couple of days ago made a free UI Kit in Figma of a nonexistent online magazine Wunderzine. I made it for a demonstration. And today I want to share with you how to maintain frontend works — generate design tokens using Figma API and a few scripts.
9 | https://medium.com/@PavelLaptev/design-tokens-with-figma-aef25c42430f
10 |
11 |
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # wunderzin
2 |
3 | A couple of days ago made a free UI Kit in Figma of a nonexistent online magazine Wunderzine. I made it for a demonstration. And today I want to share with you how to maintain frontend works — generate design tokens using Figma API and a few scripts.
4 |
5 | https://medium.com/@PavelLaptev/design-tokens-with-figma-aef25c42430f
6 |
--------------------------------------------------------------------------------
/design-tokens/css/style.css:
--------------------------------------------------------------------------------
1 | body{background:#fcffea}hr{border:none;border-top:2px dashed rgba(0, 0, 0, 0.1)}.wrapper{max-width:1600px;padding:0 100px}@media screen and (max-width:1024px){.wrapper{padding:0 60px}}@media screen and (max-width:375px){.wrapper{padding:0 20px}}.cta-btn{position:relative;cursor:pointer;padding:0 20px;min-width:220px;font-family:Arimo, sans-serif;font-weight:bold;font-size:16px;height:52px;border-radius:4px;border:none;-webkit-transition:all 0.1s;-o-transition:all 0.1s;transition:all 0.1s}.cta-btn_primary-dark{cursor:s-resize;padding:0 20px;background:#805be8;color:white}.cta-btn_primary-dark:hover{background:#5d2ee2}.cta-btn_primary-dark:focus{background:#5d2ee2}h1{font-family:Zilla Slab, serif;font-size:66px;line-height:90%;color:#313131}@media screen and (max-width:1024px){h1{font-size:56px;line-height:90%}}@media screen and (max-width:375px){h1{font-size:40px;line-height:90%}}h2{font-family:Zilla Slab, serif;font-size:46px;line-height:90%;color:#313131}h3{font-family:Zilla Slab, serif;font-size:36px;line-height:90%;color:#313131}h4{font-family:Arimo, serif;font-size:24px;line-height:120%;color:#313131}a{cursor:pointer;font-family:Arimo, Arimo-Regular, serif;line-height:150%;color:#ff8989;-webkit-transition:all 0.1s;-o-transition:all 0.1s;transition:all 0.1s}a:hover{text-decoration:none}.caption-large{font-family:Arimo, serif;font-size:16px;line-height:140%;color:#313131;text-transform:uppercase;letter-spacing:3.2px}.caption-medium{font-family:Arimo, serif;font-size:12px;line-height:140%;color:#313131;text-transform:uppercase;letter-spacing:2.4px}
--------------------------------------------------------------------------------
/design-tokens/css/tokens-page-style.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 | .btn-loading-hide {
6 | opacity: 0; }
7 |
8 | .btn-loading {
9 | display: block;
10 | position: absolute;
11 | width: 100%;
12 | height: 100%;
13 | background: #805be8;
14 | border-radius: 4px;
15 | top: 0;
16 | left: 0; }
17 | .btn-loading__loader {
18 | display: block;
19 | position: absolute;
20 | top: calc(50% - 14px);
21 | left: calc(50% - 14px);
22 | width: 28px;
23 | height: 28px;
24 | border-radius: 20px;
25 | background: white;
26 | -webkit-animation: ld-flip 2s infinite;
27 | animation: ld-flip 2s infinite;
28 | -webkit-transform: scaleY(1) scaleX(1);
29 | -ms-transform: scaleY(1) scaleX(1);
30 | transform: scaleY(1) scaleX(1); }
31 |
32 | @-webkit-keyframes ld-flip {
33 | 0%,
34 | 25%,
35 | 50%,
36 | 75%,
37 | to {
38 | -webkit-animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1);
39 | animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); }
40 | 0%,
41 | to {
42 | -webkit-transform: rotateY(0deg) rotateX(0deg);
43 | transform: rotateY(0deg) rotateX(0deg); }
44 | 25% {
45 | -webkit-transform: rotateY(180deg) rotateX(0deg);
46 | transform: rotateY(180deg) rotateX(0deg); }
47 | 50% {
48 | -webkit-transform: rotateY(180deg) rotateX(180deg);
49 | transform: rotateY(180deg) rotateX(180deg); }
50 | 75% {
51 | -webkit-transform: rotateY(0deg) rotateX(180deg);
52 | transform: rotateY(0deg) rotateX(180deg); } }
53 |
54 | @keyframes ld-flip {
55 | 0%,
56 | 25%,
57 | 50%,
58 | 75%,
59 | to {
60 | -webkit-animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1);
61 | animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); }
62 | 0%,
63 | to {
64 | -webkit-transform: rotateY(0deg) rotateX(0deg);
65 | transform: rotateY(0deg) rotateX(0deg); }
66 | 25% {
67 | -webkit-transform: rotateY(180deg) rotateX(0deg);
68 | transform: rotateY(180deg) rotateX(0deg); }
69 | 50% {
70 | -webkit-transform: rotateY(180deg) rotateX(180deg);
71 | transform: rotateY(180deg) rotateX(180deg); }
72 | 75% {
73 | -webkit-transform: rotateY(0deg) rotateX(180deg);
74 | transform: rotateY(0deg) rotateX(180deg); } }
75 |
76 | .tp-header {
77 | margin-top: 40px; }
78 | .tp-header__wz-logo {
79 | width: 210px;
80 | height: 23px;
81 | background-image: url(../images/wz-logo.svg);
82 | background-size: cover;
83 | background-repeat: no-repeat; }
84 |
85 | .tp-get-tokens-block {
86 | margin: 40px 0 60px; }
87 |
88 | .tp-previews-block {
89 | margin-top: 60px; }
90 | .tp-previews-block__section {
91 | width: 100%;
92 | margin-bottom: 40px; }
93 | .tp-previews-block__section span {
94 | opacity: 0.8; }
95 | .tp-previews-block__section iframe {
96 | margin: 20px 0;
97 | width: 100%;
98 | height: 450px;
99 | border: none;
100 | background: rgba(0, 0, 0, 0.05); }
101 |
102 | .tp-footer {
103 | margin: 40px 0 60px;
104 | display: -webkit-box;
105 | display: -ms-flexbox;
106 | display: flex;
107 | -webkit-box-pack: justify;
108 | -ms-flex-pack: justify;
109 | justify-content: space-between; }
110 | .tp-footer span {
111 | font-size: 18px; }
112 |
--------------------------------------------------------------------------------
/design-tokens/fav-ico/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/android-chrome-192x192.png
--------------------------------------------------------------------------------
/design-tokens/fav-ico/android-chrome-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/android-chrome-384x384.png
--------------------------------------------------------------------------------
/design-tokens/fav-ico/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/apple-touch-icon.png
--------------------------------------------------------------------------------
/design-tokens/fav-ico/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #da532c
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/design-tokens/fav-ico/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/favicon-16x16.png
--------------------------------------------------------------------------------
/design-tokens/fav-ico/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/favicon-32x32.png
--------------------------------------------------------------------------------
/design-tokens/fav-ico/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/favicon.ico
--------------------------------------------------------------------------------
/design-tokens/fav-ico/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/mstile-150x150.png
--------------------------------------------------------------------------------
/design-tokens/fav-ico/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "short_name": "",
4 | "icons": [
5 | {
6 | "src": "/android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "/android-chrome-384x384.png",
12 | "sizes": "384x384",
13 | "type": "image/png"
14 | }
15 | ],
16 | "theme_color": "#ffffff",
17 | "background_color": "#ffffff",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/design-tokens/fav-ico/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/design-tokens/fav-ico/thumb.png
--------------------------------------------------------------------------------
/design-tokens/images/wz-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/design-tokens/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Wûnderzin Design Tokens
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
27 |
28 |
Design Tokens
29 |
30 | Generate Tokens
33 |
34 |
35 |
36 |
37 | Grids
38 |
39 |
40 |
41 | Spacers
42 |
43 |
44 |
45 | Colors
46 |
47 |
48 |
49 | Typography
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/design-tokens/scripts/main.js:
--------------------------------------------------------------------------------
1 | const getJSONBtn = document.getElementById("get-json-btn");
2 | const loaderDiv = document.querySelector(".btn-loading");
3 |
4 | function download(content, fileName, contentType) {
5 | var a = document.createElement("a");
6 | var file = new Blob([content], { type: contentType });
7 | a.href = URL.createObjectURL(file);
8 | a.download = fileName;
9 | a.click();
10 | }
11 |
12 | ////////////////////////////////////////////////
13 |
14 | function getPalette(stylesArtboard) {
15 | // empty "palette obj" wheree we will store all colors
16 | const palette = {};
17 | // get "palette" artboard
18 | const paletteAtrboard = stylesArtboard.filter(item => {
19 | return item.name === "palette";
20 | })[0].children;
21 |
22 | // get colors from each children
23 | paletteAtrboard.map(item => {
24 | function rbaObj(obj) {
25 | return item.fills[0].color[obj] * 255;
26 | }
27 |
28 | const colorObj = {
29 | [item.name]: {
30 | value: `rgba(${rbaObj("r")}, ${rbaObj("g")}, ${rbaObj("b")}, ${
31 | item.fills[0].color.a
32 | })`,
33 | type: "color"
34 | }
35 | };
36 |
37 | Object.assign(palette, colorObj);
38 | });
39 |
40 | return palette;
41 | }
42 |
43 | function getGrids(stylesArtboard) {
44 | // empty "grids obj" wheree we will store all colors
45 | const grids = {};
46 | // get "grids" artboard
47 | const gridsAtrboard = stylesArtboard.filter(item => {
48 | return item.name === "grids";
49 | })[0].children;
50 |
51 | gridsAtrboard.map(item => {
52 | const gridObj = {
53 | [item.name]: {
54 | count: {
55 | value: item.layoutGrids[0].count,
56 | type: "grids"
57 | },
58 | gutter: {
59 | value: `${item.layoutGrids[0].gutterSize}px`,
60 | type: "grids"
61 | },
62 | offset: {
63 | value: `${item.layoutGrids[0].offset}px`,
64 | type: "grids"
65 | },
66 | width: {
67 | value: `${item.absoluteBoundingBox.width}px`,
68 | type: "grids"
69 | }
70 | }
71 | };
72 |
73 | Object.assign(grids, gridObj);
74 | });
75 |
76 | return grids;
77 | }
78 |
79 | function getSpacers(stylesArtboard) {
80 | // empty "spacers obj" wheree we will store all colors
81 | const spacers = {};
82 | // get "spacers" artboard
83 | const spacersAtrboard = stylesArtboard.filter(item => {
84 | return item.name === "spacers";
85 | })[0].children;
86 |
87 | spacersAtrboard.map(item => {
88 | const spacerObj = {
89 | [item.name]: {
90 | value: `${item.absoluteBoundingBox.height}px`,
91 | type: "spacers"
92 | }
93 | };
94 |
95 | Object.assign(spacers, spacerObj);
96 | });
97 |
98 | return spacers;
99 | }
100 |
101 | function getFontStyles(stylesArtboard) {
102 | // empty "spacers obj" wheree we will store all colors
103 | const fontStyles = {};
104 | // get "spacers" artboard
105 | const fontStylesAtrboard = stylesArtboard.filter(item => {
106 | return item.name === "typography";
107 | })[0].children;
108 |
109 | fontStylesAtrboard.map((fontItem, i) => {
110 | if (fontItem.children) {
111 | let subFonts = {};
112 |
113 | // get all sub fonts
114 | fontItem.children.map(subFontItem => {
115 | let subFontObj = {
116 | [subFontItem.name]: {
117 | family: {
118 | value: `${subFontItem.style.fontFamily}`,
119 | type: "typography"
120 | },
121 | size: {
122 | value: `${subFontItem.style.fontSize}px`,
123 | type: "typography"
124 | },
125 | weight: {
126 | value: subFontItem.style.fontWeight,
127 | type: "typography"
128 | },
129 | lineheight: {
130 | value: `${subFontItem.style.lineHeightPercent}%`,
131 | type: "typography"
132 | },
133 | spacing: {
134 | value:
135 | subFontItem.style.letterSpacing !== 0
136 | ? `${subFontItem.style.letterSpacing}px`
137 | : "normal",
138 | type: "typography"
139 | }
140 | }
141 | };
142 | // merge multiple subfonts objects into one
143 | Object.assign(subFonts, subFontObj);
144 | });
145 |
146 | //
147 | let fontObj = {
148 | [fontItem.name]: subFonts
149 | };
150 |
151 | Object.assign(fontStyles, fontObj);
152 | } else {
153 | let fontObj = {
154 | [fontItem.name]: {
155 | family: {
156 | value: `${fontItem.style.fontFamily}, ${
157 | fontItem.style.fontPostScriptName
158 | }`,
159 | type: "typography"
160 | },
161 | size: {
162 | value: fontItem.style.fontSize,
163 | type: "typography"
164 | },
165 | weight: {
166 | value: fontItem.style.fontWeight,
167 | type: "typography"
168 | },
169 | lineheight: {
170 | value: `${fontItem.style.lineHeightPercent}%`,
171 | type: "typography"
172 | },
173 | spacing: {
174 | value:
175 | fontItem.style.letterSpacing !== 0
176 | ? `${fontItem.style.letterSpacing}px`
177 | : "normal",
178 | type: "typography"
179 | }
180 | }
181 | };
182 |
183 | Object.assign(fontStyles, fontObj);
184 | }
185 | });
186 |
187 | return fontStyles;
188 | }
189 |
190 | // main function
191 | async function getStylesArtboard(figmaApiKey, figmaId) {
192 | const result = await fetch("https://api.figma.com/v1/files/" + figmaId, {
193 | method: "GET",
194 | headers: {
195 | "X-Figma-Token": figmaApiKey
196 | }
197 | });
198 | const figmaTreeStructure = await result.json();
199 |
200 | const stylesArtboard = figmaTreeStructure.document.children.filter(item => {
201 | return item.name === "styles";
202 | })[0].children;
203 |
204 | baseTokeensJSON = {
205 | token: {
206 | grids: {},
207 | spacers: {},
208 | colors: {},
209 | fonts: {}
210 | }
211 | };
212 |
213 | Object.assign(baseTokeensJSON.token.grids, getGrids(stylesArtboard));
214 | Object.assign(baseTokeensJSON.token.spacers, getSpacers(stylesArtboard));
215 | Object.assign(baseTokeensJSON.token.colors, getPalette(stylesArtboard));
216 | Object.assign(baseTokeensJSON.token.fonts, getFontStyles(stylesArtboard));
217 |
218 | loaderDiv.classList.add("btn-loading-hide");
219 | download(
220 | JSON.stringify(baseTokeensJSON, null, 4),
221 | "base.json",
222 | "application/json"
223 | );
224 | }
225 |
226 | getJSONBtn.onclick = function() {
227 | loaderDiv.classList.remove("btn-loading-hide");
228 | getStylesArtboard(
229 | "6378-8b5cb2d6-7689-4b50-a0c4-f326bc9fc9af",
230 | "JNIu97dR9CPt6kTg3grNFc7n"
231 | );
232 | };
233 |
--------------------------------------------------------------------------------
/design-tokens/source/pug/index.pug:
--------------------------------------------------------------------------------
1 | doctype html
2 | html.no-js(lang="")
3 | head
4 | meta(charset="utf-8")
5 | meta(http-equiv="x-ua-compatible" content="ie=edge")
6 | title Wûnderzin Design Tokens
7 | meta(name="description" content="Design tokens generator from Figma")
8 | meta(name="viewport" content="width=device-width, initial-scale=1")
9 |
10 | link(rel='apple-touch-icon', sizes='180x180', href='fav-ico/apple-touch-icon.png')
11 | link(rel='icon', type='image/png', sizes='32x32', href='fav-ico/favicon-32x32.png')
12 | link(rel='icon', type='image/png', sizes='16x16', href='fav-ico/favicon-16x16.png')
13 | link(rel='manifest', href='fav-ico/site.webmanifest')
14 | meta(name='msapplication-TileColor', content='#da532c')
15 | meta(name='theme-color', content='#ffffff')
16 |
17 | meta(property='og:image', content='fav-ico/thumb.png')
18 | meta(property='og:image:type', content='image/jpeg')
19 | meta(property='og:image:width', content='800')
20 | meta(property='og:image:height', content='520')
21 |
22 | link(href="https://fonts.googleapis.com/css?family=Arimo:400,400i,700,700i|Zilla+Slab:700" rel="stylesheet")
23 | link(rel="stylesheet" href="css/style.css")
24 | link(rel="stylesheet" href="css/tokens-page-style.css")
25 | body
26 | .wrapper
27 | .tp-header
28 | a(href="https://www.figma.com/file/JNIu97dR9CPt6kTg3grNFc7n/W%C3%BBnderzin-UI-Kit?node-id=0%3A1" target="_blank")
29 | .tp-header__wz-logo
30 | .tp-get-tokens-block
31 | h1 Design Tokens
32 | button#get-json-btn.cta-btn.cta-btn_primary-dark
33 | .btn-loading.btn-loading-hide
34 | .btn-loading__loader
35 | span Generate Tokens
36 | .tp-previews-block
37 | //- h3 Figma previews
38 | .tp-previews-block__section
39 | iframe(src='https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FJNIu97dR9CPt6kTg3grNFc7n%2FW%25C3%25BBnderzin-UI-Kit%3Fnode-id%3D181%253A0', allowfullscreen='')
40 | span.caption-medium Grids
41 | hr
42 | .tp-previews-block__section
43 | iframe(src='https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FJNIu97dR9CPt6kTg3grNFc7n%2FW%25C3%25BBnderzin-UI-Kit%3Fnode-id%3D45%253A117', allowfullscreen='')
44 | span.caption-medium Spacers
45 | hr
46 | .tp-previews-block__section
47 | iframe(src='https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FJNIu97dR9CPt6kTg3grNFc7n%2FW%25C3%25BBnderzin-UI-Kit%3Fnode-id%3D1%253A26', allowfullscreen='')
48 | span.caption-medium Colors
49 | hr
50 | .tp-previews-block__section
51 | iframe(src='https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FJNIu97dR9CPt6kTg3grNFc7n%2FW%25C3%25BBnderzin-UI-Kit%3Fnode-id%3D13%253A3', allowfullscreen='')
52 | span.caption-medium Typography
53 | hr
54 | .tp-footer
55 | span ☜
56 | a(href="https://medium.com/@PavelLaptev/design-tokens-with-figma-aef25c42430f") back to the article
57 | a(href="https://github.com/PavelLaptev/wunderzin" target="_blank") Github
58 |
59 |
60 |
61 | script(src="scripts/main.js")
--------------------------------------------------------------------------------
/design-tokens/source/scss/base.scss:
--------------------------------------------------------------------------------
1 | // tokens
2 | @import "tokens/_colors";
3 | @import "tokens/_grids";
4 | @import "tokens/_typography";
5 |
6 | body {
7 | background: $token-colors-lemo;
8 | }
9 |
10 | hr {
11 | border: none;
12 | border-top: 2px dashed rgba(0, 0, 0, 0.1);
13 | }
14 |
15 | .wrapper {
16 | max-width: $token-grids-desktop-width;
17 | padding: 0 $token-grids-desktop-offset;
18 | @media screen and (max-width: $token-grids-tablet-width) {
19 | padding: 0 $token-grids-tablet-offset;
20 | }
21 | @media screen and (max-width: $token-grids-mobile-width) {
22 | padding: 0 $token-grids-mobile-offset;
23 | }
24 | }
25 |
26 | .cta-btn {
27 | position: relative;
28 | cursor: pointer;
29 | padding: 0 20px;
30 | min-width: 220px;
31 | font-family: $token-fonts-content-desktop-family, sans-serif;
32 | font-weight: bold;
33 | font-size: 16px;
34 | height: 52px;
35 | border-radius: 4px;
36 | border: none;
37 | transition: all 0.1s;
38 | &_primary-dark {
39 | cursor: s-resize;
40 | padding: 0 20px;
41 | background: $token-colors-supernova;
42 | color: $token-colors-blank;
43 | &:hover {
44 | background: darken($token-colors-supernova, 10);
45 | }
46 | &:focus {
47 | background: darken($token-colors-supernova, 10);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/design-tokens/source/scss/font-styles.scss:
--------------------------------------------------------------------------------
1 | // tokens
2 | @import "tokens/_colors";
3 | @import "tokens/_typography";
4 |
5 | h1 {
6 | font-family: $token-fonts-h-1-desktop-family, serif;
7 | font-size: $token-fonts-h-1-desktop-size;
8 | line-height: $token-fonts-h-1-desktop-lineheight;
9 | color: $token-colors-puma;
10 | @media screen and (max-width: $token-grids-tablet-width) {
11 | font-size: $token-fonts-h-1-tablet-size;
12 | line-height: $token-fonts-h-1-tablet-lineheight;
13 | }
14 | @media screen and (max-width: $token-grids-mobile-width) {
15 | font-size: $token-fonts-h-1-mobile-size;
16 | line-height: $token-fonts-h-1-mobile-lineheight;
17 | }
18 | }
19 |
20 | h2 {
21 | font-family: $token-fonts-h-2-desktop-family, serif;
22 | font-size: $token-fonts-h-2-desktop-size;
23 | line-height: $token-fonts-h-2-desktop-lineheight;
24 | color: $token-colors-puma;
25 | }
26 |
27 | h3 {
28 | font-family: $token-fonts-h-3-desktop-family, serif;
29 | font-size: $token-fonts-h-3-desktop-size;
30 | line-height: $token-fonts-h-3-desktop-lineheight;
31 | color: $token-colors-puma;
32 | }
33 |
34 | h4 {
35 | font-family: $token-fonts-h-4-desktop-family, serif;
36 | font-size: $token-fonts-h-4-desktop-size;
37 | line-height: $token-fonts-h-4-desktop-lineheight;
38 | color: $token-colors-puma;
39 | }
40 |
41 | a {
42 | cursor: pointer;
43 | font-family: $token-fonts-link-family, serif;
44 | line-height: $token-fonts-link-lineheight;
45 | color: $token-colors-coral;
46 | transition: all 0.1s;
47 | &:hover {
48 | text-decoration: none;
49 | }
50 | }
51 |
52 | .caption-large {
53 | font-family: $token-fonts-caption-large-family, serif;
54 | font-size: $token-fonts-caption-large-size;
55 | line-height: $token-fonts-caption-large-lineheight;
56 | color: $token-colors-puma;
57 | text-transform: uppercase;
58 | letter-spacing: $token-fonts-caption-large-spacing;
59 | }
60 |
61 | .caption-medium {
62 | font-family: $token-fonts-caption-medium-family, serif;
63 | font-size: $token-fonts-caption-medium-size;
64 | line-height: $token-fonts-caption-medium-lineheight;
65 | color: $token-colors-puma;
66 | text-transform: uppercase;
67 | letter-spacing: $token-fonts-caption-medium-spacing;
68 | }
69 |
--------------------------------------------------------------------------------
/design-tokens/source/scss/style.scss:
--------------------------------------------------------------------------------
1 | // base
2 | @import "base";
3 | @import "font-styles";
4 |
--------------------------------------------------------------------------------
/design-tokens/source/scss/tokens-page-style.scss:
--------------------------------------------------------------------------------
1 | @import "tokens/_colors";
2 |
3 | .btn-loading-hide {
4 | opacity: 0;
5 | }
6 |
7 | .btn-loading {
8 | display: block;
9 | position: absolute;
10 | width: 100%;
11 | height: 100%;
12 | background: $token-colors-supernova;
13 | border-radius: 4px;
14 | top: 0;
15 | left: 0;
16 | &__loader {
17 | display: block;
18 | position: absolute;
19 | top: calc(50% - 14px);
20 | left: calc(50% - 14px);
21 | width: 28px;
22 | height: 28px;
23 | border-radius: 20px;
24 | background: $token-colors-blank;
25 | animation: ld-flip 2s infinite;
26 | transform: scaleY(1) scaleX(1);
27 | }
28 | }
29 |
30 | @keyframes ld-flip {
31 | 0%,
32 | 25%,
33 | 50%,
34 | 75%,
35 | to {
36 | animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1);
37 | }
38 |
39 | 0%,
40 | to {
41 | transform: rotateY(0deg) rotateX(0deg);
42 | }
43 |
44 | 25% {
45 | transform: rotateY(180deg) rotateX(0deg);
46 | }
47 |
48 | 50% {
49 | transform: rotateY(180deg) rotateX(180deg);
50 | }
51 |
52 | 75% {
53 | transform: rotateY(0deg) rotateX(180deg);
54 | }
55 | }
56 |
57 | .tp {
58 | &-header {
59 | margin-top: 40px;
60 | &__wz-logo {
61 | width: 210px;
62 | height: 23px;
63 | background-image: url(../images/wz-logo.svg);
64 | background-size: cover;
65 | background-repeat: no-repeat;
66 | }
67 | }
68 |
69 | &-get-tokens-block {
70 | margin: 40px 0 60px;
71 | }
72 |
73 | &-previews-block {
74 | margin-top: 60px;
75 | &__section {
76 | width: 100%;
77 | margin-bottom: 40px;
78 | span {
79 | opacity: 0.8;
80 | }
81 | iframe {
82 | margin: 20px 0;
83 | width: 100%;
84 | height: 450px;
85 | border: none;
86 | background: rgba(0, 0, 0, 0.05);
87 | }
88 | }
89 | }
90 |
91 | &-footer {
92 | margin: 40px 0 60px;
93 | display: flex;
94 | justify-content: space-between;
95 | span {
96 | font-size: 18px;
97 | }
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/design-tokens/source/scss/tokens/_colors.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-colors-lemo: rgba(252, 255, 234, 1);
7 | $token-colors-blank: rgba(255, 255, 255, 1);
8 | $token-colors-medium-lemo: rgba(237, 239, 222, 1);
9 | $token-colors-dark-lemo: rgba(141, 141, 136, 1);
10 | $token-colors-limo: rgba(238, 255, 137, 1);
11 | $token-colors-coral: rgba(255, 137, 137, 1);
12 | $token-colors-plastic-grass: rgba(74, 222, 168, 1);
13 | $token-colors-supernova: rgba(128, 91, 232, 1);
14 | $token-colors-puma: rgba(49, 49, 49, 1);
--------------------------------------------------------------------------------
/design-tokens/source/scss/tokens/_grids.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-grids-desktop-count: 12;
7 | $token-grids-desktop-gutter: 40px;
8 | $token-grids-desktop-offset: 100px;
9 | $token-grids-desktop-width: 1600px;
10 | $token-grids-tablet-count: 12;
11 | $token-grids-tablet-gutter: 40px;
12 | $token-grids-tablet-offset: 60px;
13 | $token-grids-tablet-width: 1024px;
14 | $token-grids-mobile-count: 4;
15 | $token-grids-mobile-gutter: 20px;
16 | $token-grids-mobile-offset: 20px;
17 | $token-grids-mobile-width: 375px;
--------------------------------------------------------------------------------
/design-tokens/source/scss/tokens/_spacers.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-spacers-m: 8px;
7 | $token-spacers-s: 4px;
8 | $token-spacers-l: 16px;
9 | $token-spacers-xl: 24px;
10 | $token-spacers-xxl: 32px;
--------------------------------------------------------------------------------
/design-tokens/source/scss/tokens/_typography.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-fonts-link-family: Arimo, Arimo-Regular;
7 | $token-fonts-link-size: 16;
8 | $token-fonts-link-weight: 400;
9 | $token-fonts-link-lineheight: 150%;
10 | $token-fonts-link-spacing: normal;
11 | $token-fonts-caption-large-family: Arimo;
12 | $token-fonts-caption-large-size: 16px;
13 | $token-fonts-caption-large-weight: 400;
14 | $token-fonts-caption-large-lineheight: 140%;
15 | $token-fonts-caption-large-spacing: 3.2px;
16 | $token-fonts-caption-medium-family: Arimo;
17 | $token-fonts-caption-medium-size: 12px;
18 | $token-fonts-caption-medium-weight: 400;
19 | $token-fonts-caption-medium-lineheight: 140%;
20 | $token-fonts-caption-medium-spacing: 2.4000000000000004px;
21 | $token-fonts-caption-small-family: Arimo;
22 | $token-fonts-caption-small-size: 12px;
23 | $token-fonts-caption-small-weight: 400;
24 | $token-fonts-caption-small-lineheight: 120%;
25 | $token-fonts-caption-small-spacing: 2.4000000000000004px;
26 | $token-fonts-h-1-desktop-family: Zilla Slab;
27 | $token-fonts-h-1-desktop-size: 66px;
28 | $token-fonts-h-1-desktop-weight: 700;
29 | $token-fonts-h-1-desktop-lineheight: 90%;
30 | $token-fonts-h-1-desktop-spacing: normal;
31 | $token-fonts-h-1-tablet-family: Zilla Slab;
32 | $token-fonts-h-1-tablet-size: 56px;
33 | $token-fonts-h-1-tablet-weight: 700;
34 | $token-fonts-h-1-tablet-lineheight: 90%;
35 | $token-fonts-h-1-tablet-spacing: normal;
36 | $token-fonts-h-1-mobile-family: Zilla Slab;
37 | $token-fonts-h-1-mobile-size: 40px;
38 | $token-fonts-h-1-mobile-weight: 700;
39 | $token-fonts-h-1-mobile-lineheight: 90%;
40 | $token-fonts-h-1-mobile-spacing: normal;
41 | $token-fonts-h-2-mobile-family: Zilla Slab;
42 | $token-fonts-h-2-mobile-size: 32px;
43 | $token-fonts-h-2-mobile-weight: 700;
44 | $token-fonts-h-2-mobile-lineheight: 90%;
45 | $token-fonts-h-2-mobile-spacing: normal;
46 | $token-fonts-h-2-desktop-family: Zilla Slab;
47 | $token-fonts-h-2-desktop-size: 46px;
48 | $token-fonts-h-2-desktop-weight: 700;
49 | $token-fonts-h-2-desktop-lineheight: 90%;
50 | $token-fonts-h-2-desktop-spacing: normal;
51 | $token-fonts-h-2-tablet-family: Zilla Slab;
52 | $token-fonts-h-2-tablet-size: 40px;
53 | $token-fonts-h-2-tablet-weight: 700;
54 | $token-fonts-h-2-tablet-lineheight: 90%;
55 | $token-fonts-h-2-tablet-spacing: normal;
56 | $token-fonts-h-3-mobile-family: Zilla Slab;
57 | $token-fonts-h-3-mobile-size: 28px;
58 | $token-fonts-h-3-mobile-weight: 700;
59 | $token-fonts-h-3-mobile-lineheight: 90%;
60 | $token-fonts-h-3-mobile-spacing: normal;
61 | $token-fonts-h-3-desktop-family: Zilla Slab;
62 | $token-fonts-h-3-desktop-size: 36px;
63 | $token-fonts-h-3-desktop-weight: 700;
64 | $token-fonts-h-3-desktop-lineheight: 90%;
65 | $token-fonts-h-3-desktop-spacing: normal;
66 | $token-fonts-h-3-tablet-family: Zilla Slab;
67 | $token-fonts-h-3-tablet-size: 32px;
68 | $token-fonts-h-3-tablet-weight: 700;
69 | $token-fonts-h-3-tablet-lineheight: 90%;
70 | $token-fonts-h-3-tablet-spacing: normal;
71 | $token-fonts-h-4-desktop-family: Arimo;
72 | $token-fonts-h-4-desktop-size: 24px;
73 | $token-fonts-h-4-desktop-weight: 700;
74 | $token-fonts-h-4-desktop-lineheight: 120%;
75 | $token-fonts-h-4-desktop-spacing: normal;
76 | $token-fonts-h-4-mobile-family: Arimo;
77 | $token-fonts-h-4-mobile-size: 22px;
78 | $token-fonts-h-4-mobile-weight: 700;
79 | $token-fonts-h-4-mobile-lineheight: 120%;
80 | $token-fonts-h-4-mobile-spacing: normal;
81 | $token-fonts-content-desktop-family: Arimo;
82 | $token-fonts-content-desktop-size: 16px;
83 | $token-fonts-content-desktop-weight: 400;
84 | $token-fonts-content-desktop-lineheight: 150%;
85 | $token-fonts-content-desktop-spacing: normal;
86 | $token-fonts-content-mobile-family: Arimo;
87 | $token-fonts-content-mobile-size: 17px;
88 | $token-fonts-content-mobile-weight: 400;
89 | $token-fonts-content-mobile-lineheight: 150%;
90 | $token-fonts-content-mobile-spacing: normal;
--------------------------------------------------------------------------------
/prepros-6.config:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wunderzin",
3 | "firstRun": false,
4 | "exportConfig": true,
5 | "fileConfigs": [
6 | {
7 | "path": "design-tokens/source/pug/index.pug",
8 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"design-tokens/index.html\",\"autoCompile\":true,\"compiler-pug\":{\"enabled\":true,\"pretty\":true}}"
9 | },
10 | {
11 | "path": "style-dictionary/build/web/variables.scss",
12 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
13 | },
14 | {
15 | "path": "style-dictionary/build/web/tokens.scss",
16 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
17 | },
18 | {
19 | "path": "style-dictionary/build/web/colors.scss",
20 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
21 | },
22 | {
23 | "path": "style-dictionary/build/web/grids.scss",
24 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
25 | },
26 | {
27 | "path": "style-dictionary/build/web/typography.scss",
28 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
29 | },
30 | {
31 | "path": "style-dictionary/build/web/spacers.scss",
32 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
33 | },
34 | {
35 | "path": "style-dictionary/README.md",
36 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"compiler-markdown\":{\"enabled\":true,\"sanitize\":false,\"githubFlavored\":true,\"wrapWithHtml\":true}}"
37 | },
38 | {
39 | "path": "design-tokens/source/stylus/style.styl",
40 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"design-tokens/css/style.css\",\"autoCompile\":true,\"sourceMap\":false,\"compiler-stylus\":{\"enabled\":true},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":true}}"
41 | },
42 | {
43 | "path": "design-tokens/source/stylus/tokens/typography.scss",
44 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
45 | },
46 | {
47 | "path": "design-tokens/source/stylus/tokens/spacers.scss",
48 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
49 | },
50 | {
51 | "path": "design-tokens/source/stylus/tokens/grids.scss",
52 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
53 | },
54 | {
55 | "path": "design-tokens/source/stylus/tokens/colors.scss",
56 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
57 | },
58 | {
59 | "path": "design-tokens/source/stylus/tokens/_colors.scss",
60 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
61 | },
62 | {
63 | "path": "design-tokens/source/stylus/tokens/_grids.scss",
64 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
65 | },
66 | {
67 | "path": "design-tokens/source/stylus/tokens/_typography.scss",
68 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
69 | },
70 | {
71 | "path": "design-tokens/source/stylus/tokens/_spacers.scss",
72 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
73 | },
74 | {
75 | "path": "design-tokens/source/scss/base.scss",
76 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":true,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
77 | },
78 | {
79 | "path": "design-tokens/source/scss/style.scss",
80 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"design-tokens/css/style.css\",\"autoCompile\":true,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":true}}"
81 | },
82 | {
83 | "path": "design-tokens/source/scss/tokens-page-style.scss",
84 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"design-tokens/css/tokens-page-style.css\",\"autoCompile\":true,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
85 | },
86 | {
87 | "path": "style-dictionary/build/web/_typography.scss",
88 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
89 | },
90 | {
91 | "path": "style-dictionary/build/web/_grids.scss",
92 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
93 | },
94 | {
95 | "path": "style-dictionary/build/web/_colors.scss",
96 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
97 | },
98 | {
99 | "path": "style-dictionary/build/web/_spacers.scss",
100 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
101 | },
102 | {
103 | "path": "design-tokens/source/scss/tokens/_spacers.scss",
104 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"\",\"autoCompile\":false,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
105 | },
106 | {
107 | "path": "promo/source/pug/index.pug",
108 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"promo/index.html\",\"autoCompile\":true,\"compiler-pug\":{\"enabled\":true,\"pretty\":true}}"
109 | },
110 | {
111 | "path": "promo/source/scss/style.scss",
112 | "configJson": "{\"forceCompile\":false,\"customOutput\":\"promo/css/style.css\",\"autoCompile\":true,\"sourceMap\":false,\"compiler-node-sass\":{\"enabled\":true,\"outputStyle\":\"nested\"},\"compiler-autoprefixer\":{\"enabled\":true},\"compiler-minify-css\":{\"enabled\":false}}"
113 | }
114 | ],
115 | "fileTree": {
116 | "expandedDirs": [
117 | "design-tokens",
118 | "design-tokens/source/pug",
119 | "style-dictionary",
120 | "style-dictionary/build/web",
121 | "design-tokens/source/stylus",
122 | "design-tokens/source/stylus/tokens",
123 | "style-dictionary/src",
124 | "style-dictionary/build",
125 | "design-tokens/source/css",
126 | "design-tokens/scripts",
127 | "promo",
128 | "promo/source",
129 | "promo/source/pug",
130 | "promo/source/scss"
131 | ],
132 | "hideSystemFiles": true,
133 | "systemFiles": [
134 | ".*",
135 | "desktop.ini",
136 | "prepros.config",
137 | "$RECYCLE.BIN",
138 | "prepros.cfg",
139 | "prepros-6.config",
140 | "Prepros Export"
141 | ],
142 | "hideUnwatchedFiles": false
143 | },
144 | "imports": [
145 | {
146 | "path": "design-tokens/source/scss/base.scss",
147 | "imports": [
148 | "design-tokens/source/scss/tokens/_colors.scss",
149 | "design-tokens/source/scss/tokens/_grids.scss",
150 | "design-tokens/source/scss/tokens/_typography.scss"
151 | ]
152 | },
153 | {
154 | "path": "design-tokens/source/scss/font-styles.scss",
155 | "imports": [
156 | "design-tokens/source/scss/tokens/_colors.scss",
157 | "design-tokens/source/scss/tokens/_typography.scss"
158 | ]
159 | },
160 | {
161 | "path": "design-tokens/source/scss/style.scss",
162 | "imports": [
163 | "design-tokens/source/scss/base.scss",
164 | "design-tokens/source/scss/font-styles.scss",
165 | "design-tokens/source/scss/tokens/_colors.scss",
166 | "design-tokens/source/scss/tokens/_grids.scss",
167 | "design-tokens/source/scss/tokens/_typography.scss"
168 | ]
169 | },
170 | {
171 | "path": "design-tokens/source/scss/tokens-page-style.scss",
172 | "imports": [
173 | "design-tokens/source/scss/tokens/_colors.scss"
174 | ]
175 | },
176 | {
177 | "path": "promo/source/scss/base.scss",
178 | "imports": [
179 | "promo/source/scss/tokens/_colors.scss",
180 | "promo/source/scss/tokens/_grids.scss",
181 | "promo/source/scss/tokens/_typography.scss"
182 | ]
183 | },
184 | {
185 | "path": "promo/source/scss/font-styles.scss",
186 | "imports": [
187 | "promo/source/scss/tokens/_colors.scss",
188 | "promo/source/scss/tokens/_typography.scss"
189 | ]
190 | },
191 | {
192 | "path": "promo/source/scss/style.scss",
193 | "imports": [
194 | "promo/source/scss/base.scss",
195 | "promo/source/scss/font-styles.scss",
196 | "promo/source/scss/tokens/_colors.scss",
197 | "promo/source/scss/tokens/_grids.scss",
198 | "promo/source/scss/tokens/_typography.scss"
199 | ]
200 | },
201 | {
202 | "path": "promo/source/scss/tokens-page-style.scss",
203 | "imports": [
204 | "promo/source/scss/tokens/_colors.scss"
205 | ]
206 | }
207 | ],
208 | "projectView": {
209 | "selectedView": "file-tree"
210 | },
211 | "fileWatcher": {
212 | "enabled": true,
213 | "watchedExtensions": [
214 | "less",
215 | "sass",
216 | "scss",
217 | "styl",
218 | "md",
219 | "markdown",
220 | "coffee",
221 | "js",
222 | "jade",
223 | "haml",
224 | "slim",
225 | "ls",
226 | "kit",
227 | "png",
228 | "jpg",
229 | "jpeg",
230 | "ts",
231 | "pug",
232 | "css",
233 | "html",
234 | "htm",
235 | "php"
236 | ]
237 | },
238 | "pathFilters": [
239 | "node_modules",
240 | ".*",
241 | "bower_components",
242 | "prepros.config",
243 | "Prepros Export",
244 | "prepros-6.config",
245 | "prepros.cfg",
246 | "wp-admin",
247 | "wp-includes"
248 | ],
249 | "server": {
250 | "port": 7884,
251 | "assignNewPortAutomatically": true,
252 | "enable": true,
253 | "proxy": {
254 | "enable": false,
255 | "url": ""
256 | }
257 | },
258 | "browser-sync": {
259 | "enable": false,
260 | "clicks": true,
261 | "forms": true,
262 | "scroll": true
263 | },
264 | "live-reload": {
265 | "enable": true,
266 | "animate": true,
267 | "delay": 0
268 | },
269 | "ftp-deploy": {
270 | "connectionType": "ftp",
271 | "remotePath": "",
272 | "uploadTimeout": 20000,
273 | "uploadOnChange": false,
274 | "ftp": {
275 | "secure": false,
276 | "keepAlive": true,
277 | "host": "",
278 | "port": 21,
279 | "user": "",
280 | "password": ""
281 | },
282 | "sftp": {
283 | "host": "",
284 | "port": 22,
285 | "usePrivateKey": false,
286 | "username": "",
287 | "password": "",
288 | "privateKey": "",
289 | "passphrase": ""
290 | },
291 | "pathFilters": [
292 | "config.rb",
293 | "prepros.config",
294 | "prepros-6.config",
295 | "node_modules",
296 | "Prepros Export",
297 | ".git",
298 | ".idea",
299 | ".sass-cache",
300 | ".hg",
301 | ".svn",
302 | ".cache",
303 | ".DS_Store",
304 | "*.sass",
305 | "*.scss",
306 | "*.less",
307 | "*.pug",
308 | "*.jade",
309 | "*.styl",
310 | "*.haml",
311 | "*.slim",
312 | "*.coffee",
313 | "*.ls",
314 | "*.kit",
315 | "*.ts"
316 | ],
317 | "history": []
318 | },
319 | "file-type-sass": "{\"compilers\":[\"node-sass\",\"autoprefixer\",\"minify-css\"]}",
320 | "file-type-less": "{\"compilers\":[\"less\",\"autoprefixer\",\"minify-css\"]}",
321 | "autoprefixer": {
322 | "browsers": "last 5 versions"
323 | },
324 | "file-type-pug": "{\"compilers\":[\"pug\"]}",
325 | "file-type-css": "{\"compilers\":[\"autoprefixer\",\"cssnext\",\"minify-css\"]}",
326 | "file-type-javascript": "{\"compilers\":[\"concat-js\",\"babel\",\"uglify-js\"]}",
327 | "file-type-stylus": "{\"compilers\":[\"stylus\",\"autoprefixer\",\"minify-css\"]}",
328 | "file-type-markdown": "{\"compilers\":[\"markdown\"]}",
329 | "file-type-haml": "{\"compilers\":[\"haml\"]}",
330 | "file-type-slim": "{\"compilers\":[\"slim\"]}",
331 | "file-type-coffee-script": "{\"compilers\":[\"coffee-script\",\"uglify-js\"]}",
332 | "file-type-livescript": "{\"compilers\":[\"livescript\",\"uglify-js\"]}",
333 | "file-type-kit": "{\"compilers\":[\"kit\"]}",
334 | "uglify-js": {
335 | "ie8": false,
336 | "compress": {
337 | "sequences": true,
338 | "properties": true,
339 | "dead_code": true,
340 | "drop_debugger": true,
341 | "unsafe": false,
342 | "unsafe_comps": false,
343 | "unsafe_math": false,
344 | "unsafe_proto": false,
345 | "unsafe_regexp": false,
346 | "conditionals": true,
347 | "comparisons": true,
348 | "evaluate": true,
349 | "booleans": true,
350 | "loops": true,
351 | "unused": true,
352 | "toplevel": false,
353 | "top_retain": "",
354 | "hoist_funs": true,
355 | "hoist_vars": false,
356 | "if_return": true,
357 | "join_vars": true,
358 | "collapse_vars": true,
359 | "reduce_vars": true,
360 | "warnings": true,
361 | "negate_iife": true,
362 | "pure_getters": false,
363 | "pure_funcs": [],
364 | "drop_console": false,
365 | "expression": false,
366 | "keep_fargs": true,
367 | "keep_fnames": false,
368 | "passes": 1,
369 | "keep_infinity": false,
370 | "side_effects": true,
371 | "global_defs": []
372 | },
373 | "output": {
374 | "ascii_only": false,
375 | "beautify": false,
376 | "comments": "",
377 | "indent_level": 4,
378 | "indent_start": 0,
379 | "inline_script": false,
380 | "keep_quoted_props": false,
381 | "max_line_len": false,
382 | "preamble": "",
383 | "preserve_line": false,
384 | "quote_keys": false,
385 | "quote_style": 0,
386 | "semicolons": true,
387 | "shebang": true,
388 | "width": 80
389 | }
390 | },
391 | "cssnext": {
392 | "customProperties": true,
393 | "applyRule": true,
394 | "calc": false,
395 | "nesting": true,
396 | "customMedia": true,
397 | "mediaQueriesRange": true,
398 | "customSelectors": true,
399 | "attributeCaseInsensitive": true,
400 | "colorRebeccapurple": true,
401 | "colorHwb": true,
402 | "colorGray": true,
403 | "colorHexAlpha": true,
404 | "colorFunction": true,
405 | "fontVariant": true,
406 | "filter": true,
407 | "initial": true,
408 | "rem": true,
409 | "pseudoElements": true,
410 | "pseudoClassMatches": true,
411 | "pseudoClassNot": true,
412 | "pseudoClassAnyLink": true,
413 | "colorRgba": true,
414 | "overflowWrap": true
415 | },
416 | "file-type-typescript": "{\"compilers\":[\"typescript\",\"uglify-js\"],\"autoCompile\":true,\"sourceMap\":false,\"output\":{\"outputType\":\"REPLACE_SEGMENT\",\"replaceSegments\":[\"typescript\",\"ts\"],\"replaceSegmentsWith\":\"js\",\"relative\":\"\"},\"compiler-uglify-js\":{\"enabled\":true,\"mangle\":true},\"compiler-typescript\":{\"enabled\":true}}",
417 | "babel": {
418 | "useBabelRc": true,
419 | "presets": {
420 | "babel-preset-es2015": true
421 | },
422 | "plugins": {
423 | "babel-plugin-syntax-jsx": true,
424 | "babel-plugin-transform-react-jsx": true,
425 | "babel-plugin-transform-async-to-generator": true,
426 | "babel-plugin-transform-class-properties": true,
427 | "babel-plugin-transform-object-rest-spread": true
428 | }
429 | },
430 | "file-type-png": "{\"compilers\":[\"png\"]}",
431 | "file-type-jpg": "{\"compilers\":[\"jpg\"]}"
432 | }
--------------------------------------------------------------------------------
/promo/css/normalize.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /* Document
4 | ========================================================================== */
5 |
6 | /**
7 | * 1. Correct the line height in all browsers.
8 | * 2. Prevent adjustments of font size after orientation changes in iOS.
9 | */
10 |
11 | html {
12 | line-height: 1.15; /* 1 */
13 | -webkit-text-size-adjust: 100%; /* 2 */
14 | }
15 |
16 | /* Sections
17 | ========================================================================== */
18 |
19 | /**
20 | * Remove the margin in all browsers.
21 | */
22 |
23 | body {
24 | margin: 0;
25 | }
26 |
27 | /**
28 | * Render the `main` element consistently in IE.
29 | */
30 |
31 | main {
32 | display: block;
33 | }
34 |
35 | /**
36 | * Correct the font size and margin on `h1` elements within `section` and
37 | * `article` contexts in Chrome, Firefox, and Safari.
38 | */
39 |
40 | h1 {
41 | font-size: 2em;
42 | margin: 0.67em 0;
43 | }
44 |
45 | /* Grouping content
46 | ========================================================================== */
47 |
48 | /**
49 | * 1. Add the correct box sizing in Firefox.
50 | * 2. Show the overflow in Edge and IE.
51 | */
52 |
53 | hr {
54 | box-sizing: content-box; /* 1 */
55 | height: 0; /* 1 */
56 | overflow: visible; /* 2 */
57 | }
58 |
59 | /**
60 | * 1. Correct the inheritance and scaling of font size in all browsers.
61 | * 2. Correct the odd `em` font sizing in all browsers.
62 | */
63 |
64 | pre {
65 | font-family: monospace, monospace; /* 1 */
66 | font-size: 1em; /* 2 */
67 | }
68 |
69 | /* Text-level semantics
70 | ========================================================================== */
71 |
72 | /**
73 | * Remove the gray background on active links in IE 10.
74 | */
75 |
76 | a {
77 | background-color: transparent;
78 | }
79 |
80 | /**
81 | * 1. Remove the bottom border in Chrome 57-
82 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
83 | */
84 |
85 | abbr[title] {
86 | border-bottom: none; /* 1 */
87 | text-decoration: underline; /* 2 */
88 | text-decoration: underline dotted; /* 2 */
89 | }
90 |
91 | /**
92 | * Add the correct font weight in Chrome, Edge, and Safari.
93 | */
94 |
95 | b,
96 | strong {
97 | font-weight: bolder;
98 | }
99 |
100 | /**
101 | * 1. Correct the inheritance and scaling of font size in all browsers.
102 | * 2. Correct the odd `em` font sizing in all browsers.
103 | */
104 |
105 | code,
106 | kbd,
107 | samp {
108 | font-family: monospace, monospace; /* 1 */
109 | font-size: 1em; /* 2 */
110 | }
111 |
112 | /**
113 | * Add the correct font size in all browsers.
114 | */
115 |
116 | small {
117 | font-size: 80%;
118 | }
119 |
120 | /**
121 | * Prevent `sub` and `sup` elements from affecting the line height in
122 | * all browsers.
123 | */
124 |
125 | sub,
126 | sup {
127 | font-size: 75%;
128 | line-height: 0;
129 | position: relative;
130 | vertical-align: baseline;
131 | }
132 |
133 | sub {
134 | bottom: -0.25em;
135 | }
136 |
137 | sup {
138 | top: -0.5em;
139 | }
140 |
141 | /* Embedded content
142 | ========================================================================== */
143 |
144 | /**
145 | * Remove the border on images inside links in IE 10.
146 | */
147 |
148 | img {
149 | border-style: none;
150 | }
151 |
152 | /* Forms
153 | ========================================================================== */
154 |
155 | /**
156 | * 1. Change the font styles in all browsers.
157 | * 2. Remove the margin in Firefox and Safari.
158 | */
159 |
160 | button,
161 | input,
162 | optgroup,
163 | select,
164 | textarea {
165 | font-family: inherit; /* 1 */
166 | font-size: 100%; /* 1 */
167 | line-height: 1.15; /* 1 */
168 | margin: 0; /* 2 */
169 | }
170 |
171 | /**
172 | * Show the overflow in IE.
173 | * 1. Show the overflow in Edge.
174 | */
175 |
176 | button,
177 | input { /* 1 */
178 | overflow: visible;
179 | }
180 |
181 | /**
182 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
183 | * 1. Remove the inheritance of text transform in Firefox.
184 | */
185 |
186 | button,
187 | select { /* 1 */
188 | text-transform: none;
189 | }
190 |
191 | /**
192 | * Correct the inability to style clickable types in iOS and Safari.
193 | */
194 |
195 | button,
196 | [type="button"],
197 | [type="reset"],
198 | [type="submit"] {
199 | -webkit-appearance: button;
200 | }
201 |
202 | /**
203 | * Remove the inner border and padding in Firefox.
204 | */
205 |
206 | button::-moz-focus-inner,
207 | [type="button"]::-moz-focus-inner,
208 | [type="reset"]::-moz-focus-inner,
209 | [type="submit"]::-moz-focus-inner {
210 | border-style: none;
211 | padding: 0;
212 | }
213 |
214 | /**
215 | * Restore the focus styles unset by the previous rule.
216 | */
217 |
218 | button:-moz-focusring,
219 | [type="button"]:-moz-focusring,
220 | [type="reset"]:-moz-focusring,
221 | [type="submit"]:-moz-focusring {
222 | outline: 1px dotted ButtonText;
223 | }
224 |
225 | /**
226 | * Correct the padding in Firefox.
227 | */
228 |
229 | fieldset {
230 | padding: 0.35em 0.75em 0.625em;
231 | }
232 |
233 | /**
234 | * 1. Correct the text wrapping in Edge and IE.
235 | * 2. Correct the color inheritance from `fieldset` elements in IE.
236 | * 3. Remove the padding so developers are not caught out when they zero out
237 | * `fieldset` elements in all browsers.
238 | */
239 |
240 | legend {
241 | box-sizing: border-box; /* 1 */
242 | color: inherit; /* 2 */
243 | display: table; /* 1 */
244 | max-width: 100%; /* 1 */
245 | padding: 0; /* 3 */
246 | white-space: normal; /* 1 */
247 | }
248 |
249 | /**
250 | * Add the correct vertical alignment in Chrome, Firefox, and Opera.
251 | */
252 |
253 | progress {
254 | vertical-align: baseline;
255 | }
256 |
257 | /**
258 | * Remove the default vertical scrollbar in IE 10+.
259 | */
260 |
261 | textarea {
262 | overflow: auto;
263 | }
264 |
265 | /**
266 | * 1. Add the correct box sizing in IE 10.
267 | * 2. Remove the padding in IE 10.
268 | */
269 |
270 | [type="checkbox"],
271 | [type="radio"] {
272 | box-sizing: border-box; /* 1 */
273 | padding: 0; /* 2 */
274 | }
275 |
276 | /**
277 | * Correct the cursor style of increment and decrement buttons in Chrome.
278 | */
279 |
280 | [type="number"]::-webkit-inner-spin-button,
281 | [type="number"]::-webkit-outer-spin-button {
282 | height: auto;
283 | }
284 |
285 | /**
286 | * 1. Correct the odd appearance in Chrome and Safari.
287 | * 2. Correct the outline style in Safari.
288 | */
289 |
290 | [type="search"] {
291 | -webkit-appearance: textfield; /* 1 */
292 | outline-offset: -2px; /* 2 */
293 | }
294 |
295 | /**
296 | * Remove the inner padding in Chrome and Safari on macOS.
297 | */
298 |
299 | [type="search"]::-webkit-search-decoration {
300 | -webkit-appearance: none;
301 | }
302 |
303 | /**
304 | * 1. Correct the inability to style clickable types in iOS and Safari.
305 | * 2. Change font properties to `inherit` in Safari.
306 | */
307 |
308 | ::-webkit-file-upload-button {
309 | -webkit-appearance: button; /* 1 */
310 | font: inherit; /* 2 */
311 | }
312 |
313 | /* Interactive
314 | ========================================================================== */
315 |
316 | /*
317 | * Add the correct display in Edge, IE 10+, and Firefox.
318 | */
319 |
320 | details {
321 | display: block;
322 | }
323 |
324 | /*
325 | * Add the correct display in all browsers.
326 | */
327 |
328 | summary {
329 | display: list-item;
330 | }
331 |
332 | /* Misc
333 | ========================================================================== */
334 |
335 | /**
336 | * Add the correct display in IE 10+.
337 | */
338 |
339 | template {
340 | display: none;
341 | }
342 |
343 | /**
344 | * Add the correct display in IE 10.
345 | */
346 |
347 | [hidden] {
348 | display: none;
349 | }
350 |
--------------------------------------------------------------------------------
/promo/css/style.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 | /**
6 | * Do not edit directly
7 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
8 | */
9 | /**
10 | * Do not edit directly
11 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
12 | */
13 | * ::-moz-selection {
14 | background: #ff8989; }
15 | * ::selection {
16 | background: #ff8989; }
17 |
18 | body {
19 | background: #eeff89; }
20 |
21 | hr {
22 | border: none;
23 | border-top: 2px dashed rgba(0, 0, 0, 0.1); }
24 |
25 | .wrapper {
26 | display: -webkit-box;
27 | display: -ms-flexbox;
28 | display: flex;
29 | height: 100vh;
30 | padding-left: 100px; }
31 | @media screen and (max-width: 900px) {
32 | .wrapper {
33 | -webkit-box-orient: vertical;
34 | -webkit-box-direction: normal;
35 | -ms-flex-direction: column;
36 | flex-direction: column;
37 | padding-left: 0;
38 | min-height: 1200px; } }
39 |
40 | .cta-btn {
41 | position: relative;
42 | -webkit-user-select: none;
43 | -moz-user-select: none;
44 | -ms-user-select: none;
45 | user-select: none;
46 | cursor: pointer;
47 | padding: 0 20px;
48 | min-width: 220px;
49 | font-family: Arimo, sans-serif;
50 | font-weight: bold;
51 | font-size: 16px;
52 | height: 52px;
53 | border-radius: 4px;
54 | border: none;
55 | -webkit-transition: all 0.1s;
56 | -o-transition: all 0.1s;
57 | transition: all 0.1s; }
58 | @media screen and (max-width: 600px) {
59 | .cta-btn {
60 | width: 100%; } }
61 | .cta-btn_primary-dark {
62 | padding: 0 20px;
63 | background: #805be8;
64 | color: white; }
65 | .cta-btn_primary-dark:hover {
66 | background: #5d2ee2; }
67 | .cta-btn_primary-dark:focus {
68 | background: #5d2ee2; }
69 |
70 | .content-side {
71 | display: -webkit-box;
72 | display: -ms-flexbox;
73 | display: flex;
74 | -webkit-box-orient: vertical;
75 | -webkit-box-direction: normal;
76 | -ms-flex-direction: column;
77 | flex-direction: column;
78 | -webkit-box-pack: justify;
79 | -ms-flex-pack: justify;
80 | justify-content: space-between;
81 | max-width: 500px;
82 | -webkit-box-flex: 1;
83 | -ms-flex: 1 1 auto;
84 | flex: 1 1 auto;
85 | margin: 80px 0 60px; }
86 | @media screen and (max-width: 900px) {
87 | .content-side {
88 | margin: 60px 80px 20px;
89 | max-width: 800px; } }
90 | @media screen and (max-width: 600px) {
91 | .content-side {
92 | margin: 40px 40px 20px; } }
93 | .content-side__wz-logo {
94 | -webkit-box-flex: 0;
95 | -ms-flex: 0 0 auto;
96 | flex: 0 0 auto;
97 | width: 296px;
98 | height: 32px;
99 | background-image: url(../images/wz-logo.svg);
100 | background-size: contain;
101 | background-repeat: no-repeat; }
102 | @media screen and (max-width: 600px) {
103 | .content-side__wz-logo {
104 | width: 100%; } }
105 | .content-side__main-section {
106 | margin-bottom: 40px; }
107 | @media screen and (max-width: 900px) {
108 | .content-side__main-section {
109 | margin-bottom: 0; } }
110 | .content-side__main-section__header {
111 | white-space: nowrap; }
112 | @media screen and (max-width: 600px) {
113 | .content-side__main-section__header {
114 | white-space: normal; } }
115 | .content-side__main-section__btn-row {
116 | display: -webkit-box;
117 | display: -ms-flexbox;
118 | display: flex;
119 | -webkit-box-align: center;
120 | -ms-flex-align: center;
121 | align-items: center; }
122 |
123 | .figma-logo {
124 | margin-left: 20px;
125 | width: 40px;
126 | height: 40px;
127 | background-image: url(../images/figma-logo.svg);
128 | background-size: cover;
129 | background-repeat: no-repeat; }
130 | @media screen and (max-width: 600px) {
131 | .figma-logo {
132 | display: none; } }
133 |
134 | .preview-side {
135 | display: -webkit-box;
136 | display: -ms-flexbox;
137 | display: flex;
138 | -webkit-box-align: center;
139 | -ms-flex-align: center;
140 | align-items: center;
141 | -webkit-box-pack: center;
142 | -ms-flex-pack: center;
143 | justify-content: center;
144 | -webkit-box-flex: 1;
145 | -ms-flex: 1 2 auto;
146 | flex: 1 2 auto;
147 | overflow: hidden;
148 | position: relative;
149 | margin-left: 40px; }
150 | @media screen and (max-width: 600px) {
151 | .preview-side {
152 | -webkit-box-align: start;
153 | -ms-flex-align: start;
154 | align-items: flex-start;
155 | margin-left: 0; } }
156 | .preview-side__devices {
157 | position: relative;
158 | width: 1100px;
159 | height: 700px; }
160 | @media screen and (max-width: 900px) {
161 | .preview-side__devices {
162 | height: 500px; } }
163 | @media screen and (max-width: 600px) {
164 | .preview-side__devices {
165 | -webkit-transform: scale(0.8);
166 | -ms-transform: scale(0.8);
167 | transform: scale(0.8); } }
168 | .preview-side__iphone {
169 | position: absolute;
170 | top: 280px;
171 | left: 0;
172 | z-index: 3;
173 | width: 230px;
174 | height: 450px;
175 | background-image: url(../images/iphone.png);
176 | background-size: cover;
177 | background-repeat: no-repeat; }
178 | .preview-side__iphone__screen {
179 | position: absolute;
180 | top: 11px;
181 | left: 14px;
182 | width: 207px;
183 | height: 424px;
184 | background-size: 640px;
185 | background-image: url(../images/iphone-sprite.png);
186 | background-position: -5px -1733px; }
187 | .preview-side__ipad {
188 | position: absolute;
189 | top: 340px;
190 | left: calc(60px + 22vw);
191 | z-index: 2;
192 | width: 540px;
193 | height: 750px;
194 | background-image: url(../images/ipad.png);
195 | background-size: cover;
196 | background-repeat: no-repeat; }
197 | .preview-side__ipad__screen {
198 | position: absolute;
199 | top: 18px;
200 | left: 24px;
201 | width: 500px;
202 | height: 710px;
203 | background-size: 1500px;
204 | background-image: url(../images/ipad-sprite.png);
205 | background-position: -3px -2134px; }
206 | .preview-side__macbook {
207 | position: absolute;
208 | top: 0;
209 | left: 40px;
210 | z-index: 1;
211 | width: 1050px;
212 | height: 640px;
213 | background-image: url(../images/macbook.png);
214 | background-size: cover;
215 | background-repeat: no-repeat; }
216 | .preview-side__macbook__screen {
217 | position: absolute;
218 | top: 6px;
219 | left: 76px;
220 | width: 897px;
221 | height: 586px;
222 | background-size: 1824px;
223 | background-image: url(../images/macbook-sprite.png);
224 | background-position: -6px -1781px; }
225 |
226 | /**
227 | * Do not edit directly
228 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
229 | */
230 | /**
231 | * Do not edit directly
232 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
233 | */
234 | h1 {
235 | font-family: Zilla Slab, serif;
236 | font-size: 66px;
237 | line-height: 90%;
238 | color: #313131; }
239 | @media screen and (max-width: 1024px) {
240 | h1 {
241 | font-size: 56px;
242 | line-height: 90%; } }
243 | @media screen and (max-width: 375px) {
244 | h1 {
245 | font-size: 40px;
246 | line-height: 90%; } }
247 |
248 | h2 {
249 | font-family: Zilla Slab, serif;
250 | font-size: 46px;
251 | line-height: 90%;
252 | color: #313131; }
253 |
254 | h3 {
255 | font-family: Zilla Slab, serif;
256 | font-size: 36px;
257 | line-height: 90%;
258 | color: #313131; }
259 |
260 | h4 {
261 | font-family: Arimo, serif;
262 | font-size: 24px;
263 | line-height: 120%;
264 | color: #313131; }
265 |
266 | a {
267 | cursor: pointer;
268 | font-family: Arimo, Arimo-Regular, serif;
269 | line-height: 150%;
270 | color: #ff8989;
271 | -webkit-transition: all 0.1s;
272 | -o-transition: all 0.1s;
273 | transition: all 0.1s; }
274 | a:hover {
275 | text-decoration: none; }
276 |
277 | p {
278 | font-family: Arimo, serif;
279 | font-size: 16px;
280 | line-height: 150%;
281 | color: #313131; }
282 |
283 | .caption-large {
284 | font-family: Arimo, serif;
285 | font-size: 16px;
286 | line-height: 140%;
287 | color: #313131;
288 | text-transform: uppercase;
289 | letter-spacing: 3.2px; }
290 |
291 | .caption-medium {
292 | font-family: Arimo, serif;
293 | font-size: 12px;
294 | line-height: 140%;
295 | color: #313131;
296 | text-transform: uppercase;
297 | letter-spacing: 2.4px; }
298 |
--------------------------------------------------------------------------------
/promo/fav-ico/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/android-chrome-192x192.png
--------------------------------------------------------------------------------
/promo/fav-ico/android-chrome-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/android-chrome-384x384.png
--------------------------------------------------------------------------------
/promo/fav-ico/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/apple-touch-icon.png
--------------------------------------------------------------------------------
/promo/fav-ico/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #da532c
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/promo/fav-ico/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/favicon-16x16.png
--------------------------------------------------------------------------------
/promo/fav-ico/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/favicon-32x32.png
--------------------------------------------------------------------------------
/promo/fav-ico/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/favicon.ico
--------------------------------------------------------------------------------
/promo/fav-ico/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/mstile-150x150.png
--------------------------------------------------------------------------------
/promo/fav-ico/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "short_name": "",
4 | "icons": [
5 | {
6 | "src": "/android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "/android-chrome-384x384.png",
12 | "sizes": "384x384",
13 | "type": "image/png"
14 | }
15 | ],
16 | "theme_color": "#ffffff",
17 | "background_color": "#ffffff",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/promo/fav-ico/thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/fav-ico/thumb.png
--------------------------------------------------------------------------------
/promo/images/figma-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/promo/images/ipad-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/images/ipad-sprite.png
--------------------------------------------------------------------------------
/promo/images/ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/images/ipad.png
--------------------------------------------------------------------------------
/promo/images/iphone-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/images/iphone-sprite.png
--------------------------------------------------------------------------------
/promo/images/iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/images/iphone.png
--------------------------------------------------------------------------------
/promo/images/macbook-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/images/macbook-sprite.png
--------------------------------------------------------------------------------
/promo/images/macbook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PavelLaptev/wunderzin/21aba7ae52ad3604912104823c355478a809216f/promo/images/macbook.png
--------------------------------------------------------------------------------
/promo/images/wz-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/promo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Wûnderzin Ui Kit
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
Online magazine free UI Kit
29 |
30 |
Get the Kit
31 |
32 |
33 |
34 |
38 |
39 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/promo/scripts/main.js:
--------------------------------------------------------------------------------
1 | const macbook = document.getElementById("macbook-device");
2 | const iphone = document.getElementById("iphone-device");
3 | const ipad = document.getElementById("ipad-device");
4 |
5 | const macbookPos = ["-6px -1781px", "-6px -2373px", "-917px -2372px"];
6 | const iphonePos = ["-5px -1733px", "207.5px -1733px", "421.5px -1733px"];
7 | const ipadPos = ["-3px -2134px", "496px -2134px", "997px -2134px"];
8 |
9 | ///////
10 | macbook.addEventListener("mouseenter", function() {
11 | this.style.backgroundPosition = macbookPos[Math.floor(Math.random() * 3)];
12 | });
13 |
14 | ///////
15 | iphone.addEventListener("mouseenter", function() {
16 | this.style.backgroundPosition = iphonePos[Math.floor(Math.random() * 3)];
17 | });
18 |
19 | ///////
20 | ipad.addEventListener("mouseenter", function() {
21 | this.style.backgroundPosition = ipadPos[Math.floor(Math.random() * 3)];
22 | });
23 |
--------------------------------------------------------------------------------
/promo/source/pug/index.pug:
--------------------------------------------------------------------------------
1 | doctype html
2 | html.no-js(lang="")
3 | head
4 | meta(charset="utf-8")
5 | meta(http-equiv="x-ua-compatible" content="ie=edge")
6 | title Wûnderzin Ui Kit
7 | meta(name="description" content="Online magazine — free UI Kit")
8 | meta(name="viewport" content="width=device-width, initial-scale=1")
9 |
10 | link(rel='apple-touch-icon', sizes='180x180', href='fav-ico/apple-touch-icon.png')
11 | link(rel='icon', type='image/png', sizes='32x32', href='fav-ico/favicon-32x32.png')
12 | link(rel='icon', type='image/png', sizes='16x16', href='fav-ico/favicon-16x16.png')
13 | link(rel='manifest', href='fav-ico/site.webmanifest')
14 | meta(name='msapplication-TileColor', content='#da532c')
15 | meta(name='theme-color', content='#ffffff')
16 |
17 | meta(property='og:image', content='fav-ico/thumb.png')
18 | meta(property='og:image:type', content='image/jpeg')
19 | meta(property='og:image:width', content='800')
20 | meta(property='og:image:height', content='520')
21 |
22 | link(href="https://fonts.googleapis.com/css?family=Arimo:400,400i,700,700i|Zilla+Slab:700" rel="stylesheet")
23 | link(rel="stylesheet" href="css/normalize.css")
24 | link(rel="stylesheet" href="css/style.css")
25 | body
26 | .wrapper
27 | .content-side
28 | .content-side__wz-logo
29 | .content-side__main-section
30 | h1.content-side__main-section__header Online magazine free UI Kit
31 | .content-side__main-section__btn-row
32 | button(onclick="window.location.href='https://www.figma.com/file/JNIu97dR9CPt6kTg3grNFc7n/W%C3%BBnderzin-UI-Kit?node-id=0%3A1'").cta-btn.cta-btn_primary-dark Get the Kit
33 | .figma-logo
34 | .content-side__footer
35 | h4(style="margin-bottom: 12px")
36 | a(href="https://medium.com/@PavelLaptev/design-tokens-with-figma-aef25c42430f" target="_blank") Design tokens with Figma
37 | p(style="margin: 0; opacity: 0.7;") by Pavel Laptev
38 | .preview-side
39 | .preview-side__devices
40 | .preview-side__iphone
41 | #iphone-device.preview-side__iphone__screen
42 | .preview-side__ipad
43 | #ipad-device.preview-side__ipad__screen
44 | .preview-side__macbook
45 | #macbook-device.preview-side__macbook__screen
46 |
47 |
48 |
49 |
50 | script(src="scripts/main.js")
--------------------------------------------------------------------------------
/promo/source/scss/base.scss:
--------------------------------------------------------------------------------
1 | // tokens
2 | @import "tokens/_colors";
3 | @import "tokens/_grids";
4 | @import "tokens/_typography";
5 |
6 | * ::selection {
7 | background: $token-colors-coral;
8 | }
9 |
10 | body {
11 | background: $token-colors-limo;
12 | }
13 |
14 | hr {
15 | border: none;
16 | border-top: 2px dashed rgba(0, 0, 0, 0.1);
17 | }
18 |
19 | .wrapper {
20 | display: flex;
21 | height: 100vh;
22 | padding-left: 100px;
23 | @media screen and (max-width: 900px) {
24 | flex-direction: column;
25 | padding-left: 0;
26 | min-height: 1200px;
27 | }
28 | }
29 |
30 | .cta-btn {
31 | position: relative;
32 | user-select: none;
33 | cursor: pointer;
34 | padding: 0 20px;
35 | min-width: 220px;
36 | font-family: $token-fonts-content-desktop-family, sans-serif;
37 | font-weight: bold;
38 | font-size: 16px;
39 | height: 52px;
40 | border-radius: 4px;
41 | border: none;
42 | transition: all 0.1s;
43 | @media screen and (max-width: 600px) {
44 | width: 100%;
45 | }
46 | &_primary-dark {
47 | padding: 0 20px;
48 | background: $token-colors-supernova;
49 | color: $token-colors-blank;
50 | &:hover {
51 | background: darken($token-colors-supernova, 10);
52 | }
53 | &:focus {
54 | background: darken($token-colors-supernova, 10);
55 | }
56 | }
57 | }
58 |
59 | .content-side {
60 | display: flex;
61 | flex-direction: column;
62 | justify-content: space-between;
63 | max-width: 500px;
64 | flex: 1 1 auto;
65 | margin: 80px 0 60px;
66 | @media screen and (max-width: 900px) {
67 | margin: 60px 80px 20px;
68 | max-width: 800px;
69 | }
70 | @media screen and (max-width: 600px) {
71 | margin: 40px 40px 20px;
72 | }
73 | &__wz-logo {
74 | flex: 0 0 auto;
75 | width: 296px;
76 | height: 32px;
77 | background-image: url(../images/wz-logo.svg);
78 | background-size: contain;
79 | background-repeat: no-repeat;
80 | @media screen and (max-width: 600px) {
81 | width: 100%;
82 | }
83 | }
84 | &__main-section {
85 | margin-bottom: 40px;
86 | @media screen and (max-width: 900px) {
87 | margin-bottom: 0;
88 | }
89 | &__header {
90 | white-space: nowrap;
91 | @media screen and (max-width: 600px) {
92 | white-space: normal;
93 | }
94 | }
95 | &__btn-row {
96 | display: flex;
97 | align-items: center;
98 | }
99 | }
100 | }
101 |
102 | .figma-logo {
103 | margin-left: 20px;
104 | width: 40px;
105 | height: 40px;
106 | background-image: url(../images/figma-logo.svg);
107 | background-size: cover;
108 | background-repeat: no-repeat;
109 | @media screen and (max-width: 600px) {
110 | display: none;
111 | }
112 | }
113 |
114 | .preview-side {
115 | display: flex;
116 | align-items: center;
117 | justify-content: center;
118 | flex: 1 2 auto;
119 | overflow: hidden;
120 | position: relative;
121 | margin-left: 40px;
122 | @media screen and (max-width: 600px) {
123 | align-items: flex-start;
124 | margin-left: 0;
125 | }
126 | &__devices {
127 | position: relative;
128 | width: 1100px;
129 | height: 700px;
130 | @media screen and (max-width: 900px) {
131 | height: 500px;
132 | }
133 | @media screen and (max-width: 600px) {
134 | transform: scale(0.8);
135 | }
136 | }
137 | &__iphone {
138 | position: absolute;
139 | top: 280px;
140 | left: 0;
141 | z-index: 3;
142 | width: 230px;
143 | height: 450px;
144 | background-image: url(../images/iphone.png);
145 | background-size: cover;
146 | background-repeat: no-repeat;
147 | &__screen {
148 | position: absolute;
149 | top: 11px;
150 | left: 14px;
151 | width: 207px;
152 | height: 424px;
153 | background-size: 640px;
154 | background-image: url(../images/iphone-sprite.png);
155 | background-position: -5px -1733px;
156 | }
157 | }
158 | &__ipad {
159 | position: absolute;
160 | top: 340px;
161 | left: calc(60px + 22vw);
162 | z-index: 2;
163 | width: 540px;
164 | height: 750px;
165 | background-image: url(../images/ipad.png);
166 | background-size: cover;
167 | background-repeat: no-repeat;
168 | &__screen {
169 | position: absolute;
170 | top: 18px;
171 | left: 24px;
172 | width: 500px;
173 | height: 710px;
174 | background-size: 1500px;
175 | background-image: url(../images/ipad-sprite.png);
176 | background-position: -3px -2134px;
177 | }
178 | }
179 | &__macbook {
180 | position: absolute;
181 | top: 0;
182 | left: 40px;
183 | z-index: 1;
184 | width: 1050px;
185 | height: 640px;
186 | background-image: url(../images/macbook.png);
187 | background-size: cover;
188 | background-repeat: no-repeat;
189 | &__screen {
190 | position: absolute;
191 | top: 6px;
192 | left: 76px;
193 | width: 897px;
194 | height: 586px;
195 | background-size: 1824px;
196 | background-image: url(../images/macbook-sprite.png);
197 | background-position: -6px -1781px;
198 | }
199 | }
200 | }
201 |
--------------------------------------------------------------------------------
/promo/source/scss/font-styles.scss:
--------------------------------------------------------------------------------
1 | // tokens
2 | @import "tokens/_colors";
3 | @import "tokens/_typography";
4 |
5 | h1 {
6 | font-family: $token-fonts-h-1-desktop-family, serif;
7 | font-size: $token-fonts-h-1-desktop-size;
8 | line-height: $token-fonts-h-1-desktop-lineheight;
9 | color: $token-colors-puma;
10 | @media screen and (max-width: $token-grids-tablet-width) {
11 | font-size: $token-fonts-h-1-tablet-size;
12 | line-height: $token-fonts-h-1-tablet-lineheight;
13 | }
14 | @media screen and (max-width: $token-grids-mobile-width) {
15 | font-size: $token-fonts-h-1-mobile-size;
16 | line-height: $token-fonts-h-1-mobile-lineheight;
17 | }
18 | }
19 |
20 | h2 {
21 | font-family: $token-fonts-h-2-desktop-family, serif;
22 | font-size: $token-fonts-h-2-desktop-size;
23 | line-height: $token-fonts-h-2-desktop-lineheight;
24 | color: $token-colors-puma;
25 | }
26 |
27 | h3 {
28 | font-family: $token-fonts-h-3-desktop-family, serif;
29 | font-size: $token-fonts-h-3-desktop-size;
30 | line-height: $token-fonts-h-3-desktop-lineheight;
31 | color: $token-colors-puma;
32 | }
33 |
34 | h4 {
35 | font-family: $token-fonts-h-4-desktop-family, serif;
36 | font-size: $token-fonts-h-4-desktop-size;
37 | line-height: $token-fonts-h-4-desktop-lineheight;
38 | color: $token-colors-puma;
39 | }
40 |
41 | a {
42 | cursor: pointer;
43 | font-family: $token-fonts-link-family, serif;
44 | line-height: $token-fonts-link-lineheight;
45 | color: $token-colors-coral;
46 | transition: all 0.1s;
47 | &:hover {
48 | text-decoration: none;
49 | }
50 | }
51 |
52 | p {
53 | font-family: $token-fonts-content-desktop-family, serif;
54 | font-size: $token-fonts-content-desktop-size;
55 | line-height: $token-fonts-content-desktop-lineheight;
56 | color: $token-colors-puma;
57 | }
58 |
59 | .caption-large {
60 | font-family: $token-fonts-caption-large-family, serif;
61 | font-size: $token-fonts-caption-large-size;
62 | line-height: $token-fonts-caption-large-lineheight;
63 | color: $token-colors-puma;
64 | text-transform: uppercase;
65 | letter-spacing: $token-fonts-caption-large-spacing;
66 | }
67 |
68 | .caption-medium {
69 | font-family: $token-fonts-caption-medium-family, serif;
70 | font-size: $token-fonts-caption-medium-size;
71 | line-height: $token-fonts-caption-medium-lineheight;
72 | color: $token-colors-puma;
73 | text-transform: uppercase;
74 | letter-spacing: $token-fonts-caption-medium-spacing;
75 | }
76 |
--------------------------------------------------------------------------------
/promo/source/scss/style.scss:
--------------------------------------------------------------------------------
1 | // base
2 | @import "base";
3 | @import "font-styles";
4 |
--------------------------------------------------------------------------------
/promo/source/scss/tokens/_colors.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-colors-lemo: rgba(252, 255, 234, 1);
7 | $token-colors-blank: rgba(255, 255, 255, 1);
8 | $token-colors-medium-lemo: rgba(237, 239, 222, 1);
9 | $token-colors-dark-lemo: rgba(141, 141, 136, 1);
10 | $token-colors-limo: rgba(238, 255, 137, 1);
11 | $token-colors-coral: rgba(255, 137, 137, 1);
12 | $token-colors-plastic-grass: rgba(74, 222, 168, 1);
13 | $token-colors-supernova: rgba(128, 91, 232, 1);
14 | $token-colors-puma: rgba(49, 49, 49, 1);
--------------------------------------------------------------------------------
/promo/source/scss/tokens/_grids.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-grids-desktop-count: 12;
7 | $token-grids-desktop-gutter: 40px;
8 | $token-grids-desktop-offset: 100px;
9 | $token-grids-desktop-width: 1600px;
10 | $token-grids-tablet-count: 12;
11 | $token-grids-tablet-gutter: 40px;
12 | $token-grids-tablet-offset: 60px;
13 | $token-grids-tablet-width: 1024px;
14 | $token-grids-mobile-count: 4;
15 | $token-grids-mobile-gutter: 20px;
16 | $token-grids-mobile-offset: 20px;
17 | $token-grids-mobile-width: 375px;
--------------------------------------------------------------------------------
/promo/source/scss/tokens/_spacers.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-spacers-m: 8px;
7 | $token-spacers-s: 4px;
8 | $token-spacers-l: 16px;
9 | $token-spacers-xl: 24px;
10 | $token-spacers-xxl: 32px;
--------------------------------------------------------------------------------
/promo/source/scss/tokens/_typography.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-fonts-link-family: Arimo, Arimo-Regular;
7 | $token-fonts-link-size: 16;
8 | $token-fonts-link-weight: 400;
9 | $token-fonts-link-lineheight: 150%;
10 | $token-fonts-link-spacing: normal;
11 | $token-fonts-caption-large-family: Arimo;
12 | $token-fonts-caption-large-size: 16px;
13 | $token-fonts-caption-large-weight: 400;
14 | $token-fonts-caption-large-lineheight: 140%;
15 | $token-fonts-caption-large-spacing: 3.2px;
16 | $token-fonts-caption-medium-family: Arimo;
17 | $token-fonts-caption-medium-size: 12px;
18 | $token-fonts-caption-medium-weight: 400;
19 | $token-fonts-caption-medium-lineheight: 140%;
20 | $token-fonts-caption-medium-spacing: 2.4000000000000004px;
21 | $token-fonts-caption-small-family: Arimo;
22 | $token-fonts-caption-small-size: 12px;
23 | $token-fonts-caption-small-weight: 400;
24 | $token-fonts-caption-small-lineheight: 120%;
25 | $token-fonts-caption-small-spacing: 2.4000000000000004px;
26 | $token-fonts-h-1-desktop-family: Zilla Slab;
27 | $token-fonts-h-1-desktop-size: 66px;
28 | $token-fonts-h-1-desktop-weight: 700;
29 | $token-fonts-h-1-desktop-lineheight: 90%;
30 | $token-fonts-h-1-desktop-spacing: normal;
31 | $token-fonts-h-1-tablet-family: Zilla Slab;
32 | $token-fonts-h-1-tablet-size: 56px;
33 | $token-fonts-h-1-tablet-weight: 700;
34 | $token-fonts-h-1-tablet-lineheight: 90%;
35 | $token-fonts-h-1-tablet-spacing: normal;
36 | $token-fonts-h-1-mobile-family: Zilla Slab;
37 | $token-fonts-h-1-mobile-size: 40px;
38 | $token-fonts-h-1-mobile-weight: 700;
39 | $token-fonts-h-1-mobile-lineheight: 90%;
40 | $token-fonts-h-1-mobile-spacing: normal;
41 | $token-fonts-h-2-mobile-family: Zilla Slab;
42 | $token-fonts-h-2-mobile-size: 32px;
43 | $token-fonts-h-2-mobile-weight: 700;
44 | $token-fonts-h-2-mobile-lineheight: 90%;
45 | $token-fonts-h-2-mobile-spacing: normal;
46 | $token-fonts-h-2-desktop-family: Zilla Slab;
47 | $token-fonts-h-2-desktop-size: 46px;
48 | $token-fonts-h-2-desktop-weight: 700;
49 | $token-fonts-h-2-desktop-lineheight: 90%;
50 | $token-fonts-h-2-desktop-spacing: normal;
51 | $token-fonts-h-2-tablet-family: Zilla Slab;
52 | $token-fonts-h-2-tablet-size: 40px;
53 | $token-fonts-h-2-tablet-weight: 700;
54 | $token-fonts-h-2-tablet-lineheight: 90%;
55 | $token-fonts-h-2-tablet-spacing: normal;
56 | $token-fonts-h-3-mobile-family: Zilla Slab;
57 | $token-fonts-h-3-mobile-size: 28px;
58 | $token-fonts-h-3-mobile-weight: 700;
59 | $token-fonts-h-3-mobile-lineheight: 90%;
60 | $token-fonts-h-3-mobile-spacing: normal;
61 | $token-fonts-h-3-desktop-family: Zilla Slab;
62 | $token-fonts-h-3-desktop-size: 36px;
63 | $token-fonts-h-3-desktop-weight: 700;
64 | $token-fonts-h-3-desktop-lineheight: 90%;
65 | $token-fonts-h-3-desktop-spacing: normal;
66 | $token-fonts-h-3-tablet-family: Zilla Slab;
67 | $token-fonts-h-3-tablet-size: 32px;
68 | $token-fonts-h-3-tablet-weight: 700;
69 | $token-fonts-h-3-tablet-lineheight: 90%;
70 | $token-fonts-h-3-tablet-spacing: normal;
71 | $token-fonts-h-4-desktop-family: Arimo;
72 | $token-fonts-h-4-desktop-size: 24px;
73 | $token-fonts-h-4-desktop-weight: 700;
74 | $token-fonts-h-4-desktop-lineheight: 120%;
75 | $token-fonts-h-4-desktop-spacing: normal;
76 | $token-fonts-h-4-mobile-family: Arimo;
77 | $token-fonts-h-4-mobile-size: 22px;
78 | $token-fonts-h-4-mobile-weight: 700;
79 | $token-fonts-h-4-mobile-lineheight: 120%;
80 | $token-fonts-h-4-mobile-spacing: normal;
81 | $token-fonts-content-desktop-family: Arimo;
82 | $token-fonts-content-desktop-size: 16px;
83 | $token-fonts-content-desktop-weight: 400;
84 | $token-fonts-content-desktop-lineheight: 150%;
85 | $token-fonts-content-desktop-spacing: normal;
86 | $token-fonts-content-mobile-family: Arimo;
87 | $token-fonts-content-mobile-size: 17px;
88 | $token-fonts-content-mobile-weight: 400;
89 | $token-fonts-content-mobile-lineheight: 150%;
90 | $token-fonts-content-mobile-spacing: normal;
--------------------------------------------------------------------------------
/style-dictionary/README.md:
--------------------------------------------------------------------------------
1 | # Style Dictionary project
2 |
3 | open this folder in the terminal or drag'n'drop this file into the VS code and run the following lines in the VS code terminal.
4 |
5 | ## Install
6 |
7 | ```
8 | $ npm i
9 | ```
10 |
11 | ## Run the build script
12 |
13 | ```
14 | $ npm run build
15 | ```
16 |
--------------------------------------------------------------------------------
/style-dictionary/build.js:
--------------------------------------------------------------------------------
1 | const StyleDictionary = require("style-dictionary").extend({
2 | source: ["src/**/*.json"],
3 | platforms: {
4 | scss: {
5 | transformGroup: "scss",
6 | buildPath: "build/web/",
7 | files: [
8 | {
9 | destination: "_colors.scss",
10 | format: "scss/variables",
11 | filter: {
12 | type: "color"
13 | }
14 | },
15 | {
16 | destination: "_typography.scss",
17 | format: "scss/variables",
18 | filter: {
19 | type: "typography"
20 | }
21 | },
22 | {
23 | destination: "_grids.scss",
24 | format: "scss/variables",
25 | filter: {
26 | type: "grids"
27 | }
28 | },
29 | {
30 | destination: "_spacers.scss",
31 | format: "scss/variables",
32 | filter: {
33 | type: "spacers"
34 | }
35 | }
36 | ]
37 | }
38 | }
39 | });
40 |
41 | StyleDictionary.buildAllPlatforms();
42 |
43 | console.log("done!");
44 |
--------------------------------------------------------------------------------
/style-dictionary/build/web/_colors.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-colors-lemo: rgba(252, 255, 234, 1);
7 | $token-colors-blank: rgba(255, 255, 255, 1);
8 | $token-colors-medium-lemo: rgba(237, 239, 222, 1);
9 | $token-colors-dark-lemo: rgba(141, 141, 136, 1);
10 | $token-colors-limo: rgba(238, 255, 137, 1);
11 | $token-colors-coral: rgba(255, 137, 137, 1);
12 | $token-colors-plastic-grass: rgba(74, 222, 168, 1);
13 | $token-colors-supernova: rgba(128, 91, 232, 1);
14 | $token-colors-puma: rgba(49, 49, 49, 1);
--------------------------------------------------------------------------------
/style-dictionary/build/web/_grids.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-grids-desktop-count: 12;
7 | $token-grids-desktop-gutter: 40px;
8 | $token-grids-desktop-offset: 100px;
9 | $token-grids-desktop-width: 1600px;
10 | $token-grids-tablet-count: 12;
11 | $token-grids-tablet-gutter: 40px;
12 | $token-grids-tablet-offset: 60px;
13 | $token-grids-tablet-width: 1024px;
14 | $token-grids-mobile-count: 4;
15 | $token-grids-mobile-gutter: 20px;
16 | $token-grids-mobile-offset: 20px;
17 | $token-grids-mobile-width: 375px;
--------------------------------------------------------------------------------
/style-dictionary/build/web/_spacers.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-spacers-m: 8px;
7 | $token-spacers-s: 4px;
8 | $token-spacers-l: 16px;
9 | $token-spacers-xl: 24px;
10 | $token-spacers-xxl: 32px;
--------------------------------------------------------------------------------
/style-dictionary/build/web/_typography.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Do not edit directly
3 | * Generated on Fri, 04 Jan 2019 21:24:14 GMT
4 | */
5 |
6 | $token-fonts-link-family: Arimo, Arimo-Regular;
7 | $token-fonts-link-size: 16;
8 | $token-fonts-link-weight: 400;
9 | $token-fonts-link-lineheight: 150%;
10 | $token-fonts-link-spacing: normal;
11 | $token-fonts-caption-large-family: Arimo;
12 | $token-fonts-caption-large-size: 16px;
13 | $token-fonts-caption-large-weight: 400;
14 | $token-fonts-caption-large-lineheight: 140%;
15 | $token-fonts-caption-large-spacing: 3.2px;
16 | $token-fonts-caption-medium-family: Arimo;
17 | $token-fonts-caption-medium-size: 12px;
18 | $token-fonts-caption-medium-weight: 400;
19 | $token-fonts-caption-medium-lineheight: 140%;
20 | $token-fonts-caption-medium-spacing: 2.4000000000000004px;
21 | $token-fonts-caption-small-family: Arimo;
22 | $token-fonts-caption-small-size: 12px;
23 | $token-fonts-caption-small-weight: 400;
24 | $token-fonts-caption-small-lineheight: 120%;
25 | $token-fonts-caption-small-spacing: 2.4000000000000004px;
26 | $token-fonts-h-1-desktop-family: Zilla Slab;
27 | $token-fonts-h-1-desktop-size: 66px;
28 | $token-fonts-h-1-desktop-weight: 700;
29 | $token-fonts-h-1-desktop-lineheight: 90%;
30 | $token-fonts-h-1-desktop-spacing: normal;
31 | $token-fonts-h-1-tablet-family: Zilla Slab;
32 | $token-fonts-h-1-tablet-size: 56px;
33 | $token-fonts-h-1-tablet-weight: 700;
34 | $token-fonts-h-1-tablet-lineheight: 90%;
35 | $token-fonts-h-1-tablet-spacing: normal;
36 | $token-fonts-h-1-mobile-family: Zilla Slab;
37 | $token-fonts-h-1-mobile-size: 40px;
38 | $token-fonts-h-1-mobile-weight: 700;
39 | $token-fonts-h-1-mobile-lineheight: 90%;
40 | $token-fonts-h-1-mobile-spacing: normal;
41 | $token-fonts-h-2-mobile-family: Zilla Slab;
42 | $token-fonts-h-2-mobile-size: 32px;
43 | $token-fonts-h-2-mobile-weight: 700;
44 | $token-fonts-h-2-mobile-lineheight: 90%;
45 | $token-fonts-h-2-mobile-spacing: normal;
46 | $token-fonts-h-2-desktop-family: Zilla Slab;
47 | $token-fonts-h-2-desktop-size: 46px;
48 | $token-fonts-h-2-desktop-weight: 700;
49 | $token-fonts-h-2-desktop-lineheight: 90%;
50 | $token-fonts-h-2-desktop-spacing: normal;
51 | $token-fonts-h-2-tablet-family: Zilla Slab;
52 | $token-fonts-h-2-tablet-size: 40px;
53 | $token-fonts-h-2-tablet-weight: 700;
54 | $token-fonts-h-2-tablet-lineheight: 90%;
55 | $token-fonts-h-2-tablet-spacing: normal;
56 | $token-fonts-h-3-mobile-family: Zilla Slab;
57 | $token-fonts-h-3-mobile-size: 28px;
58 | $token-fonts-h-3-mobile-weight: 700;
59 | $token-fonts-h-3-mobile-lineheight: 90%;
60 | $token-fonts-h-3-mobile-spacing: normal;
61 | $token-fonts-h-3-desktop-family: Zilla Slab;
62 | $token-fonts-h-3-desktop-size: 36px;
63 | $token-fonts-h-3-desktop-weight: 700;
64 | $token-fonts-h-3-desktop-lineheight: 90%;
65 | $token-fonts-h-3-desktop-spacing: normal;
66 | $token-fonts-h-3-tablet-family: Zilla Slab;
67 | $token-fonts-h-3-tablet-size: 32px;
68 | $token-fonts-h-3-tablet-weight: 700;
69 | $token-fonts-h-3-tablet-lineheight: 90%;
70 | $token-fonts-h-3-tablet-spacing: normal;
71 | $token-fonts-h-4-desktop-family: Arimo;
72 | $token-fonts-h-4-desktop-size: 24px;
73 | $token-fonts-h-4-desktop-weight: 700;
74 | $token-fonts-h-4-desktop-lineheight: 120%;
75 | $token-fonts-h-4-desktop-spacing: normal;
76 | $token-fonts-h-4-mobile-family: Arimo;
77 | $token-fonts-h-4-mobile-size: 22px;
78 | $token-fonts-h-4-mobile-weight: 700;
79 | $token-fonts-h-4-mobile-lineheight: 120%;
80 | $token-fonts-h-4-mobile-spacing: normal;
81 | $token-fonts-content-desktop-family: Arimo;
82 | $token-fonts-content-desktop-size: 16px;
83 | $token-fonts-content-desktop-weight: 400;
84 | $token-fonts-content-desktop-lineheight: 150%;
85 | $token-fonts-content-desktop-spacing: normal;
86 | $token-fonts-content-mobile-family: Arimo;
87 | $token-fonts-content-mobile-size: 17px;
88 | $token-fonts-content-mobile-weight: 400;
89 | $token-fonts-content-mobile-lineheight: 150%;
90 | $token-fonts-content-mobile-spacing: normal;
--------------------------------------------------------------------------------
/style-dictionary/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "style-dictionary",
3 | "version": "1.0.0",
4 | "main": "build.js",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1",
7 | "build": "node ./build.js"
8 | },
9 | "author": "Pavel Laptev",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "style-dictionary": "^2.6.2"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/style-dictionary/src/base.json:
--------------------------------------------------------------------------------
1 | {
2 | "token": {
3 | "grids": {
4 | "desktop": {
5 | "count": {
6 | "value": 12,
7 | "type": "grids"
8 | },
9 | "gutter": {
10 | "value": "40px",
11 | "type": "grids"
12 | },
13 | "offset": {
14 | "value": "100px",
15 | "type": "grids"
16 | },
17 | "width": {
18 | "value": "1600px",
19 | "type": "grids"
20 | }
21 | },
22 | "tablet": {
23 | "count": {
24 | "value": 12,
25 | "type": "grids"
26 | },
27 | "gutter": {
28 | "value": "40px",
29 | "type": "grids"
30 | },
31 | "offset": {
32 | "value": "60px",
33 | "type": "grids"
34 | },
35 | "width": {
36 | "value": "1024px",
37 | "type": "grids"
38 | }
39 | },
40 | "mobile": {
41 | "count": {
42 | "value": 4,
43 | "type": "grids"
44 | },
45 | "gutter": {
46 | "value": "20px",
47 | "type": "grids"
48 | },
49 | "offset": {
50 | "value": "20px",
51 | "type": "grids"
52 | },
53 | "width": {
54 | "value": "375px",
55 | "type": "grids"
56 | }
57 | }
58 | },
59 | "spacers": {
60 | "M": {
61 | "value": "8px",
62 | "type": "spacers"
63 | },
64 | "S": {
65 | "value": "4px",
66 | "type": "spacers"
67 | },
68 | "L": {
69 | "value": "16px",
70 | "type": "spacers"
71 | },
72 | "XL": {
73 | "value": "24px",
74 | "type": "spacers"
75 | },
76 | "XXL": {
77 | "value": "32px",
78 | "type": "spacers"
79 | }
80 | },
81 | "colors": {
82 | "lemo": {
83 | "value": "rgba(252, 255, 234, 1)",
84 | "type": "color"
85 | },
86 | "blank": {
87 | "value": "rgba(255, 255, 255, 1)",
88 | "type": "color"
89 | },
90 | "medium-lemo": {
91 | "value": "rgba(237, 239, 222, 1)",
92 | "type": "color"
93 | },
94 | "dark-lemo": {
95 | "value": "rgba(141, 141, 136, 1)",
96 | "type": "color"
97 | },
98 | "limo": {
99 | "value": "rgba(238, 255, 137, 1)",
100 | "type": "color"
101 | },
102 | "coral": {
103 | "value": "rgba(255, 137, 137, 1)",
104 | "type": "color"
105 | },
106 | "plastic-grass": {
107 | "value": "rgba(74, 222, 168, 1)",
108 | "type": "color"
109 | },
110 | "supernova": {
111 | "value": "rgba(128, 91, 232, 1)",
112 | "type": "color"
113 | },
114 | "puma": {
115 | "value": "rgba(49, 49, 49, 1)",
116 | "type": "color"
117 | }
118 | },
119 | "fonts": {
120 | "link": {
121 | "family": {
122 | "value": "Arimo, Arimo-Regular",
123 | "type": "typography"
124 | },
125 | "size": {
126 | "value": 16,
127 | "type": "typography"
128 | },
129 | "weight": {
130 | "value": 400,
131 | "type": "typography"
132 | },
133 | "lineheight": {
134 | "value": "150%",
135 | "type": "typography"
136 | },
137 | "spacing": {
138 | "value": "normal",
139 | "type": "typography"
140 | }
141 | },
142 | "caption": {
143 | "large": {
144 | "family": {
145 | "value": "Arimo",
146 | "type": "typography"
147 | },
148 | "size": {
149 | "value": "16px",
150 | "type": "typography"
151 | },
152 | "weight": {
153 | "value": 400,
154 | "type": "typography"
155 | },
156 | "lineheight": {
157 | "value": "140%",
158 | "type": "typography"
159 | },
160 | "spacing": {
161 | "value": "3.2px",
162 | "type": "typography"
163 | }
164 | },
165 | "medium": {
166 | "family": {
167 | "value": "Arimo",
168 | "type": "typography"
169 | },
170 | "size": {
171 | "value": "12px",
172 | "type": "typography"
173 | },
174 | "weight": {
175 | "value": 400,
176 | "type": "typography"
177 | },
178 | "lineheight": {
179 | "value": "140%",
180 | "type": "typography"
181 | },
182 | "spacing": {
183 | "value": "2.4000000000000004px",
184 | "type": "typography"
185 | }
186 | },
187 | "small": {
188 | "family": {
189 | "value": "Arimo",
190 | "type": "typography"
191 | },
192 | "size": {
193 | "value": "12px",
194 | "type": "typography"
195 | },
196 | "weight": {
197 | "value": 400,
198 | "type": "typography"
199 | },
200 | "lineheight": {
201 | "value": "120%",
202 | "type": "typography"
203 | },
204 | "spacing": {
205 | "value": "2.4000000000000004px",
206 | "type": "typography"
207 | }
208 | }
209 | },
210 | "h1": {
211 | "desktop": {
212 | "family": {
213 | "value": "Zilla Slab",
214 | "type": "typography"
215 | },
216 | "size": {
217 | "value": "66px",
218 | "type": "typography"
219 | },
220 | "weight": {
221 | "value": 700,
222 | "type": "typography"
223 | },
224 | "lineheight": {
225 | "value": "90%",
226 | "type": "typography"
227 | },
228 | "spacing": {
229 | "value": "normal",
230 | "type": "typography"
231 | }
232 | },
233 | "tablet": {
234 | "family": {
235 | "value": "Zilla Slab",
236 | "type": "typography"
237 | },
238 | "size": {
239 | "value": "56px",
240 | "type": "typography"
241 | },
242 | "weight": {
243 | "value": 700,
244 | "type": "typography"
245 | },
246 | "lineheight": {
247 | "value": "90%",
248 | "type": "typography"
249 | },
250 | "spacing": {
251 | "value": "normal",
252 | "type": "typography"
253 | }
254 | },
255 | "mobile": {
256 | "family": {
257 | "value": "Zilla Slab",
258 | "type": "typography"
259 | },
260 | "size": {
261 | "value": "40px",
262 | "type": "typography"
263 | },
264 | "weight": {
265 | "value": 700,
266 | "type": "typography"
267 | },
268 | "lineheight": {
269 | "value": "90%",
270 | "type": "typography"
271 | },
272 | "spacing": {
273 | "value": "normal",
274 | "type": "typography"
275 | }
276 | }
277 | },
278 | "h2": {
279 | "mobile": {
280 | "family": {
281 | "value": "Zilla Slab",
282 | "type": "typography"
283 | },
284 | "size": {
285 | "value": "32px",
286 | "type": "typography"
287 | },
288 | "weight": {
289 | "value": 700,
290 | "type": "typography"
291 | },
292 | "lineheight": {
293 | "value": "90%",
294 | "type": "typography"
295 | },
296 | "spacing": {
297 | "value": "normal",
298 | "type": "typography"
299 | }
300 | },
301 | "desktop": {
302 | "family": {
303 | "value": "Zilla Slab",
304 | "type": "typography"
305 | },
306 | "size": {
307 | "value": "46px",
308 | "type": "typography"
309 | },
310 | "weight": {
311 | "value": 700,
312 | "type": "typography"
313 | },
314 | "lineheight": {
315 | "value": "90%",
316 | "type": "typography"
317 | },
318 | "spacing": {
319 | "value": "normal",
320 | "type": "typography"
321 | }
322 | },
323 | "tablet": {
324 | "family": {
325 | "value": "Zilla Slab",
326 | "type": "typography"
327 | },
328 | "size": {
329 | "value": "40px",
330 | "type": "typography"
331 | },
332 | "weight": {
333 | "value": 700,
334 | "type": "typography"
335 | },
336 | "lineheight": {
337 | "value": "90%",
338 | "type": "typography"
339 | },
340 | "spacing": {
341 | "value": "normal",
342 | "type": "typography"
343 | }
344 | }
345 | },
346 | "h3": {
347 | "mobile": {
348 | "family": {
349 | "value": "Zilla Slab",
350 | "type": "typography"
351 | },
352 | "size": {
353 | "value": "28px",
354 | "type": "typography"
355 | },
356 | "weight": {
357 | "value": 700,
358 | "type": "typography"
359 | },
360 | "lineheight": {
361 | "value": "90%",
362 | "type": "typography"
363 | },
364 | "spacing": {
365 | "value": "normal",
366 | "type": "typography"
367 | }
368 | },
369 | "desktop": {
370 | "family": {
371 | "value": "Zilla Slab",
372 | "type": "typography"
373 | },
374 | "size": {
375 | "value": "36px",
376 | "type": "typography"
377 | },
378 | "weight": {
379 | "value": 700,
380 | "type": "typography"
381 | },
382 | "lineheight": {
383 | "value": "90%",
384 | "type": "typography"
385 | },
386 | "spacing": {
387 | "value": "normal",
388 | "type": "typography"
389 | }
390 | },
391 | "tablet": {
392 | "family": {
393 | "value": "Zilla Slab",
394 | "type": "typography"
395 | },
396 | "size": {
397 | "value": "32px",
398 | "type": "typography"
399 | },
400 | "weight": {
401 | "value": 700,
402 | "type": "typography"
403 | },
404 | "lineheight": {
405 | "value": "90%",
406 | "type": "typography"
407 | },
408 | "spacing": {
409 | "value": "normal",
410 | "type": "typography"
411 | }
412 | }
413 | },
414 | "h4": {
415 | "desktop": {
416 | "family": {
417 | "value": "Arimo",
418 | "type": "typography"
419 | },
420 | "size": {
421 | "value": "24px",
422 | "type": "typography"
423 | },
424 | "weight": {
425 | "value": 700,
426 | "type": "typography"
427 | },
428 | "lineheight": {
429 | "value": "120%",
430 | "type": "typography"
431 | },
432 | "spacing": {
433 | "value": "normal",
434 | "type": "typography"
435 | }
436 | },
437 | "mobile": {
438 | "family": {
439 | "value": "Arimo",
440 | "type": "typography"
441 | },
442 | "size": {
443 | "value": "22px",
444 | "type": "typography"
445 | },
446 | "weight": {
447 | "value": 700,
448 | "type": "typography"
449 | },
450 | "lineheight": {
451 | "value": "120%",
452 | "type": "typography"
453 | },
454 | "spacing": {
455 | "value": "normal",
456 | "type": "typography"
457 | }
458 | }
459 | },
460 | "content": {
461 | "desktop": {
462 | "family": {
463 | "value": "Arimo",
464 | "type": "typography"
465 | },
466 | "size": {
467 | "value": "16px",
468 | "type": "typography"
469 | },
470 | "weight": {
471 | "value": 400,
472 | "type": "typography"
473 | },
474 | "lineheight": {
475 | "value": "150%",
476 | "type": "typography"
477 | },
478 | "spacing": {
479 | "value": "normal",
480 | "type": "typography"
481 | }
482 | },
483 | "mobile": {
484 | "family": {
485 | "value": "Arimo",
486 | "type": "typography"
487 | },
488 | "size": {
489 | "value": "17px",
490 | "type": "typography"
491 | },
492 | "weight": {
493 | "value": 400,
494 | "type": "typography"
495 | },
496 | "lineheight": {
497 | "value": "150%",
498 | "type": "typography"
499 | },
500 | "spacing": {
501 | "value": "normal",
502 | "type": "typography"
503 | }
504 | }
505 | }
506 | }
507 | }
508 | }
--------------------------------------------------------------------------------
/style-dictionary/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | ansi-styles@^3.2.1:
6 | version "3.2.1"
7 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
8 | dependencies:
9 | color-convert "^1.9.0"
10 |
11 | balanced-match@^1.0.0:
12 | version "1.0.0"
13 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
14 |
15 | brace-expansion@^1.1.7:
16 | version "1.1.11"
17 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
18 | dependencies:
19 | balanced-match "^1.0.0"
20 | concat-map "0.0.1"
21 |
22 | chalk@^2.4.1:
23 | version "2.4.1"
24 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
25 | dependencies:
26 | ansi-styles "^3.2.1"
27 | escape-string-regexp "^1.0.5"
28 | supports-color "^5.3.0"
29 |
30 | color-convert@^1.9.0:
31 | version "1.9.3"
32 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
33 | dependencies:
34 | color-name "1.1.3"
35 |
36 | color-name@1.1.3:
37 | version "1.1.3"
38 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
39 |
40 | commander@^2.9.0:
41 | version "2.19.0"
42 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
43 |
44 | concat-map@0.0.1:
45 | version "0.0.1"
46 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
47 |
48 | escape-string-regexp@^1.0.5:
49 | version "1.0.5"
50 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
51 |
52 | fs-extra@^6.0.1:
53 | version "6.0.1"
54 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b"
55 | dependencies:
56 | graceful-fs "^4.1.2"
57 | jsonfile "^4.0.0"
58 | universalify "^0.1.0"
59 |
60 | fs.realpath@^1.0.0:
61 | version "1.0.0"
62 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
63 |
64 | glob@^7.1.1:
65 | version "7.1.3"
66 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
67 | dependencies:
68 | fs.realpath "^1.0.0"
69 | inflight "^1.0.4"
70 | inherits "2"
71 | minimatch "^3.0.4"
72 | once "^1.3.0"
73 | path-is-absolute "^1.0.0"
74 |
75 | graceful-fs@^4.1.2, graceful-fs@^4.1.6:
76 | version "4.1.15"
77 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
78 |
79 | has-flag@^3.0.0:
80 | version "3.0.0"
81 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
82 |
83 | inflight@^1.0.4:
84 | version "1.0.6"
85 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
86 | dependencies:
87 | once "^1.3.0"
88 | wrappy "1"
89 |
90 | inherits@2:
91 | version "2.0.3"
92 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
93 |
94 | json5@^2.1.0:
95 | version "2.1.0"
96 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
97 | dependencies:
98 | minimist "^1.2.0"
99 |
100 | jsonfile@^4.0.0:
101 | version "4.0.0"
102 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
103 | optionalDependencies:
104 | graceful-fs "^4.1.6"
105 |
106 | lodash@^4.16.4:
107 | version "4.17.11"
108 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
109 |
110 | minimatch@^3.0.4:
111 | version "3.0.4"
112 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
113 | dependencies:
114 | brace-expansion "^1.1.7"
115 |
116 | minimist@^1.2.0:
117 | version "1.2.0"
118 | resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
119 |
120 | once@^1.3.0:
121 | version "1.4.0"
122 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
123 | dependencies:
124 | wrappy "1"
125 |
126 | path-is-absolute@^1.0.0:
127 | version "1.0.1"
128 | resolved "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
129 |
130 | resolve-cwd@^2.0.0:
131 | version "2.0.0"
132 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
133 | dependencies:
134 | resolve-from "^3.0.0"
135 |
136 | resolve-from@^3.0.0:
137 | version "3.0.0"
138 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
139 |
140 | style-dictionary@^2.6.2:
141 | version "2.6.2"
142 | resolved "https://registry.yarnpkg.com/style-dictionary/-/style-dictionary-2.6.2.tgz#7a550869f8f0e59cb559bdaff87f63e7d80b4689"
143 | dependencies:
144 | chalk "^2.4.1"
145 | commander "^2.9.0"
146 | fs-extra "^6.0.1"
147 | glob "^7.1.1"
148 | json5 "^2.1.0"
149 | lodash "^4.16.4"
150 | resolve-cwd "^2.0.0"
151 | tinycolor2 "^1.4.1"
152 |
153 | supports-color@^5.3.0:
154 | version "5.5.0"
155 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
156 | dependencies:
157 | has-flag "^3.0.0"
158 |
159 | tinycolor2@^1.4.1:
160 | version "1.4.1"
161 | resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
162 |
163 | universalify@^0.1.0:
164 | version "0.1.2"
165 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
166 |
167 | wrappy@1:
168 | version "1.0.2"
169 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
170 |
--------------------------------------------------------------------------------
/yarn-error.log:
--------------------------------------------------------------------------------
1 | Arguments:
2 | /usr/local/bin/node /usr/local/Cellar/yarn/1.7.0/libexec/bin/yarn.js init
3 |
4 | PATH:
5 | /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
6 |
7 | Yarn version:
8 | 1.7.0
9 |
10 | Node version:
11 | 10.5.0
12 |
13 | Platform:
14 | darwin x64
15 |
16 | Trace:
17 | Error: canceled
18 | at Interface. (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:131036:13)
19 | at Interface.emit (events.js:182:13)
20 | at Interface._ttyWrite (readline.js:783:16)
21 | at ReadStream.onkeypress (readline.js:168:10)
22 | at ReadStream.emit (events.js:182:13)
23 | at emitKeys (internal/readline.js:422:14)
24 | at emitKeys.next ()
25 | at ReadStream.onData (readline.js:1022:36)
26 | at ReadStream.emit (events.js:182:13)
27 | at addChunk (_stream_readable.js:283:12)
28 |
29 | npm manifest:
30 | No manifest
31 |
32 | yarn manifest:
33 | No manifest
34 |
35 | Lockfile:
36 | No lockfile
37 |
--------------------------------------------------------------------------------