@dotcraft/avatar 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +43 -0
  3. package/dist/AnimatedDecoration.d.ts +10 -0
  4. package/dist/AnimatedDecoration.d.ts.map +1 -0
  5. package/dist/AnimatedDecoration.js +43 -0
  6. package/dist/AnimatedDecoration.js.map +1 -0
  7. package/dist/AppearanceRig.d.ts +12 -0
  8. package/dist/AppearanceRig.d.ts.map +1 -0
  9. package/dist/AppearanceRig.js +9 -0
  10. package/dist/AppearanceRig.js.map +1 -0
  11. package/dist/Avatar.d.ts +22 -0
  12. package/dist/Avatar.d.ts.map +1 -0
  13. package/dist/Avatar.js +71 -0
  14. package/dist/Avatar.js.map +1 -0
  15. package/dist/DecorationShapes.d.ts +10 -0
  16. package/dist/DecorationShapes.d.ts.map +1 -0
  17. package/dist/DecorationShapes.js +8 -0
  18. package/dist/DecorationShapes.js.map +1 -0
  19. package/dist/Decorations.d.ts +15 -0
  20. package/dist/Decorations.d.ts.map +1 -0
  21. package/dist/Decorations.js +26 -0
  22. package/dist/Decorations.js.map +1 -0
  23. package/dist/Faces.d.ts +7 -0
  24. package/dist/Faces.d.ts.map +1 -0
  25. package/dist/Faces.js +8 -0
  26. package/dist/Faces.js.map +1 -0
  27. package/dist/HatDecorations.d.ts +5 -0
  28. package/dist/HatDecorations.d.ts.map +1 -0
  29. package/dist/HatDecorations.js +20 -0
  30. package/dist/HatDecorations.js.map +1 -0
  31. package/dist/HeldDecorations.d.ts +5 -0
  32. package/dist/HeldDecorations.d.ts.map +1 -0
  33. package/dist/HeldDecorations.js +5 -0
  34. package/dist/HeldDecorations.js.map +1 -0
  35. package/dist/MascotRig.d.ts +25 -0
  36. package/dist/MascotRig.d.ts.map +1 -0
  37. package/dist/MascotRig.js +58 -0
  38. package/dist/MascotRig.js.map +1 -0
  39. package/dist/ObjectDecorations.d.ts +5 -0
  40. package/dist/ObjectDecorations.d.ts.map +1 -0
  41. package/dist/ObjectDecorations.js +16 -0
  42. package/dist/ObjectDecorations.js.map +1 -0
  43. package/dist/accessories.css +14 -0
  44. package/dist/appearanceModel.d.ts +28 -0
  45. package/dist/appearanceModel.d.ts.map +1 -0
  46. package/dist/appearanceModel.js +58 -0
  47. package/dist/appearanceModel.js.map +1 -0
  48. package/dist/avatar.css +62 -0
  49. package/dist/characters.d.ts +6 -0
  50. package/dist/characters.d.ts.map +1 -0
  51. package/dist/characters.js +2 -0
  52. package/dist/characters.js.map +1 -0
  53. package/dist/composer/ComposerMascot.d.ts +3 -0
  54. package/dist/composer/ComposerMascot.d.ts.map +1 -0
  55. package/dist/composer/ComposerMascot.js +433 -0
  56. package/dist/composer/ComposerMascot.js.map +1 -0
  57. package/dist/composer/ComposerMascotShadow.d.ts +4 -0
  58. package/dist/composer/ComposerMascotShadow.d.ts.map +1 -0
  59. package/dist/composer/ComposerMascotShadow.js +7 -0
  60. package/dist/composer/ComposerMascotShadow.js.map +1 -0
  61. package/dist/composer/constants.d.ts +32 -0
  62. package/dist/composer/constants.d.ts.map +1 -0
  63. package/dist/composer/constants.js +50 -0
  64. package/dist/composer/constants.js.map +1 -0
  65. package/dist/composer/mascotHandoff.d.ts +3 -0
  66. package/dist/composer/mascotHandoff.d.ts.map +1 -0
  67. package/dist/composer/mascotHandoff.js +15 -0
  68. package/dist/composer/mascotHandoff.js.map +1 -0
  69. package/dist/composer/styles/energy.css +99 -0
  70. package/dist/composer/styles/expressions.css +20 -0
  71. package/dist/composer/styles/feedback.css +188 -0
  72. package/dist/composer/styles/focus.css +72 -0
  73. package/dist/composer/styles/foundation.css +287 -0
  74. package/dist/composer/styles/idle.css +438 -0
  75. package/dist/composer/styles/overdrive.css +264 -0
  76. package/dist/composer/styles/props.css +21 -0
  77. package/dist/composer/types.d.ts +40 -0
  78. package/dist/composer/types.d.ts.map +1 -0
  79. package/dist/composer/types.js +2 -0
  80. package/dist/composer/types.js.map +1 -0
  81. package/dist/composer/useComposerAvatarBehavior.d.ts +24 -0
  82. package/dist/composer/useComposerAvatarBehavior.d.ts.map +1 -0
  83. package/dist/composer/useComposerAvatarBehavior.js +72 -0
  84. package/dist/composer/useComposerAvatarBehavior.js.map +1 -0
  85. package/dist/composer/useComposerMotion.d.ts +2 -0
  86. package/dist/composer/useComposerMotion.d.ts.map +1 -0
  87. package/dist/composer/useComposerMotion.js +16 -0
  88. package/dist/composer/useComposerMotion.js.map +1 -0
  89. package/dist/composer/useComposerProfile.d.ts +7 -0
  90. package/dist/composer/useComposerProfile.d.ts.map +1 -0
  91. package/dist/composer/useComposerProfile.js +46 -0
  92. package/dist/composer/useComposerProfile.js.map +1 -0
  93. package/dist/decorationCatalog.d.ts +14 -0
  94. package/dist/decorationCatalog.d.ts.map +1 -0
  95. package/dist/decorationCatalog.js +37 -0
  96. package/dist/decorationCatalog.js.map +1 -0
  97. package/dist/decorationMotion.d.ts +35 -0
  98. package/dist/decorationMotion.d.ts.map +1 -0
  99. package/dist/decorationMotion.js +73 -0
  100. package/dist/decorationMotion.js.map +1 -0
  101. package/dist/environment.d.ts +6 -0
  102. package/dist/environment.d.ts.map +1 -0
  103. package/dist/environment.js +48 -0
  104. package/dist/environment.js.map +1 -0
  105. package/dist/index.d.ts +6 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +6 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/palette.d.ts +26 -0
  110. package/dist/palette.d.ts.map +1 -0
  111. package/dist/palette.js +35 -0
  112. package/dist/palette.js.map +1 -0
  113. package/dist/react.d.ts +6 -0
  114. package/dist/react.d.ts.map +1 -0
  115. package/dist/react.js +5 -0
  116. package/dist/react.js.map +1 -0
  117. package/dist/rig.css +265 -0
  118. package/dist/styles.css +13 -0
  119. package/dist/useEventReplay.d.ts +3 -0
  120. package/dist/useEventReplay.d.ts.map +1 -0
  121. package/dist/useEventReplay.js +15 -0
  122. package/dist/useEventReplay.js.map +1 -0
  123. package/dist/useGesture.d.ts +4 -0
  124. package/dist/useGesture.d.ts.map +1 -0
  125. package/dist/useGesture.js +59 -0
  126. package/dist/useGesture.js.map +1 -0
  127. package/package.json +55 -0
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Detail, Silhouette as S } from './DecorationShapes.js';
3
+ export function HatDecoration({ id }) {
4
+ switch (id) {
5
+ case 'baseball-cap': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M337 368c0-94 44-163 139-163 91 0 142 65 142 155 36 0 71 8 88 24 9 9-2 23-24 23H363c-24 0-31-15-26-39Z", fill: "#e87967" }), _jsx("path", { d: "M513 214c63 18 91 72 91 146h-51c0-82-9-116-40-146Z", fill: "#b94f50" }), _jsx("path", { d: "M358 370c113-15 249-20 315 8 23 9 28 20 7 20H363c-19 0-25-15-5-28Z", fill: "#b94f50" }), _jsxs(Detail, { children: [_jsx("path", { d: "M385 322c8-48 32-75 61-83", stroke: "#f5a18c", strokeWidth: "14", strokeLinecap: "round" }), _jsx("ellipse", { cx: "480", cy: "205", rx: "23", ry: "10", fill: "#b94f50" })] })] });
6
+ case 'bucket-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "m386 233 243 0 25 111 56 47c8 8 1 19-12 19H320c-13 0-20-11-10-20l52-48Z", fill: "#94bda6" }), _jsx("path", { d: "m386 233 243 0-10 25H391Z", fill: "#bed8c1" }), _jsx("path", { d: "m362 342 292 2 56 47c8 8 1 19-12 19H320c-13 0-20-11-10-20Z", fill: "#5b887a" }), _jsx(Detail, { children: _jsx("path", { d: "m380 323 261 0", stroke: "#bed8c1", strokeWidth: "11", strokeLinecap: "round" }) })] });
7
+ case 'beret': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M349 356c-54-6-57-73-4-112 40-30 95-48 151-43l5-26c2-13 23-11 22 3l-2 26c72 6 145 43 164 89 19 43-19 68-55 76l-16 32H370Z", fill: "#b17498" }), _jsx("path", { d: "M349 356c69 21 201 14 281-12l-16 57H370Z", fill: "#784c71" }), _jsx(Detail, { children: _jsx("path", { d: "M355 294c20-31 65-54 110-57", stroke: "#cf9db5", strokeWidth: "17", strokeLinecap: "round" }) })] });
8
+ case 'beanie': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M365 337c0-93 53-153 147-153s147 60 147 153l9 8v56H356v-56Z", fill: "#e9a653" }), _jsx("path", { d: "M540 187c82 14 119 76 119 150h-46c0-79-19-128-73-150Z", fill: "#bc753d" }), _jsx("rect", { x: "356", y: "337", width: "312", height: "64", rx: "19", fill: "#f7c676" }), _jsxs(Detail, { children: [_jsx("path", { d: "M383 371h53", stroke: "#e9a653", strokeWidth: "10", strokeLinecap: "round" }), _jsx("rect", { x: "568", y: "352", width: "44", height: "33", rx: "7", fill: "#bc753d" })] })] });
9
+ case 'top-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "m382 180 260 0-24 187h67c20 0 20 36 0 36H339c-20 0-20-36 0-36h67Z", fill: "#465069" }), _jsx("path", { d: "m569 180 73 0-24 187h-66Z", fill: "#293247" }), _jsx("path", { d: "M400 315h224l-6 52H406Z", fill: "#c96e85" }), _jsx("path", { d: "M339 384h346", stroke: "#293247", strokeWidth: "24", strokeLinecap: "round" }), _jsx(Detail, { children: _jsx("path", { d: "m411 207 8 68", stroke: "#6a758e", strokeWidth: "14", strokeLinecap: "round" }) })] });
10
+ case 'wizard-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M340 367h34c47-70 55-144 113-186 24-18 53-13 79-5-45 18-30 43-9 70l82 121h44c22 0 23 37 0 37H340c-22 0-22-37 0-37Z", fill: "#8773c1" }), _jsx("path", { d: "M524 184c-8 29 13 52 34 83l70 100h-70l-42-113c-13-33-15-52 8-70Z", fill: "#594b93" }), _jsx("path", { d: "M340 385h343", stroke: "#594b93", strokeWidth: "26", strokeLinecap: "round" }), _jsx(Detail, { children: _jsx("path", { d: "m474 274 12 23 26 4-19 19 5 26-24-12-24 12 5-26-19-19 26-4Z", fill: "#f4cc75" }) })] });
11
+ case 'chef-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M397 324c-70 4-93-82-39-116 27-18 51-9 67 1 10-72 147-77 170-7 74-32 125 64 77 101-14 11-29 16-45 18v79H397Z", fill: "#f5eee3" }), _jsx("path", { d: "M397 332h230v68H397Z", fill: "#d7caba" }), _jsx("path", { d: "M397 332h194v53H397Z", fill: "#fffaf1" }), _jsx(Detail, { children: _jsx("path", { d: "M420 264v39m91-62v62m90-36v36", stroke: "#d7caba", strokeWidth: "13", strokeLinecap: "round" }) })] });
12
+ case 'party-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "m494 192-111 195c-6 12 5 16 17 16h224c14 0 24-4 17-18L531 193c21-18 10-50-17-50-29 0-41 31-20 49Z", fill: "#ea9baf" }), _jsx("path", { d: "m450 270 120 0 21 36H430Zm-49 86h223l17 29c7 14-3 18-17 18H400c-12 0-23-4-17-16Z", fill: "#8075b7" }), _jsx("circle", { cx: "513", cy: "171", r: "28", fill: "#f5d07b" }), _jsx(Detail, { children: _jsx("path", { d: "m526 212 75 132", stroke: "#f6c4ce", strokeWidth: "11", strokeLinecap: "round" }) })] });
13
+ case 'crown': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M363 282c-7-20 9-31 24-18l56 54 51-86c8-15 27-15 36 0l51 86 56-54c15-13 31-2 24 18l-24 117H387Z", fill: "#efc65c" }), _jsx("path", { d: "M387 365h250v34H387Z", fill: "#c99139" }), _jsxs(Detail, { children: [_jsx("path", { d: "m512 305 26 30-26 30-26-30Z", fill: "#73b8cc" }), _jsx("path", { d: "m512 305 0 60-26-30Z", fill: "#a3d8df" }), _jsx("circle", { cx: "410", cy: "342", r: "8", fill: "#fff1af" }), _jsx("circle", { cx: "614", cy: "342", r: "8", fill: "#fff1af" })] })] });
14
+ case 'hard-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M358 361c0-94 42-154 133-163v-11c0-15 42-15 42 0v11c91 9 133 69 133 163h22c23 0 23 39 0 39H336c-23 0-23-39 0-39Z", fill: "#f5bd48" }), _jsx("path", { d: "M533 198c91 9 133 69 133 163h-48c0-86-24-135-85-163Z", fill: "#d68d32" }), _jsx("path", { d: "M494 192h36v169h-36Z", fill: "#ffdc79" }), _jsx("path", { d: "M336 382h352", stroke: "#d68d32", strokeWidth: "25", strokeLinecap: "round" }), _jsx(Detail, { children: _jsx("path", { d: "M390 326c2-41 21-70 43-87", stroke: "#ffdc79", strokeWidth: "14", strokeLinecap: "round" }) })] });
15
+ case 'nightcap': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M358 369c-1-99 40-172 141-172 109 0 161 48 157 110 40 5 46 54 12 68-31 13-55-19-40-43-15-17-36-26-51-30l49 67v32H358Z", fill: "#789cc9" }), _jsx("path", { d: "M499 197c83 0 161 48 157 110l-28 25c-20-29-53-40-81-43 19-16 39-24 63-20-25-39-57-57-111-72Z", fill: "#4c709f" }), _jsx("rect", { x: "355", y: "363", width: "276", height: "39", rx: "17", fill: "#dce8f4" }), _jsx("circle", { cx: "653", cy: "346", r: "31", fill: "#dce8f4" }), _jsxs(Detail, { children: [_jsx("circle", { cx: "432", cy: "296", r: "10", fill: "#dce8f4" }), _jsx("circle", { cx: "469", cy: "245", r: "9", fill: "#dce8f4" })] })] });
16
+ case 'straw-hat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M319 352c19-7 47-11 78-15l13-83c3-17 200-17 204 0l13 83c31 4 59 8 78 15 32 12 17 45-20 48-115 12-231 12-346 0-37-3-52-36-20-48Z", fill: "#e8c78a" }), _jsx("path", { d: "m405 302 214 0 8 35c-72 11-150 11-230 0Z", fill: "#c57568" }), _jsx("ellipse", { cx: "512", cy: "258", rx: "97", ry: "16", fill: "#f5dfb2" }), _jsx(Detail, { children: _jsx("path", { d: "M334 379q177 26 356 0", stroke: "#c49b5e", strokeWidth: "10", strokeLinecap: "round" }) })] });
17
+ default: return null;
18
+ }
19
+ }
20
+ //# sourceMappingURL=HatDecorations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HatDecorations.js","sourceRoot":"","sources":["../src/HatDecorations.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,MAAM,uBAAuB,CAAA;AAE/D,MAAM,UAAU,aAAa,CAAC,EAAE,EAAE,EAAqB;IACrD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,cAAc,CAAC,CAAC,OAAO,8BAC1B,KAAC,CAAC,IAAC,CAAC,EAAC,wGAAwG,EAAC,IAAI,EAAC,SAAS,GAAG,EAC/H,eAAM,CAAC,EAAC,oDAAoD,EAAC,IAAI,EAAC,SAAS,GAAG,EAC9E,eAAM,CAAC,EAAC,oEAAoE,EAAC,IAAI,EAAC,SAAS,GAAG,EAC9F,MAAC,MAAM,eAAC,eAAM,CAAC,EAAC,2BAA2B,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EAAA,kBAAS,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,IAAS,IAC1K,CAAA;QACH,KAAK,YAAY,CAAC,CAAC,OAAO,8BACxB,KAAC,CAAC,IAAC,CAAC,EAAC,yEAAyE,EAAC,IAAI,EAAC,SAAS,GAAG,EAChG,eAAM,CAAC,EAAC,2BAA2B,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,4DAA4D,EAAC,IAAI,EAAC,SAAS,GAAG,EAC3I,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,gBAAgB,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IACnG,CAAA;QACH,KAAK,OAAO,CAAC,CAAC,OAAO,8BACnB,KAAC,CAAC,IAAC,CAAC,EAAC,2HAA2H,EAAC,IAAI,EAAC,SAAS,GAAG,EAClJ,eAAM,CAAC,EAAC,0CAA0C,EAAC,IAAI,EAAC,SAAS,GAAG,EACpE,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,6BAA6B,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IAChH,CAAA;QACH,KAAK,QAAQ,CAAC,CAAC,OAAO,8BACpB,KAAC,CAAC,IAAC,CAAC,EAAC,6DAA6D,EAAC,IAAI,EAAC,SAAS,GAAG,EACpF,eAAM,CAAC,EAAC,uDAAuD,EAAC,IAAI,EAAC,SAAS,GAAG,EACjF,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,EACvE,MAAC,MAAM,eAAC,eAAM,CAAC,EAAC,aAAa,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EAAA,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,GAAG,IAAS,IACrK,CAAA;QACH,KAAK,SAAS,CAAC,CAAC,OAAO,8BACrB,KAAC,CAAC,IAAC,CAAC,EAAC,mEAAmE,EAAC,IAAI,EAAC,SAAS,GAAG,EAC1F,eAAM,CAAC,EAAC,2BAA2B,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,yBAAyB,EAAC,IAAI,EAAC,SAAS,GAAG,EACxG,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EACjF,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,eAAe,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IAClG,CAAA;QACH,KAAK,YAAY,CAAC,CAAC,OAAO,8BACxB,KAAC,CAAC,IAAC,CAAC,EAAC,oHAAoH,EAAC,IAAI,EAAC,SAAS,GAAG,EAC3I,eAAM,CAAC,EAAC,kEAAkE,EAAC,IAAI,EAAC,SAAS,GAAG,EAC5F,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EACjF,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,6DAA6D,EAAC,IAAI,EAAC,SAAS,GAAG,GAAS,IACvG,CAAA;QACH,KAAK,UAAU,CAAC,CAAC,OAAO,8BACtB,KAAC,CAAC,IAAC,CAAC,EAAC,8GAA8G,EAAC,IAAI,EAAC,SAAS,GAAG,EACrI,eAAM,CAAC,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,GAAG,EAChG,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,+BAA+B,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IAClH,CAAA;QACH,KAAK,WAAW,CAAC,CAAC,OAAO,8BACvB,KAAC,CAAC,IAAC,CAAC,EAAC,mGAAmG,EAAC,IAAI,EAAC,SAAS,GAAG,EAC1H,eAAM,CAAC,EAAC,kFAAkF,EAAC,IAAI,EAAC,SAAS,GAAG,EAC5G,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,EAClD,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,iBAAiB,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IACpG,CAAA;QACH,KAAK,OAAO,CAAC,CAAC,OAAO,8BACnB,KAAC,CAAC,IAAC,CAAC,EAAC,iGAAiG,EAAC,IAAI,EAAC,SAAS,GAAG,EACxH,eAAM,CAAC,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,GAAG,EAChD,MAAC,MAAM,eAAC,eAAM,CAAC,EAAC,6BAA6B,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,GAAG,IAAS,IACzN,CAAA;QACH,KAAK,UAAU,CAAC,CAAC,OAAO,8BACtB,KAAC,CAAC,IAAC,CAAC,EAAC,kHAAkH,EAAC,IAAI,EAAC,SAAS,GAAG,EACzI,eAAM,CAAC,EAAC,sDAAsD,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,GAAG,EAChI,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EACjF,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,2BAA2B,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IAC9G,CAAA;QACH,KAAK,UAAU,CAAC,CAAC,OAAO,8BACtB,KAAC,CAAC,IAAC,CAAC,EAAC,uHAAuH,EAAC,IAAI,EAAC,SAAS,GAAG,EAC9I,eAAM,CAAC,EAAC,8FAA8F,EAAC,IAAI,EAAC,SAAS,GAAG,EACxH,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,EACzH,MAAC,MAAM,eAAC,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,SAAS,GAAG,IAAS,IACnH,CAAA;QACH,KAAK,WAAW,CAAC,CAAC,OAAO,8BACvB,KAAC,CAAC,IAAC,CAAC,EAAC,iIAAiI,EAAC,IAAI,EAAC,SAAS,GAAG,EACxJ,eAAM,CAAC,EAAC,0CAA0C,EAAC,IAAI,EAAC,SAAS,GAAG,EAAA,kBAAS,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAG,EAChI,KAAC,MAAM,cAAC,eAAM,CAAC,EAAC,uBAAuB,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,GAAS,IAC1G,CAAA;QACH,OAAO,CAAC,CAAC,OAAO,IAAI,CAAA;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { HeldId } from './appearanceModel.js';
2
+ export declare function HeldDecoration({ id }: {
3
+ id: HeldId;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=HeldDecorations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeldDecorations.d.ts","sourceRoot":"","sources":["../src/HeldDecorations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,+BA6CpD"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function HeldDecoration({ id }) {
3
+ return _jsxs("g", { "data-held-decoration": id, strokeLinecap: "round", strokeLinejoin: "round", children: [id === 'task-board' && _jsx("g", { transform: "translate(233 640) scale(.8) translate(-840 -665)", children: _jsxs("g", { children: [_jsx("rect", { x: "718", y: "562", width: "244", height: "194", rx: "36", fill: "#fff", stroke: "#fff", strokeWidth: "30" }), _jsx("rect", { x: "718", y: "562", width: "244", height: "194", rx: "36", fill: "#fff", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "11" }), _jsx("path", { d: "M760 620h114", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "18", strokeLinecap: "round" }), _jsx("circle", { cx: "775", cy: "689", r: "14", fill: "var(--dca-held-mark, #3161f7)" }), _jsx("circle", { cx: "842", cy: "661", r: "14", fill: "var(--dca-held-accent, #f6b500)" }), _jsx("circle", { cx: "907", cy: "708", r: "14", fill: "var(--dca-held-mark, #3161f7)" }), _jsx("path", { d: "M789 683 828 667 893 699", stroke: "#202124", strokeWidth: "13", strokeLinecap: "round", strokeLinejoin: "round", opacity: ".72" })] }) }), id === 'wrench' && _jsx("g", { transform: "translate(233 670) rotate(-60) scale(.65) translate(-642 -817)", children: _jsxs("g", { children: [_jsx("path", { d: "M756 595c30-30 74-39 113-23l-56 56 46 46 56-56c16 39 7 83-23 113-32 32-80 39-119 20L674 850c-18 18-47 18-65 0s-18-47 0-65l99-99c-19-39-12-87 20-119Z", fill: "#fff", stroke: "#fff", strokeWidth: "34", strokeLinejoin: "round" }), _jsx("path", { d: "M756 595c30-30 74-39 113-23l-56 56 46 46 56-56c16 39 7 83-23 113-32 32-80 39-119 20L674 850c-18 18-47 18-65 0s-18-47 0-65l99-99c-19-39-12-87 20-119Z", fill: "#fff", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "13", strokeLinejoin: "round" }), _jsx("circle", { cx: "642", cy: "817", r: "17", fill: "var(--dca-held-accent, #f6b500)" }), _jsx("path", { d: "M706 752 774 684", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "20", strokeLinecap: "round", opacity: ".78" })] }) }), id === 'shield' && _jsx("g", { transform: "translate(233 635) scale(.8) translate(-817 -690)", children: _jsxs("g", { children: [_jsx("path", { d: "M817 553 929 594v76c0 80-46 134-112 162-66-28-112-82-112-162v-76Z", fill: "#fff", stroke: "#fff", strokeWidth: "30", strokeLinejoin: "round" }), _jsx("path", { d: "M817 553 929 594v76c0 80-46 134-112 162-66-28-112-82-112-162v-76Z", fill: "#fff", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "11", strokeLinejoin: "round" }), _jsx("path", { d: "M761 683 802 722 881 632", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "28", strokeLinecap: "round", strokeLinejoin: "round" })] }) }), id === 'magnifier' && _jsx("g", { transform: "translate(233 670) rotate(-18) scale(.85) translate(-862 -735)", children: _jsx("g", { children: _jsxs("g", { children: [_jsx("path", { d: "M862 646v112", stroke: "#fff", strokeWidth: "48", strokeLinecap: "round" }), _jsx("path", { d: "M862 646v112", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "28", strokeLinecap: "round" }), _jsx("circle", { cx: "862", cy: "562", r: "82", fill: "#fff", stroke: "#fff", strokeWidth: "30" }), _jsx("circle", { cx: "862", cy: "562", r: "82", fill: "#fff", fillOpacity: ".72", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "18" }), _jsx("path", { d: "M828 534c21-22 54-30 82-19", stroke: "#fff", strokeWidth: "12", strokeLinecap: "round", opacity: ".9" })] }) }) }), id === 'control-panel' && _jsx("g", { transform: "translate(233 640) scale(.8) translate(-839 -686)", children: _jsxs("g", { children: [_jsx("rect", { x: "714", y: "592", width: "250", height: "190", rx: "38", fill: "#fff", stroke: "#fff", strokeWidth: "30" }), _jsx("rect", { x: "714", y: "592", width: "250", height: "190", rx: "38", fill: "#fff", stroke: "var(--dca-held-mark, #3161f7)", strokeWidth: "11" }), _jsx("path", { d: "M765 650h148", stroke: "#202124", strokeWidth: "14", strokeLinecap: "round", opacity: ".62" }), _jsx("path", { d: "M765 718h148", stroke: "#202124", strokeWidth: "14", strokeLinecap: "round", opacity: ".62" }), _jsx("circle", { cx: "818", cy: "650", r: "23", fill: "var(--dca-held-mark, #3161f7)", stroke: "#fff", strokeWidth: "8" }), _jsx("circle", { cx: "872", cy: "718", r: "23", fill: "var(--dca-held-accent, #f6b500)", stroke: "#fff", strokeWidth: "8" })] }) })] });
4
+ }
5
+ //# sourceMappingURL=HeldDecorations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeldDecorations.js","sourceRoot":"","sources":["../src/HeldDecorations.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,cAAc,CAAC,EAAE,EAAE,EAAkB;IACnD,OAAO,qCAAyB,EAAE,EAAE,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,aAC7E,EAAE,KAAK,YAAY,IAAI,YAAG,SAAS,EAAC,mDAAmD,YAAC,wBACzF,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,GAAG,EACpG,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,GAAG,EAC7H,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EACvG,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,+BAA+B,GAAG,EACxE,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,iCAAiC,GAAG,EAC1E,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,+BAA+B,GAAG,EACxE,eAAM,CAAC,EAAC,0BAA0B,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,GAAG,IAChI,GACF,EACC,EAAE,KAAK,QAAQ,IAAI,YAAG,SAAS,EAAC,gEAAgE,YAAC,wBAClG,eAAM,CAAC,EAAC,sJAAsJ,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,GAAG,EACnO,eAAM,CAAC,EAAC,sJAAsJ,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,GAAG,EAC5P,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,iCAAiC,GAAG,EAC1E,eAAM,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,GAAG,IACvH,GACF,EACC,EAAE,KAAK,QAAQ,IAAI,YAAG,SAAS,EAAC,mDAAmD,YAAC,wBACrF,eAAM,CAAC,EAAC,mEAAmE,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,GAAG,EAChJ,eAAM,CAAC,EAAC,mEAAmE,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,GAAG,EACzK,eAAM,CAAC,EAAC,0BAA0B,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,IACxI,GACF,EACC,EAAE,KAAK,WAAW,IAAI,YAAG,SAAS,EAAC,gEAAgE,YAAC,sBACrG,wBACE,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EAC9E,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,GAAG,EACvG,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,GAAG,EAC9E,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,GAAG,EACzH,eAAM,CAAC,EAAC,4BAA4B,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,GAAG,IACvG,GACF,GACF,EACC,EAAE,KAAK,eAAe,IAAI,YAAG,SAAS,EAAC,mDAAmD,YAAC,wBAC5F,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,IAAI,GAAG,EACpG,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,+BAA+B,EAAC,WAAW,EAAC,IAAI,GAAG,EAC7H,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,GAAG,EAC/F,eAAM,CAAC,EAAC,cAAc,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,GAAG,EAC/F,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,+BAA+B,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,GAAG,EACtG,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,iCAAiC,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,GAAG,IACtG,GACF,IACE,CAAA;AACN,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type CSSProperties, type JSX, type ReactNode } from 'react';
2
+ export type MascotExpression = 'neutral' | 'happy' | 'operator' | 'sleep';
3
+ export type MascotLight = 'default' | 'error' | 'success';
4
+ interface MascotRobotProps {
5
+ baseFace?: number;
6
+ held?: ReactNode;
7
+ accessory?: ReactNode;
8
+ top?: ReactNode;
9
+ surface?: ReactNode;
10
+ expression?: MascotExpression;
11
+ light?: MascotLight;
12
+ size?: number;
13
+ className?: string;
14
+ style?: CSSProperties;
15
+ /**
16
+ * Recolors the body / arm / face-mark gradients from the profile's palette. The antenna
17
+ * deliberately stays brand-yellow so its error/success status semantics survive.
18
+ */
19
+ avatar?: {
20
+ palette: number;
21
+ };
22
+ }
23
+ export declare function MascotRig({ expression, light, size, className, style, avatar, top, surface, baseFace, accessory, held }: MascotRobotProps): JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=MascotRig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MascotRig.d.ts","sourceRoot":"","sources":["../src/MascotRig.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM3E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;AAEzE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAEzD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7B;AAuBD,wBAAgB,SAAS,CAAC,EACxB,UAAsB,EACtB,KAAiB,EACjB,IAAS,EACT,SAAS,EACT,KAAK,EACL,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAChD,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAsIhC"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ import { Faces } from './Faces.js';
4
+ import { mascotPaletteOf } from './palette.js';
5
+ function mixHex(a, b, amount) {
6
+ const left = parseHex(a);
7
+ const right = parseHex(b);
8
+ const ratio = Math.max(0, Math.min(1, amount));
9
+ const mix = (from, to) => Math.round(from + (to - from) * ratio);
10
+ return `#${toHex(mix(left.r, right.r))}${toHex(mix(left.g, right.g))}${toHex(mix(left.b, right.b))}`;
11
+ }
12
+ function parseHex(hex) {
13
+ const normalized = hex.trim().replace(/^#/, '');
14
+ return {
15
+ r: Number.parseInt(normalized.slice(0, 2), 16),
16
+ g: Number.parseInt(normalized.slice(2, 4), 16),
17
+ b: Number.parseInt(normalized.slice(4, 6), 16)
18
+ };
19
+ }
20
+ function toHex(value) {
21
+ return value.toString(16).padStart(2, '0');
22
+ }
23
+ export function MascotRig({ expression = 'neutral', light = 'default', size = 48, className, style, avatar, top, surface, baseFace, accessory, held }) {
24
+ const uid = useId().replace(/:/g, '');
25
+ const blue = `dca-part-blue-${uid}`;
26
+ const blueMark = `dca-part-blue-mark-${uid}`;
27
+ const yellow = `dca-part-yellow-${uid}`;
28
+ const softShadow = `dca-part-soft-shadow-${uid}`;
29
+ const innerLift = `dca-part-inner-lift-${uid}`;
30
+ const laptopClip = `dca-part-laptop-clip-${uid}`;
31
+ const lightFill = light === 'error' ? 'var(--dca-error, #dc2626)' : light === 'success' ? 'var(--dca-success, #16a34a)' : `url(#${yellow})`;
32
+ const glowFill = light === 'error' ? 'var(--dca-error, #dc2626)' : light === 'success' ? 'var(--dca-success, #16a34a)' : '#f6b500';
33
+ const palette = mascotPaletteOf(avatar);
34
+ const body0 = palette.bodyD;
35
+ const body1 = palette.bodyM;
36
+ const body2 = palette.bodyL;
37
+ const mark0 = palette.markD;
38
+ const mark1 = palette.markM;
39
+ const mark2 = palette.markL;
40
+ const softShadowColor = palette.shadow;
41
+ const innerLiftColor = avatar ? palette.shadow : '#163a88';
42
+ const raisedArmLeft = avatar ? mixHex(palette.bodyD, palette.bodyM, 0.22) : '#3161f7';
43
+ const raisedArmRight = avatar ? mixHex(palette.bodyM, palette.bodyL, 0.56) : '#7a96fb';
44
+ const propMark = avatar ? palette.markD : '#3161f7';
45
+ const laptopLine = palette.markL;
46
+ const svgStyle = {
47
+ '--dca-held-mark': `url(#${blueMark})`,
48
+ '--dca-held-accent': `url(#${yellow})`,
49
+ '--dca-part-body-paint': `url(#${blue})`,
50
+ '--dca-part-raised-arm-left': raisedArmLeft,
51
+ '--dca-part-raised-arm-right': raisedArmRight,
52
+ '--dca-part-shadow-color': softShadowColor,
53
+ overflow: 'visible',
54
+ ...style
55
+ };
56
+ return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 1024 1024", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className ? `dca-part-robot ${className}` : 'dca-part-robot', "data-expression": expression, style: svgStyle, "aria-hidden": "true", children: [_jsxs("defs", { children: [_jsxs("linearGradient", { className: "dca-paint-body", id: blue, x1: "279", y1: "766", x2: "736", y2: "334", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: body0 }), _jsx("stop", { offset: ".46", stopColor: body1 }), _jsx("stop", { offset: "1", stopColor: body2 })] }), _jsxs("linearGradient", { className: "dca-paint-mark", id: blueMark, x1: "380", y1: "696", x2: "492", y2: "557", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: mark0 }), _jsx("stop", { offset: ".55", stopColor: mark1 }), _jsx("stop", { offset: "1", stopColor: mark2 })] }), _jsxs("linearGradient", { id: yellow, x1: "481", y1: "174", x2: "617", y2: "713", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: "#ffcf11" }), _jsx("stop", { offset: "1", stopColor: "#f6b500" })] }), _jsx("filter", { id: softShadow, x: "-12%", y: "-12%", width: "124%", height: "124%", children: _jsx("feDropShadow", { dx: "0", dy: "18", stdDeviation: "24", floodColor: softShadowColor, floodOpacity: ".18" }) }), _jsx("filter", { id: innerLift, x: "-8%", y: "-8%", width: "116%", height: "116%", children: _jsx("feDropShadow", { dx: "0", dy: "10", stdDeviation: "16", floodColor: innerLiftColor, floodOpacity: ".1" }) }), _jsx("clipPath", { id: laptopClip, children: _jsx("rect", { x: "358", y: "716", width: "308", height: "128", rx: "8" }) })] }), _jsxs("g", { transform: "translate(512 528) scale(1.3) translate(-512 -512)", children: [_jsxs("g", { filter: `url(#${softShadow})`, children: [_jsx("rect", { x: "201", y: "365", width: "622", height: "513", rx: "151", fill: "#fff" }), _jsx("rect", { className: "dca-part-arm-l-w", x: "165", y: "472", width: "136", height: "256", rx: "58", fill: "#fff" }), _jsx("rect", { className: "dca-part-arm-r-w", x: "723", y: "472", width: "136", height: "256", rx: "58", fill: "#fff" }), !top && _jsx("rect", { x: "438", y: "270", width: "148", height: "182", rx: "2", fill: "#fff" }), !top && _jsx("circle", { className: "dca-part-antenna-w", cx: "512", cy: "229", r: "116", fill: "#fff" })] }), _jsxs("g", { filter: `url(#${innerLift})`, children: [_jsx("rect", { x: "243", y: "408", width: "538", height: "426", rx: "113", fill: `url(#${blue})` }), _jsx("rect", { className: "dca-part-arm-r-b", x: "746", y: "514", width: "90", height: "171", rx: "19", fill: `url(#${blue})` }), !top && _jsx("rect", { x: "479", y: "337", width: "66", height: "119", rx: "6", fill: `url(#${blue})` })] }), surface, _jsx("rect", { x: "295", y: "464", width: "434", height: "315", rx: "78", fill: "#fff" }), !top && _jsx("circle", { className: "dca-part-glow", cx: "512", cy: "229", r: "96", fill: glowFill }), top ?? _jsx("circle", { className: "dca-part-light", cx: "512", cy: "229", r: "73", fill: lightFill }), _jsxs("g", { className: "dca-part-arm-l", children: [_jsx("rect", { className: "dca-part-arm-l-b", x: "188", y: "514", width: "90", height: "171", rx: "19", fill: `url(#${blue})`, filter: `url(#${innerLift})` }), held] }), accessory, _jsx("g", { className: "dca-face-motion", children: _jsx(Faces, { baseFace: baseFace, mark: `url(#${blueMark})`, accent: `url(#${yellow})` }) }), _jsxs("g", { className: "dca-part-prop-laptop", transform: "rotate(-2.5 512 800)", children: [_jsxs("g", { filter: `url(#${softShadow})`, children: [_jsx("rect", { x: "338", y: "698", width: "348", height: "164", rx: "16", fill: "#1d2433", stroke: "#fff", strokeWidth: "20" }), _jsx("rect", { x: "300", y: "862", width: "424", height: "26", rx: "13", fill: "#fff" })] }), _jsx("g", { clipPath: `url(#${laptopClip})`, children: _jsxs("g", { className: "dca-part-laptop-lines", strokeLinecap: "round", strokeWidth: "16", fill: "none", children: [_jsx("path", { d: "M382 744h118", stroke: laptopLine }), _jsx("path", { d: "M382 780h170", stroke: "#5fd3a6" }), _jsx("path", { d: "M382 816h84", stroke: laptopLine, opacity: "0.75" }), _jsx("path", { className: "dca-part-laptop-caret", d: "M478 816h30", stroke: "#ffcf11" }), _jsx("path", { d: "M382 852h140", stroke: "#5fd3a6", opacity: "0.8" }), _jsx("path", { d: "M382 888h96", stroke: laptopLine })] }) })] }), _jsxs("g", { className: "dca-part-prop-sign", filter: `url(#${softShadow})`, children: [_jsx("rect", { x: "866", y: "356", width: "24", height: "150", rx: "12", fill: "#fff" }), _jsx("rect", { x: "758", y: "190", width: "240", height: "170", rx: "26", fill: "#fff" }), _jsx("path", { d: "M843 247a37 37 0 0 1 70 12c0 24-36 36-36 36", stroke: propMark, strokeWidth: "26", fill: "none", strokeLinecap: "round" }), _jsx("circle", { cx: "878", cy: "343", r: "15", fill: propMark })] })] })] }));
57
+ }
58
+ //# sourceMappingURL=MascotRig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MascotRig.js","sourceRoot":"","sources":["../src/MascotRig.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PrimaryId } from './appearanceModel.js';
2
+ export declare function ObjectDecoration({ id }: {
3
+ id: PrimaryId;
4
+ }): import("react").JSX.Element | null;
5
+ //# sourceMappingURL=ObjectDecorations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDecorations.d.ts","sourceRoot":"","sources":["../src/ObjectDecorations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGrD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,SAAS,CAAA;CAAE,sCAmDzD"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Detail, Silhouette as S } from './DecorationShapes.js';
3
+ export function ObjectDecoration({ id }) {
4
+ switch (id) {
5
+ case 'poop': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M393 315c-17-37 10-65 57-67-12-33 15-48 39-53 21-5 29-17 27-35 52 20 69 43 55 75 47 0 72 35 52 73 70 9 81 92 8 92H389c-67 0-62-77 4-85Z", fill: "#a97b5f" }), _jsx("path", { d: "M397 313c64 19 157 22 227-5-9 32-171 60-227 5Zm53-65c35 16 80 15 121-13-1 31-82 49-121 13Z", fill: "#805840" }), _jsx(Detail, { children: _jsx("path", { d: "M391 365h142M468 290h37", stroke: "#c49976", strokeWidth: "14", strokeLinecap: "round" }) })] });
6
+ case 'banana': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M350 243c15 80 71 93 143 65 59-24 100-64 131-119l11-23 32 8-5 25c8 89-61 185-164 202-100 17-172-45-174-135l-7-21 24-15Z", fill: "#f3cf62" }), _jsx("path", { d: "M350 243c15 80 71 93 143 65 59-24 100-64 131-119-28 112-139 176-204 145-37-18-58-49-70-91Z", fill: "#dbaa40" }), _jsx("path", { d: "m624 189 11-23 32 8-5 25Zm-300 77-7-21 24-15 9 13 5 26Z", fill: "#89705a" }), _jsx(Detail, { children: _jsx("path", { d: "M422 375c81 23 170-30 209-107", stroke: "#ffe7a0", strokeWidth: "12", strokeLinecap: "round", fill: "none" }) })] });
7
+ case 'fried-egg': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M343 330c-32-39 8-82 54-76 33-47 99-37 124-12 73-34 130 5 137 37 53 0 71 60 32 80-4 37-58 44-91 39H427c-39 6-101-25-84-68Z", fill: "#fff9e8" }), _jsx("path", { d: "M344 351c40 33 121 28 168 26 76 3 129 1 178-18-4 37-58 44-91 39H427c-34 5-87-18-83-47Z", fill: "#e6d9bb" }), _jsx("ellipse", { cx: "513", cy: "299", rx: "72", ry: "56", fill: "#f3be43" }), _jsx(Detail, { children: _jsx("path", { d: "M475 283c9-14 24-18 38-18", stroke: "#ffe39a", strokeWidth: "13", strokeLinecap: "round" }) })] });
8
+ case 'rubber-duck': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M403 277c-13-10-20-29-17-47 8-57 94-71 121-21 16 28 5 52-5 64 42 17 83 19 115 4l39-25c13-8 22 0 16 15l-20 49c16 51-24 87-83 87H460c-58 0-89-47-57-85l-40-8c-24-5-28-21-3-27Z", fill: "#f6d05e" }), _jsx("path", { d: "M416 354c47 32 184 26 236-38 16 51-24 87-83 87H460c-38 0-65-20-66-44Z", fill: "#e4ae3e" }), _jsx("path", { d: "m407 277-47 6c-25 6-21 22 3 27l44 8c20-2 20-35 0-41Z", fill: "#e58b4b" }), _jsx("circle", { cx: "431", cy: "246", r: "9", fill: "#6e563e" }), _jsx(Detail, { children: _jsx("path", { d: "M500 318c16-8 51-8 63 7-11 22-39 27-63 16", stroke: "#e4ae3e", strokeWidth: "12", strokeLinecap: "round", fill: "none" }) })] });
9
+ case 'paper-boat': return _jsxs(_Fragment, { children: [_jsx(S, { d: "m330 297 74 0 102-115 118 115h70l-84 102H414Z", fill: "#d6e7eb" }), _jsx("path", { d: "m404 297 102-115 7 115Z", fill: "#f1f7f5" }), _jsx("path", { d: "m506 182 118 115H513Z", fill: "#92b5c1" }), _jsx("path", { d: "m330 297 182 50 182-50-84 102H414Z", fill: "#92b5c1" }), _jsx("path", { d: "m330 297 182 50-98 52Z", fill: "#d6e7eb" }), _jsx(Detail, { children: _jsx("path", { d: "m512 347 98 52", stroke: "#7a9eac", strokeWidth: "6" }) })] });
10
+ case 'traffic-cone': return _jsxs(_Fragment, { children: [_jsx(S, { d: "m485 211-80 151h-44c-18 0-21 37 0 37h302c21 0 18-37 0-37h-44l-80-151c-8-15-46-15-54 0Z", fill: "#ed985f" }), _jsx("path", { d: "m445 287 134 0 22 41H423Z", fill: "#fff0dd" }), _jsx("path", { d: "m519 204 100 158h-45Z", fill: "#c96c43", opacity: ".35" }), _jsx("path", { d: "M361 380h302", stroke: "#c96c43", strokeWidth: "31", strokeLinecap: "round" }), _jsx(Detail, { children: _jsx("path", { d: "m486 239-12 22", stroke: "#ffc699", strokeWidth: "12", strokeLinecap: "round" }) })] });
11
+ case 'sprout': return _jsxs(_Fragment, { children: [_jsx(S, { d: "M501 399v-91c-93 26-151-28-157-93 76-19 143 12 167 65 13-87 76-117 148-99-8 83-58 130-134 126v92Z", fill: "#89b875" }), _jsx("path", { d: "M501 399v-91c-78 21-137-17-154-73 74 49 110 45 164 45 44-8 99-40 145-84-21 78-59 114-131 111v92Z", fill: "#537f59" }), _jsx(Detail, { children: _jsx("path", { d: "m378 236 114 57m49-12 79-69", stroke: "#b5d38f", strokeWidth: "10", strokeLinecap: "round" }) })] });
12
+ case 'donut': return _jsxs(_Fragment, { children: [_jsx("path", { d: "M512 170a116 116 0 1 1 0 232 116 116 0 0 1 0-232Zm0 74a42 42 0 1 0 0 84 42 42 0 0 0 0-84Z", fill: "#dbab70", fillRule: "evenodd", stroke: "#fff", strokeWidth: "18", paintOrder: "stroke fill" }), _jsx("path", { d: "M403 322c49 72 169 73 218-4-14 51-56 84-109 84-52 0-94-31-109-80Z", fill: "#bf8456" }), _jsx("path", { d: "M396 284c0-153 231-153 232 0-2 23-26 20-33 0-9-27-13 5-31 4-6 0-10-3-10-14-13-47-75-41-83 2-4 19-18 27-25 6-11-32-20 22-39 18-8-1-11-8-11-16Z", fill: "#e5a0b3" }), _jsx(Detail, { children: _jsx("path", { d: "m449 230 12 9m58-41 1 14m55 21-9 10", stroke: "#fff0ce", strokeWidth: "10", strokeLinecap: "round" }) })] });
13
+ default: return null;
14
+ }
15
+ }
16
+ //# sourceMappingURL=ObjectDecorations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDecorations.js","sourceRoot":"","sources":["../src/ObjectDecorations.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ .dca-part-held {
2
+ opacity: 1;
3
+ transition: opacity 150ms ease 460ms;
4
+ }
5
+ .dca-robot:is([data-held-state='stowed'], [data-exiting='true']) .dca-part-held {
6
+ opacity: 0;
7
+ transition: opacity 140ms ease;
8
+ }
9
+ .dca-robot[data-gesture='blink'] .dca-part-caret { animation: none !important; }
10
+
11
+ /* Lift an upright tool beside the face rather than sweeping it across the screen. */
12
+ .dca-robot[data-held-state='holding'] .dca-action-celebrate :is(.dca-part-arm-l-w, .dca-part-arm-l) {
13
+ transform: translate(30px, -65px) rotate(20deg);
14
+ }
@@ -0,0 +1,28 @@
1
+ export declare const primaryIds: readonly ["none", "baseball-cap", "bucket-hat", "beret", "beanie", "top-hat", "wizard-hat", "chef-hat", "party-hat", "crown", "hard-hat", "nightcap", "straw-hat", "poop", "banana", "fried-egg", "rubber-duck", "paper-boat", "traffic-cone", "sprout", "donut"];
2
+ export declare const heldIds: readonly ["task-board", "wrench", "shield", "magnifier", "control-panel"];
3
+ export type HeldId = typeof heldIds[number];
4
+ export declare const secondaryIds: readonly ["none", "forehead-goggles", "task-board", "wrench", "shield", "magnifier", "control-panel"];
5
+ export type PrimaryId = typeof primaryIds[number];
6
+ export type SecondaryId = typeof secondaryIds[number];
7
+ export type DecorationId = Exclude<PrimaryId | SecondaryId, 'none'>;
8
+ export interface Appearance {
9
+ version: 2;
10
+ palette: number;
11
+ baseFace: number;
12
+ primary: PrimaryId;
13
+ secondary: SecondaryId;
14
+ }
15
+ export declare const compatibility: Record<PrimaryId, readonly SecondaryId[]>;
16
+ export declare function isCompatible(primary: PrimaryId, secondary: SecondaryId): boolean;
17
+ export declare function withPrimary(appearance: Appearance, primary: PrimaryId): Appearance;
18
+ export declare function hashSeed(seed: string): number;
19
+ export declare function isHeld(id: SecondaryId): id is HeldId;
20
+ export declare const originalAppearance: Appearance;
21
+ export declare function normalizeName(name: string): string;
22
+ export declare function deriveAppearance(name: string): Appearance;
23
+ export declare function sampleSeed(seed: string, round: number, index: number): string;
24
+ export declare function appearanceWall(seed: string, round?: number): {
25
+ id: string;
26
+ appearance: Appearance;
27
+ }[];
28
+ //# sourceMappingURL=appearanceModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearanceModel.d.ts","sourceRoot":"","sources":["../src/appearanceModel.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,mQAAoQ,CAAA;AAC3R,eAAO,MAAM,OAAO,2EAA4E,CAAA;AAChG,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AAC3C,eAAO,MAAM,YAAY,uGAAoD,CAAA;AAC7E,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AACjD,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,WAAW,EAAE,MAAM,CAAC,CAAA;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,SAAS,EAAE,WAAW,CAAA;CACvB;AAID,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAUnE,CAAA;AACD,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,WAEtE;AACD,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,UAAU,CAElF;AACD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO7C;AACD,wBAAgB,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,EAAE,IAAI,MAAM,CAAuD;AAC5G,eAAO,MAAM,kBAAkB,EAAE,UAAyF,CAAA;AAC1H,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAwC;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CASzD;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEpE;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI;;;IAKrD"}
@@ -0,0 +1,58 @@
1
+ // Frozen v1 draw order. IDs are serialized; positions are only sampling weights.
2
+ export const primaryIds = ['none', 'baseball-cap', 'bucket-hat', 'beret', 'beanie', 'top-hat', 'wizard-hat', 'chef-hat', 'party-hat', 'crown', 'hard-hat', 'nightcap', 'straw-hat', 'poop', 'banana', 'fried-egg', 'rubber-duck', 'paper-boat', 'traffic-cone', 'sprout', 'donut'];
3
+ export const heldIds = ['task-board', 'wrench', 'shield', 'magnifier', 'control-panel'];
4
+ export const secondaryIds = ['none', 'forehead-goggles', ...heldIds];
5
+ // Explicit allow-list, including the undecorated head. No cartesian-product fallback.
6
+ const faceAccessories = ['none', ...heldIds];
7
+ export const compatibility = {
8
+ none: [...faceAccessories, 'forehead-goggles'],
9
+ 'baseball-cap': faceAccessories, 'bucket-hat': faceAccessories, beret: faceAccessories,
10
+ beanie: faceAccessories, 'top-hat': faceAccessories, 'wizard-hat': faceAccessories,
11
+ 'chef-hat': faceAccessories, 'party-hat': faceAccessories, crown: faceAccessories,
12
+ 'hard-hat': faceAccessories, nightcap: faceAccessories, 'straw-hat': faceAccessories,
13
+ poop: [...faceAccessories, 'forehead-goggles'], banana: [...faceAccessories, 'forehead-goggles'],
14
+ 'fried-egg': [...faceAccessories, 'forehead-goggles'], 'rubber-duck': [...faceAccessories, 'forehead-goggles'],
15
+ 'paper-boat': [...faceAccessories, 'forehead-goggles'], 'traffic-cone': [...faceAccessories, 'forehead-goggles'],
16
+ sprout: [...faceAccessories, 'forehead-goggles'], donut: [...faceAccessories, 'forehead-goggles'],
17
+ };
18
+ export function isCompatible(primary, secondary) {
19
+ return compatibility[primary].includes(secondary);
20
+ }
21
+ export function withPrimary(appearance, primary) {
22
+ return { ...appearance, primary, secondary: isCompatible(primary, appearance.secondary) ? appearance.secondary : 'none' };
23
+ }
24
+ export function hashSeed(seed) {
25
+ let value = 0x811c9dc5;
26
+ for (let index = 0; index < seed.length; index++)
27
+ value = Math.imul(value ^ seed.charCodeAt(index), 0x01000193);
28
+ // Avalanche avoids correlations between adjacent sample IDs and independent dimensions.
29
+ value ^= value >>> 16;
30
+ value = Math.imul(value, 0x7feb352d);
31
+ value ^= value >>> 15;
32
+ value = Math.imul(value, 0x846ca68b);
33
+ return (value ^ (value >>> 16)) >>> 0;
34
+ }
35
+ export function isHeld(id) { return heldIds.includes(id); }
36
+ export const originalAppearance = { version: 2, palette: -1, baseFace: 0, primary: 'none', secondary: 'none' };
37
+ export function normalizeName(name) { return name.trim().normalize('NFC'); }
38
+ export function deriveAppearance(name) {
39
+ const seed = normalizeName(name);
40
+ if (!seed)
41
+ return { ...originalAppearance };
42
+ const draw = (dimension) => hashSeed(JSON.stringify(['dotcraft-avatar', 1, seed, dimension])) / 0x100000000;
43
+ const primary = primaryIds[Math.floor(draw('primary') * primaryIds.length)];
44
+ const choices = compatibility[primary].filter(id => id !== 'none');
45
+ const secondaryDraw = (dimension) => hashSeed(JSON.stringify(['dotcraft-avatar', 2, seed, dimension])) / 0x100000000;
46
+ const secondary = secondaryDraw('secondary-presence') < .5 ? 'none' : choices[Math.floor(secondaryDraw('secondary-item') * choices.length)];
47
+ return { version: 2, palette: Math.floor(draw('palette') * 12), baseFace: Math.floor(draw('face') * 5), primary, secondary };
48
+ }
49
+ export function sampleSeed(seed, round, index) {
50
+ return JSON.stringify([seed, round, index]);
51
+ }
52
+ export function appearanceWall(seed, round = 0) {
53
+ return Array.from({ length: 100 }, (_, index) => {
54
+ const id = sampleSeed(seed, round, index);
55
+ return { id, appearance: deriveAppearance(id) };
56
+ });
57
+ }
58
+ //# sourceMappingURL=appearanceModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearanceModel.js","sourceRoot":"","sources":["../src/appearanceModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ .dca-robot {
2
+ display: inline-flex;
3
+ flex: none;
4
+ vertical-align: middle;
5
+ isolation: isolate;
6
+ }
7
+
8
+ .dca-canvas { overflow: visible; }
9
+ .dca-body-motion { transform-origin: 512px 760px; }
10
+ .dca-robot[data-motion='on'] .dca-body-motion {
11
+ transition: transform 260ms cubic-bezier(.22, .7, .3, 1);
12
+ }
13
+
14
+ /* The production rig owns arm geometry, paired paint layers and all arm motion. */
15
+ .dca-robot[data-compact='true'] .dca-decoration-detail { display: none; }
16
+ .dca-robot[data-exiting='true'] :is(.dca-part-prop-laptop, .dca-part-prop-sign) {
17
+ opacity: 0;
18
+ transition: opacity 140ms ease;
19
+ }
20
+
21
+ .dca-robot[data-pose='thinking'] .dca-body-motion { transform: rotate(-4deg); }
22
+ .dca-robot[data-pose='working'] .dca-body-motion { transform: translateY(12px) rotate(2deg); }
23
+ .dca-robot[data-pose='blocked'] .dca-body-motion { transform: translateY(22px) scaleY(.96); }
24
+ .dca-robot[data-pose='greeting'] .dca-body-motion { transform: rotate(-3deg); }
25
+
26
+ .dca-robot[data-motion='on'][data-pose='idle'] .dca-body-motion { animation: dca-breathe 5s ease-in-out infinite; }
27
+ .dca-robot[data-motion='on'][data-pose='idle'] .dca-part-caret { animation: dca-cursor 7s step-end infinite; }
28
+ .dca-robot[data-motion='on'][data-pose='working'] .dca-body-motion { animation: dca-work var(--dca-loop) ease-in-out infinite; }
29
+ .dca-robot[data-motion='on'][data-pose='done'] .dca-body-motion { animation: dca-celebrate 800ms ease-in-out both; }
30
+ .dca-robot[data-motion='on'][data-pose='acknowledge'] .dca-body-motion { animation: dca-nod 350ms ease-in-out both; }
31
+
32
+ .dca-robot[data-paused='true'] * { animation-play-state: paused !important; }
33
+ .dca-robot[data-exiting='true'] .dca-body-motion { animation: none !important; }
34
+ .dca-robot[data-motion='off'] * { animation: none !important; transition: none !important; }
35
+
36
+ @keyframes dca-breathe {
37
+ 0%, 100% { transform: translateY(0) scaleY(1); }
38
+ 50% { transform: translateY(-9px) scaleY(1.008); }
39
+ }
40
+ @keyframes dca-cursor { 0%, 93%, 100% { opacity: 1; } 95%, 98% { opacity: .12; } }
41
+ @keyframes dca-work {
42
+ 0%, 100% { transform: translateY(12px) rotate(2deg); }
43
+ 50% { transform: translateY(5px) rotate(0deg); }
44
+ }
45
+ @keyframes dca-celebrate {
46
+ 0%, 100% { transform: translateY(0); }
47
+ 20% { transform: translateY(10px) scaleY(.97); }
48
+ 55% { transform: translateY(-30px) rotate(-3deg); }
49
+ }
50
+ @keyframes dca-nod {
51
+ 0%, 100% { transform: translateY(0); }
52
+ 38% { transform: translateY(17px) scaleY(.97); }
53
+ 68% { transform: translateY(-8px); }
54
+ }
55
+
56
+
57
+ .dca-robot[data-pose='sleep'] .dca-body-motion { transform: translateY(18px) rotate(4deg); }
58
+ .dca-robot[data-pose='sleep'] .dca-part-light { opacity: .45; }
59
+ .dca-robot[data-motion='off'][data-pose='greeting'] :is(.dca-part-arm-r-w, .dca-part-arm-r-b) { transform: translate(-48px, 88px) rotate(-110deg) scaleY(.8); }
60
+ @media (prefers-reduced-motion: reduce) {
61
+ .dca-robot[data-mode='system'] * { animation: none !important; transition: none !important; }
62
+ }
@@ -0,0 +1,6 @@
1
+ export type AvatarState = 'idle' | 'thinking' | 'working' | 'waiting' | 'blocked' | 'done';
2
+ export type AvatarPose = AvatarState | 'greeting' | 'acknowledge' | 'sleep';
3
+ export type MotionMode = 'system' | 'on' | 'off';
4
+ export type AvatarExpression = 'base' | 'happy' | 'operator' | 'sleep';
5
+ export type AvatarGesture = 'blink' | 'look-left' | 'look-right' | 'antenna-bob';
6
+ //# sourceMappingURL=characters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characters.d.ts","sourceRoot":"","sources":["../src/characters.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AAC1F,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAA;AAC3E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAA;AAChD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;AACtE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=characters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characters.js","sourceRoot":"","sources":["../src/characters.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { ComposerMascotProps } from './types.js';
2
+ export declare function ComposerMascot({ name, motion, focused, dragOver, bounceSignal, interaction, reasoningEffort, speed, contextMax, anchorOffset, anchorPushSignal, handoff, renderCharacter, renderMenu, onNameRendered }: ComposerMascotProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=ComposerMascot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMascot.d.ts","sourceRoot":"","sources":["../../src/composer/ComposerMascot.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAwD,MAAM,YAAY,CAAA;AAC3G,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAiB,EAAE,OAAe,EAAE,QAAgB,EAAE,YAAgB,EAAE,WAAW,EAAE,eAAuB,EAAE,KAAkB,EAAE,UAAkB,EAAE,YAAgB,EAAE,gBAAoB,EAAE,OAAe,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,mBAAmB,+BA8fvT"}