webs-sdk 0.18.25 → 0.18.26

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 (218) hide show
  1. package/README.md +1 -1
  2. package/dist/components/ARFilters/ARFilters.d.ts +2 -1
  3. package/dist/components/ARFilters/ARFilters.d.ts.map +1 -1
  4. package/dist/components/ARFilters/ARFilters.js +67 -7
  5. package/dist/components/ARFilters/ARFilters.js.map +1 -1
  6. package/dist/components/ARFilters/FilterCarousel.d.ts +2 -1
  7. package/dist/components/ARFilters/FilterCarousel.d.ts.map +1 -1
  8. package/dist/components/ARFilters/FilterCarousel.js +58 -10
  9. package/dist/components/ARFilters/FilterCarousel.js.map +1 -1
  10. package/dist/components/ARFilters/Popups.d.ts +4 -3
  11. package/dist/components/ARFilters/Popups.d.ts.map +1 -1
  12. package/dist/components/ARFilters/Popups.js +23 -5
  13. package/dist/components/ARFilters/Popups.js.map +1 -1
  14. package/dist/components/AvatarAI.d.ts +4 -3
  15. package/dist/components/AvatarAI.d.ts.map +1 -1
  16. package/dist/components/AvatarAI.js +232 -117
  17. package/dist/components/AvatarAI.js.map +1 -1
  18. package/dist/components/CookieConsent/CookieConsent.d.ts +2 -1
  19. package/dist/components/CookieConsent/CookieConsent.d.ts.map +1 -1
  20. package/dist/components/CookieConsent/CookieConsent.js +66 -4
  21. package/dist/components/CookieConsent/CookieConsent.js.map +1 -1
  22. package/dist/components/CreativeFaceSwap.d.ts +4 -3
  23. package/dist/components/CreativeFaceSwap.d.ts.map +1 -1
  24. package/dist/components/CreativeFaceSwap.js +203 -56
  25. package/dist/components/CreativeFaceSwap.js.map +1 -1
  26. package/dist/components/MemeGenerator.d.ts +3 -2
  27. package/dist/components/MemeGenerator.d.ts.map +1 -1
  28. package/dist/components/MemeGenerator.js +162 -62
  29. package/dist/components/MemeGenerator.js.map +1 -1
  30. package/dist/components/Quiz.d.ts +3 -2
  31. package/dist/components/Quiz.d.ts.map +1 -1
  32. package/dist/components/Quiz.js +345 -260
  33. package/dist/components/Quiz.js.map +1 -1
  34. package/dist/components/Ringtone.d.ts +3 -2
  35. package/dist/components/Ringtone.d.ts.map +1 -1
  36. package/dist/components/Ringtone.js +78 -17
  37. package/dist/components/Ringtone.js.map +1 -1
  38. package/dist/components/SpinningWheel/SpinningWheel.d.ts +2 -1
  39. package/dist/components/SpinningWheel/SpinningWheel.d.ts.map +1 -1
  40. package/dist/components/SpinningWheel/SpinningWheel.js +427 -307
  41. package/dist/components/SpinningWheel/SpinningWheel.js.map +1 -1
  42. package/dist/components/Stickers.d.ts +3 -2
  43. package/dist/components/Stickers.d.ts.map +1 -1
  44. package/dist/components/Stickers.js +164 -108
  45. package/dist/components/Stickers.js.map +1 -1
  46. package/dist/components/Wallpapers.d.ts +4 -3
  47. package/dist/components/Wallpapers.d.ts.map +1 -1
  48. package/dist/components/Wallpapers.js +225 -162
  49. package/dist/components/Wallpapers.js.map +1 -1
  50. package/dist/components/WallpapersName.d.ts +5 -4
  51. package/dist/components/WallpapersName.d.ts.map +1 -1
  52. package/dist/components/WallpapersName.js +180 -98
  53. package/dist/components/WallpapersName.js.map +1 -1
  54. package/dist/components/esports/live/EsportsLive.d.ts +2 -1
  55. package/dist/components/esports/live/EsportsLive.d.ts.map +1 -1
  56. package/dist/components/esports/live/EsportsLive.js +93 -16
  57. package/dist/components/esports/live/EsportsLive.js.map +1 -1
  58. package/dist/components/esports/news/EsportsNews.d.ts +2 -1
  59. package/dist/components/esports/news/EsportsNews.d.ts.map +1 -1
  60. package/dist/components/esports/news/EsportsNews.js +55 -9
  61. package/dist/components/esports/news/EsportsNews.js.map +1 -1
  62. package/dist/components/esports/news/EsportsNewsDetail.d.ts +2 -1
  63. package/dist/components/esports/news/EsportsNewsDetail.d.ts.map +1 -1
  64. package/dist/components/esports/news/EsportsNewsDetail.js +36 -5
  65. package/dist/components/esports/news/EsportsNewsDetail.js.map +1 -1
  66. package/dist/components/esports/videos/EsportsVideos.d.ts +2 -1
  67. package/dist/components/esports/videos/EsportsVideos.d.ts.map +1 -1
  68. package/dist/components/esports/videos/EsportsVideos.js +67 -9
  69. package/dist/components/esports/videos/EsportsVideos.js.map +1 -1
  70. package/dist/components/ui/VideoPlayer.d.ts +2 -1
  71. package/dist/components/ui/VideoPlayer.d.ts.map +1 -1
  72. package/dist/components/ui/VideoPlayer.js +61 -5
  73. package/dist/components/ui/VideoPlayer.js.map +1 -1
  74. package/dist/index.d.ts +3 -1
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +49 -3
  77. package/dist/index.js.map +1 -1
  78. package/dist/libraries/networking.d.ts +1 -0
  79. package/dist/libraries/networking.d.ts.map +1 -1
  80. package/dist/libraries/networking.js +7 -0
  81. package/dist/libraries/networking.js.map +1 -1
  82. package/dist/libraries/session.d.ts +10 -1
  83. package/dist/libraries/session.d.ts.map +1 -1
  84. package/dist/libraries/session.js +54 -1
  85. package/dist/libraries/session.js.map +1 -1
  86. package/dist/libraries/utils.d.ts +0 -2
  87. package/dist/libraries/utils.d.ts.map +1 -1
  88. package/dist/libraries/utils.js +0 -6
  89. package/dist/libraries/utils.js.map +1 -1
  90. package/package.json +6 -40
  91. package/dist/components/ui/accordion.d.ts +0 -8
  92. package/dist/components/ui/accordion.d.ts.map +0 -1
  93. package/dist/components/ui/accordion.js +0 -70
  94. package/dist/components/ui/accordion.js.map +0 -1
  95. package/dist/components/ui/alert-dialog.d.ts +0 -16
  96. package/dist/components/ui/alert-dialog.d.ts.map +0 -1
  97. package/dist/components/ui/alert-dialog.js +0 -87
  98. package/dist/components/ui/alert-dialog.js.map +0 -1
  99. package/dist/components/ui/alert.d.ts +0 -9
  100. package/dist/components/ui/alert.d.ts.map +0 -1
  101. package/dist/components/ui/alert.js +0 -21
  102. package/dist/components/ui/alert.js.map +0 -1
  103. package/dist/components/ui/aspect-ratio.d.ts +0 -5
  104. package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
  105. package/dist/components/ui/aspect-ratio.js +0 -43
  106. package/dist/components/ui/aspect-ratio.js.map +0 -1
  107. package/dist/components/ui/avatar.d.ts +0 -12
  108. package/dist/components/ui/avatar.d.ts.map +0 -1
  109. package/dist/components/ui/avatar.js +0 -75
  110. package/dist/components/ui/avatar.js.map +0 -1
  111. package/dist/components/ui/badge.d.ts +0 -6
  112. package/dist/components/ui/badge.d.ts.map +0 -1
  113. package/dist/components/ui/badge.js +0 -23
  114. package/dist/components/ui/badge.js.map +0 -1
  115. package/dist/components/ui/breadcrumb.d.ts +0 -14
  116. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  117. package/dist/components/ui/breadcrumb.js +0 -48
  118. package/dist/components/ui/breadcrumb.js.map +0 -1
  119. package/dist/components/ui/button-group.d.ts +0 -12
  120. package/dist/components/ui/button-group.d.ts.map +0 -1
  121. package/dist/components/ui/button-group.js +0 -32
  122. package/dist/components/ui/button-group.js.map +0 -1
  123. package/dist/components/ui/button.d.ts +0 -7
  124. package/dist/components/ui/button.d.ts.map +0 -1
  125. package/dist/components/ui/button.js +0 -58
  126. package/dist/components/ui/button.js.map +0 -1
  127. package/dist/components/ui/cards.d.ts +0 -12
  128. package/dist/components/ui/cards.d.ts.map +0 -1
  129. package/dist/components/ui/cards.js +0 -44
  130. package/dist/components/ui/cards.js.map +0 -1
  131. package/dist/components/ui/carousel.d.ts +0 -28
  132. package/dist/components/ui/carousel.d.ts.map +0 -1
  133. package/dist/components/ui/carousel.js +0 -136
  134. package/dist/components/ui/carousel.js.map +0 -1
  135. package/dist/components/ui/checkbox.d.ts +0 -5
  136. package/dist/components/ui/checkbox.d.ts.map +0 -1
  137. package/dist/components/ui/checkbox.js +0 -44
  138. package/dist/components/ui/checkbox.js.map +0 -1
  139. package/dist/components/ui/collapsible.d.ts +0 -7
  140. package/dist/components/ui/collapsible.d.ts.map +0 -1
  141. package/dist/components/ui/collapsible.js +0 -64
  142. package/dist/components/ui/collapsible.js.map +0 -1
  143. package/dist/components/ui/context-menu.d.ts +0 -30
  144. package/dist/components/ui/context-menu.d.ts.map +0 -1
  145. package/dist/components/ui/context-menu.js +0 -115
  146. package/dist/components/ui/context-menu.js.map +0 -1
  147. package/dist/components/ui/dialog.d.ts +0 -14
  148. package/dist/components/ui/dialog.d.ts.map +0 -1
  149. package/dist/components/ui/dialog.js +0 -79
  150. package/dist/components/ui/dialog.js.map +0 -1
  151. package/dist/components/ui/dropdown-menu.d.ts +0 -19
  152. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  153. package/dist/components/ui/dropdown-menu.js +0 -125
  154. package/dist/components/ui/dropdown-menu.js.map +0 -1
  155. package/dist/components/ui/dropdown.d.ts +0 -19
  156. package/dist/components/ui/dropdown.d.ts.map +0 -1
  157. package/dist/components/ui/dropdown.js +0 -99
  158. package/dist/components/ui/dropdown.js.map +0 -1
  159. package/dist/components/ui/field.d.ts +0 -24
  160. package/dist/components/ui/field.d.ts.map +0 -1
  161. package/dist/components/ui/field.js +0 -62
  162. package/dist/components/ui/field.js.map +0 -1
  163. package/dist/components/ui/hover-card.d.ts +0 -7
  164. package/dist/components/ui/hover-card.d.ts.map +0 -1
  165. package/dist/components/ui/hover-card.js +0 -51
  166. package/dist/components/ui/hover-card.js.map +0 -1
  167. package/dist/components/ui/index.d.ts +0 -32
  168. package/dist/components/ui/index.d.ts.map +0 -1
  169. package/dist/components/ui/index.js +0 -48
  170. package/dist/components/ui/index.js.map +0 -1
  171. package/dist/components/ui/input-group.d.ts +0 -13
  172. package/dist/components/ui/input-group.d.ts.map +0 -1
  173. package/dist/components/ui/input-group.js +0 -50
  174. package/dist/components/ui/input-group.js.map +0 -1
  175. package/dist/components/ui/input.d.ts +0 -4
  176. package/dist/components/ui/input.d.ts.map +0 -1
  177. package/dist/components/ui/input.js +0 -8
  178. package/dist/components/ui/input.js.map +0 -1
  179. package/dist/components/ui/item.d.ts +0 -24
  180. package/dist/components/ui/item.d.ts.map +0 -1
  181. package/dist/components/ui/item.js +0 -91
  182. package/dist/components/ui/item.js.map +0 -1
  183. package/dist/components/ui/label.d.ts +0 -5
  184. package/dist/components/ui/label.d.ts.map +0 -1
  185. package/dist/components/ui/label.js +0 -43
  186. package/dist/components/ui/label.js.map +0 -1
  187. package/dist/components/ui/navigation-menu.d.ts +0 -15
  188. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  189. package/dist/components/ui/navigation-menu.js +0 -88
  190. package/dist/components/ui/navigation-menu.js.map +0 -1
  191. package/dist/components/ui/select.d.ts +0 -14
  192. package/dist/components/ui/select.d.ts.map +0 -1
  193. package/dist/components/ui/select.js +0 -80
  194. package/dist/components/ui/select.js.map +0 -1
  195. package/dist/components/ui/separator.d.ts +0 -5
  196. package/dist/components/ui/separator.d.ts.map +0 -1
  197. package/dist/components/ui/separator.js +0 -43
  198. package/dist/components/ui/separator.js.map +0 -1
  199. package/dist/components/ui/skeleton.d.ts +0 -4
  200. package/dist/components/ui/skeleton.d.ts.map +0 -1
  201. package/dist/components/ui/skeleton.js +0 -21
  202. package/dist/components/ui/skeleton.js.map +0 -1
  203. package/dist/components/ui/tabs.d.ts +0 -8
  204. package/dist/components/ui/tabs.d.ts.map +0 -1
  205. package/dist/components/ui/tabs.js +0 -55
  206. package/dist/components/ui/tabs.js.map +0 -1
  207. package/dist/components/ui/textarea.d.ts +0 -4
  208. package/dist/components/ui/textarea.d.ts.map +0 -1
  209. package/dist/components/ui/textarea.js +0 -8
  210. package/dist/components/ui/textarea.js.map +0 -1
  211. package/dist/components/ui/toast.d.ts +0 -5
  212. package/dist/components/ui/toast.d.ts.map +0 -1
  213. package/dist/components/ui/toast.js +0 -13
  214. package/dist/components/ui/toast.js.map +0 -1
  215. package/dist/components/ui/tooltip.d.ts +0 -8
  216. package/dist/components/ui/tooltip.d.ts.map +0 -1
  217. package/dist/components/ui/tooltip.js +0 -55
  218. package/dist/components/ui/tooltip.js.map +0 -1
