mcp-avatar-builder 0.1.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/LICENSE +21 -0
- package/README.md +163 -0
- package/build/composer.d.ts +4 -0
- package/build/composer.d.ts.map +1 -0
- package/build/composer.js +65 -0
- package/build/composer.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -0
- package/build/rasterizer.d.ts +2 -0
- package/build/rasterizer.d.ts.map +1 -0
- package/build/rasterizer.js +12 -0
- package/build/rasterizer.js.map +1 -0
- package/build/server.d.ts +3 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +118 -0
- package/build/server.js.map +1 -0
- package/build/styles/chibi/index.d.ts +3 -0
- package/build/styles/chibi/index.d.ts.map +1 -0
- package/build/styles/chibi/index.js +57 -0
- package/build/styles/chibi/index.js.map +1 -0
- package/build/styles/chibi/palettes.d.ts +3 -0
- package/build/styles/chibi/palettes.d.ts.map +1 -0
- package/build/styles/chibi/palettes.js +29 -0
- package/build/styles/chibi/palettes.js.map +1 -0
- package/build/styles/chibi/parts/accessories.d.ts +3 -0
- package/build/styles/chibi/parts/accessories.d.ts.map +1 -0
- package/build/styles/chibi/parts/accessories.js +18 -0
- package/build/styles/chibi/parts/accessories.js.map +1 -0
- package/build/styles/chibi/parts/clothing.d.ts +3 -0
- package/build/styles/chibi/parts/clothing.d.ts.map +1 -0
- package/build/styles/chibi/parts/clothing.js +21 -0
- package/build/styles/chibi/parts/clothing.js.map +1 -0
- package/build/styles/chibi/parts/eyebrows.d.ts +3 -0
- package/build/styles/chibi/parts/eyebrows.d.ts.map +1 -0
- package/build/styles/chibi/parts/eyebrows.js +15 -0
- package/build/styles/chibi/parts/eyebrows.js.map +1 -0
- package/build/styles/chibi/parts/eyes.d.ts +3 -0
- package/build/styles/chibi/parts/eyes.d.ts.map +1 -0
- package/build/styles/chibi/parts/eyes.js +29 -0
- package/build/styles/chibi/parts/eyes.js.map +1 -0
- package/build/styles/chibi/parts/hair.d.ts +4 -0
- package/build/styles/chibi/parts/hair.d.ts.map +1 -0
- package/build/styles/chibi/parts/hair.js +29 -0
- package/build/styles/chibi/parts/hair.js.map +1 -0
- package/build/styles/chibi/parts/head.d.ts +3 -0
- package/build/styles/chibi/parts/head.d.ts.map +1 -0
- package/build/styles/chibi/parts/head.js +15 -0
- package/build/styles/chibi/parts/head.js.map +1 -0
- package/build/styles/chibi/parts/mouth.d.ts +3 -0
- package/build/styles/chibi/parts/mouth.d.ts.map +1 -0
- package/build/styles/chibi/parts/mouth.js +12 -0
- package/build/styles/chibi/parts/mouth.js.map +1 -0
- package/build/styles/cyberpunk/defs.d.ts +3 -0
- package/build/styles/cyberpunk/defs.d.ts.map +1 -0
- package/build/styles/cyberpunk/defs.js +74 -0
- package/build/styles/cyberpunk/defs.js.map +1 -0
- package/build/styles/cyberpunk/index.d.ts +3 -0
- package/build/styles/cyberpunk/index.d.ts.map +1 -0
- package/build/styles/cyberpunk/index.js +81 -0
- package/build/styles/cyberpunk/index.js.map +1 -0
- package/build/styles/cyberpunk/palettes.d.ts +3 -0
- package/build/styles/cyberpunk/palettes.d.ts.map +1 -0
- package/build/styles/cyberpunk/palettes.js +43 -0
- package/build/styles/cyberpunk/palettes.js.map +1 -0
- package/build/styles/cyberpunk/parts/accessories.d.ts +3 -0
- package/build/styles/cyberpunk/parts/accessories.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/accessories.js +77 -0
- package/build/styles/cyberpunk/parts/accessories.js.map +1 -0
- package/build/styles/cyberpunk/parts/background.d.ts +3 -0
- package/build/styles/cyberpunk/parts/background.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/background.js +132 -0
- package/build/styles/cyberpunk/parts/background.js.map +1 -0
- package/build/styles/cyberpunk/parts/clothing.d.ts +3 -0
- package/build/styles/cyberpunk/parts/clothing.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/clothing.js +137 -0
- package/build/styles/cyberpunk/parts/clothing.js.map +1 -0
- package/build/styles/cyberpunk/parts/effects.d.ts +3 -0
- package/build/styles/cyberpunk/parts/effects.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/effects.js +33 -0
- package/build/styles/cyberpunk/parts/effects.js.map +1 -0
- package/build/styles/cyberpunk/parts/eyebrows.d.ts +3 -0
- package/build/styles/cyberpunk/parts/eyebrows.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/eyebrows.js +15 -0
- package/build/styles/cyberpunk/parts/eyebrows.js.map +1 -0
- package/build/styles/cyberpunk/parts/eyes.d.ts +3 -0
- package/build/styles/cyberpunk/parts/eyes.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/eyes.js +110 -0
- package/build/styles/cyberpunk/parts/eyes.js.map +1 -0
- package/build/styles/cyberpunk/parts/face_mods.d.ts +3 -0
- package/build/styles/cyberpunk/parts/face_mods.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/face_mods.js +105 -0
- package/build/styles/cyberpunk/parts/face_mods.js.map +1 -0
- package/build/styles/cyberpunk/parts/hair.d.ts +4 -0
- package/build/styles/cyberpunk/parts/hair.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/hair.js +175 -0
- package/build/styles/cyberpunk/parts/hair.js.map +1 -0
- package/build/styles/cyberpunk/parts/head.d.ts +3 -0
- package/build/styles/cyberpunk/parts/head.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/head.js +158 -0
- package/build/styles/cyberpunk/parts/head.js.map +1 -0
- package/build/styles/cyberpunk/parts/mouth.d.ts +3 -0
- package/build/styles/cyberpunk/parts/mouth.d.ts.map +1 -0
- package/build/styles/cyberpunk/parts/mouth.js +71 -0
- package/build/styles/cyberpunk/parts/mouth.js.map +1 -0
- package/build/styles/index.d.ts +4 -0
- package/build/styles/index.d.ts.map +1 -0
- package/build/styles/index.js +15 -0
- package/build/styles/index.js.map +1 -0
- package/build/styles/style.d.ts +15 -0
- package/build/styles/style.d.ts.map +1 -0
- package/build/styles/style.js +2 -0
- package/build/styles/style.js.map +1 -0
- package/build/types.d.ts +37 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eyebrows.d.ts","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/eyebrows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAajD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const variants = {
|
|
2
|
+
flat: (c) => `
|
|
3
|
+
<line x1="63" y1="93" x2="87" y2="93" stroke="${c.hair}" stroke-width="2.5" stroke-linecap="round" />
|
|
4
|
+
<line x1="113" y1="93" x2="137" y2="93" stroke="${c.hair}" stroke-width="2.5" stroke-linecap="round" />
|
|
5
|
+
`,
|
|
6
|
+
arched: (c) => `
|
|
7
|
+
<path d="M63,96 Q75,88 87,94" stroke="${c.hair}" stroke-width="2.5" fill="none" stroke-linecap="round" />
|
|
8
|
+
<path d="M113,94 Q125,88 137,96" stroke="${c.hair}" stroke-width="2.5" fill="none" stroke-linecap="round" />
|
|
9
|
+
`,
|
|
10
|
+
angled: (c) => `
|
|
11
|
+
<path d="M63,96 L75,90 L87,93" stroke="${c.hair}" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
12
|
+
<path d="M113,93 L125,90 L137,96" stroke="${c.hair}" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
13
|
+
`,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=eyebrows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eyebrows.js","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/eyebrows.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiC;IACpD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;oDACqC,CAAC,CAAC,IAAI;sDACJ,CAAC,CAAC,IAAI;GACzD;IACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;4CAC2B,CAAC,CAAC,IAAI;+CACH,CAAC,CAAC,IAAI;GAClD;IACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;6CAC4B,CAAC,CAAC,IAAI;gDACH,CAAC,CAAC,IAAI;GACnD;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eyes.d.ts","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/eyes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA2BjD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const variants = {
|
|
2
|
+
round: (c) => `
|
|
3
|
+
<ellipse cx="75" cy="110" rx="10" ry="12" fill="white" />
|
|
4
|
+
<ellipse cx="125" cy="110" rx="10" ry="12" fill="white" />
|
|
5
|
+
<circle cx="75" cy="110" r="7" fill="${c.eyes}" />
|
|
6
|
+
<circle cx="125" cy="110" r="7" fill="${c.eyes}" />
|
|
7
|
+
<circle cx="77" cy="107" r="2.5" fill="white" />
|
|
8
|
+
<circle cx="127" cy="107" r="2.5" fill="white" />
|
|
9
|
+
`,
|
|
10
|
+
cat: (c) => `
|
|
11
|
+
<ellipse cx="75" cy="110" rx="11" ry="10" fill="white" />
|
|
12
|
+
<ellipse cx="125" cy="110" rx="11" ry="10" fill="white" />
|
|
13
|
+
<ellipse cx="75" cy="110" rx="4" ry="9" fill="${c.eyes}" />
|
|
14
|
+
<ellipse cx="125" cy="110" rx="4" ry="9" fill="${c.eyes}" />
|
|
15
|
+
<circle cx="76" cy="106" r="2" fill="white" />
|
|
16
|
+
<circle cx="126" cy="106" r="2" fill="white" />
|
|
17
|
+
`,
|
|
18
|
+
sparkle: (c) => `
|
|
19
|
+
<ellipse cx="75" cy="110" rx="12" ry="14" fill="white" />
|
|
20
|
+
<ellipse cx="125" cy="110" rx="12" ry="14" fill="white" />
|
|
21
|
+
<circle cx="75" cy="111" r="9" fill="${c.eyes}" />
|
|
22
|
+
<circle cx="125" cy="111" r="9" fill="${c.eyes}" />
|
|
23
|
+
<circle cx="78" cy="106" r="3.5" fill="white" />
|
|
24
|
+
<circle cx="128" cy="106" r="3.5" fill="white" />
|
|
25
|
+
<circle cx="72" cy="113" r="2" fill="white" opacity="0.7" />
|
|
26
|
+
<circle cx="122" cy="113" r="2" fill="white" opacity="0.7" />
|
|
27
|
+
`,
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=eyes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eyes.js","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/eyes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiC;IACpD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;;;2CAG2B,CAAC,CAAC,IAAI;4CACL,CAAC,CAAC,IAAI;;;GAG/C;IACD,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;;;oDAGsC,CAAC,CAAC,IAAI;qDACL,CAAC,CAAC,IAAI;;;GAGxD;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;;;2CAGyB,CAAC,CAAC,IAAI;4CACL,CAAC,CAAC,IAAI;;;;;GAK/C;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hair.d.ts","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/hair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAWrD,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAatD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// hair_back renders behind the head
|
|
2
|
+
export const backVariants = {
|
|
3
|
+
long: (c) => `
|
|
4
|
+
<path d="M36,80 Q30,140 45,190 Q70,200 100,200 Q130,200 155,190 Q170,140 164,80Z" fill="${c.hair}" />
|
|
5
|
+
`,
|
|
6
|
+
short: (c) => `
|
|
7
|
+
<path d="M38,80 Q34,120 50,145 Q60,150 70,145 L70,100 Q100,105 130,100 L130,145 Q140,150 150,145 Q166,120 162,80Z" fill="${c.hair}" />
|
|
8
|
+
`,
|
|
9
|
+
ponytail: (c) => `
|
|
10
|
+
<path d="M36,80 Q30,120 45,150 L55,140 L55,100 Q100,105 145,100 L145,140 L155,150 Q170,120 164,80Z" fill="${c.hair}" />
|
|
11
|
+
<path d="M135,60 Q160,65 155,120 Q150,170 145,190 Q142,180 140,170 Q145,130 142,80 Q140,65 135,60Z" fill="${c.hair}" />
|
|
12
|
+
`,
|
|
13
|
+
};
|
|
14
|
+
// hair_front renders on top of everything
|
|
15
|
+
export const frontVariants = {
|
|
16
|
+
bangs: (c) => `
|
|
17
|
+
<path d="M40,82 Q45,55 70,48 Q90,44 100,46 Q110,44 130,48 Q155,55 160,82 L155,78 Q140,65 120,62 Q100,60 80,62 Q60,65 45,78Z" fill="${c.hair}" />
|
|
18
|
+
`,
|
|
19
|
+
side_swept: (c) => `
|
|
20
|
+
<path d="M40,82 Q42,50 80,42 Q100,38 115,42 Q100,50 90,62 Q85,70 82,82Z" fill="${c.hair}" />
|
|
21
|
+
<path d="M115,42 Q145,48 158,78 L155,75 Q142,58 120,50Z" fill="${c.hair}" />
|
|
22
|
+
`,
|
|
23
|
+
curtain: (c) => `
|
|
24
|
+
<path d="M40,82 Q45,50 75,42 L78,68 Q82,78 80,82Z" fill="${c.hair}" />
|
|
25
|
+
<path d="M125,42 Q155,50 160,82 L120,82 Q118,78 122,68Z" fill="${c.hair}" />
|
|
26
|
+
<path d="M75,42 Q100,36 125,42 Q110,46 100,44 Q90,46 75,42Z" fill="${c.hair}" />
|
|
27
|
+
`,
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=hair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hair.js","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/hair.ts"],"names":[],"mappings":"AAEA,oCAAoC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAiC;IACxD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;8FAC+E,CAAC,CAAC,IAAI;GACjG;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;+HAC+G,CAAC,CAAC,IAAI;GAClI;IACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;gHAC6F,CAAC,CAAC,IAAI;gHACN,CAAC,CAAC,IAAI;GACnH;CACF,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;yIACyH,CAAC,CAAC,IAAI;GAC5I;IACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;qFACgE,CAAC,CAAC,IAAI;qEACtB,CAAC,CAAC,IAAI;GACxE;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;+DAC6C,CAAC,CAAC,IAAI;qEACA,CAAC,CAAC,IAAI;yEACF,CAAC,CAAC,IAAI;GAC5E;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"head.d.ts","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/head.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAajD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const variants = {
|
|
2
|
+
round: (c) => `
|
|
3
|
+
<ellipse cx="100" cy="108" rx="62" ry="68" fill="${c.skin}" />
|
|
4
|
+
<ellipse cx="100" cy="108" rx="62" ry="68" fill="none" stroke="#00000020" stroke-width="1" />
|
|
5
|
+
`,
|
|
6
|
+
oval: (c) => `
|
|
7
|
+
<ellipse cx="100" cy="105" rx="58" ry="72" fill="${c.skin}" />
|
|
8
|
+
<ellipse cx="100" cy="105" rx="58" ry="72" fill="none" stroke="#00000020" stroke-width="1" />
|
|
9
|
+
`,
|
|
10
|
+
soft: (c) => `
|
|
11
|
+
<path d="M38,108 Q38,36 100,36 Q162,36 162,108 Q162,176 100,180 Q38,176 38,108Z" fill="${c.skin}" />
|
|
12
|
+
<path d="M38,108 Q38,36 100,36 Q162,36 162,108 Q162,176 100,180 Q38,176 38,108Z" fill="none" stroke="#00000020" stroke-width="1" />
|
|
13
|
+
`,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=head.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"head.js","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/head.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiC;IACpD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;uDACuC,CAAC,CAAC,IAAI;;GAE1D;IACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;uDACwC,CAAC,CAAC,IAAI;;GAE1D;IACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;6FAC8E,CAAC,CAAC,IAAI;;GAEhG;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouth.d.ts","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/mouth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAUjD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const variants = {
|
|
2
|
+
smile: () => `
|
|
3
|
+
<path d="M88,138 Q100,150 112,138" stroke="#C0756B" stroke-width="2" fill="none" stroke-linecap="round" />
|
|
4
|
+
`,
|
|
5
|
+
open: () => `
|
|
6
|
+
<path d="M88,136 Q100,152 112,136" stroke="#C0756B" stroke-width="2" fill="#F4A0A0" stroke-linecap="round" />
|
|
7
|
+
`,
|
|
8
|
+
cat: () => `
|
|
9
|
+
<path d="M92,138 L100,142 L108,138" stroke="#C0756B" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
10
|
+
`,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=mouth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouth.js","sourceRoot":"","sources":["../../../../src/styles/chibi/parts/mouth.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiC;IACpD,KAAK,EAAE,GAAG,EAAE,CAAC;;GAEZ;IACD,IAAI,EAAE,GAAG,EAAE,CAAC;;GAEX;IACD,GAAG,EAAE,GAAG,EAAE,CAAC;;GAEV;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../src/styles/cyberpunk/defs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAgB,aAAa,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAyEvD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export function cyberpunkDefs(c) {
|
|
2
|
+
const neon = c.neon ?? "#00E5FF";
|
|
3
|
+
const accent = c.accent ?? "#4A4A5A";
|
|
4
|
+
return `
|
|
5
|
+
<defs>
|
|
6
|
+
<!-- Neon glow: soft outer bloom -->
|
|
7
|
+
<filter id="neon-glow" x="-50%" y="-50%" width="200%" height="200%">
|
|
8
|
+
<feGaussianBlur in="SourceGraphic" stdDeviation="6" result="blur" />
|
|
9
|
+
<feFlood flood-color="${neon}" flood-opacity="0.6" result="color" />
|
|
10
|
+
<feComposite in="color" in2="blur" operator="in" result="glow" />
|
|
11
|
+
<feMerge>
|
|
12
|
+
<feMergeNode in="glow" />
|
|
13
|
+
<feMergeNode in="glow" />
|
|
14
|
+
<feMergeNode in="SourceGraphic" />
|
|
15
|
+
</feMerge>
|
|
16
|
+
</filter>
|
|
17
|
+
|
|
18
|
+
<!-- Subtle glow for secondary elements -->
|
|
19
|
+
<filter id="soft-glow" x="-30%" y="-30%" width="160%" height="160%">
|
|
20
|
+
<feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur" />
|
|
21
|
+
<feMerge>
|
|
22
|
+
<feMergeNode in="blur" />
|
|
23
|
+
<feMergeNode in="SourceGraphic" />
|
|
24
|
+
</feMerge>
|
|
25
|
+
</filter>
|
|
26
|
+
|
|
27
|
+
<!-- Scanline overlay pattern -->
|
|
28
|
+
<pattern id="scanlines" patternUnits="userSpaceOnUse" width="400" height="4">
|
|
29
|
+
<rect width="400" height="2" fill="black" opacity="0.08" />
|
|
30
|
+
</pattern>
|
|
31
|
+
|
|
32
|
+
<!-- Noise grain texture -->
|
|
33
|
+
<filter id="noise-texture" x="0%" y="0%" width="100%" height="100%">
|
|
34
|
+
<feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="4" result="noise" />
|
|
35
|
+
<feColorMatrix type="saturate" values="0" in="noise" result="gray" />
|
|
36
|
+
<feBlend in="SourceGraphic" in2="gray" mode="overlay" />
|
|
37
|
+
</filter>
|
|
38
|
+
|
|
39
|
+
<!-- Neon linear gradient (vertical) -->
|
|
40
|
+
<linearGradient id="gradient-neon" x1="0" y1="0" x2="0" y2="1">
|
|
41
|
+
<stop offset="0%" stop-color="${neon}" />
|
|
42
|
+
<stop offset="100%" stop-color="${accent}" />
|
|
43
|
+
</linearGradient>
|
|
44
|
+
|
|
45
|
+
<!-- Hair sheen gradient -->
|
|
46
|
+
<linearGradient id="gradient-hair-sheen" x1="0" y1="0" x2="1" y2="1">
|
|
47
|
+
<stop offset="0%" stop-color="white" stop-opacity="0.15" />
|
|
48
|
+
<stop offset="50%" stop-color="white" stop-opacity="0" />
|
|
49
|
+
<stop offset="100%" stop-color="white" stop-opacity="0.08" />
|
|
50
|
+
</linearGradient>
|
|
51
|
+
|
|
52
|
+
<!-- Skin highlight gradient (radial) -->
|
|
53
|
+
<radialGradient id="gradient-skin-highlight" cx="0.4" cy="0.35" r="0.6">
|
|
54
|
+
<stop offset="0%" stop-color="white" stop-opacity="0.12" />
|
|
55
|
+
<stop offset="100%" stop-color="white" stop-opacity="0" />
|
|
56
|
+
</radialGradient>
|
|
57
|
+
|
|
58
|
+
<!-- Metal surface gradient -->
|
|
59
|
+
<linearGradient id="gradient-metal" x1="0" y1="0" x2="0" y2="1">
|
|
60
|
+
<stop offset="0%" stop-color="${accent}" />
|
|
61
|
+
<stop offset="40%" stop-color="#888898" />
|
|
62
|
+
<stop offset="60%" stop-color="#555565" />
|
|
63
|
+
<stop offset="100%" stop-color="${accent}" />
|
|
64
|
+
</linearGradient>
|
|
65
|
+
|
|
66
|
+
<!-- Eye glow radial -->
|
|
67
|
+
<radialGradient id="gradient-eye-glow" cx="0.5" cy="0.5" r="0.5">
|
|
68
|
+
<stop offset="0%" stop-color="${c.eyes}" stop-opacity="1" />
|
|
69
|
+
<stop offset="60%" stop-color="${c.eyes}" stop-opacity="0.6" />
|
|
70
|
+
<stop offset="100%" stop-color="${c.eyes}" stop-opacity="0" />
|
|
71
|
+
</radialGradient>
|
|
72
|
+
</defs>`;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=defs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../src/styles/cyberpunk/defs.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,CAAiB;IAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;IAErC,OAAO;;;;;8BAKqB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAgCI,IAAI;wCACF,MAAM;;;;;;;;;;;;;;;;;;sCAkBR,MAAM;;;wCAGJ,MAAM;;;;;sCAKR,CAAC,CAAC,IAAI;uCACL,CAAC,CAAC,IAAI;wCACL,CAAC,CAAC,IAAI;;UAEpC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/styles/cyberpunk/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA6B/C,eAAO,MAAM,cAAc,EAAE,WA0D5B,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { cyberpunkPalettes } from "./palettes.js";
|
|
2
|
+
import { cyberpunkDefs } from "./defs.js";
|
|
3
|
+
import { variants as backgroundVariants } from "./parts/background.js";
|
|
4
|
+
import { variants as headVariants } from "./parts/head.js";
|
|
5
|
+
import { variants as eyeVariants } from "./parts/eyes.js";
|
|
6
|
+
import { variants as eyebrowVariants } from "./parts/eyebrows.js";
|
|
7
|
+
import { variants as mouthVariants } from "./parts/mouth.js";
|
|
8
|
+
import { backVariants as hairBackVariants, frontVariants as hairFrontVariants } from "./parts/hair.js";
|
|
9
|
+
import { variants as faceModVariants } from "./parts/face_mods.js";
|
|
10
|
+
import { variants as clothingVariants } from "./parts/clothing.js";
|
|
11
|
+
import { variants as accessoryVariants } from "./parts/accessories.js";
|
|
12
|
+
import { variants as effectVariants } from "./parts/effects.js";
|
|
13
|
+
const partMap = {
|
|
14
|
+
background: backgroundVariants,
|
|
15
|
+
head: headVariants,
|
|
16
|
+
eyes: eyeVariants,
|
|
17
|
+
eyebrows: eyebrowVariants,
|
|
18
|
+
mouth: mouthVariants,
|
|
19
|
+
hair_back: hairBackVariants,
|
|
20
|
+
hair_front: hairFrontVariants,
|
|
21
|
+
face_mods: faceModVariants,
|
|
22
|
+
clothing: clothingVariants,
|
|
23
|
+
accessories: accessoryVariants,
|
|
24
|
+
effects: effectVariants,
|
|
25
|
+
};
|
|
26
|
+
export const cyberpunkStyle = {
|
|
27
|
+
name: "cyberpunk",
|
|
28
|
+
meta: {
|
|
29
|
+
title: "Cyberpunk",
|
|
30
|
+
author: "MCP Avatar Builder",
|
|
31
|
+
license: "MIT",
|
|
32
|
+
},
|
|
33
|
+
categories: [
|
|
34
|
+
{ name: "background", variants: Object.keys(backgroundVariants), default: 0 },
|
|
35
|
+
{ name: "head", variants: Object.keys(headVariants), default: 0 },
|
|
36
|
+
{ name: "eyes", variants: Object.keys(eyeVariants), default: 0 },
|
|
37
|
+
{ name: "eyebrows", variants: Object.keys(eyebrowVariants), default: 0 },
|
|
38
|
+
{ name: "mouth", variants: Object.keys(mouthVariants), default: 0 },
|
|
39
|
+
{ name: "hair_back", variants: Object.keys(hairBackVariants), default: 0 },
|
|
40
|
+
{ name: "hair_front", variants: Object.keys(hairFrontVariants), default: 0 },
|
|
41
|
+
{ name: "face_mods", variants: Object.keys(faceModVariants), default: 0 },
|
|
42
|
+
{ name: "clothing", variants: Object.keys(clothingVariants), default: 0 },
|
|
43
|
+
{ name: "accessories", variants: Object.keys(accessoryVariants), default: 0, optional: true },
|
|
44
|
+
{ name: "effects", variants: Object.keys(effectVariants), default: 0, optional: true },
|
|
45
|
+
],
|
|
46
|
+
palettes: cyberpunkPalettes,
|
|
47
|
+
layerOrder: [
|
|
48
|
+
"background",
|
|
49
|
+
"hair_back",
|
|
50
|
+
"clothing",
|
|
51
|
+
"head",
|
|
52
|
+
"face_mods",
|
|
53
|
+
"eyes",
|
|
54
|
+
"eyebrows",
|
|
55
|
+
"mouth",
|
|
56
|
+
"accessories",
|
|
57
|
+
"hair_front",
|
|
58
|
+
"effects",
|
|
59
|
+
],
|
|
60
|
+
viewBox: "0 0 400 400",
|
|
61
|
+
render(options, colors) {
|
|
62
|
+
const fragments = [];
|
|
63
|
+
// Emit SVG defs block first (filters, gradients)
|
|
64
|
+
fragments.push(cyberpunkDefs(colors));
|
|
65
|
+
for (const layer of this.layerOrder) {
|
|
66
|
+
const category = this.categories.find((cat) => cat.name === layer);
|
|
67
|
+
if (!category)
|
|
68
|
+
continue;
|
|
69
|
+
const selectedVariant = options.parts?.[layer] ?? category.variants[category.default];
|
|
70
|
+
const variants = partMap[layer];
|
|
71
|
+
if (!variants)
|
|
72
|
+
continue;
|
|
73
|
+
const renderer = variants[selectedVariant];
|
|
74
|
+
if (!renderer)
|
|
75
|
+
continue;
|
|
76
|
+
fragments.push(`<g data-layer="${layer}">${renderer(colors)}</g>`);
|
|
77
|
+
}
|
|
78
|
+
return fragments.join("\n");
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/styles/cyberpunk/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palettes.d.ts","sourceRoot":"","sources":["../../../src/styles/cyberpunk/palettes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,EAAE,UAyC/B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const cyberpunkPalettes = {
|
|
2
|
+
skin: [
|
|
3
|
+
{ name: "pale-tech", value: "#D4C5B9" },
|
|
4
|
+
{ name: "porcelain", value: "#E8D5C4" },
|
|
5
|
+
{ name: "tan", value: "#C4A882" },
|
|
6
|
+
{ name: "bronze", value: "#A07850" },
|
|
7
|
+
{ name: "dark", value: "#6B4C3B" },
|
|
8
|
+
{ name: "deep", value: "#3D2B1F" },
|
|
9
|
+
],
|
|
10
|
+
hair: [
|
|
11
|
+
{ name: "jet-black", value: "#0A0A12" },
|
|
12
|
+
{ name: "chrome", value: "#C0C0D0" },
|
|
13
|
+
{ name: "neon-pink", value: "#FF2D95" },
|
|
14
|
+
{ name: "electric-blue", value: "#00D4FF" },
|
|
15
|
+
{ name: "toxic-green", value: "#39FF14" },
|
|
16
|
+
{ name: "white", value: "#F0EEF2" },
|
|
17
|
+
{ name: "purple", value: "#BF00FF" },
|
|
18
|
+
{ name: "red", value: "#FF1744" },
|
|
19
|
+
],
|
|
20
|
+
eyes: [
|
|
21
|
+
{ name: "amber-led", value: "#FFAB00" },
|
|
22
|
+
{ name: "cyan", value: "#00E5FF" },
|
|
23
|
+
{ name: "red", value: "#FF1744" },
|
|
24
|
+
{ name: "white", value: "#E0E0E0" },
|
|
25
|
+
{ name: "green-circuit", value: "#00E676" },
|
|
26
|
+
{ name: "chrome", value: "#B0BEC5" },
|
|
27
|
+
],
|
|
28
|
+
neon: [
|
|
29
|
+
{ name: "hot-pink", value: "#FF2D95" },
|
|
30
|
+
{ name: "cyan", value: "#00E5FF" },
|
|
31
|
+
{ name: "yellow", value: "#FFE100" },
|
|
32
|
+
{ name: "purple", value: "#BF00FF" },
|
|
33
|
+
{ name: "green", value: "#39FF14" },
|
|
34
|
+
{ name: "orange", value: "#FF6D00" },
|
|
35
|
+
],
|
|
36
|
+
accent: [
|
|
37
|
+
{ name: "chrome", value: "#C0C0D0" },
|
|
38
|
+
{ name: "gunmetal", value: "#4A4A5A" },
|
|
39
|
+
{ name: "matte-black", value: "#1A1A2E" },
|
|
40
|
+
{ name: "brushed-steel", value: "#8888A0" },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=palettes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palettes.js","sourceRoot":"","sources":["../../../src/styles/cyberpunk/palettes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,IAAI,EAAE;QACJ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;KACnC;IACD,IAAI,EAAE;QACJ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;QACzC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;QACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;KAClC;IACD,IAAI,EAAE;QACJ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;QACnC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;KACrC;IACD,IAAI,EAAE;QACJ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;QACtC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;QACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;KACrC;IACD,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;QACtC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;QACzC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;KAC5C;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessories.d.ts","sourceRoot":"","sources":["../../../../src/styles/cyberpunk/parts/accessories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA6EjD,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export const variants = {
|
|
2
|
+
none: () => "",
|
|
3
|
+
headset: (c) => {
|
|
4
|
+
const accent = c.accent ?? "#4A4A5A";
|
|
5
|
+
const neon = c.neon ?? "#00E5FF";
|
|
6
|
+
return `
|
|
7
|
+
<!-- Headset band over top of head -->
|
|
8
|
+
<path d="
|
|
9
|
+
M140,175 Q138,140 145,120 Q158,95 200,88 Q242,95 255,120
|
|
10
|
+
Q262,140 260,175
|
|
11
|
+
" fill="none" stroke="${accent}" stroke-width="5" stroke-linecap="round" />
|
|
12
|
+
<!-- Band highlight -->
|
|
13
|
+
<path d="
|
|
14
|
+
M142,175 Q140,142 147,122 Q160,98 200,91 Q240,98 253,122
|
|
15
|
+
Q260,142 258,175
|
|
16
|
+
" fill="none" stroke="white" stroke-width="0.8" opacity="0.08" />
|
|
17
|
+
<!-- Left ear cup -->
|
|
18
|
+
<ellipse cx="137" cy="200" rx="12" ry="18" fill="${accent}" />
|
|
19
|
+
<ellipse cx="137" cy="200" rx="12" ry="18" fill="url(#gradient-metal)" opacity="0.4" />
|
|
20
|
+
<ellipse cx="137" cy="200" rx="8" ry="14" fill="#1A1A2E" />
|
|
21
|
+
<!-- Right ear cup -->
|
|
22
|
+
<ellipse cx="263" cy="200" rx="12" ry="18" fill="${accent}" />
|
|
23
|
+
<ellipse cx="263" cy="200" rx="12" ry="18" fill="url(#gradient-metal)" opacity="0.4" />
|
|
24
|
+
<ellipse cx="263" cy="200" rx="8" ry="14" fill="#1A1A2E" />
|
|
25
|
+
<!-- Boom mic arm from left cup -->
|
|
26
|
+
<path d="M132,212 Q128,230 140,248 Q150,258 160,260"
|
|
27
|
+
stroke="${accent}" stroke-width="2.5" fill="none" stroke-linecap="round" />
|
|
28
|
+
<!-- Mic head -->
|
|
29
|
+
<ellipse cx="162" cy="261" rx="5" ry="4" fill="${accent}" />
|
|
30
|
+
<ellipse cx="162" cy="261" rx="3" ry="2.5" fill="#1A1A2E" />
|
|
31
|
+
<!-- LED on ear cup -->
|
|
32
|
+
<circle cx="137" cy="192" r="1.5" fill="${neon}" opacity="0.6" />
|
|
33
|
+
<circle cx="263" cy="192" r="1.5" fill="${neon}" opacity="0.6" />
|
|
34
|
+
`;
|
|
35
|
+
},
|
|
36
|
+
holo_visor: (c) => {
|
|
37
|
+
const neon = c.neon ?? "#00E5FF";
|
|
38
|
+
const accent = c.accent ?? "#4A4A5A";
|
|
39
|
+
return `
|
|
40
|
+
<!-- Holographic monocle visor — single lens over right eye -->
|
|
41
|
+
<!-- Mounting arm from right temple -->
|
|
42
|
+
<path d="M252,170 Q258,172 262,178 Q264,185 260,190"
|
|
43
|
+
stroke="${accent}" stroke-width="2.5" fill="none" />
|
|
44
|
+
<!-- Hinge -->
|
|
45
|
+
<circle cx="252" cy="170" r="2.5" fill="${accent}" />
|
|
46
|
+
<circle cx="252" cy="170" r="1.5" fill="#333345" />
|
|
47
|
+
<!-- Visor lens frame -->
|
|
48
|
+
<path d="
|
|
49
|
+
M215,185 L255,185 Q262,185 262,192 L262,212 Q262,219 255,219
|
|
50
|
+
L215,219 Q208,219 208,212 L208,192 Q208,185 215,219Z
|
|
51
|
+
" fill="none" />
|
|
52
|
+
<!-- Holographic lens (translucent) -->
|
|
53
|
+
<rect x="210" y="186" width="50" height="32" rx="4" fill="${neon}" opacity="0.08" />
|
|
54
|
+
<rect x="210" y="186" width="50" height="32" rx="4" fill="none" stroke="${neon}" stroke-width="0.8" opacity="0.35" />
|
|
55
|
+
<!-- HUD readout lines -->
|
|
56
|
+
<g stroke="${neon}" stroke-width="0.5" opacity="0.25">
|
|
57
|
+
<line x1="215" y1="193" x2="235" y2="193" />
|
|
58
|
+
<line x1="215" y1="198" x2="248" y2="198" />
|
|
59
|
+
<line x1="215" y1="203" x2="240" y2="203" />
|
|
60
|
+
<line x1="215" y1="208" x2="230" y2="208" />
|
|
61
|
+
</g>
|
|
62
|
+
<!-- HUD data blocks -->
|
|
63
|
+
<rect x="242" y="191" width="12" height="8" fill="${neon}" opacity="0.06" />
|
|
64
|
+
<rect x="240" y="205" width="15" height="6" fill="${neon}" opacity="0.04" />
|
|
65
|
+
<!-- Lens corner brackets -->
|
|
66
|
+
<g stroke="${neon}" stroke-width="0.6" fill="none" opacity="0.3">
|
|
67
|
+
<path d="M213,189 L213,192 L216,192" />
|
|
68
|
+
<path d="M257,189 L257,192 L254,192" />
|
|
69
|
+
<path d="M213,215 L213,212 L216,212" />
|
|
70
|
+
<path d="M257,215 L257,212 L254,212" />
|
|
71
|
+
</g>
|
|
72
|
+
<!-- Mounting arm LED -->
|
|
73
|
+
<circle cx="260" cy="190" r="1.2" fill="${neon}" opacity="0.5" />
|
|
74
|
+
`;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=accessories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessories.js","sourceRoot":"","sources":["../../../../src/styles/cyberpunk/parts/accessories.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiC;IACpD,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;IAEd,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;QACjC,OAAO;;;;;4BAKiB,MAAM;;;;;;;uDAOqB,MAAM;;;;uDAIN,MAAM;;;;;gBAK7C,MAAM;;qDAE+B,MAAM;;;8CAGb,IAAI;8CACJ,IAAI;KAC7C,CAAC;IACJ,CAAC;IAED,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;QACrC,OAAO;;;;gBAIK,MAAM;;8CAEwB,MAAM;;;;;;;;gEAQY,IAAI;8EACU,IAAI;;iBAEjE,IAAI;;;;;;;wDAOmC,IAAI;wDACJ,IAAI;;iBAE3C,IAAI;;;;;;;8CAOyB,IAAI;KAC7C,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../../src/styles/cyberpunk/parts/background.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAoIjD,CAAC"}
|