solfaces 2.3.2 → 2.3.3
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 +3 -3
- package/dist/agent/index.cjs +13 -13
- package/dist/agent/index.js +3 -3
- package/dist/agent/mcp-server.cjs +24 -14
- package/dist/{chunk-PCSRDAWQ.cjs → chunk-375DBADY.cjs} +20 -14
- package/dist/chunk-375DBADY.cjs.map +1 -0
- package/dist/{chunk-MYUSB4LA.js → chunk-C44YBK6V.js} +20 -14
- package/dist/chunk-C44YBK6V.js.map +1 -0
- package/dist/{chunk-2KW35VRI.js → chunk-EFN2CSAI.js} +3 -3
- package/dist/{chunk-2KW35VRI.js.map → chunk-EFN2CSAI.js.map} +1 -1
- package/dist/{chunk-W2U6ITMR.cjs → chunk-FYZJEEBJ.cjs} +8 -4
- package/dist/chunk-FYZJEEBJ.cjs.map +1 -0
- package/dist/{chunk-T7HEUW2O.cjs → chunk-G4VYNQII.cjs} +6 -6
- package/dist/{chunk-T7HEUW2O.cjs.map → chunk-G4VYNQII.cjs.map} +1 -1
- package/dist/{chunk-O2IIBSQH.js → chunk-N4AP5NEL.js} +4 -4
- package/dist/{chunk-O2IIBSQH.js.map → chunk-N4AP5NEL.js.map} +1 -1
- package/dist/{chunk-BI3GHRKQ.cjs → chunk-QVCF45AC.cjs} +12 -12
- package/dist/{chunk-BI3GHRKQ.cjs.map → chunk-QVCF45AC.cjs.map} +1 -1
- package/dist/{chunk-N5GDLCCL.js → chunk-VWYO6SVB.js} +8 -4
- package/dist/chunk-VWYO6SVB.js.map +1 -0
- package/dist/core/index.cjs +30 -30
- package/dist/core/index.js +2 -2
- package/dist/index.cjs +37 -37
- package/dist/index.js +4 -4
- package/dist/react/index.cjs +23 -19
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +9 -5
- 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 +15 -15
- package/dist/themes/index.js +1 -1
- package/dist/vanilla/index.cjs +6 -6
- package/dist/vanilla/index.js +2 -2
- package/package.json +1 -1
- package/python/solfaces.py +8 -5
- package/dist/chunk-MYUSB4LA.js.map +0 -1
- package/dist/chunk-N5GDLCCL.js.map +0 -1
- package/dist/chunk-PCSRDAWQ.cjs.map +0 -1
- package/dist/chunk-W2U6ITMR.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SolFace
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/solfaces)
|
|
4
4
|
[](https://www.npmjs.com/package/solfaces)
|
|
@@ -19,7 +19,7 @@ Built for dApps, AI agents, social features, leaderboards, and anywhere a wallet
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
## Why
|
|
22
|
+
## Why SolFace?
|
|
23
23
|
|
|
24
24
|
- **Deterministic** — Same wallet address always produces a unique avatar and name. No database needed.
|
|
25
25
|
- **Zero dependencies** — Core engine has no runtime dependencies.
|
|
@@ -32,7 +32,7 @@ Built for dApps, AI agents, social features, leaderboards, and anywhere a wallet
|
|
|
32
32
|
- **Detail levels** — Full detail (gradients, specular, cheeks) at size >= 48, simplified below.
|
|
33
33
|
- **Fully customizable** — Every visual element is customizable: 4 color palettes, 8 individual color overrides, 9 per-instance color keys, rendering toggles, layout controls, blink timing, and 30+ React-only pixel/glass fields. No visual element is locked — if you can see it, you can theme it.
|
|
34
34
|
- **Eliminates dead space** — No more blank avatars or generic placeholders. Every wallet gets a unique face instantly.
|
|
35
|
-
- **AI-agent ready** — AI trading bots and autonomous agents are becoming on-chain users.
|
|
35
|
+
- **AI-agent ready** — AI trading bots and autonomous agents are becoming on-chain users. SolFace gives every agent a recognizable face and a natural language self-description for system prompts and bios.
|
|
36
36
|
- **PNG rasterization** — Serve real image files for bots, Discord, Telegram, OG images.
|
|
37
37
|
- **SSR-ready** — String renderer works server-side with zero browser APIs.
|
|
38
38
|
|
package/dist/agent/index.cjs
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
require('../chunk-
|
|
3
|
+
var chunkQVCF45AC_cjs = require('../chunk-QVCF45AC.cjs');
|
|
4
|
+
require('../chunk-FYZJEEBJ.cjs');
|
|
5
|
+
require('../chunk-375DBADY.cjs');
|
|
6
6
|
require('../chunk-YGD7EQEX.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "SOLFACE_TOOLS", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkQVCF45AC_cjs.SOLFACE_TOOLS; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "allToolsAnthropic", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkQVCF45AC_cjs.allToolsAnthropic; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "allToolsMCP", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkQVCF45AC_cjs.allToolsMCP; }
|
|
21
21
|
});
|
|
22
22
|
Object.defineProperty(exports, "allToolsOpenAI", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkQVCF45AC_cjs.allToolsOpenAI; }
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "allToolsVercelAI", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkQVCF45AC_cjs.allToolsVercelAI; }
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "handleToolCall", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkQVCF45AC_cjs.handleToolCall; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "toAnthropic", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkQVCF45AC_cjs.toAnthropic; }
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "toMCP", {
|
|
39
39
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkQVCF45AC_cjs.toMCP; }
|
|
41
41
|
});
|
|
42
42
|
Object.defineProperty(exports, "toOpenAI", {
|
|
43
43
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkQVCF45AC_cjs.toOpenAI; }
|
|
45
45
|
});
|
|
46
46
|
Object.defineProperty(exports, "toVercelAI", {
|
|
47
47
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkQVCF45AC_cjs.toVercelAI; }
|
|
49
49
|
});
|
|
50
50
|
//# sourceMappingURL=index.cjs.map
|
|
51
51
|
//# sourceMappingURL=index.cjs.map
|
package/dist/agent/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { SOLFACE_TOOLS, allToolsAnthropic, allToolsMCP, allToolsOpenAI, allToolsVercelAI, handleToolCall, toAnthropic, toMCP, toOpenAI, toVercelAI } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { SOLFACE_TOOLS, allToolsAnthropic, allToolsMCP, allToolsOpenAI, allToolsVercelAI, handleToolCall, toAnthropic, toMCP, toOpenAI, toVercelAI } from '../chunk-N4AP5NEL.js';
|
|
2
|
+
import '../chunk-VWYO6SVB.js';
|
|
3
|
+
import '../chunk-C44YBK6V.js';
|
|
4
4
|
import '../chunk-UTT764K6.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -721,8 +721,12 @@ function renderAccessory(ai, accessoryColor, glassesColor, earringColor, headban
|
|
|
721
721
|
return `<circle cx="10" cy="37" r="1.2" fill="${earringColor}"/><circle cx="54" cy="37" r="1.2" fill="${earringColor}"/>`;
|
|
722
722
|
case 8:
|
|
723
723
|
return `<g fill="none" stroke="${glassesColor}" stroke-width="1.2"><path d="M19 30 Q19 28 25 28 Q31 28 31 33 Q31 38 25 38 Q19 38 19 33 Z" fill="${glassesColor}" fill-opacity="0.15"/><path d="M33 30 Q33 28 39 28 Q45 28 45 33 Q45 38 39 38 Q33 38 33 33 Z" fill="${glassesColor}" fill-opacity="0.15"/><line x1="31" y1="32" x2="33" y2="32"/><line x1="19" y1="31" x2="14" y2="29"/><line x1="45" y1="31" x2="50" y2="29"/></g>`;
|
|
724
|
-
case 9:
|
|
725
|
-
|
|
724
|
+
case 9: {
|
|
725
|
+
const bandBase = lighten(skinColor, 0.3);
|
|
726
|
+
const bandPad = lighten(skinColor, 0.4);
|
|
727
|
+
const bandDot = darken(skinColor, 0.1);
|
|
728
|
+
return `<g><rect x="38" y="38" width="9" height="4.5" rx="1.2" fill="${bandBase}" transform="rotate(-15 42 40)"/><rect x="39.5" y="38.5" width="6" height="3.5" rx="0.8" fill="${bandPad}" transform="rotate(-15 42 40)"/><circle cx="42.5" cy="40.25" r="0.5" fill="${bandDot}" transform="rotate(-15 42 40)"/></g>`;
|
|
729
|
+
}
|
|
726
730
|
case 10:
|
|
727
731
|
return `<line x1="23" y1="24.8" x2="23.8" y2="29.2" stroke="${skinColor}" stroke-width="1.3" stroke-linecap="butt"/>`;
|
|
728
732
|
case 11:
|
|
@@ -3081,23 +3085,29 @@ var monoTheme = {
|
|
|
3081
3085
|
"#e0e0e0"
|
|
3082
3086
|
],
|
|
3083
3087
|
bgColors: [
|
|
3084
|
-
"#
|
|
3085
|
-
"#
|
|
3086
|
-
"#
|
|
3087
|
-
"#
|
|
3088
|
-
"#
|
|
3089
|
-
"#
|
|
3090
|
-
"#
|
|
3091
|
-
"#
|
|
3092
|
-
"#
|
|
3093
|
-
"#
|
|
3094
|
-
"#
|
|
3095
|
-
"#
|
|
3088
|
+
"#e8e8e8",
|
|
3089
|
+
"#e0e0e0",
|
|
3090
|
+
"#d8d8d8",
|
|
3091
|
+
"#d0d0d0",
|
|
3092
|
+
"#c8c8c8",
|
|
3093
|
+
"#c0c0c0",
|
|
3094
|
+
"#d4d4d4",
|
|
3095
|
+
"#dcdcdc",
|
|
3096
|
+
"#e4e4e4",
|
|
3097
|
+
"#cccccc",
|
|
3098
|
+
"#d8d8d8",
|
|
3099
|
+
"#e0e0e0"
|
|
3096
3100
|
],
|
|
3097
3101
|
mouthColor: "#666",
|
|
3098
3102
|
eyebrowColor: "#555",
|
|
3099
3103
|
accessoryColor: "#777",
|
|
3100
3104
|
eyeWhiteColor: "#f0f0f0",
|
|
3105
|
+
headbandColor: "#888",
|
|
3106
|
+
earringColor: "#999",
|
|
3107
|
+
glassesColor: "#555",
|
|
3108
|
+
freckleColor: "#999",
|
|
3109
|
+
cheekColor: "#999",
|
|
3110
|
+
beautyMarkColor: "#333",
|
|
3101
3111
|
bgOpacity: 0.5,
|
|
3102
3112
|
bgRadius: 4
|
|
3103
3113
|
};
|
|
@@ -67,23 +67,29 @@ var monoTheme = {
|
|
|
67
67
|
"#e0e0e0"
|
|
68
68
|
],
|
|
69
69
|
bgColors: [
|
|
70
|
-
"#
|
|
71
|
-
"#
|
|
72
|
-
"#
|
|
73
|
-
"#
|
|
74
|
-
"#
|
|
75
|
-
"#
|
|
76
|
-
"#
|
|
77
|
-
"#
|
|
78
|
-
"#
|
|
79
|
-
"#
|
|
80
|
-
"#
|
|
81
|
-
"#
|
|
70
|
+
"#e8e8e8",
|
|
71
|
+
"#e0e0e0",
|
|
72
|
+
"#d8d8d8",
|
|
73
|
+
"#d0d0d0",
|
|
74
|
+
"#c8c8c8",
|
|
75
|
+
"#c0c0c0",
|
|
76
|
+
"#d4d4d4",
|
|
77
|
+
"#dcdcdc",
|
|
78
|
+
"#e4e4e4",
|
|
79
|
+
"#cccccc",
|
|
80
|
+
"#d8d8d8",
|
|
81
|
+
"#e0e0e0"
|
|
82
82
|
],
|
|
83
83
|
mouthColor: "#666",
|
|
84
84
|
eyebrowColor: "#555",
|
|
85
85
|
accessoryColor: "#777",
|
|
86
86
|
eyeWhiteColor: "#f0f0f0",
|
|
87
|
+
headbandColor: "#888",
|
|
88
|
+
earringColor: "#999",
|
|
89
|
+
glassesColor: "#555",
|
|
90
|
+
freckleColor: "#999",
|
|
91
|
+
cheekColor: "#999",
|
|
92
|
+
beautyMarkColor: "#333",
|
|
87
93
|
bgOpacity: 0.5,
|
|
88
94
|
bgRadius: 4
|
|
89
95
|
};
|
|
@@ -208,5 +214,5 @@ exports.pixelCleanTheme = pixelCleanTheme;
|
|
|
208
214
|
exports.pixelRetroTheme = pixelRetroTheme;
|
|
209
215
|
exports.pixelTheme = pixelTheme;
|
|
210
216
|
exports.transparentTheme = transparentTheme;
|
|
211
|
-
//# sourceMappingURL=chunk-
|
|
212
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-375DBADY.cjs.map
|
|
218
|
+
//# sourceMappingURL=chunk-375DBADY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/themes/presets.ts"],"names":[],"mappings":"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","file":"chunk-375DBADY.cjs","sourcesContent":["// ═══════════════════════════════════════════════════════════════\n// SOLFACES v2 — Preset Themes\n// ═══════════════════════════════════════════════════════════════\n\nimport type { SolFaceTheme } from \"../core/traits\";\n\n// ─── Default (base look — gradients, no overrides) ─\n\nexport const defaultTheme: SolFaceTheme = {};\n\n// ─── Base Themes ────────────────────────────────\n\nexport const darkTheme: SolFaceTheme = {\n bgColors: [\"#1a1b23\", \"#1e1428\", \"#0a1e38\", \"#1b2838\", \"#201028\",\n \"#141a28\", \"#18122a\", \"#1a2020\", \"#221822\", \"#1e1020\",\n \"#1c1228\", \"#0e201a\"],\n eyeWhiteColor: \"#d8d0c8\",\n bgOpacity: 1,\n bgRadius: 4,\n border: { color: \"#333340\", width: 0.5 },\n};\n\nexport const lightTheme: SolFaceTheme = {\n bgColors: [\"#f5e8ea\", \"#f0f0d8\", \"#e4f0e6\", \"#d8f0e8\", \"#e0ece8\",\n \"#dce8f0\", \"#e0e4f0\", \"#e0d8f0\", \"#f0e0ee\", \"#f0d8e4\",\n \"#e8d8f0\", \"#d8f0e8\"],\n bgOpacity: 1,\n bgRadius: 8,\n};\n\nexport const monoTheme: SolFaceTheme = {\n skinColors: [\"#e8e8e8\", \"#d4d4d4\", \"#c0c0c0\", \"#a8a8a8\", \"#909090\",\n \"#787878\", \"#606060\", \"#505050\", \"#404040\", \"#303030\"],\n eyeColors: [\"#333\", \"#555\", \"#777\", \"#999\", \"#bbb\"],\n hairColors: [\"#1a1a1a\", \"#2a2a2a\", \"#404040\", \"#555\", \"#707070\",\n \"#888\", \"#a0a0a0\", \"#b8b8b8\", \"#d0d0d0\", \"#e0e0e0\"],\n bgColors: [\"#e8e8e8\", \"#e0e0e0\", \"#d8d8d8\", \"#d0d0d0\", \"#c8c8c8\",\n \"#c0c0c0\", \"#d4d4d4\", \"#dcdcdc\", \"#e4e4e4\", \"#cccccc\",\n \"#d8d8d8\", \"#e0e0e0\"],\n mouthColor: \"#666\",\n eyebrowColor: \"#555\",\n accessoryColor: \"#777\",\n eyeWhiteColor: \"#f0f0f0\",\n headbandColor: \"#888\",\n earringColor: \"#999\",\n glassesColor: \"#555\",\n freckleColor: \"#999\",\n cheekColor: \"#999\",\n beautyMarkColor: \"#333\",\n bgOpacity: 0.5,\n bgRadius: 4,\n};\n\nexport const flatTheme: SolFaceTheme = {\n flat: true,\n};\n\nexport const transparentTheme: SolFaceTheme = {\n flat: true,\n bgOpacity: 0,\n};\n\n// ─── React-Only: Liquid Glass ───────────────────\n\nexport const glassTheme: SolFaceTheme = {\n bgOpacity: 0.15,\n bgRadius: 16,\n _glass: true,\n _blurRadius: 12,\n _saturate: 1.8,\n _tintOpacity: 0.12,\n _tintColor: \"rgba(255,255,255,1)\",\n _borderOpacity: 0.25,\n _borderWidth: 1,\n _borderColor: \"rgba(255,255,255,0.25)\",\n _specularOpacity: 0.25,\n _specularColor: \"rgba(255,255,255,1)\",\n _specularEnd: 50,\n _lightAngle: 135,\n _rimIntensity: 0.08,\n _shadowY: 8,\n _shadowBlur: 32,\n _shadowOpacity: 0.12,\n};\n\nexport const glassDarkTheme: SolFaceTheme = {\n bgOpacity: 0.2,\n bgRadius: 16,\n _glass: true,\n _blurRadius: 16,\n _saturate: 2.0,\n _tintOpacity: 0.08,\n _tintColor: \"rgba(0,0,0,1)\",\n _borderOpacity: 0.15,\n _borderWidth: 1,\n _borderColor: \"rgba(255,255,255,0.15)\",\n _specularOpacity: 0.15,\n _specularColor: \"rgba(255,255,255,1)\",\n _specularEnd: 40,\n _lightAngle: 135,\n _rimIntensity: 0.05,\n _shadowY: 8,\n _shadowBlur: 32,\n _shadowOpacity: 0.25,\n};\n\n// ─── React-Only: Pixel Art ──────────────────────\n\nexport const pixelTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 16,\n _pixelRounded: true,\n _pixelOutline: true,\n _pixelOutlineColor: \"#222\",\n _pixelOutlineWidth: 2,\n};\n\nexport const pixelRetroTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 12,\n _pixelRounded: false,\n _pixelOutline: true,\n _pixelOutlineColor: \"#000\",\n _pixelOutlineWidth: 2,\n _pixelScanlines: true,\n _pixelScanlineOpacity: 0.1,\n _pixelScanlineSpacing: 2,\n _pixelShadow: true,\n _pixelShadowColor: \"rgba(0,0,0,0.4)\",\n _pixelShadowOffset: 3,\n};\n\nexport const pixelCleanTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 24,\n _pixelRounded: true,\n _pixelOutline: false,\n};\n\n// ─── Theme Map ──────────────────────────────────\n\n/** Names of all built-in preset themes. */\nexport type PresetThemeName = \"default\" | \"dark\" | \"light\" | \"mono\" | \"flat\" | \"transparent\" | \"glass\" | \"glassDark\" | \"pixel\" | \"pixelRetro\" | \"pixelClean\";\n\n/** Map of all built-in preset themes, keyed by name. */\nexport const PRESET_THEMES: Record<PresetThemeName, SolFaceTheme> = {\n default: defaultTheme,\n dark: darkTheme,\n light: lightTheme,\n mono: monoTheme,\n flat: flatTheme,\n transparent: transparentTheme,\n glass: glassTheme,\n glassDark: glassDarkTheme,\n pixel: pixelTheme,\n pixelRetro: pixelRetroTheme,\n pixelClean: pixelCleanTheme,\n};\n\n/**\n * Look up a built-in preset theme by name, optionally merging overrides.\n *\n * @param name Preset theme name (e.g. \"glass\", \"dark\", \"pixelRetro\").\n * @param overrides Optional partial theme to merge on top of the preset.\n * @returns The resolved theme object.\n */\nexport function getPresetTheme(\n name: PresetThemeName,\n overrides?: Partial<SolFaceTheme>,\n): SolFaceTheme {\n const base = PRESET_THEMES[name];\n if (!base) return (overrides as SolFaceTheme) ?? {};\n return overrides ? { ...base, ...overrides } : base;\n}\n\n/**\n * Build a custom theme by starting from a preset mode and merging your overrides.\n * All SolFaceTheme properties are available for IntelliSense-driven customization.\n *\n * @param options Theme options. Use `mode` to start from a preset base, then override any property.\n * @returns A fully resolved SolFaceTheme object.\n *\n * @example\n * ```ts\n * const myTheme = createTheme({ mode: \"dark\", bgRadius: 12, flat: true });\n * ```\n */\nexport function createTheme(\n options: Partial<SolFaceTheme> & {\n /** Start from a preset mode. Default: none (default gradient theme). */\n mode?: \"light\" | \"dark\" | \"transparent\" | \"mono\" | \"flat\";\n } = {},\n): SolFaceTheme {\n const { mode, ...rest } = options;\n let base: SolFaceTheme = {};\n\n if (mode === \"dark\") base = { ...darkTheme };\n else if (mode === \"light\") base = { ...lightTheme };\n else if (mode === \"transparent\") base = { ...transparentTheme };\n else if (mode === \"mono\") base = { ...monoTheme };\n else if (mode === \"flat\") base = { ...flatTheme };\n\n return { ...base, ...rest };\n}\n"]}
|
|
@@ -65,23 +65,29 @@ var monoTheme = {
|
|
|
65
65
|
"#e0e0e0"
|
|
66
66
|
],
|
|
67
67
|
bgColors: [
|
|
68
|
-
"#
|
|
69
|
-
"#
|
|
70
|
-
"#
|
|
71
|
-
"#
|
|
72
|
-
"#
|
|
73
|
-
"#
|
|
74
|
-
"#
|
|
75
|
-
"#
|
|
76
|
-
"#
|
|
77
|
-
"#
|
|
78
|
-
"#
|
|
79
|
-
"#
|
|
68
|
+
"#e8e8e8",
|
|
69
|
+
"#e0e0e0",
|
|
70
|
+
"#d8d8d8",
|
|
71
|
+
"#d0d0d0",
|
|
72
|
+
"#c8c8c8",
|
|
73
|
+
"#c0c0c0",
|
|
74
|
+
"#d4d4d4",
|
|
75
|
+
"#dcdcdc",
|
|
76
|
+
"#e4e4e4",
|
|
77
|
+
"#cccccc",
|
|
78
|
+
"#d8d8d8",
|
|
79
|
+
"#e0e0e0"
|
|
80
80
|
],
|
|
81
81
|
mouthColor: "#666",
|
|
82
82
|
eyebrowColor: "#555",
|
|
83
83
|
accessoryColor: "#777",
|
|
84
84
|
eyeWhiteColor: "#f0f0f0",
|
|
85
|
+
headbandColor: "#888",
|
|
86
|
+
earringColor: "#999",
|
|
87
|
+
glassesColor: "#555",
|
|
88
|
+
freckleColor: "#999",
|
|
89
|
+
cheekColor: "#999",
|
|
90
|
+
beautyMarkColor: "#333",
|
|
85
91
|
bgOpacity: 0.5,
|
|
86
92
|
bgRadius: 4
|
|
87
93
|
};
|
|
@@ -193,5 +199,5 @@ function createTheme(options = {}) {
|
|
|
193
199
|
}
|
|
194
200
|
|
|
195
201
|
export { PRESET_THEMES, createTheme, darkTheme, defaultTheme, flatTheme, getPresetTheme, glassDarkTheme, glassTheme, lightTheme, monoTheme, pixelCleanTheme, pixelRetroTheme, pixelTheme, transparentTheme };
|
|
196
|
-
//# sourceMappingURL=chunk-
|
|
197
|
-
//# sourceMappingURL=chunk-
|
|
202
|
+
//# sourceMappingURL=chunk-C44YBK6V.js.map
|
|
203
|
+
//# sourceMappingURL=chunk-C44YBK6V.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/themes/presets.ts"],"names":[],"mappings":"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","file":"chunk-C44YBK6V.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════\n// SOLFACES v2 — Preset Themes\n// ═══════════════════════════════════════════════════════════════\n\nimport type { SolFaceTheme } from \"../core/traits\";\n\n// ─── Default (base look — gradients, no overrides) ─\n\nexport const defaultTheme: SolFaceTheme = {};\n\n// ─── Base Themes ────────────────────────────────\n\nexport const darkTheme: SolFaceTheme = {\n bgColors: [\"#1a1b23\", \"#1e1428\", \"#0a1e38\", \"#1b2838\", \"#201028\",\n \"#141a28\", \"#18122a\", \"#1a2020\", \"#221822\", \"#1e1020\",\n \"#1c1228\", \"#0e201a\"],\n eyeWhiteColor: \"#d8d0c8\",\n bgOpacity: 1,\n bgRadius: 4,\n border: { color: \"#333340\", width: 0.5 },\n};\n\nexport const lightTheme: SolFaceTheme = {\n bgColors: [\"#f5e8ea\", \"#f0f0d8\", \"#e4f0e6\", \"#d8f0e8\", \"#e0ece8\",\n \"#dce8f0\", \"#e0e4f0\", \"#e0d8f0\", \"#f0e0ee\", \"#f0d8e4\",\n \"#e8d8f0\", \"#d8f0e8\"],\n bgOpacity: 1,\n bgRadius: 8,\n};\n\nexport const monoTheme: SolFaceTheme = {\n skinColors: [\"#e8e8e8\", \"#d4d4d4\", \"#c0c0c0\", \"#a8a8a8\", \"#909090\",\n \"#787878\", \"#606060\", \"#505050\", \"#404040\", \"#303030\"],\n eyeColors: [\"#333\", \"#555\", \"#777\", \"#999\", \"#bbb\"],\n hairColors: [\"#1a1a1a\", \"#2a2a2a\", \"#404040\", \"#555\", \"#707070\",\n \"#888\", \"#a0a0a0\", \"#b8b8b8\", \"#d0d0d0\", \"#e0e0e0\"],\n bgColors: [\"#e8e8e8\", \"#e0e0e0\", \"#d8d8d8\", \"#d0d0d0\", \"#c8c8c8\",\n \"#c0c0c0\", \"#d4d4d4\", \"#dcdcdc\", \"#e4e4e4\", \"#cccccc\",\n \"#d8d8d8\", \"#e0e0e0\"],\n mouthColor: \"#666\",\n eyebrowColor: \"#555\",\n accessoryColor: \"#777\",\n eyeWhiteColor: \"#f0f0f0\",\n headbandColor: \"#888\",\n earringColor: \"#999\",\n glassesColor: \"#555\",\n freckleColor: \"#999\",\n cheekColor: \"#999\",\n beautyMarkColor: \"#333\",\n bgOpacity: 0.5,\n bgRadius: 4,\n};\n\nexport const flatTheme: SolFaceTheme = {\n flat: true,\n};\n\nexport const transparentTheme: SolFaceTheme = {\n flat: true,\n bgOpacity: 0,\n};\n\n// ─── React-Only: Liquid Glass ───────────────────\n\nexport const glassTheme: SolFaceTheme = {\n bgOpacity: 0.15,\n bgRadius: 16,\n _glass: true,\n _blurRadius: 12,\n _saturate: 1.8,\n _tintOpacity: 0.12,\n _tintColor: \"rgba(255,255,255,1)\",\n _borderOpacity: 0.25,\n _borderWidth: 1,\n _borderColor: \"rgba(255,255,255,0.25)\",\n _specularOpacity: 0.25,\n _specularColor: \"rgba(255,255,255,1)\",\n _specularEnd: 50,\n _lightAngle: 135,\n _rimIntensity: 0.08,\n _shadowY: 8,\n _shadowBlur: 32,\n _shadowOpacity: 0.12,\n};\n\nexport const glassDarkTheme: SolFaceTheme = {\n bgOpacity: 0.2,\n bgRadius: 16,\n _glass: true,\n _blurRadius: 16,\n _saturate: 2.0,\n _tintOpacity: 0.08,\n _tintColor: \"rgba(0,0,0,1)\",\n _borderOpacity: 0.15,\n _borderWidth: 1,\n _borderColor: \"rgba(255,255,255,0.15)\",\n _specularOpacity: 0.15,\n _specularColor: \"rgba(255,255,255,1)\",\n _specularEnd: 40,\n _lightAngle: 135,\n _rimIntensity: 0.05,\n _shadowY: 8,\n _shadowBlur: 32,\n _shadowOpacity: 0.25,\n};\n\n// ─── React-Only: Pixel Art ──────────────────────\n\nexport const pixelTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 16,\n _pixelRounded: true,\n _pixelOutline: true,\n _pixelOutlineColor: \"#222\",\n _pixelOutlineWidth: 2,\n};\n\nexport const pixelRetroTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 12,\n _pixelRounded: false,\n _pixelOutline: true,\n _pixelOutlineColor: \"#000\",\n _pixelOutlineWidth: 2,\n _pixelScanlines: true,\n _pixelScanlineOpacity: 0.1,\n _pixelScanlineSpacing: 2,\n _pixelShadow: true,\n _pixelShadowColor: \"rgba(0,0,0,0.4)\",\n _pixelShadowOffset: 3,\n};\n\nexport const pixelCleanTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 24,\n _pixelRounded: true,\n _pixelOutline: false,\n};\n\n// ─── Theme Map ──────────────────────────────────\n\n/** Names of all built-in preset themes. */\nexport type PresetThemeName = \"default\" | \"dark\" | \"light\" | \"mono\" | \"flat\" | \"transparent\" | \"glass\" | \"glassDark\" | \"pixel\" | \"pixelRetro\" | \"pixelClean\";\n\n/** Map of all built-in preset themes, keyed by name. */\nexport const PRESET_THEMES: Record<PresetThemeName, SolFaceTheme> = {\n default: defaultTheme,\n dark: darkTheme,\n light: lightTheme,\n mono: monoTheme,\n flat: flatTheme,\n transparent: transparentTheme,\n glass: glassTheme,\n glassDark: glassDarkTheme,\n pixel: pixelTheme,\n pixelRetro: pixelRetroTheme,\n pixelClean: pixelCleanTheme,\n};\n\n/**\n * Look up a built-in preset theme by name, optionally merging overrides.\n *\n * @param name Preset theme name (e.g. \"glass\", \"dark\", \"pixelRetro\").\n * @param overrides Optional partial theme to merge on top of the preset.\n * @returns The resolved theme object.\n */\nexport function getPresetTheme(\n name: PresetThemeName,\n overrides?: Partial<SolFaceTheme>,\n): SolFaceTheme {\n const base = PRESET_THEMES[name];\n if (!base) return (overrides as SolFaceTheme) ?? {};\n return overrides ? { ...base, ...overrides } : base;\n}\n\n/**\n * Build a custom theme by starting from a preset mode and merging your overrides.\n * All SolFaceTheme properties are available for IntelliSense-driven customization.\n *\n * @param options Theme options. Use `mode` to start from a preset base, then override any property.\n * @returns A fully resolved SolFaceTheme object.\n *\n * @example\n * ```ts\n * const myTheme = createTheme({ mode: \"dark\", bgRadius: 12, flat: true });\n * ```\n */\nexport function createTheme(\n options: Partial<SolFaceTheme> & {\n /** Start from a preset mode. Default: none (default gradient theme). */\n mode?: \"light\" | \"dark\" | \"transparent\" | \"mono\" | \"flat\";\n } = {},\n): SolFaceTheme {\n const { mode, ...rest } = options;\n let base: SolFaceTheme = {};\n\n if (mode === \"dark\") base = { ...darkTheme };\n else if (mode === \"light\") base = { ...lightTheme };\n else if (mode === \"transparent\") base = { ...transparentTheme };\n else if (mode === \"mono\") base = { ...monoTheme };\n else if (mode === \"flat\") base = { ...flatTheme };\n\n return { ...base, ...rest };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { renderSolFaceSVG } from './chunk-
|
|
1
|
+
import { renderSolFaceSVG } from './chunk-VWYO6SVB.js';
|
|
2
2
|
|
|
3
3
|
// src/core/rasterize.ts
|
|
4
4
|
async function renderSolFacePNG(walletAddress, options) {
|
|
@@ -103,5 +103,5 @@ async function renderSolFacePNGDataURL(walletAddress, options) {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export { renderSolFacePNG, renderSolFacePNGBrowser, renderSolFacePNGDataURL };
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-EFN2CSAI.js.map
|
|
107
|
+
//# sourceMappingURL=chunk-EFN2CSAI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/rasterize.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/rasterize.ts"],"names":[],"mappings":"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","file":"chunk-EFN2CSAI.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════\n// SOLFACES — PNG Rasterizer\n// Converts SolFace SVGs to PNG buffers for use in bots, APIs,\n// Discord embeds, Telegram, emails, and non-SVG contexts.\n//\n// Works in:\n// - Node.js (via sharp or canvas fallback)\n// - Browser (via OffscreenCanvas or <canvas>)\n// - Edge functions (via resvg-wasm)\n// ═══════════════════════════════════════════════════════════════\n\nimport { renderSolFaceSVG, type RenderOptions } from \"./renderer\";\n\nexport interface PNGOptions extends RenderOptions {\n /** Output pixel size (both width and height). Default: 256 */\n pngSize?: number;\n /** PNG quality (0-1, only affects some renderers). Default: 1 */\n quality?: number;\n}\n\n// ─── Node.js Rasterization ───────────────────────────────────\n\n/**\n * Render a SolFace as a PNG Buffer using `sharp`.\n * Requires: `npm install sharp`\n *\n * @returns PNG buffer\n *\n * @example\n * ```ts\n * import { renderSolFacePNG } from \"solfaces/core/rasterize\";\n *\n * const png = await renderSolFacePNG(\"7xKXq...\", { pngSize: 256 });\n * fs.writeFileSync(\"avatar.png\", png);\n * ```\n */\nexport async function renderSolFacePNG(\n walletAddress: string,\n options?: PNGOptions\n): Promise<Buffer> {\n const { pngSize = 256, ...renderOpts } = options ?? {};\n\n // Generate SVG at the target resolution\n const svg = renderSolFaceSVG(walletAddress, {\n ...renderOpts,\n size: pngSize,\n });\n const svgBuffer = Buffer.from(svg);\n\n // Try sharp first (best quality, most common in Node)\n try {\n const sharp = await import(\"sharp\");\n return await sharp\n .default(svgBuffer)\n .resize(pngSize, pngSize)\n .png()\n .toBuffer();\n } catch {\n // sharp not installed — fall through\n }\n\n // Try @resvg/resvg-js (good for edge/serverless)\n try {\n const { Resvg } = await import(\"@resvg/resvg-js\");\n const resvg = new Resvg(svg, {\n fitTo: { mode: \"width\", value: pngSize },\n });\n const pngData = resvg.render();\n return Buffer.from(pngData.asPng());\n } catch {\n // resvg not installed\n }\n\n throw new Error(\n \"[SolFaces] PNG rasterization requires either `sharp` or `@resvg/resvg-js`. \" +\n \"Install one: npm install sharp OR npm install @resvg/resvg-js\"\n );\n}\n\n// ─── Browser Rasterization ───────────────────────────────────\n\n/**\n * Render a SolFace as a PNG Blob in the browser.\n * Uses Canvas API — works in all modern browsers.\n *\n * @returns PNG Blob\n *\n * @example\n * ```ts\n * const blob = await renderSolFacePNGBrowser(\"7xKXq...\", { pngSize: 256 });\n * const url = URL.createObjectURL(blob);\n * img.src = url;\n * ```\n */\nexport async function renderSolFacePNGBrowser(\n walletAddress: string,\n options?: PNGOptions\n): Promise<Blob> {\n const { pngSize = 256, ...renderOpts } = options ?? {};\n\n const svg = renderSolFaceSVG(walletAddress, {\n ...renderOpts,\n size: pngSize,\n });\n\n // Create image from SVG data URI\n const svgBlob = new Blob([svg], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(svgBlob);\n\n return new Promise<Blob>((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n // Use OffscreenCanvas if available (better perf)\n let canvas: HTMLCanvasElement | OffscreenCanvas;\n let ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null;\n\n if (typeof OffscreenCanvas !== \"undefined\") {\n canvas = new OffscreenCanvas(pngSize, pngSize);\n ctx = canvas.getContext(\"2d\");\n } else {\n canvas = document.createElement(\"canvas\");\n canvas.width = pngSize;\n canvas.height = pngSize;\n ctx = canvas.getContext(\"2d\");\n }\n\n if (!ctx) {\n URL.revokeObjectURL(url);\n reject(new Error(\"[SolFaces] Could not get canvas context\"));\n return;\n }\n\n ctx.drawImage(img, 0, 0, pngSize, pngSize);\n URL.revokeObjectURL(url);\n\n if (canvas instanceof OffscreenCanvas) {\n canvas.convertToBlob({ type: \"image/png\" }).then(resolve).catch(reject);\n } else {\n canvas.toBlob((blob) => {\n if (blob) resolve(blob);\n else reject(new Error(\"[SolFaces] Canvas toBlob failed\"));\n }, \"image/png\");\n }\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"[SolFaces] Failed to load SVG into image\"));\n };\n\n img.src = url;\n });\n}\n\n/**\n * Render a SolFace as a PNG data URL in the browser.\n * Convenient for directly setting img.src without blob URLs.\n */\nexport async function renderSolFacePNGDataURL(\n walletAddress: string,\n options?: PNGOptions\n): Promise<string> {\n const { pngSize = 256, ...renderOpts } = options ?? {};\n\n const svg = renderSolFaceSVG(walletAddress, {\n ...renderOpts,\n size: pngSize,\n });\n\n const svgBlob = new Blob([svg], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(svgBlob);\n\n return new Promise<string>((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = pngSize;\n canvas.height = pngSize;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"[SolFaces] No canvas context\"));\n return;\n }\n ctx.drawImage(img, 0, 0, pngSize, pngSize);\n URL.revokeObjectURL(url);\n resolve(canvas.toDataURL(\"image/png\"));\n };\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"[SolFaces] SVG load failed\"));\n };\n img.src = url;\n });\n}\n"]}
|
|
@@ -740,8 +740,12 @@ function renderAccessory(ai, accessoryColor, glassesColor, earringColor, headban
|
|
|
740
740
|
return `<circle cx="10" cy="37" r="1.2" fill="${earringColor}"/><circle cx="54" cy="37" r="1.2" fill="${earringColor}"/>`;
|
|
741
741
|
case 8:
|
|
742
742
|
return `<g fill="none" stroke="${glassesColor}" stroke-width="1.2"><path d="M19 30 Q19 28 25 28 Q31 28 31 33 Q31 38 25 38 Q19 38 19 33 Z" fill="${glassesColor}" fill-opacity="0.15"/><path d="M33 30 Q33 28 39 28 Q45 28 45 33 Q45 38 39 38 Q33 38 33 33 Z" fill="${glassesColor}" fill-opacity="0.15"/><line x1="31" y1="32" x2="33" y2="32"/><line x1="19" y1="31" x2="14" y2="29"/><line x1="45" y1="31" x2="50" y2="29"/></g>`;
|
|
743
|
-
case 9:
|
|
744
|
-
|
|
743
|
+
case 9: {
|
|
744
|
+
const bandBase = lighten(skinColor, 0.3);
|
|
745
|
+
const bandPad = lighten(skinColor, 0.4);
|
|
746
|
+
const bandDot = darken(skinColor, 0.1);
|
|
747
|
+
return `<g><rect x="38" y="38" width="9" height="4.5" rx="1.2" fill="${bandBase}" transform="rotate(-15 42 40)"/><rect x="39.5" y="38.5" width="6" height="3.5" rx="0.8" fill="${bandPad}" transform="rotate(-15 42 40)"/><circle cx="42.5" cy="40.25" r="0.5" fill="${bandDot}" transform="rotate(-15 42 40)"/></g>`;
|
|
748
|
+
}
|
|
745
749
|
case 10:
|
|
746
750
|
return `<line x1="23" y1="24.8" x2="23.8" y2="29.2" stroke="${skinColor}" stroke-width="1.3" stroke-linecap="butt"/>`;
|
|
747
751
|
case 11:
|
|
@@ -862,5 +866,5 @@ exports.resolveTheme = resolveTheme;
|
|
|
862
866
|
exports.rgbToHex = rgbToHex;
|
|
863
867
|
exports.solFaceAltText = solFaceAltText;
|
|
864
868
|
exports.traitHash = traitHash;
|
|
865
|
-
//# sourceMappingURL=chunk-
|
|
866
|
-
//# sourceMappingURL=chunk-
|
|
869
|
+
//# sourceMappingURL=chunk-FYZJEEBJ.cjs.map
|
|
870
|
+
//# sourceMappingURL=chunk-FYZJEEBJ.cjs.map
|