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.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +163 -0
  3. package/build/composer.d.ts +4 -0
  4. package/build/composer.d.ts.map +1 -0
  5. package/build/composer.js +65 -0
  6. package/build/composer.js.map +1 -0
  7. package/build/index.d.ts +3 -0
  8. package/build/index.d.ts.map +1 -0
  9. package/build/index.js +7 -0
  10. package/build/index.js.map +1 -0
  11. package/build/rasterizer.d.ts +2 -0
  12. package/build/rasterizer.d.ts.map +1 -0
  13. package/build/rasterizer.js +12 -0
  14. package/build/rasterizer.js.map +1 -0
  15. package/build/server.d.ts +3 -0
  16. package/build/server.d.ts.map +1 -0
  17. package/build/server.js +118 -0
  18. package/build/server.js.map +1 -0
  19. package/build/styles/chibi/index.d.ts +3 -0
  20. package/build/styles/chibi/index.d.ts.map +1 -0
  21. package/build/styles/chibi/index.js +57 -0
  22. package/build/styles/chibi/index.js.map +1 -0
  23. package/build/styles/chibi/palettes.d.ts +3 -0
  24. package/build/styles/chibi/palettes.d.ts.map +1 -0
  25. package/build/styles/chibi/palettes.js +29 -0
  26. package/build/styles/chibi/palettes.js.map +1 -0
  27. package/build/styles/chibi/parts/accessories.d.ts +3 -0
  28. package/build/styles/chibi/parts/accessories.d.ts.map +1 -0
  29. package/build/styles/chibi/parts/accessories.js +18 -0
  30. package/build/styles/chibi/parts/accessories.js.map +1 -0
  31. package/build/styles/chibi/parts/clothing.d.ts +3 -0
  32. package/build/styles/chibi/parts/clothing.d.ts.map +1 -0
  33. package/build/styles/chibi/parts/clothing.js +21 -0
  34. package/build/styles/chibi/parts/clothing.js.map +1 -0
  35. package/build/styles/chibi/parts/eyebrows.d.ts +3 -0
  36. package/build/styles/chibi/parts/eyebrows.d.ts.map +1 -0
  37. package/build/styles/chibi/parts/eyebrows.js +15 -0
  38. package/build/styles/chibi/parts/eyebrows.js.map +1 -0
  39. package/build/styles/chibi/parts/eyes.d.ts +3 -0
  40. package/build/styles/chibi/parts/eyes.d.ts.map +1 -0
  41. package/build/styles/chibi/parts/eyes.js +29 -0
  42. package/build/styles/chibi/parts/eyes.js.map +1 -0
  43. package/build/styles/chibi/parts/hair.d.ts +4 -0
  44. package/build/styles/chibi/parts/hair.d.ts.map +1 -0
  45. package/build/styles/chibi/parts/hair.js +29 -0
  46. package/build/styles/chibi/parts/hair.js.map +1 -0
  47. package/build/styles/chibi/parts/head.d.ts +3 -0
  48. package/build/styles/chibi/parts/head.d.ts.map +1 -0
  49. package/build/styles/chibi/parts/head.js +15 -0
  50. package/build/styles/chibi/parts/head.js.map +1 -0
  51. package/build/styles/chibi/parts/mouth.d.ts +3 -0
  52. package/build/styles/chibi/parts/mouth.d.ts.map +1 -0
  53. package/build/styles/chibi/parts/mouth.js +12 -0
  54. package/build/styles/chibi/parts/mouth.js.map +1 -0
  55. package/build/styles/cyberpunk/defs.d.ts +3 -0
  56. package/build/styles/cyberpunk/defs.d.ts.map +1 -0
  57. package/build/styles/cyberpunk/defs.js +74 -0
  58. package/build/styles/cyberpunk/defs.js.map +1 -0
  59. package/build/styles/cyberpunk/index.d.ts +3 -0
  60. package/build/styles/cyberpunk/index.d.ts.map +1 -0
  61. package/build/styles/cyberpunk/index.js +81 -0
  62. package/build/styles/cyberpunk/index.js.map +1 -0
  63. package/build/styles/cyberpunk/palettes.d.ts +3 -0
  64. package/build/styles/cyberpunk/palettes.d.ts.map +1 -0
  65. package/build/styles/cyberpunk/palettes.js +43 -0
  66. package/build/styles/cyberpunk/palettes.js.map +1 -0
  67. package/build/styles/cyberpunk/parts/accessories.d.ts +3 -0
  68. package/build/styles/cyberpunk/parts/accessories.d.ts.map +1 -0
  69. package/build/styles/cyberpunk/parts/accessories.js +77 -0
  70. package/build/styles/cyberpunk/parts/accessories.js.map +1 -0
  71. package/build/styles/cyberpunk/parts/background.d.ts +3 -0
  72. package/build/styles/cyberpunk/parts/background.d.ts.map +1 -0
  73. package/build/styles/cyberpunk/parts/background.js +132 -0
  74. package/build/styles/cyberpunk/parts/background.js.map +1 -0
  75. package/build/styles/cyberpunk/parts/clothing.d.ts +3 -0
  76. package/build/styles/cyberpunk/parts/clothing.d.ts.map +1 -0
  77. package/build/styles/cyberpunk/parts/clothing.js +137 -0
  78. package/build/styles/cyberpunk/parts/clothing.js.map +1 -0
  79. package/build/styles/cyberpunk/parts/effects.d.ts +3 -0
  80. package/build/styles/cyberpunk/parts/effects.d.ts.map +1 -0
  81. package/build/styles/cyberpunk/parts/effects.js +33 -0
  82. package/build/styles/cyberpunk/parts/effects.js.map +1 -0
  83. package/build/styles/cyberpunk/parts/eyebrows.d.ts +3 -0
  84. package/build/styles/cyberpunk/parts/eyebrows.d.ts.map +1 -0
  85. package/build/styles/cyberpunk/parts/eyebrows.js +15 -0
  86. package/build/styles/cyberpunk/parts/eyebrows.js.map +1 -0
  87. package/build/styles/cyberpunk/parts/eyes.d.ts +3 -0
  88. package/build/styles/cyberpunk/parts/eyes.d.ts.map +1 -0
  89. package/build/styles/cyberpunk/parts/eyes.js +110 -0
  90. package/build/styles/cyberpunk/parts/eyes.js.map +1 -0
  91. package/build/styles/cyberpunk/parts/face_mods.d.ts +3 -0
  92. package/build/styles/cyberpunk/parts/face_mods.d.ts.map +1 -0
  93. package/build/styles/cyberpunk/parts/face_mods.js +105 -0
  94. package/build/styles/cyberpunk/parts/face_mods.js.map +1 -0
  95. package/build/styles/cyberpunk/parts/hair.d.ts +4 -0
  96. package/build/styles/cyberpunk/parts/hair.d.ts.map +1 -0
  97. package/build/styles/cyberpunk/parts/hair.js +175 -0
  98. package/build/styles/cyberpunk/parts/hair.js.map +1 -0
  99. package/build/styles/cyberpunk/parts/head.d.ts +3 -0
  100. package/build/styles/cyberpunk/parts/head.d.ts.map +1 -0
  101. package/build/styles/cyberpunk/parts/head.js +158 -0
  102. package/build/styles/cyberpunk/parts/head.js.map +1 -0
  103. package/build/styles/cyberpunk/parts/mouth.d.ts +3 -0
  104. package/build/styles/cyberpunk/parts/mouth.d.ts.map +1 -0
  105. package/build/styles/cyberpunk/parts/mouth.js +71 -0
  106. package/build/styles/cyberpunk/parts/mouth.js.map +1 -0
  107. package/build/styles/index.d.ts +4 -0
  108. package/build/styles/index.d.ts.map +1 -0
  109. package/build/styles/index.js +15 -0
  110. package/build/styles/index.js.map +1 -0
  111. package/build/styles/style.d.ts +15 -0
  112. package/build/styles/style.d.ts.map +1 -0
  113. package/build/styles/style.js +2 -0
  114. package/build/styles/style.js.map +1 -0
  115. package/build/types.d.ts +37 -0
  116. package/build/types.d.ts.map +1 -0
  117. package/build/types.js +2 -0
  118. package/build/types.js.map +1 -0
  119. package/package.json +40 -0
