@dicebear/personas 5.0.0-alpha.2 → 5.0.0-alpha.20

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 (63) hide show
  1. package/LICENSE +1 -1
  2. package/lib/colors/clothing.d.ts +2 -0
  3. package/lib/colors/clothing.js +9 -0
  4. package/lib/colors/hair.d.ts +2 -0
  5. package/lib/colors/hair.js +9 -0
  6. package/lib/colors/index.d.ts +3 -0
  7. package/lib/colors/index.js +3 -0
  8. package/lib/colors/skin.d.ts +2 -0
  9. package/lib/colors/skin.js +10 -0
  10. package/lib/components/body.d.ts +2 -0
  11. package/lib/components/body.js +6 -0
  12. package/lib/components/eyes.d.ts +2 -0
  13. package/lib/components/eyes.js +8 -0
  14. package/lib/components/facialHair.d.ts +2 -0
  15. package/lib/components/facialHair.js +8 -0
  16. package/lib/components/hair.d.ts +2 -0
  17. package/lib/components/hair.js +22 -0
  18. package/lib/components/index.d.ts +6 -0
  19. package/lib/components/index.js +6 -0
  20. package/lib/components/mouth.d.ts +2 -0
  21. package/lib/components/mouth.js +9 -0
  22. package/lib/components/nose.d.ts +2 -0
  23. package/lib/components/nose.js +5 -0
  24. package/{dist → lib}/core.d.ts +3 -3
  25. package/lib/core.js +32 -0
  26. package/{dist → lib}/hooks/onPostCreate.d.ts +10 -12
  27. package/lib/hooks/onPostCreate.js +3 -0
  28. package/lib/hooks/onPreCreate.d.ts +8 -0
  29. package/lib/hooks/onPreCreate.js +3 -0
  30. package/lib/index.d.ts +13 -0
  31. package/lib/index.js +13 -0
  32. package/lib/schema.d.ts +2 -0
  33. package/lib/schema.js +251 -0
  34. package/lib/types.d.ts +28 -0
  35. package/lib/types.js +1 -0
  36. package/{dist → lib}/utils/getColors.d.ts +8 -9
  37. package/lib/utils/getColors.js +20 -0
  38. package/{dist → lib}/utils/getComponents.d.ts +8 -9
  39. package/lib/utils/getComponents.js +43 -0
  40. package/{dist → lib}/utils/pickColor.d.ts +9 -9
  41. package/lib/utils/pickColor.js +13 -0
  42. package/{dist → lib}/utils/pickComponent.d.ts +9 -9
  43. package/lib/utils/pickComponent.js +14 -0
  44. package/package.json +19 -23
  45. package/dist/colors/clothing.d.ts +0 -2
  46. package/dist/colors/hair.d.ts +0 -2
  47. package/dist/colors/index.d.ts +0 -3
  48. package/dist/colors/skin.d.ts +0 -2
  49. package/dist/components/body.d.ts +0 -2
  50. package/dist/components/eyes.d.ts +0 -2
  51. package/dist/components/facialHair.d.ts +0 -2
  52. package/dist/components/hair.d.ts +0 -2
  53. package/dist/components/index.d.ts +0 -6
  54. package/dist/components/mouth.d.ts +0 -2
  55. package/dist/components/nose.d.ts +0 -2
  56. package/dist/hooks/onPreCreate.d.ts +0 -9
  57. package/dist/index.d.ts +0 -13
  58. package/dist/index.es.js +0 -618
  59. package/dist/index.js +0 -625
  60. package/dist/index.umd.js +0 -12
  61. package/dist/meta/components.d.ts +0 -4
  62. package/dist/options.d.ts +0 -17
  63. package/dist/static-types.d.ts +0 -16
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 Florian Körner
3
+ Copyright (c) 2022 Florian Körner
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const clothing: ColorGroup;
@@ -0,0 +1,9 @@
1
+ export const clothing = {
2
+ blue: 'rgba(69, 109, 255, 1)',
3
+ turquoise: 'rgba(84, 215, 199, 1)',
4
+ purple: 'rgba(117, 85, 202, 1)',
5
+ green: 'rgba(109, 187, 88, 1)',
6
+ red: 'rgba(226, 69, 83, 1)',
7
+ yellow: 'rgba(243, 182, 58, 1)',
8
+ pink: 'rgba(245, 93, 129, 1)',
9
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const hair: ColorGroup;
@@ -0,0 +1,9 @@
1
+ export const hair = {
2
+ black: 'rgba(54, 44, 71, 1)',
3
+ brunette: 'rgba(108, 69, 69, 1)',
4
+ red: 'rgba(225, 92, 102, 1)',
5
+ pink: 'rgba(225, 99, 129, 1)',
6
+ copper: 'rgba(242, 125, 101, 1)',
7
+ blonde: 'rgba(242, 156, 101, 1)',
8
+ grey: 'rgba(222, 225, 245, 1)',
9
+ };
@@ -0,0 +1,3 @@
1
+ export { hair } from './hair.js';
2
+ export { clothing } from './clothing.js';
3
+ export { skin } from './skin.js';
@@ -0,0 +1,3 @@
1
+ export { hair } from './hair.js';
2
+ export { clothing } from './clothing.js';
3
+ export { skin } from './skin.js';
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const skin: ColorGroup;
@@ -0,0 +1,10 @@
1
+ export const skin = {
2
+ tone1: 'rgba(238, 180, 164, 1)',
3
+ tone2: 'rgba(231, 163, 145, 1)',
4
+ tone3: 'rgba(229, 160, 126, 1)',
5
+ tone4: 'rgba(215, 135, 116, 1)',
6
+ tone5: 'rgba(177, 106, 91, 1)',
7
+ tone6: 'rgba(146, 89, 75, 1)',
8
+ tone7: 'rgba(98, 61, 54, 1)',
9
+ tone8: 'rgba(201, 230, 220, 1)',
10
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const body: ComponentGroup;
@@ -0,0 +1,6 @@
1
+ export const body = {
2
+ squared: (components, colors) => `<path d="M16 5v3a5 5 0 0 0 10 0V5l6.65 2.05a9 9 0 0 1 6.35 8.6V20H3v-4.35a9 9 0 0 1 6.35-8.6L16 5Z" fill="${colors.clothing.value}"/>`,
3
+ rounded: (components, colors) => `<path d="M16 7v.47a5 5 0 1 0 10 0V7c7.06 1.52 12.93 6.74 16 13H0C3.07 13.74 8.94 8.52 16 7Z" fill="${colors.clothing.value}"/>`,
4
+ small: (components, colors) => `<path d="M32 20H10v-8a11 11 0 0 1 6-9.8V4a5 5 0 0 0 10 0V2.2a11 11 0 0 1 6 9.8v8Z" fill="${colors.clothing.value}"/><mask id="bodySmall-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="10" y="2" width="22" height="18"><path d="M32 20H10v-8a11 11 0 0 1 6-9.8V4a5 5 0 0 0 10 0V2.2a11 11 0 0 1 6 9.8v8Z" fill="#fff"/></mask><g mask="url(#bodySmall-a)"><path opacity=".14" d="M20.62 8.25 22 8l1.2.5L10 15l10.62-6.75Z" fill="#000"/><path d="M21 1h11v47H10V15l13.34-6.58L21 1Z" fill="#fff" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
5
+ checkered: (components, colors) => `<path d="M16 5v3a5 5 0 0 0 10 0V5l6.65 2.05a9 9 0 0 1 6.35 8.6V20H3v-4.35a9 9 0 0 1 6.35-8.6L16 5Z" fill="${colors.clothing.value}"/><mask id="bodyCheckered-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="3" y="5" width="36" height="15"><path d="M16 5v3a5 5 0 0 0 10 0V5l6.65 2.05a9 9 0 0 1 6.35 8.6V20H3v-4.35a9 9 0 0 1 6.35-8.6L16 5Z" fill="#fff"/></mask><g mask="url(#bodyCheckered-a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 20h4V6.54l-1.65.5A9 9 0 0 0 7 8.17V20ZM32.65 7.05 31 6.54V20h4V8.16a9 9 0 0 0-2.35-1.11ZM23 20h4v-8.4a7.02 7.02 0 0 1-4 3.11v5.3Zm-4 0h-4v-8.4a7.02 7.02 0 0 0 4 3.11v5.3Z" fill="#000" style="mix-blend-mode:overlay" opacity=".4"/></g><path d="M3.4 13a9.01 9.01 0 0 1 2.53-4h8.14a6.98 6.98 0 0 0 2.03 4H3.4ZM39 17v3H3v-3h36ZM36.07 9a9.01 9.01 0 0 1 2.53 4H25.9a6.98 6.98 0 0 0 2.03-4h8.14Z" style="mix-blend-mode:lighten" opacity=".18" fill="#fff"/><mask id="bodyCheckered-b" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="3" y="9" width="36" height="11"><path d="M3.4 13a9.01 9.01 0 0 1 2.53-4h8.14a6.98 6.98 0 0 0 2.03 4H3.4ZM39 17v3H3v-3h36ZM36.07 9a9.01 9.01 0 0 1 2.53 4H25.9a6.98 6.98 0 0 0 2.03-4h8.14Z" style="mix-blend-mode:lighten" fill="#fff"/></mask>`,
6
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const eyes: ComponentGroup;
@@ -0,0 +1,8 @@
1
+ export const eyes = {
2
+ open: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M4 4.5a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0Zm13 0a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0Z" fill="#1B0640"/>`,
3
+ sleep: (components, colors) => `<path d="M3.63 4A1 1 0 0 0 4 5.37 4.5 4.5 0 0 0 6.25 6a4.5 4.5 0 0 0 2.25-.63 1 1 0 0 0-1-1.74c-.43.25-.85.37-1.25.37S5.43 3.88 5 3.63A1 1 0 0 0 3.63 4ZM15.63 4A1 1 0 0 0 16 5.37a4.5 4.5 0 0 0 2.25.63 4.5 4.5 0 0 0 2.25-.63 1 1 0 0 0-1-1.74 2.5 2.5 0 0 1-1.25.37c-.4 0-.82-.12-1.25-.37a1 1 0 0 0-1.37.37Z" fill="#1B0640"/>`,
4
+ wink: (components, colors) => `<path d="M4 4.5a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0ZM21.24 3.9a.75.75 0 0 0-.83-.64l-4 .5a.75.75 0 0 0 .18 1.48l4-.5c.41-.05.7-.42.65-.83Z" fill="#1B0640"/>`,
5
+ glasses: (components, colors) => `<path d="M6 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM18 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" fill="#1B0640"/><path d="M9 2H3v6h6V2ZM21 2h-6v6h6V2Z" opacity=".3" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M11 1.05h2c.65 0 1.21-.2 1.84-.42C15.66.33 16.6 0 18 0c1.67 0 3.33.35 5 1.05l1 .53v1.58l-1 .52v3.16A3.08 3.08 0 0 1 20 10h-4c-1.66 0-3-1.41-3-3.16V3.16h-2v3.68A3.08 3.08 0 0 1 8 10H4c-1.66 0-3-1.41-3-3.16V3.68l-1-.52V1.58l1-.53A12.8 12.8 0 0 1 6 0c1.4 0 2.34.33 3.16.63.63.22 1.19.42 1.84.42ZM8.24 2.52A6.1 6.1 0 0 0 6 2.11c-1 0-2 .14-3 .44v4.3c0 .57.45 1.04 1 1.04h4c.55 0 1-.47 1-1.05V2.8l-.76-.27ZM15 2.8l.76-.27A6.1 6.1 0 0 1 18 2.11c1 0 2 .14 3 .44v4.3c0 .57-.45 1.04-1 1.04h-4c-.55 0-1-.47-1-1.05V2.8Z" fill="#1B0640"/>`,
6
+ happy: (components, colors) => `<path d="M3.76 6.21c.4.13.82-.08.95-.47.23-.7.62-1 1.3-1 .66 0 1.05.3 1.28 1a.75.75 0 1 0 1.42-.48c-.43-1.3-1.38-2.01-2.7-2.01-1.34 0-2.29.71-2.72 2.01-.13.4.08.82.47.95ZM15.76 6.21c.4.13.82-.08.95-.47.23-.7.62-1 1.29-1s1.06.3 1.29 1a.75.75 0 1 0 1.42-.48c-.43-1.3-1.38-2.01-2.71-2.01s-2.28.71-2.71 2.01c-.13.4.08.82.47.95Z" fill="#1B0640"/>`,
7
+ sunglasses: (components, colors) => `<g fill="#1B0640"><path d="M6 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM18 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"/><path d="M9 2H3v6h6V2ZM21 2h-6v6h6V2Z" opacity=".8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13 1.05c.65 0 1.21-.2 1.84-.42C15.66.33 16.6 0 18 0c1.67 0 3.33.35 5 1.05l1 .53v1.58l-1 .52v3.16A3.08 3.08 0 0 1 20 10h-4c-1.66 0-3-1.41-3-3.16V3.16h-2v3.68A3.08 3.08 0 0 1 8 10H4c-1.66 0-3-1.41-3-3.16V3.68l-1-.52V1.58l1-.53A12.8 12.8 0 0 1 6 0c1.4 0 2.34.33 3.16.63.63.22 1.19.42 1.84.42h2ZM8.24 2.52A6.1 6.1 0 0 0 6 2.11c-1 0-2 .14-3 .44v4.3c0 .57.45 1.04 1 1.04h4c.55 0 1-.47 1-1.05V2.8l-.76-.27ZM15 2.8l.76-.27A6.1 6.1 0 0 1 18 2.11c1 0 2 .14 3 .44v4.3c0 .57-.45 1.04-1 1.04h-4c-.55 0-1-.47-1-1.05V2.8Z"/></g>`,
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const facialHair: ComponentGroup;
@@ -0,0 +1,8 @@
1
+ export const facialHair = {
2
+ beardMustache: (components, colors) => `<path d="m12.47 9.46 2.43-.83A2.5 2.5 0 0 1 18 10a2.5 2.5 0 0 1 3.1-1.37l2.43.83A18.65 18.65 0 0 0 32 2.7V9A14 14 0 1 1 4 9V2.7c2.05 2.94 5 5.43 8.47 6.76Z" fill="${colors.hair.value}"/><mask id="facialHairBeardMustache-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="4" y="2" width="28" height="21"><path d="m12.47 9.46 2.43-.83A2.5 2.5 0 0 1 18 10a2.5 2.5 0 0 1 3.1-1.37l2.43.83A18.65 18.65 0 0 0 32 2.7V9A14 14 0 1 1 4 9V2.7c2.05 2.94 5 5.43 8.47 6.76Z" fill="#fff"/></mask><g mask="url(#facialHairBeardMustache-a)"><path d="M32 9V2.7c-2.05 2.94-5 5.43-8.47 6.76l2.8.96a1 1 0 0 1-.07 1.91l-5.08 1.3A2.71 2.71 0 0 1 18 12.05a2.72 2.72 0 0 1-3.18 1.58l-5.08-1.3a1 1 0 0 1-.08-1.91l2.81-.96A18.65 18.65 0 0 1 4 2.7V9a14 14 0 1 0 28 0Z" fill="#fff" style="mix-blend-mode:overlay" opacity=".26"/><path d="M22 13.42v.08a3 3 0 0 1-3 3h-2a3 3 0 0 1-3-3.08l.82.21A2.71 2.71 0 0 0 18 12.05a2.72 2.72 0 0 0 3.18 1.58l.82-.2Z" fill="#FFFEFD"/></g>`,
3
+ pyramid: (components, colors) => `<path d="M18.02 12.05a2.72 2.72 0 0 1-3.19 1.59l-5.08-1.3a1 1 0 0 1-.07-1.92l5.23-1.79a2.5 2.5 0 0 1 3.1 1.37 2.5 2.5 0 0 1 3.11-1.37l5.24 1.8a1 1 0 0 1-.08 1.9l-5.08 1.3a2.72 2.72 0 0 1-3.18-1.58Z" fill="${colors.hair.value}"/>`,
4
+ walrus: (components, colors) => `<path d="M10 14a5 5 0 0 1 5-5h6a5 5 0 0 1 5 5H10Z" fill="${colors.hair.value}"/>`,
5
+ goatee: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M13.61 10.67a3.61 3.61 0 0 0-2.6 3.57v4.67c0 1 .48 1.93 1.37 2.4 1.39.72 3.63 1.7 5.78 1.7 2.14 0 4.26-.96 5.56-1.7A2.62 2.62 0 0 0 25 18.99v-4.74a3.61 3.61 0 0 0-2.61-3.57 18.05 18.05 0 0 0-4.4-.67c-1.45 0-3.07.33-4.39.67Zm.3 1.41c-.8.22-1.32.97-1.32 1.8v2.67c0 1.07.56 2.06 1.54 2.48 1.08.46 2.59.97 3.97.97 1.39 0 2.85-.5 3.9-.97.96-.42 1.5-1.4 1.5-2.44v-2.7c0-.83-.52-1.58-1.33-1.8a16.72 16.72 0 0 0-4.17-.63c-1.51 0-3.05.33-4.1.62Z" fill="${colors.hair.value}"/>`,
6
+ shadow: (components, colors) => `<path opacity=".2" d="M32 3v4A14 14 0 1 1 4 7V2.7c2.05 2.94 4.53 6.97 8 8.3 2-1 4-1.5 6-1.5s4 .5 6 1.5c3.47-1.33 5.95-5.36 8-8.3V3Z" fill="${colors.hair.value}"/>`,
7
+ soulPatch: (components, colors) => `<path d="M16 17.5h4l-.68 2.05a1.39 1.39 0 0 1-2.63 0l-.7-2.05Z" fill="${colors.hair.value}"/>`,
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const hair: ComponentGroup;
@@ -0,0 +1,22 @@
1
+ export const hair = {
2
+ long: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M44 26c-1.8-2-3.13-4.5-3.97-7.47-1.87 2.28-4.55 3.6-8.03 3.97-5.83.61-10.82-.33-14.95-2.82A13.96 13.96 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73V25.5C14 16.39 21.16 9 30 9s16 7.39 16 16.5v1.26a4.47 4.47 0 0 0-2-.73V26Zm2 8.24v6.6c0 7.32-4.61 13.52-11 15.68V44.08A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76Zm-32 6.6c0 7.37 4.68 13.6 11.13 15.73a1073 1073 0 0 0-.13-7.02v-5.47A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76v6.6Z" fill="${colors.hair.value}"/><mask id="hairLong-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="9" width="32" height="48"><path fill-rule="evenodd" clip-rule="evenodd" d="M44 26c-1.8-2-3.13-4.5-3.97-7.47-1.87 2.28-4.55 3.6-8.03 3.97-5.83.61-10.82-.33-14.95-2.82A13.96 13.96 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73V25.5C14 16.39 21.16 9 30 9s16 7.39 16 16.5v1.26a4.47 4.47 0 0 0-2-.73V26Zm2 8.24v6.6c0 7.32-4.61 13.52-11 15.68V44.08A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76Zm-32 6.6c0 7.37 4.68 13.6 11.13 15.73a1073 1073 0 0 0-.13-7.02v-5.47A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76v6.6Z" fill="#362C47"/></mask><g mask="url(#hairLong-a)"><path fill="#fff" d="M14 9h32v18H14z" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
3
+ sideShave: (components, colors) => `<path d="M35 11.92A14 14 0 0 1 44 25v1s-1.33-3.1-3.16-4.93c-1.84-1.82-3.34-.7-4.53-2.52-1.2-1.83-1.31-6.63-1.31-6.63Z" fill="${colors.hair.value}" opacity=".3"/><path d="M30.65 23.09c-1.6 1.26-4.4 1.88-7.24 2.5-4.62 1.02-9.4 2.07-9.4 5.98V25.5C14 16.39 21.16 9 30 9c4.84 0 5.68 2.65 5.46 6.23-.2 3-.62 4.55-4.8 7.86ZM25 47a9.4 9.4 0 0 1-9.44 9.53L7.5 56.5s4-8.23 5-11.11l.06-.2c-.84.51-1.84.81-2.92.81H8.5s4.1-3.74 5.35-9.69c.1-1.23.15-2.07.15-2.07a4.48 4.48 0 0 0 2.58.76A14.04 14.04 0 0 0 25 44.08V47Z" fill="${colors.hair.value}"/>`,
4
+ shortCombover: (components, colors) => `<path d="M40.26 12.63a7.93 7.93 0 0 1 4.6 8.35L44 27c-2.83-1.7-4.7-5.55-5.6-11.56a9.24 9.24 0 0 1-5.7 2.77c-1.82.2-3.39.29-4.7.29-3 0-5.67-.5-8-1.5 0 3.67-1.33 7.17-4 10.5l-.92-8.53A9 9 0 0 1 24.03 9H41c0 1.28-.26 2.51-.74 3.63Z" fill="${colors.hair.value}"/><path d="M40.26 12.63c.48-1.12.74-2.35.74-3.63H24.03a9 9 0 0 0-8.95 9.97L16 27.5c2.67-3.33 4-6.83 4-10.5 2.33 1 5 1.5 8 1.5 1.31 0 2.88-.1 4.7-.29a9.24 9.24 0 0 0 7.56-5.58ZM44.88 20.84a7.91 7.91 0 0 0-2.42-6.73 9.29 9.29 0 0 1-3.45 4.5c1.04 4.22 2.7 7.01 5 8.39l.85-6.02.02-.14Z" style="mix-blend-mode:overlay" opacity=".26" fill="#fff"/>`,
5
+ curlyHighTop: (components, colors) => `<path d="M31.8 7a2 2 0 0 1 3.8 0h.57a2 2 0 0 1 3.83.67l.22.1a2 2 0 0 1 3.13 2.3l.15.17a2 2 0 0 1 1.77 3.41c.05.16.09.31.12.47a2 2 0 0 1 .02 3.75l-.05.32a2 2 0 0 1-.02 3.63 2 2 0 0 1 .16.85 1.8 1.8 0 0 1-1.22 2.92L44 27.5c-.44-.66-.84-1.48-1.2-2.46a1.8 1.8 0 0 1-.45-.8 2 2 0 0 1-.56-2.68l-.02-.1a2 2 0 0 1-.96-2.94 2 2 0 0 1-2.44-.32 2 2 0 0 1-3.72.06l-.31.03a2 2 0 0 1-3.58.2h-.23a2 2 0 0 1-3.52-.1l-.4-.03a2 2 0 0 1-3.68-.17 2 2 0 0 1-3.04-.22l-.03.16a2 2 0 0 1-.7 3.35 2 2 0 0 1-1.4 3.1c-.5.97-1.09 1.94-1.76 2.9l-.19-1.92a1.8 1.8 0 0 1-.34-3.47V22a2 2 0 0 1-.39-3.9l-.01-.14a2 2 0 0 1 .07-3.92c0-.06.02-.12.04-.17a2 2 0 0 1 1.46-3.63A2 2 0 0 1 19.7 7.9v-.1a2 2 0 0 1 3.84-.8h.05a2 2 0 0 1 3.82 0h.18a2 2 0 0 1 3.82 0h.38Z" fill="${colors.hair.value}"/><mask id="hairCurlyHighTop-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="13" y="5" width="34" height="23"><path d="M31.8 7a2 2 0 0 1 3.8 0h.57a2 2 0 0 1 3.83.67l.22.1a2 2 0 0 1 3.13 2.3l.15.17a2 2 0 0 1 1.77 3.41c.05.16.09.31.12.47a2 2 0 0 1 .02 3.75l-.05.32a2 2 0 0 1-.02 3.63 2 2 0 0 1 .16.85 1.8 1.8 0 0 1-1.22 2.92L44 27.5c-.44-.66-.84-1.48-1.2-2.46a1.8 1.8 0 0 1-.45-.8 2 2 0 0 1-.56-2.68l-.02-.1a2 2 0 0 1-.96-2.94 2 2 0 0 1-2.44-.32 2 2 0 0 1-3.72.06l-.31.03a2 2 0 0 1-3.58.2h-.23a2 2 0 0 1-3.52-.1l-.4-.03a2 2 0 0 1-3.68-.17 2 2 0 0 1-3.04-.22l-.03.16a2 2 0 0 1-.7 3.35 2 2 0 0 1-1.4 3.1c-.5.97-1.09 1.94-1.76 2.9l-.19-1.92a1.8 1.8 0 0 1-.34-3.47V22a2 2 0 0 1-.39-3.9l-.01-.14a2 2 0 0 1 .07-3.92c0-.06.02-.12.04-.17a2 2 0 0 1 1.46-3.63A2 2 0 0 1 19.7 7.9v-.1a2 2 0 0 1 3.84-.8h.05a2 2 0 0 1 3.82 0h.18a2 2 0 0 1 3.82 0h.38Z" fill="#fff"/></mask><g mask="url(#hairCurlyHighTop-a)"><path fill="#fff" d="M13 5h34v23H13z" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
6
+ bobCut: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M44 26a17.63 17.63 0 0 1-3.35-5.6A32.92 32.92 0 0 1 30 22.04c-4.85 0-9.14-.83-12.9-2.5A13.95 13.95 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73v-1.38C14 16.33 21.16 9 30 9s16 7.33 16 16.38v1.38a4.47 4.47 0 0 0-2-.73V26Zm-9 20.06v-1.98A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76v6.38c0 .47-.02.95-.06 1.41A34.63 34.63 0 0 1 35 46.06Zm-20.94-4.03A34.63 34.63 0 0 0 25 46.06v-1.98A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76v6.38c0 .47.02.95.06 1.41Z" fill="${colors.hair.value}"/><mask id="hairBobCut-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="9" width="32" height="38"><path fill-rule="evenodd" clip-rule="evenodd" d="M44 26a17.63 17.63 0 0 1-3.35-5.6A32.92 32.92 0 0 1 30 22.04c-4.85 0-9.14-.83-12.9-2.5A13.95 13.95 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73v-1.38C14 16.33 21.16 9 30 9s16 7.33 16 16.38v1.38a4.47 4.47 0 0 0-2-.73V26Zm-9 20.06v-1.98A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76v6.38c0 .47-.02.95-.06 1.41A34.63 34.63 0 0 1 35 46.06Zm-20.94-4.03A34.63 34.63 0 0 0 25 46.06v-1.98A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76v6.38c0 .47.02.95.06 1.41Z" fill="#362C47"/></mask><g mask="url(#hairBobCut-a)"><path fill="#fff" d="M13 9h34v18H13z" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
7
+ curly: (components, colors) => `<path d="m44 26-.02-.02-.3.02a2 2 0 0 1-1.8-2.88 2 2 0 0 1-2.73-2.1 2 2 0 0 1-3.3.56h-.02a1.99 1.99 0 0 1-2 2.05 2 2 0 0 1-1.75-1.04 2 2 0 0 1-3.92.33 2 2 0 0 1-3.87-.6c-.04 0-.09 0-.13-.02a2 2 0 0 1-3.67-.98c-.3-.1-.57-.2-.85-.32.02.09.02.17.02.26a2 2 0 0 1-2.74 1.86A2 2 0 0 1 16 25.8v.23a4.5 4.5 0 0 0 .58 8.97A14.04 14.04 0 0 0 25 44.08v3.06c-.25-.2-.47-.42-.65-.68-.49-.13-.96-.29-1.43-.46a3.46 3.46 0 0 1-4.54-2.3 20.9 20.9 0 0 1-.98-.7 3.46 3.46 0 0 1-3.83-3.8c-.17-.21-.34-.43-.5-.66a3.46 3.46 0 0 1-2.66-5.07l-.14-.39a3.47 3.47 0 0 1-1.08-5.96v-.01a3.47 3.47 0 0 1 .47-6.2 3.47 3.47 0 0 1 2.28-5.79 3.47 3.47 0 0 1 3.87-4.86 3.47 3.47 0 0 1 5.15-3.5 3.47 3.47 0 0 1 5.94-1.83 3.47 3.47 0 0 1 6.22 0 3.47 3.47 0 0 1 5.94 1.83 3.47 3.47 0 0 1 5.14 3.5 3.47 3.47 0 0 1 3.87 4.86 3.47 3.47 0 0 1 2.28 5.8 3.47 3.47 0 0 1 .47 6.19 3.47 3.47 0 0 1-1.08 5.97l-.14.4a3.47 3.47 0 0 1-2.66 5.06c-.16.23-.33.45-.5.66A3.46 3.46 0 0 1 42.6 43l-.98.7a3.46 3.46 0 0 1-4.54 2.3c-.47.17-.94.33-1.43.46-.18.26-.4.49-.65.68v-3.06A14.04 14.04 0 0 0 43.42 35h.08a4.5 4.5 0 0 0 .5-8.97V26Z" fill="${colors.hair.value}"/><mask id="hairCurly-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="7" y="3" width="46" height="45"><path d="m44 26-.02-.02-.3.02a2 2 0 0 1-1.8-2.88 2 2 0 0 1-2.73-2.1 2 2 0 0 1-3.3.56h-.02a1.99 1.99 0 0 1-2 2.05 2 2 0 0 1-1.75-1.04 2 2 0 0 1-3.92.33 2 2 0 0 1-3.87-.6c-.04 0-.09 0-.13-.02a2 2 0 0 1-3.67-.98c-.3-.1-.57-.2-.85-.32.02.09.02.17.02.26a2 2 0 0 1-2.74 1.86A2 2 0 0 1 16 25.8v.23a4.5 4.5 0 0 0 .58 8.97A14.04 14.04 0 0 0 25 44.08v3.06c-.25-.2-.47-.42-.65-.68-.49-.13-.96-.29-1.43-.46a3.46 3.46 0 0 1-4.54-2.3 20.9 20.9 0 0 1-.98-.7 3.46 3.46 0 0 1-3.83-3.8c-.17-.21-.34-.43-.5-.66a3.46 3.46 0 0 1-2.66-5.07l-.14-.39a3.47 3.47 0 0 1-1.08-5.96v-.01a3.47 3.47 0 0 1 .47-6.2 3.47 3.47 0 0 1 2.28-5.79 3.47 3.47 0 0 1 3.87-4.86 3.47 3.47 0 0 1 5.15-3.5 3.47 3.47 0 0 1 5.94-1.83 3.47 3.47 0 0 1 6.22 0 3.47 3.47 0 0 1 5.94 1.83 3.47 3.47 0 0 1 5.14 3.5 3.47 3.47 0 0 1 3.87 4.86 3.47 3.47 0 0 1 2.28 5.8 3.47 3.47 0 0 1 .47 6.19 3.47 3.47 0 0 1-1.08 5.97l-.14.4a3.47 3.47 0 0 1-2.66 5.06c-.16.23-.33.45-.5.66A3.46 3.46 0 0 1 42.6 43l-.98.7a3.46 3.46 0 0 1-4.54 2.3c-.47.17-.94.33-1.43.46-.18.26-.4.49-.65.68v-3.06A14.04 14.04 0 0 0 43.42 35h.08a4.5 4.5 0 0 0 .5-8.97V26Z" fill="#fff"/></mask><g mask="url(#hairCurly-a)"><path fill="#fff" d="M7 3h46v44H7z" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
8
+ pigtails: (components, colors) => `<path d="M39 11.84A5 5 0 0 1 44.04 7a4.99 4.99 0 0 1 5.03 5.18c.02 3.2.7 7.08 1.93 9.82a20.56 20.56 0 0 1-6.22-2.9A16.67 16.67 0 0 1 46 25.38v1.38a4.47 4.47 0 0 0-2-.73V26c-1.8-2-3.13-4.5-3.97-7.47-1.87 2.28-4.55 3.6-8.03 3.97-5.83.61-10.82-.33-14.95-2.82A13.96 13.96 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73v-1.38c0-2.22.43-4.35 1.22-6.28A20.56 20.56 0 0 1 9 22a26.57 26.57 0 0 0 1.92-10.06A4.99 4.99 0 0 1 15.96 7 5 5 0 0 1 21 11.84a15.67 15.67 0 0 1 18 0Z" fill="${colors.hair.value}"/><path d="M39.01 11.58c4.2 2.96 7 8.19 7 14.13v1.05a4.47 4.47 0 0 0-2-.73V26c-1.82-2-3.14-4.5-3.98-7.47-1.87 2.28-4.55 3.6-8.03 3.97-5.83.61-10.82-.33-14.95-2.82A13.96 13.96 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73V25.7c0-5.94 2.79-11.17 6.99-14.13v.26a15.67 15.67 0 0 1 18 0l.01-.26Z" fill="#fff" style="mix-blend-mode:overlay" opacity=".26"/><path fill-rule="evenodd" clip-rule="evenodd" d="M21 9a5 5 0 0 0-4.39 7.4 16.14 16.14 0 0 1 7.55-6.27A4.98 4.98 0 0 0 21 9Zm23 5a5 5 0 0 0-8.16-3.87 16.14 16.14 0 0 1 7.55 6.27c.39-.7.6-1.53.6-2.4Z" fill="#F55D81"/>`,
9
+ curlyBun: (components, colors) => `<path d="M30 2.5a2 2 0 0 0-1.8 1.11 2 2 0 0 0-3.42 1.06 2 2 0 0 0-2.96 2.02 2 2 0 0 0-2.23 2.8 2 2 0 0 0-1.31 3.33A2 2 0 0 0 18 16.4a2 2 0 0 0-.55 2.38 14 14 0 0 1 25.08 0A2 2 0 0 0 42 16.4a2 2 0 0 0-.27-3.58 2 2 0 0 0-1.3-3.33 2 2 0 0 0-2.24-2.8 2 2 0 0 0-2.96-2.02 2 2 0 0 0-3.43-1.06A2 2 0 0 0 30 2.51Z" fill="${colors.hair.value}"/><path d="M43.93 23.63A14 14 0 0 0 31 15h-2a14 14 0 0 0-12.93 8.63 14 14 0 0 1 27.86 0Z" fill="#F55D81"/>`,
10
+ buzzcut: (components, colors) => `<path d="M44 25v3c-1.33-1.67-2.67-4.67-4-9-2.66 1.33-6 2-10 2s-7.34-.67-10-2c-1.33 3.67-2.67 6.33-4 8v-2a14 14 0 1 1 28 0Z" style="mix-blend-mode:multiply" opacity=".2" fill="${colors.hair.value}"/>`,
11
+ bobBangs: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M44 26c-2.18-2.42-3.65-5.54-4.42-9.36a19.6 19.6 0 0 1-9.08 7.86c-4.67 2-9.5 2.33-14.5 1v.53c-.73.08-1.42.34-2 .73V25.5C14 16.39 21.16 9 30 9s16 7.39 16 16.5v1.26a4.47 4.47 0 0 0-2-.73V26Zm-9 21.31v-3.23A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76V45a38.74 38.74 0 0 1-11 2.31ZM14 45a38.74 38.74 0 0 0 11 2.31v-3.23A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76V45Z" fill="${colors.hair.value}"/><mask id="hairBobBangs-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="9" width="32" height="39"><path fill-rule="evenodd" clip-rule="evenodd" d="M44 26c-2.18-2.42-3.65-5.54-4.42-9.36a19.6 19.6 0 0 1-9.08 7.86c-4.67 2-9.5 2.33-14.5 1v.53c-.73.08-1.42.34-2 .73V25.5C14 16.39 21.16 9 30 9s16 7.39 16 16.5v1.26a4.47 4.47 0 0 0-2-.73V26Zm-9 21.31v-3.23A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76V45a38.74 38.74 0 0 1-11 2.31ZM14 45a38.74 38.74 0 0 0 11 2.31v-3.23A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76V45Z" fill="#362C47"/></mask><g mask="url(#hairBobBangs-a)"><path fill="#fff" d="M13 9h34v18H13z" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
12
+ bald: (components, colors) => `<path d="M26.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM19.38 21.77c.37.19.82.04 1-.33a15.05 15.05 0 0 1 2-3.06c.76-.88 1.63-1.62 2.63-2.2a.75.75 0 0 0-.75-1.3 11.86 11.86 0 0 0-3 2.52c-.85.99-1.58 2.11-2.2 3.37a.75.75 0 0 0 .33 1Z" style="mix-blend-mode:overlay" opacity=".2" fill="#fff"/>`,
13
+ balding: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="m16.97 25.55 2.7-8.55H18a3 3 0 0 0-2.98 3.31l.65 6.2c.6 0 1.12-.39 1.3-.95ZM41.34 17h-1.67l2.7 8.55c.18.56.7.95 1.3.95l.65-6.19a3 3 0 0 0-2.98-3.3Z" fill="${colors.hair.value}"/><path d="M26.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM19.38 21.77c.37.19.82.04 1-.33a15.05 15.05 0 0 1 2-3.06c.76-.88 1.63-1.62 2.63-2.2a.75.75 0 0 0-.75-1.3 11.86 11.86 0 0 0-3 2.52c-.85.99-1.58 2.11-2.2 3.37a.75.75 0 0 0 .33 1Z" style="mix-blend-mode:overlay" opacity=".2" fill="#fff"/>`,
14
+ cap: (components, colors) => `<path opacity=".2" d="M30 17c3.88 0 7.55-.37 11 4.22l-1.9 6.5c-.61 1.22-1.64 1.55-2.46.79-2.1-1.92-4.3-2.88-6.64-2.88-2.33 0-4.55.96-6.64 2.89-.82.76-1.85.43-2.46-.8L19 21.22c3.45-4.6 7.12-4.22 11-4.22Z" fill="#000"/><path d="M27.3 11.2a3 3 0 0 1 5.4 0c6.1.96 10.82 5.24 11.3 12.72a27.7 27.7 0 0 0-3.96-1.3l-.94.6a2 2 0 0 1-2.46.46 13.86 13.86 0 0 0-13.28 0 2 2 0 0 1-2.46-.46l-.94-.6c-1.4.35-2.72.78-3.96 1.3.48-7.48 5.2-11.76 11.3-12.71Z" fill="#F29C65"/><path d="M19.96 22.62c-1.4.35-2.72.78-3.96 1.3C16.55 15.37 22.63 11 30 11s13.45 4.37 14 12.92a27.7 27.7 0 0 0-3.96-1.3L41 22c-3.45-2.67-7.12-4-11-4s-7.55 1.33-11 4l.96.62Z" fill="#000" style="mix-blend-mode:overlay" opacity=".28"/><path d="m39.45 23-.35.22a2 2 0 0 1-2.46.46 13.86 13.86 0 0 0-13.28 0 2 2 0 0 1-2.46-.46l-.35-.23c.87.07 2.19-.47 2.81-.81a13.86 13.86 0 0 1 13.28 0c.62.34 1.94.88 2.8.81Z" fill="#fff" style="mix-blend-mode:lighten" opacity=".2"/>`,
15
+ bunUndercut: (components, colors) => `<circle cx="30" cy="12" r="4" fill="#5A45FF"/><path fill-rule="evenodd" clip-rule="evenodd" d="m33.72 12.84-.05 7.66c3.72-.75 5.83-1.25 6.33-1.5 1.33 4.33 2.67 7.33 4 9v-3a14 14 0 0 0-7.06-12.16c0-.02-1.08-.02-3.22 0ZM20 19c.5.25 2.6.75 6.33 1.5v-7.66h-3.27A14 14 0 0 0 16 25v3c1.33-1.67 2.67-4.67 4-9Z" fill="${colors.hair.value}" opacity=".3"/><path fill-rule="evenodd" clip-rule="evenodd" d="M30 6c-2.1 0-3.81 2.01-3.99 4.57-.72.41-1.44.94-2.14 1.58a3 3 0 0 0-.96 1.93l-.21 2.2a3.87 3.87 0 0 0 3.02 4.14c1.73.39 3.16.58 4.29.58 1.12 0 2.5-.18 4.17-.55a4 4 0 0 0 3.13-4.09l-.1-2.17a3 3 0 0 0-1.04-2.14 12.1 12.1 0 0 0-2.18-1.5C33.8 7.98 32.08 6 30 6Zm0 3.5a8 8 0 0 0-3.67.9 4 4 0 0 1 7.33-.03A8.25 8.25 0 0 0 30 9.5Z" fill="${colors.hair.value}"/><path d="M26.02 10.56C26.19 8 27.9 6 30 6c2.07 0 3.77 1.96 3.98 4.47a11 11 0 0 0-.36-.17 4 4 0 0 0-7.28.09l-.32.17Z" fill="#000" style="mix-blend-mode:overlay" opacity=".22"/>`,
16
+ fade: (components, colors) => `<mask id="hairFade-b" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="16" y="12" width="28" height="15"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 27v-2a14 14 0 0 1 7.5-12.4v.14c.09 1.68.16 3.3-.4 4.53-.7 1.57-1.78 2.45-2.72 3.21l-.62.52c-.7.61-2.44 2.49-3.76 6Zm28 0v-2a14 14 0 0 0-7.5-12.4v.14c-.09 1.68-.16 3.3.4 4.53.7 1.57 1.78 2.45 2.72 3.21l.62.52c.7.61 2.44 2.49 3.76 6Z" fill="url(#hairFade-a)"/></mask><g mask="url(#hairFade-b)"><path fill-rule="evenodd" clip-rule="evenodd" d="m16 27-.2-14.4h7.7l.06 14.4H16Zm20.72 0H44l-.07-14.4H36.5l.22 14.4Z" fill="${colors.hair.value}"/></g><path d="M22.3 17.95c0-3.6 2.72-6.63 6.3-7L38 10a6.84 6.84 0 0 1-6.49 9h-8.15c-.58 0-1.05-.47-1.05-1.05Z" fill="${colors.hair.value}"/><defs><linearGradient id="hairFade-a" x1="16" y1="12.6" x2="16" y2="27" gradientUnits="userSpaceOnUse"><stop/><stop offset="1" stop-opacity=".01"/></linearGradient></defs>`,
17
+ beanie: (components, colors) => `<path d="M17 19.8a14 14 0 0 1 26 0l.24.2a1 1 0 0 1 .34.54l.62 2.64a.5.5 0 0 1-.77.52C38.99 20.57 34.5 19 30 19S21 20.57 16.58 23.7a.5.5 0 0 1-.77-.52l.62-2.64a1 1 0 0 1 .34-.55l.24-.19Z" fill="#E15C66"/><path d="M30 15c6.45 0 12.01 4.04 13.25 5 .16.14.28.32.33.53l.62 2.6c.1.46-.44.83-.83.57C41.06 22.18 35.57 19 30 19c-5.57 0-11.05 3.18-13.36 4.7-.4.26-.93-.1-.82-.56l.6-2.6c.05-.21.17-.4.34-.53 1.23-.96 6.8-5 13.24-5Z" fill="#000" style="mix-blend-mode:overlay" opacity=".26"/>`,
18
+ straightBun: (components, colors) => `<path d="M20.2 15a10 10 0 1 1 19.6 0c-2.53-2.47-5.98-4-9.8-4-3.82 0-7.27 1.53-9.8 4Z" fill="${colors.hair.value}"/><path d="M43.93 23.63A14 14 0 0 0 31 15h-2a14 14 0 0 0-12.93 8.63 14 14 0 0 1 27.86 0Z" fill="#F55D81"/>`,
19
+ extraLong: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M44 26c-1.8-2-3.13-4.5-3.97-7.47-1.87 2.28-4.55 3.6-8.03 3.97-5.83.61-10.82-.33-14.95-2.82A13.96 13.96 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73V25.5C14 16.39 21.16 9 30 9s16 7.39 16 16.5v1.26a4.47 4.47 0 0 0-2-.73V26Zm2 8.24v22.28H35V44.08A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76ZM14 56.57h11.13L25 49.55v-5.47A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76v22.33Z" fill="${colors.hair.value}"/><mask id="hairExtraLong-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="9" width="32" height="48"><path fill-rule="evenodd" clip-rule="evenodd" d="M44 26c-1.8-2-3.13-4.5-3.97-7.47-1.87 2.28-4.55 3.6-8.03 3.97-5.83.61-10.82-.33-14.95-2.82A13.96 13.96 0 0 0 16 25v1.03c-.73.08-1.42.34-2 .73V25.5C14 16.39 21.16 9 30 9s16 7.39 16 16.5v1.26a4.47 4.47 0 0 0-2-.73V26Zm2 8.24v22.28H35V44.08A14.04 14.04 0 0 0 43.42 35h.08c.93 0 1.78-.28 2.5-.76ZM14 56.57h11.13L25 49.55v-5.47A14.04 14.04 0 0 1 16.58 35h-.08c-.93 0-1.79-.28-2.5-.76v22.33Z" fill="#362C47"/></mask><g mask="url(#hairExtraLong-a)"><path fill="#fff" d="M14 9h32v18H14z" style="mix-blend-mode:overlay" opacity=".26"/></g>`,
20
+ shortComboverChops: (components, colors) => `<path d="m15.79 25.56-.71-6.6A9 9 0 0 1 24.03 9H41c0 1.28-.26 2.51-.74 3.63a7.93 7.93 0 0 1 4.6 8.35L44 27v4.22a14 14 0 0 1-.48 3.42l-2.52.54A1 1 0 0 1 39.8 34l1.9-9.12c-1.57-2.09-2.68-5.24-3.31-9.44a9.24 9.24 0 0 1-5.7 2.77c-1.82.2-3.39.29-4.7.29-3 0-5.67-.5-8-1.5 0 2.6-.67 5.1-2 7.52L19.98 34a1 1 0 0 1-1.2 1.18l-2.51-.54a14 14 0 0 1-.48-3.42v-5.66Z" fill="${colors.hair.value}"/><path fill-rule="evenodd" clip-rule="evenodd" d="M19.98 34 18 24.52c1.33-2.42 2-4.93 2-7.52 2.33 1 5 1.5 8 1.5 1.31 0 2.88-.1 4.7-.29A9.24 9.24 0 0 0 41 9H24.03a9 9 0 0 0-8.95 9.97l.7 6.59v5.66a14 14 0 0 0 .49 3.42l2.52.54A1 1 0 0 0 19.98 34ZM44 31.22V27l.86-6.02.02-.14a7.91 7.91 0 0 0-2.42-6.73 9.29 9.29 0 0 1-3.45 4.5 17.22 17.22 0 0 0 2.7 6.27L39.8 34A1 1 0 0 0 41 35.18l2.52-.54a14 14 0 0 0 .48-3.42Z" fill="#fff" style="mix-blend-mode:overlay" opacity=".26"/>`,
21
+ mohawk: (components, colors) => `<path d="M30.03 8a6.51 6.51 0 0 1 4.85 2.05c.56.54.96 1.32 1.1 2.14l.67 4.16c.35 1.94-.7 3.67-2.53 4.09-1.62.37-3 .55-4.12.55-1.13 0-2.55-.2-4.24-.58-1.84-.42-2.84-2.2-2.38-4.14l.79-4.2c.16-.74.53-1.43 1.03-1.93C25.83 9.5 27.3 8 30.03 8Z" fill="${colors.hair.value}"/><path d="M34.88 10.05c.56.54.96 1.32 1.1 2.14l.67 4.16c.35 1.94-.7 3.67-2.53 4.09-1.62.37-3 .55-4.12.55-1.13 0-2.55-.2-4.24-.58-1.84-.42-2.84-2.2-2.38-4.14l.79-4.2c.16-.74.53-1.43 1.03-1.93.26-.27.67-.69 1.25-1.08-.31.48-1.45.98-1.45 2.43V15a3.06 3.06 0 0 0 2.02 3.51c1.18.34 2.18.5 2.98.5.79 0 1.76-.16 2.9-.47 1.28-.35 2.35-1.89 2.1-3.53v-3c0-1.5-1.1-2.54-1.5-3l-.14-.14c.73.42 1.22.9 1.52 1.2Z" fill="#fff" style="mix-blend-mode:overlay" opacity=".26"/>`,
22
+ };
@@ -0,0 +1,6 @@
1
+ export { eyes } from './eyes.js';
2
+ export { hair } from './hair.js';
3
+ export { body } from './body.js';
4
+ export { mouth } from './mouth.js';
5
+ export { nose } from './nose.js';
6
+ export { facialHair } from './facialHair.js';
@@ -0,0 +1,6 @@
1
+ export { eyes } from './eyes.js';
2
+ export { hair } from './hair.js';
3
+ export { body } from './body.js';
4
+ export { mouth } from './mouth.js';
5
+ export { nose } from './nose.js';
6
+ export { facialHair } from './facialHair.js';
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const mouth: ComponentGroup;
@@ -0,0 +1,9 @@
1
+ export const mouth = {
2
+ smile: (components, colors) => `<path d="M5 5.87a1 1 0 1 1 1-1.74A6 6 0 0 0 9 5a6 6 0 0 0 3-.87 1 1 0 1 1 1 1.74A8 8 0 0 1 9 7a8 8 0 0 1-4-1.13Z" fill="#1B0640"/>`,
3
+ frown: (components, colors) => `<path d="M5 4.13a1 1 0 1 0 1 1.74A6 6 0 0 1 9 5a6 6 0 0 1 3 .87 1 1 0 1 0 1-1.74A8 8 0 0 0 9 3a8 8 0 0 0-4 1.13Z" fill="#1B0640"/>`,
4
+ surprise: (components, colors) => `<ellipse cx="9" cy="5" rx="2" ry="2.5" fill="#1B0640"/>`,
5
+ pacifier: (components, colors) => `<path fill-rule="evenodd" clip-rule="evenodd" d="M9 2c-.76 0-1.51-.14-2.27-.41A2.03 2.03 0 0 0 4 3.5c0 1.4.82 2.6 2 3.17a3 3 0 0 0 6 0 3.5 3.5 0 0 0 2-3.17 2.03 2.03 0 0 0-2.73-1.91C10.51 1.86 9.76 2 9 2ZM7.59 7h2.82A1.5 1.5 0 0 1 7.6 7Z" fill="#456DFF"/><path fill-rule="evenodd" clip-rule="evenodd" d="M12 6.5v.17a3.5 3.5 0 0 0 2-3.17 2.03 2.03 0 0 0-2.73-1.91 6.61 6.61 0 0 1-4.54 0A2.03 2.03 0 0 0 4 3.5c0 1.4.82 2.6 2 3.17V6.5a3 3 0 1 1 6 0ZM7.59 7h2.82A1.5 1.5 0 1 0 7.6 7Z" fill="#fff" fill-opacity=".3" style="mix-blend-mode:lighten"/><circle cx="9" cy="4.5" r="1.5" fill="#fff"/>`,
6
+ bigSmile: (components, colors) => `<path d="M6 3h6v1a3 3 0 0 1-6 0V3Z" fill="#fff"/>`,
7
+ smirk: (components, colors) => `<path d="M7.32 5.73a.75.75 0 0 1 .36-1.46c2.44.61 4.17.32 5.29-.8a.75.75 0 1 1 1.06 1.06c-1.54 1.54-3.81 1.92-6.71 1.2Z" fill="#1B0640"/>`,
8
+ lips: (components, colors) => `<path d="M5 5h8s-1 2.5-4 2.5S5 5 5 5Z" fill="#DC5C7A"/><path d="M5.39 4.22A2.1 2.1 0 0 1 9 4a2.1 2.1 0 0 1 3.61.22l.4.78H4.99l.39-.78Z" fill="#F57B98"/>`,
9
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const nose: ComponentGroup;
@@ -0,0 +1,5 @@
1
+ export const nose = {
2
+ mediumRound: (components, colors) => `<path d="M4.25 5a.75.75 0 0 1 1.5 0c0 .84.91 1.75 2.25 1.75 1.34 0 2.25-.91 2.25-1.75a.75.75 0 0 1 1.5 0c0 1.66-1.59 3.25-3.75 3.25S4.25 6.66 4.25 5Z" fill="#000" style="mix-blend-mode:overlay" opacity=".36"/>`,
3
+ smallRound: (components, colors) => `<path d="M5.29 6.24a.75.75 0 1 1 1.42-.48c.23.7.62 1 1.3 1 .66 0 1.05-.3 1.28-1a.75.75 0 1 1 1.42.48c-.42 1.3-1.37 2.01-2.7 2.01S5.72 7.54 5.3 6.24Z" fill="#000" style="mix-blend-mode:overlay" opacity=".36"/>`,
4
+ wrinkles: (components, colors) => `<path opacity=".12" fill-rule="evenodd" clip-rule="evenodd" d="M11.72 5.3c.21.73.27 1.38.2 1.95a20.24 20.24 0 0 1 2.12 4.41.5.5 0 1 0 .94-.32 21.23 21.23 0 0 0-3.4-6.3c.07.07.11.16.14.25Zm-7.44 0a.75.75 0 0 1 .11-.24 28.75 28.75 0 0 0-2.07 3.22c-.48.89-.9 1.9-1.3 3.06a.5.5 0 0 0 .94.32 20.24 20.24 0 0 1 2.12-4.4 4.77 4.77 0 0 1 .19-1.97Z" fill="#000"/><path d="M5.2 4.78a.75.75 0 0 0-.92.51c-.21.75-.27 1.4-.2 1.97.23 1.6 1.6 2.49 3.92 2.49 2.33 0 3.7-.89 3.92-2.5.07-.57.01-1.22-.2-1.96a.75.75 0 1 0-1.44.42c.52 1.83-.09 2.54-2.28 2.54-2.2 0-2.8-.71-2.28-2.54a.75.75 0 0 0-.51-.93Z" fill="#000" style="mix-blend-mode:overlay" opacity=".36"/>`,
5
+ };
@@ -1,3 +1,3 @@
1
- import type { Style } from '@dicebear/core';
2
- import type { Options } from './options';
3
- export declare const style: Style<Options>;
1
+ import type { Style } from '@dicebear/core';
2
+ import type { Options } from './types.js';
3
+ export declare const style: Style<Options>;
package/lib/core.js ADDED
@@ -0,0 +1,32 @@
1
+ import { schema } from './schema.js';
2
+ import { getComponents } from './utils/getComponents.js';
3
+ import { getColors } from './utils/getColors.js';
4
+ import { onPreCreate } from './hooks/onPreCreate.js';
5
+ import { onPostCreate } from './hooks/onPostCreate.js';
6
+ export const style = {
7
+ meta: {
8
+ title: 'Personas by Draftbit',
9
+ creator: 'Draftbit - draftbit.com',
10
+ source: 'https://personas.draftbit.com/',
11
+ license: {
12
+ name: 'CC BY 4.0',
13
+ url: 'https://creativecommons.org/licenses/by/4.0/',
14
+ },
15
+ },
16
+ schema: schema,
17
+ create: ({ prng, options }) => {
18
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
19
+ onPreCreate({ prng, options });
20
+ const components = getComponents({ prng, options });
21
+ const colors = getColors({ prng, options });
22
+ onPostCreate({ prng, options, components, colors });
23
+ return {
24
+ attributes: {
25
+ viewBox: '0 0 64 64',
26
+ fill: 'none',
27
+ 'shape-rendering': 'auto',
28
+ },
29
+ body: `<path d="M37 46.08V52a5 5 0 0 1-10 0v-5.92A14.04 14.04 0 0 1 18.58 37h-.08a4.5 4.5 0 0 1-.5-8.97V27a14 14 0 1 1 28 0v1.03a4.5 4.5 0 0 1-.58 8.97A14.04 14.04 0 0 1 37 46.08Z" fill="${colors.skin.value}"/><mask id="personas-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="13" width="36" height="44"><path d="M37 46.08V52a5 5 0 0 1-10 0v-5.92A14.04 14.04 0 0 1 18.58 37h-.08a4.5 4.5 0 0 1-.5-8.97V27a14 14 0 1 1 28 0v1.03a4.5 4.5 0 0 1-.58 8.97A14.04 14.04 0 0 1 37 46.08Z" fill="#fff"/></mask><g mask="url(#personas-a)"><path d="M32 13a14 14 0 0 1 14 14v6a14 14 0 1 1-28 0v-6a14 14 0 0 1 14-14Z" fill="#fff" style="mix-blend-mode:overlay" opacity=".36"/></g><g transform="translate(20 24)">${(_b = (_a = components.eyes) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g><g transform="translate(2 2)">${(_d = (_c = components.hair) === null || _c === void 0 ? void 0 : _c.value(components, colors)) !== null && _d !== void 0 ? _d : ''}</g><g transform="translate(11 44)">${(_f = (_e = components.body) === null || _e === void 0 ? void 0 : _e.value(components, colors)) !== null && _f !== void 0 ? _f : ''}</g><g transform="translate(23 36)">${(_h = (_g = components.mouth) === null || _g === void 0 ? void 0 : _g.value(components, colors)) !== null && _h !== void 0 ? _h : ''}</g><g transform="translate(24 28)">${(_k = (_j = components.nose) === null || _j === void 0 ? void 0 : _j.value(components, colors)) !== null && _k !== void 0 ? _k : ''}</g><g transform="translate(14 26)">${(_m = (_l = components.facialHair) === null || _l === void 0 ? void 0 : _l.value(components, colors)) !== null && _m !== void 0 ? _m : ''}</g>`,
30
+ };
31
+ },
32
+ };
@@ -1,12 +1,10 @@
1
- import { Prng, StyleOptions } from '@dicebear/core';
2
- import { Options } from '../options';
3
- import { ColorPickCollection, ComponentPickCollection } from '../static-types';
4
- declare type Props = {
5
- prng: Prng;
6
- options: StyleOptions<Options>;
7
- components: ComponentPickCollection;
8
- colors: ColorPickCollection;
9
- preview: boolean;
10
- };
11
- export declare function onPostCreate({ prng, options, components, colors, preview, }: Props): void;
12
- export {};
1
+ import { Prng, StyleOptions } from '@dicebear/core';
2
+ import { Options, ColorPickCollection, ComponentPickCollection } from '../types.js';
3
+ declare type Props = {
4
+ prng: Prng;
5
+ options: StyleOptions<Options>;
6
+ components: ComponentPickCollection;
7
+ colors: ColorPickCollection;
8
+ };
9
+ export declare function onPostCreate({ prng, options, components, colors }: Props): void;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ export function onPostCreate({ prng, options, components, colors }) {
2
+ // Write your modifications here
3
+ }
@@ -0,0 +1,8 @@
1
+ import { Prng, StyleOptions } from '@dicebear/core';
2
+ import { Options } from '../types.js';
3
+ declare type Props = {
4
+ prng: Prng;
5
+ options: StyleOptions<Options>;
6
+ };
7
+ export declare function onPreCreate({ prng, options }: Props): void;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ export function onPreCreate({ prng, options }) {
2
+ // Write your modifications here
3
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Personas (@dicebear/personas)
3
+ *
4
+ * Code licensed under MIT License.
5
+ * Copyright (c) 2022 Florian Körner
6
+ *
7
+ * Design "Personas by Draftbit" by Draftbit - draftbit.com licensed under CC BY 4.0.
8
+ * Source: https://personas.draftbit.com/
9
+ * License: https://creativecommons.org/licenses/by/4.0/
10
+ */
11
+ declare const create: import("@dicebear/core").StyleCreate<import("./types.js").Options>, meta: import("@dicebear/core").StyleMeta, schema: import("json-schema").JSONSchema7;
12
+ export { create, meta, schema };
13
+ export type { Options } from './types.js';
package/lib/index.js ADDED
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Personas (@dicebear/personas)
3
+ *
4
+ * Code licensed under MIT License.
5
+ * Copyright (c) 2022 Florian Körner
6
+ *
7
+ * Design "Personas by Draftbit" by Draftbit - draftbit.com licensed under CC BY 4.0.
8
+ * Source: https://personas.draftbit.com/
9
+ * License: https://creativecommons.org/licenses/by/4.0/
10
+ */
11
+ import { style } from './core.js';
12
+ const { create, meta, schema } = style;
13
+ export { create, meta, schema };
@@ -0,0 +1,2 @@
1
+ import type { StyleSchema } from '@dicebear/core';
2
+ export declare const schema: StyleSchema;
package/lib/schema.js ADDED
@@ -0,0 +1,251 @@
1
+ export const schema = {
2
+ title: 'Options',
3
+ $schema: 'http://json-schema.org/draft-07/schema#',
4
+ properties: {
5
+ body: {
6
+ type: 'array',
7
+ items: {
8
+ type: 'string',
9
+ enum: ['squared', 'rounded', 'small', 'checkered'],
10
+ },
11
+ default: ['squared', 'rounded', 'small', 'checkered'],
12
+ examples: [['squared'], ['rounded'], ['small'], ['checkered']],
13
+ },
14
+ clothingColor: {
15
+ type: 'array',
16
+ items: {
17
+ type: 'string',
18
+ pattern: '^([0-9a-zA-Z]+|#[a-fA-F0-9]{3}|#[a-fA-F0-9]{4}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8})$',
19
+ },
20
+ default: [
21
+ 'blue',
22
+ 'turquoise',
23
+ 'purple',
24
+ 'green',
25
+ 'red',
26
+ 'yellow',
27
+ 'pink',
28
+ ],
29
+ examples: [
30
+ ['blue'],
31
+ ['turquoise'],
32
+ ['purple'],
33
+ ['green'],
34
+ ['red'],
35
+ ['yellow'],
36
+ ['pink'],
37
+ ],
38
+ },
39
+ eyes: {
40
+ type: 'array',
41
+ items: {
42
+ type: 'string',
43
+ enum: ['open', 'sleep', 'wink', 'glasses', 'happy', 'sunglasses'],
44
+ },
45
+ default: ['open', 'sleep', 'wink', 'glasses', 'happy', 'sunglasses'],
46
+ examples: [
47
+ ['open'],
48
+ ['sleep'],
49
+ ['wink'],
50
+ ['glasses'],
51
+ ['happy'],
52
+ ['sunglasses'],
53
+ ],
54
+ },
55
+ facialHair: {
56
+ type: 'array',
57
+ items: {
58
+ type: 'string',
59
+ enum: [
60
+ 'beardMustache',
61
+ 'pyramid',
62
+ 'walrus',
63
+ 'goatee',
64
+ 'shadow',
65
+ 'soulPatch',
66
+ ],
67
+ },
68
+ default: [
69
+ 'beardMustache',
70
+ 'pyramid',
71
+ 'walrus',
72
+ 'goatee',
73
+ 'shadow',
74
+ 'soulPatch',
75
+ ],
76
+ examples: [
77
+ ['beardMustache'],
78
+ ['pyramid'],
79
+ ['walrus'],
80
+ ['goatee'],
81
+ ['shadow'],
82
+ ['soulPatch'],
83
+ ],
84
+ },
85
+ facialHairProbability: {
86
+ type: 'integer',
87
+ minimum: 0,
88
+ maximum: 100,
89
+ default: 10,
90
+ },
91
+ hair: {
92
+ type: 'array',
93
+ items: {
94
+ type: 'string',
95
+ enum: [
96
+ 'long',
97
+ 'sideShave',
98
+ 'shortCombover',
99
+ 'curlyHighTop',
100
+ 'bobCut',
101
+ 'curly',
102
+ 'pigtails',
103
+ 'curlyBun',
104
+ 'buzzcut',
105
+ 'bobBangs',
106
+ 'bald',
107
+ 'balding',
108
+ 'cap',
109
+ 'bunUndercut',
110
+ 'fade',
111
+ 'beanie',
112
+ 'straightBun',
113
+ 'extraLong',
114
+ 'shortComboverChops',
115
+ 'mohawk',
116
+ ],
117
+ },
118
+ default: [
119
+ 'long',
120
+ 'sideShave',
121
+ 'shortCombover',
122
+ 'curlyHighTop',
123
+ 'bobCut',
124
+ 'curly',
125
+ 'pigtails',
126
+ 'curlyBun',
127
+ 'buzzcut',
128
+ 'bobBangs',
129
+ 'bald',
130
+ 'balding',
131
+ 'cap',
132
+ 'bunUndercut',
133
+ 'fade',
134
+ 'beanie',
135
+ 'straightBun',
136
+ 'extraLong',
137
+ 'shortComboverChops',
138
+ 'mohawk',
139
+ ],
140
+ examples: [
141
+ ['long'],
142
+ ['sideShave'],
143
+ ['shortCombover'],
144
+ ['curlyHighTop'],
145
+ ['bobCut'],
146
+ ['curly'],
147
+ ['pigtails'],
148
+ ['curlyBun'],
149
+ ['buzzcut'],
150
+ ['bobBangs'],
151
+ ['bald'],
152
+ ['balding'],
153
+ ['cap'],
154
+ ['bunUndercut'],
155
+ ['fade'],
156
+ ['beanie'],
157
+ ['straightBun'],
158
+ ['extraLong'],
159
+ ['shortComboverChops'],
160
+ ['mohawk'],
161
+ ],
162
+ },
163
+ hairColor: {
164
+ type: 'array',
165
+ items: {
166
+ type: 'string',
167
+ pattern: '^([0-9a-zA-Z]+|#[a-fA-F0-9]{3}|#[a-fA-F0-9]{4}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8})$',
168
+ },
169
+ default: ['black', 'brunette', 'red', 'pink', 'copper', 'blonde', 'grey'],
170
+ examples: [
171
+ ['black'],
172
+ ['brunette'],
173
+ ['red'],
174
+ ['pink'],
175
+ ['copper'],
176
+ ['blonde'],
177
+ ['grey'],
178
+ ],
179
+ },
180
+ mouth: {
181
+ type: 'array',
182
+ items: {
183
+ type: 'string',
184
+ enum: [
185
+ 'smile',
186
+ 'frown',
187
+ 'surprise',
188
+ 'pacifier',
189
+ 'bigSmile',
190
+ 'smirk',
191
+ 'lips',
192
+ ],
193
+ },
194
+ default: [
195
+ 'smile',
196
+ 'frown',
197
+ 'surprise',
198
+ 'pacifier',
199
+ 'bigSmile',
200
+ 'smirk',
201
+ 'lips',
202
+ ],
203
+ examples: [
204
+ ['smile'],
205
+ ['frown'],
206
+ ['surprise'],
207
+ ['pacifier'],
208
+ ['bigSmile'],
209
+ ['smirk'],
210
+ ['lips'],
211
+ ],
212
+ },
213
+ nose: {
214
+ type: 'array',
215
+ items: {
216
+ type: 'string',
217
+ enum: ['mediumRound', 'smallRound', 'wrinkles'],
218
+ },
219
+ default: ['mediumRound', 'smallRound', 'wrinkles'],
220
+ examples: [['mediumRound'], ['smallRound'], ['wrinkles']],
221
+ },
222
+ skinColor: {
223
+ type: 'array',
224
+ items: {
225
+ type: 'string',
226
+ pattern: '^([0-9a-zA-Z]+|#[a-fA-F0-9]{3}|#[a-fA-F0-9]{4}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8})$',
227
+ },
228
+ default: [
229
+ 'tone1',
230
+ 'tone2',
231
+ 'tone3',
232
+ 'tone4',
233
+ 'tone5',
234
+ 'tone6',
235
+ 'tone7',
236
+ 'tone8',
237
+ ],
238
+ examples: [
239
+ ['tone1'],
240
+ ['tone2'],
241
+ ['tone3'],
242
+ ['tone4'],
243
+ ['tone5'],
244
+ ['tone6'],
245
+ ['tone7'],
246
+ ['tone8'],
247
+ ],
248
+ },
249
+ },
250
+ additionalProperties: false,
251
+ };
package/lib/types.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export interface Options {
2
+ eyes?: ('open' | 'sleep' | 'wink' | 'glasses' | 'happy' | 'sunglasses')[];
3
+ hair?: ('long' | 'sideShave' | 'shortCombover' | 'curlyHighTop' | 'bobCut' | 'curly' | 'pigtails' | 'curlyBun' | 'buzzcut' | 'bobBangs' | 'bald' | 'balding' | 'cap' | 'bunUndercut' | 'fade' | 'beanie' | 'straightBun' | 'extraLong' | 'shortComboverChops' | 'mohawk')[];
4
+ body?: ('squared' | 'rounded' | 'small' | 'checkered')[];
5
+ mouth?: ('smile' | 'frown' | 'surprise' | 'pacifier' | 'bigSmile' | 'smirk' | 'lips')[];
6
+ nose?: ('mediumRound' | 'smallRound' | 'wrinkles')[];
7
+ facialHair?: ('beardMustache' | 'pyramid' | 'walrus' | 'goatee' | 'shadow' | 'soulPatch')[];
8
+ facialHairProbability?: number;
9
+ hairColor?: string[];
10
+ clothingColor?: string[];
11
+ skinColor?: string[];
12
+ }
13
+ export declare type ColorGroup = Record<string, ColorGroupItem>;
14
+ export declare type ColorGroupCollection = Record<string, ColorGroup>;
15
+ export declare type ColorGroupItem = string;
16
+ export declare type ColorPickCollection = Record<string, ColorPick>;
17
+ export declare type ColorPick = {
18
+ name: string;
19
+ value: ColorGroupItem;
20
+ };
21
+ export declare type ComponentGroup = Record<string, ComponentGroupItem>;
22
+ export declare type ComponentGroupCollection = Record<string, ComponentGroup>;
23
+ export declare type ComponentGroupItem = (components: ComponentPickCollection, colors: ColorPickCollection) => string;
24
+ export declare type ComponentPickCollection = Record<string, ComponentPick>;
25
+ export declare type ComponentPick = {
26
+ name: string;
27
+ value: ComponentGroupItem;
28
+ } | undefined;