related-ui-components 1.1.6

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 (571) hide show
  1. package/README.md +200 -0
  2. package/lib/commonjs/app/_layout.js +41 -0
  3. package/lib/commonjs/app/_layout.js.map +1 -0
  4. package/lib/commonjs/app/index.js +153 -0
  5. package/lib/commonjs/app/index.js.map +1 -0
  6. package/lib/commonjs/assets/components/BannerWithDetails.png +0 -0
  7. package/lib/commonjs/assets/components/DealCard-Horizontal.png +0 -0
  8. package/lib/commonjs/assets/components/DealCard-Vertical.png +0 -0
  9. package/lib/commonjs/assets/components/DealCard-floating.png +0 -0
  10. package/lib/commonjs/assets/components/DealCard-nested.png +0 -0
  11. package/lib/commonjs/assets/components/Filters.png +0 -0
  12. package/lib/commonjs/assets/components/Popup-1.png +0 -0
  13. package/lib/commonjs/assets/components/Popup-2.png +0 -0
  14. package/lib/commonjs/assets/components/Popup-3.png +0 -0
  15. package/lib/commonjs/assets/components/RedemptionOption-Horizontal.png +0 -0
  16. package/lib/commonjs/assets/components/RedemptionOption-Vertical.png +0 -0
  17. package/lib/commonjs/assets/components/SimpleBanner.png +0 -0
  18. package/lib/commonjs/assets/components/SimpleTrendingCard.png +0 -0
  19. package/lib/commonjs/assets/components/SimpleTrendingCardV2.png +0 -0
  20. package/lib/commonjs/assets/components/UnlockRewards-1.png +0 -0
  21. package/lib/commonjs/assets/components/UnlockRewards-2.png +0 -0
  22. package/lib/commonjs/assets/fonts/SpaceMono-Regular.ttf +0 -0
  23. package/lib/commonjs/assets/images/adaptive-icon.png +0 -0
  24. package/lib/commonjs/assets/images/face.jpg +0 -0
  25. package/lib/commonjs/assets/images/favicon.png +0 -0
  26. package/lib/commonjs/assets/images/giftvoucher.jpg +0 -0
  27. package/lib/commonjs/assets/images/icon.png +0 -0
  28. package/lib/commonjs/assets/images/insta.webp +0 -0
  29. package/lib/commonjs/assets/images/muse.jpg +0 -0
  30. package/lib/commonjs/assets/images/namshi-banner.png +0 -0
  31. package/lib/commonjs/assets/images/namshi.webp +0 -0
  32. package/lib/commonjs/assets/images/partial-react-logo.png +0 -0
  33. package/lib/commonjs/assets/images/pb-logo.jpg +0 -0
  34. package/lib/commonjs/assets/images/pb.jpg +0 -0
  35. package/lib/commonjs/assets/images/react-logo.png +0 -0
  36. package/lib/commonjs/assets/images/react-logo@2x.png +0 -0
  37. package/lib/commonjs/assets/images/react-logo@3x.png +0 -0
  38. package/lib/commonjs/assets/images/scratch_foreground.png +0 -0
  39. package/lib/commonjs/assets/images/splash-icon.png +0 -0
  40. package/lib/commonjs/assets/images/upgrade.png +0 -0
  41. package/lib/commonjs/components/Badges/Badge.js +65 -0
  42. package/lib/commonjs/components/Badges/Badge.js.map +1 -0
  43. package/lib/commonjs/components/Badges/README.md +98 -0
  44. package/lib/commonjs/components/Badges/index.js +29 -0
  45. package/lib/commonjs/components/Badges/index.js.map +1 -0
  46. package/lib/commonjs/components/Banner/Banner.js +135 -0
  47. package/lib/commonjs/components/Banner/Banner.js.map +1 -0
  48. package/lib/commonjs/components/Banner/BannerWithDetails.js +118 -0
  49. package/lib/commonjs/components/Banner/BannerWithDetails.js.map +1 -0
  50. package/lib/commonjs/components/Banner/README.md +101 -0
  51. package/lib/commonjs/components/Banner/index.js +48 -0
  52. package/lib/commonjs/components/Banner/index.js.map +1 -0
  53. package/lib/commonjs/components/BrandIcon/BrandIcon.js +103 -0
  54. package/lib/commonjs/components/BrandIcon/BrandIcon.js.map +1 -0
  55. package/lib/commonjs/components/BrandIcon/index.js +29 -0
  56. package/lib/commonjs/components/BrandIcon/index.js.map +1 -0
  57. package/lib/commonjs/components/Card/Card.js +124 -0
  58. package/lib/commonjs/components/Card/Card.js.map +1 -0
  59. package/lib/commonjs/components/Card/CardContent.js +42 -0
  60. package/lib/commonjs/components/Card/CardContent.js.map +1 -0
  61. package/lib/commonjs/components/Card/CardFooter.js +34 -0
  62. package/lib/commonjs/components/Card/CardFooter.js.map +1 -0
  63. package/lib/commonjs/components/Card/CardHeader.js +77 -0
  64. package/lib/commonjs/components/Card/CardHeader.js.map +1 -0
  65. package/lib/commonjs/components/Card/CardImage.js +51 -0
  66. package/lib/commonjs/components/Card/CardImage.js.map +1 -0
  67. package/lib/commonjs/components/Card/index.js +98 -0
  68. package/lib/commonjs/components/Card/index.js.map +1 -0
  69. package/lib/commonjs/components/Card/templates/DealCard.js +188 -0
  70. package/lib/commonjs/components/Card/templates/DealCard.js.map +1 -0
  71. package/lib/commonjs/components/Card/templates/DealCardWithBackgroundImage.js +195 -0
  72. package/lib/commonjs/components/Card/templates/DealCardWithBackgroundImage.js.map +1 -0
  73. package/lib/commonjs/components/Card/templates/README.md +233 -0
  74. package/lib/commonjs/components/Card/templates/SimpleTrendingCard.js +59 -0
  75. package/lib/commonjs/components/Card/templates/SimpleTrendingCard.js.map +1 -0
  76. package/lib/commonjs/components/Card/types.js +6 -0
  77. package/lib/commonjs/components/Card/types.js.map +1 -0
  78. package/lib/commonjs/components/CloseIcon/CloseIcon.js +71 -0
  79. package/lib/commonjs/components/CloseIcon/CloseIcon.js.map +1 -0
  80. package/lib/commonjs/components/CloseIcon/index.js +29 -0
  81. package/lib/commonjs/components/CloseIcon/index.js.map +1 -0
  82. package/lib/commonjs/components/Filters/Filters.js +339 -0
  83. package/lib/commonjs/components/Filters/Filters.js.map +1 -0
  84. package/lib/commonjs/components/Filters/PointsRangeSelector.js +262 -0
  85. package/lib/commonjs/components/Filters/PointsRangeSelector.js.map +1 -0
  86. package/lib/commonjs/components/Filters/README.md +212 -0
  87. package/lib/commonjs/components/Filters/index.js +47 -0
  88. package/lib/commonjs/components/Filters/index.js.map +1 -0
  89. package/lib/commonjs/components/Input/Input.js +156 -0
  90. package/lib/commonjs/components/Input/Input.js.map +1 -0
  91. package/lib/commonjs/components/Input/README.md +128 -0
  92. package/lib/commonjs/components/Input/index.js +29 -0
  93. package/lib/commonjs/components/Input/index.js.map +1 -0
  94. package/lib/commonjs/components/LockOverlay/LockOverlay.js +65 -0
  95. package/lib/commonjs/components/LockOverlay/LockOverlay.js.map +1 -0
  96. package/lib/commonjs/components/LockOverlay/index.js +29 -0
  97. package/lib/commonjs/components/LockOverlay/index.js.map +1 -0
  98. package/lib/commonjs/components/Popup/Popup.js +296 -0
  99. package/lib/commonjs/components/Popup/Popup.js.map +1 -0
  100. package/lib/commonjs/components/Popup/README.md +133 -0
  101. package/lib/commonjs/components/Popup/index.js +29 -0
  102. package/lib/commonjs/components/Popup/index.js.map +1 -0
  103. package/lib/commonjs/components/ProgressBar/ProgressBar.js +121 -0
  104. package/lib/commonjs/components/ProgressBar/ProgressBar.js.map +1 -0
  105. package/lib/commonjs/components/ProgressBar/index.js +29 -0
  106. package/lib/commonjs/components/ProgressBar/index.js.map +1 -0
  107. package/lib/commonjs/components/RedemptionOption/README.md +148 -0
  108. package/lib/commonjs/components/RedemptionOption/RedemptionOption.js +111 -0
  109. package/lib/commonjs/components/RedemptionOption/RedemptionOption.js.map +1 -0
  110. package/lib/commonjs/components/RedemptionOption/index.js +29 -0
  111. package/lib/commonjs/components/RedemptionOption/index.js.map +1 -0
  112. package/lib/commonjs/components/ScratchCard/README.md +119 -0
  113. package/lib/commonjs/components/ScratchCard/ScratchCard.js +153 -0
  114. package/lib/commonjs/components/ScratchCard/ScratchCard.js.map +1 -0
  115. package/lib/commonjs/components/ScratchCard/ScratchCardContent.js +28 -0
  116. package/lib/commonjs/components/ScratchCard/ScratchCardContent.js.map +1 -0
  117. package/lib/commonjs/components/ScratchCard/index.js +48 -0
  118. package/lib/commonjs/components/ScratchCard/index.js.map +1 -0
  119. package/lib/commonjs/components/UnlockRewards/README.md +187 -0
  120. package/lib/commonjs/components/UnlockRewards/RewardItem.js +125 -0
  121. package/lib/commonjs/components/UnlockRewards/RewardItem.js.map +1 -0
  122. package/lib/commonjs/components/UnlockRewards/UnlockRewards.js +207 -0
  123. package/lib/commonjs/components/UnlockRewards/UnlockRewards.js.map +1 -0
  124. package/lib/commonjs/components/UnlockRewards/index.js +48 -0
  125. package/lib/commonjs/components/UnlockRewards/index.js.map +1 -0
  126. package/lib/commonjs/components/Wheel/README.md +141 -0
  127. package/lib/commonjs/components/Wheel/Wheel.js +323 -0
  128. package/lib/commonjs/components/Wheel/Wheel.js.map +1 -0
  129. package/lib/commonjs/components/Wheel/index.js +29 -0
  130. package/lib/commonjs/components/Wheel/index.js.map +1 -0
  131. package/lib/commonjs/components/index.js +160 -0
  132. package/lib/commonjs/components/index.js.map +1 -0
  133. package/lib/commonjs/constants/BRANDS.js +57 -0
  134. package/lib/commonjs/constants/BRANDS.js.map +1 -0
  135. package/lib/commonjs/index.js +28 -0
  136. package/lib/commonjs/index.js.map +1 -0
  137. package/lib/commonjs/theme/Colors.js +120 -0
  138. package/lib/commonjs/theme/Colors.js.map +1 -0
  139. package/lib/commonjs/theme/ThemeContext.js +49 -0
  140. package/lib/commonjs/theme/ThemeContext.js.map +1 -0
  141. package/lib/commonjs/theme/index.js +28 -0
  142. package/lib/commonjs/theme/index.js.map +1 -0
  143. package/lib/module/app/_layout.js +36 -0
  144. package/lib/module/app/_layout.js.map +1 -0
  145. package/lib/module/app/index.js +143 -0
  146. package/lib/module/app/index.js.map +1 -0
  147. package/lib/module/assets/components/BannerWithDetails.png +0 -0
  148. package/lib/module/assets/components/DealCard-Horizontal.png +0 -0
  149. package/lib/module/assets/components/DealCard-Vertical.png +0 -0
  150. package/lib/module/assets/components/DealCard-floating.png +0 -0
  151. package/lib/module/assets/components/DealCard-nested.png +0 -0
  152. package/lib/module/assets/components/Filters.png +0 -0
  153. package/lib/module/assets/components/Popup-1.png +0 -0
  154. package/lib/module/assets/components/Popup-2.png +0 -0
  155. package/lib/module/assets/components/Popup-3.png +0 -0
  156. package/lib/module/assets/components/RedemptionOption-Horizontal.png +0 -0
  157. package/lib/module/assets/components/RedemptionOption-Vertical.png +0 -0
  158. package/lib/module/assets/components/SimpleBanner.png +0 -0
  159. package/lib/module/assets/components/SimpleTrendingCard.png +0 -0
  160. package/lib/module/assets/components/SimpleTrendingCardV2.png +0 -0
  161. package/lib/module/assets/components/UnlockRewards-1.png +0 -0
  162. package/lib/module/assets/components/UnlockRewards-2.png +0 -0
  163. package/lib/module/assets/fonts/SpaceMono-Regular.ttf +0 -0
  164. package/lib/module/assets/images/adaptive-icon.png +0 -0
  165. package/lib/module/assets/images/face.jpg +0 -0
  166. package/lib/module/assets/images/favicon.png +0 -0
  167. package/lib/module/assets/images/giftvoucher.jpg +0 -0
  168. package/lib/module/assets/images/icon.png +0 -0
  169. package/lib/module/assets/images/insta.webp +0 -0
  170. package/lib/module/assets/images/muse.jpg +0 -0
  171. package/lib/module/assets/images/namshi-banner.png +0 -0
  172. package/lib/module/assets/images/namshi.webp +0 -0
  173. package/lib/module/assets/images/partial-react-logo.png +0 -0
  174. package/lib/module/assets/images/pb-logo.jpg +0 -0
  175. package/lib/module/assets/images/pb.jpg +0 -0
  176. package/lib/module/assets/images/react-logo.png +0 -0
  177. package/lib/module/assets/images/react-logo@2x.png +0 -0
  178. package/lib/module/assets/images/react-logo@3x.png +0 -0
  179. package/lib/module/assets/images/scratch_foreground.png +0 -0
  180. package/lib/module/assets/images/splash-icon.png +0 -0
  181. package/lib/module/assets/images/upgrade.png +0 -0
  182. package/lib/module/components/Badges/Badge.js +59 -0
  183. package/lib/module/components/Badges/Badge.js.map +1 -0
  184. package/lib/module/components/Badges/README.md +98 -0
  185. package/lib/module/components/Badges/index.js +5 -0
  186. package/lib/module/components/Badges/index.js.map +1 -0
  187. package/lib/module/components/Banner/Banner.js +130 -0
  188. package/lib/module/components/Banner/Banner.js.map +1 -0
  189. package/lib/module/components/Banner/BannerWithDetails.js +111 -0
  190. package/lib/module/components/Banner/BannerWithDetails.js.map +1 -0
  191. package/lib/module/components/Banner/README.md +101 -0
  192. package/lib/module/components/Banner/index.js +7 -0
  193. package/lib/module/components/Banner/index.js.map +1 -0
  194. package/lib/module/components/BrandIcon/BrandIcon.js +98 -0
  195. package/lib/module/components/BrandIcon/BrandIcon.js.map +1 -0
  196. package/lib/module/components/BrandIcon/index.js +5 -0
  197. package/lib/module/components/BrandIcon/index.js.map +1 -0
  198. package/lib/module/components/Card/Card.js +119 -0
  199. package/lib/module/components/Card/Card.js.map +1 -0
  200. package/lib/module/components/Card/CardContent.js +37 -0
  201. package/lib/module/components/Card/CardContent.js.map +1 -0
  202. package/lib/module/components/Card/CardFooter.js +29 -0
  203. package/lib/module/components/Card/CardFooter.js.map +1 -0
  204. package/lib/module/components/Card/CardHeader.js +72 -0
  205. package/lib/module/components/Card/CardHeader.js.map +1 -0
  206. package/lib/module/components/Card/CardImage.js +46 -0
  207. package/lib/module/components/Card/CardImage.js.map +1 -0
  208. package/lib/module/components/Card/index.js +18 -0
  209. package/lib/module/components/Card/index.js.map +1 -0
  210. package/lib/module/components/Card/templates/DealCard.js +183 -0
  211. package/lib/module/components/Card/templates/DealCard.js.map +1 -0
  212. package/lib/module/components/Card/templates/DealCardWithBackgroundImage.js +188 -0
  213. package/lib/module/components/Card/templates/DealCardWithBackgroundImage.js.map +1 -0
  214. package/lib/module/components/Card/templates/README.md +233 -0
  215. package/lib/module/components/Card/templates/SimpleTrendingCard.js +54 -0
  216. package/lib/module/components/Card/templates/SimpleTrendingCard.js.map +1 -0
  217. package/lib/module/components/Card/types.js +4 -0
  218. package/lib/module/components/Card/types.js.map +1 -0
  219. package/lib/module/components/CloseIcon/CloseIcon.js +63 -0
  220. package/lib/module/components/CloseIcon/CloseIcon.js.map +1 -0
  221. package/lib/module/components/CloseIcon/index.js +5 -0
  222. package/lib/module/components/CloseIcon/index.js.map +1 -0
  223. package/lib/module/components/Filters/Filters.js +330 -0
  224. package/lib/module/components/Filters/Filters.js.map +1 -0
  225. package/lib/module/components/Filters/PointsRangeSelector.js +256 -0
  226. package/lib/module/components/Filters/PointsRangeSelector.js.map +1 -0
  227. package/lib/module/components/Filters/README.md +212 -0
  228. package/lib/module/components/Filters/index.js +7 -0
  229. package/lib/module/components/Filters/index.js.map +1 -0
  230. package/lib/module/components/Input/Input.js +150 -0
  231. package/lib/module/components/Input/Input.js.map +1 -0
  232. package/lib/module/components/Input/README.md +128 -0
  233. package/lib/module/components/Input/index.js +5 -0
  234. package/lib/module/components/Input/index.js.map +1 -0
  235. package/lib/module/components/LockOverlay/LockOverlay.js +60 -0
  236. package/lib/module/components/LockOverlay/LockOverlay.js.map +1 -0
  237. package/lib/module/components/LockOverlay/index.js +5 -0
  238. package/lib/module/components/LockOverlay/index.js.map +1 -0
  239. package/lib/module/components/Popup/Popup.js +291 -0
  240. package/lib/module/components/Popup/Popup.js.map +1 -0
  241. package/lib/module/components/Popup/README.md +133 -0
  242. package/lib/module/components/Popup/index.js +5 -0
  243. package/lib/module/components/Popup/index.js.map +1 -0
  244. package/lib/module/components/ProgressBar/ProgressBar.js +116 -0
  245. package/lib/module/components/ProgressBar/ProgressBar.js.map +1 -0
  246. package/lib/module/components/ProgressBar/index.js +5 -0
  247. package/lib/module/components/ProgressBar/index.js.map +1 -0
  248. package/lib/module/components/RedemptionOption/README.md +148 -0
  249. package/lib/module/components/RedemptionOption/RedemptionOption.js +106 -0
  250. package/lib/module/components/RedemptionOption/RedemptionOption.js.map +1 -0
  251. package/lib/module/components/RedemptionOption/index.js +5 -0
  252. package/lib/module/components/RedemptionOption/index.js.map +1 -0
  253. package/lib/module/components/ScratchCard/README.md +119 -0
  254. package/lib/module/components/ScratchCard/ScratchCard.js +147 -0
  255. package/lib/module/components/ScratchCard/ScratchCard.js.map +1 -0
  256. package/lib/module/components/ScratchCard/ScratchCardContent.js +24 -0
  257. package/lib/module/components/ScratchCard/ScratchCardContent.js.map +1 -0
  258. package/lib/module/components/ScratchCard/index.js +7 -0
  259. package/lib/module/components/ScratchCard/index.js.map +1 -0
  260. package/lib/module/components/UnlockRewards/README.md +187 -0
  261. package/lib/module/components/UnlockRewards/RewardItem.js +120 -0
  262. package/lib/module/components/UnlockRewards/RewardItem.js.map +1 -0
  263. package/lib/module/components/UnlockRewards/UnlockRewards.js +200 -0
  264. package/lib/module/components/UnlockRewards/UnlockRewards.js.map +1 -0
  265. package/lib/module/components/UnlockRewards/index.js +7 -0
  266. package/lib/module/components/UnlockRewards/index.js.map +1 -0
  267. package/lib/module/components/Wheel/README.md +141 -0
  268. package/lib/module/components/Wheel/Wheel.js +317 -0
  269. package/lib/module/components/Wheel/Wheel.js.map +1 -0
  270. package/lib/module/components/Wheel/index.js +5 -0
  271. package/lib/module/components/Wheel/index.js.map +1 -0
  272. package/lib/module/components/index.js +17 -0
  273. package/lib/module/components/index.js.map +1 -0
  274. package/lib/module/constants/BRANDS.js +53 -0
  275. package/lib/module/constants/BRANDS.js.map +1 -0
  276. package/lib/module/index.js +5 -0
  277. package/lib/module/index.js.map +1 -0
  278. package/lib/module/theme/Colors.js +116 -0
  279. package/lib/module/theme/Colors.js.map +1 -0
  280. package/lib/module/theme/ThemeContext.js +41 -0
  281. package/lib/module/theme/ThemeContext.js.map +1 -0
  282. package/lib/module/theme/index.js +5 -0
  283. package/lib/module/theme/index.js.map +1 -0
  284. package/lib/typescript/commonjs/app/_layout.d.ts +3 -0
  285. package/lib/typescript/commonjs/app/_layout.d.ts.map +1 -0
  286. package/lib/typescript/commonjs/app/index.d.ts +3 -0
  287. package/lib/typescript/commonjs/app/index.d.ts.map +1 -0
  288. package/lib/typescript/commonjs/components/Badges/Badge.d.ts +16 -0
  289. package/lib/typescript/commonjs/components/Badges/Badge.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/components/Badges/index.d.ts +3 -0
  291. package/lib/typescript/commonjs/components/Badges/index.d.ts.map +1 -0
  292. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +26 -0
  293. package/lib/typescript/commonjs/components/Banner/Banner.d.ts.map +1 -0
  294. package/lib/typescript/commonjs/components/Banner/BannerWithDetails.d.ts +19 -0
  295. package/lib/typescript/commonjs/components/Banner/BannerWithDetails.d.ts.map +1 -0
  296. package/lib/typescript/commonjs/components/Banner/index.d.ts +5 -0
  297. package/lib/typescript/commonjs/components/Banner/index.d.ts.map +1 -0
  298. package/lib/typescript/commonjs/components/BrandIcon/BrandIcon.d.ts +20 -0
  299. package/lib/typescript/commonjs/components/BrandIcon/BrandIcon.d.ts.map +1 -0
  300. package/lib/typescript/commonjs/components/BrandIcon/index.d.ts +3 -0
  301. package/lib/typescript/commonjs/components/BrandIcon/index.d.ts.map +1 -0
  302. package/lib/typescript/commonjs/components/Card/Card.d.ts +5 -0
  303. package/lib/typescript/commonjs/components/Card/Card.d.ts.map +1 -0
  304. package/lib/typescript/commonjs/components/Card/CardContent.d.ts +5 -0
  305. package/lib/typescript/commonjs/components/Card/CardContent.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/components/Card/CardFooter.d.ts +5 -0
  307. package/lib/typescript/commonjs/components/Card/CardFooter.d.ts.map +1 -0
  308. package/lib/typescript/commonjs/components/Card/CardHeader.d.ts +5 -0
  309. package/lib/typescript/commonjs/components/Card/CardHeader.d.ts.map +1 -0
  310. package/lib/typescript/commonjs/components/Card/CardImage.d.ts +5 -0
  311. package/lib/typescript/commonjs/components/Card/CardImage.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/components/Card/index.d.ts +11 -0
  313. package/lib/typescript/commonjs/components/Card/index.d.ts.map +1 -0
  314. package/lib/typescript/commonjs/components/Card/templates/DealCard.d.ts +33 -0
  315. package/lib/typescript/commonjs/components/Card/templates/DealCard.d.ts.map +1 -0
  316. package/lib/typescript/commonjs/components/Card/templates/DealCardWithBackgroundImage.d.ts +38 -0
  317. package/lib/typescript/commonjs/components/Card/templates/DealCardWithBackgroundImage.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/components/Card/templates/SimpleTrendingCard.d.ts +14 -0
  319. package/lib/typescript/commonjs/components/Card/templates/SimpleTrendingCard.d.ts.map +1 -0
  320. package/lib/typescript/commonjs/components/Card/types.d.ts +78 -0
  321. package/lib/typescript/commonjs/components/Card/types.d.ts.map +1 -0
  322. package/lib/typescript/commonjs/components/CloseIcon/CloseIcon.d.ts +16 -0
  323. package/lib/typescript/commonjs/components/CloseIcon/CloseIcon.d.ts.map +1 -0
  324. package/lib/typescript/commonjs/components/CloseIcon/index.d.ts +3 -0
  325. package/lib/typescript/commonjs/components/CloseIcon/index.d.ts.map +1 -0
  326. package/lib/typescript/commonjs/components/Filters/Filters.d.ts +74 -0
  327. package/lib/typescript/commonjs/components/Filters/Filters.d.ts.map +1 -0
  328. package/lib/typescript/commonjs/components/Filters/PointsRangeSelector.d.ts +29 -0
  329. package/lib/typescript/commonjs/components/Filters/PointsRangeSelector.d.ts.map +1 -0
  330. package/lib/typescript/commonjs/components/Filters/index.d.ts +5 -0
  331. package/lib/typescript/commonjs/components/Filters/index.d.ts.map +1 -0
  332. package/lib/typescript/commonjs/components/Input/Input.d.ts +23 -0
  333. package/lib/typescript/commonjs/components/Input/Input.d.ts.map +1 -0
  334. package/lib/typescript/commonjs/components/Input/index.d.ts +3 -0
  335. package/lib/typescript/commonjs/components/Input/index.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/components/LockOverlay/LockOverlay.d.ts +16 -0
  337. package/lib/typescript/commonjs/components/LockOverlay/LockOverlay.d.ts.map +1 -0
  338. package/lib/typescript/commonjs/components/LockOverlay/index.d.ts +3 -0
  339. package/lib/typescript/commonjs/components/LockOverlay/index.d.ts.map +1 -0
  340. package/lib/typescript/commonjs/components/Popup/Popup.d.ts +38 -0
  341. package/lib/typescript/commonjs/components/Popup/Popup.d.ts.map +1 -0
  342. package/lib/typescript/commonjs/components/Popup/index.d.ts +3 -0
  343. package/lib/typescript/commonjs/components/Popup/index.d.ts.map +1 -0
  344. package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +26 -0
  345. package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts.map +1 -0
  346. package/lib/typescript/commonjs/components/ProgressBar/index.d.ts +3 -0
  347. package/lib/typescript/commonjs/components/ProgressBar/index.d.ts.map +1 -0
  348. package/lib/typescript/commonjs/components/RedemptionOption/RedemptionOption.d.ts +24 -0
  349. package/lib/typescript/commonjs/components/RedemptionOption/RedemptionOption.d.ts.map +1 -0
  350. package/lib/typescript/commonjs/components/RedemptionOption/index.d.ts +3 -0
  351. package/lib/typescript/commonjs/components/RedemptionOption/index.d.ts.map +1 -0
  352. package/lib/typescript/commonjs/components/ScratchCard/ScratchCard.d.ts +20 -0
  353. package/lib/typescript/commonjs/components/ScratchCard/ScratchCard.d.ts.map +1 -0
  354. package/lib/typescript/commonjs/components/ScratchCard/ScratchCardContent.d.ts +8 -0
  355. package/lib/typescript/commonjs/components/ScratchCard/ScratchCardContent.d.ts.map +1 -0
  356. package/lib/typescript/commonjs/components/ScratchCard/index.d.ts +5 -0
  357. package/lib/typescript/commonjs/components/ScratchCard/index.d.ts.map +1 -0
  358. package/lib/typescript/commonjs/components/UnlockRewards/RewardItem.d.ts +25 -0
  359. package/lib/typescript/commonjs/components/UnlockRewards/RewardItem.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/components/UnlockRewards/UnlockRewards.d.ts +59 -0
  361. package/lib/typescript/commonjs/components/UnlockRewards/UnlockRewards.d.ts.map +1 -0
  362. package/lib/typescript/commonjs/components/UnlockRewards/index.d.ts +5 -0
  363. package/lib/typescript/commonjs/components/UnlockRewards/index.d.ts.map +1 -0
  364. package/lib/typescript/commonjs/components/Wheel/Wheel.d.ts +34 -0
  365. package/lib/typescript/commonjs/components/Wheel/Wheel.d.ts.map +1 -0
  366. package/lib/typescript/commonjs/components/Wheel/index.d.ts +3 -0
  367. package/lib/typescript/commonjs/components/Wheel/index.d.ts.map +1 -0
  368. package/lib/typescript/commonjs/components/index.d.ts +15 -0
  369. package/lib/typescript/commonjs/components/index.d.ts.map +1 -0
  370. package/lib/typescript/commonjs/constants/BRANDS.d.ts +7 -0
  371. package/lib/typescript/commonjs/constants/BRANDS.d.ts.map +1 -0
  372. package/lib/typescript/commonjs/index.d.ts +3 -0
  373. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  374. package/lib/typescript/commonjs/package.json +1 -0
  375. package/lib/typescript/commonjs/theme/Colors.d.ts +28 -0
  376. package/lib/typescript/commonjs/theme/Colors.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/theme/ThemeContext.d.ts +13 -0
  378. package/lib/typescript/commonjs/theme/ThemeContext.d.ts.map +1 -0
  379. package/lib/typescript/commonjs/theme/index.d.ts +3 -0
  380. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -0
  381. package/lib/typescript/module/app/_layout.d.ts +3 -0
  382. package/lib/typescript/module/app/_layout.d.ts.map +1 -0
  383. package/lib/typescript/module/app/index.d.ts +3 -0
  384. package/lib/typescript/module/app/index.d.ts.map +1 -0
  385. package/lib/typescript/module/components/Badges/Badge.d.ts +16 -0
  386. package/lib/typescript/module/components/Badges/Badge.d.ts.map +1 -0
  387. package/lib/typescript/module/components/Badges/index.d.ts +3 -0
  388. package/lib/typescript/module/components/Badges/index.d.ts.map +1 -0
  389. package/lib/typescript/module/components/Banner/Banner.d.ts +26 -0
  390. package/lib/typescript/module/components/Banner/Banner.d.ts.map +1 -0
  391. package/lib/typescript/module/components/Banner/BannerWithDetails.d.ts +19 -0
  392. package/lib/typescript/module/components/Banner/BannerWithDetails.d.ts.map +1 -0
  393. package/lib/typescript/module/components/Banner/index.d.ts +5 -0
  394. package/lib/typescript/module/components/Banner/index.d.ts.map +1 -0
  395. package/lib/typescript/module/components/BrandIcon/BrandIcon.d.ts +20 -0
  396. package/lib/typescript/module/components/BrandIcon/BrandIcon.d.ts.map +1 -0
  397. package/lib/typescript/module/components/BrandIcon/index.d.ts +3 -0
  398. package/lib/typescript/module/components/BrandIcon/index.d.ts.map +1 -0
  399. package/lib/typescript/module/components/Card/Card.d.ts +5 -0
  400. package/lib/typescript/module/components/Card/Card.d.ts.map +1 -0
  401. package/lib/typescript/module/components/Card/CardContent.d.ts +5 -0
  402. package/lib/typescript/module/components/Card/CardContent.d.ts.map +1 -0
  403. package/lib/typescript/module/components/Card/CardFooter.d.ts +5 -0
  404. package/lib/typescript/module/components/Card/CardFooter.d.ts.map +1 -0
  405. package/lib/typescript/module/components/Card/CardHeader.d.ts +5 -0
  406. package/lib/typescript/module/components/Card/CardHeader.d.ts.map +1 -0
  407. package/lib/typescript/module/components/Card/CardImage.d.ts +5 -0
  408. package/lib/typescript/module/components/Card/CardImage.d.ts.map +1 -0
  409. package/lib/typescript/module/components/Card/index.d.ts +11 -0
  410. package/lib/typescript/module/components/Card/index.d.ts.map +1 -0
  411. package/lib/typescript/module/components/Card/templates/DealCard.d.ts +33 -0
  412. package/lib/typescript/module/components/Card/templates/DealCard.d.ts.map +1 -0
  413. package/lib/typescript/module/components/Card/templates/DealCardWithBackgroundImage.d.ts +38 -0
  414. package/lib/typescript/module/components/Card/templates/DealCardWithBackgroundImage.d.ts.map +1 -0
  415. package/lib/typescript/module/components/Card/templates/SimpleTrendingCard.d.ts +14 -0
  416. package/lib/typescript/module/components/Card/templates/SimpleTrendingCard.d.ts.map +1 -0
  417. package/lib/typescript/module/components/Card/types.d.ts +78 -0
  418. package/lib/typescript/module/components/Card/types.d.ts.map +1 -0
  419. package/lib/typescript/module/components/CloseIcon/CloseIcon.d.ts +16 -0
  420. package/lib/typescript/module/components/CloseIcon/CloseIcon.d.ts.map +1 -0
  421. package/lib/typescript/module/components/CloseIcon/index.d.ts +3 -0
  422. package/lib/typescript/module/components/CloseIcon/index.d.ts.map +1 -0
  423. package/lib/typescript/module/components/Filters/Filters.d.ts +74 -0
  424. package/lib/typescript/module/components/Filters/Filters.d.ts.map +1 -0
  425. package/lib/typescript/module/components/Filters/PointsRangeSelector.d.ts +29 -0
  426. package/lib/typescript/module/components/Filters/PointsRangeSelector.d.ts.map +1 -0
  427. package/lib/typescript/module/components/Filters/index.d.ts +5 -0
  428. package/lib/typescript/module/components/Filters/index.d.ts.map +1 -0
  429. package/lib/typescript/module/components/Input/Input.d.ts +23 -0
  430. package/lib/typescript/module/components/Input/Input.d.ts.map +1 -0
  431. package/lib/typescript/module/components/Input/index.d.ts +3 -0
  432. package/lib/typescript/module/components/Input/index.d.ts.map +1 -0
  433. package/lib/typescript/module/components/LockOverlay/LockOverlay.d.ts +16 -0
  434. package/lib/typescript/module/components/LockOverlay/LockOverlay.d.ts.map +1 -0
  435. package/lib/typescript/module/components/LockOverlay/index.d.ts +3 -0
  436. package/lib/typescript/module/components/LockOverlay/index.d.ts.map +1 -0
  437. package/lib/typescript/module/components/Popup/Popup.d.ts +38 -0
  438. package/lib/typescript/module/components/Popup/Popup.d.ts.map +1 -0
  439. package/lib/typescript/module/components/Popup/index.d.ts +3 -0
  440. package/lib/typescript/module/components/Popup/index.d.ts.map +1 -0
  441. package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +26 -0
  442. package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts.map +1 -0
  443. package/lib/typescript/module/components/ProgressBar/index.d.ts +3 -0
  444. package/lib/typescript/module/components/ProgressBar/index.d.ts.map +1 -0
  445. package/lib/typescript/module/components/RedemptionOption/RedemptionOption.d.ts +24 -0
  446. package/lib/typescript/module/components/RedemptionOption/RedemptionOption.d.ts.map +1 -0
  447. package/lib/typescript/module/components/RedemptionOption/index.d.ts +3 -0
  448. package/lib/typescript/module/components/RedemptionOption/index.d.ts.map +1 -0
  449. package/lib/typescript/module/components/ScratchCard/ScratchCard.d.ts +20 -0
  450. package/lib/typescript/module/components/ScratchCard/ScratchCard.d.ts.map +1 -0
  451. package/lib/typescript/module/components/ScratchCard/ScratchCardContent.d.ts +8 -0
  452. package/lib/typescript/module/components/ScratchCard/ScratchCardContent.d.ts.map +1 -0
  453. package/lib/typescript/module/components/ScratchCard/index.d.ts +5 -0
  454. package/lib/typescript/module/components/ScratchCard/index.d.ts.map +1 -0
  455. package/lib/typescript/module/components/UnlockRewards/RewardItem.d.ts +25 -0
  456. package/lib/typescript/module/components/UnlockRewards/RewardItem.d.ts.map +1 -0
  457. package/lib/typescript/module/components/UnlockRewards/UnlockRewards.d.ts +59 -0
  458. package/lib/typescript/module/components/UnlockRewards/UnlockRewards.d.ts.map +1 -0
  459. package/lib/typescript/module/components/UnlockRewards/index.d.ts +5 -0
  460. package/lib/typescript/module/components/UnlockRewards/index.d.ts.map +1 -0
  461. package/lib/typescript/module/components/Wheel/Wheel.d.ts +34 -0
  462. package/lib/typescript/module/components/Wheel/Wheel.d.ts.map +1 -0
  463. package/lib/typescript/module/components/Wheel/index.d.ts +3 -0
  464. package/lib/typescript/module/components/Wheel/index.d.ts.map +1 -0
  465. package/lib/typescript/module/components/index.d.ts +15 -0
  466. package/lib/typescript/module/components/index.d.ts.map +1 -0
  467. package/lib/typescript/module/constants/BRANDS.d.ts +7 -0
  468. package/lib/typescript/module/constants/BRANDS.d.ts.map +1 -0
  469. package/lib/typescript/module/index.d.ts +3 -0
  470. package/lib/typescript/module/index.d.ts.map +1 -0
  471. package/lib/typescript/module/package.json +1 -0
  472. package/lib/typescript/module/theme/Colors.d.ts +28 -0
  473. package/lib/typescript/module/theme/Colors.d.ts.map +1 -0
  474. package/lib/typescript/module/theme/ThemeContext.d.ts +13 -0
  475. package/lib/typescript/module/theme/ThemeContext.d.ts.map +1 -0
  476. package/lib/typescript/module/theme/index.d.ts +3 -0
  477. package/lib/typescript/module/theme/index.d.ts.map +1 -0
  478. package/package.json +116 -0
  479. package/src/app/_layout.tsx +38 -0
  480. package/src/app/index.tsx +115 -0
  481. package/src/assets/components/BannerWithDetails.png +0 -0
  482. package/src/assets/components/DealCard-Horizontal.png +0 -0
  483. package/src/assets/components/DealCard-Vertical.png +0 -0
  484. package/src/assets/components/DealCard-floating.png +0 -0
  485. package/src/assets/components/DealCard-nested.png +0 -0
  486. package/src/assets/components/Filters.png +0 -0
  487. package/src/assets/components/Popup-1.png +0 -0
  488. package/src/assets/components/Popup-2.png +0 -0
  489. package/src/assets/components/Popup-3.png +0 -0
  490. package/src/assets/components/RedemptionOption-Horizontal.png +0 -0
  491. package/src/assets/components/RedemptionOption-Vertical.png +0 -0
  492. package/src/assets/components/SimpleBanner.png +0 -0
  493. package/src/assets/components/SimpleTrendingCard.png +0 -0
  494. package/src/assets/components/SimpleTrendingCardV2.png +0 -0
  495. package/src/assets/components/UnlockRewards-1.png +0 -0
  496. package/src/assets/components/UnlockRewards-2.png +0 -0
  497. package/src/assets/fonts/SpaceMono-Regular.ttf +0 -0
  498. package/src/assets/images/adaptive-icon.png +0 -0
  499. package/src/assets/images/face.jpg +0 -0
  500. package/src/assets/images/favicon.png +0 -0
  501. package/src/assets/images/giftvoucher.jpg +0 -0
  502. package/src/assets/images/icon.png +0 -0
  503. package/src/assets/images/insta.webp +0 -0
  504. package/src/assets/images/muse.jpg +0 -0
  505. package/src/assets/images/namshi-banner.png +0 -0
  506. package/src/assets/images/namshi.webp +0 -0
  507. package/src/assets/images/partial-react-logo.png +0 -0
  508. package/src/assets/images/pb-logo.jpg +0 -0
  509. package/src/assets/images/pb.jpg +0 -0
  510. package/src/assets/images/react-logo.png +0 -0
  511. package/src/assets/images/react-logo@2x.png +0 -0
  512. package/src/assets/images/react-logo@3x.png +0 -0
  513. package/src/assets/images/scratch_foreground.png +0 -0
  514. package/src/assets/images/splash-icon.png +0 -0
  515. package/src/assets/images/upgrade.png +0 -0
  516. package/src/components/Badges/Badge.tsx +81 -0
  517. package/src/components/Badges/README.md +98 -0
  518. package/src/components/Badges/index.ts +2 -0
  519. package/src/components/Banner/Banner.tsx +172 -0
  520. package/src/components/Banner/BannerWithDetails.tsx +133 -0
  521. package/src/components/Banner/README.md +101 -0
  522. package/src/components/Banner/index.ts +5 -0
  523. package/src/components/BrandIcon/BrandIcon.tsx +134 -0
  524. package/src/components/BrandIcon/index.ts +2 -0
  525. package/src/components/Card/Card.tsx +144 -0
  526. package/src/components/Card/CardContent.tsx +33 -0
  527. package/src/components/Card/CardFooter.tsx +33 -0
  528. package/src/components/Card/CardHeader.tsx +80 -0
  529. package/src/components/Card/CardImage.tsx +51 -0
  530. package/src/components/Card/index.ts +15 -0
  531. package/src/components/Card/templates/DealCard.tsx +255 -0
  532. package/src/components/Card/templates/DealCardWithBackgroundImage.tsx +273 -0
  533. package/src/components/Card/templates/README.md +233 -0
  534. package/src/components/Card/templates/SimpleTrendingCard.tsx +54 -0
  535. package/src/components/Card/types.ts +75 -0
  536. package/src/components/CloseIcon/CloseIcon.tsx +77 -0
  537. package/src/components/CloseIcon/index.ts +2 -0
  538. package/src/components/Filters/Filters.tsx +427 -0
  539. package/src/components/Filters/PointsRangeSelector.tsx +319 -0
  540. package/src/components/Filters/README.md +212 -0
  541. package/src/components/Filters/index.ts +4 -0
  542. package/src/components/Input/Input.tsx +218 -0
  543. package/src/components/Input/README.md +128 -0
  544. package/src/components/Input/index.ts +2 -0
  545. package/src/components/LockOverlay/LockOverlay.tsx +82 -0
  546. package/src/components/LockOverlay/index.ts +2 -0
  547. package/src/components/Popup/Popup.tsx +374 -0
  548. package/src/components/Popup/README.md +133 -0
  549. package/src/components/Popup/index.ts +2 -0
  550. package/src/components/ProgressBar/ProgressBar.tsx +157 -0
  551. package/src/components/ProgressBar/index.ts +2 -0
  552. package/src/components/RedemptionOption/README.md +148 -0
  553. package/src/components/RedemptionOption/RedemptionOption.tsx +158 -0
  554. package/src/components/RedemptionOption/index.ts +2 -0
  555. package/src/components/ScratchCard/README.md +119 -0
  556. package/src/components/ScratchCard/ScratchCard.tsx +190 -0
  557. package/src/components/ScratchCard/ScratchCardContent.tsx +25 -0
  558. package/src/components/ScratchCard/index.ts +4 -0
  559. package/src/components/UnlockRewards/README.md +187 -0
  560. package/src/components/UnlockRewards/RewardItem.tsx +172 -0
  561. package/src/components/UnlockRewards/UnlockRewards.tsx +293 -0
  562. package/src/components/UnlockRewards/index.ts +4 -0
  563. package/src/components/Wheel/README.md +141 -0
  564. package/src/components/Wheel/Wheel.tsx +374 -0
  565. package/src/components/Wheel/index.ts +2 -0
  566. package/src/components/index.ts +14 -0
  567. package/src/constants/BRANDS.ts +64 -0
  568. package/src/index.ts +2 -0
  569. package/src/theme/Colors.ts +107 -0
  570. package/src/theme/ThemeContext.tsx +46 -0
  571. package/src/theme/index.ts +2 -0