@@ -1,9 +1,41 @@
1
1
  "use strict";
2
2
  "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
3
36
  Object.defineProperty(exports, "__esModule", { value: true });
4
37
  exports.SpinningWheel = SpinningWheel;
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = require("react");
38
+ const react_1 = __importStar(require("react"));
7
39
  const react_2 = require("motion/react");
8
40
  const config_1 = require("./config");
9
41
  function SpinningWheel({ config: configProp, onResult, onError, canSpin = true, alreadySpunToday = false, theme = 'womantoday', userId, websiteId, apiBaseUrl = '/api/spin2win' }) {
@@ -69,7 +101,11 @@ function SpinningWheel({ config: configProp, onResult, onError, canSpin = true,
69
101
  console.log('🎨 currentTheme:', currentTheme);
70
102
  if (!currentTheme) {
71
103
  console.error('❌ Tema no encontrado:', theme);
72
- return (0, jsx_runtime_1.jsxs)("div", { style: { padding: '20px', color: 'red' }, children: ["Error: Tema \"", theme, "\" no encontrado. Temas disponibles: ", Object.keys(config_1.wheelThemes).join(', ')] });
104
+ return react_1.default.createElement("div", { style: { padding: '20px', color: 'red' } },
105
+ "Error: Tema \"",
106
+ theme,
107
+ "\" no encontrado. Temas disponibles: ",
108
+ Object.keys(config_1.wheelThemes).join(', '));
73
109
  }
74
110
  const imgIndicator = currentTheme.indicatorAsset;
75
111
  const imgFrame = currentTheme.borderAsset;
@@ -231,322 +267,406 @@ function SpinningWheel({ config: configProp, onResult, onError, canSpin = true,
231
267
  }
232
268
  };
233
269
  const backgroundAsset = currentTheme.backgroundAsset;
234
- return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '32px', padding: '32px', minHeight: '100vh', overflow: 'hidden' }, children: [backgroundAsset && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("style", { children: `
270
+ return (react_1.default.createElement("div", { style: { position: 'relative', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '32px', padding: '32px', minHeight: '100vh', overflow: 'hidden' } },
271
+ backgroundAsset && (react_1.default.createElement(react_1.default.Fragment, null,
272
+ react_1.default.createElement("style", null, `
235
273
  .sw-bg-desktop { display: block; }
236
274
  .sw-bg-mobile { display: none; }
237
275
  @media (max-width: 767px) {
238
276
  .sw-bg-desktop { display: none; }
239
277
  .sw-bg-mobile { display: block; }
240
278
  }
241
- ` }), (0, jsx_runtime_1.jsx)("img", { src: backgroundAsset.desktop, alt: "", className: "sw-bg-desktop", style: {
279
+ `),
280
+ react_1.default.createElement("img", { src: backgroundAsset.desktop, alt: "", className: "sw-bg-desktop", style: {
281
+ position: 'absolute',
282
+ top: 0,
283
+ left: 0,
284
+ width: '100%',
285
+ height: '50%',
286
+ objectFit: 'cover',
287
+ pointerEvents: 'none',
288
+ userSelect: 'none',
289
+ zIndex: 0,
290
+ } }),
291
+ react_1.default.createElement("img", { src: backgroundAsset.mobile, alt: "", className: "sw-bg-mobile", style: {
292
+ position: 'absolute',
293
+ top: 0,
294
+ left: 0,
295
+ width: '100%',
296
+ height: '50%',
297
+ objectFit: 'cover',
298
+ pointerEvents: 'none',
299
+ userSelect: 'none',
300
+ zIndex: 0,
301
+ } }))),
302
+ react_1.default.createElement("div", { className: "relative flex flex-col items-center gap-8 w-full", style: { zIndex: 1 } },
303
+ result && (react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: "fixed inset-0 z-50 flex items-center justify-center", onClick: () => setResult(null) },
304
+ react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, className: "absolute inset-0 bg-black/40", style: { backdropFilter: 'blur(16px)' } }),
305
+ showConfetti && (react_1.default.createElement("div", { className: "absolute inset-0 pointer-events-none overflow-hidden" }, [...Array(30)].map((_, i) => (react_1.default.createElement(react_2.motion.div, { key: i, className: "absolute w-3 h-3 rounded-full", style: {
306
+ background: ['#FFD700', '#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4'][i % 5],
307
+ left: '50%',
308
+ top: '50%',
309
+ }, initial: { scale: 0, x: 0, y: 0, opacity: 1 }, animate: {
310
+ scale: [0, 1, 0.5],
311
+ x: (Math.random() - 0.5) * 800,
312
+ y: (Math.random() - 0.5) * 800,
313
+ opacity: [1, 1, 0],
314
+ }, transition: {
315
+ duration: 2,
316
+ delay: i * 0.03,
317
+ ease: "easeOut"
318
+ } }))))),
319
+ react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0, scale: 0.8, y: 50 }, animate: { opacity: 1, scale: 1, y: 0 }, transition: { duration: 0.4, ease: "easeOut", delay: 0.1 }, onClick: (e) => e.stopPropagation(), style: {
320
+ position: 'relative',
321
+ zIndex: 10,
322
+ backgroundColor: '#FFFFFF',
323
+ borderRadius: '24px',
324
+ width: '392px',
325
+ maxWidth: '90%',
326
+ padding: '0 24px',
327
+ boxShadow: '0px 25px 50px -12px rgba(0, 0, 0, 0.25)'
328
+ } },
329
+ react_1.default.createElement("button", { onClick: () => setResult(null), style: {
242
330
  position: 'absolute',
243
331
  top: 0,
244
- left: 0,
245
- width: '100%',
246
- height: '50%',
247
- objectFit: 'cover',
248
- pointerEvents: 'none',
249
- userSelect: 'none',
250
- zIndex: 0,
251
- } }), (0, jsx_runtime_1.jsx)("img", { src: backgroundAsset.mobile, alt: "", className: "sw-bg-mobile", style: {
332
+ right: 0,
333
+ padding: '20px',
334
+ background: 'transparent',
335
+ border: 'none',
336
+ cursor: 'pointer',
337
+ display: 'flex',
338
+ alignItems: 'center',
339
+ gap: '10px'
340
+ }, "aria-label": "Close" },
341
+ react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
342
+ react_1.default.createElement("path", { d: "M1 1L9 9M9 1L1 9", stroke: "#6D6665", strokeWidth: "2", strokeLinecap: "round" }))),
343
+ react_1.default.createElement("div", { style: {
344
+ display: 'flex',
345
+ flexDirection: 'column',
346
+ alignItems: 'center',
347
+ gap: '16px',
348
+ paddingTop: '60px',
349
+ paddingBottom: '60px'
350
+ } }, result.reward_type === 'real' ? (react_1.default.createElement(react_1.default.Fragment, null,
351
+ react_1.default.createElement(react_2.motion.div, { initial: { scale: 0, rotate: -180 }, animate: { scale: 1, rotate: 0 }, transition: { delay: 0.3, type: "spring", stiffness: 200, damping: 10 } },
352
+ react_1.default.createElement("img", { src: "/spin2win/assets/Icon-Celebrate@2x.png", alt: "Celebrate", style: { width: '105px', height: '105px' } })),
353
+ react_1.default.createElement(react_2.motion.h3, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, style: {
354
+ fontFamily: uiFont,
355
+ fontWeight: 700,
356
+ fontSize: '26.25px',
357
+ lineHeight: '1.2em',
358
+ letterSpacing: '0.9%',
359
+ textAlign: 'center',
360
+ color: '#000000',
361
+ margin: 0
362
+ } },
363
+ "You won ",
364
+ result.reward_title,
365
+ "!"),
366
+ react_1.default.createElement(react_2.motion.p, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7 }, style: {
367
+ fontFamily: secondaryFont,
368
+ fontWeight: 500,
369
+ fontSize: '16px',
370
+ lineHeight: '1.32em',
371
+ textAlign: 'center',
372
+ color: '#6D6665',
373
+ margin: 0
374
+ } }, "The money will be sent to your Vodacom account. Processing may take up to 24 hours."))) : (react_1.default.createElement(react_1.default.Fragment, null,
375
+ react_1.default.createElement(react_2.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.3, type: "spring", stiffness: 200, damping: 10 } },
376
+ react_1.default.createElement("img", { src: "/spin2win/assets/Icon-Sad@2x.png", alt: "Sad", style: { width: '105px', height: '105px' } })),
377
+ react_1.default.createElement(react_2.motion.h3, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, style: {
378
+ fontFamily: uiFont,
379
+ fontWeight: 700,
380
+ fontSize: '26.25px',
381
+ lineHeight: '1.2em',
382
+ letterSpacing: '0.9%',
383
+ textAlign: 'center',
384
+ color: '#000000',
385
+ margin: 0
386
+ } }, "Oops... so close!"),
387
+ react_1.default.createElement(react_2.motion.p, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7 }, style: {
388
+ fontFamily: secondaryFont,
389
+ fontWeight: 500,
390
+ fontSize: '16px',
391
+ lineHeight: '1.32em',
392
+ textAlign: 'center',
393
+ color: '#6D6665',
394
+ margin: 0
395
+ } }, "No cash reward this time, but you can try again tomorrow!"))))))),
396
+ error && (react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: "fixed inset-0 z-50 flex items-center justify-center", onClick: () => setError(null) },
397
+ react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, className: "absolute inset-0 bg-black/40", style: { backdropFilter: 'blur(16px)' } }),
398
+ react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0, scale: 0.8, y: 50 }, animate: { opacity: 1, scale: 1, y: 0 }, transition: { duration: 0.4, ease: "easeOut", delay: 0.1 }, onClick: (e) => e.stopPropagation(), style: {
399
+ position: 'relative',
400
+ zIndex: 10,
401
+ backgroundColor: '#FFFFFF',
402
+ borderRadius: '24px',
403
+ width: '392px',
404
+ maxWidth: '90%',
405
+ padding: '0 24px',
406
+ boxShadow: '0px 25px 50px -12px rgba(0, 0, 0, 0.25)'
407
+ } },
408
+ react_1.default.createElement("button", { onClick: () => setError(null), style: {
252
409
  position: 'absolute',
253
410
  top: 0,
254
- left: 0,
255
- width: '100%',
256
- height: '50%',
257
- objectFit: 'cover',
258
- pointerEvents: 'none',
259
- userSelect: 'none',
260
- zIndex: 0,
261
- } })] })), (0, jsx_runtime_1.jsxs)("div", { className: "relative flex flex-col items-center gap-8 w-full", style: { zIndex: 1 }, children: [result && ((0, jsx_runtime_1.jsxs)(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: "fixed inset-0 z-50 flex items-center justify-center", onClick: () => setResult(null), children: [(0, jsx_runtime_1.jsx)(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, className: "absolute inset-0 bg-black/40", style: { backdropFilter: 'blur(16px)' } }), showConfetti && ((0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 pointer-events-none overflow-hidden", children: [...Array(30)].map((_, i) => ((0, jsx_runtime_1.jsx)(react_2.motion.div, { className: "absolute w-3 h-3 rounded-full", style: {
262
- background: ['#FFD700', '#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4'][i % 5],
263
- left: '50%',
264
- top: '50%',
265
- }, initial: { scale: 0, x: 0, y: 0, opacity: 1 }, animate: {
266
- scale: [0, 1, 0.5],
267
- x: (Math.random() - 0.5) * 800,
268
- y: (Math.random() - 0.5) * 800,
269
- opacity: [1, 1, 0],
270
- }, transition: {
271
- duration: 2,
272
- delay: i * 0.03,
273
- ease: "easeOut"
274
- } }, i))) })), (0, jsx_runtime_1.jsxs)(react_2.motion.div, { initial: { opacity: 0, scale: 0.8, y: 50 }, animate: { opacity: 1, scale: 1, y: 0 }, transition: { duration: 0.4, ease: "easeOut", delay: 0.1 }, onClick: (e) => e.stopPropagation(), style: {
275
- position: 'relative',
276
- zIndex: 10,
277
- backgroundColor: '#FFFFFF',
278
- borderRadius: '24px',
279
- width: '392px',
280
- maxWidth: '90%',
281
- padding: '0 24px',
282
- boxShadow: '0px 25px 50px -12px rgba(0, 0, 0, 0.25)'
283
- }, children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => setResult(null), style: {
284
- position: 'absolute',
285
- top: 0,
286
- right: 0,
287
- padding: '20px',
288
- background: 'transparent',
289
- border: 'none',
290
- cursor: 'pointer',
291
- display: 'flex',
292
- alignItems: 'center',
293
- gap: '10px'
294
- }, "aria-label": "Close", children: (0, jsx_runtime_1.jsx)("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M1 1L9 9M9 1L1 9", stroke: "#6D6665", strokeWidth: "2", strokeLinecap: "round" }) }) }), (0, jsx_runtime_1.jsx)("div", { style: {
295
- display: 'flex',
296
- flexDirection: 'column',
297
- alignItems: 'center',
298
- gap: '16px',
299
- paddingTop: '60px',
300
- paddingBottom: '60px'
301
- }, children: result.reward_type === 'real' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_2.motion.div, { initial: { scale: 0, rotate: -180 }, animate: { scale: 1, rotate: 0 }, transition: { delay: 0.3, type: "spring", stiffness: 200, damping: 10 }, children: (0, jsx_runtime_1.jsx)("img", { src: "/spin2win/assets/Icon-Celebrate@2x.png", alt: "Celebrate", style: { width: '105px', height: '105px' } }) }), (0, jsx_runtime_1.jsxs)(react_2.motion.h3, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, style: {
302
- fontFamily: uiFont,
303
- fontWeight: 700,
304
- fontSize: '26.25px',
305
- lineHeight: '1.2em',
306
- letterSpacing: '0.9%',
307
- textAlign: 'center',
308
- color: '#000000',
309
- margin: 0
310
- }, children: ["You won ", result.reward_title, "!"] }), (0, jsx_runtime_1.jsx)(react_2.motion.p, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7 }, style: {
311
- fontFamily: secondaryFont,
312
- fontWeight: 500,
313
- fontSize: '16px',
314
- lineHeight: '1.32em',
315
- textAlign: 'center',
316
- color: '#6D6665',
317
- margin: 0
318
- }, children: "The money will be sent to your Vodacom account. Processing may take up to 24 hours." })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_2.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.3, type: "spring", stiffness: 200, damping: 10 }, children: (0, jsx_runtime_1.jsx)("img", { src: "/spin2win/assets/Icon-Sad@2x.png", alt: "Sad", style: { width: '105px', height: '105px' } }) }), (0, jsx_runtime_1.jsx)(react_2.motion.h3, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, style: {
319
- fontFamily: uiFont,
320
- fontWeight: 700,
321
- fontSize: '26.25px',
322
- lineHeight: '1.2em',
323
- letterSpacing: '0.9%',
324
- textAlign: 'center',
325
- color: '#000000',
326
- margin: 0
327
- }, children: "Oops... so close!" }), (0, jsx_runtime_1.jsx)(react_2.motion.p, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7 }, style: {
328
- fontFamily: secondaryFont,
329
- fontWeight: 500,
330
- fontSize: '16px',
331
- lineHeight: '1.32em',
332
- textAlign: 'center',
333
- color: '#6D6665',
334
- margin: 0
335
- }, children: "No cash reward this time, but you can try again tomorrow!" })] })) })] })] })), error && ((0, jsx_runtime_1.jsxs)(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: "fixed inset-0 z-50 flex items-center justify-center", onClick: () => setError(null), children: [(0, jsx_runtime_1.jsx)(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, className: "absolute inset-0 bg-black/40", style: { backdropFilter: 'blur(16px)' } }), (0, jsx_runtime_1.jsxs)(react_2.motion.div, { initial: { opacity: 0, scale: 0.8, y: 50 }, animate: { opacity: 1, scale: 1, y: 0 }, transition: { duration: 0.4, ease: "easeOut", delay: 0.1 }, onClick: (e) => e.stopPropagation(), style: {
336
- position: 'relative',
337
- zIndex: 10,
338
- backgroundColor: '#FFFFFF',
339
- borderRadius: '24px',
340
- width: '392px',
341
- maxWidth: '90%',
342
- padding: '0 24px',
343
- boxShadow: '0px 25px 50px -12px rgba(0, 0, 0, 0.25)'
344
- }, children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => setError(null), style: {
345
- position: 'absolute',
346
- top: 0,
347
- right: 0,
348
- padding: '20px',
349
- background: 'transparent',
350
- border: 'none',
351
- cursor: 'pointer',
352
- display: 'flex',
353
- alignItems: 'center',
354
- gap: '10px'
355
- }, "aria-label": "Close", children: (0, jsx_runtime_1.jsx)("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M1 1L9 9M9 1L1 9", stroke: "#6D6665", strokeWidth: "2", strokeLinecap: "round" }) }) }), (0, jsx_runtime_1.jsxs)("div", { style: {
356
- display: 'flex',
357
- flexDirection: 'column',
358
- alignItems: 'center',
359
- gap: '16px',
360
- paddingTop: '60px',
361
- paddingBottom: '60px'
362
- }, children: [(0, jsx_runtime_1.jsx)(react_2.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.3, type: "spring", stiffness: 200, damping: 10 }, children: (0, jsx_runtime_1.jsx)("img", { src: "/spin2win/assets/Icon-Warning@2x.png", alt: "Warning", style: { width: '105px', height: '105px' } }) }), (0, jsx_runtime_1.jsx)(react_2.motion.h3, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, style: {
363
- fontFamily: uiFont,
364
- fontWeight: 700,
365
- fontSize: '26.25px',
366
- lineHeight: '1.2em',
367
- letterSpacing: '0.9%',
368
- textAlign: 'center',
369
- color: '#000000',
370
- margin: 0
371
- }, children: "Something went wrong" }), (0, jsx_runtime_1.jsxs)(react_2.motion.p, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7 }, style: {
372
- fontFamily: secondaryFont,
373
- fontWeight: 500,
374
- fontSize: '16px',
375
- lineHeight: '1.37em',
376
- textAlign: 'center',
377
- color: '#595959',
378
- margin: 0
379
- }, children: ["Your spin was registered, but we couldn't process the payment right now.", (0, jsx_runtime_1.jsx)("br", {}), "Please contact support if the issue persists."] })] })] })] })), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col items-center max-w-md", style: { gap: '24px' }, children: !result && !isSpinning ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h1", { style: {
411
+ right: 0,
412
+ padding: '20px',
413
+ background: 'transparent',
414
+ border: 'none',
415
+ cursor: 'pointer',
416
+ display: 'flex',
417
+ alignItems: 'center',
418
+ gap: '10px'
419
+ }, "aria-label": "Close" },
420
+ react_1.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
421
+ react_1.default.createElement("path", { d: "M1 1L9 9M9 1L1 9", stroke: "#6D6665", strokeWidth: "2", strokeLinecap: "round" }))),
422
+ react_1.default.createElement("div", { style: {
423
+ display: 'flex',
424
+ flexDirection: 'column',
425
+ alignItems: 'center',
426
+ gap: '16px',
427
+ paddingTop: '60px',
428
+ paddingBottom: '60px'
429
+ } },
430
+ react_1.default.createElement(react_2.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.3, type: "spring", stiffness: 200, damping: 10 } },
431
+ react_1.default.createElement("img", { src: "/spin2win/assets/Icon-Warning@2x.png", alt: "Warning", style: { width: '105px', height: '105px' } })),
432
+ react_1.default.createElement(react_2.motion.h3, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5 }, style: {
433
+ fontFamily: uiFont,
434
+ fontWeight: 700,
435
+ fontSize: '26.25px',
436
+ lineHeight: '1.2em',
437
+ letterSpacing: '0.9%',
438
+ textAlign: 'center',
439
+ color: '#000000',
440
+ margin: 0
441
+ } }, "Something went wrong"),
442
+ react_1.default.createElement(react_2.motion.p, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7 }, style: {
443
+ fontFamily: secondaryFont,
444
+ fontWeight: 500,
445
+ fontSize: '16px',
446
+ lineHeight: '1.37em',
447
+ textAlign: 'center',
448
+ color: '#595959',
449
+ margin: 0
450
+ } },
451
+ "Your spin was registered, but we couldn't process the payment right now.",
452
+ react_1.default.createElement("br", null),
453
+ "Please contact support if the issue persists."))))),
454
+ react_1.default.createElement("div", { className: "flex flex-col items-center max-w-md", style: { gap: '24px' } }, !result && !isSpinning ? (react_1.default.createElement(react_1.default.Fragment, null,
455
+ react_1.default.createElement("h1", { style: {
456
+ fontFamily: uiFont,
457
+ fontSize: '32px',
458
+ fontWeight: 700,
459
+ lineHeight: '1.25em',
460
+ color: currentTheme.colors.heading,
461
+ margin: 0
462
+ } }, config.copy.headline),
463
+ react_1.default.createElement("p", { style: {
464
+ fontFamily: secondaryFont,
465
+ fontSize: '16px',
466
+ fontWeight: 400,
467
+ lineHeight: '1.5em',
468
+ textAlign: 'center',
469
+ color: currentTheme.colors.text.primary,
470
+ margin: 0
471
+ } }, config.copy.subcopy))) : isSpinning ? (react_1.default.createElement(react_1.default.Fragment, null,
472
+ react_1.default.createElement("h1", { style: {
473
+ fontFamily: uiFont,
474
+ fontSize: '32px',
475
+ fontWeight: 700,
476
+ lineHeight: '1.25em',
477
+ color: currentTheme.colors.heading,
478
+ margin: 0
479
+ } }, config.copy.spinningHeadline),
480
+ react_1.default.createElement("p", { style: {
481
+ fontFamily: secondaryFont,
482
+ fontSize: '16px',
483
+ fontWeight: 400,
484
+ lineHeight: '1.5em',
485
+ textAlign: 'center',
486
+ color: currentTheme.colors.text.primary,
487
+ margin: 0
488
+ } }, config.copy.spinningSubcopy))) : null),
489
+ react_1.default.createElement("div", { className: "relative w-[400px] h-[400px]", style: {
490
+ filter: 'drop-shadow(0px 8px 16px rgba(0, 0, 0, 0.15))'
491
+ } },
492
+ react_1.default.createElement(react_2.motion.div, { ref: wheelRef, className: "absolute left-[1.39%] top-[1.44%] w-[97.17%] h-[97.17%] z-5", style: {
493
+ filter: 'drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.1))',
494
+ willChange: 'transform',
495
+ backfaceVisibility: 'hidden',
496
+ WebkitFontSmoothing: 'antialiased'
497
+ }, animate: { rotate: rotation }, transition: { duration: 3, ease: "easeOut" } },
498
+ react_1.default.createElement("img", { src: imgPortions, alt: "", className: "w-full h-full object-contain", style: {
499
+ imageRendering: 'auto',
500
+ backfaceVisibility: 'hidden',
501
+ transform: 'translateZ(0)'
502
+ } })),
503
+ react_1.default.createElement(react_2.motion.div, { className: "absolute left-[1.39%] top-[1.44%] w-[97.17%] h-[97.17%] z-10", style: {
504
+ willChange: 'transform',
505
+ backfaceVisibility: 'hidden',
506
+ WebkitFontSmoothing: 'antialiased'
507
+ }, animate: { rotate: rotation }, transition: { duration: 3, ease: "easeOut" } },
508
+ react_1.default.createElement("div", { className: "absolute inset-0" },
509
+ react_1.default.createElement("div", { className: "absolute flex left-1/2 -translate-x-1/2 items-center justify-center", style: { top: '8%' } },
510
+ react_1.default.createElement("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(0deg)' } },
511
+ react_1.default.createElement("div", { className: "text-center", style: {
512
+ fontFamily: textFont,
513
+ fontWeight: 600,
514
+ fontSize: segmentFontSize,
515
+ lineHeight: '1.2em',
516
+ color: currentTheme.colors.text.segment
517
+ } }, "Oops"))),
518
+ react_1.default.createElement("div", { className: "absolute flex items-center justify-center", style: { top: '18%', right: '18%' } },
519
+ react_1.default.createElement("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(45deg)' } },
520
+ react_1.default.createElement("div", { className: "text-center", style: {
521
+ fontFamily: textFont,
522
+ fontWeight: 600,
523
+ fontSize: segmentFontSize,
524
+ lineHeight: '1.2em',
525
+ color: currentTheme.colors.text.segment
526
+ } }, "R10"),
527
+ react_1.default.createElement("div", { className: "text-center", style: {
380
528
  fontFamily: uiFont,
381
- fontSize: '32px',
382
- fontWeight: 700,
383
- lineHeight: '1.25em',
384
- color: currentTheme.colors.heading,
385
- margin: 0
386
- }, children: config.copy.headline }), (0, jsx_runtime_1.jsx)("p", { style: {
387
- fontFamily: secondaryFont,
388
- fontSize: '16px',
389
- fontWeight: 400,
390
- lineHeight: '1.5em',
391
- textAlign: 'center',
392
- color: currentTheme.colors.text.primary,
393
- margin: 0
394
- }, children: config.copy.subcopy })] })) : isSpinning ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h1", { style: {
529
+ fontWeight: 600,
530
+ fontSize: '28px',
531
+ lineHeight: '1.2em',
532
+ color: currentTheme.colors.text.secondary
533
+ } }, "\uD83D\uDCB0"))),
534
+ react_1.default.createElement("div", { className: "absolute flex items-center justify-center", style: { top: '50%', right: '2%', transform: 'translateY(-50%)' } },
535
+ react_1.default.createElement("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(90deg)' } },
536
+ react_1.default.createElement("div", { className: "text-center", style: {
537
+ fontFamily: textFont,
538
+ fontWeight: 600,
539
+ fontSize: segmentFontSize,
540
+ lineHeight: '1.2em',
541
+ color: currentTheme.colors.text.segment
542
+ } }, "Oops"))),
543
+ react_1.default.createElement("div", { className: "absolute flex items-center justify-center", style: { bottom: '18%', right: '18%' } },
544
+ react_1.default.createElement("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(135deg)' } },
545
+ react_1.default.createElement("div", { className: "text-center", style: {
546
+ fontFamily: textFont,
547
+ fontWeight: 600,
548
+ fontSize: segmentFontSize,
549
+ lineHeight: '1.2em',
550
+ color: currentTheme.colors.text.segment
551
+ } }, "R10"),
552
+ react_1.default.createElement("div", { className: "text-center", style: {
395
553
  fontFamily: uiFont,
396
- fontSize: '32px',
397
- fontWeight: 700,
398
- lineHeight: '1.25em',
399
- color: currentTheme.colors.heading,
400
- margin: 0
401
- }, children: config.copy.spinningHeadline }), (0, jsx_runtime_1.jsx)("p", { style: {
402
- fontFamily: secondaryFont,
403
- fontSize: '16px',
404
- fontWeight: 400,
405
- lineHeight: '1.5em',
406
- textAlign: 'center',
407
- color: currentTheme.colors.text.primary,
408
- margin: 0
409
- }, children: config.copy.spinningSubcopy })] })) : null }), (0, jsx_runtime_1.jsxs)("div", { className: "relative w-[400px] h-[400px]", style: {
410
- filter: 'drop-shadow(0px 8px 16px rgba(0, 0, 0, 0.15))'
411
- }, children: [(0, jsx_runtime_1.jsx)(react_2.motion.div, { ref: wheelRef, className: "absolute left-[1.39%] top-[1.44%] w-[97.17%] h-[97.17%] z-5", style: {
412
- filter: 'drop-shadow(0px 1px 3px rgba(0, 0, 0, 0.1))',
413
- willChange: 'transform',
414
- backfaceVisibility: 'hidden',
415
- WebkitFontSmoothing: 'antialiased'
416
- }, animate: { rotate: rotation }, transition: { duration: 3, ease: "easeOut" }, children: (0, jsx_runtime_1.jsx)("img", { src: imgPortions, alt: "", className: "w-full h-full object-contain", style: {
417
- imageRendering: 'auto',
418
- backfaceVisibility: 'hidden',
419
- transform: 'translateZ(0)'
420
- } }) }), (0, jsx_runtime_1.jsx)(react_2.motion.div, { className: "absolute left-[1.39%] top-[1.44%] w-[97.17%] h-[97.17%] z-10", style: {
421
- willChange: 'transform',
422
- backfaceVisibility: 'hidden',
423
- WebkitFontSmoothing: 'antialiased'
424
- }, animate: { rotate: rotation }, transition: { duration: 3, ease: "easeOut" }, children: (0, jsx_runtime_1.jsxs)("div", { className: "absolute inset-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "absolute flex left-1/2 -translate-x-1/2 items-center justify-center", style: { top: '8%' }, children: (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(0deg)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
425
- fontFamily: textFont,
426
- fontWeight: 600,
427
- fontSize: segmentFontSize,
428
- lineHeight: '1.2em',
429
- color: currentTheme.colors.text.segment
430
- }, children: "Oops" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex items-center justify-center", style: { top: '18%', right: '18%' }, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(45deg)' }, children: [(0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
431
- fontFamily: textFont,
432
- fontWeight: 600,
433
- fontSize: segmentFontSize,
434
- lineHeight: '1.2em',
435
- color: currentTheme.colors.text.segment
436
- }, children: "R10" }), (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
437
- fontFamily: uiFont,
438
- fontWeight: 600,
439
- fontSize: '28px',
440
- lineHeight: '1.2em',
441
- color: currentTheme.colors.text.secondary
442
- }, children: "\uD83D\uDCB0" })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex items-center justify-center", style: { top: '50%', right: '2%', transform: 'translateY(-50%)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(90deg)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
443
- fontFamily: textFont,
444
- fontWeight: 600,
445
- fontSize: segmentFontSize,
446
- lineHeight: '1.2em',
447
- color: currentTheme.colors.text.segment
448
- }, children: "Oops" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex items-center justify-center", style: { bottom: '18%', right: '18%' }, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(135deg)' }, children: [(0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
449
- fontFamily: textFont,
450
- fontWeight: 600,
451
- fontSize: segmentFontSize,
452
- lineHeight: '1.2em',
453
- color: currentTheme.colors.text.segment
454
- }, children: "R10" }), (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
455
- fontFamily: uiFont,
456
- fontWeight: 600,
457
- fontSize: '28px',
458
- lineHeight: '1.2em',
459
- color: currentTheme.colors.text.secondary
460
- }, children: "\uD83D\uDCB0" })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex left-1/2 -translate-x-1/2 items-center justify-center", style: { bottom: '8%' }, children: (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(180deg)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
461
- fontFamily: textFont,
462
- fontWeight: 600,
463
- fontSize: segmentFontSize,
464
- lineHeight: '1.2em',
465
- color: currentTheme.colors.text.segment
466
- }, children: "Oops" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex items-center justify-center", style: { bottom: '18%', left: '18%' }, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(-135deg)' }, children: [(0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
467
- fontFamily: textFont,
468
- fontWeight: 600,
469
- fontSize: segmentFontSize,
470
- lineHeight: '1.2em',
471
- color: currentTheme.colors.text.segment
472
- }, children: "R20" }), (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
473
- fontFamily: uiFont,
474
- fontWeight: 600,
475
- fontSize: '28px',
476
- lineHeight: '1.2em',
477
- color: currentTheme.colors.text.secondary
478
- }, children: "\uD83D\uDCB0" })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex items-center justify-center", style: { top: '50%', left: '2%', transform: 'translateY(-50%)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(-90deg)' }, children: (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
479
- fontFamily: textFont,
480
- fontWeight: 600,
481
- fontSize: segmentFontSize,
482
- lineHeight: '1.2em',
483
- color: currentTheme.colors.text.segment
484
- }, children: "Oops" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute flex items-center justify-center", style: { top: '18%', left: '18%' }, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(-45deg)' }, children: [(0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
485
- fontFamily: textFont,
486
- fontWeight: 600,
487
- fontSize: segmentFontSize,
488
- lineHeight: '1.2em',
489
- color: currentTheme.colors.text.segment
490
- }, children: "R20" }), (0, jsx_runtime_1.jsx)("div", { className: "text-center", style: {
491
- fontFamily: uiFont,
492
- fontWeight: 600,
493
- fontSize: '28px',
494
- lineHeight: '1.2em',
495
- color: currentTheme.colors.text.secondary
496
- }, children: "\uD83D\uDCB0" })] }) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 z-15 pointer-events-none", children: (0, jsx_runtime_1.jsx)("img", { src: imgFrame, alt: "", className: "w-full h-full object-contain", style: {
497
- filter: 'drop-shadow(0px 2px 6px rgba(0, 0, 0, 0.1))',
498
- imageRendering: 'auto',
499
- backfaceVisibility: 'hidden',
500
- transform: 'translateZ(0)'
501
- } }) }), (0, jsx_runtime_1.jsx)("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none z-20", style: { marginTop: '-15px' }, children: (0, jsx_runtime_1.jsxs)(react_2.motion.div, { className: "w-[120px] h-[120px] relative", style: {
502
- filter: 'drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.25)) drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.15))'
503
- }, animate: isSpinning ? { scale: [1, 1.15, 1] } : {}, transition: {
504
- duration: 0.5,
505
- repeat: isSpinning ? Infinity : 0,
506
- ease: "easeInOut"
507
- }, children: [(0, jsx_runtime_1.jsx)("img", { src: imgIndicator, alt: "", className: "w-full h-full object-contain", style: {
508
- imageRendering: 'auto',
509
- backfaceVisibility: 'hidden',
510
- transform: 'translateZ(0)'
511
- } }), (0, jsx_runtime_1.jsx)("img", { src: "/spin2win/assets/circle-inner-56586a.png", alt: "", className: "absolute object-contain", style: {
512
- width: '60px',
513
- height: '60px',
514
- left: '48%',
515
- top: '60%',
516
- transform: 'translate(-50%, -50%) translateZ(0)',
517
- imageRendering: 'auto',
518
- backfaceVisibility: 'hidden'
519
- } })] }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-col items-center gap-4", style: { width: '70%', maxWidth: '1200px' }, children: !isCheckingStatus && ((0, jsx_runtime_1.jsx)("button", { onClick: spin, disabled: isSpinning || !canSpin || hasSpunToday, style: {
520
- fontFamily: secondaryFont,
521
- fontWeight: 700,
522
- fontSize: '14px',
523
- lineHeight: '1.32em',
524
- letterSpacing: '0.5%',
525
- color: '#FFFFFF',
526
- backgroundColor: currentTheme.colors.button,
527
- borderRadius: '40px',
528
- padding: '10px 15px',
529
- border: 'none',
530
- cursor: isSpinning || !canSpin || hasSpunToday ? 'not-allowed' : 'pointer',
531
- opacity: isSpinning || !canSpin || hasSpunToday ? 0.5 : 1,
532
- transition: 'all 0.2s ease'
533
- }, onMouseEnter: (e) => {
534
- if (!isSpinning && canSpin && !hasSpunToday) {
535
- e.currentTarget.style.transform = 'scale(1.05)';
536
- }
537
- }, onMouseLeave: (e) => {
538
- e.currentTarget.style.transform = 'scale(1)';
539
- }, children: isSpinning ? 'SPINNING...' : 'SPIN THE WHEEL!' })) }), (0, jsx_runtime_1.jsx)("p", { style: {
540
- fontFamily: secondaryFont,
541
- fontWeight: 400,
542
- fontSize: '16px',
543
- lineHeight: '1.5em',
544
- textAlign: 'center',
545
- color: currentTheme.colors.text.disclaimer,
546
- margin: 0,
547
- padding: '0 20px',
548
- marginTop: '60px'
549
- }, children: "Cash prizes are transferred to the Vodacom account linked to your profile. Please make sure your account details are up to date to receive cash prizes." })] })] }));
554
+ fontWeight: 600,
555
+ fontSize: '28px',
556
+ lineHeight: '1.2em',
557
+ color: currentTheme.colors.text.secondary
558
+ } }, "\uD83D\uDCB0"))),
559
+ react_1.default.createElement("div", { className: "absolute flex left-1/2 -translate-x-1/2 items-center justify-center", style: { bottom: '8%' } },
560
+ react_1.default.createElement("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(180deg)' } },
561
+ react_1.default.createElement("div", { className: "text-center", style: {
562
+ fontFamily: textFont,
563
+ fontWeight: 600,
564
+ fontSize: segmentFontSize,
565
+ lineHeight: '1.2em',
566
+ color: currentTheme.colors.text.segment
567
+ } }, "Oops"))),
568
+ react_1.default.createElement("div", { className: "absolute flex items-center justify-center", style: { bottom: '18%', left: '18%' } },
569
+ react_1.default.createElement("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(-135deg)' } },
570
+ react_1.default.createElement("div", { className: "text-center", style: {
571
+ fontFamily: textFont,
572
+ fontWeight: 600,
573
+ fontSize: segmentFontSize,
574
+ lineHeight: '1.2em',
575
+ color: currentTheme.colors.text.segment
576
+ } }, "R20"),
577
+ react_1.default.createElement("div", { className: "text-center", style: {
578
+ fontFamily: uiFont,
579
+ fontWeight: 600,
580
+ fontSize: '28px',
581
+ lineHeight: '1.2em',
582
+ color: currentTheme.colors.text.secondary
583
+ } }, "\uD83D\uDCB0"))),
584
+ react_1.default.createElement("div", { className: "absolute flex items-center justify-center", style: { top: '50%', left: '2%', transform: 'translateY(-50%)' } },
585
+ react_1.default.createElement("div", { className: "flex flex-col gap-0.5 items-center", style: { transform: 'rotate(-90deg)' } },
586
+ react_1.default.createElement("div", { className: "text-center", style: {
587
+ fontFamily: textFont,
588
+ fontWeight: 600,
589
+ fontSize: segmentFontSize,
590
+ lineHeight: '1.2em',
591
+ color: currentTheme.colors.text.segment
592
+ } }, "Oops"))),
593
+ react_1.default.createElement("div", { className: "absolute flex items-center justify-center", style: { top: '18%', left: '18%' } },
594
+ react_1.default.createElement("div", { className: "flex flex-col gap-[7px] items-center", style: { transform: 'rotate(-45deg)' } },
595
+ react_1.default.createElement("div", { className: "text-center", style: {
596
+ fontFamily: textFont,
597
+ fontWeight: 600,
598
+ fontSize: segmentFontSize,
599
+ lineHeight: '1.2em',
600
+ color: currentTheme.colors.text.segment
601
+ } }, "R20"),
602
+ react_1.default.createElement("div", { className: "text-center", style: {
603
+ fontFamily: uiFont,
604
+ fontWeight: 600,
605
+ fontSize: '28px',
606
+ lineHeight: '1.2em',
607
+ color: currentTheme.colors.text.secondary
608
+ } }, "\uD83D\uDCB0"))))),
609
+ react_1.default.createElement("div", { className: "absolute inset-0 z-15 pointer-events-none" },
610
+ react_1.default.createElement("img", { src: imgFrame, alt: "", className: "w-full h-full object-contain", style: {
611
+ filter: 'drop-shadow(0px 2px 6px rgba(0, 0, 0, 0.1))',
612
+ imageRendering: 'auto',
613
+ backfaceVisibility: 'hidden',
614
+ transform: 'translateZ(0)'
615
+ } })),
616
+ react_1.default.createElement("div", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none z-20", style: { marginTop: '-15px' } },
617
+ react_1.default.createElement(react_2.motion.div, { className: "w-[120px] h-[120px] relative", style: {
618
+ filter: 'drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.25)) drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.15))'
619
+ }, animate: isSpinning ? { scale: [1, 1.15, 1] } : {}, transition: {
620
+ duration: 0.5,
621
+ repeat: isSpinning ? Infinity : 0,
622
+ ease: "easeInOut"
623
+ } },
624
+ react_1.default.createElement("img", { src: imgIndicator, alt: "", className: "w-full h-full object-contain", style: {
625
+ imageRendering: 'auto',
626
+ backfaceVisibility: 'hidden',
627
+ transform: 'translateZ(0)'
628
+ } }),
629
+ react_1.default.createElement("img", { src: "/spin2win/assets/circle-inner-56586a.png", alt: "", className: "absolute object-contain", style: {
630
+ width: '60px',
631
+ height: '60px',
632
+ left: '48%',
633
+ top: '60%',
634
+ transform: 'translate(-50%, -50%) translateZ(0)',
635
+ imageRendering: 'auto',
636
+ backfaceVisibility: 'hidden'
637
+ } })))),
638
+ react_1.default.createElement("div", { className: "flex flex-col items-center gap-4", style: { width: '70%', maxWidth: '1200px' } }, !isCheckingStatus && (react_1.default.createElement("button", { onClick: spin, disabled: isSpinning || !canSpin || hasSpunToday, style: {
639
+ fontFamily: secondaryFont,
640
+ fontWeight: 700,
641
+ fontSize: '14px',
642
+ lineHeight: '1.32em',
643
+ letterSpacing: '0.5%',
644
+ color: '#FFFFFF',
645
+ backgroundColor: currentTheme.colors.button,
646
+ borderRadius: '40px',
647
+ padding: '10px 15px',
648
+ border: 'none',
649
+ cursor: isSpinning || !canSpin || hasSpunToday ? 'not-allowed' : 'pointer',
650
+ opacity: isSpinning || !canSpin || hasSpunToday ? 0.5 : 1,
651
+ transition: 'all 0.2s ease'
652
+ }, onMouseEnter: (e) => {
653
+ if (!isSpinning && canSpin && !hasSpunToday) {
654
+ e.currentTarget.style.transform = 'scale(1.05)';
655
+ }
656
+ }, onMouseLeave: (e) => {
657
+ e.currentTarget.style.transform = 'scale(1)';
658
+ } }, isSpinning ? 'SPINNING...' : 'SPIN THE WHEEL!'))),
659
+ react_1.default.createElement("p", { style: {
660
+ fontFamily: secondaryFont,
661
+ fontWeight: 400,
662
+ fontSize: '16px',
663
+ lineHeight: '1.5em',
664
+ textAlign: 'center',
665
+ color: currentTheme.colors.text.disclaimer,
666
+ margin: 0,
667
+ padding: '0 20px',
668
+ marginTop: '60px'
669
+ } }, "Cash prizes are transferred to the Vodacom account linked to your profile. Please make sure your account details are up to date to receive cash prizes."))));
550
670
  }
551
671
  exports.default = SpinningWheel;
552
672
  //# sourceMappingURL=SpinningWheel.js.map