@dicebear/micah 5.0.0-alpha.0 → 5.0.0-alpha.12

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 (97) hide show
  1. package/lib/colors/base.d.ts +2 -0
  2. package/lib/colors/base.js +15 -0
  3. package/lib/colors/earring.d.ts +2 -0
  4. package/lib/colors/earring.js +15 -0
  5. package/lib/colors/eyeShadow.d.ts +2 -0
  6. package/lib/colors/eyeShadow.js +15 -0
  7. package/lib/colors/eyebrow.d.ts +2 -0
  8. package/lib/colors/eyebrow.js +15 -0
  9. package/lib/colors/eyes.d.ts +2 -0
  10. package/lib/colors/eyes.js +15 -0
  11. package/lib/colors/facialHair.d.ts +2 -0
  12. package/lib/colors/facialHair.js +15 -0
  13. package/lib/colors/glasses.d.ts +2 -0
  14. package/lib/colors/glasses.js +15 -0
  15. package/lib/colors/hair.d.ts +2 -0
  16. package/lib/colors/hair.js +15 -0
  17. package/lib/colors/index.d.ts +10 -0
  18. package/lib/colors/index.js +10 -0
  19. package/lib/colors/mouth.d.ts +2 -0
  20. package/lib/colors/mouth.js +3 -0
  21. package/lib/colors/shirt.d.ts +2 -0
  22. package/lib/colors/shirt.js +15 -0
  23. package/lib/components/base.d.ts +2 -0
  24. package/lib/components/base.js +6 -0
  25. package/lib/components/earrings.d.ts +2 -0
  26. package/lib/components/earrings.js +4 -0
  27. package/lib/components/ears.d.ts +2 -0
  28. package/lib/components/ears.js +10 -0
  29. package/lib/components/eyebrows.d.ts +2 -0
  30. package/lib/components/eyebrows.js +6 -0
  31. package/lib/components/eyes.d.ts +2 -0
  32. package/lib/components/eyes.js +18 -0
  33. package/lib/components/facialHair.d.ts +2 -0
  34. package/lib/components/facialHair.js +4 -0
  35. package/lib/components/glasses.d.ts +2 -0
  36. package/lib/components/glasses.js +4 -0
  37. package/lib/components/hair.d.ts +2 -0
  38. package/lib/components/hair.js +10 -0
  39. package/lib/components/index.d.ts +11 -0
  40. package/lib/components/index.js +11 -0
  41. package/lib/components/mouth.d.ts +2 -0
  42. package/lib/components/mouth.js +10 -0
  43. package/lib/components/nose.d.ts +2 -0
  44. package/lib/components/nose.js +5 -0
  45. package/lib/components/shirt.d.ts +2 -0
  46. package/lib/components/shirt.js +5 -0
  47. package/{dist → lib}/core.d.ts +3 -3
  48. package/lib/core.js +64 -0
  49. package/{dist → lib}/hooks/onPostCreate.d.ts +11 -12
  50. package/lib/hooks/onPostCreate.js +6 -0
  51. package/{dist → lib}/hooks/onPreCreate.d.ts +9 -9
  52. package/lib/hooks/onPreCreate.js +26 -0
  53. package/{dist → lib}/index.d.ts +13 -13
  54. package/lib/index.js +13 -0
  55. package/{dist → lib}/meta/components.d.ts +4 -4
  56. package/lib/meta/components.js +46 -0
  57. package/lib/schema.d.ts +2 -0
  58. package/lib/schema.js +435 -0
  59. package/lib/types.d.ts +43 -0
  60. package/lib/types.js +1 -0
  61. package/{dist → lib}/utils/getColors.d.ts +8 -9
  62. package/lib/utils/getColors.js +55 -0
  63. package/{dist → lib}/utils/getComponents.d.ts +8 -9
  64. package/lib/utils/getComponents.js +77 -0
  65. package/{dist → lib}/utils/pickColor.d.ts +9 -9
  66. package/lib/utils/pickColor.js +13 -0
  67. package/{dist → lib}/utils/pickComponent.d.ts +9 -9
  68. package/lib/utils/pickComponent.js +14 -0
  69. package/package.json +18 -21
  70. package/dist/colors/base.d.ts +0 -2
  71. package/dist/colors/earring.d.ts +0 -2
  72. package/dist/colors/eyeShadow.d.ts +0 -2
  73. package/dist/colors/eyebrow.d.ts +0 -2
  74. package/dist/colors/eyes.d.ts +0 -2
  75. package/dist/colors/facialHair.d.ts +0 -2
  76. package/dist/colors/glasses.d.ts +0 -2
  77. package/dist/colors/hair.d.ts +0 -2
  78. package/dist/colors/index.d.ts +0 -10
  79. package/dist/colors/mouth.d.ts +0 -2
  80. package/dist/colors/shirt.d.ts +0 -2
  81. package/dist/components/base.d.ts +0 -2
  82. package/dist/components/earrings.d.ts +0 -2
  83. package/dist/components/ears.d.ts +0 -2
  84. package/dist/components/eyebrows.d.ts +0 -2
  85. package/dist/components/eyes.d.ts +0 -2
  86. package/dist/components/facialHair.d.ts +0 -2
  87. package/dist/components/glasses.d.ts +0 -2
  88. package/dist/components/hair.d.ts +0 -2
  89. package/dist/components/index.d.ts +0 -11
  90. package/dist/components/mouth.d.ts +0 -2
  91. package/dist/components/nose.d.ts +0 -2
  92. package/dist/components/shirt.d.ts +0 -2
  93. package/dist/index.es.js +0 -1238
  94. package/dist/index.js +0 -1245
  95. package/dist/index.umd.js +0 -12
  96. package/dist/options.d.ts +0 -32
  97. package/dist/static-types.d.ts +0 -16
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const base: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const base = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ coast: 'rgba(172, 102, 81, 1)',
4
+ topaz: 'rgba(119, 49, 29, 1)',
5
+ lavender: 'rgba(146, 135, 255, 1)',
6
+ sky: 'rgba(107, 217, 233, 1)',
7
+ salmon: 'rgba(252, 144, 159, 1)',
8
+ canary: 'rgba(244, 209, 80, 1)',
9
+ calm: 'rgba(224, 221, 255, 1)',
10
+ azure: 'rgba(210, 239, 243, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ mellow: 'rgba(255, 235, 164, 1)',
13
+ black: 'rgba(0, 0, 0, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const earring: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const earring = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const eyeShadow: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const eyeShadow = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const eyebrow: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const eyebrow = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const eyes: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const eyes = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const facialHair: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const facialHair = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const glasses: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const glasses = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const hair: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const hair = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,10 @@
1
+ export { base } from './base.js';
2
+ export { earring } from './earring.js';
3
+ export { eyeShadow } from './eyeShadow.js';
4
+ export { eyebrow } from './eyebrow.js';
5
+ export { facialHair } from './facialHair.js';
6
+ export { glasses } from './glasses.js';
7
+ export { hair } from './hair.js';
8
+ export { mouth } from './mouth.js';
9
+ export { shirt } from './shirt.js';
10
+ export { eyes } from './eyes.js';
@@ -0,0 +1,10 @@
1
+ export { base } from './base.js';
2
+ export { earring } from './earring.js';
3
+ export { eyeShadow } from './eyeShadow.js';
4
+ export { eyebrow } from './eyebrow.js';
5
+ export { facialHair } from './facialHair.js';
6
+ export { glasses } from './glasses.js';
7
+ export { hair } from './hair.js';
8
+ export { mouth } from './mouth.js';
9
+ export { shirt } from './shirt.js';
10
+ export { eyes } from './eyes.js';
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const mouth: ColorGroup;
@@ -0,0 +1,3 @@
1
+ export const mouth = {
2
+ black: 'rgba(0, 0, 0, 1)',
3
+ };
@@ -0,0 +1,2 @@
1
+ import type { ColorGroup } from '../types.js';
2
+ export declare const shirt: ColorGroup;
@@ -0,0 +1,15 @@
1
+ export const shirt = {
2
+ apricot: 'rgba(249, 201, 182, 1)',
3
+ azure: 'rgba(210, 239, 243, 1)',
4
+ black: 'rgba(0, 0, 0, 1)',
5
+ calm: 'rgba(224, 221, 255, 1)',
6
+ canary: 'rgba(244, 209, 80, 1)',
7
+ coast: 'rgba(172, 102, 81, 1)',
8
+ lavender: 'rgba(146, 135, 255, 1)',
9
+ mellow: 'rgba(255, 235, 164, 1)',
10
+ salmon: 'rgba(252, 144, 159, 1)',
11
+ seashell: 'rgba(255, 237, 239, 1)',
12
+ sky: 'rgba(107, 217, 233, 1)',
13
+ topaz: 'rgba(119, 49, 29, 1)',
14
+ white: 'rgba(255, 255, 255, 1)',
15
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const base: ComponentGroup;
@@ -0,0 +1,6 @@
1
+ export const base = {
2
+ standard: (components, colors) => {
3
+ var _a, _b;
4
+ return `<path d="M154 319.5c-14.4-20-25.67-58.67-27-78L58.5 212 30 319.5h124Z" fill="${colors.base.value}" stroke="#000" stroke-width="4"/><mask id="baseStandard-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="30" y="212" width="124" height="118"><path d="M154 329.5c-14.4-20-25.67-68.67-27-88L58.5 212 30 329.5h124Z" fill="${colors.base.value}"/></mask><g mask="url(#baseStandard-a)"><ellipse cx="124" cy="210" rx="59" ry="54" fill="#000" style="mix-blend-mode:multiply"/></g><path d="M181.94 151.37v.01l.1.4.14.65A75.72 75.72 0 0 1 34.93 187.7l-.2-.74L18 117.13l-.06-.29A75.72 75.72 0 0 1 165.2 81.55l.05.21.02.08.05.2.05.2v.01l16.4 68.44.08.34.08.34Z" fill="${colors.base.value}" stroke="#000" stroke-width="4"/><g transform="translate(34 102.3)">${(_b = (_a = components.facialHair) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
5
+ },
6
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const earrings: ComponentGroup;
@@ -0,0 +1,4 @@
1
+ export const earrings = {
2
+ hoop: (components, colors) => `<path d="M24 0A24 24 0 1 1 0 24c0-6.4 3.5-11.5 6.57-16.5L7.5 6" stroke="${colors.earring.value}" stroke-width="4"/>`,
3
+ stud: (components, colors) => `<circle cx="25" cy="2" r="4" fill="${colors.earring.value}"/><circle cx="26" cy="1" r="1" fill="#fff"/>`,
4
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const ears: ComponentGroup;
@@ -0,0 +1,10 @@
1
+ export const ears = {
2
+ attached: (components, colors) => {
3
+ var _a, _b;
4
+ return `<path d="M30.5 6.18A23.78 23.78 0 0 0 23.08 5c-10.5 0-19 6.5-18 18.5 1.04 12.5 8.5 17 19 17A19.6 19.6 0 0 0 31 39.23" stroke="#000" stroke-width="8"/><path d="M31.5 39.04a19.38 19.38 0 0 1-7.42 1.46c-10.5 0-17.96-4.5-19-17-1-12 7.5-18.5 18-18.5 3.14 0 6.19.6 8.92 1.73l-.5 32.3Z" fill="${colors.base.value}"/><path d="M27.5 13.5c-4-1.83-12.8-2.8-16 8" stroke="#000" stroke-width="4"/><path d="M17 14c2.17 1.83 6.3 7.5 5.5 15.5" stroke="#000" stroke-width="4"/><g transform="translate(3 35)">${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
5
+ },
6
+ detached: (components, colors) => {
7
+ var _a, _b;
8
+ return `<path d="M37 8.25V7.13l-.95-.59A24.91 24.91 0 0 0 23.08 3C17.44 3 12.16 4.75 8.4 8.3c-3.8 3.58-5.86 8.83-5.31 15.37.52 6.37 2.66 11.06 6.2 14.17-.29 1-.37 2.08-.24 3.21a8.98 8.98 0 0 0 4.6 7.08C16.09 49.5 19.2 50 22.52 50c5.48 0 10.29-2.95 13.95-6.89l.53-.57V8.25Z" stroke="#000" stroke-width="4"/><path d="M42.97 23.98c.07-.65.1-1.3.1-1.98 0-10.22-9.5-17-20-17C12.6 5 4.09 11.5 5.09 23.5c.56 6.68 2.95 11.07 6.65 13.72a5.7 5.7 0 0 0-.68 3.6C11.68 46.1 16.19 48 22.52 48c11.1 0 19.9-14.05 20.45-24.02Z" fill="${colors.base.value}"/><path d="M27.5 13.5c-4-1.83-12.8-2.8-16 8" stroke="#000" stroke-width="4"/><path d="M17 14c2.17 1.83 6.3 7.5 5.5 15.5" stroke="#000" stroke-width="4"/><g transform="translate(3 42)">${(_b = (_a = components.earrings) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
9
+ },
10
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const eyebrows: ComponentGroup;
@@ -0,0 +1,6 @@
1
+ export const eyebrows = {
2
+ up: (components, colors) => `<path d="M99 10.21c5.67-2.66 19-5.1 27 6.5M23.58 35.52c2.07-5.9 9.68-17.12 23.56-14.7" stroke="${colors.eyebrow.value}" stroke-width="4" stroke-linecap="round"/>`,
3
+ down: (components, colors) => `<path d="M27 26.5c6.17 2.5 21.1 3 31.5-15M94 4c5.17 5.33 18.1 12.8 28.5 0" stroke="${colors.eyebrow.value}" stroke-width="4" stroke-linecap="round"/>`,
4
+ eyelashesUp: (components, colors) => `<path d="M99 10.21c5.67-2.66 19-5.1 27 6.5M23.58 35.52c2.07-5.9 9.68-17.12 23.56-14.7M26.07 29.46l-6.14-5.43M122.96 11.16l6.15-5.43M32.52 23.81l-4.04-7.13M115.51 7.51l4.05-7.13M40.6 20.2l-2.2-7.9M106.44 6.9l2.2-7.9" stroke="${colors.eyebrow.value}" stroke-width="4" stroke-linecap="round"/>`,
5
+ eyelashesDown: (components, colors) => `<path d="M27 26.5c6.17 2.5 21.1 3 31.5-15M94 4c5.17 5.33 18.1 12.8 28.5 0M37.15 26.46 31 21.03M116.22 9.44l1.78-8M45.6 22.81l-4.05-7.13M108.14 9.02l.94-8.15M52.67 17.2l-2.2-7.9M100 8.03l-.78-8.16" stroke="${colors.eyebrow.value}" stroke-width="4" stroke-linecap="round"/>`,
6
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const eyes: ComponentGroup;
@@ -0,0 +1,18 @@
1
+ export const eyes = {
2
+ eyes: (components, colors) => {
3
+ var _a, _b;
4
+ return `<g fill="${colors.eyes.value}"><ellipse cx="16.53" cy="29.4" rx="9" ry="13.5" transform="rotate(-6.78 16.53 29.4)"/><ellipse cx="80.53" cy="19.4" rx="9" ry="13.5" transform="rotate(-6.28 80.53 19.4)"/></g><g transform="translate(-40 -8)">${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
5
+ },
6
+ round: (components, colors) => {
7
+ var _a, _b;
8
+ return `<g fill="${colors.eyes.value}"><ellipse cx="16.12" cy="28.93" rx="9" ry="10" transform="rotate(-6.78 16.12 28.93)"/><ellipse cx="80.15" cy="18.92" rx="9" ry="10" transform="rotate(-6.28 80.15 18.92)"/></g><g transform="translate(-40 -8)">${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
9
+ },
10
+ eyesShadow: (components, colors) => {
11
+ var _a, _b;
12
+ return `<circle cx="15.24" cy="20.24" r="12" transform="rotate(-6.28 15.24 20.24)" fill="${colors.eyeShadow.value}"/><ellipse cx="16.53" cy="29.4" rx="9" ry="13.5" transform="rotate(-6.78 16.53 29.4)" fill="${colors.eyes.value}"/><circle cx="79.02" cy="11.61" r="12" transform="rotate(-6.28 79.02 11.61)" fill="${colors.eyeShadow.value}"/><ellipse cx="80.53" cy="19.4" rx="9" ry="13.5" transform="rotate(-6.28 80.53 19.4)" fill="${colors.eyes.value}"/><g transform="translate(-40 -8)">${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
13
+ },
14
+ smiling: (components, colors) => {
15
+ var _a, _b;
16
+ return `<path d="M5.29 34.07c.11.82 1.14 1 1.72.41 2.46-2.52 6.25-4.36 10.65-4.89 2.6-.3 5.1-.12 7.32.48.75.2 1.5-.44 1.23-1.17A10.84 10.84 0 0 0 5.3 34.07ZM69.38 24.07c.12.82 1.15 1 1.73.41 2.44-2.48 6.19-4.3 10.54-4.83 2.56-.3 5.03-.12 7.23.47.75.2 1.5-.44 1.23-1.17a10.74 10.74 0 0 0-20.73 5.12Z" fill="${colors.eyes.value}"/><g transform="translate(-40 -8)">${(_b = (_a = components.glasses) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g>`;
17
+ },
18
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const facialHair: ComponentGroup;
@@ -0,0 +1,4 @@
1
+ export const facialHair = {
2
+ beard: (components, colors) => `<path d="M146.13 49.15A73.74 73.74 0 0 1 27.69 123.4C10.5 107.5 6.5 56 2.7 31.65c14 31.5 49.62 33.94 83.5 28 28.5-5 51.3-6 51.3-45 1.88 2.62 6.97 27.59 8.63 34.5Z" fill="${colors.facialHair.value}"/>`,
3
+ scruff: (components, colors) => `<g fill="${colors.facialHair.value}" stroke="${colors.facialHair.value}"><path d="M31 109a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM83 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM79 123a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM99 121a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 111a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM120 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM130 102a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM21 88a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM54 104a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM51 124a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM69 128a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM103 102a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM117 106a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM109 123a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM123 92a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM30 94a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM54 94a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM54 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM58 130a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM85 130a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM96 130a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM113 94a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM113 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM133 89a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM33 81a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM43 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM39 123a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM79 103a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM91 105a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM77 135a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 84a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 66a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM124 81a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM131 71a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM42 90a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM42 101a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM63 86a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM63 68a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM75 82a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM87 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"/><path d="M113 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM139 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM61 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM72 110a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM68 102a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM92 93a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM43 75a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM80 91a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM80 73a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM115 87a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM115 69a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM122 71a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM137 62a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM31 109a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM83 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM79 123a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM99 121a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 111a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM120 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM130 102a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM21 88a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM54 104a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM51 124a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM69 128a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM103 102a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM117 106a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM109 123a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM123 92a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM30 94a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM54 94a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM54 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM58 130a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM85 130a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM96 130a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM113 94a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"/><path d="M113 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM133 89a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM33 81a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM43 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM39 123a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM79 103a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM91 105a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM77 135a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 84a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 66a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM124 81a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM131 71a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM42 90a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM42 101a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM63 86a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM63 68a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM75 82a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM87 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM100 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"/><path d="M113 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM139 76a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM61 116a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM72 110a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM68 102a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM92 93a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM43 75a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM80 91a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM80 73a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM115 87a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM115 69a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM122 71a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM137 62a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"/></g>`,
4
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const glasses: ComponentGroup;
@@ -0,0 +1,4 @@
1
+ export const glasses = {
2
+ round: (components, colors) => `<g stroke="${colors.glasses.value}" stroke-width="4"><circle cx="122.5" cy="28" r="26"/><circle cx="55.5" cy="37" r="26"/><path d="M97.5 35a8 8 0 0 0-16 0M30 39 0 44.5"/></g>`,
3
+ square: (components, colors) => `<g stroke="${colors.glasses.value}" stroke-width="4"><path d="M34.5 42.5 0 49.12" stroke-linecap="round"/><path d="M35.47 18.53 74.2 13.1a6 6 0 0 1 6.77 5.1l5.57 39.62a6 6 0 0 1-5.1 6.78l-34.48 4.84a6 6 0 0 1-6.65-4.48l-9.81-39.01a6 6 0 0 1 4.98-7.4ZM145.92 3.22 107.2 8.66a6 6 0 0 0-5.1 6.78l5.56 39.6a6 6 0 0 0 6.78 5.11l34.47-4.84a6 6 0 0 0 5.16-6.14l-1.32-40.2a6 6 0 0 0-6.83-5.75ZM83.5 37.12l22-3.5"/></g>`,
4
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const hair: ComponentGroup;
@@ -0,0 +1,10 @@
1
+ export const hair = {
2
+ fonze: (components, colors) => `<path d="M210.18 49.4c-1.27 6.05-4.6 11.32-9.43 15.9 9.4 34.06 9.6 53.87 4.38 57.65l-14.8-49.99C158.4 91.7 98.65 94.9 83.69 94.9c-1.55.17-3.02.4-4.43.67-14.65 9-2.6 52.12 11.75 70.43l-11 2c-5.14-24.97-17.41-22.92-26.61-21.38l-.32.05c2.2 13.63 6.72 27.74 10.45 39.32.95 2.99 1.86 5.8 2.66 8.4-.79.1-1.48.3-2.12.47-5.5 1.53-7.41 2.06-33.38-61.97-6.47-15.95-6.03-30.16-.97-42.62-4.78-4.8-14.37-7.14-19.71-7.78 10.44-6.12 20.58-4.87 25.54-3.1.5-.75 1.02-1.49 1.56-2.22-.97-4.41-7.96-9.46-12.11-11.82 8.55-4.3 18.6-2.03 22.98-.2C67.63 47.13 97.03 35.05 122 29 170.81 17.17 189.5.5 189.5.5c20.68 8.5 25.62 25.22 20.68 48.9Z" fill="${colors.hair.value}" stroke="#000" stroke-width="4"/>`,
3
+ mrT: (components, colors) => `<g fill="${colors.hair.value}"><path opacity=".1" d="M187.99 77.18c-8-6.4-21.84-7-27.5-6.5l-8-26.5c13.6 3.2 32 24 35.5 33Z"/><path d="M85.8 11.76S91.52 7.8 115.74 1.7c24.21-6.1 33.04-3.72 33.04-3.72l11.8 72.84s-8.05-.18-28.04 4.19c-20 4.38-29.56 9.67-29.56 9.67l-17.2-72.9Z"/><path d="M48.99 86.68c-6.8-41.6 23.33-68.17 37-75.5l16.98 73.5c-19.2-39.6-45.33-15.17-54 2Z"/><path opacity=".1" d="M67.49 130.68c-7.2-27.2 22-41.84 35.5-46-7-16.34-23-31-42.5-13-18 30.5-11 54-5.5 72l12.5-13Z"/></g>`,
4
+ dougFunny: (components, colors) => `<path d="M140 56c14.67-.67 40.4-8.8 26-36M114 54c14.67-.67 40.4-8.8 26-36M78 65c14.67-.67 40.4-8.8 26-36" stroke="${colors.hair.value}" stroke-width="4"/>`,
5
+ mrClean: (components, colors) => `<ellipse cx="147.85" cy="58.18" rx="6.86" ry="18.44" transform="rotate(117 147.85 58.18)" fill="#FCFDFF"/>`,
6
+ dannyPhantom: (components, colors) => `<path d="M123.79 17.49H123.94a96.78 96.78 0 0 1 62.07 24.36c14.06 12.4 22.45 26.87 25.19 36.73-4.06 2.32-11.01 4.31-19.88 5.95-9.68 1.78-21.3 3.08-33.15 4.01-23.7 1.86-48.2 2.2-59.63 1.96l-6.07-.13 4.8 3.71c2.5 1.93 5.83 3.28 9.34 4.22 3.55.95 7.42 1.54 11.14 1.87 3.82.34 7.55.42 10.64.34-10.59 8.16-24.06 14.44-37.35 19.09a225.88 225.88 0 0 1-39.83 9.92l-2.15.32.5 2.11c3.34 14.43 9.5 39.65 13.62 56.57 1.83 7.5 3.26 13.38 3.87 15.94 1.09 4.56 4.5 11.05 8.4 17.03 3.6 5.52 7.78 10.89 11.32 14.2l-7.84 31.81H49.37c8.34-12.71 10.1-27.4 8.4-42.98-1.84-16.87-7.76-35-14-53.17l-1.85-5.36c-5.69-16.46-11.36-32.88-14.43-48.6-3.4-17.44-3.56-33.75 2.83-48.09 10.34-23.21 28.66-36.7 47-44.12 18.37-7.45 36.61-8.76 46.46-7.71Z" fill="${colors.hair.value}" stroke="#000" stroke-width="4"/>`,
7
+ full: (components, colors) => `<path d="m-13.4 312.86-.62-1.64c-.56-1.55-1.35-3.84-2.23-6.74a163.21 163.21 0 0 1-5.28-23.98c-2.81-19.77-2.8-45.8 8.4-71.12 1.8-4.09 4.07-8.3 6.52-12.85 9.47-17.6 21.77-40.46 21.77-82.45 0-30.59 14.84-56.35 36.7-74.51 21.88-18.18 50.7-28.66 78.38-28.66 15.13 0 27.3 1.73 37.07 7.64 9.72 5.87 17.37 16.05 23.05 33.58a3.47 3.47 0 0 0 4.36 2.27c11.31-3.67 28.47.04 42.95 9.5 14.42 9.4 25.62 24.15 25.62 41.91 0 15.43-2.64 25.85-5.22 36-3.12 12.3-6.13 24.16-4 43.5.7 6.45 2.15 11.03 4.16 14.82 1.98 3.73 4.48 6.62 7.12 9.66l.05.07c6.28 7.25 9.13 13.22 10.06 18.47.92 5.23-.05 9.98-1.84 14.9-.9 2.48-2 4.97-3.15 7.59l-.1.22c-1.12 2.53-2.3 5.19-3.35 7.98-2.18 5.77-3.89 12.2-3.72 19.83.15 6.48 1.3 10.91 3.01 14.27 1.7 3.32 3.89 5.44 5.8 7.3l.05.05c1.74 1.68 3.2 3.1 4.27 5.1.96 1.78 1.67 4.13 1.79 7.66a172.14 172.14 0 0 1-87.4 23.9 110.86 110.86 0 0 1-7.28-.28c-6.15-9.4-11.75-24.88-16.1-40.8-4.21-15.46-7.18-31.08-8.3-41.4 37.08-10.72 60.32-48.98 54.73-88.46l-.01-.12a5.97 5.97 0 0 0-.08-.47 76.68 76.68 0 0 0-.43-2.25 486.97 486.97 0 0 0-6.53-28.2 276.64 276.64 0 0 0-7.45-24.2c-2.76-7.5-5.83-14.15-9.1-18.24l-.3-.37-.44-.2c-1.93-.83-3.94-1.77-6.03-2.74-9.93-4.62-21.84-10.17-37.26-10.78-18.78-.74-42.56 5.78-74.7 29.09l-2.02 1.46 1.95 1.57c15.92 12.83 19.37 29.86 18.63 44.3a89.2 89.2 0 0 1-5.24 25.1c-1.16-1.69-1.9-3.82-2.45-6.33a85.19 85.19 0 0 1-.96-5.45l-.05-.3c-.3-2-.63-4.08-1.1-6.09-.96-4.01-2.57-8.02-6.14-10.86-3.58-2.84-8.8-4.25-16.4-3.83l-2.22.13.46 2.18 11.36 53.31.02.08.03.09a79.8 79.8 0 0 0 19.91 32.81 65.49 65.49 0 0 1 1.54 2.68c1.01 1.82 2.37 4.38 3.76 7.33 2.82 5.94 5.66 13.24 6.2 19.2.57 6.05-.96 13.86-2.7 20.31a129.63 129.63 0 0 1-2.84 9.14c-5.03-2.4-9.53-2.23-13.38.01-4.16 2.43-7.21 7.06-9.48 12.22-4.15 9.42-6.14 21.64-7.06 29.22A601.65 601.65 0 0 1 6.2 320.1 353.85 353.85 0 0 1-9 314.64a190.8 190.8 0 0 1-4.4-1.77Z" fill="${colors.hair.value}" stroke="#000" stroke-width="3.82"/>`,
8
+ turban: (components, colors) => `<g stroke="#000" stroke-width="4"><path d="M222.73 100.8c0-66.1-36.46-110.8-80.87-110.8C84.96-10 27 11.34 27 112.25c0 24.97 10.66 43.58 25.56 57.29a42.88 42.88 0 0 1-3.5-4.92c-2.88-26.98 29.17-47.7 60.54-67.96 16.65-10.75 33.11-21.39 44.05-32.76 9.6 5.43 37.79 28.2 43.16 37.42 2.88 4.94 7.51 21.87 10.67 41.63 10.34-12.42 15.25-24.84 15.25-42.16Z" fill="${colors.hair.value}"/><path d="M154.26 63.25c13.18-11.95 32.89-39.21 31.62-56.92"/></g>`,
9
+ pixie: (components, colors) => `<g stroke="#000"><path d="m105.84 88.82 1.88.3v.08l-.04.16-.12.52c-.12.45-.3 1.09-.6 1.9a41.7 41.7 0 0 1-3.4 6.92c-3.17 5.32-8.7 12.66-18.31 21.6 29.97.74 55-8.92 72.82-19.04a156.35 156.35 0 0 0 21.71-14.87 118.43 118.43 0 0 0 7.5-6.7l.1-.1.01-.01 2.29-2.38.93 3.16-1.84.54 1.84-.54v.05l.05.13.15.52a817.06 817.06 0 0 1 2.69 9.28c1.75 6.14 4.14 14.58 6.66 23.77 5.03 18.35 10.6 39.81 12.7 51.97 3.49 20.32-1.91 35.74-5.1 44.87-.63 1.77-1.17 3.3-1.54 4.6.06.04.12.1.22.16.6.42 1.65.91 3.18 1.4 3.02.96 7.32 1.74 11.92 2.19 4.6.44 9.38.53 13.34.14 1.98-.2 3.7-.5 5.08-.92a6.85 6.85 0 0 0 2.58-1.27c.02-.08.03-.29-.02-.68-.1-.78-.4-1.87-.93-3.32-.8-2.15-1.97-4.8-3.35-7.88l-1.46-3.3c-3.93-8.94-8.65-20.56-9.68-32.4-1.15-13.16 1.45-24.42 3.79-34.54l.11-.48c2.39-10.34 4.38-19.32 2.34-28.42-3.1-13.8-7.32-25.3-13.8-33.57-6.42-8.17-15.13-13.27-27.5-14.21l-1.28-.1-.4-1.22c-5.7-17.57-13.38-29.05-23.18-36.17-9.8-7.12-21.96-10.05-36.94-10.05-27.7 0-57.5 10.52-79.88 28.72-22.35 18.18-37.14 43.9-35.2 74.33 2.13 33.6-.3 59.06-5.8 77.72-5 17-12.59 28.46-21.68 35.14 1.19.61 2.78 1.39 4.77 2.27 5.02 2.24 12.59 5.2 22.67 8.03 19.34 5.43 47.95 10.38 85.71 8.89-8.32-7.15-16.72-15.83-23.37-25-7.63-10.53-13.14-21.94-13.3-32.58-.19-12.62.67-45.67.93-52.5.62-15.9 10.82-28.15 20.54-36.3a96.6 96.6 0 0 1 18.96-12.34l.2-.1.13-.06.1-.05h.02v-.01l.8 1.74Zm0 0 1.88.3.56-3.5-3.23 1.46.79 1.74Zm100.23 126.57.03.04-.03-.04Z" fill="${colors.hair.value}" stroke-width="3.82"/><path d="M191 58c.5 4.5-.3 13.5-1.5 19.5" stroke-width="4"/></g>`,
10
+ };
@@ -0,0 +1,11 @@
1
+ export { base } from './base.js';
2
+ export { mouth } from './mouth.js';
3
+ export { eyebrows } from './eyebrows.js';
4
+ export { hair } from './hair.js';
5
+ export { eyes } from './eyes.js';
6
+ export { nose } from './nose.js';
7
+ export { ears } from './ears.js';
8
+ export { shirt } from './shirt.js';
9
+ export { earrings } from './earrings.js';
10
+ export { glasses } from './glasses.js';
11
+ export { facialHair } from './facialHair.js';
@@ -0,0 +1,11 @@
1
+ export { base } from './base.js';
2
+ export { mouth } from './mouth.js';
3
+ export { eyebrows } from './eyebrows.js';
4
+ export { hair } from './hair.js';
5
+ export { eyes } from './eyes.js';
6
+ export { nose } from './nose.js';
7
+ export { ears } from './ears.js';
8
+ export { shirt } from './shirt.js';
9
+ export { earrings } from './earrings.js';
10
+ export { glasses } from './glasses.js';
11
+ 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,10 @@
1
+ export const mouth = {
2
+ surprised: (components, colors) => `<path d="M36.05 54.9c10.83-1.97 17.18-13.95 14.97-26.15-2.2-12.2-12.35-21.19-23.18-19.23C17 11.48 10.65 23.46 12.86 35.66c2.2 12.2 12.35 21.2 23.19 19.23Z" fill="${colors.mouth.value}" stroke="${colors.mouth.value}" stroke-width="3.59"/><mask id="mouthSurprised-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="11" width="36" height="43"><ellipse cx="31.94" cy="32.21" rx="17.6" ry="21.26" transform="rotate(-10.26 31.94 32.2)" fill="#171921"/></mask><g mask="url(#mouthSurprised-a)"><ellipse cx="35.2" cy="50.22" rx="20.2" ry="18.3" transform="rotate(-10.26 35.2 50.22)" fill="#FC909F"/></g>`,
3
+ laughing: (components, colors) => `<path d="M62.8 25.18a34 34 0 0 0 1.12-11.85 2.98 2.98 0 0 0-4.08-2.51c-4.22 1.66-18.21 6.96-28.08 8.32-10.82 1.49-27.2-.32-31.95-.9a2.98 2.98 0 0 0-3.32 3.43 34 34 0 0 0 66.32 3.5Z" fill="${colors.mouth.value}" stroke="${colors.mouth.value}" stroke-width="4"/><mask id="mouthLaughing-a" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="-2" y="12" width="65" height="37"><path d="M61.8 12.2a32 32 0 0 1-63.52 7.85l63.51-7.86Z" fill="#171921"/></mask><g mask="url(#mouthLaughing-a)"><circle cx="34.52" cy="52.31" r="21.5" transform="rotate(-7.05 34.52 52.31)" fill="#FC909F"/></g>`,
4
+ nervous: (components, colors) => `<rect x="-6.75" y="17.47" width="70" height="24" rx="4" transform="rotate(-4 -6.75 17.47)" fill="${colors.mouth.value}"/><path d="m56.82 13.03-57.32 4 1.84 7a6 6 0 0 0 6.23 4.47 6 6 0 0 0-5.54 5.28l-.85 7.2 57.32-4.01-1.84-7a6 6 0 0 0-6.23-4.47 6 6 0 0 0 5.54-5.28l.85-7.2Z" fill="#fff"/><path d="M66.42 31.7 65.4 17.13a6.06 6.06 0 0 0-7.32-5.48c-6.94 1.49-20.22 4.13-29.82 4.8-9.6.68-23.1-.1-30.2-.6a6.06 6.06 0 0 0-6.48 6.45l1.02 14.57a6.06 6.06 0 0 0 7.32 5.48c6.94-1.49 20.22-4.13 29.82-4.8 9.6-.68 23.1.1 30.2.6a6.06 6.06 0 0 0 6.48-6.45Z" stroke="${colors.mouth.value}" stroke-width="4"/>`,
5
+ smile: (components, colors) => `<path d="M-.5 17.5c2.5 17 31 25 57 5.5" stroke="${colors.mouth.value}" stroke-width="4"/>`,
6
+ sad: (components, colors) => `<path d="M13 46c1.72-7.96 8.07-24.77 19.77-28.35 11.7-3.58 17.7 8.46 19.23 14.92" stroke="${colors.mouth.value}" stroke-width="4"/>`,
7
+ pucker: (components, colors) => `<path d="M26 16.7c4.17-2.34 21-5.3 21 1.5 0 8.5-11.5 8-11.5 8s13.04-3.16 10.5 6c-2.5 9-9.5 5.5-11.5 4.5" stroke="${colors.mouth.value}" stroke-width="4"/>`,
8
+ frown: (components, colors) => `<path d="M-5 41c3.21-7.96 15.1-24.77 37-28.35 21.9-3.58 33.13 8.46 36 14.92" stroke="${colors.mouth.value}" stroke-width="4"/>`,
9
+ smirk: (components, colors) => `<path d="M10 24.16c4.94 6.45 12.43 13.6 23.98 11.96 11.55-1.62 16.68-9.6 15.17-16.04" stroke="${colors.mouth.value}" stroke-width="4"/>`,
10
+ };
@@ -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
+ curve: (components, colors) => `<path d="M16.5 7c-.33 3.83 0 12.2 4 15 5 3.5-.5 12-10.5 10" stroke="#000" stroke-width="4"/>`,
3
+ pointed: (components, colors) => `<path d="M16.5 3c0 14 7 25 7 25S20 34 10 32" stroke="#000" stroke-width="4"/>`,
4
+ tound: (components, colors) => `<path d="M12.3 12.34c5.45-1.24 14.38.62 12.42 10.54-1.74 8.82-11.1 9.3-13.72 6.82" stroke="#000" stroke-width="4"/>`,
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentGroup } from '../types.js';
2
+ export declare const shirt: ComponentGroup;
@@ -0,0 +1,5 @@
1
+ export const shirt = {
2
+ open: (components, colors) => `<path d="M260.37 90.86H-12.54l.1-.2C-7.89 81.38.5 64.31 11.4 49.03c6.2-8.67 13.13-16.65 20.54-22.27 7.41-5.61 15.12-8.73 22.95-8.04 15.06 1.31 28.46 9.56 41.93 17.83l3.83 2.35c14.48 8.82 29.35 17.02 45.72 13.43 5.53-1.2 9.26-3.8 11.6-7.16 2.32-3.3 3.15-7.15 3.3-10.66.14-3.52-.4-6.85-.96-9.26a39.89 39.89 0 0 0-.75-2.78c3.63-3.64 7.47-5.77 11.43-6.73 4.3-1.03 8.89-.73 13.72.7 9.73 2.87 20.14 10.25 30.3 19.73 18.61 17.37 35.69 41.14 45.36 54.68Z" fill="${colors.shirt.value}" stroke="#000" stroke-width="4.27"/>`,
3
+ crew: (components, colors) => `<g stroke="#000" stroke-width="4"><path d="M260.7 91H-12.64C3.67 61.66 26.86 42.98 64.44 34.4c16.02-3.65 34.67-5.47 56.56-5.47 9.46 0 16.81 1.44 23.8 3.35 2.58.7 5.18 1.5 7.84 2.3 4.4 1.34 8.97 2.72 13.91 3.86l.14.03.15.01c46.12 3.8 73.78 24.3 93.85 52.5Z" fill="${colors.shirt.value}"/><path d="m52.93 36.58 9.15-19.6a1 1 0 0 1 1.25-.51c37.93 13.42 72.43 12.48 104.4 3.57a1 1 0 0 1 1.09.38l13.93 19.05a.98.98 0 0 1-.42 1.5c-33.6 13.2-96.67 10.95-128.91-3.07a.98.98 0 0 1-.49-1.32Z" fill="${colors.shirt.value}"/><path opacity=".75" d="m52.93 36.58 9.15-19.6a1 1 0 0 1 1.25-.51c37.93 13.42 72.43 12.48 104.4 3.57a1 1 0 0 1 1.09.38l13.93 19.05a.98.98 0 0 1-.42 1.5c-33.6 13.2-96.67 10.95-128.91-3.07a.98.98 0 0 1-.49-1.32Z" fill="#fff"/></g>`,
4
+ collared: (components, colors) => `<g stroke="#000" stroke-width="4"><path d="M126.77 67.58 128 66l-1.23 1.58 1.72 1.34 1.19-1.83v-.02l.05-.06.04-.05a28.57 28.57 0 0 1 .8-1.18 112.35 112.35 0 0 1 11.5-14.05c3.67-3.78 7.83-7.4 12.13-9.93 4.31-2.53 8.58-3.84 12.53-3.3C209.17 44.2 240.4 63 260.67 91h-273.3c16.3-29.34 39.49-48.02 77.07-56.59 1.6-.36 3.78-.25 6.5.38 2.7.63 5.77 1.73 9.09 3.19 6.62 2.9 14.02 7.16 20.97 11.56a355.78 355.78 0 0 1 25.24 17.63l.4.3.1.08.02.02h.01Z" fill="${colors.shirt.value}"/><path d="m52.61 37.08 5.17-19.23c.2-.78 1.22-1 1.76-.4C74.4 33.7 93.16 33.08 99.4 32.33c.84-.1 1.5.82 1.1 1.58L87.34 58.86c-.2.38-.62.6-1.04.5-3.95-.82-23.62-5.63-33.57-21.5a1 1 0 0 1-.12-.78ZM183.2 36.98 171.61 17.5c-.4-.66-1.37-.65-1.79 0-5.73 8.83-15.63 12.9-19.09 14.1-.62.22-.9.96-.57 1.53l13.5 22.81c.2.34.59.53.97.42 2.13-.61 9.46-3.67 18.54-18.34a1 1 0 0 0 .01-1.04Z" fill="${colors.shirt.value}"/><path d="m52.61 37.08 5.17-19.23c.2-.78 1.22-1 1.76-.4C74.4 33.7 93.16 33.08 99.4 32.33c.84-.1 1.5.82 1.1 1.58L87.34 58.86c-.2.38-.62.6-1.04.5-3.95-.82-23.62-5.63-33.57-21.5a1 1 0 0 1-.12-.78ZM183.2 36.98 171.61 17.5c-.4-.66-1.37-.65-1.79 0-5.73 8.83-15.63 12.9-19.09 14.1-.62.22-.9.96-.57 1.53l13.5 22.81c.2.34.59.53.97.42 2.13-.61 9.46-3.67 18.54-18.34a1 1 0 0 0 .01-1.04Z" fill="#fff" fill-opacity=".75"/><path d="m109.5 54.5-9-21.5-7 15 16 6.5ZM141 53.5l9-21.5 7 15-16 6.5ZM70.5 14l-12 3 10 6.5 2-9.5ZM160 14l11 3-7 6.5-4-9.5Z" fill="#000" stroke-linejoin="round"/></g>`,
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,64 @@
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
+ import { dimensions } from './meta/components.js';
7
+ export const style = {
8
+ meta: {
9
+ title: 'Avatar Illustration System',
10
+ creator: 'Micah Lanier',
11
+ source: 'https://www.figma.com/community/file/829741575478342595',
12
+ license: {
13
+ name: 'CC BY 4.0',
14
+ url: 'https://creativecommons.org/licenses/by/4.0/',
15
+ },
16
+ },
17
+ schema: schema,
18
+ create: ({ prng, options }) => {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
20
+ onPreCreate({ prng, options, preview: false });
21
+ const components = getComponents({ prng, options });
22
+ const colors = getColors({ prng, options });
23
+ onPostCreate({ prng, options, components, colors, preview: false });
24
+ return {
25
+ attributes: {
26
+ viewBox: '0 0 360 360',
27
+ fill: 'none',
28
+ 'shape-rendering': 'auto',
29
+ },
30
+ body: `<g transform="translate(80 23)">${(_b = (_a = components.base) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : ''}</g><g transform="translate(170 183)">${(_d = (_c = components.mouth) === null || _c === void 0 ? void 0 : _c.value(components, colors)) !== null && _d !== void 0 ? _d : ''}</g><g transform="translate(110 102)">${(_f = (_e = components.eyebrows) === null || _e === void 0 ? void 0 : _e.value(components, colors)) !== null && _f !== void 0 ? _f : ''}</g><g transform="translate(49 11)">${(_h = (_g = components.hair) === null || _g === void 0 ? void 0 : _g.value(components, colors)) !== null && _h !== void 0 ? _h : ''}</g><g transform="translate(142 119)">${(_k = (_j = components.eyes) === null || _j === void 0 ? void 0 : _j.value(components, colors)) !== null && _k !== void 0 ? _k : ''}</g><g transform="rotate(-8 1149.44 -1186.92)">${(_m = (_l = components.nose) === null || _l === void 0 ? void 0 : _l.value(components, colors)) !== null && _m !== void 0 ? _m : ''}</g><g transform="translate(84 154)">${(_p = (_o = components.ears) === null || _o === void 0 ? void 0 : _o.value(components, colors)) !== null && _p !== void 0 ? _p : ''}</g><g transform="translate(53 272)">${(_r = (_q = components.shirt) === null || _q === void 0 ? void 0 : _q.value(components, colors)) !== null && _r !== void 0 ? _r : ''}</g>`,
31
+ };
32
+ },
33
+ preview: ({ prng, options, property }) => {
34
+ var _a, _b;
35
+ const componentGroup = property.toString();
36
+ const colorGroup = property.toString().replace(/Color$/, '');
37
+ onPreCreate({ prng, options, preview: true });
38
+ const components = getComponents({ prng, options });
39
+ const colors = getColors({ prng, options });
40
+ onPostCreate({ prng, options, components, colors, preview: true });
41
+ if (componentGroup in components) {
42
+ const { width, height } = dimensions[componentGroup];
43
+ return {
44
+ attributes: {
45
+ viewBox: `0 0 ${width} ${height}`,
46
+ fill: 'none',
47
+ 'shape-rendering': 'auto',
48
+ },
49
+ body: (_b = (_a = components[componentGroup]) === null || _a === void 0 ? void 0 : _a.value(components, colors)) !== null && _b !== void 0 ? _b : '',
50
+ };
51
+ }
52
+ if (colorGroup in colors) {
53
+ return {
54
+ attributes: {
55
+ viewBox: `0 0 1 1`,
56
+ fill: 'none',
57
+ 'shape-rendering': 'auto',
58
+ },
59
+ body: `<rect width="1" height="1" fill="${colors[colorGroup].value}" />`,
60
+ };
61
+ }
62
+ return undefined;
63
+ },
64
+ };
@@ -1,12 +1,11 @@
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
+ preview: boolean;
9
+ };
10
+ export declare function onPostCreate({ prng, options, components, colors, preview, }: Props): void;
11
+ export {};
@@ -0,0 +1,6 @@
1
+ export function onPostCreate({ prng, options, components, colors, preview, }) {
2
+ // Ensure that the mouth remains visible. #132
3
+ if (components.facialHair && colors.facialHair.value === colors.mouth.value) {
4
+ colors.mouth.value = 'rgba(255, 255, 255, .2)';
5
+ }
6
+ }
@@ -1,9 +1,9 @@
1
- import { Prng, StyleOptions } from '@dicebear/core';
2
- import { Options } from '../options';
3
- declare type Props = {
4
- prng: Prng;
5
- options: StyleOptions<Options>;
6
- preview: boolean;
7
- };
8
- export declare function onPreCreate({ prng, options, preview }: Props): void;
9
- export {};
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
+ preview: boolean;
7
+ };
8
+ export declare function onPreCreate({ prng, options, preview }: Props): void;
9
+ export {};
@@ -0,0 +1,26 @@
1
+ export function onPreCreate({ prng, options, preview }) {
2
+ var _a;
3
+ // Prevent baseColor from being used a second time if possible.
4
+ options.baseColor =
5
+ options.baseColor && options.baseColor.length > 0
6
+ ? [prng.pick(options.baseColor)]
7
+ : [];
8
+ for (const colorName of [
9
+ 'eyebrows',
10
+ 'hair',
11
+ 'eyes',
12
+ 'nose',
13
+ 'ears',
14
+ 'shirt',
15
+ 'earrings',
16
+ 'glasses',
17
+ 'facialHair',
18
+ ]) {
19
+ // @ts-ignore
20
+ const colorOption = (_a = options[`${colorName}Color`]) !== null && _a !== void 0 ? _a : [];
21
+ const index = colorOption.indexOf(options.baseColor[0]);
22
+ if (colorOption.length > 1 && index > -1) {
23
+ colorOption.splice(index, 1);
24
+ }
25
+ }
26
+ }