@oddsmith/ui 0.0.0 → 1.0.1

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 (478) 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.d.ts +8 -0
  102. package/dist/components/os-leaderboard-casino/constants/defaults.js +9 -0
  103. package/dist/components/os-leaderboard-casino/constants/defaults.js.map +1 -0
  104. package/dist/components/os-leaderboard-casino/constants/index.d.ts +2 -0
  105. package/dist/components/os-leaderboard-casino/constants/tags.d.ts +22 -0
  106. package/dist/components/os-leaderboard-casino/constants/tags.js +17 -0
  107. package/dist/components/os-leaderboard-casino/constants/tags.js.map +1 -0
  108. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.d.ts +35 -0
  109. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.host.d.ts +13 -0
  110. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js +20 -0
  111. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js.map +1 -0
  112. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js +152 -0
  113. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js.map +1 -0
  114. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js +5 -0
  115. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js.map +1 -0
  116. package/dist/components/os-leaderboard-casino/index.d.ts +36 -0
  117. package/dist/components/os-leaderboard-casino/index.js +39 -0
  118. package/dist/components/os-leaderboard-casino/index.js.map +1 -0
  119. package/dist/components/os-leaderboard-casino/integration/assemble-assets.d.ts +21 -0
  120. package/dist/components/os-leaderboard-casino/integration/assemble-assets.js +48 -0
  121. package/dist/components/os-leaderboard-casino/integration/assemble-assets.js.map +1 -0
  122. package/dist/components/os-leaderboard-casino/integration/assets-context.d.ts +26 -0
  123. package/dist/components/os-leaderboard-casino/integration/assets-context.js +64 -0
  124. package/dist/components/os-leaderboard-casino/integration/assets-context.js.map +1 -0
  125. package/dist/components/os-leaderboard-casino/integration/defaults-glam.d.ts +14 -0
  126. package/dist/components/os-leaderboard-casino/integration/defaults-new-money.d.ts +3 -0
  127. package/dist/components/os-leaderboard-casino/integration/index.d.ts +5 -0
  128. package/dist/components/os-leaderboard-casino/integration/labels.d.ts +1 -0
  129. package/dist/components/os-leaderboard-casino/integration/load-assets.d.ts +9 -0
  130. package/dist/components/os-leaderboard-casino/integration/load-assets.js +22 -0
  131. package/dist/components/os-leaderboard-casino/integration/load-assets.js.map +1 -0
  132. package/dist/components/os-leaderboard-casino/integration/presets.d.ts +1 -0
  133. package/dist/components/os-leaderboard-casino/integration/resolve-input.d.ts +20 -0
  134. package/dist/components/os-leaderboard-casino/integration/resolve-input.js +99 -0
  135. package/dist/components/os-leaderboard-casino/integration/resolve-input.js.map +1 -0
  136. package/dist/components/os-leaderboard-casino/integration/themes.d.ts +1 -0
  137. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.d.ts +19 -0
  138. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.host.d.ts +15 -0
  139. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js +46 -0
  140. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js.map +1 -0
  141. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js +74 -0
  142. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js.map +1 -0
  143. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js +5 -0
  144. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js.map +1 -0
  145. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.d.ts +5 -0
  146. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js +116 -0
  147. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js.map +1 -0
  148. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.d.ts +16 -0
  149. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.host.d.ts +8 -0
  150. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js +90 -0
  151. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js.map +1 -0
  152. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js +5 -0
  153. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js.map +1 -0
  154. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.d.ts +10 -0
  155. package/{src/components/sf-leaderboard/sections/footer-section/footer-section.host.ts → dist/components/os-leaderboard-casino/sections/footer-section/footer-section.host.d.ts} +1 -1
  156. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js +18 -0
  157. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js.map +1 -0
  158. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js +39 -0
  159. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js.map +1 -0
  160. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js +5 -0
  161. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js.map +1 -0
  162. package/dist/components/os-leaderboard-casino/sections/games-section/components/game-images.d.ts +1 -0
  163. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.d.ts +20 -0
  164. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.host.d.ts +7 -0
  165. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js +15 -0
  166. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js.map +1 -0
  167. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js +86 -0
  168. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js.map +1 -0
  169. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js +5 -0
  170. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js.map +1 -0
  171. package/dist/components/os-leaderboard-casino/sections/header-section/header-section.d.ts +12 -0
  172. package/dist/components/os-leaderboard-casino/sections/header-section/header-section.host.d.ts +8 -0
  173. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.d.ts +37 -0
  174. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.host.d.ts +20 -0
  175. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js +34 -0
  176. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js.map +1 -0
  177. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js +160 -0
  178. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js.map +1 -0
  179. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js +5 -0
  180. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js.map +1 -0
  181. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.d.ts +18 -0
  182. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.host.d.ts +8 -0
  183. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js +33 -0
  184. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js.map +1 -0
  185. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js +74 -0
  186. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js.map +1 -0
  187. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js +5 -0
  188. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js.map +1 -0
  189. package/dist/components/os-leaderboard-casino/sections/live-feed-section/live-feed-section.d.ts +13 -0
  190. package/dist/components/os-leaderboard-casino/sections/live-feed-section/live-feed-section.host.d.ts +8 -0
  191. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.d.ts +3 -0
  192. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js +8 -0
  193. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js.map +1 -0
  194. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.d.ts +14 -0
  195. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js +57 -0
  196. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js.map +1 -0
  197. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.d.ts +42 -0
  198. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.host.d.ts +8 -0
  199. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js +17 -0
  200. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js.map +1 -0
  201. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js +287 -0
  202. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js.map +1 -0
  203. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js +5 -0
  204. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js.map +1 -0
  205. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.d.ts +6 -0
  206. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js +16 -0
  207. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js.map +1 -0
  208. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.d.ts +16 -0
  209. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.js +71 -0
  210. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.js.map +1 -0
  211. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.scss.js +5 -0
  212. package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.scss.js.map +1 -0
  213. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.d.ts +23 -0
  214. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.host.d.ts +11 -0
  215. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js +18 -0
  216. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js.map +1 -0
  217. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js +135 -0
  218. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js.map +1 -0
  219. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js +5 -0
  220. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js.map +1 -0
  221. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-band/stat-band.d.ts +17 -0
  222. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-card/stat-card.d.ts +15 -0
  223. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-chip/stat-chip.d.ts +17 -0
  224. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-gauge/stat-gauge.d.ts +14 -0
  225. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-icons.d.ts +5 -0
  226. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-icons.js +11 -0
  227. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-icons.js.map +1 -0
  228. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-meter/stat-meter.d.ts +17 -0
  229. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.d.ts +17 -0
  230. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.js +61 -0
  231. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.js.map +1 -0
  232. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.scss.js +5 -0
  233. package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.scss.js.map +1 -0
  234. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.d.ts +16 -0
  235. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.host.d.ts +13 -0
  236. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js +34 -0
  237. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js.map +1 -0
  238. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js +69 -0
  239. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js.map +1 -0
  240. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js +5 -0
  241. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js.map +1 -0
  242. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.d.ts +31 -0
  243. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.host.d.ts +15 -0
  244. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js +38 -0
  245. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js.map +1 -0
  246. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js +183 -0
  247. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js.map +1 -0
  248. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js +5 -0
  249. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js.map +1 -0
  250. package/dist/components/os-leaderboard-casino/services/adapter.service.d.ts +11 -0
  251. package/dist/components/os-leaderboard-casino/services/adapter.service.js +49 -0
  252. package/dist/components/os-leaderboard-casino/services/adapter.service.js.map +1 -0
  253. package/dist/components/os-leaderboard-casino/services/icon.service.d.ts +28 -0
  254. package/dist/components/os-leaderboard-casino/services/icon.service.js +192 -0
  255. package/dist/components/os-leaderboard-casino/services/icon.service.js.map +1 -0
  256. package/dist/components/os-leaderboard-casino/services/index.d.ts +2 -0
  257. package/dist/components/os-leaderboard-casino/theme/index.d.ts +3 -0
  258. package/dist/components/os-leaderboard-casino/theme/prize-icons.d.ts +1 -0
  259. package/dist/components/os-leaderboard-casino/theme/prize-resolve.d.ts +5 -0
  260. package/dist/components/os-leaderboard-casino/theme/prize-resolve.js +11 -0
  261. package/dist/components/os-leaderboard-casino/theme/prize-resolve.js.map +1 -0
  262. package/dist/components/os-leaderboard-casino/theme/styles.d.ts +9 -0
  263. package/dist/components/os-leaderboard-casino/theme/styles.js +179 -0
  264. package/dist/components/os-leaderboard-casino/theme/styles.js.map +1 -0
  265. package/dist/components/os-leaderboard-casino/theme/vip-icons.d.ts +2 -0
  266. package/dist/components/os-leaderboard-casino/theme/vip-icons.js +6 -0
  267. package/dist/components/os-leaderboard-casino/theme/vip-icons.js.map +1 -0
  268. package/dist/components/os-leaderboard-casino/theme/vip-mark.d.ts +7 -0
  269. package/dist/components/os-leaderboard-casino/theme/vip-mark.js +20 -0
  270. package/dist/components/os-leaderboard-casino/theme/vip-mark.js.map +1 -0
  271. package/dist/components/os-leaderboard-casino/types/assets.d.ts +40 -0
  272. package/dist/components/os-leaderboard-casino/types/data.d.ts +106 -0
  273. package/dist/components/os-leaderboard-casino/types/data.js +7 -0
  274. package/dist/components/os-leaderboard-casino/types/data.js.map +1 -0
  275. package/dist/components/os-leaderboard-casino/types/events.d.ts +18 -0
  276. package/dist/components/os-leaderboard-casino/types/events.js +8 -0
  277. package/dist/components/os-leaderboard-casino/types/events.js.map +1 -0
  278. package/dist/components/os-leaderboard-casino/types/icons.d.ts +18 -0
  279. package/dist/components/os-leaderboard-casino/types/input.d.ts +73 -0
  280. package/dist/components/os-leaderboard-casino/types/ledger.d.ts +67 -0
  281. package/dist/components/os-leaderboard-casino/types/sections.d.ts +200 -0
  282. package/dist/components/os-leaderboard-casino/types/state.d.ts +69 -0
  283. package/dist/components/os-leaderboard-casino/types/state.js +12 -0
  284. package/dist/components/os-leaderboard-casino/types/state.js.map +1 -0
  285. package/dist/shared/lib/lit/component.d.ts +5 -0
  286. package/dist/shared/lib/lit/component.js +8 -0
  287. package/dist/shared/lib/lit/component.js.map +1 -0
  288. package/dist/shared/lib/lit/safe-custom-element.d.ts +5 -0
  289. package/dist/shared/lib/lit/safe-custom-element.js +7 -0
  290. package/dist/shared/lib/lit/safe-custom-element.js.map +1 -0
  291. package/dist/shared/lib/lit/scss.d.ts +3 -0
  292. package/dist/shared/lib/lit/scss.js +8 -0
  293. package/dist/shared/lib/lit/scss.js.map +1 -0
  294. package/dist/shared/lib/lit/template.d.ts +3 -0
  295. package/dist/shared/vendor/keen-slider-keen-slider.es.js +538 -0
  296. package/dist/shared/vendor/keen-slider-keen-slider.es.js.map +1 -0
  297. package/package.json +37 -39
  298. package/.eleventy.cjs +0 -14
  299. package/custom-elements.json +0 -1539
  300. package/docs/_README/index.html +0 -4
  301. package/docs/api/index.html +0 -2100
  302. package/docs/components.bundle.js +0 -1669
  303. package/docs/components.bundle.js.map +0 -1
  304. package/docs/docs.css +0 -162
  305. package/docs/examples/index.html +0 -56
  306. package/docs/index.html +0 -53
  307. package/docs/install/index.html +0 -45
  308. package/docs/prism-okaidia.css +0 -123
  309. package/docs-src/.nojekyll +0 -0
  310. package/docs-src/_README.md +0 -7
  311. package/docs-src/_data/api.11tydata.js +0 -8
  312. package/docs-src/_includes/example.11ty.js +0 -35
  313. package/docs-src/_includes/footer.11ty.js +0 -6
  314. package/docs-src/_includes/header.11ty.js +0 -7
  315. package/docs-src/_includes/nav.11ty.js +0 -11
  316. package/docs-src/_includes/page.11ty.js +0 -32
  317. package/docs-src/_includes/relative-path.cjs +0 -9
  318. package/docs-src/api.11ty.js +0 -85
  319. package/docs-src/bundle.ts +0 -9
  320. package/docs-src/docs.css +0 -162
  321. package/docs-src/examples/index.md +0 -15
  322. package/docs-src/index.md +0 -39
  323. package/docs-src/install.md +0 -28
  324. package/docs-src/package.json +0 -3
  325. package/index.html +0 -19
  326. package/karma.conf.cjs +0 -24
  327. package/main.css +0 -210
  328. package/main.ts +0 -124
  329. package/previews/casino.ts +0 -12
  330. package/previews/catalog.ts +0 -94
  331. package/previews/leaderboard-v1.ts +0 -12
  332. package/previews/leaderboard-v2.ts +0 -17
  333. package/previews/sample-data.ts +0 -101
  334. package/previews/sf-leaderboard.ts +0 -100
  335. package/previews/sf-live-feed.ts +0 -15
  336. package/previews/streaks.ts +0 -40
  337. package/previews/types.ts +0 -18
  338. package/src/components/README.md +0 -16
  339. package/src/components/casino-leaderboard/casino-leaderboard.html +0 -80
  340. package/src/components/casino-leaderboard/casino-leaderboard.scss +0 -585
  341. package/src/components/casino-leaderboard/casino-leaderboard.ts +0 -136
  342. package/src/components/casino-leaderboard/data.ts +0 -111
  343. package/src/components/casino-leaderboard/index.ts +0 -5
  344. package/src/components/casino-leaderboard/todo.txt +0 -2
  345. package/src/components/casino-leaderboard/types.ts +0 -19
  346. package/src/components/leaderboard/components/leaderboard.ts +0 -373
  347. package/src/components/leaderboard/components/player-card.ts +0 -342
  348. package/src/components/leaderboard/components/ui.ts +0 -452
  349. package/src/components/leaderboard/data.ts +0 -152
  350. package/src/components/leaderboard/index.ts +0 -2
  351. package/src/components/leaderboard/main.ts +0 -42
  352. package/src/components/leaderboard/styles.ts +0 -67
  353. package/src/components/leaderboard/types.ts +0 -28
  354. package/src/components/leaderboard-v2/components/sf-leaderboard-player.ts +0 -451
  355. package/src/components/leaderboard-v2/components/sf-leaderboard-ui.ts +0 -512
  356. package/src/components/leaderboard-v2/components/sf-leaderboard.ts +0 -205
  357. package/src/components/leaderboard-v2/constants.ts +0 -16
  358. package/src/components/leaderboard-v2/demo/sample-data.ts +0 -152
  359. package/src/components/leaderboard-v2/events.ts +0 -13
  360. package/src/components/leaderboard-v2/icons.ts +0 -22
  361. package/src/components/leaderboard-v2/index.ts +0 -23
  362. package/src/components/leaderboard-v2/sf-leaderboard.html +0 -1
  363. package/src/components/leaderboard-v2/sf-leaderboard.scss +0 -382
  364. package/src/components/leaderboard-v2/tokens.ts +0 -35
  365. package/src/components/leaderboard-v2/types.ts +0 -30
  366. package/src/components/sf-leaderboard/index.ts +0 -77
  367. package/src/components/sf-leaderboard/sections/footer-section/footer-section.html +0 -3
  368. package/src/components/sf-leaderboard/sections/footer-section/footer-section.scss +0 -18
  369. package/src/components/sf-leaderboard/sections/footer-section/footer-section.ts +0 -22
  370. package/src/components/sf-leaderboard/sections/header-section/header-section.host.ts +0 -14
  371. package/src/components/sf-leaderboard/sections/header-section/header-section.html +0 -27
  372. package/src/components/sf-leaderboard/sections/header-section/header-section.scss +0 -189
  373. package/src/components/sf-leaderboard/sections/header-section/header-section.ts +0 -70
  374. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.host.ts +0 -22
  375. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.html +0 -38
  376. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.scss +0 -99
  377. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.ts +0 -121
  378. package/src/components/sf-leaderboard/sections/stats-section/stats-section.host.ts +0 -8
  379. package/src/components/sf-leaderboard/sections/stats-section/stats-section.html +0 -6
  380. package/src/components/sf-leaderboard/sections/stats-section/stats-section.scss +0 -44
  381. package/src/components/sf-leaderboard/sections/stats-section/stats-section.ts +0 -41
  382. package/src/components/sf-leaderboard/sections/table-section/table-section.host.ts +0 -17
  383. package/src/components/sf-leaderboard/sections/table-section/table-section.html +0 -19
  384. package/src/components/sf-leaderboard/sections/table-section/table-section.scss +0 -37
  385. package/src/components/sf-leaderboard/sections/table-section/table-section.ts +0 -108
  386. package/src/components/sf-leaderboard/services/index.ts +0 -22
  387. package/src/components/sf-leaderboard/services/sf-leaderboard-data.service.ts +0 -54
  388. package/src/components/sf-leaderboard/services/sf-leaderboard.state.ts +0 -160
  389. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.host.ts +0 -7
  390. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.html +0 -10
  391. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.scss +0 -180
  392. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.ts +0 -88
  393. package/src/components/sf-leaderboard/shared/components/filters/filters.host.ts +0 -12
  394. package/src/components/sf-leaderboard/shared/components/filters/filters.html +0 -22
  395. package/src/components/sf-leaderboard/shared/components/filters/filters.scss +0 -122
  396. package/src/components/sf-leaderboard/shared/components/filters/filters.ts +0 -75
  397. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.host.ts +0 -9
  398. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.html +0 -5
  399. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.scss +0 -81
  400. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.ts +0 -34
  401. package/src/components/sf-leaderboard/shared/components/podium/map-players.ts +0 -24
  402. package/src/components/sf-leaderboard/shared/components/podium/podium.host.ts +0 -10
  403. package/src/components/sf-leaderboard/shared/components/podium/podium.html +0 -53
  404. package/src/components/sf-leaderboard/shared/components/podium/podium.scss +0 -580
  405. package/src/components/sf-leaderboard/shared/components/podium/podium.ts +0 -49
  406. package/src/components/sf-leaderboard/shared/components/podium/podium.types.ts +0 -9
  407. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.host.ts +0 -11
  408. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.html +0 -9
  409. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.scss +0 -98
  410. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.ts +0 -63
  411. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.host.ts +0 -9
  412. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.html +0 -15
  413. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.scss +0 -210
  414. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.ts +0 -36
  415. package/src/components/sf-leaderboard/shared/components/table/table.host.ts +0 -5
  416. package/src/components/sf-leaderboard/shared/components/table/table.html +0 -11
  417. package/src/components/sf-leaderboard/shared/components/table/table.scss +0 -212
  418. package/src/components/sf-leaderboard/shared/components/table/table.ts +0 -111
  419. package/src/components/sf-leaderboard/shared/constants/defaults.ts +0 -7
  420. package/src/components/sf-leaderboard/shared/constants/filters.ts +0 -16
  421. package/src/components/sf-leaderboard/shared/constants/index.ts +0 -5
  422. package/src/components/sf-leaderboard/shared/constants/player-stats.ts +0 -3
  423. package/src/components/sf-leaderboard/shared/constants/stats-overview.ts +0 -38
  424. package/src/components/sf-leaderboard/shared/constants/tags.ts +0 -16
  425. package/src/components/sf-leaderboard/shared/styles/_section.scss +0 -35
  426. package/src/components/sf-leaderboard/shared/types/data.ts +0 -29
  427. package/src/components/sf-leaderboard/shared/types/events.ts +0 -30
  428. package/src/components/sf-leaderboard/shared/types/player-stats.ts +0 -3
  429. package/src/components/sf-leaderboard/shared/types/sections.ts +0 -100
  430. package/src/components/sf-leaderboard/shared/utils/utils.ts +0 -17
  431. package/src/components/sf-leaderboard/theme/THEMING.md +0 -54
  432. package/src/components/sf-leaderboard/theme/context.ts +0 -16
  433. package/src/components/sf-leaderboard/theme/default-theme.ts +0 -4
  434. package/src/components/sf-leaderboard/theme/hex-to-rgb.ts +0 -25
  435. package/src/components/sf-leaderboard/theme/index.ts +0 -18
  436. package/src/components/sf-leaderboard/theme/inject-theme.ts +0 -39
  437. package/src/components/sf-leaderboard/theme/load-theme.ts +0 -26
  438. package/src/components/sf-leaderboard/theme/merge-theme.ts +0 -59
  439. package/src/components/sf-leaderboard/theme/scss/_colors.scss +0 -101
  440. package/src/components/sf-leaderboard/theme/scss/shared.scss +0 -123
  441. package/src/components/sf-leaderboard/theme/styles.ts +0 -6
  442. package/src/components/sf-leaderboard/theme/theme-to-css-vars.ts +0 -99
  443. package/src/components/sf-leaderboard/theme/themes/fallback.json +0 -62
  444. package/src/components/sf-leaderboard/theme/themes/red.json +0 -62
  445. package/src/components/sf-leaderboard/theme/types.ts +0 -71
  446. package/src/components/sf-live-feed/components/avatar/avatar.host.ts +0 -5
  447. package/src/components/sf-live-feed/components/avatar/avatar.html +0 -3
  448. package/src/components/sf-live-feed/components/avatar/avatar.scss +0 -24
  449. package/src/components/sf-live-feed/components/avatar/avatar.ts +0 -27
  450. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.host.ts +0 -8
  451. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.html +0 -10
  452. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.scss +0 -177
  453. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.ts +0 -65
  454. package/src/components/sf-live-feed/constants.ts +0 -4
  455. package/src/components/sf-live-feed/demo/sample-data.ts +0 -34
  456. package/src/components/sf-live-feed/index.ts +0 -19
  457. package/src/components/sf-live-feed/styles/theme.scss +0 -19
  458. package/src/components/sf-live-feed/styles/theme.ts +0 -5
  459. package/src/components/sf-live-feed/types.ts +0 -19
  460. package/src/components/sf-live-feed/utils.ts +0 -17
  461. package/src/components/streaks/constants.ts +0 -17
  462. package/src/components/streaks/demo/sample-steps.ts +0 -10
  463. package/src/components/streaks/events.ts +0 -8
  464. package/src/components/streaks/index.ts +0 -16
  465. package/src/components/streaks/sf-streaks.html +0 -26
  466. package/src/components/streaks/sf-streaks.scss +0 -351
  467. package/src/components/streaks/sf-streaks.ts +0 -235
  468. package/src/components/streaks/types.ts +0 -7
  469. package/src/lib/lit/component.ts +0 -10
  470. package/src/lib/lit/safe-custom-element.ts +0 -12
  471. package/src/lib/lit/scss.ts +0 -6
  472. package/src/vite-env.d.ts +0 -18
  473. package/styles/global.css +0 -125
  474. package/todo.txt +0 -54
  475. package/tsconfig.json +0 -31
  476. package/vite.config.ts +0 -56
  477. package/vite.docs.config.ts +0 -33
  478. package/vite.lit-html-plugin.ts +0 -43
