@oddsmith/ui 0.0.0 → 1.0.0

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 (396) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -115
  3. package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json +9 -0
  4. package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json.js +13 -0
  5. package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json.js.map +1 -0
  6. package/dist/components/os-leaderboard-casino/assets/fallback/config.json +8 -0
  7. package/dist/components/os-leaderboard-casino/assets/fallback/defaults/glam-sections.json +564 -0
  8. package/dist/components/os-leaderboard-casino/assets/fallback/fonts.json +3 -0
  9. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json +5 -0
  10. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js +12 -0
  11. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js.map +1 -0
  12. package/dist/components/os-leaderboard-casino/assets/fallback/manifest.json +6 -0
  13. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json +38 -0
  14. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js +10 -0
  15. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js.map +1 -0
  16. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json +601 -0
  17. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js +8 -0
  18. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js.map +1 -0
  19. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json +69 -0
  20. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js +73 -0
  21. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js.map +1 -0
  22. package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg +7 -0
  23. package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg.js +12 -0
  24. package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg.js.map +1 -0
  25. package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg +7 -0
  26. package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg.js +12 -0
  27. package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg.js.map +1 -0
  28. package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg +5 -0
  29. package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg.js +10 -0
  30. package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg.js.map +1 -0
  31. package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg +10 -0
  32. package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg.js +15 -0
  33. package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg.js.map +1 -0
  34. package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg +5 -0
  35. package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg.js +10 -0
  36. package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg.js.map +1 -0
  37. package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg +5 -0
  38. package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg.js +10 -0
  39. package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg.js.map +1 -0
  40. package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg +8 -0
  41. package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg.js +13 -0
  42. package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg.js.map +1 -0
  43. package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg +4 -0
  44. package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg.js +9 -0
  45. package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg.js.map +1 -0
  46. package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg +5 -0
  47. package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg.js +10 -0
  48. package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg.js.map +1 -0
  49. package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg +5 -0
  50. package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg.js +10 -0
  51. package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg.js.map +1 -0
  52. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg +4 -0
  53. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg.js +9 -0
  54. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg.js.map +1 -0
  55. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg +4 -0
  56. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg.js +9 -0
  57. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg.js.map +1 -0
  58. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg +4 -0
  59. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg.js +9 -0
  60. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg.js.map +1 -0
  61. package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg +7 -0
  62. package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg.js +12 -0
  63. package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg.js.map +1 -0
  64. package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg +5 -0
  65. package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg.js +10 -0
  66. package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg.js.map +1 -0
  67. package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg +4 -0
  68. package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg.js +9 -0
  69. package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg.js.map +1 -0
  70. package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg +5 -0
  71. package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg.js +10 -0
  72. package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg.js.map +1 -0
  73. package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg +4 -0
  74. package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg.js +9 -0
  75. package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg.js.map +1 -0
  76. package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg +5 -0
  77. package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg.js +10 -0
  78. package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg.js.map +1 -0
  79. package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg +5 -0
  80. package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg.js +10 -0
  81. package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg.js.map +1 -0
  82. package/dist/components/os-leaderboard-casino/assets/images/games/cards.png +0 -0
  83. package/dist/components/os-leaderboard-casino/assets/images/games/cards.png.js +5 -0
  84. package/dist/components/os-leaderboard-casino/assets/images/games/cards.png.js.map +1 -0
  85. package/dist/components/os-leaderboard-casino/assets/images/games/chips.png +0 -0
  86. package/dist/components/os-leaderboard-casino/assets/images/games/chips.png.js +5 -0
  87. package/dist/components/os-leaderboard-casino/assets/images/games/chips.png.js.map +1 -0
  88. package/dist/components/os-leaderboard-casino/assets/images/games/dice.png +0 -0
  89. package/dist/components/os-leaderboard-casino/assets/images/games/dice.png.js +5 -0
  90. package/dist/components/os-leaderboard-casino/assets/images/games/dice.png.js.map +1 -0
  91. package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png +0 -0
  92. package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png.js +5 -0
  93. package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png.js.map +1 -0
  94. package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png +0 -0
  95. package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png.js +5 -0
  96. package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png.js.map +1 -0
  97. package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png +0 -0
  98. package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png.js +5 -0
  99. package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png.js.map +1 -0
  100. package/dist/components/os-leaderboard-casino/assets/images/logo.png +0 -0
  101. package/dist/components/os-leaderboard-casino/constants/defaults.js +9 -0
  102. package/dist/components/os-leaderboard-casino/constants/defaults.js.map +1 -0
  103. package/dist/components/os-leaderboard-casino/constants/tags.js +15 -0
  104. package/dist/components/os-leaderboard-casino/constants/tags.js.map +1 -0
  105. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js +20 -0
  106. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js.map +1 -0
  107. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js +152 -0
  108. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js.map +1 -0
  109. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js +5 -0
  110. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js.map +1 -0
  111. package/dist/components/os-leaderboard-casino/index.js +39 -0
  112. package/dist/components/os-leaderboard-casino/index.js.map +1 -0
  113. package/dist/components/os-leaderboard-casino/integration/assemble-assets.js +48 -0
  114. package/dist/components/os-leaderboard-casino/integration/assemble-assets.js.map +1 -0
  115. package/dist/components/os-leaderboard-casino/integration/assets-context.js +64 -0
  116. package/dist/components/os-leaderboard-casino/integration/assets-context.js.map +1 -0
  117. package/dist/components/os-leaderboard-casino/integration/load-assets.js +22 -0
  118. package/dist/components/os-leaderboard-casino/integration/load-assets.js.map +1 -0
  119. package/dist/components/os-leaderboard-casino/integration/resolve-input.js +99 -0
  120. package/dist/components/os-leaderboard-casino/integration/resolve-input.js.map +1 -0
  121. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js +46 -0
  122. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js.map +1 -0
  123. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js +74 -0
  124. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js.map +1 -0
  125. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js +5 -0
  126. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js.map +1 -0
  127. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js +116 -0
  128. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js.map +1 -0
  129. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js +89 -0
  130. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js.map +1 -0
  131. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js +5 -0
  132. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js.map +1 -0
  133. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js +18 -0
  134. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js.map +1 -0
  135. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js +38 -0
  136. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js.map +1 -0
  137. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js +5 -0
  138. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js.map +1 -0
  139. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js +15 -0
  140. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js.map +1 -0
  141. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js +86 -0
  142. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js.map +1 -0
  143. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js +5 -0
  144. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js.map +1 -0
  145. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js +34 -0
  146. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js.map +1 -0
  147. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js +159 -0
  148. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js.map +1 -0
  149. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js +5 -0
  150. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js.map +1 -0
  151. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js +33 -0
  152. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js.map +1 -0
  153. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js +73 -0
  154. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js.map +1 -0
  155. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js +5 -0
  156. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js.map +1 -0
  157. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js +8 -0
  158. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js.map +1 -0
  159. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js +57 -0
  160. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js.map +1 -0
  161. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js +17 -0
  162. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js.map +1 -0
  163. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js +287 -0
  164. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js.map +1 -0
  165. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js +5 -0
  166. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js.map +1 -0
  167. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js +16 -0
  168. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js.map +1 -0
  169. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js +18 -0
  170. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js.map +1 -0
  171. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js +134 -0
  172. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js.map +1 -0
  173. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js +5 -0
  174. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js.map +1 -0
  175. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js +34 -0
  176. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js.map +1 -0
  177. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js +67 -0
  178. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js.map +1 -0
  179. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js +5 -0
  180. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js.map +1 -0
  181. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js +38 -0
  182. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js.map +1 -0
  183. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js +182 -0
  184. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js.map +1 -0
  185. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js +5 -0
  186. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js.map +1 -0
  187. package/dist/components/os-leaderboard-casino/services/adapter.service.js +49 -0
  188. package/dist/components/os-leaderboard-casino/services/adapter.service.js.map +1 -0
  189. package/dist/components/os-leaderboard-casino/services/icon.service.js +192 -0
  190. package/dist/components/os-leaderboard-casino/services/icon.service.js.map +1 -0
  191. package/dist/components/os-leaderboard-casino/theme/prize-resolve.js +11 -0
  192. package/dist/components/os-leaderboard-casino/theme/prize-resolve.js.map +1 -0
  193. package/dist/components/os-leaderboard-casino/theme/styles.js +179 -0
  194. package/dist/components/os-leaderboard-casino/theme/styles.js.map +1 -0
  195. package/dist/components/os-leaderboard-casino/theme/vip-icons.js +6 -0
  196. package/dist/components/os-leaderboard-casino/theme/vip-icons.js.map +1 -0
  197. package/dist/components/os-leaderboard-casino/theme/vip-mark.js +20 -0
  198. package/dist/components/os-leaderboard-casino/theme/vip-mark.js.map +1 -0
  199. package/dist/components/os-leaderboard-casino/types/data.js +7 -0
  200. package/dist/components/os-leaderboard-casino/types/data.js.map +1 -0
  201. package/dist/components/os-leaderboard-casino/types/events.js +8 -0
  202. package/dist/components/os-leaderboard-casino/types/events.js.map +1 -0
  203. package/dist/components/os-leaderboard-casino/types/state.js +12 -0
  204. package/dist/components/os-leaderboard-casino/types/state.js.map +1 -0
  205. package/dist/index.d.ts +734 -0
  206. package/dist/shared/lib/lit/component.js +8 -0
  207. package/dist/shared/lib/lit/component.js.map +1 -0
  208. package/dist/shared/lib/lit/safe-custom-element.js +7 -0
  209. package/dist/shared/lib/lit/safe-custom-element.js.map +1 -0
  210. package/dist/shared/lib/lit/scss.js +8 -0
  211. package/dist/shared/lib/lit/scss.js.map +1 -0
  212. package/dist/shared/vendor/keen-slider-keen-slider.es.js +538 -0
  213. package/dist/shared/vendor/keen-slider-keen-slider.es.js.map +1 -0
  214. package/package.json +36 -39
  215. package/.eleventy.cjs +0 -14
  216. package/custom-elements.json +0 -1539
  217. package/docs/_README/index.html +0 -4
  218. package/docs/api/index.html +0 -2100
  219. package/docs/components.bundle.js +0 -1669
  220. package/docs/components.bundle.js.map +0 -1
  221. package/docs/docs.css +0 -162
  222. package/docs/examples/index.html +0 -56
  223. package/docs/index.html +0 -53
  224. package/docs/install/index.html +0 -45
  225. package/docs/prism-okaidia.css +0 -123
  226. package/docs-src/.nojekyll +0 -0
  227. package/docs-src/_README.md +0 -7
  228. package/docs-src/_data/api.11tydata.js +0 -8
  229. package/docs-src/_includes/example.11ty.js +0 -35
  230. package/docs-src/_includes/footer.11ty.js +0 -6
  231. package/docs-src/_includes/header.11ty.js +0 -7
  232. package/docs-src/_includes/nav.11ty.js +0 -11
  233. package/docs-src/_includes/page.11ty.js +0 -32
  234. package/docs-src/_includes/relative-path.cjs +0 -9
  235. package/docs-src/api.11ty.js +0 -85
  236. package/docs-src/bundle.ts +0 -9
  237. package/docs-src/docs.css +0 -162
  238. package/docs-src/examples/index.md +0 -15
  239. package/docs-src/index.md +0 -39
  240. package/docs-src/install.md +0 -28
  241. package/docs-src/package.json +0 -3
  242. package/index.html +0 -19
  243. package/karma.conf.cjs +0 -24
  244. package/main.css +0 -210
  245. package/main.ts +0 -124
  246. package/previews/casino.ts +0 -12
  247. package/previews/catalog.ts +0 -94
  248. package/previews/leaderboard-v1.ts +0 -12
  249. package/previews/leaderboard-v2.ts +0 -17
  250. package/previews/sample-data.ts +0 -101
  251. package/previews/sf-leaderboard.ts +0 -100
  252. package/previews/sf-live-feed.ts +0 -15
  253. package/previews/streaks.ts +0 -40
  254. package/previews/types.ts +0 -18
  255. package/src/components/README.md +0 -16
  256. package/src/components/casino-leaderboard/casino-leaderboard.html +0 -80
  257. package/src/components/casino-leaderboard/casino-leaderboard.scss +0 -585
  258. package/src/components/casino-leaderboard/casino-leaderboard.ts +0 -136
  259. package/src/components/casino-leaderboard/data.ts +0 -111
  260. package/src/components/casino-leaderboard/index.ts +0 -5
  261. package/src/components/casino-leaderboard/todo.txt +0 -2
  262. package/src/components/casino-leaderboard/types.ts +0 -19
  263. package/src/components/leaderboard/components/leaderboard.ts +0 -373
  264. package/src/components/leaderboard/components/player-card.ts +0 -342
  265. package/src/components/leaderboard/components/ui.ts +0 -452
  266. package/src/components/leaderboard/data.ts +0 -152
  267. package/src/components/leaderboard/index.ts +0 -2
  268. package/src/components/leaderboard/main.ts +0 -42
  269. package/src/components/leaderboard/styles.ts +0 -67
  270. package/src/components/leaderboard/types.ts +0 -28
  271. package/src/components/leaderboard-v2/components/sf-leaderboard-player.ts +0 -451
  272. package/src/components/leaderboard-v2/components/sf-leaderboard-ui.ts +0 -512
  273. package/src/components/leaderboard-v2/components/sf-leaderboard.ts +0 -205
  274. package/src/components/leaderboard-v2/constants.ts +0 -16
  275. package/src/components/leaderboard-v2/demo/sample-data.ts +0 -152
  276. package/src/components/leaderboard-v2/events.ts +0 -13
  277. package/src/components/leaderboard-v2/icons.ts +0 -22
  278. package/src/components/leaderboard-v2/index.ts +0 -23
  279. package/src/components/leaderboard-v2/sf-leaderboard.html +0 -1
  280. package/src/components/leaderboard-v2/sf-leaderboard.scss +0 -382
  281. package/src/components/leaderboard-v2/tokens.ts +0 -35
  282. package/src/components/leaderboard-v2/types.ts +0 -30
  283. package/src/components/sf-leaderboard/index.ts +0 -77
  284. package/src/components/sf-leaderboard/sections/footer-section/footer-section.host.ts +0 -3
  285. package/src/components/sf-leaderboard/sections/footer-section/footer-section.html +0 -3
  286. package/src/components/sf-leaderboard/sections/footer-section/footer-section.scss +0 -18
  287. package/src/components/sf-leaderboard/sections/footer-section/footer-section.ts +0 -22
  288. package/src/components/sf-leaderboard/sections/header-section/header-section.host.ts +0 -14
  289. package/src/components/sf-leaderboard/sections/header-section/header-section.html +0 -27
  290. package/src/components/sf-leaderboard/sections/header-section/header-section.scss +0 -189
  291. package/src/components/sf-leaderboard/sections/header-section/header-section.ts +0 -70
  292. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.host.ts +0 -22
  293. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.html +0 -38
  294. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.scss +0 -99
  295. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.ts +0 -121
  296. package/src/components/sf-leaderboard/sections/stats-section/stats-section.host.ts +0 -8
  297. package/src/components/sf-leaderboard/sections/stats-section/stats-section.html +0 -6
  298. package/src/components/sf-leaderboard/sections/stats-section/stats-section.scss +0 -44
  299. package/src/components/sf-leaderboard/sections/stats-section/stats-section.ts +0 -41
  300. package/src/components/sf-leaderboard/sections/table-section/table-section.host.ts +0 -17
  301. package/src/components/sf-leaderboard/sections/table-section/table-section.html +0 -19
  302. package/src/components/sf-leaderboard/sections/table-section/table-section.scss +0 -37
  303. package/src/components/sf-leaderboard/sections/table-section/table-section.ts +0 -108
  304. package/src/components/sf-leaderboard/services/index.ts +0 -22
  305. package/src/components/sf-leaderboard/services/sf-leaderboard-data.service.ts +0 -54
  306. package/src/components/sf-leaderboard/services/sf-leaderboard.state.ts +0 -160
  307. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.host.ts +0 -7
  308. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.html +0 -10
  309. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.scss +0 -180
  310. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.ts +0 -88
  311. package/src/components/sf-leaderboard/shared/components/filters/filters.host.ts +0 -12
  312. package/src/components/sf-leaderboard/shared/components/filters/filters.html +0 -22
  313. package/src/components/sf-leaderboard/shared/components/filters/filters.scss +0 -122
  314. package/src/components/sf-leaderboard/shared/components/filters/filters.ts +0 -75
  315. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.host.ts +0 -9
  316. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.html +0 -5
  317. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.scss +0 -81
  318. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.ts +0 -34
  319. package/src/components/sf-leaderboard/shared/components/podium/map-players.ts +0 -24
  320. package/src/components/sf-leaderboard/shared/components/podium/podium.host.ts +0 -10
  321. package/src/components/sf-leaderboard/shared/components/podium/podium.html +0 -53
  322. package/src/components/sf-leaderboard/shared/components/podium/podium.scss +0 -580
  323. package/src/components/sf-leaderboard/shared/components/podium/podium.ts +0 -49
  324. package/src/components/sf-leaderboard/shared/components/podium/podium.types.ts +0 -9
  325. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.host.ts +0 -11
  326. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.html +0 -9
  327. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.scss +0 -98
  328. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.ts +0 -63
  329. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.host.ts +0 -9
  330. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.html +0 -15
  331. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.scss +0 -210
  332. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.ts +0 -36
  333. package/src/components/sf-leaderboard/shared/components/table/table.host.ts +0 -5
  334. package/src/components/sf-leaderboard/shared/components/table/table.html +0 -11
  335. package/src/components/sf-leaderboard/shared/components/table/table.scss +0 -212
  336. package/src/components/sf-leaderboard/shared/components/table/table.ts +0 -111
  337. package/src/components/sf-leaderboard/shared/constants/defaults.ts +0 -7
  338. package/src/components/sf-leaderboard/shared/constants/filters.ts +0 -16
  339. package/src/components/sf-leaderboard/shared/constants/index.ts +0 -5
  340. package/src/components/sf-leaderboard/shared/constants/player-stats.ts +0 -3
  341. package/src/components/sf-leaderboard/shared/constants/stats-overview.ts +0 -38
  342. package/src/components/sf-leaderboard/shared/constants/tags.ts +0 -16
  343. package/src/components/sf-leaderboard/shared/styles/_section.scss +0 -35
  344. package/src/components/sf-leaderboard/shared/types/data.ts +0 -29
  345. package/src/components/sf-leaderboard/shared/types/events.ts +0 -30
  346. package/src/components/sf-leaderboard/shared/types/player-stats.ts +0 -3
  347. package/src/components/sf-leaderboard/shared/types/sections.ts +0 -100
  348. package/src/components/sf-leaderboard/shared/utils/utils.ts +0 -17
  349. package/src/components/sf-leaderboard/theme/THEMING.md +0 -54
  350. package/src/components/sf-leaderboard/theme/context.ts +0 -16
  351. package/src/components/sf-leaderboard/theme/default-theme.ts +0 -4
  352. package/src/components/sf-leaderboard/theme/hex-to-rgb.ts +0 -25
  353. package/src/components/sf-leaderboard/theme/index.ts +0 -18
  354. package/src/components/sf-leaderboard/theme/inject-theme.ts +0 -39
  355. package/src/components/sf-leaderboard/theme/load-theme.ts +0 -26
  356. package/src/components/sf-leaderboard/theme/merge-theme.ts +0 -59
  357. package/src/components/sf-leaderboard/theme/scss/_colors.scss +0 -101
  358. package/src/components/sf-leaderboard/theme/scss/shared.scss +0 -123
  359. package/src/components/sf-leaderboard/theme/styles.ts +0 -6
  360. package/src/components/sf-leaderboard/theme/theme-to-css-vars.ts +0 -99
  361. package/src/components/sf-leaderboard/theme/themes/fallback.json +0 -62
  362. package/src/components/sf-leaderboard/theme/themes/red.json +0 -62
  363. package/src/components/sf-leaderboard/theme/types.ts +0 -71
  364. package/src/components/sf-live-feed/components/avatar/avatar.host.ts +0 -5
  365. package/src/components/sf-live-feed/components/avatar/avatar.html +0 -3
  366. package/src/components/sf-live-feed/components/avatar/avatar.scss +0 -24
  367. package/src/components/sf-live-feed/components/avatar/avatar.ts +0 -27
  368. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.host.ts +0 -8
  369. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.html +0 -10
  370. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.scss +0 -177
  371. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.ts +0 -65
  372. package/src/components/sf-live-feed/constants.ts +0 -4
  373. package/src/components/sf-live-feed/demo/sample-data.ts +0 -34
  374. package/src/components/sf-live-feed/index.ts +0 -19
  375. package/src/components/sf-live-feed/styles/theme.scss +0 -19
  376. package/src/components/sf-live-feed/styles/theme.ts +0 -5
  377. package/src/components/sf-live-feed/types.ts +0 -19
  378. package/src/components/sf-live-feed/utils.ts +0 -17
  379. package/src/components/streaks/constants.ts +0 -17
  380. package/src/components/streaks/demo/sample-steps.ts +0 -10
  381. package/src/components/streaks/events.ts +0 -8
  382. package/src/components/streaks/index.ts +0 -16
  383. package/src/components/streaks/sf-streaks.html +0 -26
  384. package/src/components/streaks/sf-streaks.scss +0 -351
  385. package/src/components/streaks/sf-streaks.ts +0 -235
  386. package/src/components/streaks/types.ts +0 -7
  387. package/src/lib/lit/component.ts +0 -10
  388. package/src/lib/lit/safe-custom-element.ts +0 -12
  389. package/src/lib/lit/scss.ts +0 -6
  390. package/src/vite-env.d.ts +0 -18
  391. package/styles/global.css +0 -125
  392. package/todo.txt +0 -54
  393. package/tsconfig.json +0 -31
  394. package/vite.config.ts +0 -56
  395. package/vite.docs.config.ts +0 -33
  396. package/vite.lit-html-plugin.ts +0 -43