@@ -0,0 +1,141 @@
1
+ # SpinWheel Component
2
+
3
+ A customizable spinning wheel component for React Native applications that allows users to create interactive prize wheels, random selectors, or game elements.
4
+
5
+ ## Basic Usage
6
+
7
+ ```jsx
8
+ import React, { useState } from 'react';
9
+ import { View, Alert } from 'react-native';
10
+ import { SpinWheel } from '@your-org/component-library';
11
+
12
+ const MySpinWheelExample = () => {
13
+ const items = [
14
+ { id: 1, label: '10% OFF', color: '#FF0000', value: { discount: 10 } },
15
+ { id: 2, label: '20% OFF', color: '#00FF00', value: { discount: 20 } },
16
+ { id: 3, label: '30% OFF', color: '#0000FF', value: { discount: 30 } },
17
+ { id: 4, label: 'FREE GIFT', color: '#FFFF00', value: { type: 'gift' } },
18
+ { id: 5, label: 'BETTER LUCK', color: '#FF00FF', value: null },
19
+ ];
20
+
21
+ const handleWin = (item) => {
22
+ Alert.alert('Congratulations!', `You won: ${item.label}`);
23
+ };
24
+
25
+ return (
26
+ <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
27
+ <SpinWheel
28
+ items={items}
29
+ size={300}
30
+ onSpinEnd={handleWin}
31
+ />
32
+ </View>
33
+ );
34
+ };
35
+
36
+ export default MySpinWheelExample;
37
+ ```
38
+
39
+ ## Props
40
+
41
+ ### Data Props
42
+
43
+ | Prop | Type | Required | Default | Description |
44
+ |------|------|----------|---------|-------------|
45
+ | `items` | `SpinWheelItem[]` | ✅ | `[]` | Array of items to display on the wheel |
46
+
47
+ #### SpinWheelItem Interface
48
+
49
+ ```typescript
50
+ interface SpinWheelItem {
51
+ id: string | number; // Unique identifier
52
+ label: string; // Text to display on the wheel
53
+ value?: any; // Optional value associated with the item
54
+ color: string; // Background color (HEX, RGB, or named color)
55
+ textColor?: string; // Text color (defaults to wheelTextColor)
56
+ }
57
+ ```
58
+
59
+ ### Dimension Props
60
+
61
+ | Prop | Type | Required | Default | Description |
62
+ |------|------|----------|---------|-------------|
63
+ | `size` | `number` | ❌ | `300` | Diameter of the wheel in pixels |
64
+
65
+ ### Behavior Props
66
+
67
+ | Prop | Type | Required | Default | Description |
68
+ |------|------|----------|---------|-------------|
69
+ | `spinDuration` | `number` | ❌ | `5000` | Duration of spin animation in milliseconds |
70
+ | `enabled` | `boolean` | ❌ | `true` | Whether the wheel can be spun |
71
+
72
+ ### Event Props
73
+
74
+ | Prop | Type | Required | Default | Description |
75
+ |------|------|----------|---------|-------------|
76
+ | `onSpinStart` | `() => void` | ❌ | - | Callback function called when spinning starts |
77
+ | `onSpinEnd` | `(item: SpinWheelItem) => void` | ❌ | - | Callback function called when spinning ends with the winning item |
78
+
79
+ ### Styling Props
80
+
81
+ | Prop | Type | Required | Default | Description |
82
+ |------|------|----------|---------|-------------|
83
+ | `containerStyle` | `ViewStyle` | ❌ | - | Custom style for the container |
84
+ | `centerStyle` | `ViewStyle` | ❌ | - | Custom style for the center of the wheel |
85
+ | `spinButtonText` | `string` | ❌ | `"Spin"` | Text for the spin button |
86
+ | `spinButtonStyle` | `ViewStyle` | ❌ | - | Custom style for the spin button |
87
+ | `spinButtonTextStyle` | `TextStyle` | ❌ | - | Custom style for the spin button text |
88
+ | `wheelTextStyle` | `TextStyle` | ❌ | - | Custom style for the text on the wheel |
89
+ | `knobStyle` | `ViewStyle` | ❌ | - | Custom style for the pointer |
90
+ | `actionButtonStyle` | `ViewStyle` | ❌ | - | Custom style for the action button |
91
+ | `actionButtonTextStyle` | `TextStyle` | ❌ | - | Custom style for the action button text |
92
+ | `wheelBorderColor` | `string` | ❌ | `"#000000"` | Color of the wheel border |
93
+ | `wheelTextColor` | `string` | ❌ | `"#FFFFFF"` | Default color of text on the wheel |
94
+ | `knobColor` | `string` | ❌ | `"#D81E5B"` | Color of the pointer |
95
+ | `centerComponent` | `React.ReactNode` | ❌ | - | Custom component to render in the center |
96
+
97
+ ## Advanced Examples
98
+
99
+ ### Custom Styling
100
+
101
+ ```jsx
102
+ <SpinWheel
103
+ items={items}
104
+ size={350}
105
+ spinDuration={6000}
106
+ knobColor="#FF5722"
107
+ wheelTextColor="#000000"
108
+ containerStyle={{ backgroundColor: '#F5F5F5', padding: 20, borderRadius: 10 }}
109
+ centerStyle={{ backgroundColor: '#FFC107' }}
110
+ spinButtonText="Try Your Luck!"
111
+ spinButtonStyle={{ backgroundColor: '#4CAF50' }}
112
+ spinButtonTextStyle={{ color: 'white', fontSize: 18 }}
113
+ onSpinEnd={handleWin}
114
+ />
115
+ ```
116
+
117
+ <!-- ### With Custom Center Component
118
+
119
+ ```jsx
120
+ <SpinWheel
121
+ items={items}
122
+ size={400}
123
+ centerComponent={
124
+ <Image
125
+ source={require('./logo.png')}
126
+ style={{ width: 60, height: 60 }}
127
+ />
128
+ }
129
+ onSpinEnd={handleWin}
130
+ />
131
+ ``` -->
132
+
133
+ ### Disabled State
134
+
135
+ ```jsx
136
+ <SpinWheel
137
+ items={items}
138
+ enabled={userHasCredits}
139
+ onSpinEnd={handleWin}
140
+ />
141
+ ```
@@ -0,0 +1,374 @@
1
+ import React, { useState, useRef, useEffect } from "react";
2
+ import {
3
+ View,
4
+ StyleSheet,
5
+ Animated,
6
+ Text,
7
+ TouchableOpacity,
8
+ Easing,
9
+ ViewStyle,
10
+ TextStyle,
11
+ } from "react-native";
12
+ import { Svg, Path, G, Text as SvgText } from "react-native-svg";
13
+
14
+ export interface SpinWheelItem {
15
+ id: string | number;
16
+ label: string;
17
+ value?: any;
18
+ color: string;
19
+ textColor?: string;
20
+ }
21
+
22
+ //default random colors
23
+ const colors = [
24
+ "#FF0000", // Red
25
+ "#FFA500", // Orange
26
+ "#FFFF00", // Yellow
27
+ "#008000", // Green
28
+ "#0000FF", // Blue
29
+ "#800080", // Purple
30
+ "#FFC0CB", // Pink
31
+ "#00FFFF", // Cyan
32
+ "#FF00FF", // Magenta
33
+ "#00FF00", // Lime
34
+ "#4B0082", // Indigo
35
+ "#EE82EE", // Violet
36
+ "#40E0D0", // Turquoise
37
+ "#FFD700", // Gold
38
+ "#C0C0C0", // Silver
39
+ "#FFDAB9", // Peach
40
+ "#E6E6FA", // Lavender
41
+ "#008080", // Teal
42
+ "#FF7F50", // Coral
43
+ "#DC143C", // Crimson
44
+ "#87CEEB", // Sky Blue
45
+ "#7FFF00", // Chartreuse
46
+ "#CCCCFF", // Periwinkle
47
+ "#FF6347", // Tomato
48
+ "#FA8072" // Salmon
49
+ ];
50
+
51
+ interface SpinWheelProps {
52
+ // Data
53
+ items: SpinWheelItem[];
54
+
55
+ // Dimensions
56
+ size?: number;
57
+
58
+ // Behavior
59
+ spinDuration?: number;
60
+ friction?: number;
61
+ enabled?: boolean;
62
+
63
+ // Events
64
+ onSpinStart?: () => void;
65
+ onSpinEnd?: (item: SpinWheelItem) => void;
66
+
67
+ // Styling
68
+ containerStyle?: ViewStyle;
69
+ centerStyle?: ViewStyle;
70
+ spinButtonText?: string;
71
+ spinButtonStyle?: ViewStyle;
72
+ spinButtonTextStyle?: TextStyle;
73
+ wheelTextStyle?: TextStyle;
74
+ knobStyle?: ViewStyle;
75
+ actionButtonStyle?: ViewStyle;
76
+ actionButtonTextStyle?: TextStyle;
77
+
78
+ // Custom colors
79
+ wheelBorderColor?: string;
80
+ wheelTextColor?: string;
81
+ knobColor?: string;
82
+
83
+ // Custom components
84
+ centerComponent?: React.ReactNode;
85
+ }
86
+
87
+ const SpinWheel: React.FC<SpinWheelProps> = ({
88
+ items,
89
+ size = 300,
90
+ spinDuration = 5000,
91
+ enabled = true,
92
+ onSpinStart,
93
+ onSpinEnd,
94
+ containerStyle,
95
+ centerStyle,
96
+ spinButtonText = "Spin",
97
+ wheelTextStyle,
98
+ knobStyle,
99
+ knobColor = "#D81E5B",
100
+ actionButtonStyle,
101
+ actionButtonTextStyle,
102
+ wheelTextColor = "#FFFFFF"
103
+ }) => {
104
+ const wheelItems = items.length > 0 ? items : [];
105
+
106
+ const [spinning, setSpinning] = useState(false);
107
+ const [_, setWinner] = useState<SpinWheelItem | null>(null);
108
+ const rotateValue = useRef(new Animated.Value(0)).current;
109
+
110
+ // Track rotation manually for calculations
111
+ const rotationRef = useRef(0);
112
+
113
+ // Update tracked rotation when animation completes
114
+ useEffect(() => {
115
+ const listener = rotateValue.addListener(({ value }) => {
116
+ rotationRef.current = value;
117
+ });
118
+
119
+ return () => {
120
+ rotateValue.removeListener(listener);
121
+ };
122
+ }, [rotateValue]);
123
+
124
+ // Calculate angle for each segment
125
+ const anglePerItem = 360 / wheelItems.length;
126
+
127
+ // Create wheel segments
128
+ const generateWheelPaths = () => {
129
+ return wheelItems.map((item, index) => {
130
+ const startAngle = index * anglePerItem;
131
+ const endAngle = (index + 1) * anglePerItem;
132
+
133
+ // Calculate path for segment
134
+ const startRad = (startAngle * Math.PI) / 180;
135
+ const endRad = (endAngle * Math.PI) / 180;
136
+
137
+ const x1 = size / 2 + (size / 2) * Math.cos(startRad);
138
+ const y1 = size / 2 + (size / 2) * Math.sin(startRad);
139
+ const x2 = size / 2 + (size / 2) * Math.cos(endRad);
140
+ const y2 = size / 2 + (size / 2) * Math.sin(endRad);
141
+
142
+ const largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
143
+
144
+ const pathData = [
145
+ `M ${size / 2} ${size / 2}`,
146
+ `L ${x1} ${y1}`,
147
+ `A ${size / 2} ${size / 2} 0 ${largeArcFlag} 1 ${x2} ${y2}`,
148
+ "Z",
149
+ ].join(" ");
150
+
151
+ // Calculate coordinates for text and decoration
152
+ const midRad = ((startAngle + endAngle) / 2) * (Math.PI / 180);
153
+ const textX = size / 2 + size * 0.32 * Math.cos(midRad);
154
+ const textY = size / 2 + size * 0.32 * Math.sin(midRad);
155
+
156
+ const decorationX = size / 2 + size * 0.43 * Math.cos(midRad);
157
+ const decorationY = size / 2 + size * 0.43 * Math.sin(midRad);
158
+
159
+ return {
160
+ path: pathData,
161
+ item,
162
+ textX,
163
+ textY,
164
+ decorationX,
165
+ decorationY,
166
+ angle: (startAngle + endAngle) / 2,
167
+ };
168
+ });
169
+ };
170
+
171
+ const wheelPaths = generateWheelPaths();
172
+
173
+ // Handle spin button press
174
+ const handleSpin = () => {
175
+ if (spinning || !enabled) return;
176
+
177
+ setSpinning(true);
178
+ onSpinStart?.();
179
+
180
+ // Random number of spins (3-5 full rotations) plus random angle
181
+ const randomSpins = 3 + Math.random() * 2;
182
+ const randomAngle = Math.random() * 360;
183
+ const targetRotation = 360 * randomSpins + randomAngle;
184
+
185
+ Animated.timing(rotateValue, {
186
+ toValue: rotationRef.current + targetRotation / 360,
187
+ duration: spinDuration,
188
+ easing: Easing.out(Easing.cubic),
189
+ useNativeDriver: true,
190
+ }).start(() => handleSpinEnd());
191
+ };
192
+
193
+ // Handle spin completion
194
+ const handleSpinEnd = () => {
195
+ setSpinning(false);
196
+
197
+ // Calculate winning segment based on final rotation with pointer at 270 degrees
198
+ const normalizedAngle = (rotationRef.current * 360) % 360;
199
+ // Adjust calculation to account for pointer at 270 degrees (instead of 0)
200
+ const winningIndex = Math.floor(
201
+ ((normalizedAngle - 270) % 360) / anglePerItem
202
+ );
203
+ const adjustedIndex =
204
+ (wheelItems.length - 1 - winningIndex) % wheelItems.length;
205
+ const winningItem =
206
+ wheelItems[
207
+ adjustedIndex >= 0 ? adjustedIndex : wheelItems.length + adjustedIndex
208
+ ];
209
+
210
+ setWinner(winningItem);
211
+ onSpinEnd?.(winningItem);
212
+ };
213
+
214
+ // Animation interpolation for rotation
215
+ const rotate = rotateValue.interpolate({
216
+ inputRange: [0, 1],
217
+ outputRange: ["0deg", "360deg"],
218
+ });
219
+
220
+ return (
221
+ <View style={[styles.container, containerStyle]}>
222
+ <View style={{ width: size, height: size }}>
223
+ {/* The wheel */}
224
+ <Animated.View
225
+ style={[
226
+ styles.wheelContainer,
227
+ {
228
+ width: size,
229
+ height: size,
230
+ borderRadius: size / 2,
231
+ transform: [{ rotate }],
232
+ },
233
+ ]}
234
+ >
235
+ <Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>
236
+ <G>
237
+ {wheelPaths.map(
238
+ (
239
+ { path, item, textX, textY, decorationX, decorationY, angle },
240
+ index
241
+ ) => {
242
+ return (
243
+ <React.Fragment key={item.id}>
244
+ <Path
245
+ d={path}
246
+ fill={item.color == "" || null ? colors[Math.floor(Math.random() * colors.length)] : item.color}
247
+ stroke="#000000"
248
+ strokeWidth={1}
249
+ />
250
+
251
+ {/* Fixed text rendering */}
252
+ <SvgText
253
+ x={textX}
254
+ y={textY}
255
+ fill={item.textColor || wheelTextColor}
256
+ fontSize={wheelTextStyle?.fontSize || 14}
257
+ fontWeight={wheelTextStyle?.fontWeight || "bold"}
258
+ textAnchor="middle"
259
+ alignmentBaseline="central"
260
+ transform={`rotate(${angle + 180}, ${textX}, ${textY} )`}
261
+ >
262
+ {item.label}
263
+ </SvgText>
264
+ </React.Fragment>
265
+ );
266
+ }
267
+ )}
268
+ </G>
269
+ </Svg>
270
+ </Animated.View>
271
+
272
+ {/* The center circle */}
273
+ <View
274
+ style={[
275
+ styles.wheelCenter,
276
+ {
277
+ width: size / 5,
278
+ height: size / 5,
279
+ transform: [
280
+ { translateX: -size / 10 },
281
+ { translateY: -size / 10 },
282
+ ],
283
+ borderRadius: size / 5,
284
+ },
285
+ centerStyle
286
+ ]}
287
+ />
288
+
289
+ {/* The pointer is a triangle on top */}
290
+ <View style={styles.pointerPosition}>
291
+ <View style={[styles.pointer, { borderBottomColor: knobColor }, knobStyle]} />
292
+ </View>
293
+
294
+ {/* Action Button */}
295
+ <View
296
+ style={{
297
+ position: "absolute",
298
+ width: "100%",
299
+ alignItems: "center",
300
+ justifyContent: "center",
301
+ bottom: -70,
302
+ zIndex: 2,
303
+ }}
304
+ >
305
+ <TouchableOpacity
306
+ onPress={handleSpin}
307
+ disabled={spinning || !enabled}
308
+ style={[styles.actionButton, actionButtonStyle]}
309
+ >
310
+ <Text
311
+ style={[styles.actionButtonText, actionButtonTextStyle]}
312
+ >
313
+ {spinButtonText}
314
+ </Text>
315
+ </TouchableOpacity>
316
+ </View>
317
+ </View>
318
+ </View>
319
+ );
320
+ };
321
+
322
+ const styles = StyleSheet.create({
323
+ container: {
324
+ alignItems: "center",
325
+ justifyContent: "center",
326
+ marginTop: 20,
327
+ marginBottom: 70, // Space for the button
328
+ },
329
+ wheelContainer: {
330
+ overflow: "hidden",
331
+ backgroundColor: "transparent",
332
+ },
333
+ wheelCenter: {
334
+ position: "absolute",
335
+ top: "50%",
336
+ left: "50%",
337
+ backgroundColor: "#000000",
338
+ borderWidth: 1,
339
+ borderColor: "#333333",
340
+ zIndex: 1,
341
+ },
342
+ pointerPosition: {
343
+ position: "absolute",
344
+ left: "50%",
345
+ transform: [{ translateX: -10 }, { rotate: "180deg" }],
346
+ zIndex: 2,
347
+ },
348
+ pointer: {
349
+ width: 0,
350
+ height: 0,
351
+ backgroundColor: "transparent",
352
+ borderStyle: "solid",
353
+ borderLeftWidth: 10,
354
+ borderRightWidth: 10,
355
+ borderBottomWidth: 15,
356
+ borderLeftColor: "transparent",
357
+ borderRightColor: "transparent",
358
+ borderBottomColor: "#D81E5B",
359
+ },
360
+ actionButton: {
361
+ paddingHorizontal: 30,
362
+ paddingVertical: 12,
363
+ borderRadius: 25,
364
+ shadowColor: "#000",
365
+ shadowRadius: 3,
366
+ backgroundColor: "grey"
367
+ },
368
+ actionButtonText: {
369
+ fontWeight: "bold",
370
+ fontSize: 16,
371
+ }
372
+ });
373
+
374
+ export default SpinWheel;
@@ -0,0 +1,2 @@
1
+ export { default as Wheel} from "./Wheel"
2
+ export * from "./Wheel"
@@ -0,0 +1,14 @@
1
+ export * from "./Card"
2
+ export * from "./ProgressBar";
3
+ export * from "./Badges";
4
+ export * from "./Banner";
5
+ export * from "./BrandIcon";
6
+ export * from "./Filters";
7
+ export * from "./Input";
8
+ export * from "./LockOverlay";
9
+ export * from "./Popup";
10
+ export * from "./RedemptionOption";
11
+ export * from "./ScratchCard";
12
+ export * from "./UnlockRewards";
13
+ export * from "./Wheel";
14
+ export * from "./CloseIcon";
@@ -0,0 +1,64 @@
1
+ const BRANDS = [
2
+ {
3
+ id: "1",
4
+ name: "Brand 1",
5
+ logo: require("@/assets/images/pb-logo.jpg"),
6
+ },
7
+ {
8
+ id: "2",
9
+ name: "Brand 2",
10
+ logo: require("@/assets/images/pb-logo.jpg"),
11
+ },
12
+ {
13
+ id: "3",
14
+ name: "Brand 3",
15
+ logo: require("@/assets/images/pb-logo.jpg"),
16
+ },
17
+ {
18
+ id: "4",
19
+ name: "Brand 4",
20
+ logo: require("@/assets/images/pb-logo.jpg"),
21
+ },
22
+ {
23
+ id: "5",
24
+ name: "Brand 5",
25
+ logo: require("@/assets/images/pb-logo.jpg"),
26
+ },
27
+ {
28
+ id: "6",
29
+ name: "Brand 6",
30
+ logo: require("@/assets/images/pb-logo.jpg"),
31
+ },
32
+ {
33
+ id: "7",
34
+ name: "Brand 7",
35
+ logo: require("@/assets/images/pb-logo.jpg"),
36
+ },
37
+ {
38
+ id: "8",
39
+ name: "Brand 8",
40
+ logo: require("@/assets/images/pb-logo.jpg"),
41
+ },
42
+ {
43
+ id: "9",
44
+ name: "Brand 9",
45
+ logo: require("@/assets/images/pb-logo.jpg"),
46
+ },
47
+ {
48
+ id: "10",
49
+ name: "Brand 10",
50
+ logo: require("@/assets/images/pb-logo.jpg"),
51
+ },
52
+ {
53
+ id: "11",
54
+ name: "Brand 11",
55
+ logo: require("@/assets/images/pb-logo.jpg"),
56
+ },
57
+ {
58
+ id: "12",
59
+ name: "Brand 12",
60
+ logo: require("@/assets/images/pb-logo.jpg"),
61
+ },
62
+ ];
63
+
64
+ export default BRANDS;
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./theme"
2
+ export * from "./components"