@@ -1,111 +0,0 @@
1
- import { LitElement } from 'lit';
2
- import { property } from 'lit/decorators.js';
3
- import { Component } from '../../../../../../lib/lit/component.js';
4
- import { scss } from '../../../../../../lib/lit/scss.js';
5
- import {
6
- SF_LEADERBOARD_PLAYER_AVATAR,
7
- SF_LEADERBOARD_RANK_BADGE,
8
- SF_LEADERBOARD_TABLE,
9
- } from '../../constants/tags.js';
10
- import { SF_LEADERBOARD_PLAYER_SELECT } from '../../types/events.js';
11
- import { sfLeaderboardTheme } from '../../../theme/styles.js';
12
- import type { Player } from '../../types/data.js';
13
- import { formatCurrency } from '../../utils/utils.js';
14
- import '../rank-badge/rank-badge.js';
15
- import '../player-avatar/player-avatar.js';
16
- import type { TableHost } from './table.host.js';
17
- import renderTemplate from './table.html?lit-html';
18
- import styles from './table.scss?inline';
19
-
20
- @Component({ selector: SF_LEADERBOARD_TABLE })
21
- export class SfLeaderboardTable extends LitElement implements TableHost {
22
- static styles = [sfLeaderboardTheme, scss(styles)];
23
-
24
- @property({ type: Array }) players: Player[] = [];
25
-
26
- private handlePlayerClick(player: Player) {
27
- this.dispatchEvent(
28
- new CustomEvent(SF_LEADERBOARD_PLAYER_SELECT, {
29
- detail: player,
30
- bubbles: true,
31
- composed: true,
32
- }),
33
- );
34
- }
35
-
36
- private createStreakCell(player: Player): HTMLElement {
37
- const cell = document.createElement('div');
38
- cell.className = 'col-streak stat-cell streak hide-mobile';
39
- if (player.streak > 0) {
40
- const icon = document.createElement('span');
41
- icon.className = 'icon';
42
- icon.textContent = '🔥';
43
- cell.append(icon, document.createTextNode(String(player.streak)));
44
- } else {
45
- const dash = document.createElement('span');
46
- dash.textContent = '-';
47
- cell.append(dash);
48
- }
49
- return cell;
50
- }
51
-
52
- private createRow(player: Player, index: number): HTMLElement {
53
- const isTop3 = player.rank <= 3;
54
- const highWinRate = player.winRate >= 60;
55
-
56
- const row = document.createElement('div');
57
- row.className = `table-row ${isTop3 ? 'top-3' : ''}`;
58
- row.style.animationDelay = `${index * 50}ms`;
59
- row.addEventListener('click', () => this.handlePlayerClick(player));
60
-
61
- const rankCol = document.createElement('div');
62
- rankCol.className = 'col-rank';
63
- const badge = document.createElement(SF_LEADERBOARD_RANK_BADGE);
64
- badge.rank = player.rank;
65
- badge.previousRank = player.previousRank || player.rank;
66
- badge.size = 'sm';
67
- rankCol.append(badge);
68
-
69
- const playerCol = document.createElement('div');
70
- playerCol.className = 'col-player player-cell';
71
- const avatar = document.createElement(SF_LEADERBOARD_PLAYER_AVATAR);
72
- avatar.username = player.username;
73
- avatar.avatar = player.avatar || '';
74
- avatar.size = 'sm';
75
- avatar.isOnline = player.isOnline;
76
- avatar.highlight = isTop3;
77
- const details = document.createElement('div');
78
- details.className = 'player-details';
79
- const name = document.createElement('div');
80
- name.className = `player-name ${isTop3 ? 'highlight' : ''}`;
81
- name.textContent = player.username;
82
- const level = document.createElement('span');
83
- level.className = 'player-level';
84
- level.textContent = `LVL ${player.level}`;
85
- details.append(name, level);
86
- playerCol.append(avatar, details);
87
-
88
- const gamesCol = document.createElement('div');
89
- gamesCol.className = 'col-games stat-cell hide-mobile';
90
- gamesCol.innerHTML = `<span class="icon">🏆</span>${player.gamesPlayed.toLocaleString()}`;
91
-
92
- const winRateCol = document.createElement('div');
93
- winRateCol.className = `col-win-rate stat-cell win-rate ${highWinRate ? 'high' : ''} hide-mobile`;
94
- winRateCol.innerHTML = `<span class="icon">🎯</span>${player.winRate}%`;
95
-
96
- const winningsCol = document.createElement('div');
97
- winningsCol.className = 'col-winnings winnings-cell';
98
- winningsCol.innerHTML = `<span class="winnings ${isTop3 ? 'highlight' : ''}">${formatCurrency(player.totalWinnings)}</span><span class="chevron">→</span>`;
99
-
100
- row.append(rankCol, playerCol, gamesCol, winRateCol, this.createStreakCell(player), winningsCol);
101
- return row;
102
- }
103
-
104
- renderRows() {
105
- return this.players.map((player, index) => this.createRow(player, index));
106
- }
107
-
108
- render() {
109
- return renderTemplate(this);
110
- }
111
- }
@@ -1,7 +0,0 @@
1
- import type { Category, TimeFrame } from '../types/data.js';
2
-
3
- export const DEFAULT_LB_TITLE = 'Leaderboard';
4
- export const DEFAULT_LB_SUBTITLE = 'Real-time rankings';
5
-
6
- export const DEFAULT_TIMEFRAME: TimeFrame = 'week';
7
- export const DEFAULT_CATEGORY: Category = 'all';
@@ -1,16 +0,0 @@
1
- import type { Category, TimeFrame } from '../types/data.js';
2
-
3
- export const TIMEFRAME_OPTIONS: { label: string; value: TimeFrame }[] = [
4
- { label: 'Today', value: 'today' },
5
- { label: 'This Week', value: 'week' },
6
- { label: 'This Month', value: 'month' },
7
- { label: 'All Time', value: 'all' },
8
- ];
9
-
10
- export const CATEGORY_OPTIONS: { label: string; value: Category }[] = [
11
- { label: 'All Games', value: 'all' },
12
- { label: 'Poker', value: 'poker' },
13
- { label: 'Blackjack', value: 'blackjack' },
14
- { label: 'Roulette', value: 'roulette' },
15
- { label: 'Slots', value: 'slots' },
16
- ];
@@ -1,5 +0,0 @@
1
- export * from './tags.js';
2
- export * from './defaults.js';
3
- export * from './player-stats.js';
4
- export * from './filters.js';
5
- export * from './stats-overview.js';
@@ -1,3 +0,0 @@
1
- export const DEFAULT_PLAYER_STATS_TITLE = 'Your Position';
2
- export const DEFAULT_PLAYER_STATS_MESSAGE = "You're in the top 5% of players!";
3
- export const DEFAULT_PLAYER_STATS_RANK = 42;
@@ -1,38 +0,0 @@
1
- export interface SfLeaderboardOverviewStat {
2
- label: string;
3
- value: string;
4
- icon: string;
5
- trendValue: number;
6
- trendPositive: boolean;
7
- }
8
-
9
- export const DEFAULT_OVERVIEW_STATS: SfLeaderboardOverviewStat[] = [
10
- {
11
- label: 'Total Players',
12
- value: '12,847',
13
- icon: '👥',
14
- trendValue: 12.5,
15
- trendPositive: true,
16
- },
17
- {
18
- label: 'Total Wagered',
19
- value: '$84.2M',
20
- icon: '💰',
21
- trendValue: 8.3,
22
- trendPositive: true,
23
- },
24
- {
25
- label: 'Active Games',
26
- value: '1,247',
27
- icon: '🎮',
28
- trendValue: 3.2,
29
- trendPositive: true,
30
- },
31
- {
32
- label: 'Biggest Win',
33
- value: '$125K',
34
- icon: '⚡',
35
- trendValue: 45.8,
36
- trendPositive: true,
37
- },
38
- ];
@@ -1,16 +0,0 @@
1
- /** Custom element tag names for the sf-leaderboard package. */
2
- export const SF_LEADERBOARD_TAG = 'sf-leaderboard';
3
- export const SF_LEADERBOARD_STAT_CARD = 'sf-leaderboard-stat-card';
4
- export const SF_LEADERBOARD_FILTERS = 'sf-leaderboard-filters';
5
- export const SF_LEADERBOARD_TABLE = 'sf-leaderboard-table';
6
- export const SF_LEADERBOARD_PODIUM = 'sf-leaderboard-podium';
7
- export const SF_LEADERBOARD_ACTIVITY_FEED = 'sf-leaderboard-activity-feed';
8
- export const SF_LEADERBOARD_RANK_BADGE = 'sf-leaderboard-rank-badge';
9
- export const SF_LEADERBOARD_PLAYER_AVATAR = 'sf-leaderboard-player-avatar';
10
- export const SF_LEADERBOARD_PLAYER_STATS_CARD =
11
- 'sf-leaderboard-player-stats-card';
12
- export const SF_LEADERBOARD_HEADER_SECTION = 'sf-leaderboard-header-section';
13
- export const SF_LEADERBOARD_STATS_SECTION = 'sf-leaderboard-stats-section';
14
- export const SF_LEADERBOARD_RANKING_SECTION = 'sf-leaderboard-ranking-section';
15
- export const SF_LEADERBOARD_TABLE_SECTION = 'sf-leaderboard-table-section';
16
- export const SF_LEADERBOARD_FOOTER_SECTION = 'sf-leaderboard-footer-section';
@@ -1,35 +0,0 @@
1
- .section {
2
- margin-bottom: clamp(1.5rem, 5vw, 3rem);
3
- min-width: 0;
4
- }
5
-
6
- .section-header {
7
- display: flex;
8
- align-items: center;
9
- gap: 0.5rem;
10
- margin-bottom: 1rem;
11
- }
12
-
13
- .section-title {
14
- font-size: 1.125rem;
15
- font-weight: 700;
16
- margin: 0;
17
- }
18
-
19
- .elite-badge {
20
- font-size: 0.65rem;
21
- padding: 0.2rem 0.5rem;
22
- border-radius: var(--radius-sm);
23
- background: var(--medal-gold-bg);
24
- border: 1px solid var(--medal-gold-border);
25
- color: var(--gold);
26
- font-weight: 600;
27
- letter-spacing: 0.04em;
28
- text-transform: uppercase;
29
- }
30
-
31
- @media (max-width: 639px) {
32
- .section-title {
33
- font-size: 1rem;
34
- }
35
- }
@@ -1,29 +0,0 @@
1
- export interface Player {
2
- id: string;
3
- username: string;
4
- avatar?: string;
5
- rank: number;
6
- previousRank?: number;
7
- totalWinnings: number;
8
- winRate: number;
9
- gamesPlayed: number;
10
- streak: number;
11
- level: number;
12
- badges: string[];
13
- isOnline?: boolean;
14
- }
15
-
16
- export interface Activity {
17
- id: string;
18
- type: 'win' | 'jackpot' | 'streak' | 'achievement';
19
- player: {
20
- username: string;
21
- avatar?: string;
22
- };
23
- message: string;
24
- amount?: number;
25
- timestamp: Date;
26
- }
27
-
28
- export type TimeFrame = 'today' | 'week' | 'month' | 'all';
29
- export type Category = 'all' | 'poker' | 'blackjack' | 'roulette' | 'slots';
@@ -1,30 +0,0 @@
1
- import type { Category, Player, TimeFrame } from './data.js';
2
-
3
- export const SF_LEADERBOARD_TIMEFRAME_CHANGE = 'timeframe-change';
4
- export const SF_LEADERBOARD_CATEGORY_CHANGE = 'category-change';
5
- export const SF_LEADERBOARD_SEARCH_CHANGE = 'search-change';
6
- export const SF_LEADERBOARD_PLAYER_SELECT = 'player-select';
7
- export const SF_LEADERBOARD_REFRESH = 'refresh';
8
- export const SF_LEADERBOARD_VIEW_STATS = 'view-stats';
9
-
10
- export interface SfLeaderboardRefreshDetail {
11
- /** Optional hook for clients that batch refresh with timeframe/category. */
12
- timeframe: TimeFrame;
13
- category: Category;
14
- }
15
-
16
- export interface SfLeaderboardTimeframeChangeDetail {
17
- timeframe: TimeFrame;
18
- }
19
-
20
- export interface SfLeaderboardCategoryChangeDetail {
21
- category: Category;
22
- }
23
-
24
- export interface SfLeaderboardSearchChangeDetail {
25
- query: string;
26
- }
27
-
28
- export interface SfLeaderboardPlayerSelectDetail {
29
- player: Player;
30
- }
@@ -1,3 +0,0 @@
1
- export type PlayerStatsPlacement = 'left' | 'right';
2
-
3
- export type PlayerStatsRegion = 'top-champions' | 'rankings';
@@ -1,100 +0,0 @@
1
- import type { Category, Player, TimeFrame } from './data.js';
2
-
3
- /** Top bar: title, optional subtitle, live badge, back control. Omit `header` to hide. */
4
- export interface SfLeaderboardHeaderSection {
5
- title: string;
6
- subtitle?: string;
7
- icon?: string;
8
- showLive?: boolean;
9
- /** When set, renders the back button (`label` defaults to "Back"). */
10
- backButton?: {
11
- label?: string;
12
- };
13
- isRefreshing?: boolean;
14
- }
15
-
16
- /** One overview tile (`sf-leaderboard-stat-card`). */
17
- export interface SfLeaderboardStatItem {
18
- label: string;
19
- value: string;
20
- icon: string;
21
- trendValue?: number;
22
- trendPositive?: boolean;
23
- }
24
-
25
- /**
26
- * Overview stat cards (2×2 grid, 4-across on wide screens).
27
- * Omit `stats` to hide the whole section.
28
- */
29
- export interface SfLeaderboardStatsSection {
30
- title?: string;
31
- items: SfLeaderboardStatItem[];
32
- }
33
-
34
- /** Podium block inside `ranking` (left column). Omit to hide podium. */
35
- export interface SfLeaderboardPodiumSection {
36
- title?: string;
37
- badge?: string;
38
- players: Player[];
39
- }
40
-
41
- /** Player stats block inside `ranking` (right column). Omit to hide. */
42
- export interface SfLeaderboardPlayerStatsSection {
43
- title?: string;
44
- rank: number;
45
- percentile?: number;
46
- message?: string;
47
- username?: string;
48
- earnings?: string;
49
- winRate?: number;
50
- gamesPlayed?: number;
51
- winStreak?: number;
52
- level?: number;
53
- }
54
-
55
- /**
56
- * Ranking row: podium (left) + player stats (right).
57
- * Omit `ranking` entirely to hide the whole section.
58
- */
59
- export interface SfLeaderboardRankingSection {
60
- podium?: SfLeaderboardPodiumSection;
61
- playerStats?: SfLeaderboardPlayerStatsSection;
62
- }
63
-
64
- /** Filters bar for the table. Omit on `table` to hide filters UI. */
65
- export interface SfLeaderboardTableFiltersSection {
66
- searchQuery?: string;
67
- timeframe?: TimeFrame;
68
- category?: Category;
69
- }
70
-
71
- /**
72
- * Rankings table (bottom). Omit `table` to hide.
73
- */
74
- export interface SfLeaderboardTableSection {
75
- title?: string;
76
- subtitle?: string;
77
- players: Player[];
78
- filters?: SfLeaderboardTableFiltersSection;
79
- footer?: {
80
- text?: string;
81
- };
82
- }
83
-
84
- /** Page footer (below table). Omit `footer` to hide. */
85
- export interface SfLeaderboardFooterSection {
86
- text: string;
87
- }
88
-
89
- /**
90
- * Layout config for `<sf-leaderboard>`.
91
- * Only keys you pass are rendered, in order:
92
- * header → stats → ranking → table → footer.
93
- */
94
- export interface SfLeaderboardLayout {
95
- header?: SfLeaderboardHeaderSection;
96
- stats?: SfLeaderboardStatsSection;
97
- ranking?: SfLeaderboardRankingSection;
98
- table?: SfLeaderboardTableSection;
99
- footer?: SfLeaderboardFooterSection;
100
- }
@@ -1,17 +0,0 @@
1
- export function formatCurrency(amount: number): string {
2
- if (amount >= 1000000) return `$${(amount / 1000000).toFixed(2)}M`;
3
- if (amount >= 1000) return `$${(amount / 1000).toFixed(1)}K`;
4
- return `$${amount.toFixed(2)}`;
5
- }
6
-
7
- export function formatTime(date: Date): string {
8
- const now = new Date();
9
- const diff = Math.floor((now.getTime() - date.getTime()) / 1000);
10
- if (diff < 60) return `${diff}s ago`;
11
- if (diff < 3600) return `${Math.floor(diff / 60)}m ago`;
12
- return `${Math.floor(diff / 3600)}h ago`;
13
- }
14
-
15
- export function getInitials(name: string): string {
16
- return name.slice(0, 2).toUpperCase();
17
- }
@@ -1,54 +0,0 @@
1
- # Theming
2
-
3
- ## Folder layout
4
-
5
- ```
6
- src/
7
- components/sf-leaderboard/ # Lit UI (podium, table, demo, package index)
8
- old-components/ # Legacy packages (streaks, v1/v2 leaderboard, …)
9
- theme/
10
- themes/*.theme.json # Brand JSON files
11
- load-theme.ts # fetch + parse JSON
12
- inject-theme.ts # write CSS vars to DOM (:root)
13
- theme-to-css-vars.ts # theme object → --color-* map
14
- scss/_colors.scss # map-get / color.base(1) helpers
15
- scss/shared.scss # semantic aliases + .card rules
16
- sf-leaderboard/ # package API: data, constants, demo, types
17
- ```
18
-
19
- ## Flow (required order)
20
-
21
- 1. **Load** — `const theme = await loadThemeFromJson('/src/theme/themes/fallback.json')`
22
- 2. **Inject** — `injectTheme(theme)` → sets variables on `document.documentElement`
23
- 3. **Style** — SCSS uses `@use 'colors' as c` and `color.base(1)` → `var(--color-base-1, fallback)`
24
-
25
- Variables inherit into every component shadow root automatically.
26
-
27
- ## SCSS
28
-
29
- ```scss
30
- @use 'colors' as color;
31
-
32
- .panel {
33
- background: color.base(2);
34
- color: color.primary(1);
35
- border-color: color.place-first-icon();
36
- }
37
- ```
38
-
39
- Vite `loadPaths` includes `src/theme/scss` so `@use 'colors'` resolves to `_colors.scss`.
40
-
41
- ## Client
42
-
43
- ```ts
44
- import {
45
- loadThemeFromJson,
46
- injectTheme,
47
- parseThemeJson,
48
- } from '@skinforge/sf-leaderboard';
49
-
50
- const theme = await loadThemeFromJson('/assets/themes/brand.theme.json');
51
- injectTheme(theme);
52
- ```
53
-
54
- Demo loads `themes/fallback.json` on mount (see `components/sf-leaderboard/demo/main.ts`).
@@ -1,16 +0,0 @@
1
- import { DEFAULT_SF_LEADERBOARD_THEME } from './default-theme.js';
2
- import type { SfLeaderboardTheme } from './types.js';
3
-
4
- let activeTheme: SfLeaderboardTheme = DEFAULT_SF_LEADERBOARD_THEME;
5
-
6
- export function setActiveTheme(theme: SfLeaderboardTheme): void {
7
- activeTheme = theme;
8
- }
9
-
10
- export function getActiveTheme(): SfLeaderboardTheme {
11
- return activeTheme;
12
- }
13
-
14
- export function getThemeLabel(key: string, fallback: string): string {
15
- return activeTheme.labels?.[key] ?? fallback;
16
- }
@@ -1,4 +0,0 @@
1
- import defaultThemeJson from '../../../../../../shared/sf-leaderboard/themes/fallback.json';
2
- import type { SfLeaderboardTheme } from './types.js';
3
-
4
- export const DEFAULT_SF_LEADERBOARD_THEME = defaultThemeJson as SfLeaderboardTheme;
@@ -1,25 +0,0 @@
1
- /** `#RRGGBB` or `#RGB` → `r, g, b` for use in `rgba(var(--x-rgb), α)`. */
2
- export function hexToRgbChannels(hex: string): string | null {
3
- const normalized = hex.trim().replace(/^#/, '');
4
- if (!/^[0-9a-fA-F]{3,8}$/.test(normalized)) {
5
- return null;
6
- }
7
-
8
- let r: number;
9
- let g: number;
10
- let b: number;
11
-
12
- if (normalized.length === 3) {
13
- r = parseInt(normalized[0] + normalized[0], 16);
14
- g = parseInt(normalized[1] + normalized[1], 16);
15
- b = parseInt(normalized[2] + normalized[2], 16);
16
- } else if (normalized.length === 6) {
17
- r = parseInt(normalized.slice(0, 2), 16);
18
- g = parseInt(normalized.slice(2, 4), 16);
19
- b = parseInt(normalized.slice(4, 6), 16);
20
- } else {
21
- return null;
22
- }
23
-
24
- return `${r}, ${g}, ${b}`;
25
- }
@@ -1,18 +0,0 @@
1
- export type {
2
- SfLeaderboardTheme,
3
- SfLeaderboardPaletteTheme,
4
- SfLeaderboardPlacementTheme,
5
- SfLeaderboardTableColumnTheme,
6
- SfLeaderboardTypographyTheme,
7
- TableColumnId,
8
- ColorBaseStep,
9
- ColorPrimaryStep,
10
- } from './types.js';
11
-
12
- export { sfLeaderboardTheme } from './styles.js';
13
- export { loadThemeFromJson, parseThemeJson } from './load-theme.js';
14
- export { injectTheme, clearTheme } from './inject-theme.js';
15
- export { getActiveTheme, getThemeLabel, setActiveTheme } from './context.js';
16
- export { mergeSfLeaderboardTheme } from './merge-theme.js';
17
- export { themeToCssVars } from './theme-to-css-vars.js';
18
- export { DEFAULT_SF_LEADERBOARD_THEME } from './default-theme.js';
@@ -1,39 +0,0 @@
1
- import { setActiveTheme } from './context.js';
2
- import { themeToCssVars } from './theme-to-css-vars.js';
3
- import type { SfLeaderboardTheme } from './types.js';
4
-
5
- const THEME_ATTR = 'data-sf-theme';
6
-
7
- /**
8
- * Injects theme CSS variables into the DOM so every component shadow root inherits them.
9
- * Default target is `document.documentElement` (:root).
10
- */
11
- export function injectTheme(
12
- theme: SfLeaderboardTheme,
13
- root: HTMLElement = document.documentElement,
14
- ): void {
15
- const vars = themeToCssVars(theme);
16
- root.setAttribute(THEME_ATTR, theme.id);
17
- setActiveTheme(theme);
18
-
19
- for (const [key, value] of Object.entries(vars)) {
20
- root.style.setProperty(key, value);
21
- }
22
- }
23
-
24
- /** Removes theme variables injected on a DOM node. */
25
- export function clearTheme(
26
- root: HTMLElement = document.documentElement,
27
- ): void {
28
- root.removeAttribute(THEME_ATTR);
29
- const toRemove: string[] = [];
30
- for (let i = 0; i < root.style.length; i++) {
31
- const name = root.style.item(i);
32
- if (name.startsWith('--color-') || name.startsWith('--place-') || name.startsWith('--table-col-') || name.startsWith('--font-')) {
33
- toRemove.push(name);
34
- }
35
- }
36
- for (const name of toRemove) {
37
- root.style.removeProperty(name);
38
- }
39
- }
@@ -1,26 +0,0 @@
1
- import { mergeSfLeaderboardTheme } from './merge-theme.js';
2
- import { DEFAULT_SF_LEADERBOARD_THEME } from './default-theme.js';
3
- import type { SfLeaderboardTheme } from './types.js';
4
-
5
- /** Load theme JSON from a URL (dev server, CDN, CMS). */
6
- export async function loadThemeFromJson(url: string): Promise<SfLeaderboardTheme> {
7
- const response = await fetch(url);
8
- if (!response.ok) {
9
- throw new Error(`Failed to load theme: ${response.status} ${url}`);
10
- }
11
- const json: unknown = await response.json();
12
- return parseThemeJson(json);
13
- }
14
-
15
- /** Parse theme JSON already fetched or bundled. Supports `{ theme: {…} }` or flat root. */
16
- export function parseThemeJson(json: unknown): SfLeaderboardTheme {
17
- if (!json || typeof json !== 'object') {
18
- throw new Error('Invalid theme JSON: expected an object');
19
- }
20
- const root = json as Record<string, unknown>;
21
- const payload = (root.theme ?? root) as Partial<SfLeaderboardTheme>;
22
- if (!payload.palette || !payload.placement || !payload.typography) {
23
- throw new Error('Invalid theme JSON: missing palette, placement, or typography');
24
- }
25
- return mergeSfLeaderboardTheme(DEFAULT_SF_LEADERBOARD_THEME, payload);
26
- }
@@ -1,59 +0,0 @@
1
- import type { SfLeaderboardTheme } from './types.js';
2
-
3
- function isPlainObject(value: unknown): value is Record<string, unknown> {
4
- return typeof value === 'object' && value !== null && !Array.isArray(value);
5
- }
6
-
7
- /** Deep-merge client theme onto defaults (client wins). */
8
- export function mergeSfLeaderboardTheme(
9
- base: SfLeaderboardTheme,
10
- overrides?: Partial<SfLeaderboardTheme> | null,
11
- ): SfLeaderboardTheme {
12
- if (!overrides) {
13
- return base;
14
- }
15
-
16
- const result = structuredClone(base);
17
-
18
- if (overrides.id) result.id = overrides.id;
19
- if (overrides.name) result.name = overrides.name;
20
- if (overrides.labels) {
21
- result.labels = { ...result.labels, ...overrides.labels };
22
- }
23
-
24
- if (overrides.palette) {
25
- result.palette = {
26
- ...result.palette,
27
- ...overrides.palette,
28
- base: { ...result.palette.base, ...overrides.palette.base },
29
- primary: { ...result.palette.primary, ...overrides.palette.primary },
30
- semantic: { ...result.palette.semantic, ...overrides.palette.semantic },
31
- surface: { ...result.palette.surface, ...overrides.palette.surface },
32
- };
33
- }
34
-
35
- if (overrides.typography) {
36
- result.typography = { ...result.typography, ...overrides.typography };
37
- }
38
-
39
- if (overrides.placement) {
40
- result.placement = {
41
- first: { ...result.placement.first, ...overrides.placement.first },
42
- second: { ...result.placement.second, ...overrides.placement.second },
43
- third: { ...result.placement.third, ...overrides.placement.third },
44
- };
45
- }
46
-
47
- if (overrides.table?.columns) {
48
- for (const [key, value] of Object.entries(overrides.table.columns)) {
49
- if (!isPlainObject(value)) continue;
50
- const existing = result.table.columns[key as keyof typeof result.table.columns];
51
- result.table.columns[key as keyof typeof result.table.columns] = {
52
- ...existing,
53
- ...value,
54
- } as (typeof result.table.columns)[keyof typeof result.table.columns];
55
- }
56
- }
57
-
58
- return result;
59
- }