@@ -0,0 +1,159 @@
1
+ import { LitElement as f, nothing as u, html as p } from "lit";
2
+ import { property as d, state as c } from "lit/decorators.js";
3
+ import { Component as b } from "../../../../shared/lib/lit/component.js";
4
+ import { scss as y } from "../../../../shared/lib/lit/scss.js";
5
+ import { OS_LEADERBOARD_CASINO_HERO as w } from "../../constants/tags.js";
6
+ import { osLeaderboardCasinoTheme as D } from "../../theme/styles.js";
7
+ import g from "./hero-section.html.js";
8
+ import T from "./hero-section.scss.js";
9
+ var v = Object.defineProperty, A = Object.getOwnPropertyDescriptor, l = (t, e, s, i) => {
10
+ for (var o = i > 1 ? void 0 : i ? A(e, s) : e, a = t.length - 1, r; a >= 0; a--)
11
+ (r = t[a]) && (o = (i ? r(e, s, o) : r(o)) || o);
12
+ return i && o && v(e, s, o), o;
13
+ };
14
+ function h(t, e = Date.now()) {
15
+ const s = Math.floor((new Date(t).getTime() - e) / 1e3);
16
+ return !Number.isFinite(s) || s <= 0 ? { expired: !0, days: 0, hours: 0, minutes: 0, seconds: 0 } : {
17
+ expired: !1,
18
+ days: Math.floor(s / 86400),
19
+ hours: Math.floor(s % 86400 / 3600),
20
+ minutes: Math.floor(s % 3600 / 60),
21
+ seconds: s % 60
22
+ };
23
+ }
24
+ const P = {
25
+ upcoming: "Upcoming",
26
+ active: "Live",
27
+ completed: "Finished",
28
+ cancelled: "Cancelled"
29
+ };
30
+ let n = class extends f {
31
+ constructor() {
32
+ super(...arguments), this.now = Date.now(), this.poolDisplay = null, this.poolBump = !1;
33
+ }
34
+ get showBanner() {
35
+ return !!this.section?.bannerAsset?.url;
36
+ }
37
+ get bannerUrl() {
38
+ return this.section?.bannerAsset?.url ?? "";
39
+ }
40
+ get bannerAlt() {
41
+ return this.section?.bannerAsset?.label || "";
42
+ }
43
+ get showStatus() {
44
+ return !!this.section?.status;
45
+ }
46
+ get status() {
47
+ return this.section?.status;
48
+ }
49
+ get statusLabel() {
50
+ const t = this.section?.status;
51
+ return t ? P[t] : "";
52
+ }
53
+ get showActiveDot() {
54
+ return this.section?.status === "active";
55
+ }
56
+ get showDescription() {
57
+ return !!this.section?.description;
58
+ }
59
+ get showPool() {
60
+ return this.poolDisplay != null || !!this.section?.prizePool;
61
+ }
62
+ get poolValueLabel() {
63
+ return this.poolDisplay != null ? this.formatPool(this.poolDisplay) : this.section?.prizePool ?? "";
64
+ }
65
+ get poolLabel() {
66
+ return this.section?.prizePoolLabel ?? "Total prize pool";
67
+ }
68
+ get showRising() {
69
+ return this.poolDisplay != null;
70
+ }
71
+ connectedCallback() {
72
+ super.connectedCallback(), this.timer = setInterval(() => {
73
+ this.now = Date.now();
74
+ }, 1e3);
75
+ }
76
+ disconnectedCallback() {
77
+ super.disconnectedCallback(), this.timer && clearInterval(this.timer), this.poolRaf && cancelAnimationFrame(this.poolRaf), this.bumpTimer && clearTimeout(this.bumpTimer);
78
+ }
79
+ willUpdate(t) {
80
+ if (!t.has("section")) return;
81
+ const e = this.section?.prizePoolValue;
82
+ if (e == null) {
83
+ this.poolDisplay = null;
84
+ return;
85
+ }
86
+ if (this.poolDisplay == null) {
87
+ this.poolDisplay = e;
88
+ return;
89
+ }
90
+ e !== this.poolDisplay && this.animatePool(e);
91
+ }
92
+ /** Rolling count-up from the current display value to `target`. */
93
+ animatePool(t) {
94
+ this.poolRaf && cancelAnimationFrame(this.poolRaf);
95
+ const e = this.poolDisplay ?? t, s = 1100, i = performance.now(), o = (a) => {
96
+ const r = Math.min(1, (a - i) / s), m = 1 - Math.pow(1 - r, 3);
97
+ this.poolDisplay = Math.round(e + (t - e) * m), r < 1 && (this.poolRaf = requestAnimationFrame(o));
98
+ };
99
+ this.poolRaf = requestAnimationFrame(o), t > e && (this.poolBump = !0, this.bumpTimer && clearTimeout(this.bumpTimer), this.bumpTimer = setTimeout(() => {
100
+ this.poolBump = !1;
101
+ }, 650));
102
+ }
103
+ formatPool(t) {
104
+ try {
105
+ return new Intl.NumberFormat("en-US", {
106
+ style: "currency",
107
+ currency: this.section?.prizePoolCurrency ?? "USD",
108
+ maximumFractionDigits: 0
109
+ }).format(t);
110
+ } catch {
111
+ return t.toLocaleString();
112
+ }
113
+ }
114
+ get isFinished() {
115
+ const t = this.section?.status;
116
+ return t === "completed" || t === "cancelled" ? !0 : this.section?.endTs ? h(this.section.endTs, this.now).expired : !1;
117
+ }
118
+ renderCountdown() {
119
+ const t = this.section?.endTs;
120
+ if (!t) return u;
121
+ if (this.isFinished)
122
+ return p`<span class="ended">🏁 Contest finished</span>`;
123
+ const e = h(t, this.now), s = (i, o) => p`<div class="cell">
124
+ <b>${String(i).padStart(2, "0")}</b><span>${o}</span>
125
+ </div>`;
126
+ return p`
127
+ <div class="countdown">
128
+ <span class="label">Ends in</span>
129
+ ${s(e.days, "days")}<span class="sep">:</span>
130
+ ${s(e.hours, "hours")}<span class="sep">:</span>
131
+ ${s(e.minutes, "min")}<span class="sep">:</span>
132
+ ${s(e.seconds, "sec")}
133
+ </div>
134
+ `;
135
+ }
136
+ render() {
137
+ return this.section ? g(this) : u;
138
+ }
139
+ };
140
+ n.styles = [D, y(T)];
141
+ l([
142
+ d({ attribute: !1 })
143
+ ], n.prototype, "section", 2);
144
+ l([
145
+ c()
146
+ ], n.prototype, "now", 2);
147
+ l([
148
+ c()
149
+ ], n.prototype, "poolDisplay", 2);
150
+ l([
151
+ c()
152
+ ], n.prototype, "poolBump", 2);
153
+ n = l([
154
+ b({ selector: w })
155
+ ], n);
156
+ export {
157
+ n as OsLeaderboardCasinoHero
158
+ };
159
+ //# sourceMappingURL=hero-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero-section.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/hero-section/hero-section.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { Component } from '@oddsmith/lib/lit/component.js';\nimport { scss } from '@oddsmith/lib/lit/scss.js';\nimport { OS_LEADERBOARD_CASINO_HERO } from '@os-leaderboard-casino/constants/tags.js';\nimport { osLeaderboardCasinoTheme } from '@os-leaderboard-casino/theme/index.js';\nimport type { LeaderboardStatus } from '@os-leaderboard-casino/types/data.js';\nimport type { OsLeaderboardCasinoHeroSection } from '@os-leaderboard-casino/types/sections.js';\nimport type { HeroSectionHost } from './hero-section.host.js';\nimport renderTemplate from './hero-section.html?lit-html';\nimport styles from './hero-section.scss?inline';\n\ninterface CountdownParts {\n expired: boolean;\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nfunction countdownTo(endTs: string, now = Date.now()): CountdownParts {\n const remaining = Math.floor((new Date(endTs).getTime() - now) / 1000);\n if (!Number.isFinite(remaining) || remaining <= 0) {\n return { expired: true, days: 0, hours: 0, minutes: 0, seconds: 0 };\n }\n return {\n expired: false,\n days: Math.floor(remaining / 86400),\n hours: Math.floor((remaining % 86400) / 3600),\n minutes: Math.floor((remaining % 3600) / 60),\n seconds: remaining % 60,\n };\n}\n\nconst STATUS_LABELS: Record<LeaderboardStatus, string> = {\n upcoming: 'Upcoming',\n active: 'Live',\n completed: 'Finished',\n cancelled: 'Cancelled',\n};\n\n/** Glam hero — golden ring, shimmer title, prize-pool headline, glowing countdown. */\n@Component({ selector: OS_LEADERBOARD_CASINO_HERO })\nexport class OsLeaderboardCasinoHero\n extends LitElement\n implements HeroSectionHost\n{\n static styles = [osLeaderboardCasinoTheme, scss(styles)];\n\n @property({ attribute: false })\n section!: OsLeaderboardCasinoHeroSection;\n\n @state()\n private now = Date.now();\n\n /** Animated odometer value shown for `prizePoolValue`. */\n @state()\n private poolDisplay: number | null = null;\n\n @state()\n poolBump = false;\n\n private timer?: ReturnType<typeof setInterval>;\n private poolRaf?: number;\n private bumpTimer?: ReturnType<typeof setTimeout>;\n\n get showBanner(): boolean {\n return Boolean(this.section?.bannerAsset?.url);\n }\n\n get bannerUrl(): string {\n return this.section?.bannerAsset?.url ?? '';\n }\n\n get bannerAlt(): string {\n return this.section?.bannerAsset?.label || '';\n }\n\n get showStatus(): boolean {\n return Boolean(this.section?.status);\n }\n\n get status(): LeaderboardStatus | undefined {\n return this.section?.status;\n }\n\n get statusLabel(): string {\n const status = this.section?.status;\n return status ? STATUS_LABELS[status] : '';\n }\n\n get showActiveDot(): boolean {\n return this.section?.status === 'active';\n }\n\n get showDescription(): boolean {\n return Boolean(this.section?.description);\n }\n\n get showPool(): boolean {\n return this.poolDisplay != null || Boolean(this.section?.prizePool);\n }\n\n get poolValueLabel(): string {\n if (this.poolDisplay != null) return this.formatPool(this.poolDisplay);\n return this.section?.prizePool ?? '';\n }\n\n get poolLabel(): string {\n return this.section?.prizePoolLabel ?? 'Total prize pool';\n }\n\n get showRising(): boolean {\n return this.poolDisplay != null;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.timer = setInterval(() => {\n this.now = Date.now();\n }, 1000);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.timer) clearInterval(this.timer);\n if (this.poolRaf) cancelAnimationFrame(this.poolRaf);\n if (this.bumpTimer) clearTimeout(this.bumpTimer);\n }\n\n willUpdate(changed: Map<string, unknown>) {\n if (!changed.has('section')) return;\n const target = this.section?.prizePoolValue;\n if (target == null) {\n this.poolDisplay = null;\n return;\n }\n if (this.poolDisplay == null) {\n this.poolDisplay = target;\n return;\n }\n if (target !== this.poolDisplay) this.animatePool(target);\n }\n\n /** Rolling count-up from the current display value to `target`. */\n private animatePool(target: number) {\n if (this.poolRaf) cancelAnimationFrame(this.poolRaf);\n const from = this.poolDisplay ?? target;\n const duration = 1100;\n const start = performance.now();\n const tick = (t: number) => {\n const p = Math.min(1, (t - start) / duration);\n const eased = 1 - Math.pow(1 - p, 3);\n this.poolDisplay = Math.round(from + (target - from) * eased);\n if (p < 1) this.poolRaf = requestAnimationFrame(tick);\n };\n this.poolRaf = requestAnimationFrame(tick);\n\n if (target > from) {\n this.poolBump = true;\n if (this.bumpTimer) clearTimeout(this.bumpTimer);\n this.bumpTimer = setTimeout(() => {\n this.poolBump = false;\n }, 650);\n }\n }\n\n private formatPool(value: number): string {\n try {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: this.section?.prizePoolCurrency ?? 'USD',\n maximumFractionDigits: 0,\n }).format(value);\n } catch {\n return value.toLocaleString();\n }\n }\n\n private get isFinished(): boolean {\n const status = this.section?.status;\n if (status === 'completed' || status === 'cancelled') return true;\n if (!this.section?.endTs) return false;\n return countdownTo(this.section.endTs, this.now).expired;\n }\n\n renderCountdown() {\n const endTs = this.section?.endTs;\n if (!endTs) return nothing;\n\n if (this.isFinished) {\n return html`<span class=\"ended\">🏁 Contest finished</span>`;\n }\n\n const c = countdownTo(endTs, this.now);\n const cell = (v: number, label: string) =>\n html`<div class=\"cell\">\n <b>${String(v).padStart(2, '0')}</b><span>${label}</span>\n </div>`;\n\n return html`\n <div class=\"countdown\">\n <span class=\"label\">Ends in</span>\n ${cell(c.days, 'days')}<span class=\"sep\">:</span>\n ${cell(c.hours, 'hours')}<span class=\"sep\">:</span>\n ${cell(c.minutes, 'min')}<span class=\"sep\">:</span>\n ${cell(c.seconds, 'sec')}\n </div>\n `;\n }\n\n render() {\n if (!this.section) return nothing;\n return renderTemplate(this);\n }\n}\n"],"names":["countdownTo","endTs","now","remaining","STATUS_LABELS","OsLeaderboardCasinoHero","LitElement","status","changed","target","from","duration","start","tick","t","p","eased","value","nothing","html","c","cell","v","label","renderTemplate","osLeaderboardCasinoTheme","scss","styles","__decorateClass","property","state","Component","OS_LEADERBOARD_CASINO_HERO"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ const e = ':host{display:block;width:100%}.hero{position:relative;overflow:hidden;border-radius:var(--radius-sm);border:1px solid var(--panel-border);background:radial-gradient(90% 130% at 50% -20%,color-mix(in srgb,var(--violet) 22%,transparent),transparent 55%),radial-gradient(70% 110% at 12% 110%,color-mix(in srgb,var(--gold) 16%,transparent),transparent 58%),radial-gradient(65% 100% at 88% 108%,color-mix(in srgb,var(--gold) 12%,transparent),transparent 62%),var(--panel-bg);box-shadow:var(--panel-shadow);text-align:center;padding:clamp(26px,5vw,44px) clamp(18px,4vw,36px) clamp(22px,4vw,34px)}.hero:before{content:"";position:absolute;top:120%;left:50%;width:150%;aspect-ratio:1;transform:translate(-50%,-50%);transform-origin:50% 50%;background:conic-gradient(from 0deg,transparent 0deg,transparent 45deg,color-mix(in srgb,var(--gold) 24%,transparent) 55deg,color-mix(in srgb,var(--gold) 20%,transparent) 58deg,transparent 67deg,transparent 198deg,color-mix(in srgb,var(--violet) 22%,transparent) 208deg,color-mix(in srgb,var(--violet) 16%,transparent) 211deg,transparent 220deg,transparent 360deg);filter:blur(28px);opacity:.92;animation:halo 16s linear infinite;pointer-events:none;z-index:0}@keyframes halo{to{transform:translate(-50%,-50%) rotate(360deg)}}@media(max-width:640px){.hero:before{top:100%;width:215%}}.banner-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.22;z-index:0}.inner{position:relative;z-index:1}.status{display:inline-flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:6px 14px;border-radius:999px;background:var(--panel-bg);border:1px solid var(--panel-border);color:var(--text-dim)}.status.active{color:var(--green);border-color:color-mix(in srgb,var(--green) 45%,transparent)}.status.active .dot{width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 1.6s ease-in-out infinite}.status.completed{color:var(--gold);border-color:var(--hairline-gold)}.status.cancelled{color:var(--red)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}h2{margin:16px 0 0;font-family:var(--font-display);font-size:clamp(26px,5.4vw,40px);font-weight:800;letter-spacing:-.02em;line-height:1.12;background:var(--gold-gradient);background-size:200% auto;background-position:0% center;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5.5s linear infinite;text-wrap:balance}@keyframes shimmer{0%{background-position:0% center}to{background-position:200% center}}.description{margin:12px auto 0;font-size:13.5px;line-height:1.6;color:var(--text-dim);max-width:52ch}.pool{margin-top:22px;display:inline-flex;flex-direction:column;align-items:center;gap:4px;padding:14px 34px;border-radius:16px;background:var(--panel-bg);border:1px solid var(--panel-border);box-shadow:var(--panel-shadow)}.pool .label{font-size:10px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint)}.pool .value{font-family:var(--font-mono);font-size:clamp(28px,5vw,38px);font-weight:800;color:var(--gold-strong);text-shadow:0 0 26px var(--gold-glow);line-height:1.1;font-variant-numeric:tabular-nums;transition:text-shadow .3s ease}.pool .value.bump{animation:pool-bump .6s ease}@keyframes pool-bump{0%{transform:scale(1)}35%{transform:scale(1.06);text-shadow:0 0 42px var(--gold-glow),0 0 12px var(--gold-strong)}to{transform:scale(1)}}.pool .rising{display:inline-flex;align-items:center;gap:4px;margin-top:2px;font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--green)}.pool .rising i{width:5px;height:5px;border-radius:50%;background:var(--green);animation:pulse 1.6s ease-in-out infinite}.countdown{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:22px;flex-wrap:wrap}.countdown .label{width:100%;font-size:10px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);margin-bottom:2px}.cell{min-width:60px;text-align:center;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:9px 10px 8px}.cell b{display:block;font-family:var(--font-mono);font-size:21px;font-weight:800;color:var(--text);line-height:1.1}.cell span{display:block;margin-top:3px;font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.sep{font-family:var(--font-mono);font-size:18px;font-weight:800;color:var(--gold);opacity:.7}@media(max-width:480px){.cell{min-width:48px;padding:8px 6px 7px}.cell b{font-size:18px}.countdown{gap:5px}.sep{font-size:15px}}.ended{display:inline-flex;align-items:center;gap:8px;margin-top:22px;padding:10px 20px;border-radius:var(--radius-sm);background:var(--gold-soft);border:1px solid var(--hairline-gold);color:var(--gold);font-weight:700;font-size:14px}';
2
+ export {
3
+ e as default
4
+ };
5
+ //# sourceMappingURL=hero-section.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero-section.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,33 @@
1
+ import { html as i } from "lit";
2
+ function e(l) {
3
+ return i`<div class="legals">
4
+ <nav class="legals__links">
5
+ ${l.renderLinks()}
6
+ </nav>
7
+ <dialog @click=${l.onDialogClick}>
8
+ <div class="dialog-panel">
9
+ <div class="dialog-header">
10
+ <span class="dialog-title">${l.dialogTitle}</span>
11
+ <button
12
+ class="dialog-close"
13
+ type="button"
14
+ aria-label="Close"
15
+ @click=${l.onDialogClose}
16
+ >
17
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true">
18
+ <path d="M2 2l10 10M12 2L2 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
19
+ </svg>
20
+ </button>
21
+ </div>
22
+ <div class="dialog-body">
23
+ <p>${l.renderDialogContent()}</p>
24
+ </div>
25
+ </div>
26
+ </dialog>
27
+ </div>
28
+ `;
29
+ }
30
+ export {
31
+ e as default
32
+ };
33
+ //# sourceMappingURL=legals-section.html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legals-section.html.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/legals-section/legals-section.html?lit-html"],"sourcesContent":["\nimport { html } from 'lit';\n\nexport default function render(host) {\n return html`<div class=\"legals\">\n <nav class=\"legals__links\">\n ${host.renderLinks()}\n </nav>\n <dialog @click=${host.onDialogClick}>\n <div class=\"dialog-panel\">\n <div class=\"dialog-header\">\n <span class=\"dialog-title\">${host.dialogTitle}</span>\n <button\n class=\"dialog-close\"\n type=\"button\"\n aria-label=\"Close\"\n @click=${host.onDialogClose}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 2l10 10M12 2L2 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n </div>\n <div class=\"dialog-body\">\n <p>${host.renderDialogContent()}</p>\n </div>\n </div>\n </dialog>\n</div>\n`;\n}\n"],"names":["render","host","html"],"mappings":";AAGe,SAASA,EAAOC,GAAM;AACnC,SAAOC;AAAA;AAAA,MAEHD,EAAK,YAAW,CAAE;AAAA;AAAA,mBAELA,EAAK,aAAa;AAAA;AAAA;AAAA,qCAGAA,EAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKlCA,EAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQxBA,EAAK,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAMvC;"}
@@ -0,0 +1,73 @@
1
+ import { LitElement as c, html as p, nothing as d } from "lit";
2
+ import { property as h, state as m, query as g } from "lit/decorators.js";
3
+ import { Component as u } from "../../../../shared/lib/lit/component.js";
4
+ import { scss as f } from "../../../../shared/lib/lit/scss.js";
5
+ import { OS_LEADERBOARD_CASINO_LEGALS as _ } from "../../constants/tags.js";
6
+ import { osLeaderboardCasinoTheme as b } from "../../theme/styles.js";
7
+ import L from "./legals-section.html.js";
8
+ import v from "./legals-section.scss.js";
9
+ var k = Object.defineProperty, C = Object.getOwnPropertyDescriptor, a = (e, t, r, n) => {
10
+ for (var i = n > 1 ? void 0 : n ? C(t, r) : t, s = e.length - 1, l; s >= 0; s--)
11
+ (l = e[s]) && (i = (n ? l(t, r, i) : l(i)) || i);
12
+ return n && i && k(t, r, i), i;
13
+ };
14
+ const w = "This promotion is open to all registered players aged 18 or over. Participation is subject to the standard Terms & Conditions applicable to all promotions. Prize winnings are credited as bonus funds and are subject to a 20× wagering requirement before withdrawal. The leaderboard is updated in real time and rankings are final at the time the campaign ends. The operator reserves the right to amend or cancel this promotion at any time without prior notice. Responsible gambling tools are available in your account settings at all times.";
15
+ let o = class extends c {
16
+ constructor() {
17
+ super(...arguments), this._activeLink = null, this.onDialogClose = () => {
18
+ this._activeLink = null;
19
+ }, this.onDialogClick = (e) => {
20
+ e.target === this._dialog && (this._activeLink = null);
21
+ };
22
+ }
23
+ get dialogTitle() {
24
+ return this._activeLink?.label ?? "";
25
+ }
26
+ get dialogContent() {
27
+ return this._activeLink?.content ?? w;
28
+ }
29
+ renderDialogContent() {
30
+ return this.dialogContent.split(/<br\s*\/?>/).flatMap(
31
+ (e, t, r) => t < r.length - 1 ? [e, p`<br />`] : [e]
32
+ );
33
+ }
34
+ updated(e) {
35
+ if (super.updated(e), e.has("_activeLink")) {
36
+ const t = this._dialog;
37
+ if (!t) return;
38
+ this._activeLink && !t.open ? t.showModal() : !this._activeLink && t.open && t.close();
39
+ }
40
+ }
41
+ _onLinkClick(e) {
42
+ e.type === "external" ? window.open(e.href ?? "https://www.google.com", "_blank", "noopener,noreferrer") : this._activeLink = e;
43
+ }
44
+ renderLinks() {
45
+ return p`${this.section.links.map(
46
+ (e) => p`<button
47
+ class="legal-link"
48
+ type="button"
49
+ @click=${() => this._onLinkClick(e)}
50
+ >${e.label}</button>`
51
+ )}`;
52
+ }
53
+ render() {
54
+ return this.section?.links?.length ? L(this) : d;
55
+ }
56
+ };
57
+ o.styles = [b, f(v)];
58
+ a([
59
+ h({ attribute: !1 })
60
+ ], o.prototype, "section", 2);
61
+ a([
62
+ m()
63
+ ], o.prototype, "_activeLink", 2);
64
+ a([
65
+ g("dialog")
66
+ ], o.prototype, "_dialog", 2);
67
+ o = a([
68
+ u({ selector: _ })
69
+ ], o);
70
+ export {
71
+ o as OsLeaderboardCasinoLegals
72
+ };
73
+ //# sourceMappingURL=legals-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legals-section.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/legals-section/legals-section.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { Component } from '@oddsmith/lib/lit/component.js';\nimport { scss } from '@oddsmith/lib/lit/scss.js';\nimport { OS_LEADERBOARD_CASINO_LEGALS } from '@os-leaderboard-casino/constants/tags.js';\nimport { osLeaderboardCasinoTheme } from '@os-leaderboard-casino/theme/index.js';\nimport type {\n OsLeaderboardCasinoLegalLink,\n OsLeaderboardCasinoLegalsSection,\n} from '@os-leaderboard-casino/types/sections.js';\nimport type { LegalsSectionHost } from './legals-section.host.js';\nimport renderTemplate from './legals-section.html?lit-html';\nimport styles from './legals-section.scss?inline';\n\nconst DEFAULT_DIALOG_CONTENT =\n 'This promotion is open to all registered players aged 18 or over. Participation is subject to the standard Terms & Conditions applicable to all promotions. Prize winnings are credited as bonus funds and are subject to a 20× wagering requirement before withdrawal. The leaderboard is updated in real time and rankings are final at the time the campaign ends. The operator reserves the right to amend or cancel this promotion at any time without prior notice. Responsible gambling tools are available in your account settings at all times.';\n\n@Component({ selector: OS_LEADERBOARD_CASINO_LEGALS })\nexport class OsLeaderboardCasinoLegals\n extends LitElement\n implements LegalsSectionHost\n{\n static styles = [osLeaderboardCasinoTheme, scss(styles)];\n\n @property({ attribute: false })\n section!: OsLeaderboardCasinoLegalsSection;\n\n @state()\n private _activeLink: OsLeaderboardCasinoLegalLink | null = null;\n\n @query('dialog')\n private _dialog!: HTMLDialogElement;\n\n get dialogTitle(): string {\n return this._activeLink?.label ?? '';\n }\n\n get dialogContent(): string {\n return this._activeLink?.content ?? DEFAULT_DIALOG_CONTENT;\n }\n\n renderDialogContent() {\n return this.dialogContent.split(/<br\\s*\\/?>/).flatMap((part, i, arr) =>\n i < arr.length - 1 ? [part, html`<br />`] : [part],\n );\n }\n\n protected updated(changedProps: Map<string, unknown>): void {\n super.updated(changedProps);\n if (changedProps.has('_activeLink')) {\n const dialog = this._dialog;\n if (!dialog) return;\n if (this._activeLink && !dialog.open) {\n dialog.showModal();\n } else if (!this._activeLink && dialog.open) {\n dialog.close();\n }\n }\n }\n\n readonly onDialogClose = () => {\n this._activeLink = null;\n };\n\n readonly onDialogClick = (e: MouseEvent) => {\n if (e.target === this._dialog) {\n this._activeLink = null;\n }\n };\n\n private _onLinkClick(link: OsLeaderboardCasinoLegalLink): void {\n if (link.type === 'external') {\n window.open(link.href ?? 'https://www.google.com', '_blank', 'noopener,noreferrer');\n } else {\n this._activeLink = link;\n }\n }\n\n renderLinks() {\n return html`${this.section.links.map(\n (link) =>\n html`<button\n class=\"legal-link\"\n type=\"button\"\n @click=${() => this._onLinkClick(link)}\n >${link.label}</button>`,\n )}`;\n }\n\n render() {\n if (!this.section?.links?.length) return nothing;\n return renderTemplate(this);\n }\n}\n"],"names":["DEFAULT_DIALOG_CONTENT","OsLeaderboardCasinoLegals","LitElement","part","i","arr","html","changedProps","dialog","link","renderTemplate","nothing","osLeaderboardCasinoTheme","scss","styles","__decorateClass","property","state","query","Component","OS_LEADERBOARD_CASINO_LEGALS"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,IACJ;AAGK,IAAMC,IAAN,cACGC,EAEV;AAAA,EAHO,cAAA;AAAA,UAAA,GAAA,SAAA,GAUL,KAAQ,cAAmD,MAgC3D,KAAS,gBAAgB,MAAM;AAC7B,WAAK,cAAc;AAAA,IACrB,GAEA,KAAS,gBAAgB,CAAC,MAAkB;AAC1C,MAAI,EAAE,WAAW,KAAK,YACpB,KAAK,cAAc;AAAA,IAEvB;AAAA,EAAA;AAAA,EAnCA,IAAI,cAAsB;AACxB,WAAO,KAAK,aAAa,SAAS;AAAA,EACpC;AAAA,EAEA,IAAI,gBAAwB;AAC1B,WAAO,KAAK,aAAa,WAAWF;AAAA,EACtC;AAAA,EAEA,sBAAsB;AACpB,WAAO,KAAK,cAAc,MAAM,YAAY,EAAE;AAAA,MAAQ,CAACG,GAAMC,GAAGC,MAC9DD,IAAIC,EAAI,SAAS,IAAI,CAACF,GAAMG,SAAY,IAAI,CAACH,CAAI;AAAA,IAAA;AAAA,EAErD;AAAA,EAEU,QAAQI,GAA0C;AAE1D,QADA,MAAM,QAAQA,CAAY,GACtBA,EAAa,IAAI,aAAa,GAAG;AACnC,YAAMC,IAAS,KAAK;AACpB,UAAI,CAACA,EAAQ;AACb,MAAI,KAAK,eAAe,CAACA,EAAO,OAC9BA,EAAO,UAAA,IACE,CAAC,KAAK,eAAeA,EAAO,QACrCA,EAAO,MAAA;AAAA,IAEX;AAAA,EACF;AAAA,EAYQ,aAAaC,GAA0C;AAC7D,IAAIA,EAAK,SAAS,aAChB,OAAO,KAAKA,EAAK,QAAQ,0BAA0B,UAAU,qBAAqB,IAElF,KAAK,cAAcA;AAAA,EAEvB;AAAA,EAEA,cAAc;AACZ,WAAOH,IAAO,KAAK,QAAQ,MAAM;AAAA,MAC/B,CAACG,MACCH;AAAA;AAAA;AAAA,mBAGW,MAAM,KAAK,aAAaG,CAAI,CAAC;AAAA,WACrCA,EAAK,KAAK;AAAA,IAAA,CAChB;AAAA,EACH;AAAA,EAEA,SAAS;AACP,WAAK,KAAK,SAAS,OAAO,SACnBC,EAAe,IAAI,IADeC;AAAA,EAE3C;AACF;AA3EaV,EAIJ,SAAS,CAACW,GAA0BC,EAAKC,CAAM,CAAC;AAGvDC,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GANnBf,EAOX,WAAA,WAAA,CAAA;AAGQc,EAAA;AAAA,EADPE,EAAA;AAAM,GATIhB,EAUH,WAAA,eAAA,CAAA;AAGAc,EAAA;AAAA,EADPG,EAAM,QAAQ;AAAA,GAZJjB,EAaH,WAAA,WAAA,CAAA;AAbGA,IAANc,EAAA;AAAA,EADNI,EAAU,EAAE,UAAUC,EAAA,CAA8B;AAAA,GACxCnB,CAAA;"}
@@ -0,0 +1,5 @@
1
+ const o = '@charset "UTF-8";:host{display:block;width:100%}.legals__links{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 24px;margin-top:20px}.legal-link{background:none;border:none;cursor:pointer;font-family:var(--font-body);font-size:13.5px;font-weight:800;color:var(--gold);text-decoration:none;transition:color var(--transition-fast)}.legal-link:hover{color:var(--gold-strong);text-shadow:0 0 12px var(--gold-glow)}dialog{border:1px solid var(--panel-border);border-radius:var(--radius-sm);background:var(--surface-solid);color:var(--text);padding:0;width:min(480px,90vw);max-height:80vh;overflow:hidden;box-shadow:var(--shadow)}dialog::backdrop{background:#000000a6;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.dialog-panel{display:flex;flex-direction:column;max-height:80vh}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--hairline);flex:none}.dialog-title{font-family:var(--font-display);font-size:15px;font-weight:800;letter-spacing:.02em;color:var(--text)}.dialog-close{flex:none;display:grid;place-items:center;width:28px;height:28px;background:#ffffff0f;border:1px solid var(--hairline);border-radius:8px;cursor:pointer;color:var(--text-dim);padding:0;transition:background var(--transition-fast),color var(--transition-fast)}.dialog-close:hover{background:#ffffff1c;color:var(--text)}.dialog-body{padding:20px 22px 26px;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--violet) 30%,transparent) transparent}.dialog-body::-webkit-scrollbar{width:3px}.dialog-body::-webkit-scrollbar-track{background:transparent}.dialog-body::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--violet) 35%,transparent);border-radius:99px}.dialog-body p{margin:0;font-size:13.5px;line-height:1.8;color:var(--text-dim);letter-spacing:.01em}';
2
+ export {
3
+ o as default
4
+ };
5
+ //# sourceMappingURL=legals-section.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legals-section.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,8 @@
1
+ import { winIcon as o } from "../../../services/icon.service.js";
2
+ function r(n) {
3
+ return o(n);
4
+ }
5
+ export {
6
+ r as winIcon
7
+ };
8
+ //# sourceMappingURL=win-icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"win-icons.js","sources":["../../../../../../src/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.ts"],"sourcesContent":["import type { TemplateResult } from 'lit';\nimport { winIcon as loadWinIcon } from '@os-leaderboard-casino/services/icon.service.js';\n\nexport type WinIconName = 'bag' | 'coin' | 'trophy' | 'fire' | 'gem' | 'bolt';\n\nexport function winIcon(name: WinIconName): TemplateResult {\n return loadWinIcon(name);\n}\n"],"names":["winIcon","name","loadWinIcon"],"mappings":";AAKO,SAASA,EAAQC,GAAmC;AACzD,SAAOC,EAAYD,CAAI;AACzB;"}
@@ -0,0 +1,57 @@
1
+ const c = [
2
+ "coin",
3
+ "bolt",
4
+ "trophy",
5
+ "gem",
6
+ "fire",
7
+ "bag"
8
+ ];
9
+ function s(r, n) {
10
+ const e = r.text.match(/^(.+?)\s+won(?:\s+\$[\d,]+)?\s+on\s+(.+)$/i), o = e?.[1]?.trim() ?? r.text, a = e?.[2]?.trim() ?? "", t = r.amount ?? null;
11
+ return {
12
+ user: o,
13
+ game: a,
14
+ gameId: r.gameId,
15
+ big: (t ?? 0) >= 5e3,
16
+ icon: u(r.icon, n),
17
+ amount: t,
18
+ currency: r.currency ?? "USD",
19
+ vip: r.vip ?? !1
20
+ };
21
+ }
22
+ function u(r, n) {
23
+ switch (r) {
24
+ case "💰":
25
+ case "🪙":
26
+ return "coin";
27
+ case "⚡":
28
+ return "bolt";
29
+ case "🏆":
30
+ return "trophy";
31
+ case "💎":
32
+ return "gem";
33
+ case "🔥":
34
+ return "fire";
35
+ case "🎰":
36
+ return "bag";
37
+ default:
38
+ return c[n % c.length];
39
+ }
40
+ }
41
+ function i(r, n) {
42
+ if (r == null) return "";
43
+ try {
44
+ return new Intl.NumberFormat("en-US", {
45
+ style: "currency",
46
+ currency: n,
47
+ maximumFractionDigits: 0
48
+ }).format(r);
49
+ } catch {
50
+ return `$${r.toLocaleString("en-US")}`;
51
+ }
52
+ }
53
+ export {
54
+ i as formatWinAmount,
55
+ s as parseMarqueeItem
56
+ };
57
+ //# sourceMappingURL=marquee-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee-item.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/marquee-section/marquee-item.ts"],"sourcesContent":["import type { OsLeaderboardCasinoMarqueeItem } from '@os-leaderboard-casino/types/sections.js';\nimport type { WinIconName } from './components/win-icons.js';\n\nconst ICON_CYCLE: WinIconName[] = [\n 'coin',\n 'bolt',\n 'trophy',\n 'gem',\n 'fire',\n 'bag',\n];\n\nexport interface ParsedMarqueeWin {\n user: string;\n game: string;\n gameId?: string;\n big: boolean;\n icon: WinIconName;\n amount: number | null;\n currency: string;\n vip: boolean;\n}\n\nexport function parseMarqueeItem(\n item: OsLeaderboardCasinoMarqueeItem,\n index: number,\n): ParsedMarqueeWin {\n const onMatch = item.text.match(/^(.+?)\\s+won(?:\\s+\\$[\\d,]+)?\\s+on\\s+(.+)$/i);\n const user = onMatch?.[1]?.trim() ?? item.text;\n const game = onMatch?.[2]?.trim() ?? '';\n const amount = item.amount ?? null;\n\n return {\n user,\n game,\n gameId: item.gameId,\n big: (amount ?? 0) >= 5000,\n icon: resolveIcon(item.icon, index),\n amount,\n currency: item.currency ?? 'USD',\n vip: item.vip ?? false,\n };\n}\n\nfunction resolveIcon(icon: string | undefined, index: number): WinIconName {\n switch (icon) {\n case '💰':\n case '🪙':\n return 'coin';\n case '⚡':\n return 'bolt';\n case '🏆':\n return 'trophy';\n case '💎':\n return 'gem';\n case '🔥':\n return 'fire';\n case '🎰':\n return 'bag';\n default:\n return ICON_CYCLE[index % ICON_CYCLE.length];\n }\n}\n\nexport function formatWinAmount(\n amount: number | null,\n currency: string,\n): string {\n if (amount == null) return '';\n try {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n maximumFractionDigits: 0,\n }).format(amount);\n } catch {\n return `$${amount.toLocaleString('en-US')}`;\n }\n}\n"],"names":["ICON_CYCLE","parseMarqueeItem","item","index","onMatch","user","game","amount","resolveIcon","icon","formatWinAmount","currency"],"mappings":"AAGA,MAAMA,IAA4B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAaO,SAASC,EACdC,GACAC,GACkB;AAClB,QAAMC,IAAUF,EAAK,KAAK,MAAM,4CAA4C,GACtEG,IAAOD,IAAU,CAAC,GAAG,KAAA,KAAUF,EAAK,MACpCI,IAAOF,IAAU,CAAC,GAAG,UAAU,IAC/BG,IAASL,EAAK,UAAU;AAE9B,SAAO;AAAA,IACL,MAAAG;AAAA,IACA,MAAAC;AAAA,IACA,QAAQJ,EAAK;AAAA,IACb,MAAMK,KAAU,MAAM;AAAA,IACtB,MAAMC,EAAYN,EAAK,MAAMC,CAAK;AAAA,IAClC,QAAAI;AAAA,IACA,UAAUL,EAAK,YAAY;AAAA,IAC3B,KAAKA,EAAK,OAAO;AAAA,EAAA;AAErB;AAEA,SAASM,EAAYC,GAA0BN,GAA4B;AACzE,UAAQM,GAAA;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAOT,EAAWG,IAAQH,EAAW,MAAM;AAAA,EAAA;AAEjD;AAEO,SAASU,EACdH,GACAI,GACQ;AACR,MAAIJ,KAAU,KAAM,QAAO;AAC3B,MAAI;AACF,WAAO,IAAI,KAAK,aAAa,SAAS;AAAA,MACpC,OAAO;AAAA,MACP,UAAAI;AAAA,MACA,uBAAuB;AAAA,IAAA,CACxB,EAAE,OAAOJ,CAAM;AAAA,EAClB,QAAQ;AACN,WAAO,IAAIA,EAAO,eAAe,OAAO,CAAC;AAAA,EAC3C;AACF;"}
@@ -0,0 +1,17 @@
1
+ import { html as r } from "lit";
2
+ function d(e) {
3
+ return r`<div
4
+ class="marquee"
5
+ style="--speed: ${e.speedSec}s"
6
+ role="region"
7
+ aria-label="Recent winners"
8
+ >
9
+ ${e.renderHudLabel()}
10
+ <div class="track">${e.renderTrack()}</div>
11
+ </div>
12
+ `;
13
+ }
14
+ export {
15
+ d as default
16
+ };
17
+ //# sourceMappingURL=marquee-section.html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee-section.html.js","sources":["../../../../../src/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html?lit-html"],"sourcesContent":["\nimport { html } from 'lit';\n\nexport default function render(host) {\n return html`<div\n class=\"marquee\"\n style=\"--speed: ${host.speedSec}s\"\n role=\"region\"\n aria-label=\"Recent winners\"\n>\n ${host.renderHudLabel()}\n <div class=\"track\">${host.renderTrack()}</div>\n</div>\n`;\n}\n"],"names":["render","host","html"],"mappings":";AAGe,SAASA,EAAOC,GAAM;AACnC,SAAOC;AAAA;AAAA,oBAEWD,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA,IAI7BA,EAAK,eAAc,CAAE;AAAA,uBACFA,EAAK,aAAa;AAAA;AAAA;AAGzC;"}