webs-sdk 0.18.28 → 0.18.30

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 +1 -2
  3. package/dist/components/ARFilters/ARFilters.d.ts.map +1 -1
  4. package/dist/components/ARFilters/ARFilters.js +7 -67
  5. package/dist/components/ARFilters/ARFilters.js.map +1 -1
  6. package/dist/components/ARFilters/FilterCarousel.d.ts +1 -2
  7. package/dist/components/ARFilters/FilterCarousel.d.ts.map +1 -1
  8. package/dist/components/ARFilters/FilterCarousel.js +10 -58
  9. package/dist/components/ARFilters/FilterCarousel.js.map +1 -1
  10. package/dist/components/ARFilters/Popups.d.ts +3 -4
  11. package/dist/components/ARFilters/Popups.d.ts.map +1 -1
  12. package/dist/components/ARFilters/Popups.js +5 -23
  13. package/dist/components/ARFilters/Popups.js.map +1 -1
  14. package/dist/components/AvatarAI.d.ts +3 -4
  15. package/dist/components/AvatarAI.d.ts.map +1 -1
  16. package/dist/components/AvatarAI.js +117 -232
  17. package/dist/components/AvatarAI.js.map +1 -1
  18. package/dist/components/CookieConsent/CookieConsent.d.ts +1 -2
  19. package/dist/components/CookieConsent/CookieConsent.d.ts.map +1 -1
  20. package/dist/components/CookieConsent/CookieConsent.js +4 -66
  21. package/dist/components/CookieConsent/CookieConsent.js.map +1 -1
  22. package/dist/components/CreativeFaceSwap.d.ts +3 -4
  23. package/dist/components/CreativeFaceSwap.d.ts.map +1 -1
  24. package/dist/components/CreativeFaceSwap.js +56 -203
  25. package/dist/components/CreativeFaceSwap.js.map +1 -1
  26. package/dist/components/MemeGenerator.d.ts +2 -3
  27. package/dist/components/MemeGenerator.d.ts.map +1 -1
  28. package/dist/components/MemeGenerator.js +62 -162
  29. package/dist/components/MemeGenerator.js.map +1 -1
  30. package/dist/components/Quiz.d.ts +2 -3
  31. package/dist/components/Quiz.d.ts.map +1 -1
  32. package/dist/components/Quiz.js +260 -345
  33. package/dist/components/Quiz.js.map +1 -1
  34. package/dist/components/Ringtone.d.ts +2 -3
  35. package/dist/components/Ringtone.d.ts.map +1 -1
  36. package/dist/components/Ringtone.js +17 -78
  37. package/dist/components/Ringtone.js.map +1 -1
  38. package/dist/components/SpinningWheel/SpinningWheel.d.ts +1 -2
  39. package/dist/components/SpinningWheel/SpinningWheel.d.ts.map +1 -1
  40. package/dist/components/SpinningWheel/SpinningWheel.js +307 -427
  41. package/dist/components/SpinningWheel/SpinningWheel.js.map +1 -1
  42. package/dist/components/Stickers.d.ts +2 -3
  43. package/dist/components/Stickers.d.ts.map +1 -1
  44. package/dist/components/Stickers.js +108 -164
  45. package/dist/components/Stickers.js.map +1 -1
  46. package/dist/components/Wallpapers.d.ts +3 -4
  47. package/dist/components/Wallpapers.d.ts.map +1 -1
  48. package/dist/components/Wallpapers.js +162 -225
  49. package/dist/components/Wallpapers.js.map +1 -1
  50. package/dist/components/WallpapersName.d.ts +4 -5
  51. package/dist/components/WallpapersName.d.ts.map +1 -1
  52. package/dist/components/WallpapersName.js +98 -180
  53. package/dist/components/WallpapersName.js.map +1 -1
  54. package/dist/components/esports/live/EsportsLive.d.ts +1 -2
  55. package/dist/components/esports/live/EsportsLive.d.ts.map +1 -1
  56. package/dist/components/esports/live/EsportsLive.js +16 -93
  57. package/dist/components/esports/live/EsportsLive.js.map +1 -1
  58. package/dist/components/esports/news/EsportsNews.d.ts +1 -2
  59. package/dist/components/esports/news/EsportsNews.d.ts.map +1 -1
  60. package/dist/components/esports/news/EsportsNews.js +9 -55
  61. package/dist/components/esports/news/EsportsNews.js.map +1 -1
  62. package/dist/components/esports/news/EsportsNewsDetail.d.ts +1 -2
  63. package/dist/components/esports/news/EsportsNewsDetail.d.ts.map +1 -1
  64. package/dist/components/esports/news/EsportsNewsDetail.js +5 -36
  65. package/dist/components/esports/news/EsportsNewsDetail.js.map +1 -1
  66. package/dist/components/esports/videos/EsportsVideos.d.ts +1 -2
  67. package/dist/components/esports/videos/EsportsVideos.d.ts.map +1 -1
  68. package/dist/components/esports/videos/EsportsVideos.js +9 -67
  69. package/dist/components/esports/videos/EsportsVideos.js.map +1 -1
  70. package/dist/components/ui/VideoPlayer.d.ts +1 -2
  71. package/dist/components/ui/VideoPlayer.d.ts.map +1 -1
  72. package/dist/components/ui/VideoPlayer.js +5 -61
  73. package/dist/components/ui/VideoPlayer.js.map +1 -1
  74. package/dist/components/ui/accordion.d.ts +8 -0
  75. package/dist/components/ui/accordion.d.ts.map +1 -0
  76. package/dist/components/ui/accordion.js +70 -0
  77. package/dist/components/ui/accordion.js.map +1 -0
  78. package/dist/components/ui/alert-dialog.d.ts +16 -0
  79. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  80. package/dist/components/ui/alert-dialog.js +87 -0
  81. package/dist/components/ui/alert-dialog.js.map +1 -0
  82. package/dist/components/ui/alert.d.ts +9 -0
  83. package/dist/components/ui/alert.d.ts.map +1 -0
  84. package/dist/components/ui/alert.js +21 -0
  85. package/dist/components/ui/alert.js.map +1 -0
  86. package/dist/components/ui/aspect-ratio.d.ts +5 -0
  87. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  88. package/dist/components/ui/aspect-ratio.js +43 -0
  89. package/dist/components/ui/aspect-ratio.js.map +1 -0
  90. package/dist/components/ui/avatar.d.ts +12 -0
  91. package/dist/components/ui/avatar.d.ts.map +1 -0
  92. package/dist/components/ui/avatar.js +75 -0
  93. package/dist/components/ui/avatar.js.map +1 -0
  94. package/dist/components/ui/badge.d.ts +6 -0
  95. package/dist/components/ui/badge.d.ts.map +1 -0
  96. package/dist/components/ui/badge.js +23 -0
  97. package/dist/components/ui/badge.js.map +1 -0
  98. package/dist/components/ui/breadcrumb.d.ts +14 -0
  99. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  100. package/dist/components/ui/breadcrumb.js +48 -0
  101. package/dist/components/ui/breadcrumb.js.map +1 -0
  102. package/dist/components/ui/button-group.d.ts +12 -0
  103. package/dist/components/ui/button-group.d.ts.map +1 -0
  104. package/dist/components/ui/button-group.js +32 -0
  105. package/dist/components/ui/button-group.js.map +1 -0
  106. package/dist/components/ui/button.d.ts +7 -0
  107. package/dist/components/ui/button.d.ts.map +1 -0
  108. package/dist/components/ui/button.js +58 -0
  109. package/dist/components/ui/button.js.map +1 -0
  110. package/dist/components/ui/cards.d.ts +12 -0
  111. package/dist/components/ui/cards.d.ts.map +1 -0
  112. package/dist/components/ui/cards.js +44 -0
  113. package/dist/components/ui/cards.js.map +1 -0
  114. package/dist/components/ui/carousel.d.ts +28 -0
  115. package/dist/components/ui/carousel.d.ts.map +1 -0
  116. package/dist/components/ui/carousel.js +136 -0
  117. package/dist/components/ui/carousel.js.map +1 -0
  118. package/dist/components/ui/checkbox.d.ts +5 -0
  119. package/dist/components/ui/checkbox.d.ts.map +1 -0
  120. package/dist/components/ui/checkbox.js +44 -0
  121. package/dist/components/ui/checkbox.js.map +1 -0
  122. package/dist/components/ui/collapsible.d.ts +7 -0
  123. package/dist/components/ui/collapsible.d.ts.map +1 -0
  124. package/dist/components/ui/collapsible.js +64 -0
  125. package/dist/components/ui/collapsible.js.map +1 -0
  126. package/dist/components/ui/context-menu.d.ts +30 -0
  127. package/dist/components/ui/context-menu.d.ts.map +1 -0
  128. package/dist/components/ui/context-menu.js +115 -0
  129. package/dist/components/ui/context-menu.js.map +1 -0
  130. package/dist/components/ui/dialog.d.ts +14 -0
  131. package/dist/components/ui/dialog.d.ts.map +1 -0
  132. package/dist/components/ui/dialog.js +79 -0
  133. package/dist/components/ui/dialog.js.map +1 -0
  134. package/dist/components/ui/dropdown-menu.d.ts +19 -0
  135. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  136. package/dist/components/ui/dropdown-menu.js +125 -0
  137. package/dist/components/ui/dropdown-menu.js.map +1 -0
  138. package/dist/components/ui/dropdown.d.ts +19 -0
  139. package/dist/components/ui/dropdown.d.ts.map +1 -0
  140. package/dist/components/ui/dropdown.js +99 -0
  141. package/dist/components/ui/dropdown.js.map +1 -0
  142. package/dist/components/ui/field.d.ts +24 -0
  143. package/dist/components/ui/field.d.ts.map +1 -0
  144. package/dist/components/ui/field.js +62 -0
  145. package/dist/components/ui/field.js.map +1 -0
  146. package/dist/components/ui/hover-card.d.ts +7 -0
  147. package/dist/components/ui/hover-card.d.ts.map +1 -0
  148. package/dist/components/ui/hover-card.js +51 -0
  149. package/dist/components/ui/hover-card.js.map +1 -0
  150. package/dist/components/ui/index.d.ts +32 -0
  151. package/dist/components/ui/index.d.ts.map +1 -0
  152. package/dist/components/ui/index.js +48 -0
  153. package/dist/components/ui/index.js.map +1 -0
  154. package/dist/components/ui/input-group.d.ts +13 -0
  155. package/dist/components/ui/input-group.d.ts.map +1 -0
  156. package/dist/components/ui/input-group.js +50 -0
  157. package/dist/components/ui/input-group.js.map +1 -0
  158. package/dist/components/ui/input.d.ts +4 -0
  159. package/dist/components/ui/input.d.ts.map +1 -0
  160. package/dist/components/ui/input.js +8 -0
  161. package/dist/components/ui/input.js.map +1 -0
  162. package/dist/components/ui/item.d.ts +24 -0
  163. package/dist/components/ui/item.d.ts.map +1 -0
  164. package/dist/components/ui/item.js +91 -0
  165. package/dist/components/ui/item.js.map +1 -0
  166. package/dist/components/ui/label.d.ts +5 -0
  167. package/dist/components/ui/label.d.ts.map +1 -0
  168. package/dist/components/ui/label.js +43 -0
  169. package/dist/components/ui/label.js.map +1 -0
  170. package/dist/components/ui/navigation-menu.d.ts +15 -0
  171. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  172. package/dist/components/ui/navigation-menu.js +88 -0
  173. package/dist/components/ui/navigation-menu.js.map +1 -0
  174. package/dist/components/ui/select.d.ts +14 -0
  175. package/dist/components/ui/select.d.ts.map +1 -0
  176. package/dist/components/ui/select.js +80 -0
  177. package/dist/components/ui/select.js.map +1 -0
  178. package/dist/components/ui/separator.d.ts +5 -0
  179. package/dist/components/ui/separator.d.ts.map +1 -0
  180. package/dist/components/ui/separator.js +43 -0
  181. package/dist/components/ui/separator.js.map +1 -0
  182. package/dist/components/ui/skeleton.d.ts +4 -0
  183. package/dist/components/ui/skeleton.d.ts.map +1 -0
  184. package/dist/components/ui/skeleton.js +21 -0
  185. package/dist/components/ui/skeleton.js.map +1 -0
  186. package/dist/components/ui/tabs.d.ts +8 -0
  187. package/dist/components/ui/tabs.d.ts.map +1 -0
  188. package/dist/components/ui/tabs.js +55 -0
  189. package/dist/components/ui/tabs.js.map +1 -0
  190. package/dist/components/ui/textarea.d.ts +4 -0
  191. package/dist/components/ui/textarea.d.ts.map +1 -0
  192. package/dist/components/ui/textarea.js +8 -0
  193. package/dist/components/ui/textarea.js.map +1 -0
  194. package/dist/components/ui/toast.d.ts +5 -0
  195. package/dist/components/ui/toast.d.ts.map +1 -0
  196. package/dist/components/ui/toast.js +13 -0
  197. package/dist/components/ui/toast.js.map +1 -0
  198. package/dist/components/ui/tooltip.d.ts +8 -0
  199. package/dist/components/ui/tooltip.d.ts.map +1 -0
  200. package/dist/components/ui/tooltip.js +55 -0
  201. package/dist/components/ui/tooltip.js.map +1 -0
  202. package/dist/index.d.ts +1 -4
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +3 -53
  205. package/dist/index.js.map +1 -1
  206. package/dist/libraries/networking.d.ts +4 -1
  207. package/dist/libraries/networking.d.ts.map +1 -1
  208. package/dist/libraries/networking.js +27 -8
  209. package/dist/libraries/networking.js.map +1 -1
  210. package/dist/libraries/session.d.ts +1 -10
  211. package/dist/libraries/session.d.ts.map +1 -1
  212. package/dist/libraries/session.js +1 -57
  213. package/dist/libraries/session.js.map +1 -1
  214. package/dist/libraries/utils.d.ts +2 -0
  215. package/dist/libraries/utils.d.ts.map +1 -1
  216. package/dist/libraries/utils.js +6 -0
  217. package/dist/libraries/utils.js.map +1 -1
  218. package/package.json +41 -6