@@ -0,0 +1,3 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const variants: Record<string, PartRenderer>;
3
+ //# sourceMappingURL=eyebrows.d.ts.map
@@ -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,3 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const variants: Record<string, PartRenderer>;
3
+ //# sourceMappingURL=eyes.d.ts.map
@@ -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,4 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const backVariants: Record<string, PartRenderer>;
3
+ export declare const frontVariants: Record<string, PartRenderer>;
4
+ //# sourceMappingURL=hair.d.ts.map
@@ -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,3 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const variants: Record<string, PartRenderer>;
3
+ //# sourceMappingURL=head.d.ts.map
@@ -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,3 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const variants: Record<string, PartRenderer>;
3
+ //# sourceMappingURL=mouth.d.ts.map
@@ -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,3 @@
1
+ import type { ResolvedColors } from "../../types.js";
2
+ export declare function cyberpunkDefs(c: ResolvedColors): string;
3
+ //# sourceMappingURL=defs.d.ts.map
@@ -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,3 @@
1
+ import type { AvatarStyle } from "../style.js";
2
+ export declare const cyberpunkStyle: AvatarStyle;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,OAAO,GAAkE;IAC7E,UAAU,EAAE,kBAAkB;IAC9B,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,cAAc;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE;QACJ,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,KAAK;KACf;IACD,UAAU,EAAE;QACV,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAC7E,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACjE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAChE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACxE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACnE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAC1E,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAC5E,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACzE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACzE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7F,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;KACvF;IACD,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE;QACV,YAAY;QACZ,WAAW;QACX,UAAU;QACV,MAAM;QACN,WAAW;QACX,MAAM;QACN,UAAU;QACV,OAAO;QACP,aAAa;QACb,YAAY;QACZ,SAAS;KACV;IACD,OAAO,EAAE,aAAa;IAEtB,MAAM,CAAC,OAAsB,EAAE,MAAsB;QACnD,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,iDAAiD;QACjD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,SAAS,CAAC,IAAI,CAAC,kBAAkB,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PaletteDef } from "../../types.js";
2
+ export declare const cyberpunkPalettes: PaletteDef;
3
+ //# sourceMappingURL=palettes.d.ts.map
@@ -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,3 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const variants: Record<string, PartRenderer>;
3
+ //# sourceMappingURL=accessories.d.ts.map
@@ -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,3 @@
1
+ import type { PartRenderer } from "../../../types.js";
2
+ export declare const variants: Record<string, PartRenderer>;
3
+ //# sourceMappingURL=background.d.ts.map
@@ -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"}