goblin-gadgets 3.2.2 → 3.2.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 (361) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintrc.js +28 -28
  3. package/.zou-flow +2 -2
  4. package/builders/builders.js +5 -5
  5. package/builders/gadget.js +85 -85
  6. package/calendar-boards-gadget.js +64 -64
  7. package/demo-gadget.js +17 -17
  8. package/glyphs-dialog.js +13 -13
  9. package/login-dialog.js +13 -13
  10. package/package.json +46 -46
  11. package/pivot-gadget.js +18 -18
  12. package/stack-navigation.js +13 -13
  13. package/table-gadget.js +102 -102
  14. package/test/code-parser.spec.js +61 -61
  15. package/tree-gadget.js +70 -70
  16. package/types/types.js +455 -455
  17. package/widgets/accordion/styles.js +16 -16
  18. package/widgets/accordion/widget.js +90 -90
  19. package/widgets/analog-clock/props.js +102 -102
  20. package/widgets/analog-clock/scenarios.js +43 -43
  21. package/widgets/analog-clock/styles.js +754 -754
  22. package/widgets/analog-clock/widget.js +404 -404
  23. package/widgets/animated-container/animations.js +566 -566
  24. package/widgets/animated-container/styles.js +36 -36
  25. package/widgets/animated-container/widget.js +24 -24
  26. package/widgets/badge/styles.js +107 -107
  27. package/widgets/badge/widget.js +33 -33
  28. package/widgets/button/props.js +377 -377
  29. package/widgets/button/scenarios.js +54 -54
  30. package/widgets/button/styles.js +1082 -1082
  31. package/widgets/button/widget.js +426 -426
  32. package/widgets/button-combo/styles.js +73 -73
  33. package/widgets/button-combo/widget.js +297 -297
  34. package/widgets/calendar/props.js +207 -207
  35. package/widgets/calendar/scenarios.js +50 -50
  36. package/widgets/calendar/styles.js +198 -198
  37. package/widgets/calendar/widget.js +895 -895
  38. package/widgets/calendar-boards/styles.js +29 -29
  39. package/widgets/calendar-boards/widget.js +215 -215
  40. package/widgets/calendar-button/styles.js +273 -273
  41. package/widgets/calendar-button/widget.js +94 -94
  42. package/widgets/calendar-list/styles.js +35 -35
  43. package/widgets/calendar-list/widget.js +223 -223
  44. package/widgets/calendar-recurrence/widget.js +183 -183
  45. package/widgets/carousel/props.js +104 -104
  46. package/widgets/carousel/scenarios.js +163 -163
  47. package/widgets/carousel/styles.js +133 -133
  48. package/widgets/carousel/widget.js +491 -491
  49. package/widgets/carousel-bullet/styles.js +29 -29
  50. package/widgets/carousel-bullet/widget.js +25 -25
  51. package/widgets/carousel-button/styles.js +71 -71
  52. package/widgets/carousel-button/widget.js +33 -33
  53. package/widgets/carousel-item/styles.js +21 -21
  54. package/widgets/carousel-item/widget.js +24 -24
  55. package/widgets/chat-balloon/props.js +65 -65
  56. package/widgets/chat-balloon/scenarios.js +47 -47
  57. package/widgets/chat-balloon/styles.js +193 -193
  58. package/widgets/chat-balloon/widget.js +62 -62
  59. package/widgets/chat-dialog/styles.js +15 -15
  60. package/widgets/chat-dialog/widget.js +62 -62
  61. package/widgets/check-list/styles.js +66 -66
  62. package/widgets/check-list/widget.js +168 -168
  63. package/widgets/checkbox/widget.js +15 -15
  64. package/widgets/checkbox-nc/props.js +191 -191
  65. package/widgets/checkbox-nc/scenarios.js +41 -41
  66. package/widgets/checkbox-nc/styles.js +122 -122
  67. package/widgets/checkbox-nc/widget.js +116 -116
  68. package/widgets/clock-combo/styles.js +174 -174
  69. package/widgets/clock-combo/widget.js +390 -390
  70. package/widgets/color-picker/props.js +145 -145
  71. package/widgets/color-picker/scenarios.js +34 -34
  72. package/widgets/color-picker/styles.js +209 -209
  73. package/widgets/color-picker/widget.js +735 -735
  74. package/widgets/colored-container/props.js +34 -34
  75. package/widgets/colored-container/scenarios.js +54 -54
  76. package/widgets/colored-container/styles.js +100 -100
  77. package/widgets/colored-container/widget.js +27 -27
  78. package/widgets/combo/styles.js +69 -69
  79. package/widgets/combo/widget.js +224 -224
  80. package/widgets/combo-container/styles.js +66 -66
  81. package/widgets/combo-container/widget.js +188 -188
  82. package/widgets/command-button/widget.js +39 -39
  83. package/widgets/container/props.js +295 -295
  84. package/widgets/container/scenarios.js +47 -47
  85. package/widgets/container/styles.js +1439 -1439
  86. package/widgets/container/widget.js +279 -279
  87. package/widgets/demo/widget.js +24 -24
  88. package/widgets/dialog/styles.js +29 -29
  89. package/widgets/dialog/widget.js +26 -26
  90. package/widgets/dialog-modal/props.js +126 -126
  91. package/widgets/dialog-modal/styles.js +234 -234
  92. package/widgets/dialog-modal/widget.js +273 -273
  93. package/widgets/dialog-resizable/props.js +1 -1
  94. package/widgets/dialog-resizable/scenarios.js +18 -18
  95. package/widgets/dialog-resizable/widget.js +367 -367
  96. package/widgets/dialog-resizable-nc/props.js +150 -150
  97. package/widgets/dialog-resizable-nc/scenarios.js +18 -18
  98. package/widgets/dialog-resizable-nc/styles.js +259 -259
  99. package/widgets/dialog-resizable-nc/widget.js +197 -197
  100. package/widgets/directory-input/widget.js +18 -18
  101. package/widgets/directory-input-nc/widget.js +20 -20
  102. package/widgets/document-container/getPath.js +43 -43
  103. package/widgets/document-container/props.js +79 -79
  104. package/widgets/document-container/scenarios.js +39 -39
  105. package/widgets/document-container/styles.js +69 -69
  106. package/widgets/document-container/widget.js +53 -53
  107. package/widgets/drag-cab/styles.js +56 -56
  108. package/widgets/drag-cab/widget.js +285 -285
  109. package/widgets/drag-carrier/styles.js +21 -21
  110. package/widgets/drag-carrier/widget.js +780 -780
  111. package/widgets/dynamic-toolbar/styles.js +110 -110
  112. package/widgets/dynamic-toolbar/widget.js +128 -128
  113. package/widgets/field/readonly/label.js +39 -39
  114. package/widgets/field/widget.js +1743 -1743
  115. package/widgets/file-input/widget.js +18 -18
  116. package/widgets/file-input-nc/styles.js +38 -38
  117. package/widgets/file-input-nc/widget.js +88 -88
  118. package/widgets/flat-combo/styles.js +21 -21
  119. package/widgets/flat-combo/widget.js +61 -61
  120. package/widgets/flat-list/styles.js +30 -30
  121. package/widgets/flat-list/widget.js +219 -219
  122. package/widgets/flying-balloon/styles.js +52 -52
  123. package/widgets/flying-balloon/widget.js +43 -43
  124. package/widgets/fragment/widget.js +26 -26
  125. package/widgets/full-screen/props.js +27 -27
  126. package/widgets/full-screen/styles.js +32 -32
  127. package/widgets/full-screen/widget.js +40 -40
  128. package/widgets/gauge/props.js +71 -71
  129. package/widgets/gauge/scenarios.js +83 -83
  130. package/widgets/gauge/styles.js +183 -183
  131. package/widgets/gauge/widget.js +36 -36
  132. package/widgets/glyph-detail/service.js +9 -9
  133. package/widgets/glyph-detail/widget.js +109 -109
  134. package/widgets/glyphs-dialog/service.js +94 -94
  135. package/widgets/glyphs-dialog/styles.js +37 -37
  136. package/widgets/glyphs-dialog/widget.js +236 -236
  137. package/widgets/goblin-editor/widget.js +146 -146
  138. package/widgets/guild-entry/props.js +53 -53
  139. package/widgets/guild-entry/scenarios.js +26 -26
  140. package/widgets/guild-entry/styles.js +98 -98
  141. package/widgets/guild-entry/widget.js +126 -126
  142. package/widgets/guild-user-logo/guild-helpers.js +77 -77
  143. package/widgets/guild-user-logo/props.js +48 -48
  144. package/widgets/guild-user-logo/scenarios.js +64 -64
  145. package/widgets/guild-user-logo/styles.js +114 -114
  146. package/widgets/guild-user-logo/widget.js +81 -81
  147. package/widgets/guild-user-profile/props.js +73 -73
  148. package/widgets/guild-user-profile/scenarios.js +54 -54
  149. package/widgets/guild-user-profile/styles.js +162 -162
  150. package/widgets/guild-user-profile/widget.js +202 -202
  151. package/widgets/helpers/combo-helpers.js +218 -218
  152. package/widgets/helpers/geom-helpers.js +80 -80
  153. package/widgets/helpers/rect-helpers.js +10 -10
  154. package/widgets/helpers/shortcut-helpers.js +56 -56
  155. package/widgets/helpers/spacing-helpers.js +26 -26
  156. package/widgets/helpers/svg-helpers.js +151 -151
  157. package/widgets/helpers/table-helpers.js +68 -68
  158. package/widgets/hinter/styles.js +79 -79
  159. package/widgets/hinter/widget.js +205 -205
  160. package/widgets/hinter-column/widget.js +49 -49
  161. package/widgets/hinter-field/reducer.js +18 -18
  162. package/widgets/hinter-field/widget.js +176 -176
  163. package/widgets/hinter-field-nc/props.js +114 -114
  164. package/widgets/hinter-field-nc/scenarios.js +47 -47
  165. package/widgets/hinter-field-nc/widget.js +191 -191
  166. package/widgets/input-wrapper/widget.js +157 -157
  167. package/widgets/key-trap.js +96 -96
  168. package/widgets/label/props.js +1 -1
  169. package/widgets/label/scenarios.js +1 -1
  170. package/widgets/label/widget.js +7 -7
  171. package/widgets/label-nc/props.js +308 -308
  172. package/widgets/label-nc/scenarios.js +29 -29
  173. package/widgets/label-nc/styles.js +1218 -1218
  174. package/widgets/label-nc/widget.js +314 -314
  175. package/widgets/label-row/props.js +1 -1
  176. package/widgets/label-row/scenarios.js +1 -1
  177. package/widgets/label-row/widget.js +7 -7
  178. package/widgets/label-row-nc/props.js +94 -94
  179. package/widgets/label-row-nc/scenarios.js +46 -46
  180. package/widgets/label-row-nc/widget.js +81 -81
  181. package/widgets/label-text-field/styles.js +55 -55
  182. package/widgets/label-text-field/widget.js +178 -178
  183. package/widgets/launcher/props.js +177 -177
  184. package/widgets/launcher/scenarios.js +55 -55
  185. package/widgets/launcher/styles.js +46 -46
  186. package/widgets/launcher/widget.js +79 -79
  187. package/widgets/launcher-blob/props.js +25 -25
  188. package/widgets/launcher-blob/scenarios.js +24 -24
  189. package/widgets/launcher-blob/styles.js +62 -62
  190. package/widgets/launcher-blob/widget.js +50 -50
  191. package/widgets/list/widget.js +211 -211
  192. package/widgets/login-dialog/service.js +117 -117
  193. package/widgets/login-dialog/widget.js +117 -117
  194. package/widgets/map/reaflet.js +208 -208
  195. package/widgets/map/widget.js +67 -67
  196. package/widgets/markdown/styles.js +85 -85
  197. package/widgets/markdown/widget.js +31 -31
  198. package/widgets/notification/styles.js +97 -97
  199. package/widgets/notification/widget.js +207 -207
  200. package/widgets/pivot/custom.css +320 -320
  201. package/widgets/pivot/widget.js +42 -42
  202. package/widgets/radio-list/styles.js +48 -48
  203. package/widgets/radio-list/widget.js +111 -111
  204. package/widgets/resizable-container/styles.js +108 -108
  205. package/widgets/resizable-container/widget.js +225 -225
  206. package/widgets/retro-action-button/helpers.js +106 -106
  207. package/widgets/retro-action-button/styles.js +285 -285
  208. package/widgets/retro-action-button/widget.js +364 -364
  209. package/widgets/retro-badge-button/styles.js +87 -87
  210. package/widgets/retro-badge-button/widget.js +251 -251
  211. package/widgets/retro-gear/helpers.js +156 -156
  212. package/widgets/retro-gear/styles.js +130 -130
  213. package/widgets/retro-gear/widget.js +51 -51
  214. package/widgets/retro-illuminated-button/styles.js +274 -274
  215. package/widgets/retro-illuminated-button/widget.js +147 -147
  216. package/widgets/retro-panel/helpers.js +57 -57
  217. package/widgets/retro-panel/styles.js +293 -293
  218. package/widgets/retro-panel/widget.js +239 -239
  219. package/widgets/retro-screw/styles.js +80 -80
  220. package/widgets/retro-screw/widget.js +25 -25
  221. package/widgets/rocket/props.js +124 -124
  222. package/widgets/rocket/scenarios.js +71 -71
  223. package/widgets/rocket/styles.js +306 -306
  224. package/widgets/rocket/widget.js +225 -225
  225. package/widgets/samples-monitor/helpers.js +147 -147
  226. package/widgets/samples-monitor/styles.js +529 -529
  227. package/widgets/samples-monitor/widget.js +516 -516
  228. package/widgets/scrollable-container/styles.js +58 -58
  229. package/widgets/scrollable-container/widget.js +132 -132
  230. package/widgets/scrollable-linkable-container/reducer.js +18 -18
  231. package/widgets/scrollable-linkable-container/styles.js +42 -42
  232. package/widgets/scrollable-linkable-container/widget.js +78 -78
  233. package/widgets/select/styles.js +68 -68
  234. package/widgets/select/widget.js +119 -119
  235. package/widgets/separator/props.js +46 -46
  236. package/widgets/separator/styles.js +116 -116
  237. package/widgets/separator/widget.js +27 -27
  238. package/widgets/slider/props.js +136 -136
  239. package/widgets/slider/scenarios.js +74 -74
  240. package/widgets/slider/styles.js +246 -246
  241. package/widgets/slider/widget.js +404 -404
  242. package/widgets/slider-circle/props.js +72 -72
  243. package/widgets/slider-circle/scenarios.js +16 -16
  244. package/widgets/slider-circle/styles.js +78 -78
  245. package/widgets/slider-circle/widget.js +154 -154
  246. package/widgets/slider-xy/props.js +87 -87
  247. package/widgets/slider-xy/scenarios.js +19 -19
  248. package/widgets/slider-xy/styles.js +102 -102
  249. package/widgets/slider-xy/widget.js +234 -234
  250. package/widgets/smiley/props.js +51 -51
  251. package/widgets/smiley/scenarios.js +58 -58
  252. package/widgets/smiley/styles.js +489 -489
  253. package/widgets/smiley/widget.js +72 -72
  254. package/widgets/spinner/props.js +31 -31
  255. package/widgets/spinner/scenarios.js +31 -31
  256. package/widgets/spinner/styles.js +49 -49
  257. package/widgets/spinner/widget.js +23 -23
  258. package/widgets/splitter/props.js +71 -71
  259. package/widgets/splitter/scenarios.js +182 -182
  260. package/widgets/splitter/styles.js +41 -41
  261. package/widgets/splitter/widget.js +455 -455
  262. package/widgets/stack-navigation/service.js +324 -324
  263. package/widgets/stack-navigation/widget.js +296 -296
  264. package/widgets/state-browser/styles.js +19 -19
  265. package/widgets/state-browser/widget.js +135 -135
  266. package/widgets/state-browser-dialog/styles.js +100 -100
  267. package/widgets/state-browser-dialog/widget.js +253 -253
  268. package/widgets/state-monitor/styles.js +50 -50
  269. package/widgets/state-monitor/widget.js +324 -324
  270. package/widgets/switch-on-off/props.js +30 -30
  271. package/widgets/switch-on-off/scenarios.js +34 -34
  272. package/widgets/switch-on-off/styles.js +63 -63
  273. package/widgets/switch-on-off/widget.js +41 -41
  274. package/widgets/table/helpers.js +160 -160
  275. package/widgets/table/props.js +658 -658
  276. package/widgets/table/reducer.js +196 -196
  277. package/widgets/table/scenarios.js +54 -54
  278. package/widgets/table/widget.js +253 -253
  279. package/widgets/table-cell/props.js +145 -145
  280. package/widgets/table-cell/styles.js +160 -160
  281. package/widgets/table-cell/widget.js +139 -139
  282. package/widgets/table-header-drag-manager/styles.js +184 -184
  283. package/widgets/table-header-drag-manager/widget.js +392 -392
  284. package/widgets/table-nc/styles.js +100 -100
  285. package/widgets/table-nc/widget.js +409 -409
  286. package/widgets/table-row/props.js +73 -73
  287. package/widgets/table-row/styles.js +82 -82
  288. package/widgets/table-row/widget.js +207 -207
  289. package/widgets/text-field/widget.js +18 -18
  290. package/widgets/text-field-combo/widget.js +21 -21
  291. package/widgets/text-field-combo-nc/props.js +300 -300
  292. package/widgets/text-field-combo-nc/scenarios.js +72 -72
  293. package/widgets/text-field-combo-nc/widget.js +339 -339
  294. package/widgets/text-field-date-interval/styles.js +37 -37
  295. package/widgets/text-field-date-interval/widget.js +162 -162
  296. package/widgets/text-field-nc/props.js +40 -40
  297. package/widgets/text-field-nc/scenarios.js +67 -67
  298. package/widgets/text-field-nc/widget.js +14 -14
  299. package/widgets/text-field-time-interval/styles.js +37 -37
  300. package/widgets/text-field-time-interval/widget.js +160 -160
  301. package/widgets/text-field-typed/widget.js +51 -51
  302. package/widgets/text-field-typed-nc/props.js +81 -81
  303. package/widgets/text-field-typed-nc/scenarios.js +105 -105
  304. package/widgets/text-field-typed-nc/styles.js +20 -20
  305. package/widgets/text-field-typed-nc/widget.js +749 -750
  306. package/widgets/text-input-info-nc/props.js +62 -62
  307. package/widgets/text-input-info-nc/widget.js +55 -55
  308. package/widgets/text-input-nc/props.js +143 -143
  309. package/widgets/text-input-nc/scenarios.js +44 -44
  310. package/widgets/text-input-nc/styles.js +242 -242
  311. package/widgets/text-input-nc/widget.js +234 -234
  312. package/widgets/ticket/getPath.js +128 -128
  313. package/widgets/ticket/props.js +181 -181
  314. package/widgets/ticket/scenarios.js +39 -39
  315. package/widgets/ticket/styles.js +332 -332
  316. package/widgets/ticket/ticket-helpers.js +33 -33
  317. package/widgets/ticket/widget.js +348 -348
  318. package/widgets/ticket-hover/styles.js +207 -207
  319. package/widgets/ticket-hover/widget.js +53 -53
  320. package/widgets/time-gauge/widget.js +64 -64
  321. package/widgets/tips/styles.js +48 -48
  322. package/widgets/tips/widget.js +171 -171
  323. package/widgets/translatable-text-field/styles.js +202 -202
  324. package/widgets/translatable-text-field/text-field.js +132 -132
  325. package/widgets/translatable-text-field/widget.js +660 -660
  326. package/widgets/tree/props.js +246 -246
  327. package/widgets/tree/scenarios.js +14 -14
  328. package/widgets/tree/styles.js +142 -142
  329. package/widgets/tree/widget.js +383 -383
  330. package/widgets/tree-cell/styles.js +140 -140
  331. package/widgets/tree-cell/widget.js +100 -100
  332. package/widgets/tree-row/styles.js +77 -77
  333. package/widgets/tree-row/widget.js +135 -135
  334. package/widgets/triangle/props.js +48 -48
  335. package/widgets/triangle/scenarios.js +33 -33
  336. package/widgets/triangle/styles.js +92 -92
  337. package/widgets/triangle/widget.js +36 -36
  338. package/widgets/well-done/widget.js +170 -170
  339. package/widgets/widget-doc/reducer.js +68 -68
  340. package/widgets/widget-doc/styles.js +15 -15
  341. package/widgets/widget-doc/widget-list.js +25 -25
  342. package/widgets/widget-doc/widget.js +89 -89
  343. package/widgets/widget-doc-menu/styles.js +12 -12
  344. package/widgets/widget-doc-menu/widget.js +79 -79
  345. package/widgets/widget-doc-preview/parse-code.js +20 -20
  346. package/widgets/widget-doc-preview/styles.js +77 -77
  347. package/widgets/widget-doc-preview/widget.js +481 -481
  348. package/widgets/widget-doc-preview-container/styles.js +60 -60
  349. package/widgets/widget-doc-preview-container/widget.js +129 -129
  350. package/widgets/widget-doc-properties/styles.js +41 -41
  351. package/widgets/widget-doc-properties/widget.js +307 -307
  352. package/widgets/widget-doc-property/styles.js +75 -75
  353. package/widgets/widget-doc-property/widget.js +108 -108
  354. package/widgets/widget-doc-property-control/styles.js +14 -14
  355. package/widgets/widget-doc-property-control/widget.js +343 -343
  356. package/widgets/wizard/service.js +2132 -2132
  357. package/widgets/wizard/styles.js +21 -21
  358. package/widgets/wizard/widget.js +927 -927
  359. package/widgets/work-dialog/styles.js +31 -31
  360. package/widgets/work-dialog/widget.js +162 -162
  361. package/wizard.js +13 -13
