solfaces 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +359 -87
- package/dist/agent/index.cjs +14 -14
- package/dist/agent/index.js +4 -4
- package/dist/agent/mcp-server.cjs +716 -277
- package/dist/{chunk-VMNATBH3.cjs → chunk-23XJ5VDX.cjs} +37 -27
- package/dist/chunk-23XJ5VDX.cjs.map +1 -0
- package/dist/chunk-46ZEFA6R.cjs +243 -0
- package/dist/chunk-46ZEFA6R.cjs.map +1 -0
- package/dist/{chunk-A6N3RPEA.cjs → chunk-546TBMAR.cjs} +6 -6
- package/dist/{chunk-A6N3RPEA.cjs.map → chunk-546TBMAR.cjs.map} +1 -1
- package/dist/chunk-6QRDULAO.cjs +191 -0
- package/dist/chunk-6QRDULAO.cjs.map +1 -0
- package/dist/chunk-6UWILY7E.cjs +647 -0
- package/dist/chunk-6UWILY7E.cjs.map +1 -0
- package/dist/chunk-DRUSCLEF.js +177 -0
- package/dist/chunk-DRUSCLEF.js.map +1 -0
- package/dist/chunk-HCEE4K4T.js +625 -0
- package/dist/chunk-HCEE4K4T.js.map +1 -0
- package/dist/chunk-JS527VKL.js +238 -0
- package/dist/chunk-JS527VKL.js.map +1 -0
- package/dist/{chunk-SNJABBAT.js → chunk-LRHYF5QN.js} +3 -3
- package/dist/{chunk-SNJABBAT.js.map → chunk-LRHYF5QN.js.map} +1 -1
- package/dist/{chunk-RX6D5FGH.js → chunk-TTGJZEPV.js} +30 -20
- package/dist/chunk-TTGJZEPV.js.map +1 -0
- package/dist/core/index.cjs +69 -29
- package/dist/core/index.d.cts +29 -47
- package/dist/core/index.d.ts +29 -47
- package/dist/core/index.js +3 -3
- package/dist/index.cjs +75 -35
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +5 -5
- package/dist/react/index.cjs +431 -397
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +3 -2
- package/dist/react/index.d.ts +3 -2
- package/dist/react/index.js +427 -393
- package/dist/react/index.js.map +1 -1
- package/dist/solfaces.cdn.global.js +2 -2
- package/dist/solfaces.cdn.global.js.map +1 -1
- package/dist/themes/index.cjs +29 -17
- package/dist/themes/index.d.cts +10 -7
- package/dist/themes/index.d.ts +10 -7
- package/dist/themes/index.js +1 -1
- package/dist/{traits-DAFZnXeS.d.cts → traits-QlWuxZDD.d.cts} +45 -1
- package/dist/{traits-DAFZnXeS.d.ts → traits-QlWuxZDD.d.ts} +45 -1
- package/dist/vanilla/index.cjs +20 -8
- package/dist/vanilla/index.cjs.map +1 -1
- package/dist/vanilla/index.d.cts +1 -1
- package/dist/vanilla/index.d.ts +1 -1
- package/dist/vanilla/index.js +17 -5
- package/dist/vanilla/index.js.map +1 -1
- package/package.json +1 -1
- package/python/solfaces.py +557 -235
- package/skill.md +210 -65
- package/dist/chunk-2DIKGLXZ.cjs +0 -126
- package/dist/chunk-2DIKGLXZ.cjs.map +0 -1
- package/dist/chunk-CVFO7YHY.cjs +0 -97
- package/dist/chunk-CVFO7YHY.cjs.map +0 -1
- package/dist/chunk-H3SK3MNX.cjs +0 -409
- package/dist/chunk-H3SK3MNX.cjs.map +0 -1
- package/dist/chunk-KSGFMW33.js +0 -401
- package/dist/chunk-KSGFMW33.js.map +0 -1
- package/dist/chunk-LQWJRHGC.js +0 -86
- package/dist/chunk-LQWJRHGC.js.map +0 -1
- package/dist/chunk-RX6D5FGH.js.map +0 -1
- package/dist/chunk-VMNATBH3.cjs.map +0 -1
- package/dist/chunk-WURY4QGH.js +0 -117
- package/dist/chunk-WURY4QGH.js.map +0 -1
package/dist/react/index.cjs
CHANGED
|
@@ -1,39 +1,112 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6UWILY7E_cjs = require('../chunk-6UWILY7E.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
7
|
-
function
|
|
8
|
-
|
|
7
|
+
function djb2(str) {
|
|
8
|
+
let hash = 5381;
|
|
9
|
+
for (let i = 0; i < str.length; i++) {
|
|
10
|
+
hash = (hash << 5) + hash + str.charCodeAt(i) | 0;
|
|
11
|
+
}
|
|
12
|
+
return hash >>> 0;
|
|
13
|
+
}
|
|
14
|
+
function HairBack({ hi, id, flat }) {
|
|
15
|
+
const fill = flat ? "currentColor" : `url(#${id}hg)`;
|
|
16
|
+
switch (hi) {
|
|
17
|
+
case 5:
|
|
18
|
+
return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "10", y: "14", width: "44", height: "42", rx: "6", fill });
|
|
19
|
+
case 6:
|
|
20
|
+
return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "12", y: "14", width: "40", height: "32", rx: "8", fill });
|
|
21
|
+
case 8:
|
|
22
|
+
return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "14", width: "42", height: "38", rx: "8", fill });
|
|
23
|
+
default:
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function Ears({ earFill, earShadow }) {
|
|
28
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
29
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "11", cy: "34", rx: "4", ry: "5", fill: earFill }),
|
|
30
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "11", cy: "34", rx: "2.5", ry: "3.5", fill: earShadow, opacity: "0.3" }),
|
|
31
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "53", cy: "34", rx: "4", ry: "5", fill: earFill }),
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "53", cy: "34", rx: "2.5", ry: "3.5", fill: earShadow, opacity: "0.3" })
|
|
33
|
+
] });
|
|
34
|
+
}
|
|
35
|
+
function FaceOverlays({ id }) {
|
|
36
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "14", y: "16", width: "36", height: "38", rx: "12", ry: "12", fill: `url(#${id}glow)` }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "14", y: "16", width: "36", height: "38", rx: "12", ry: "12", fill: `url(#${id}chin)` }),
|
|
39
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "22", cy: "42", rx: "5", ry: "3.5", fill: `url(#${id}cL)` }),
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "42", cy: "42", rx: "5", ry: "3.5", fill: `url(#${id}cR)` }),
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "20", y1: "50", x2: "44", y2: "50", stroke: "currentColor", strokeWidth: "0.3", opacity: "0.08", strokeLinecap: "round" })
|
|
42
|
+
] });
|
|
43
|
+
}
|
|
44
|
+
function HairFront({ hi, id, hairCol, skin, flat }) {
|
|
45
|
+
const fill = flat ? hairCol : `url(#${id}hg)`;
|
|
46
|
+
switch (hi) {
|
|
9
47
|
case 0:
|
|
10
|
-
return
|
|
48
|
+
return null;
|
|
11
49
|
case 1:
|
|
12
|
-
return /* @__PURE__ */ jsxRuntime.jsx("
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 28 Q14 14 32 12 Q50 14 50 28 L50 22 Q50 12 32 10 Q14 12 14 22 Z", fill });
|
|
13
51
|
case 2:
|
|
14
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
52
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill, children: [
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "20", cy: "14", r: "5" }),
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "28", cy: "11", r: "5.5" }),
|
|
55
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "36", cy: "11", r: "5.5" }),
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "44", cy: "14", r: "5" }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "16", cy: "20", r: "4" }),
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "48", cy: "20", r: "4" })
|
|
59
|
+
] });
|
|
15
60
|
case 3:
|
|
16
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
17
|
-
"path",
|
|
18
|
-
{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
);
|
|
61
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill, children: [
|
|
62
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 26 Q14 12 32 10 Q50 12 50 26 L50 20 Q50 10 32 8 Q14 10 14 20 Z" }),
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 20 Q8 16 10 8 Q14 10 20 16 Z" })
|
|
64
|
+
] });
|
|
65
|
+
case 4:
|
|
66
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "32", cy: "10", rx: "14", ry: "8", fill });
|
|
67
|
+
case 5:
|
|
68
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 28 Q14 12 32 10 Q50 12 50 28 L50 20 Q50 10 32 8 Q14 10 14 20 Z", fill });
|
|
69
|
+
case 6:
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill, children: [
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 28 Q14 12 32 10 Q50 12 50 28 L50 20 Q50 10 32 8 Q14 10 14 20 Z" }),
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "10", y: "28", width: "8", height: "14", rx: "4" }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "46", y: "28", width: "8", height: "14", rx: "4" })
|
|
74
|
+
] });
|
|
75
|
+
case 7: {
|
|
76
|
+
const bOp = chunk6UWILY7E_cjs.buzzOpacity(hairCol, skin);
|
|
77
|
+
return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "15", y: "13", width: "34", height: "16", rx: "10", ry: "8", fill: hairCol, opacity: bOp });
|
|
78
|
+
}
|
|
79
|
+
case 8:
|
|
80
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
81
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 28 Q14 12 32 10 Q50 12 50 28 L50 20 Q50 10 32 8 Q14 10 14 20 Z", fill }),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 30 Q10 20 14 16", fill: "none", stroke: fill, strokeWidth: "4", strokeLinecap: "round" }),
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M52 30 Q54 20 50 16", fill: "none", stroke: fill, strokeWidth: "4", strokeLinecap: "round" })
|
|
84
|
+
] });
|
|
85
|
+
case 9:
|
|
86
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill, children: [
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 28 Q14 14 32 12 Q50 14 50 28 L50 22 Q50 12 32 10 Q14 12 14 22 Z" }),
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "32", cy: "6", rx: "6", ry: "5" })
|
|
89
|
+
] });
|
|
24
90
|
default:
|
|
25
|
-
return
|
|
91
|
+
return null;
|
|
26
92
|
}
|
|
27
93
|
}
|
|
28
|
-
function
|
|
29
|
-
const lx =
|
|
30
|
-
|
|
94
|
+
function Eyes({ ei, eyeCol, eyeWhite, lidColor, full }) {
|
|
95
|
+
const lx = 25, rx = 39, y = 33;
|
|
96
|
+
const lids = full && ei !== 1 && ei !== 5 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${lx - 4} ${y - 1.5} Q${lx} ${y - 4} ${lx + 4} ${y - 1.5}`, fill: "none", stroke: lidColor, strokeWidth: "0.5", opacity: "0.4" }),
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${rx - 4} ${y - 1.5} Q${rx} ${y - 4} ${rx + 4} ${y - 1.5}`, fill: "none", stroke: lidColor, strokeWidth: "0.5", opacity: "0.4" })
|
|
99
|
+
] }) : null;
|
|
100
|
+
switch (ei) {
|
|
31
101
|
case 0:
|
|
32
102
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
33
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "
|
|
34
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx +
|
|
35
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx:
|
|
36
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx
|
|
103
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "4", fill: eyeWhite }),
|
|
104
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 0.8, cy: y, r: "2.2", fill: eyeCol }),
|
|
105
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 1.5, cy: y - 1, r: "0.7", fill: "white", opacity: "0.8" }),
|
|
106
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "4", fill: eyeWhite }),
|
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 0.8, cy: y, r: "2.2", fill: eyeCol }),
|
|
108
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 1.5, cy: y - 1, r: "0.7", fill: "white", opacity: "0.8" }),
|
|
109
|
+
lids
|
|
37
110
|
] });
|
|
38
111
|
case 1:
|
|
39
112
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -42,420 +115,328 @@ function renderEyes(traits, eyeCol, eyeWhite = "white") {
|
|
|
42
115
|
] });
|
|
43
116
|
case 2:
|
|
44
117
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
45
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx, cy: y, rx: "4", ry: "2.
|
|
46
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 0.5, cy: y, r: "1.
|
|
47
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
48
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx, cy: y, rx: "4.5", ry: "2.8", fill: eyeWhite }),
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 0.5, cy: y, r: "1.8", fill: eyeCol }),
|
|
120
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 1.2, cy: y - 0.8, r: "0.6", fill: "white", opacity: "0.7" }),
|
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx, cy: y, rx: "4.5", ry: "2.8", fill: eyeWhite }),
|
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 0.5, cy: y, r: "1.8", fill: eyeCol }),
|
|
123
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 1.2, cy: y - 0.8, r: "0.6", fill: "white", opacity: "0.7" }),
|
|
124
|
+
lids
|
|
49
125
|
] });
|
|
50
126
|
case 3:
|
|
51
127
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
52
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "
|
|
53
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y + 0.5, r: "2.
|
|
54
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx:
|
|
55
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "5", fill: eyeWhite }),
|
|
129
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y + 0.5, r: "2.8", fill: eyeCol }),
|
|
130
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 1.5, cy: y - 1, r: "0.8", fill: "white", opacity: "0.8" }),
|
|
131
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "5", fill: eyeWhite }),
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y + 0.5, r: "2.8", fill: eyeCol }),
|
|
133
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 1.5, cy: y - 1, r: "0.8", fill: "white", opacity: "0.8" }),
|
|
134
|
+
lids
|
|
56
135
|
] });
|
|
57
136
|
case 4:
|
|
58
137
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
59
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx, cy: y + 1, rx: "
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx, cy: y + 1, rx: "4", ry: "2.2", fill: eyeWhite }),
|
|
60
139
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y + 1, r: "1.5", fill: eyeCol }),
|
|
61
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
-
|
|
63
|
-
{
|
|
64
|
-
x1: lx - 4,
|
|
65
|
-
y1: y - 0.5,
|
|
66
|
-
x2: lx + 4,
|
|
67
|
-
y2: y - 0.5,
|
|
68
|
-
stroke: eyeCol,
|
|
69
|
-
strokeWidth: "1",
|
|
70
|
-
strokeLinecap: "round"
|
|
71
|
-
}
|
|
72
|
-
),
|
|
73
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx, cy: y + 1, rx: "3.5", ry: "2", fill: eyeWhite }),
|
|
140
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: lx - 4.5, y1: y - 0.5, x2: lx + 4.5, y2: y - 0.5, stroke: lidColor, strokeWidth: "0.8", strokeLinecap: "round" }),
|
|
141
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx, cy: y + 1, rx: "4", ry: "2.2", fill: eyeWhite }),
|
|
74
142
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y + 1, r: "1.5", fill: eyeCol }),
|
|
75
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
x1: rx - 4,
|
|
79
|
-
y1: y - 0.5,
|
|
80
|
-
x2: rx + 4,
|
|
81
|
-
y2: y - 0.5,
|
|
82
|
-
stroke: eyeCol,
|
|
83
|
-
strokeWidth: "1",
|
|
84
|
-
strokeLinecap: "round"
|
|
85
|
-
}
|
|
86
|
-
)
|
|
143
|
+
full && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: rx - 4.5, y1: y - 0.5, x2: rx + 4.5, y2: y - 0.5, stroke: lidColor, strokeWidth: "0.8", strokeLinecap: "round" }),
|
|
144
|
+
lids
|
|
87
145
|
] });
|
|
88
146
|
case 5:
|
|
89
147
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
90
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
91
|
-
|
|
92
|
-
{
|
|
93
|
-
d: `M${lx - 3} ${y} Q${lx} ${y + 3} ${lx + 3} ${y}`,
|
|
94
|
-
fill: "none",
|
|
95
|
-
stroke: eyeCol,
|
|
96
|
-
strokeWidth: "1.5",
|
|
97
|
-
strokeLinecap: "round"
|
|
98
|
-
}
|
|
99
|
-
),
|
|
100
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "3.5", fill: eyeWhite }),
|
|
101
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 1, cy: y, r: "2", fill: eyeCol })
|
|
148
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${lx - 4} ${y} Q${lx} ${y + 4} ${lx + 4} ${y}`, fill: "none", stroke: eyeCol, strokeWidth: "1.8", strokeLinecap: "round" }),
|
|
149
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${rx - 4} ${y} Q${rx} ${y + 4} ${rx + 4} ${y}`, fill: "none", stroke: eyeCol, strokeWidth: "1.8", strokeLinecap: "round" })
|
|
102
150
|
] });
|
|
103
151
|
case 6:
|
|
104
152
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
105
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "3", fill: eyeWhite }),
|
|
106
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 0.5, cy: y, r: "
|
|
107
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
108
|
-
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
),
|
|
119
|
-
|
|
120
|
-
"line",
|
|
121
|
-
{
|
|
122
|
-
x1: lx + 3,
|
|
123
|
-
y1: y - 2,
|
|
124
|
-
x2: lx + 4.5,
|
|
125
|
-
y2: y - 3,
|
|
126
|
-
stroke: eyeCol,
|
|
127
|
-
strokeWidth: "0.8",
|
|
128
|
-
strokeLinecap: "round"
|
|
129
|
-
}
|
|
130
|
-
),
|
|
131
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "3", fill: eyeWhite }),
|
|
132
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 0.5, cy: y, r: "1.5", fill: eyeCol }),
|
|
133
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
-
"line",
|
|
135
|
-
{
|
|
136
|
-
x1: rx + 2,
|
|
137
|
-
y1: y - 3,
|
|
138
|
-
x2: rx + 3.5,
|
|
139
|
-
y2: y - 4.5,
|
|
140
|
-
stroke: eyeCol,
|
|
141
|
-
strokeWidth: "0.8",
|
|
142
|
-
strokeLinecap: "round"
|
|
143
|
-
}
|
|
144
|
-
),
|
|
145
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
146
|
-
"line",
|
|
147
|
-
{
|
|
148
|
-
x1: rx + 3,
|
|
149
|
-
y1: y - 2,
|
|
150
|
-
x2: rx + 4.5,
|
|
151
|
-
y2: y - 3,
|
|
152
|
-
stroke: eyeCol,
|
|
153
|
-
strokeWidth: "0.8",
|
|
154
|
-
strokeLinecap: "round"
|
|
155
|
-
}
|
|
156
|
-
)
|
|
153
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "3.5", fill: eyeWhite }),
|
|
154
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 0.5, cy: y, r: "2", fill: eyeCol }),
|
|
155
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 1.5, cy: y - 1, r: "1", fill: "white", opacity: "0.9" }),
|
|
156
|
+
full && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
157
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: lx + 2.5, y1: y - 3.5, x2: lx + 4, y2: y - 5, stroke: eyeCol, strokeWidth: "0.8", strokeLinecap: "round" }),
|
|
158
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: lx + 3.5, y1: y - 2.5, x2: lx + 5, y2: y - 3.5, stroke: eyeCol, strokeWidth: "0.8", strokeLinecap: "round" })
|
|
159
|
+
] }),
|
|
160
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "3.5", fill: eyeWhite }),
|
|
161
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 0.5, cy: y, r: "2", fill: eyeCol }),
|
|
162
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 1.5, cy: y - 1, r: "1", fill: "white", opacity: "0.9" }),
|
|
163
|
+
full && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
164
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: rx + 2.5, y1: y - 3.5, x2: rx + 4, y2: y - 5, stroke: eyeCol, strokeWidth: "0.8", strokeLinecap: "round" }),
|
|
165
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: rx + 3.5, y1: y - 2.5, x2: rx + 5, y2: y - 3.5, stroke: eyeCol, strokeWidth: "0.8", strokeLinecap: "round" })
|
|
166
|
+
] }),
|
|
167
|
+
lids
|
|
157
168
|
] });
|
|
158
169
|
case 7:
|
|
159
170
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
160
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx, cy: y, rx: "4", ry: "1.
|
|
161
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx + 0.5, cy: y, rx: "2", ry: "1", fill: eyeCol }),
|
|
162
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx, cy: y, rx: "4", ry: "1.
|
|
163
|
-
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx + 0.5, cy: y, rx: "2", ry: "1", fill: eyeCol })
|
|
171
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx, cy: y, rx: "4.5", ry: "1.5", fill: eyeWhite }),
|
|
172
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: lx + 0.5, cy: y, rx: "2.2", ry: "1.2", fill: eyeCol }),
|
|
173
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx, cy: y, rx: "4.5", ry: "1.5", fill: eyeWhite }),
|
|
174
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: rx + 0.5, cy: y, rx: "2.2", ry: "1.2", fill: eyeCol }),
|
|
175
|
+
lids
|
|
164
176
|
] });
|
|
165
177
|
default:
|
|
166
178
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
167
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "3", fill: eyeWhite }),
|
|
168
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx +
|
|
169
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "3", fill: eyeWhite }),
|
|
170
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx +
|
|
179
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx, cy: y, r: "3.5", fill: eyeWhite }),
|
|
180
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: lx + 0.8, cy: y, r: "2", fill: eyeCol }),
|
|
181
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx, cy: y, r: "3.5", fill: eyeWhite }),
|
|
182
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: rx + 0.8, cy: y, r: "2", fill: eyeCol }),
|
|
183
|
+
lids
|
|
171
184
|
] });
|
|
172
185
|
}
|
|
173
186
|
}
|
|
174
|
-
function
|
|
175
|
-
const lx =
|
|
176
|
-
switch (
|
|
187
|
+
function Eyebrows({ bi, browColor }) {
|
|
188
|
+
const lx = 25, rx = 39, y = 27;
|
|
189
|
+
switch (bi) {
|
|
177
190
|
case 0:
|
|
178
|
-
return
|
|
191
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
192
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: lx - 3, y1: y, x2: lx + 3, y2: y - 0.5, stroke: browColor, strokeWidth: "0.7", strokeLinecap: "round" }),
|
|
193
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: rx - 3, y1: y - 0.5, x2: rx + 3, y2: y, stroke: browColor, strokeWidth: "0.7", strokeLinecap: "round" })
|
|
194
|
+
] });
|
|
179
195
|
case 1:
|
|
180
196
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
181
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
182
|
-
|
|
183
|
-
{
|
|
184
|
-
x1: lx - 3,
|
|
185
|
-
y1: y,
|
|
186
|
-
x2: lx + 3,
|
|
187
|
-
y2: y,
|
|
188
|
-
stroke: col,
|
|
189
|
-
strokeWidth: "0.8",
|
|
190
|
-
strokeLinecap: "round"
|
|
191
|
-
}
|
|
192
|
-
),
|
|
193
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
194
|
-
"line",
|
|
195
|
-
{
|
|
196
|
-
x1: rx - 3,
|
|
197
|
-
y1: y,
|
|
198
|
-
x2: rx + 3,
|
|
199
|
-
y2: y,
|
|
200
|
-
stroke: col,
|
|
201
|
-
strokeWidth: "0.8",
|
|
202
|
-
strokeLinecap: "round"
|
|
203
|
-
}
|
|
204
|
-
)
|
|
197
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: lx - 3.5, y1: y, x2: lx + 3.5, y2: y, stroke: browColor, strokeWidth: "1.2", strokeLinecap: "round" }),
|
|
198
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: rx - 3.5, y1: y, x2: rx + 3.5, y2: y, stroke: browColor, strokeWidth: "1.2", strokeLinecap: "round" })
|
|
205
199
|
] });
|
|
206
200
|
case 2:
|
|
207
201
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
208
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
209
|
-
|
|
210
|
-
{
|
|
211
|
-
x1: lx - 3.5,
|
|
212
|
-
y1: y,
|
|
213
|
-
x2: lx + 3.5,
|
|
214
|
-
y2: y,
|
|
215
|
-
stroke: col,
|
|
216
|
-
strokeWidth: "2",
|
|
217
|
-
strokeLinecap: "round"
|
|
218
|
-
}
|
|
219
|
-
),
|
|
220
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
221
|
-
"line",
|
|
222
|
-
{
|
|
223
|
-
x1: rx - 3.5,
|
|
224
|
-
y1: y,
|
|
225
|
-
x2: rx + 3.5,
|
|
226
|
-
y2: y,
|
|
227
|
-
stroke: col,
|
|
228
|
-
strokeWidth: "2",
|
|
229
|
-
strokeLinecap: "round"
|
|
230
|
-
}
|
|
231
|
-
)
|
|
202
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${lx - 3.5} ${y + 0.5} Q${lx} ${y - 1.5} ${lx + 3.5} ${y + 0.5}`, fill: "none", stroke: browColor, strokeWidth: "1.2", strokeLinecap: "round" }),
|
|
203
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${rx - 3.5} ${y + 0.5} Q${rx} ${y - 1.5} ${rx + 3.5} ${y + 0.5}`, fill: "none", stroke: browColor, strokeWidth: "1.2", strokeLinecap: "round" })
|
|
232
204
|
] });
|
|
233
205
|
case 3:
|
|
234
206
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
235
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
236
|
-
|
|
237
|
-
{
|
|
238
|
-
d: `M${lx - 3.5} ${y + 1} Q${lx} ${y - 2} ${lx + 3.5} ${y + 1}`,
|
|
239
|
-
fill: "none",
|
|
240
|
-
stroke: col,
|
|
241
|
-
strokeWidth: "1",
|
|
242
|
-
strokeLinecap: "round"
|
|
243
|
-
}
|
|
244
|
-
),
|
|
245
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
246
|
-
"path",
|
|
247
|
-
{
|
|
248
|
-
d: `M${rx - 3.5} ${y + 1} Q${rx} ${y - 2} ${rx + 3.5} ${y + 1}`,
|
|
249
|
-
fill: "none",
|
|
250
|
-
stroke: col,
|
|
251
|
-
strokeWidth: "1",
|
|
252
|
-
strokeLinecap: "round"
|
|
253
|
-
}
|
|
254
|
-
)
|
|
207
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${lx - 4} ${y + 1} Q${lx} ${y - 3} ${lx + 4} ${y + 1}`, fill: "none", stroke: browColor, strokeWidth: "1", strokeLinecap: "round" }),
|
|
208
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${rx - 4} ${y + 1} Q${rx} ${y - 3} ${rx + 4} ${y + 1}`, fill: "none", stroke: browColor, strokeWidth: "1", strokeLinecap: "round" })
|
|
255
209
|
] });
|
|
256
210
|
case 4:
|
|
257
211
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
258
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
259
|
-
|
|
260
|
-
{
|
|
261
|
-
x1: lx - 3,
|
|
262
|
-
y1: y - 1,
|
|
263
|
-
x2: lx + 3,
|
|
264
|
-
y2: y + 1,
|
|
265
|
-
stroke: col,
|
|
266
|
-
strokeWidth: "1.2",
|
|
267
|
-
strokeLinecap: "round"
|
|
268
|
-
}
|
|
269
|
-
),
|
|
270
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
271
|
-
"line",
|
|
272
|
-
{
|
|
273
|
-
x1: rx - 3,
|
|
274
|
-
y1: y + 1,
|
|
275
|
-
x2: rx + 3,
|
|
276
|
-
y2: y - 1,
|
|
277
|
-
stroke: col,
|
|
278
|
-
strokeWidth: "1.2",
|
|
279
|
-
strokeLinecap: "round"
|
|
280
|
-
}
|
|
281
|
-
)
|
|
212
|
+
/* @__PURE__ */ jsxRuntime.jsx("polyline", { points: `${lx - 3},${y + 1} ${lx},${y - 2} ${lx + 3},${y}`, fill: "none", stroke: browColor, strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" }),
|
|
213
|
+
/* @__PURE__ */ jsxRuntime.jsx("polyline", { points: `${rx - 3},${y} ${rx},${y - 2} ${rx + 3},${y + 1}`, fill: "none", stroke: browColor, strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
282
214
|
] });
|
|
283
215
|
default:
|
|
284
216
|
return null;
|
|
285
217
|
}
|
|
286
218
|
}
|
|
287
|
-
function
|
|
288
|
-
const cx = 32, y =
|
|
289
|
-
|
|
290
|
-
switch (traits.nose) {
|
|
219
|
+
function Nose({ ni, noseFill }) {
|
|
220
|
+
const cx = 32, y = 39;
|
|
221
|
+
switch (ni) {
|
|
291
222
|
case 0:
|
|
292
|
-
return
|
|
223
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y, rx: "2", ry: "1.2", fill: noseFill, opacity: "0.35" });
|
|
293
224
|
case 1:
|
|
294
|
-
return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: y, r: "1.
|
|
225
|
+
return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: y, r: "1.8", fill: noseFill, opacity: "0.5" });
|
|
295
226
|
case 2:
|
|
296
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
297
|
-
"path",
|
|
298
|
-
{
|
|
299
|
-
d: `M${cx} ${y - 1.5} L${cx + 2.5} ${y + 2} L${cx - 2.5} ${y + 2} Z`,
|
|
300
|
-
fill: shadow
|
|
301
|
-
}
|
|
302
|
-
);
|
|
227
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 2} ${y + 1} Q${cx} ${y - 2} ${cx + 2} ${y + 1}`, fill: "none", stroke: noseFill, strokeWidth: "1", strokeLinecap: "round", opacity: "0.5" });
|
|
303
228
|
case 3:
|
|
304
229
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
305
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cx - 1.
|
|
306
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cx + 1.
|
|
230
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cx - 1.8, cy: y, r: "1.2", fill: noseFill, opacity: "0.4" }),
|
|
231
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cx + 1.8, cy: y, r: "1.2", fill: noseFill, opacity: "0.4" })
|
|
307
232
|
] });
|
|
308
233
|
default:
|
|
309
|
-
return
|
|
234
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y, rx: "2", ry: "1.2", fill: noseFill, opacity: "0.35" });
|
|
310
235
|
}
|
|
311
236
|
}
|
|
312
|
-
function
|
|
313
|
-
const cx = 32, y =
|
|
314
|
-
|
|
237
|
+
function Mouth({ mi, lipColor, isDark }) {
|
|
238
|
+
const cx = 32, y = 45;
|
|
239
|
+
const teethCol = isDark ? "#e8e0d8" : "#ffffff";
|
|
240
|
+
switch (mi) {
|
|
315
241
|
case 0:
|
|
316
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
317
|
-
"path",
|
|
318
|
-
{
|
|
319
|
-
d: `M${cx - 4} ${y} Q${cx} ${y + 4} ${cx + 4} ${y}`,
|
|
320
|
-
fill: "none",
|
|
321
|
-
stroke: col,
|
|
322
|
-
strokeWidth: "1.2",
|
|
323
|
-
strokeLinecap: "round"
|
|
324
|
-
}
|
|
325
|
-
);
|
|
242
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 4} ${y} Q${cx} ${y + 4} ${cx + 4} ${y}`, fill: "none", stroke: lipColor, strokeWidth: "1.4", strokeLinecap: "round" });
|
|
326
243
|
case 1:
|
|
327
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
328
|
-
"line",
|
|
329
|
-
{
|
|
330
|
-
x1: cx - 3,
|
|
331
|
-
y1: y + 1,
|
|
332
|
-
x2: cx + 3,
|
|
333
|
-
y2: y + 1,
|
|
334
|
-
stroke: col,
|
|
335
|
-
strokeWidth: "1.2",
|
|
336
|
-
strokeLinecap: "round"
|
|
337
|
-
}
|
|
338
|
-
);
|
|
244
|
+
return /* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx - 3, y1: y + 1, x2: cx + 3, y2: y + 1, stroke: lipColor, strokeWidth: "1.2", strokeLinecap: "round" });
|
|
339
245
|
case 2:
|
|
340
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
341
|
-
"path",
|
|
342
|
-
{
|
|
343
|
-
d: `M${cx - 6} ${y} Q${cx} ${y + 5} ${cx + 6} ${y}`,
|
|
344
|
-
fill: "none",
|
|
345
|
-
stroke: col,
|
|
346
|
-
strokeWidth: "1.5",
|
|
347
|
-
strokeLinecap: "round"
|
|
348
|
-
}
|
|
349
|
-
);
|
|
246
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 5} ${y} Q${cx} ${y + 5} ${cx + 5} ${y}`, fill: "none", stroke: lipColor, strokeWidth: "1.5", strokeLinecap: "round" });
|
|
350
247
|
case 3:
|
|
351
|
-
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + 1, rx: "
|
|
248
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + 1, rx: "2.5", ry: "3", fill: lipColor, opacity: "0.7" });
|
|
352
249
|
case 4:
|
|
353
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
354
|
-
"path",
|
|
355
|
-
{
|
|
356
|
-
d: `M${cx - 4} ${y + 1} Q${cx - 1} ${y + 1} ${cx + 4} ${y - 1}`,
|
|
357
|
-
fill: "none",
|
|
358
|
-
stroke: col,
|
|
359
|
-
strokeWidth: "1.2",
|
|
360
|
-
strokeLinecap: "round"
|
|
361
|
-
}
|
|
362
|
-
);
|
|
250
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 4} ${y + 1} Q${cx + 1} ${y + 1} ${cx + 4} ${y - 1.5}`, fill: "none", stroke: lipColor, strokeWidth: "1.3", strokeLinecap: "round" });
|
|
363
251
|
case 5:
|
|
364
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
365
|
-
"path",
|
|
366
|
-
{
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
252
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
253
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 5} ${y} Q${cx} ${y + 6} ${cx + 5} ${y}`, fill: teethCol, stroke: lipColor, strokeWidth: "1" }),
|
|
254
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx - 4, y1: y + 1.5, x2: cx + 4, y2: y + 1.5, stroke: lipColor, strokeWidth: "0.3", opacity: "0.3" })
|
|
255
|
+
] });
|
|
256
|
+
case 6:
|
|
257
|
+
return /* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx - 4, y1: y + 1, x2: cx + 4, y2: y + 1, stroke: lipColor, strokeWidth: "1.5", strokeLinecap: "round" });
|
|
258
|
+
case 7:
|
|
259
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
260
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + 1, rx: "3.5", ry: "2", fill: lipColor, opacity: "0.25" }),
|
|
261
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 3} ${y} Q${cx} ${y + 2.5} ${cx + 3} ${y}`, fill: "none", stroke: lipColor, strokeWidth: "1.2", strokeLinecap: "round" })
|
|
262
|
+
] });
|
|
373
263
|
default:
|
|
374
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
375
|
-
"path",
|
|
376
|
-
{
|
|
377
|
-
d: `M${cx - 4} ${y} Q${cx} ${y + 4} ${cx + 4} ${y}`,
|
|
378
|
-
fill: "none",
|
|
379
|
-
stroke: col,
|
|
380
|
-
strokeWidth: "1.2",
|
|
381
|
-
strokeLinecap: "round"
|
|
382
|
-
}
|
|
383
|
-
);
|
|
264
|
+
return /* @__PURE__ */ jsxRuntime.jsx("path", { d: `M${cx - 4} ${y} Q${cx} ${y + 4} ${cx + 4} ${y}`, fill: "none", stroke: lipColor, strokeWidth: "1.4", strokeLinecap: "round" });
|
|
384
265
|
}
|
|
385
266
|
}
|
|
386
|
-
function
|
|
387
|
-
switch (
|
|
267
|
+
function Accessory({ ai, accColor, glassesColor, earringColor, headbandColor }) {
|
|
268
|
+
switch (ai) {
|
|
388
269
|
case 0:
|
|
389
270
|
return null;
|
|
390
271
|
case 1:
|
|
391
|
-
return /* @__PURE__ */ jsxRuntime.jsx("
|
|
272
|
+
return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "40", cy: "44", r: "0.8", fill: "#3a2a2a" });
|
|
392
273
|
case 2:
|
|
393
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill:
|
|
394
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
395
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
396
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
397
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
398
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
274
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: "none", stroke: glassesColor, strokeWidth: "1", children: [
|
|
275
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "25", cy: "33", r: "5.5" }),
|
|
276
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "39", cy: "33", r: "5.5" }),
|
|
277
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "30.5", y1: "33", x2: "33.5", y2: "33" }),
|
|
278
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "19.5", y1: "33", x2: "14", y2: "31" }),
|
|
279
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "44.5", y1: "33", x2: "50", y2: "31" })
|
|
399
280
|
] });
|
|
400
281
|
case 3:
|
|
401
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill:
|
|
402
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "
|
|
403
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
282
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: "none", stroke: glassesColor, strokeWidth: "1", children: [
|
|
283
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "19", y: "29", width: "12", height: "8", rx: "1.5" }),
|
|
284
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "33", y: "29", width: "12", height: "8", rx: "1.5" }),
|
|
285
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "31", y1: "33", x2: "33", y2: "33" }),
|
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "19", y1: "33", x2: "14", y2: "31" }),
|
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "45", y1: "33", x2: "50", y2: "31" })
|
|
404
288
|
] });
|
|
405
289
|
case 4:
|
|
406
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "14", y: "12", width: "36", height: "10", rx: "4" }),
|
|
410
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "10", y: "18", width: "8", height: "24", rx: "3" }),
|
|
411
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "46", y: "18", width: "8", height: "24", rx: "3" })
|
|
290
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
291
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "38", r: "1.5", fill: earringColor }),
|
|
292
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "41", r: "2", fill: earringColor, opacity: "0.8" })
|
|
412
293
|
] });
|
|
294
|
+
case 5:
|
|
295
|
+
return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "13", y: "20", width: "38", height: "3.5", rx: "1.5", fill: headbandColor, opacity: "0.85" });
|
|
413
296
|
case 6:
|
|
414
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
415
|
-
"
|
|
416
|
-
{
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
|
|
297
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: "#a0785a", opacity: "0.35", children: [
|
|
298
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "21", cy: "40", r: "0.6" }),
|
|
299
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "23", cy: "42", r: "0.5" }),
|
|
300
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "41.5", r: "0.5" }),
|
|
301
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "43", cy: "40", r: "0.6" }),
|
|
302
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "41", cy: "42", r: "0.5" }),
|
|
303
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "45", cy: "41.5", r: "0.5" })
|
|
304
|
+
] });
|
|
421
305
|
case 7:
|
|
422
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
function renderAccessory(traits, col) {
|
|
428
|
-
switch (traits.accessory) {
|
|
429
|
-
case 0:
|
|
430
|
-
case 1:
|
|
431
|
-
return null;
|
|
432
|
-
case 2:
|
|
433
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: "none", stroke: col, strokeWidth: "1", children: [
|
|
434
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "24", cy: "30", r: "5" }),
|
|
435
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "40", cy: "30", r: "5" }),
|
|
436
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "29", y1: "30", x2: "35", y2: "30" }),
|
|
437
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "19", y1: "30", x2: "14", y2: "28" }),
|
|
438
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "45", y1: "30", x2: "50", y2: "28" })
|
|
306
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
307
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "37", r: "1.2", fill: earringColor }),
|
|
308
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "54", cy: "37", r: "1.2", fill: earringColor })
|
|
439
309
|
] });
|
|
440
|
-
case
|
|
441
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: "none", stroke:
|
|
442
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
443
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
444
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "
|
|
445
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "19", y1: "
|
|
446
|
-
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "45", y1: "
|
|
310
|
+
case 8:
|
|
311
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: "none", stroke: glassesColor, strokeWidth: "1.2", children: [
|
|
312
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 30 Q19 28 25 28 Q31 28 31 33 Q31 38 25 38 Q19 38 19 33 Z", fill: glassesColor, fillOpacity: "0.15" }),
|
|
313
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M33 30 Q33 28 39 28 Q45 28 45 33 Q45 38 39 38 Q33 38 33 33 Z", fill: glassesColor, fillOpacity: "0.15" }),
|
|
314
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "31", y1: "32", x2: "33", y2: "32" }),
|
|
315
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "19", y1: "31", x2: "14", y2: "29" }),
|
|
316
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "45", y1: "31", x2: "50", y2: "29" })
|
|
447
317
|
] });
|
|
448
|
-
case
|
|
449
|
-
return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "11", cy: "36", r: "2", fill: col, stroke: col, strokeWidth: "0.5" });
|
|
450
|
-
case 5:
|
|
318
|
+
case 9:
|
|
451
319
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
452
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "
|
|
453
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
320
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "38", y: "38", width: "8", height: "4", rx: "1", fill: "#f0d0a0", transform: "rotate(-15 42 40)" }),
|
|
321
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "40", y1: "39", x2: "40", y2: "41", stroke: "#c0a080", strokeWidth: "0.4", transform: "rotate(-15 42 40)" }),
|
|
322
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "42", y1: "39", x2: "42", y2: "41", stroke: "#c0a080", strokeWidth: "0.4", transform: "rotate(-15 42 40)" }),
|
|
323
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "44", y1: "39", x2: "44", y2: "41", stroke: "#c0a080", strokeWidth: "0.4", transform: "rotate(-15 42 40)" })
|
|
454
324
|
] });
|
|
455
325
|
default:
|
|
456
326
|
return null;
|
|
457
327
|
}
|
|
458
328
|
}
|
|
329
|
+
function PixelWrapper({ svgString, size, theme }) {
|
|
330
|
+
const density = theme._pixelDensity ?? 16;
|
|
331
|
+
const rounded = theme._pixelRounded ?? true;
|
|
332
|
+
const outline = theme._pixelOutline ?? false;
|
|
333
|
+
const outlineColor = theme._pixelOutlineColor ?? "#000";
|
|
334
|
+
const outlineWidth = theme._pixelOutlineWidth ?? 1;
|
|
335
|
+
const scanlines = theme._pixelScanlines ?? false;
|
|
336
|
+
const scanlineOpacity = theme._pixelScanlineOpacity ?? 0.08;
|
|
337
|
+
const scanlineSpacing = theme._pixelScanlineSpacing ?? 2;
|
|
338
|
+
const grid = theme._pixelGrid ?? false;
|
|
339
|
+
const gridOpacity = theme._pixelGridOpacity ?? 0.06;
|
|
340
|
+
const gridColor = theme._pixelGridColor ?? "#000";
|
|
341
|
+
const shadow = theme._pixelShadow ?? false;
|
|
342
|
+
const shadowColor = theme._pixelShadowColor ?? "rgba(0,0,0,0.3)";
|
|
343
|
+
const shadowOffset = theme._pixelShadowOffset ?? 2;
|
|
344
|
+
const contrast = theme._pixelContrast;
|
|
345
|
+
const saturation = theme._pixelSaturation;
|
|
346
|
+
const brightness = theme._pixelBrightness;
|
|
347
|
+
const dataUri = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgString)}`;
|
|
348
|
+
const filters = [];
|
|
349
|
+
if (shadow) filters.push(`drop-shadow(${shadowOffset}px ${shadowOffset}px 0px ${shadowColor})`);
|
|
350
|
+
if (contrast !== void 0) filters.push(`contrast(${contrast})`);
|
|
351
|
+
if (saturation !== void 0) filters.push(`saturate(${saturation})`);
|
|
352
|
+
if (brightness !== void 0) filters.push(`brightness(${brightness})`);
|
|
353
|
+
const containerStyle = {
|
|
354
|
+
position: "relative",
|
|
355
|
+
width: size,
|
|
356
|
+
height: size,
|
|
357
|
+
display: "inline-block",
|
|
358
|
+
...filters.length ? { filter: filters.join(" ") } : {}
|
|
359
|
+
};
|
|
360
|
+
const imgStyle = {
|
|
361
|
+
width: size,
|
|
362
|
+
height: size,
|
|
363
|
+
imageRendering: "pixelated",
|
|
364
|
+
borderRadius: rounded ? "12%" : 0,
|
|
365
|
+
display: "block",
|
|
366
|
+
border: outline ? `${outlineWidth}px solid ${outlineColor}` : "none"
|
|
367
|
+
};
|
|
368
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: containerStyle, children: [
|
|
369
|
+
/* @__PURE__ */ jsxRuntime.jsx("img", { src: dataUri, width: density, height: density, style: imgStyle, alt: "" }),
|
|
370
|
+
scanlines && /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
371
|
+
position: "absolute",
|
|
372
|
+
inset: 0,
|
|
373
|
+
background: `repeating-linear-gradient(0deg, transparent, transparent ${scanlineSpacing}px, rgba(0,0,0,${scanlineOpacity}) ${scanlineSpacing}px, rgba(0,0,0,${scanlineOpacity}) ${scanlineSpacing + 1}px)`,
|
|
374
|
+
pointerEvents: "none",
|
|
375
|
+
borderRadius: rounded ? "12%" : 0
|
|
376
|
+
} }),
|
|
377
|
+
grid && /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
378
|
+
position: "absolute",
|
|
379
|
+
inset: 0,
|
|
380
|
+
backgroundSize: `${size / density}px ${size / density}px`,
|
|
381
|
+
backgroundImage: `linear-gradient(${gridColor} ${gridOpacity}, transparent ${gridOpacity}), linear-gradient(90deg, ${gridColor} ${gridOpacity}, transparent ${gridOpacity})`,
|
|
382
|
+
pointerEvents: "none",
|
|
383
|
+
borderRadius: rounded ? "12%" : 0
|
|
384
|
+
} })
|
|
385
|
+
] });
|
|
386
|
+
}
|
|
387
|
+
function GlassWrapper({ children, size, theme }) {
|
|
388
|
+
const blurRadius = theme._blurRadius ?? 12;
|
|
389
|
+
const saturate = theme._saturate ?? 1.8;
|
|
390
|
+
const tintOpacity = theme._tintOpacity ?? 0.12;
|
|
391
|
+
const tintColor = theme._tintColor ?? "rgba(255,255,255,1)";
|
|
392
|
+
const borderOpacity = theme._borderOpacity ?? 0.25;
|
|
393
|
+
const borderWidth = theme._borderWidth ?? 1;
|
|
394
|
+
const borderColor = theme._borderColor ?? `rgba(255,255,255,${borderOpacity})`;
|
|
395
|
+
const specularOpacity = theme._specularOpacity ?? 0.25;
|
|
396
|
+
const specularColor = theme._specularColor ?? "rgba(255,255,255,1)";
|
|
397
|
+
const specularEnd = theme._specularEnd ?? 50;
|
|
398
|
+
const lightAngle = theme._lightAngle ?? 135;
|
|
399
|
+
const rimIntensity = theme._rimIntensity ?? 0.08;
|
|
400
|
+
const shadowStr = theme._shadow ?? "0 8px 32px rgba(0,0,0,0.12)";
|
|
401
|
+
const bgRadius = theme.bgRadius ?? 16;
|
|
402
|
+
const containerStyle = {
|
|
403
|
+
position: "relative",
|
|
404
|
+
width: size,
|
|
405
|
+
height: size,
|
|
406
|
+
display: "inline-block",
|
|
407
|
+
borderRadius: bgRadius,
|
|
408
|
+
overflow: "hidden",
|
|
409
|
+
backdropFilter: `blur(${blurRadius}px) saturate(${saturate})`,
|
|
410
|
+
WebkitBackdropFilter: `blur(${blurRadius}px) saturate(${saturate})`,
|
|
411
|
+
border: `${borderWidth}px solid ${borderColor}`,
|
|
412
|
+
boxShadow: shadowStr
|
|
413
|
+
};
|
|
414
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: containerStyle, children: [
|
|
415
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
416
|
+
position: "absolute",
|
|
417
|
+
inset: 0,
|
|
418
|
+
backgroundColor: tintColor,
|
|
419
|
+
opacity: tintOpacity,
|
|
420
|
+
borderRadius: bgRadius,
|
|
421
|
+
pointerEvents: "none"
|
|
422
|
+
} }),
|
|
423
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { position: "relative", zIndex: 1 }, children }),
|
|
424
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
425
|
+
position: "absolute",
|
|
426
|
+
inset: 0,
|
|
427
|
+
background: `linear-gradient(${lightAngle}deg, ${specularColor.replace("1)", `${specularOpacity})`)} 0%, transparent ${specularEnd}%)`,
|
|
428
|
+
borderRadius: bgRadius,
|
|
429
|
+
pointerEvents: "none"
|
|
430
|
+
} }),
|
|
431
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
432
|
+
position: "absolute",
|
|
433
|
+
inset: 0,
|
|
434
|
+
borderRadius: bgRadius,
|
|
435
|
+
boxShadow: `inset 0 0 0 1px rgba(255,255,255,${rimIntensity})`,
|
|
436
|
+
pointerEvents: "none"
|
|
437
|
+
} })
|
|
438
|
+
] });
|
|
439
|
+
}
|
|
459
440
|
function SolFace({
|
|
460
441
|
walletAddress,
|
|
461
442
|
size = 64,
|
|
@@ -463,35 +444,60 @@ function SolFace({
|
|
|
463
444
|
theme,
|
|
464
445
|
traitOverrides,
|
|
465
446
|
colorOverrides,
|
|
447
|
+
detail: detailProp,
|
|
466
448
|
className,
|
|
467
449
|
style,
|
|
468
450
|
...rest
|
|
469
451
|
}) {
|
|
470
452
|
const traits = react.useMemo(
|
|
471
|
-
() =>
|
|
453
|
+
() => chunk6UWILY7E_cjs.generateTraits(walletAddress, traitOverrides),
|
|
472
454
|
[walletAddress, traitOverrides]
|
|
473
455
|
);
|
|
474
|
-
const
|
|
475
|
-
const
|
|
476
|
-
const
|
|
477
|
-
const
|
|
456
|
+
const detailOpt = detailProp ?? "auto";
|
|
457
|
+
const full = detailOpt === "full" || detailOpt === "auto" && size >= 48;
|
|
458
|
+
const flat = theme?.flat ?? false;
|
|
459
|
+
const skinColors = theme?.skinColors ?? chunk6UWILY7E_cjs.SKIN_COLORS;
|
|
460
|
+
const eyeColors = theme?.eyeColors ?? chunk6UWILY7E_cjs.EYE_COLORS;
|
|
461
|
+
const hairColors = theme?.hairColors ?? chunk6UWILY7E_cjs.HAIR_COLORS;
|
|
462
|
+
const bgColors = theme?.bgColors ?? chunk6UWILY7E_cjs.BG_COLORS;
|
|
478
463
|
const skin = colorOverrides?.skin ?? skinColors[traits.skinColor % skinColors.length];
|
|
479
464
|
const eyeCol = colorOverrides?.eyes ?? eyeColors[traits.eyeColor % eyeColors.length];
|
|
480
465
|
const hairCol = colorOverrides?.hair ?? hairColors[traits.hairColor % hairColors.length];
|
|
481
466
|
const bgCol = colorOverrides?.bg ?? bgColors[traits.bgColor % bgColors.length];
|
|
482
|
-
const
|
|
467
|
+
const derived = react.useMemo(() => chunk6UWILY7E_cjs.deriveSkinColors(skin), [skin]);
|
|
468
|
+
const bgOpacity = theme?.bgOpacity ?? 1;
|
|
483
469
|
const bgRadius = theme?.bgRadius ?? 4;
|
|
484
|
-
const
|
|
485
|
-
const
|
|
486
|
-
const
|
|
487
|
-
const
|
|
488
|
-
const
|
|
489
|
-
const
|
|
470
|
+
const browColor = colorOverrides?.eyebrow ?? theme?.eyebrowColor ?? derived.browColor;
|
|
471
|
+
const noseFill = colorOverrides?.nose ?? theme?.noseColor ?? derived.noseFill;
|
|
472
|
+
const lipColor = colorOverrides?.mouth ?? theme?.mouthColor ?? derived.lipColor;
|
|
473
|
+
const accColor = colorOverrides?.accessory ?? theme?.accessoryColor ?? derived.accessoryColor;
|
|
474
|
+
const eyeWhite = colorOverrides?.eyeWhite ?? theme?.eyeWhiteColor ?? derived.eyeWhiteAdapted;
|
|
475
|
+
const glassesColor = theme?.glassesColor ?? "#4a4a5a";
|
|
476
|
+
const earringColor = theme?.earringColor ?? chunk6UWILY7E_cjs.blend(skin, "#d4a840", 0.4);
|
|
477
|
+
const headbandColor = theme?.headbandColor ?? chunk6UWILY7E_cjs.blend(hairCol, "#c04040", 0.5);
|
|
478
|
+
const id = react.useMemo(() => "sf" + djb2(walletAddress).toString(36), [walletAddress]);
|
|
479
|
+
const cheekEnabled = theme?.cheekEnabled ?? true;
|
|
480
|
+
const cheekColor = theme?.cheekColor ?? derived.cheekColor;
|
|
481
|
+
const cheekOpacity = theme?.cheekOpacity ?? derived.cheekOpacity;
|
|
482
|
+
const hi = traits.hairStyle % 10;
|
|
483
|
+
const ai = chunk6UWILY7E_cjs.effectiveAccessory(traits);
|
|
490
484
|
const blinkEnabled = !!enableBlink;
|
|
491
485
|
const blinkDuration = typeof enableBlink === "object" ? enableBlink.duration ?? 4 : 4;
|
|
492
486
|
const blinkDelay = typeof enableBlink === "object" ? enableBlink.delay ?? 0 : 0;
|
|
493
487
|
const delayStr = blinkDelay ? ` ${blinkDelay}s` : "";
|
|
494
|
-
|
|
488
|
+
const bgFill = flat ? bgCol : `url(#${id}bg)`;
|
|
489
|
+
const skinFill = flat ? skin : `url(#${id}sg)`;
|
|
490
|
+
if (theme?._pixel) {
|
|
491
|
+
const pixelSvg = chunk6UWILY7E_cjs.renderSolFaceSVG(walletAddress, {
|
|
492
|
+
size,
|
|
493
|
+
theme: { ...theme, _pixel: false, _glass: false },
|
|
494
|
+
traitOverrides,
|
|
495
|
+
colorOverrides,
|
|
496
|
+
detail: detailProp
|
|
497
|
+
});
|
|
498
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PixelWrapper, { svgString: pixelSvg, size, theme });
|
|
499
|
+
}
|
|
500
|
+
const svgElement = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
495
501
|
"svg",
|
|
496
502
|
{
|
|
497
503
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -502,40 +508,68 @@ function SolFace({
|
|
|
502
508
|
style: { display: "block", ...style },
|
|
503
509
|
...rest,
|
|
504
510
|
children: [
|
|
511
|
+
!flat && /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
512
|
+
/* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: `${id}sg`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
513
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: derived.skinHi }),
|
|
514
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: derived.skinLo })
|
|
515
|
+
] }),
|
|
516
|
+
/* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: `${id}hg`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
517
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: chunk6UWILY7E_cjs.lighten(hairCol, 0.15) }),
|
|
518
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: chunk6UWILY7E_cjs.darken(hairCol, 0.15) })
|
|
519
|
+
] }),
|
|
520
|
+
/* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: `${id}bg`, x1: "0", y1: "0", x2: "1", y2: "1", children: [
|
|
521
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: chunk6UWILY7E_cjs.lighten(bgCol, 0.12) }),
|
|
522
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: chunk6UWILY7E_cjs.darken(bgCol, 0.12) })
|
|
523
|
+
] }),
|
|
524
|
+
full && cheekEnabled && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
525
|
+
/* @__PURE__ */ jsxRuntime.jsxs("radialGradient", { id: `${id}glow`, cx: "0.5", cy: "0.28", r: "0.45", children: [
|
|
526
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: "#ffffff", stopOpacity: 0.1 }),
|
|
527
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: "#ffffff", stopOpacity: 0 })
|
|
528
|
+
] }),
|
|
529
|
+
/* @__PURE__ */ jsxRuntime.jsxs("radialGradient", { id: `${id}chin`, cx: "0.5", cy: "0.85", r: "0.35", children: [
|
|
530
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: derived.skinLo, stopOpacity: 0.3 }),
|
|
531
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: derived.skinLo, stopOpacity: 0 })
|
|
532
|
+
] }),
|
|
533
|
+
/* @__PURE__ */ jsxRuntime.jsxs("radialGradient", { id: `${id}cL`, cx: "0.5", cy: "0.5", r: "0.5", children: [
|
|
534
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: cheekColor, stopOpacity: cheekOpacity }),
|
|
535
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: cheekColor, stopOpacity: 0 })
|
|
536
|
+
] }),
|
|
537
|
+
/* @__PURE__ */ jsxRuntime.jsxs("radialGradient", { id: `${id}cR`, cx: "0.5", cy: "0.5", r: "0.5", children: [
|
|
538
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: cheekColor, stopOpacity: cheekOpacity }),
|
|
539
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: cheekColor, stopOpacity: 0 })
|
|
540
|
+
] })
|
|
541
|
+
] })
|
|
542
|
+
] }),
|
|
505
543
|
blinkEnabled && /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
|
|
506
|
-
@keyframes ${
|
|
544
|
+
@keyframes ${id}-blink {
|
|
507
545
|
0%, 90%, 100% { transform: scaleY(1); }
|
|
508
546
|
95% { transform: scaleY(0.1); }
|
|
509
547
|
}
|
|
510
|
-
.${
|
|
511
|
-
animation: ${
|
|
512
|
-
transform-origin: 32px
|
|
548
|
+
.${id}-eyes {
|
|
549
|
+
animation: ${id}-blink ${blinkDuration}s ease-in-out${delayStr} infinite;
|
|
550
|
+
transform-origin: 32px 33px;
|
|
513
551
|
}
|
|
514
552
|
` }),
|
|
515
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "64", height: "64", fill:
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
width: "64",
|
|
529
|
-
height: "64",
|
|
530
|
-
fill: "none",
|
|
531
|
-
stroke: theme.border.color,
|
|
532
|
-
strokeWidth: theme.border.width,
|
|
533
|
-
rx: bgRadius
|
|
534
|
-
}
|
|
535
|
-
)
|
|
553
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "64", height: "64", fill: bgFill, opacity: bgOpacity, rx: bgRadius }),
|
|
554
|
+
/* @__PURE__ */ jsxRuntime.jsx(HairBack, { hi, id, flat }),
|
|
555
|
+
/* @__PURE__ */ jsxRuntime.jsx(Ears, { earFill: derived.earFill, earShadow: derived.earShadow }),
|
|
556
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "14", y: "16", width: "36", height: "38", rx: "12", ry: "12", fill: skinFill }),
|
|
557
|
+
full && cheekEnabled && !flat && /* @__PURE__ */ jsxRuntime.jsx(FaceOverlays, { id }),
|
|
558
|
+
ai === 5 && /* @__PURE__ */ jsxRuntime.jsx(Accessory, { ai: 5, accColor, glassesColor, earringColor, headbandColor }),
|
|
559
|
+
/* @__PURE__ */ jsxRuntime.jsx(HairFront, { hi, id, hairCol, skin, flat }),
|
|
560
|
+
/* @__PURE__ */ jsxRuntime.jsx("g", { className: blinkEnabled ? `${id}-eyes` : void 0, children: /* @__PURE__ */ jsxRuntime.jsx(Eyes, { ei: traits.eyeStyle % 8, eyeCol, eyeWhite, lidColor: derived.lidColor, full }) }),
|
|
561
|
+
/* @__PURE__ */ jsxRuntime.jsx(Eyebrows, { bi: traits.eyebrows % 5, browColor }),
|
|
562
|
+
/* @__PURE__ */ jsxRuntime.jsx(Nose, { ni: traits.nose % 4, noseFill }),
|
|
563
|
+
/* @__PURE__ */ jsxRuntime.jsx(Mouth, { mi: traits.mouth % 8, lipColor, isDark: derived.isDark }),
|
|
564
|
+
ai !== 0 && ai !== 5 && /* @__PURE__ */ jsxRuntime.jsx(Accessory, { ai, accColor, glassesColor, earringColor, headbandColor }),
|
|
565
|
+
theme?.border && /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "64", height: "64", fill: "none", stroke: theme.border.color, strokeWidth: theme.border.width, rx: bgRadius })
|
|
536
566
|
]
|
|
537
567
|
}
|
|
538
568
|
);
|
|
569
|
+
if (theme?._glass) {
|
|
570
|
+
return /* @__PURE__ */ jsxRuntime.jsx(GlassWrapper, { size, theme, children: svgElement });
|
|
571
|
+
}
|
|
572
|
+
return svgElement;
|
|
539
573
|
}
|
|
540
574
|
|
|
541
575
|
exports.SolFace = SolFace;
|