├── README.md
├── avatar-512.png
├── avatar-640.png
├── avatar-768.png
├── avatar.svg
├── cli.js
├── index.html
├── index.js
├── package-lock.json
├── package.json
├── src
├── Avatar.js
└── path.js
└── svg.js
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Avatar
3 |
4 | 
5 |
6 | ```sh
7 | npm i jxnblk
8 | ```
9 |
10 | Canonical URL:
11 |
12 | [`http://jxnblk.com/avatar.png`](http://jxnblk.com/avatar.png)
13 |
14 |
--------------------------------------------------------------------------------
/avatar-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jxnblk/avatar/4bd8b21ae617e5b9ceefe5127c81392436c2f8aa/avatar-512.png
--------------------------------------------------------------------------------
/avatar-640.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jxnblk/avatar/4bd8b21ae617e5b9ceefe5127c81392436c2f8aa/avatar-640.png
--------------------------------------------------------------------------------
/avatar-768.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jxnblk/avatar/4bd8b21ae617e5b9ceefe5127c81392436c2f8aa/avatar-768.png
--------------------------------------------------------------------------------
/avatar.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | const boxen = require('boxen')
3 | const chalk = require('chalk')
4 |
5 | console.log(boxen((`${chalk.magenta('@jxnblk | Brent Jackson')}
6 |
7 | Front End Developer
8 |
9 | Twitter: ${chalk.cyan('https://twitter.com/jxnblk')}
10 | GitHub: ${chalk.cyan('https://github.com/jxnblk')}
11 | Web: ${chalk.cyan('https://jxnblk.com')}`), {
12 | padding: 1,
13 | margin: 1,
14 | borderStyle: 'round',
15 | borderColor: 'cyan',
16 | dimBorder: true,
17 | }))
18 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Jxnblk Avatar
5 |
13 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 |
2 | const Avatar = require('./src/Avatar')
3 | const path = require('./src/path')
4 |
5 | module.exports = {
6 | Avatar,
7 | path
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jxnblk",
3 | "version": "1.4.1",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansi-align": {
8 | "version": "3.0.0",
9 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
10 | "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
11 | "requires": {
12 | "string-width": "^3.0.0"
13 | }
14 | },
15 | "ansi-regex": {
16 | "version": "4.1.0",
17 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
18 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
19 | },
20 | "ansi-styles": {
21 | "version": "3.2.1",
22 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
23 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
24 | "requires": {
25 | "color-convert": "^1.9.0"
26 | }
27 | },
28 | "boxen": {
29 | "version": "3.1.0",
30 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.1.0.tgz",
31 | "integrity": "sha512-WiP53arM6cU2STTBYQ2we3viJkDqkthMYaTFnmXPZ/v3S4h43H5MHWpw5d85SgmHiYO/Y+2PoyXO8nTEURXNJA==",
32 | "requires": {
33 | "ansi-align": "^3.0.0",
34 | "camelcase": "^5.3.1",
35 | "chalk": "^2.4.2",
36 | "cli-boxes": "^2.1.0",
37 | "string-width": "^3.0.0",
38 | "term-size": "^1.2.0",
39 | "type-fest": "^0.3.0",
40 | "widest-line": "^2.0.0"
41 | }
42 | },
43 | "camelcase": {
44 | "version": "5.3.1",
45 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
46 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
47 | },
48 | "chalk": {
49 | "version": "2.4.2",
50 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
51 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
52 | "requires": {
53 | "ansi-styles": "^3.2.1",
54 | "escape-string-regexp": "^1.0.5",
55 | "supports-color": "^5.3.0"
56 | }
57 | },
58 | "cli-boxes": {
59 | "version": "2.1.0",
60 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.1.0.tgz",
61 | "integrity": "sha512-V9gkudTUk+iZGUYvI6qNwD9XbEc0mJiQEjYT5/+RLhN/3GgSTjIAsltAIA+idbCEAdAQw//uaXRHBp+CETPjuA=="
62 | },
63 | "color-convert": {
64 | "version": "1.9.3",
65 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
66 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
67 | "requires": {
68 | "color-name": "1.1.3"
69 | }
70 | },
71 | "color-name": {
72 | "version": "1.1.3",
73 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
74 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
75 | },
76 | "cross-spawn": {
77 | "version": "5.1.0",
78 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
79 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
80 | "requires": {
81 | "lru-cache": "^4.0.1",
82 | "shebang-command": "^1.2.0",
83 | "which": "^1.2.9"
84 | }
85 | },
86 | "emoji-regex": {
87 | "version": "7.0.3",
88 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
89 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
90 | },
91 | "escape-string-regexp": {
92 | "version": "1.0.5",
93 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
94 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
95 | },
96 | "execa": {
97 | "version": "0.7.0",
98 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
99 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
100 | "requires": {
101 | "cross-spawn": "^5.0.1",
102 | "get-stream": "^3.0.0",
103 | "is-stream": "^1.1.0",
104 | "npm-run-path": "^2.0.0",
105 | "p-finally": "^1.0.0",
106 | "signal-exit": "^3.0.0",
107 | "strip-eof": "^1.0.0"
108 | }
109 | },
110 | "get-stream": {
111 | "version": "3.0.0",
112 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
113 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
114 | },
115 | "has-flag": {
116 | "version": "3.0.0",
117 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
118 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
119 | },
120 | "is-fullwidth-code-point": {
121 | "version": "2.0.0",
122 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
123 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
124 | },
125 | "is-stream": {
126 | "version": "1.1.0",
127 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
128 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
129 | },
130 | "isexe": {
131 | "version": "2.0.0",
132 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
133 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
134 | },
135 | "js-tokens": {
136 | "version": "4.0.0",
137 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
138 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
139 | "dev": true
140 | },
141 | "loose-envify": {
142 | "version": "1.4.0",
143 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
144 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
145 | "dev": true,
146 | "requires": {
147 | "js-tokens": "^3.0.0 || ^4.0.0"
148 | }
149 | },
150 | "lru-cache": {
151 | "version": "4.1.5",
152 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
153 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
154 | "requires": {
155 | "pseudomap": "^1.0.2",
156 | "yallist": "^2.1.2"
157 | }
158 | },
159 | "npm-run-path": {
160 | "version": "2.0.2",
161 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
162 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
163 | "requires": {
164 | "path-key": "^2.0.0"
165 | }
166 | },
167 | "object-assign": {
168 | "version": "4.1.1",
169 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
170 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
171 | "dev": true
172 | },
173 | "p-finally": {
174 | "version": "1.0.0",
175 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
176 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
177 | },
178 | "path-key": {
179 | "version": "2.0.1",
180 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
181 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
182 | },
183 | "prop-types": {
184 | "version": "15.7.2",
185 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
186 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
187 | "dev": true,
188 | "requires": {
189 | "loose-envify": "^1.4.0",
190 | "object-assign": "^4.1.1",
191 | "react-is": "^16.8.1"
192 | }
193 | },
194 | "pseudomap": {
195 | "version": "1.0.2",
196 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
197 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
198 | },
199 | "react": {
200 | "version": "16.8.6",
201 | "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz",
202 | "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==",
203 | "dev": true,
204 | "requires": {
205 | "loose-envify": "^1.1.0",
206 | "object-assign": "^4.1.1",
207 | "prop-types": "^15.6.2",
208 | "scheduler": "^0.13.6"
209 | }
210 | },
211 | "react-dom": {
212 | "version": "16.8.6",
213 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz",
214 | "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==",
215 | "dev": true,
216 | "requires": {
217 | "loose-envify": "^1.1.0",
218 | "object-assign": "^4.1.1",
219 | "prop-types": "^15.6.2",
220 | "scheduler": "^0.13.6"
221 | }
222 | },
223 | "react-is": {
224 | "version": "16.8.6",
225 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
226 | "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==",
227 | "dev": true
228 | },
229 | "scheduler": {
230 | "version": "0.13.6",
231 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz",
232 | "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==",
233 | "dev": true,
234 | "requires": {
235 | "loose-envify": "^1.1.0",
236 | "object-assign": "^4.1.1"
237 | }
238 | },
239 | "shebang-command": {
240 | "version": "1.2.0",
241 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
242 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
243 | "requires": {
244 | "shebang-regex": "^1.0.0"
245 | }
246 | },
247 | "shebang-regex": {
248 | "version": "1.0.0",
249 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
250 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
251 | },
252 | "signal-exit": {
253 | "version": "3.0.2",
254 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
255 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
256 | },
257 | "string-width": {
258 | "version": "3.1.0",
259 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
260 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
261 | "requires": {
262 | "emoji-regex": "^7.0.1",
263 | "is-fullwidth-code-point": "^2.0.0",
264 | "strip-ansi": "^5.1.0"
265 | }
266 | },
267 | "strip-ansi": {
268 | "version": "5.2.0",
269 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
270 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
271 | "requires": {
272 | "ansi-regex": "^4.1.0"
273 | }
274 | },
275 | "strip-eof": {
276 | "version": "1.0.0",
277 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
278 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
279 | },
280 | "supports-color": {
281 | "version": "5.5.0",
282 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
283 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
284 | "requires": {
285 | "has-flag": "^3.0.0"
286 | }
287 | },
288 | "term-size": {
289 | "version": "1.2.0",
290 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
291 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
292 | "requires": {
293 | "execa": "^0.7.0"
294 | }
295 | },
296 | "type-fest": {
297 | "version": "0.3.1",
298 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
299 | "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ=="
300 | },
301 | "which": {
302 | "version": "1.3.1",
303 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
304 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
305 | "requires": {
306 | "isexe": "^2.0.0"
307 | }
308 | },
309 | "widest-line": {
310 | "version": "2.0.1",
311 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
312 | "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
313 | "requires": {
314 | "string-width": "^2.1.1"
315 | },
316 | "dependencies": {
317 | "ansi-regex": {
318 | "version": "3.0.0",
319 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
320 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
321 | },
322 | "string-width": {
323 | "version": "2.1.1",
324 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
325 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
326 | "requires": {
327 | "is-fullwidth-code-point": "^2.0.0",
328 | "strip-ansi": "^4.0.0"
329 | }
330 | },
331 | "strip-ansi": {
332 | "version": "4.0.0",
333 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
334 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
335 | "requires": {
336 | "ansi-regex": "^3.0.0"
337 | }
338 | }
339 | }
340 | },
341 | "yallist": {
342 | "version": "2.1.2",
343 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
344 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
345 | }
346 | }
347 | }
348 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jxnblk",
3 | "version": "1.4.1",
4 | "description": "SVG avatar for Jxnblk",
5 | "main": "index.js",
6 | "bin": {
7 | "jxnblk": "./cli.js"
8 | },
9 | "scripts": {
10 | "512": "npx repng src/Avatar.js -f avatar-512.png -w 512 -h 512",
11 | "640": "npx repng src/Avatar.js -f avatar-640.png -w 640 -h 640",
12 | "768": "npx repng src/Avatar.js -f avatar-768.png -w 768 -h 768",
13 | "test": "./cli.js",
14 | "__prepare": "npm run 512 && npm run 640 && npm run 768",
15 | "svg": "node svg.js",
16 | "dev": "npx repng src/Avatar.js --dev"
17 | },
18 | "repository": {
19 | "type": "git",
20 | "url": "https://github.com/jxnblk/avatar.git"
21 | },
22 | "keywords": [
23 | "avatar",
24 | "jxnblk"
25 | ],
26 | "author": "Brent Jackson",
27 | "license": "MIT",
28 | "bugs": {
29 | "url": "https://github.com/jxnblk/avatar/issues"
30 | },
31 | "homepage": "https://github.com/jxnblk/avatar",
32 | "devDependencies": {
33 | "react": "^16.8.6",
34 | "react-dom": "^16.8.6"
35 | },
36 | "dependencies": {
37 | "boxen": "^3.1.0",
38 | "chalk": "^2.4.2"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Avatar.js:
--------------------------------------------------------------------------------
1 | const { createElement: h } = require('react')
2 | const path = require('./path')
3 |
4 | module.exports = ({
5 | size = 768,
6 | pad = true,
7 | color = '#000',
8 | style,
9 | ...props
10 | }) => h('svg', {
11 | xmlns: 'http://www.w3.org/2000/svg',
12 | viewBox: pad ? '-24 -24 176 176' : '0 0 128 128',
13 | width: size,
14 | height: size,
15 | fill: color,
16 | ...props,
17 | style: {
18 | display: 'block',
19 | margin: 0,
20 | ...style,
21 | }
22 | },
23 | h('path', {
24 | d: path
25 | })
26 | )
27 |
--------------------------------------------------------------------------------
/src/path.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports = `
3 | M64 0 L64 4 L76 4 L74 6 L94 14 L92 16
4 | L104 20 L100 22 L106 28 L102 28 L106 56
5 | Q110 62 110 70 T105 84
6 | L96 108
7 | C92 116 76 128 64 128
8 | C52 128 36 116 32 108
9 | L23 84
10 | Q18 78 18 70 T22 56
11 | L22 22 L26 24 L34 12 L36 16z
12 |
13 | M72 40
14 | Q56 30 40 30
15 | Q32 34 30 48
16 | L30 48
17 | L28 74
18 | C28 81 37 102 38 104
19 | C46 118 62 121 64 121
20 | C66 121 82 118 90 104
21 |
22 | C91 102 100 81 100 74
23 | L99 52
24 | L94 40
25 | L92 42
26 | L84 38
27 | L84 42
28 | L74 36
29 |
30 | M44 62
31 | A5.5 5.5 0 0 0 44 73
32 | A5.5 5.5 0 0 0 44 62
33 |
34 | M84 62
35 | A5.5 5.5 0 0 0 84 73
36 | A5.5 5.5 0 0 0 84 62
37 |
38 | M57 88 H71
39 | A2 2 0 0 1 71 92
40 | H57
41 | A2 2 0 0 1 57 88
42 |
43 | M53 104 H75
44 | A2 2 0 0 1 75 108
45 | H53
46 | A2 2 0 0 1 53 104
47 |
48 | M33.3 60.4
49 | C34.6 57.8 37 55.9 39.7 55.2
50 | C43 54.4 46.8 55.3 50.4 58
51 | C51.3 58.6 52.5 58.4 53.2 57.5
52 | C53.8 56.6 53.6 55.4 52.7 54.7
53 | C46.8 50.5 41.8 50.5 38.7 51.3
54 | C34.8 52.3 31.5 54.9 29.7 58.6
55 | C29.2 59.6 29.6 60.8 30.6 61.3
56 | C30.9 61.4 31.2 61.5 31.5 61.5
57 | C32.2 61.5 32.9 61.1 33.3 60.4
58 | z
59 |
60 | M97.7 61.9
61 | C98.5 61.2 98.6 59.9 97.9 59.1
62 | C94.3 55 90.1 52.9 85.4 53
63 | C82 53 78.3 54.2 74.3 56.6
64 | C73.3 57.2 73 58.4 73.6 59.3
65 | C74.2 60.3 75.4 60.6 76.3 60
66 | C79.7 58 82.7 57 85.5 57
67 | C89 57 92.1 58.5 95 61.7
68 | C95.4 62.2 95.9 62.4 96.5 62.4
69 | C96.8 62.4 97.3 62.2 97.7 61.9
70 | z
71 | `
72 |
73 |
--------------------------------------------------------------------------------
/svg.js:
--------------------------------------------------------------------------------
1 |
2 | const fs = require('fs')
3 | const path = require('path')
4 | const { createElement } = require('react')
5 | const { renderToStaticMarkup } = require('react-dom/server')
6 | const Avatar = require('./src/Avatar')
7 |
8 | const svg = renderToStaticMarkup(createElement(Avatar))
9 | const filename = path.join(__dirname, 'avatar.svg')
10 |
11 | fs.writeFileSync(filename, svg)
12 |
13 |
--------------------------------------------------------------------------------