@@ -1,489 +1,489 @@
1
- import {Unit} from 'goblin-theme';
2
- const px = Unit.toPx;
3
- const n = Unit.toValue;
4
-
5
- import {ColorHelpers} from 'goblin-theme';
6
- import {color as ColorConverters} from 'xcraft-core-converters';
7
-
8
- /******************************************************************************/
9
-
10
- function adjust(satisfaction, happyValue, unhappyValue) {
11
- return (happyValue - unhappyValue) * (satisfaction / 100) + unhappyValue;
12
- }
13
-
14
- /******************************************************************************/
15
-
16
- export const propNames = [
17
- 'step',
18
- 'size',
19
- 'mainColor',
20
- 'topColor',
21
- 'satisfaction',
22
- 'transition',
23
- ];
24
-
25
- export default function styles(theme, props) {
26
- let {
27
- step = 7,
28
- size = '100px',
29
- mainColor = '#ff0',
30
- topColor,
31
- satisfaction = 100,
32
- transition = '1.0s ease-out',
33
- } = props;
34
-
35
- let smiley = {};
36
- let leftEye = {};
37
- let rightEye = {};
38
- let smile = {};
39
- let leftCorner = {};
40
- let rightCorner = {};
41
- let reflexion1 = {};
42
- let reflexion2 = {};
43
-
44
- //////////////////////////////////////////////
45
- // STEP 1 //
46
- // Simple yellow circle //
47
- //////////////////////////////////////////////
48
-
49
- if (step === 1) {
50
- // const smily = {
51
- smiley = {
52
- position: 'absolute',
53
- width: '200px',
54
- height: '200px',
55
- borderRadius: '200px',
56
- border: '10px solid black',
57
- background: 'yellow',
58
- };
59
- }
60
-
61
- //////////////////////////////////////////////
62
- // STEP 2 //
63
- // Yellow circle with eyes and smile //
64
- //////////////////////////////////////////////
65
-
66
- if (step === 2) {
67
- // const smily = {
68
- smiley = {
69
- position: 'relative',
70
- width: '200px',
71
- height: '200px',
72
- borderRadius: '200px',
73
- border: '10px solid black',
74
- background: 'yellow',
75
- };
76
-
77
- const _eye = {
78
- position: 'absolute',
79
- top: '60px',
80
- width: '20px',
81
- height: '20px',
82
- borderRadius: '20px',
83
- backgroundColor: 'black',
84
- transform: 'scaleY(2)',
85
- };
86
-
87
- // const leftEye = {
88
- leftEye = {
89
- ..._eye,
90
- left: '70px',
91
- };
92
-
93
- // const rightEye = {
94
- rightEye = {
95
- ..._eye,
96
- right: '70px',
97
- };
98
-
99
- // const smile = {
100
- smile = {
101
- position: 'absolute',
102
- bottom: '40px',
103
- left: '30px',
104
- right: '30px',
105
- height: '60px',
106
- borderRadius: '0 0 150px 150px',
107
- border: '10px solid black',
108
- borderTop: 0,
109
- };
110
- }
111
-
112
- //////////////////////////////////////////////
113
- // STEP 3 //
114
- // Add gradient inside circle //
115
- //////////////////////////////////////////////
116
-
117
- if (step === 3) {
118
- // const smily = {
119
- smiley = {
120
- position: 'relative',
121
- width: '200px',
122
- height: '200px',
123
- borderRadius: '200px',
124
- border: '10px solid black',
125
- background: 'linear-gradient(180deg, #f80, #ff0)',
126
- };
127
-
128
- const _eye = {
129
- position: 'absolute',
130
- top: '60px',
131
- width: '20px',
132
- height: '20px',
133
- borderRadius: '20px',
134
- backgroundColor: 'black',
135
- transform: 'scaleY(2)',
136
- };
137
-
138
- // const leftEye = {
139
- leftEye = {
140
- ..._eye,
141
- left: '70px',
142
- };
143
-
144
- // const rightEye = {
145
- rightEye = {
146
- ..._eye,
147
- right: '70px',
148
- };
149
-
150
- // const smile = {
151
- smile = {
152
- position: 'absolute',
153
- bottom: '40px',
154
- left: '30px',
155
- right: '30px',
156
- height: '60px',
157
- borderRadius: '0 0 150px 150px',
158
- border: '10px solid black',
159
- borderTop: 0,
160
- };
161
- }
162
-
163
- //////////////////////////////////////////////
164
- // STEP 4 //
165
- // Adds a reflection behind the eyes //
166
- //////////////////////////////////////////////
167
-
168
- if (step === 4) {
169
- // const smily = {
170
- smiley = {
171
- position: 'relative',
172
- width: '200px',
173
- height: '200px',
174
- borderRadius: '200px',
175
- border: '10px solid black',
176
- background: 'linear-gradient(180deg, #f80, #ff0)',
177
- };
178
-
179
- const _eye = {
180
- position: 'absolute',
181
- top: '60px',
182
- width: '20px',
183
- height: '20px',
184
- borderRadius: '20px',
185
- backgroundColor: 'black',
186
- transform: 'scaleY(2)',
187
- };
188
-
189
- // const leftEye = {
190
- leftEye = {
191
- ..._eye,
192
- left: '70px',
193
- };
194
-
195
- // const rightEye = {
196
- rightEye = {
197
- ..._eye,
198
- right: '70px',
199
- };
200
-
201
- // const smile = {
202
- smile = {
203
- position: 'absolute',
204
- bottom: '40px',
205
- left: '30px',
206
- right: '30px',
207
- height: '60px',
208
- borderRadius: '0 0 150px 150px',
209
- border: '10px solid black',
210
- borderTop: 0,
211
- };
212
-
213
- // const reflexion1 = {
214
- reflexion1 = {
215
- position: 'absolute',
216
- left: '50px',
217
- right: '50px',
218
- top: '10px',
219
- bottom: '80px',
220
- borderRadius: '200px',
221
- background: 'linear-gradient(180deg, white, #fc0)',
222
- transform: 'scaleX(1.5)',
223
- opacity: 0.8,
224
- };
225
- }
226
-
227
- //////////////////////////////////////////////
228
- // STEP 5 //
229
- // Adds a reflection at the bottom of //
230
- // the circle //
231
- //////////////////////////////////////////////
232
-
233
- if (step === 5) {
234
- // const smily = {
235
- smiley = {
236
- position: 'relative',
237
- width: '200px',
238
- height: '200px',
239
- borderRadius: '200px',
240
- border: '10px solid black',
241
- background: 'linear-gradient(180deg, #f80, #ff0)',
242
- };
243
-
244
- const _eye = {
245
- position: 'absolute',
246
- top: '60px',
247
- width: '20px',
248
- height: '20px',
249
- borderRadius: '20px',
250
- backgroundColor: 'black',
251
- transform: 'scaleY(2)',
252
- };
253
-
254
- // const leftEye = {
255
- leftEye = {
256
- ..._eye,
257
- left: '70px',
258
- };
259
-
260
- // const rightEye = {
261
- rightEye = {
262
- ..._eye,
263
- right: '70px',
264
- };
265
-
266
- // const smile = {
267
- smile = {
268
- position: 'absolute',
269
- bottom: '40px',
270
- left: '30px',
271
- right: '30px',
272
- height: '60px',
273
- borderRadius: '0 0 150px 150px',
274
- border: '10px solid black',
275
- borderTop: 0,
276
- };
277
-
278
- // const reflexion1 = {
279
- reflexion1 = {
280
- position: 'absolute',
281
- left: '50px',
282
- right: '50px',
283
- top: '10px',
284
- bottom: '80px',
285
- borderRadius: '200px',
286
- background: 'linear-gradient(180deg, white, #fc0)',
287
- transform: 'scaleX(1.5)',
288
- opacity: 0.8,
289
- };
290
-
291
- // const reflexion2 = {
292
- reflexion2 = {
293
- position: 'absolute',
294
- left: 0,
295
- right: 0,
296
- top: 0,
297
- bottom: 0,
298
- borderStyle: 'solid',
299
- borderRadius: '200px',
300
- borderWidth: '5px',
301
- borderColor: 'transparent white white transparent',
302
- transform: 'rotate(45deg)',
303
- opacity: 0.8,
304
- };
305
- }
306
-
307
- //////////////////////////////////////////////
308
- // STEP 6 //
309
- // Simple circle with the diameter //
310
- // according to the property 'size' //
311
- //////////////////////////////////////////////
312
-
313
- if (step === 6) {
314
- // const smily = {
315
- smiley = {
316
- position: 'absolute',
317
- width: props.size,
318
- height: props.size,
319
- borderRadius: props.size,
320
- border: '10px solid black',
321
- background: 'linear-gradient(180deg, #f80, #ff0)',
322
- };
323
- }
324
-
325
- //////////////////////////////////////////////
326
- // STEP 7 //
327
- // Final version //
328
- //////////////////////////////////////////////
329
-
330
- if (step === 7) {
331
- const s = n(size);
332
- satisfaction = Math.min(Math.max(0, satisfaction), 100);
333
- const happy = satisfaction >= 50;
334
-
335
- mainColor = ColorHelpers.getMarkColor(theme, mainColor);
336
- topColor = ColorHelpers.getMarkColor(theme, topColor);
337
-
338
- /******************************************************************************/
339
-
340
- // Main circle.
341
- if (!topColor) {
342
- topColor = ColorConverters.changeColor(mainColor, -30);
343
- }
344
-
345
- const borderColor = ColorConverters.changeColor(mainColor, 0, 1, 0.5);
346
-
347
- smiley = {
348
- position: 'relative',
349
- width: px(s),
350
- height: px(s),
351
- borderRadius: px(s),
352
- border: `${px(s * 0.05)} solid ${borderColor}`,
353
- background: `linear-gradient(180deg, ${topColor}, ${mainColor})`,
354
- transition,
355
- };
356
-
357
- /******************************************************************************/
358
-
359
- // Eyes.
360
- const _eye = {
361
- position: 'absolute',
362
- top: px(s * 0.3),
363
- width: px(s * 0.1),
364
- height: px(s * 0.1),
365
- borderRadius: px(s * 0.1),
366
- backgroundColor: '#000',
367
- transform: `scaleY(${adjust(satisfaction, 2, 1)})`,
368
- transition,
369
- };
370
-
371
- leftEye = {
372
- ..._eye,
373
- left: px(s * adjust(satisfaction, 0.35, 0.3)),
374
- };
375
-
376
- rightEye = {
377
- ..._eye,
378
- right: px(s * adjust(satisfaction, 0.35, 0.3)),
379
- };
380
-
381
- /******************************************************************************/
382
-
383
- // Smile.
384
- const ss = happy ? (satisfaction - 50) * 2 : 50 - satisfaction;
385
- const sr1 = adjust(ss, s * 0.75, s * 1.25);
386
- const sr2 = adjust(ss, s * 0.75, s * 0.37);
387
-
388
- smile = {
389
- position: 'absolute',
390
- bottom: px(adjust(satisfaction, s * 0.2, s * 0.3)),
391
- left: px(s * 0.15),
392
- right: px(s * 0.15),
393
- height: px(adjust(ss, s * 0.3, 0)),
394
- borderRadius: happy
395
- ? `0 0 ${px(sr1)} ${px(sr1)} / 0 0 ${px(sr2)} ${px(sr2)}`
396
- : `${px(sr1)} ${px(sr1)} 0 0 / ${px(sr2)} ${px(sr2)} 0 0`,
397
- border: `${px(s * 0.05)} solid #000`,
398
- borderTop: happy ? 0 : null,
399
- borderBottom: happy ? null : 0,
400
- transition,
401
- };
402
-
403
- const _corner = {
404
- position: 'absolute',
405
- top: px(adjust(ss, -s * 0.07, -s * 0.03)),
406
- width: px(s * 0.05),
407
- height: px(adjust(ss, s * 0.15, s * 0.075)),
408
- borderRadius: `${px(s * 0.05)} / ${px(s * 0.08)}`,
409
- backgroundColor: '#000',
410
- display: happy ? null : 'none',
411
- transition,
412
- };
413
-
414
- const a = adjust(ss, 65, 0);
415
-
416
- leftCorner = {
417
- ..._corner,
418
- left: px(-s * 0.055),
419
- transform: `rotate(${a}deg)`,
420
- };
421
-
422
- rightCorner = {
423
- ..._corner,
424
- right: px(-s * 0.055),
425
- transform: `rotate(${-a}deg)`,
426
- };
427
-
428
- /******************************************************************************/
429
-
430
- const reflexionColor = ColorConverters.slide(mainColor, topColor, 0.4);
431
- const reflexionOpacity = Math.max(adjust(satisfaction, 0.8, -0.8), 0);
432
-
433
- reflexion1 = {
434
- position: 'absolute',
435
- left: px(s * 0.25),
436
- right: px(s * 0.25),
437
- top: px(s * 0.05),
438
- bottom: px(s * 0.4),
439
- borderRadius: px(s),
440
- background: `linear-gradient(180deg, white, ${reflexionColor})`,
441
- transform: 'scaleX(1.5)',
442
- opacity: reflexionOpacity,
443
- };
444
-
445
- reflexion2 = {
446
- position: 'absolute',
447
- left: 0,
448
- right: 0,
449
- top: 0,
450
- bottom: 0,
451
- borderStyle: 'solid',
452
- borderRadius: px(s),
453
- borderWidth: px(s * 0.025),
454
- borderColor: 'transparent white white transparent',
455
- transform: 'rotate(45deg)',
456
- opacity: reflexionOpacity,
457
- };
458
- }
459
-
460
- /******************************************************************************/
461
-
462
- smiley.boxSizing = 'unset';
463
- smile.boxSizing = 'unset';
464
-
465
- /******************************************************************************/
466
-
467
- const documentation = {
468
- position: 'absolute',
469
- left: 0,
470
- right: 0,
471
- top: px(n(size) + 20),
472
- };
473
-
474
- /******************************************************************************/
475
-
476
- return {
477
- smiley,
478
- leftEye,
479
- rightEye,
480
- smile,
481
- leftCorner,
482
- rightCorner,
483
- reflexion1,
484
- reflexion2,
485
- documentation,
486
- };
487
- }
488
-
489
- /******************************************************************************/
1
+ import {Unit} from 'goblin-theme';
2
+ const px = Unit.toPx;
3
+ const n = Unit.toValue;
4
+
5
+ import {ColorHelpers} from 'goblin-theme';
6
+ import {color as ColorConverters} from 'xcraft-core-converters';
7
+
8
+ /******************************************************************************/
9
+
10
+ function adjust(satisfaction, happyValue, unhappyValue) {
11
+ return (happyValue - unhappyValue) * (satisfaction / 100) + unhappyValue;
12
+ }
13
+
14
+ /******************************************************************************/
15
+
16
+ export const propNames = [
17
+ 'step',
18
+ 'size',
19
+ 'mainColor',
20
+ 'topColor',
21
+ 'satisfaction',
22
+ 'transition',
23
+ ];
24
+
25
+ export default function styles(theme, props) {
26
+ let {
27
+ step = 7,
28
+ size = '100px',
29
+ mainColor = '#ff0',
30
+ topColor,
31
+ satisfaction = 100,
32
+ transition = '1.0s ease-out',
33
+ } = props;
34
+
35
+ let smiley = {};
36
+ let leftEye = {};
37
+ let rightEye = {};
38
+ let smile = {};
39
+ let leftCorner = {};
40
+ let rightCorner = {};
41
+ let reflexion1 = {};
42
+ let reflexion2 = {};
43
+
44
+ //////////////////////////////////////////////
45
+ // STEP 1 //
46
+ // Simple yellow circle //
47
+ //////////////////////////////////////////////
48
+
49
+ if (step === 1) {
50
+ // const smily = {
51
+ smiley = {
52
+ position: 'absolute',
53
+ width: '200px',
54
+ height: '200px',
55
+ borderRadius: '200px',
56
+ border: '10px solid black',
57
+ background: 'yellow',
58
+ };
59
+ }
60
+
61
+ //////////////////////////////////////////////
62
+ // STEP 2 //
63
+ // Yellow circle with eyes and smile //
64
+ //////////////////////////////////////////////
65
+
66
+ if (step === 2) {
67
+ // const smily = {
68
+ smiley = {
69
+ position: 'relative',
70
+ width: '200px',
71
+ height: '200px',
72
+ borderRadius: '200px',
73
+ border: '10px solid black',
74
+ background: 'yellow',
75
+ };
76
+
77
+ const _eye = {
78
+ position: 'absolute',
79
+ top: '60px',
80
+ width: '20px',
81
+ height: '20px',
82
+ borderRadius: '20px',
83
+ backgroundColor: 'black',
84
+ transform: 'scaleY(2)',
85
+ };
86
+
87
+ // const leftEye = {
88
+ leftEye = {
89
+ ..._eye,
90
+ left: '70px',
91
+ };
92
+
93
+ // const rightEye = {
94
+ rightEye = {
95
+ ..._eye,
96
+ right: '70px',
97
+ };
98
+
99
+ // const smile = {
100
+ smile = {
101
+ position: 'absolute',
102
+ bottom: '40px',
103
+ left: '30px',
104
+ right: '30px',
105
+ height: '60px',
106
+ borderRadius: '0 0 150px 150px',
107
+ border: '10px solid black',
108
+ borderTop: 0,
109
+ };
110
+ }
111
+
112
+ //////////////////////////////////////////////
113
+ // STEP 3 //
114
+ // Add gradient inside circle //
115
+ //////////////////////////////////////////////
116
+
117
+ if (step === 3) {
118
+ // const smily = {
119
+ smiley = {
120
+ position: 'relative',
121
+ width: '200px',
122
+ height: '200px',
123
+ borderRadius: '200px',
124
+ border: '10px solid black',
125
+ background: 'linear-gradient(180deg, #f80, #ff0)',
126
+ };
127
+
128
+ const _eye = {
129
+ position: 'absolute',
130
+ top: '60px',
131
+ width: '20px',
132
+ height: '20px',
133
+ borderRadius: '20px',
134
+ backgroundColor: 'black',
135
+ transform: 'scaleY(2)',
136
+ };
137
+
138
+ // const leftEye = {
139
+ leftEye = {
140
+ ..._eye,
141
+ left: '70px',
142
+ };
143
+
144
+ // const rightEye = {
145
+ rightEye = {
146
+ ..._eye,
147
+ right: '70px',
148
+ };
149
+
150
+ // const smile = {
151
+ smile = {
152
+ position: 'absolute',
153
+ bottom: '40px',
154
+ left: '30px',
155
+ right: '30px',
156
+ height: '60px',
157
+ borderRadius: '0 0 150px 150px',
158
+ border: '10px solid black',
159
+ borderTop: 0,
160
+ };
161
+ }
162
+
163
+ //////////////////////////////////////////////
164
+ // STEP 4 //
165
+ // Adds a reflection behind the eyes //
166
+ //////////////////////////////////////////////
167
+
168
+ if (step === 4) {
169
+ // const smily = {
170
+ smiley = {
171
+ position: 'relative',
172
+ width: '200px',
173
+ height: '200px',
174
+ borderRadius: '200px',
175
+ border: '10px solid black',
176
+ background: 'linear-gradient(180deg, #f80, #ff0)',
177
+ };
178
+
179
+ const _eye = {
180
+ position: 'absolute',
181
+ top: '60px',
182
+ width: '20px',
183
+ height: '20px',
184
+ borderRadius: '20px',
185
+ backgroundColor: 'black',
186
+ transform: 'scaleY(2)',
187
+ };
188
+
189
+ // const leftEye = {
190
+ leftEye = {
191
+ ..._eye,
192
+ left: '70px',
193
+ };
194
+
195
+ // const rightEye = {
196
+ rightEye = {
197
+ ..._eye,
198
+ right: '70px',
199
+ };
200
+
201
+ // const smile = {
202
+ smile = {
203
+ position: 'absolute',
204
+ bottom: '40px',
205
+ left: '30px',
206
+ right: '30px',
207
+ height: '60px',
208
+ borderRadius: '0 0 150px 150px',
209
+ border: '10px solid black',
210
+ borderTop: 0,
211
+ };
212
+
213
+ // const reflexion1 = {
214
+ reflexion1 = {
215
+ position: 'absolute',
216
+ left: '50px',
217
+ right: '50px',
218
+ top: '10px',
219
+ bottom: '80px',
220
+ borderRadius: '200px',
221
+ background: 'linear-gradient(180deg, white, #fc0)',
222
+ transform: 'scaleX(1.5)',
223
+ opacity: 0.8,
224
+ };
225
+ }
226
+
227
+ //////////////////////////////////////////////
228
+ // STEP 5 //
229
+ // Adds a reflection at the bottom of //
230
+ // the circle //
231
+ //////////////////////////////////////////////
232
+
233
+ if (step === 5) {
234
+ // const smily = {
235
+ smiley = {
236
+ position: 'relative',
237
+ width: '200px',
238
+ height: '200px',
239
+ borderRadius: '200px',
240
+ border: '10px solid black',
241
+ background: 'linear-gradient(180deg, #f80, #ff0)',
242
+ };
243
+
244
+ const _eye = {
245
+ position: 'absolute',
246
+ top: '60px',
247
+ width: '20px',
248
+ height: '20px',
249
+ borderRadius: '20px',
250
+ backgroundColor: 'black',
251
+ transform: 'scaleY(2)',
252
+ };
253
+
254
+ // const leftEye = {
255
+ leftEye = {
256
+ ..._eye,
257
+ left: '70px',
258
+ };
259
+
260
+ // const rightEye = {
261
+ rightEye = {
262
+ ..._eye,
263
+ right: '70px',
264
+ };
265
+
266
+ // const smile = {
267
+ smile = {
268
+ position: 'absolute',
269
+ bottom: '40px',
270
+ left: '30px',
271
+ right: '30px',
272
+ height: '60px',
273
+ borderRadius: '0 0 150px 150px',
274
+ border: '10px solid black',
275
+ borderTop: 0,
276
+ };
277
+
278
+ // const reflexion1 = {
279
+ reflexion1 = {
280
+ position: 'absolute',
281
+ left: '50px',
282
+ right: '50px',
283
+ top: '10px',
284
+ bottom: '80px',
285
+ borderRadius: '200px',
286
+ background: 'linear-gradient(180deg, white, #fc0)',
287
+ transform: 'scaleX(1.5)',
288
+ opacity: 0.8,
289
+ };
290
+
291
+ // const reflexion2 = {
292
+ reflexion2 = {
293
+ position: 'absolute',
294
+ left: 0,
295
+ right: 0,
296
+ top: 0,
297
+ bottom: 0,
298
+ borderStyle: 'solid',
299
+ borderRadius: '200px',
300
+ borderWidth: '5px',
301
+ borderColor: 'transparent white white transparent',
302
+ transform: 'rotate(45deg)',
303
+ opacity: 0.8,
304
+ };
305
+ }
306
+
307
+ //////////////////////////////////////////////
308
+ // STEP 6 //
309
+ // Simple circle with the diameter //
310
+ // according to the property 'size' //
311
+ //////////////////////////////////////////////
312
+
313
+ if (step === 6) {
314
+ // const smily = {
315
+ smiley = {
316
+ position: 'absolute',
317
+ width: props.size,
318
+ height: props.size,
319
+ borderRadius: props.size,
320
+ border: '10px solid black',
321
+ background: 'linear-gradient(180deg, #f80, #ff0)',
322
+ };
323
+ }
324
+
325
+ //////////////////////////////////////////////
326
+ // STEP 7 //
327
+ // Final version //
328
+ //////////////////////////////////////////////
329
+
330
+ if (step === 7) {
331
+ const s = n(size);
332
+ satisfaction = Math.min(Math.max(0, satisfaction), 100);
333
+ const happy = satisfaction >= 50;
334
+
335
+ mainColor = ColorHelpers.getMarkColor(theme, mainColor);
336
+ topColor = ColorHelpers.getMarkColor(theme, topColor);
337
+
338
+ /******************************************************************************/
339
+
340
+ // Main circle.
341
+ if (!topColor) {
342
+ topColor = ColorConverters.changeColor(mainColor, -30);
343
+ }
344
+
345
+ const borderColor = ColorConverters.changeColor(mainColor, 0, 1, 0.5);
346
+
347
+ smiley = {
348
+ position: 'relative',
349
+ width: px(s),
350
+ height: px(s),
351
+ borderRadius: px(s),
352
+ border: `${px(s * 0.05)} solid ${borderColor}`,
353
+ background: `linear-gradient(180deg, ${topColor}, ${mainColor})`,
354
+ transition,
355
+ };
356
+
357
+ /******************************************************************************/
358
+
359
+ // Eyes.
360
+ const _eye = {
361
+ position: 'absolute',
362
+ top: px(s * 0.3),
363
+ width: px(s * 0.1),
364
+ height: px(s * 0.1),
365
+ borderRadius: px(s * 0.1),
366
+ backgroundColor: '#000',
367
+ transform: `scaleY(${adjust(satisfaction, 2, 1)})`,
368
+ transition,
369
+ };
370
+
371
+ leftEye = {
372
+ ..._eye,
373
+ left: px(s * adjust(satisfaction, 0.35, 0.3)),
374
+ };
375
+
376
+ rightEye = {
377
+ ..._eye,
378
+ right: px(s * adjust(satisfaction, 0.35, 0.3)),
379
+ };
380
+
381
+ /******************************************************************************/
382
+
383
+ // Smile.
384
+ const ss = happy ? (satisfaction - 50) * 2 : 50 - satisfaction;
385
+ const sr1 = adjust(ss, s * 0.75, s * 1.25);
386
+ const sr2 = adjust(ss, s * 0.75, s * 0.37);
387
+
388
+ smile = {
389
+ position: 'absolute',
390
+ bottom: px(adjust(satisfaction, s * 0.2, s * 0.3)),
391
+ left: px(s * 0.15),
392
+ right: px(s * 0.15),
393
+ height: px(adjust(ss, s * 0.3, 0)),
394
+ borderRadius: happy
395
+ ? `0 0 ${px(sr1)} ${px(sr1)} / 0 0 ${px(sr2)} ${px(sr2)}`
396
+ : `${px(sr1)} ${px(sr1)} 0 0 / ${px(sr2)} ${px(sr2)} 0 0`,
397
+ border: `${px(s * 0.05)} solid #000`,
398
+ borderTop: happy ? 0 : null,
399
+ borderBottom: happy ? null : 0,
400
+ transition,
401
+ };
402
+
403
+ const _corner = {
404
+ position: 'absolute',
405
+ top: px(adjust(ss, -s * 0.07, -s * 0.03)),
406
+ width: px(s * 0.05),
407
+ height: px(adjust(ss, s * 0.15, s * 0.075)),
408
+ borderRadius: `${px(s * 0.05)} / ${px(s * 0.08)}`,
409
+ backgroundColor: '#000',
410
+ display: happy ? null : 'none',
411
+ transition,
412
+ };
413
+
414
+ const a = adjust(ss, 65, 0);
415
+
416
+ leftCorner = {
417
+ ..._corner,
418
+ left: px(-s * 0.055),
419
+ transform: `rotate(${a}deg)`,
420
+ };
421
+
422
+ rightCorner = {
423
+ ..._corner,
424
+ right: px(-s * 0.055),
425
+ transform: `rotate(${-a}deg)`,
426
+ };
427
+
428
+ /******************************************************************************/
429
+
430
+ const reflexionColor = ColorConverters.slide(mainColor, topColor, 0.4);
431
+ const reflexionOpacity = Math.max(adjust(satisfaction, 0.8, -0.8), 0);
432
+
433
+ reflexion1 = {
434
+ position: 'absolute',
435
+ left: px(s * 0.25),
436
+ right: px(s * 0.25),
437
+ top: px(s * 0.05),
438
+ bottom: px(s * 0.4),
439
+ borderRadius: px(s),
440
+ background: `linear-gradient(180deg, white, ${reflexionColor})`,
441
+ transform: 'scaleX(1.5)',
442
+ opacity: reflexionOpacity,
443
+ };
444
+
445
+ reflexion2 = {
446
+ position: 'absolute',
447
+ left: 0,
448
+ right: 0,
449
+ top: 0,
450
+ bottom: 0,
451
+ borderStyle: 'solid',
452
+ borderRadius: px(s),
453
+ borderWidth: px(s * 0.025),
454
+ borderColor: 'transparent white white transparent',
455
+ transform: 'rotate(45deg)',
456
+ opacity: reflexionOpacity,
457
+ };
458
+ }
459
+
460
+ /******************************************************************************/
461
+
462
+ smiley.boxSizing = 'unset';
463
+ smile.boxSizing = 'unset';
464
+
465
+ /******************************************************************************/
466
+
467
+ const documentation = {
468
+ position: 'absolute',
469
+ left: 0,
470
+ right: 0,
471
+ top: px(n(size) + 20),
472
+ };
473
+
474
+ /******************************************************************************/
475
+
476
+ return {
477
+ smiley,
478
+ leftEye,
479
+ rightEye,
480
+ smile,
481
+ leftCorner,
482
+ rightCorner,
483
+ reflexion1,
484
+ reflexion2,
485
+ documentation,
486
+ };
487
+ }
488
+
489
+ /******************************************************************************/