@@ -1,41 +1,9 @@
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
- })();
36
3
  Object.defineProperty(exports, "__esModule", { value: true });
37
4
  exports.SpinningWheel = SpinningWheel;
38
- const react_1 = __importStar(require("react"));
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
39
7
  const react_2 = require("motion/react");
40
8
  const config_1 = require("./config");
41
9
  function SpinningWheel({ config: configProp, onResult, onError, canSpin = true, alreadySpunToday = false, theme = 'womantoday', userId, websiteId, apiBaseUrl = '/api/spin2win' }) {
@@ -101,11 +69,7 @@ function SpinningWheel({ config: configProp, onResult, onError, canSpin = true,
101
69
  console.log('🎨 currentTheme:', currentTheme);
102
70
  if (!currentTheme) {
103
71
  console.error('❌ Tema no encontrado:', theme);
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(', '));
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(', ')] });
109
73
  }
110
74
  const imgIndicator = currentTheme.indicatorAsset;
111
75
  const imgFrame = currentTheme.borderAsset;
@@ -267,406 +231,322 @@ function SpinningWheel({ config: configProp, onResult, onError, canSpin = true,
267
231
  }
268
232
  };
269
233
  const backgroundAsset = currentTheme.backgroundAsset;
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, `
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: `
273
235
  .sw-bg-desktop { display: block; }
274
236
  .sw-bg-mobile { display: none; }
275
237
  @media (max-width: 767px) {
276
238
  .sw-bg-desktop { display: none; }
277
239
  .sw-bg-mobile { display: block; }
278
240
  }
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: {
241
+ ` }), (0, jsx_runtime_1.jsx)("img", { src: backgroundAsset.desktop, alt: "", className: "sw-bg-desktop", style: {
330
242
  position: 'absolute',
331
243
  top: 0,
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: {
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: {
409
252
  position: 'absolute',
410
253
  top: 0,
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: {
528
- fontFamily: uiFont,
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: {
553
- fontFamily: uiFont,
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: {
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: {
578
380
  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: {
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: {
603
395
  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."))));
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." })] })] }));
670
550
  }
671
551
  exports.default = SpinningWheel;
672
552
  //# sourceMappingURL=SpinningWheel.js.map