@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
@@ -1,1669 +0,0 @@
1
- const We = "sf-leaderboard-default", Ye = { base: { 1: "#161a26", 2: "#12151f", 3: "#0a0c14", 4: "#060810" }, primary: { 1: "#00d4ff", 2: "#00e5ff", 3: "linear-gradient(135deg, #00d4ff 0%, #00e5ff 100%)" }, semantic: { success: "#00d26a", warning: "#ffa502", error: "#ff4757", informative: "#2388fb" }, neutral: "#f0f0f5", surface: { divider: "rgba(42, 47, 66, 0.55)", muted: "#808090", successBright: "#15bf81" } }, Ge = { primary: "'Inter', system-ui, -apple-system, sans-serif", secondary: "'Inter', system-ui, -apple-system, sans-serif", mono: "'JetBrains Mono', monospace" }, qe = { first: { tableIcon: "#ffd700", podiumSlot: "#ffd700", podiumNumber: "#ffd700" }, second: { tableIcon: "#c0c0c0", podiumSlot: "#c0c0c0", podiumNumber: "#c0c0c0" }, third: { tableIcon: "#cd7f32", podiumSlot: "#cd7f32", podiumNumber: "#cd7f32" } }, Ke = { columns: { rank: { enabled: !1 }, player: { enabled: !1 }, games: { enabled: !1 }, winRate: { enabled: !1 }, streak: { enabled: !1 }, winnings: { enabled: !1 } } }, Qe = {
2
- id: We,
3
- palette: Ye,
4
- typography: Ge,
5
- placement: qe,
6
- table: Ke
7
- }, Je = Qe;
8
- function Ze(t) {
9
- const e = t.trim().replace(/^#/, "");
10
- if (!/^[0-9a-fA-F]{3,8}$/.test(e))
11
- return null;
12
- let r, i, a;
13
- if (e.length === 3)
14
- r = parseInt(e[0] + e[0], 16), i = parseInt(e[1] + e[1], 16), a = parseInt(e[2] + e[2], 16);
15
- else if (e.length === 6)
16
- r = parseInt(e.slice(0, 2), 16), i = parseInt(e.slice(2, 4), 16), a = parseInt(e.slice(4, 6), 16);
17
- else
18
- return null;
19
- return `${r}, ${i}, ${a}`;
20
- }
21
- const Xe = [
22
- "rank",
23
- "player",
24
- "games",
25
- "winRate",
26
- "streak",
27
- "winnings"
28
- ];
29
- function N(t, e, r) {
30
- if (!r || r.includes("gradient"))
31
- return;
32
- const i = Ze(r);
33
- i && (t[`${e}-rgb`] = i);
34
- }
35
- function et(t) {
36
- const { palette: e, typography: r, placement: i, table: a } = t, n = {};
37
- for (const c of ["1", "2", "3", "4"])
38
- n[`--color-base-${c}`] = e.base[c];
39
- for (const c of ["1", "2", "3"])
40
- n[`--color-primary-${c}`] = e.primary[c];
41
- n["--color-success"] = e.semantic.success, n["--color-warning"] = e.semantic.warning, n["--color-error"] = e.semantic.error, e.semantic.informative && (n["--color-informative"] = e.semantic.informative), n["--color-neutral"] = e.neutral, n["--color-surface-divider"] = e.surface.divider, n["--color-surface-muted"] = e.surface.muted, e.surface.successBright && (n["--color-surface-success-bright"] = e.surface.successBright), n["--font-primary"] = r.primary, n["--font-secondary"] = r.secondary, r.mono && (n["--font-mono"] = r.mono);
42
- const s = [
43
- ["first", i.first],
44
- ["second", i.second],
45
- ["third", i.third]
46
- ];
47
- for (const [c, l] of s)
48
- n[`--place-${c}-table-icon`] = l.tableIcon, n[`--place-${c}-podium-slot`] = l.podiumSlot, n[`--place-${c}-podium-number`] = l.podiumNumber, N(n, `--place-${c}-table-icon`, l.tableIcon);
49
- N(n, "--color-primary-1", e.primary[1]), N(n, "--color-success", e.semantic.success), N(n, "--color-warning", e.semantic.warning), N(n, "--color-error", e.semantic.error);
50
- for (const c of Xe) {
51
- const l = a.columns[c];
52
- if (!l?.enabled)
53
- continue;
54
- const h = c.replace(/[A-Z]/g, (g) => `-${g.toLowerCase()}`);
55
- l.color && (n[`--table-col-${h}-color`] = l.color), l.fontSize && (n[`--table-col-${h}-font-size`] = l.fontSize);
56
- }
57
- return n;
58
- }
59
- const tt = "data-sf-theme";
60
- function rt(t, e = document.documentElement) {
61
- const r = et(t);
62
- e.setAttribute(tt, t.id);
63
- for (const [i, a] of Object.entries(r))
64
- e.style.setProperty(i, a);
65
- }
66
- const X = globalThis, pe = X.ShadowRoot && (X.ShadyCSS === void 0 || X.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, Oe = /* @__PURE__ */ Symbol(), ye = /* @__PURE__ */ new WeakMap();
67
- let at = class {
68
- constructor(e, r, i) {
69
- if (this._$cssResult$ = !0, i !== Oe) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
70
- this.cssText = e, this.t = r;
71
- }
72
- get styleSheet() {
73
- let e = this.o;
74
- const r = this.t;
75
- if (pe && e === void 0) {
76
- const i = r !== void 0 && r.length === 1;
77
- i && (e = ye.get(r)), e === void 0 && ((this.o = e = new CSSStyleSheet()).replaceSync(this.cssText), i && ye.set(r, e));
78
- }
79
- return e;
80
- }
81
- toString() {
82
- return this.cssText;
83
- }
84
- };
85
- const Te = (t) => new at(typeof t == "string" ? t : t + "", void 0, Oe), it = (t, e) => {
86
- if (pe) t.adoptedStyleSheets = e.map((r) => r instanceof CSSStyleSheet ? r : r.styleSheet);
87
- else for (const r of e) {
88
- const i = document.createElement("style"), a = X.litNonce;
89
- a !== void 0 && i.setAttribute("nonce", a), i.textContent = r.cssText, t.appendChild(i);
90
- }
91
- }, $e = pe ? (t) => t : (t) => t instanceof CSSStyleSheet ? ((e) => {
92
- let r = "";
93
- for (const i of e.cssRules) r += i.cssText;
94
- return Te(r);
95
- })(t) : t;
96
- const { is: nt, defineProperty: st, getOwnPropertyDescriptor: ot, getOwnPropertyNames: lt, getOwnPropertySymbols: ct, getPrototypeOf: dt } = Object, k = globalThis, _e = k.trustedTypes, pt = _e ? _e.emptyScript : "", mt = k.reactiveElementPolyfillSupport, I = (t, e) => t, ee = { toAttribute(t, e) {
97
- switch (e) {
98
- case Boolean:
99
- t = t ? pt : null;
100
- break;
101
- case Object:
102
- case Array:
103
- t = t == null ? t : JSON.stringify(t);
104
- }
105
- return t;
106
- }, fromAttribute(t, e) {
107
- let r = t;
108
- switch (e) {
109
- case Boolean:
110
- r = t !== null;
111
- break;
112
- case Number:
113
- r = t === null ? null : Number(t);
114
- break;
115
- case Object:
116
- case Array:
117
- try {
118
- r = JSON.parse(t);
119
- } catch {
120
- r = null;
121
- }
122
- }
123
- return r;
124
- } }, me = (t, e) => !nt(t, e), ke = { attribute: !0, type: String, converter: ee, reflect: !1, useDefault: !1, hasChanged: me };
125
- Symbol.metadata ?? (Symbol.metadata = /* @__PURE__ */ Symbol("metadata")), k.litPropertyMetadata ?? (k.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
126
- let O = class extends HTMLElement {
127
- static addInitializer(e) {
128
- this._$Ei(), (this.l ?? (this.l = [])).push(e);
129
- }
130
- static get observedAttributes() {
131
- return this.finalize(), this._$Eh && [...this._$Eh.keys()];
132
- }
133
- static createProperty(e, r = ke) {
134
- if (r.state && (r.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(e) && ((r = Object.create(r)).wrapped = !0), this.elementProperties.set(e, r), !r.noAccessor) {
135
- const i = /* @__PURE__ */ Symbol(), a = this.getPropertyDescriptor(e, i, r);
136
- a !== void 0 && st(this.prototype, e, a);
137
- }
138
- }
139
- static getPropertyDescriptor(e, r, i) {
140
- const { get: a, set: n } = ot(this.prototype, e) ?? { get() {
141
- return this[r];
142
- }, set(s) {
143
- this[r] = s;
144
- } };
145
- return { get: a, set(s) {
146
- const c = a?.call(this);
147
- n?.call(this, s), this.requestUpdate(e, c, i);
148
- }, configurable: !0, enumerable: !0 };
149
- }
150
- static getPropertyOptions(e) {
151
- return this.elementProperties.get(e) ?? ke;
152
- }
153
- static _$Ei() {
154
- if (this.hasOwnProperty(I("elementProperties"))) return;
155
- const e = dt(this);
156
- e.finalize(), e.l !== void 0 && (this.l = [...e.l]), this.elementProperties = new Map(e.elementProperties);
157
- }
158
- static finalize() {
159
- if (this.hasOwnProperty(I("finalized"))) return;
160
- if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(I("properties"))) {
161
- const r = this.properties, i = [...lt(r), ...ct(r)];
162
- for (const a of i) this.createProperty(a, r[a]);
163
- }
164
- const e = this[Symbol.metadata];
165
- if (e !== null) {
166
- const r = litPropertyMetadata.get(e);
167
- if (r !== void 0) for (const [i, a] of r) this.elementProperties.set(i, a);
168
- }
169
- this._$Eh = /* @__PURE__ */ new Map();
170
- for (const [r, i] of this.elementProperties) {
171
- const a = this._$Eu(r, i);
172
- a !== void 0 && this._$Eh.set(a, r);
173
- }
174
- this.elementStyles = this.finalizeStyles(this.styles);
175
- }
176
- static finalizeStyles(e) {
177
- const r = [];
178
- if (Array.isArray(e)) {
179
- const i = new Set(e.flat(1 / 0).reverse());
180
- for (const a of i) r.unshift($e(a));
181
- } else e !== void 0 && r.push($e(e));
182
- return r;
183
- }
184
- static _$Eu(e, r) {
185
- const i = r.attribute;
186
- return i === !1 ? void 0 : typeof i == "string" ? i : typeof e == "string" ? e.toLowerCase() : void 0;
187
- }
188
- constructor() {
189
- super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
190
- }
191
- _$Ev() {
192
- this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach((e) => e(this));
193
- }
194
- addController(e) {
195
- (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(e), this.renderRoot !== void 0 && this.isConnected && e.hostConnected?.();
196
- }
197
- removeController(e) {
198
- this._$EO?.delete(e);
199
- }
200
- _$E_() {
201
- const e = /* @__PURE__ */ new Map(), r = this.constructor.elementProperties;
202
- for (const i of r.keys()) this.hasOwnProperty(i) && (e.set(i, this[i]), delete this[i]);
203
- e.size > 0 && (this._$Ep = e);
204
- }
205
- createRenderRoot() {
206
- const e = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
207
- return it(e, this.constructor.elementStyles), e;
208
- }
209
- connectedCallback() {
210
- this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), this._$EO?.forEach((e) => e.hostConnected?.());
211
- }
212
- enableUpdating(e) {
213
- }
214
- disconnectedCallback() {
215
- this._$EO?.forEach((e) => e.hostDisconnected?.());
216
- }
217
- attributeChangedCallback(e, r, i) {
218
- this._$AK(e, i);
219
- }
220
- _$ET(e, r) {
221
- const i = this.constructor.elementProperties.get(e), a = this.constructor._$Eu(e, i);
222
- if (a !== void 0 && i.reflect === !0) {
223
- const n = (i.converter?.toAttribute !== void 0 ? i.converter : ee).toAttribute(r, i.type);
224
- this._$Em = e, n == null ? this.removeAttribute(a) : this.setAttribute(a, n), this._$Em = null;
225
- }
226
- }
227
- _$AK(e, r) {
228
- const i = this.constructor, a = i._$Eh.get(e);
229
- if (a !== void 0 && this._$Em !== a) {
230
- const n = i.getPropertyOptions(a), s = typeof n.converter == "function" ? { fromAttribute: n.converter } : n.converter?.fromAttribute !== void 0 ? n.converter : ee;
231
- this._$Em = a;
232
- const c = s.fromAttribute(r, n.type);
233
- this[a] = c ?? this._$Ej?.get(a) ?? c, this._$Em = null;
234
- }
235
- }
236
- requestUpdate(e, r, i, a = !1, n) {
237
- if (e !== void 0) {
238
- const s = this.constructor;
239
- if (a === !1 && (n = this[e]), i ?? (i = s.getPropertyOptions(e)), !((i.hasChanged ?? me)(n, r) || i.useDefault && i.reflect && n === this._$Ej?.get(e) && !this.hasAttribute(s._$Eu(e, i)))) return;
240
- this.C(e, r, i);
241
- }
242
- this.isUpdatePending === !1 && (this._$ES = this._$EP());
243
- }
244
- C(e, r, { useDefault: i, reflect: a, wrapped: n }, s) {
245
- i && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(e) && (this._$Ej.set(e, s ?? r ?? this[e]), n !== !0 || s !== void 0) || (this._$AL.has(e) || (this.hasUpdated || i || (r = void 0), this._$AL.set(e, r)), a === !0 && this._$Em !== e && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(e));
246
- }
247
- async _$EP() {
248
- this.isUpdatePending = !0;
249
- try {
250
- await this._$ES;
251
- } catch (r) {
252
- Promise.reject(r);
253
- }
254
- const e = this.scheduleUpdate();
255
- return e != null && await e, !this.isUpdatePending;
256
- }
257
- scheduleUpdate() {
258
- return this.performUpdate();
259
- }
260
- performUpdate() {
261
- if (!this.isUpdatePending) return;
262
- if (!this.hasUpdated) {
263
- if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
264
- for (const [a, n] of this._$Ep) this[a] = n;
265
- this._$Ep = void 0;
266
- }
267
- const i = this.constructor.elementProperties;
268
- if (i.size > 0) for (const [a, n] of i) {
269
- const { wrapped: s } = n, c = this[a];
270
- s !== !0 || this._$AL.has(a) || c === void 0 || this.C(a, void 0, n, c);
271
- }
272
- }
273
- let e = !1;
274
- const r = this._$AL;
275
- try {
276
- e = this.shouldUpdate(r), e ? (this.willUpdate(r), this._$EO?.forEach((i) => i.hostUpdate?.()), this.update(r)) : this._$EM();
277
- } catch (i) {
278
- throw e = !1, this._$EM(), i;
279
- }
280
- e && this._$AE(r);
281
- }
282
- willUpdate(e) {
283
- }
284
- _$AE(e) {
285
- this._$EO?.forEach((r) => r.hostUpdated?.()), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(e)), this.updated(e);
286
- }
287
- _$EM() {
288
- this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
289
- }
290
- get updateComplete() {
291
- return this.getUpdateComplete();
292
- }
293
- getUpdateComplete() {
294
- return this._$ES;
295
- }
296
- shouldUpdate(e) {
297
- return !0;
298
- }
299
- update(e) {
300
- this._$Eq && (this._$Eq = this._$Eq.forEach((r) => this._$ET(r, this[r]))), this._$EM();
301
- }
302
- updated(e) {
303
- }
304
- firstUpdated(e) {
305
- }
306
- };
307
- O.elementStyles = [], O.shadowRootOptions = { mode: "open" }, O[I("elementProperties")] = /* @__PURE__ */ new Map(), O[I("finalized")] = /* @__PURE__ */ new Map(), mt?.({ ReactiveElement: O }), (k.reactiveElementVersions ?? (k.reactiveElementVersions = [])).push("2.1.2");
308
- const M = globalThis, Ae = (t) => t, te = M.trustedTypes, Ee = te ? te.createPolicy("lit-html", { createHTML: (t) => t }) : void 0, De = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, Le = "?" + _, ht = `<${Le}>`, z = document, H = () => z.createComment(""), V = (t) => t === null || typeof t != "object" && typeof t != "function", he = Array.isArray, gt = (t) => he(t) || typeof t?.[Symbol.iterator] == "function", de = `[
309
- \f\r]`, U = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, Se = /-->/g, Pe = />/g, S = RegExp(`>|${de}(?:([^\\s"'>=/]+)(${de}*=${de}*(?:[^
310
- \f\r"'\`<>=]|("|')|))|$)`, "g"), ze = /'/g, Ce = /"/g, je = /^(?:script|style|textarea|title)$/i, ut = (t) => (e, ...r) => ({ _$litType$: t, strings: e, values: r }), o = ut(1), T = /* @__PURE__ */ Symbol.for("lit-noChange"), d = /* @__PURE__ */ Symbol.for("lit-nothing"), Re = /* @__PURE__ */ new WeakMap(), P = z.createTreeWalker(z, 129);
311
- function Be(t, e) {
312
- if (!he(t) || !t.hasOwnProperty("raw")) throw Error("invalid template strings array");
313
- return Ee !== void 0 ? Ee.createHTML(e) : e;
314
- }
315
- const ft = (t, e) => {
316
- const r = t.length - 1, i = [];
317
- let a, n = e === 2 ? "<svg>" : e === 3 ? "<math>" : "", s = U;
318
- for (let c = 0; c < r; c++) {
319
- const l = t[c];
320
- let h, g, m = -1, w = 0;
321
- for (; w < l.length && (s.lastIndex = w, g = s.exec(l), g !== null); ) w = s.lastIndex, s === U ? g[1] === "!--" ? s = Se : g[1] !== void 0 ? s = Pe : g[2] !== void 0 ? (je.test(g[2]) && (a = RegExp("</" + g[2], "g")), s = S) : g[3] !== void 0 && (s = S) : s === S ? g[0] === ">" ? (s = a ?? U, m = -1) : g[1] === void 0 ? m = -2 : (m = s.lastIndex - g[2].length, h = g[1], s = g[3] === void 0 ? S : g[3] === '"' ? Ce : ze) : s === Ce || s === ze ? s = S : s === Se || s === Pe ? s = U : (s = S, a = void 0);
322
- const $ = s === S && t[c + 1].startsWith("/>") ? " " : "";
323
- n += s === U ? l + ht : m >= 0 ? (i.push(h), l.slice(0, m) + De + l.slice(m) + _ + $) : l + _ + (m === -2 ? c : $);
324
- }
325
- return [Be(t, n + (t[r] || "<?>") + (e === 2 ? "</svg>" : e === 3 ? "</math>" : "")), i];
326
- };
327
- class W {
328
- constructor({ strings: e, _$litType$: r }, i) {
329
- let a;
330
- this.parts = [];
331
- let n = 0, s = 0;
332
- const c = e.length - 1, l = this.parts, [h, g] = ft(e, r);
333
- if (this.el = W.createElement(h, i), P.currentNode = this.el.content, r === 2 || r === 3) {
334
- const m = this.el.content.firstChild;
335
- m.replaceWith(...m.childNodes);
336
- }
337
- for (; (a = P.nextNode()) !== null && l.length < c; ) {
338
- if (a.nodeType === 1) {
339
- if (a.hasAttributes()) for (const m of a.getAttributeNames()) if (m.endsWith(De)) {
340
- const w = g[s++], $ = a.getAttribute(m).split(_), Z = /([.?@])?(.*)/.exec(w);
341
- l.push({ type: 1, index: n, name: Z[2], strings: $, ctor: Z[1] === "." ? bt : Z[1] === "?" ? xt : Z[1] === "@" ? wt : le }), a.removeAttribute(m);
342
- } else m.startsWith(_) && (l.push({ type: 6, index: n }), a.removeAttribute(m));
343
- if (je.test(a.tagName)) {
344
- const m = a.textContent.split(_), w = m.length - 1;
345
- if (w > 0) {
346
- a.textContent = te ? te.emptyScript : "";
347
- for (let $ = 0; $ < w; $++) a.append(m[$], H()), P.nextNode(), l.push({ type: 2, index: ++n });
348
- a.append(m[w], H());
349
- }
350
- }
351
- } else if (a.nodeType === 8) if (a.data === Le) l.push({ type: 2, index: n });
352
- else {
353
- let m = -1;
354
- for (; (m = a.data.indexOf(_, m + 1)) !== -1; ) l.push({ type: 7, index: n }), m += _.length - 1;
355
- }
356
- n++;
357
- }
358
- }
359
- static createElement(e, r) {
360
- const i = z.createElement("template");
361
- return i.innerHTML = e, i;
362
- }
363
- }
364
- function D(t, e, r = t, i) {
365
- if (e === T) return e;
366
- let a = i !== void 0 ? r._$Co?.[i] : r._$Cl;
367
- const n = V(e) ? void 0 : e._$litDirective$;
368
- return a?.constructor !== n && (a?._$AO?.(!1), n === void 0 ? a = void 0 : (a = new n(t), a._$AT(t, r, i)), i !== void 0 ? (r._$Co ?? (r._$Co = []))[i] = a : r._$Cl = a), a !== void 0 && (e = D(t, a._$AS(t, e.values), a, i)), e;
369
- }
370
- class vt {
371
- constructor(e, r) {
372
- this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = r;
373
- }
374
- get parentNode() {
375
- return this._$AM.parentNode;
376
- }
377
- get _$AU() {
378
- return this._$AM._$AU;
379
- }
380
- u(e) {
381
- const { el: { content: r }, parts: i } = this._$AD, a = (e?.creationScope ?? z).importNode(r, !0);
382
- P.currentNode = a;
383
- let n = P.nextNode(), s = 0, c = 0, l = i[0];
384
- for (; l !== void 0; ) {
385
- if (s === l.index) {
386
- let h;
387
- l.type === 2 ? h = new q(n, n.nextSibling, this, e) : l.type === 1 ? h = new l.ctor(n, l.name, l.strings, this, e) : l.type === 6 && (h = new yt(n, this, e)), this._$AV.push(h), l = i[++c];
388
- }
389
- s !== l?.index && (n = P.nextNode(), s++);
390
- }
391
- return P.currentNode = z, a;
392
- }
393
- p(e) {
394
- let r = 0;
395
- for (const i of this._$AV) i !== void 0 && (i.strings !== void 0 ? (i._$AI(e, i, r), r += i.strings.length - 2) : i._$AI(e[r])), r++;
396
- }
397
- }
398
- class q {
399
- get _$AU() {
400
- return this._$AM?._$AU ?? this._$Cv;
401
- }
402
- constructor(e, r, i, a) {
403
- this.type = 2, this._$AH = d, this._$AN = void 0, this._$AA = e, this._$AB = r, this._$AM = i, this.options = a, this._$Cv = a?.isConnected ?? !0;
404
- }
405
- get parentNode() {
406
- let e = this._$AA.parentNode;
407
- const r = this._$AM;
408
- return r !== void 0 && e?.nodeType === 11 && (e = r.parentNode), e;
409
- }
410
- get startNode() {
411
- return this._$AA;
412
- }
413
- get endNode() {
414
- return this._$AB;
415
- }
416
- _$AI(e, r = this) {
417
- e = D(this, e, r), V(e) ? e === d || e == null || e === "" ? (this._$AH !== d && this._$AR(), this._$AH = d) : e !== this._$AH && e !== T && this._(e) : e._$litType$ !== void 0 ? this.$(e) : e.nodeType !== void 0 ? this.T(e) : gt(e) ? this.k(e) : this._(e);
418
- }
419
- O(e) {
420
- return this._$AA.parentNode.insertBefore(e, this._$AB);
421
- }
422
- T(e) {
423
- this._$AH !== e && (this._$AR(), this._$AH = this.O(e));
424
- }
425
- _(e) {
426
- this._$AH !== d && V(this._$AH) ? this._$AA.nextSibling.data = e : this.T(z.createTextNode(e)), this._$AH = e;
427
- }
428
- $(e) {
429
- const { values: r, _$litType$: i } = e, a = typeof i == "number" ? this._$AC(e) : (i.el === void 0 && (i.el = W.createElement(Be(i.h, i.h[0]), this.options)), i);
430
- if (this._$AH?._$AD === a) this._$AH.p(r);
431
- else {
432
- const n = new vt(a, this), s = n.u(this.options);
433
- n.p(r), this.T(s), this._$AH = n;
434
- }
435
- }
436
- _$AC(e) {
437
- let r = Re.get(e.strings);
438
- return r === void 0 && Re.set(e.strings, r = new W(e)), r;
439
- }
440
- k(e) {
441
- he(this._$AH) || (this._$AH = [], this._$AR());
442
- const r = this._$AH;
443
- let i, a = 0;
444
- for (const n of e) a === r.length ? r.push(i = new q(this.O(H()), this.O(H()), this, this.options)) : i = r[a], i._$AI(n), a++;
445
- a < r.length && (this._$AR(i && i._$AB.nextSibling, a), r.length = a);
446
- }
447
- _$AR(e = this._$AA.nextSibling, r) {
448
- for (this._$AP?.(!1, !0, r); e !== this._$AB; ) {
449
- const i = Ae(e).nextSibling;
450
- Ae(e).remove(), e = i;
451
- }
452
- }
453
- setConnected(e) {
454
- this._$AM === void 0 && (this._$Cv = e, this._$AP?.(e));
455
- }
456
- }
457
- class le {
458
- get tagName() {
459
- return this.element.tagName;
460
- }
461
- get _$AU() {
462
- return this._$AM._$AU;
463
- }
464
- constructor(e, r, i, a, n) {
465
- this.type = 1, this._$AH = d, this._$AN = void 0, this.element = e, this.name = r, this._$AM = a, this.options = n, i.length > 2 || i[0] !== "" || i[1] !== "" ? (this._$AH = Array(i.length - 1).fill(new String()), this.strings = i) : this._$AH = d;
466
- }
467
- _$AI(e, r = this, i, a) {
468
- const n = this.strings;
469
- let s = !1;
470
- if (n === void 0) e = D(this, e, r, 0), s = !V(e) || e !== this._$AH && e !== T, s && (this._$AH = e);
471
- else {
472
- const c = e;
473
- let l, h;
474
- for (e = n[0], l = 0; l < n.length - 1; l++) h = D(this, c[i + l], r, l), h === T && (h = this._$AH[l]), s || (s = !V(h) || h !== this._$AH[l]), h === d ? e = d : e !== d && (e += (h ?? "") + n[l + 1]), this._$AH[l] = h;
475
- }
476
- s && !a && this.j(e);
477
- }
478
- j(e) {
479
- e === d ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, e ?? "");
480
- }
481
- }
482
- class bt extends le {
483
- constructor() {
484
- super(...arguments), this.type = 3;
485
- }
486
- j(e) {
487
- this.element[this.name] = e === d ? void 0 : e;
488
- }
489
- }
490
- class xt extends le {
491
- constructor() {
492
- super(...arguments), this.type = 4;
493
- }
494
- j(e) {
495
- this.element.toggleAttribute(this.name, !!e && e !== d);
496
- }
497
- }
498
- class wt extends le {
499
- constructor(e, r, i, a, n) {
500
- super(e, r, i, a, n), this.type = 5;
501
- }
502
- _$AI(e, r = this) {
503
- if ((e = D(this, e, r, 0) ?? d) === T) return;
504
- const i = this._$AH, a = e === d && i !== d || e.capture !== i.capture || e.once !== i.once || e.passive !== i.passive, n = e !== d && (i === d || a);
505
- a && this.element.removeEventListener(this.name, this, i), n && this.element.addEventListener(this.name, this, e), this._$AH = e;
506
- }
507
- handleEvent(e) {
508
- typeof this._$AH == "function" ? this._$AH.call(this.options?.host ?? this.element, e) : this._$AH.handleEvent(e);
509
- }
510
- }
511
- class yt {
512
- constructor(e, r, i) {
513
- this.element = e, this.type = 6, this._$AN = void 0, this._$AM = r, this.options = i;
514
- }
515
- get _$AU() {
516
- return this._$AM._$AU;
517
- }
518
- _$AI(e) {
519
- D(this, e);
520
- }
521
- }
522
- const $t = M.litHtmlPolyfillSupport;
523
- $t?.(W, q), (M.litHtmlVersions ?? (M.litHtmlVersions = [])).push("3.3.3");
524
- const _t = (t, e, r) => {
525
- const i = r?.renderBefore ?? e;
526
- let a = i._$litPart$;
527
- if (a === void 0) {
528
- const n = r?.renderBefore ?? null;
529
- i._$litPart$ = a = new q(e.insertBefore(H(), n), n, void 0, r ?? {});
530
- }
531
- return a._$AI(t), a;
532
- };
533
- const F = globalThis;
534
- class u extends O {
535
- constructor() {
536
- super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
537
- }
538
- createRenderRoot() {
539
- var r;
540
- const e = super.createRenderRoot();
541
- return (r = this.renderOptions).renderBefore ?? (r.renderBefore = e.firstChild), e;
542
- }
543
- update(e) {
544
- const r = this.render();
545
- this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(e), this._$Do = _t(r, this.renderRoot, this.renderOptions);
546
- }
547
- connectedCallback() {
548
- super.connectedCallback(), this._$Do?.setConnected(!0);
549
- }
550
- disconnectedCallback() {
551
- super.disconnectedCallback(), this._$Do?.setConnected(!1);
552
- }
553
- render() {
554
- return T;
555
- }
556
- }
557
- u._$litElement$ = !0, u.finalized = !0, F.litElementHydrateSupport?.({ LitElement: u });
558
- const kt = F.litElementPolyfillSupport;
559
- kt?.({ LitElement: u });
560
- (F.litElementVersions ?? (F.litElementVersions = [])).push("4.2.2");
561
- const At = { attribute: !0, type: String, converter: ee, reflect: !1, hasChanged: me }, Et = (t = At, e, r) => {
562
- const { kind: i, metadata: a } = r;
563
- let n = globalThis.litPropertyMetadata.get(a);
564
- if (n === void 0 && globalThis.litPropertyMetadata.set(a, n = /* @__PURE__ */ new Map()), i === "setter" && ((t = Object.create(t)).wrapped = !0), n.set(r.name, t), i === "accessor") {
565
- const { name: s } = r;
566
- return { set(c) {
567
- const l = e.get.call(this);
568
- e.set.call(this, c), this.requestUpdate(s, l, t, !0, c);
569
- }, init(c) {
570
- return c !== void 0 && this.C(s, void 0, t, c), c;
571
- } };
572
- }
573
- if (i === "setter") {
574
- const { name: s } = r;
575
- return function(c) {
576
- const l = this[s];
577
- e.call(this, c), this.requestUpdate(s, l, t, !0, c);
578
- };
579
- }
580
- throw Error("Unsupported decorator location: " + i);
581
- };
582
- function p(t) {
583
- return (e, r) => typeof r == "object" ? Et(t, e, r) : ((i, a, n) => {
584
- const s = a.hasOwnProperty(n);
585
- return a.constructor.createProperty(n, i), s ? Object.getOwnPropertyDescriptor(a, n) : void 0;
586
- })(t, e, r);
587
- }
588
- function v(t) {
589
- return (e) => (customElements.get(t) || customElements.define(t, e), e);
590
- }
591
- function f(t) {
592
- return Te(t);
593
- }
594
- const St = "sf-leaderboard", Pt = "sf-leaderboard-stat-card", zt = "sf-leaderboard-filters", Ct = "sf-leaderboard-table", Rt = "sf-leaderboard-podium", Ot = "sf-leaderboard-rank-badge", Tt = "sf-leaderboard-player-avatar", Dt = "sf-leaderboard-player-stats-card", Lt = "sf-leaderboard-header-section", jt = "sf-leaderboard-stats-section", Bt = "sf-leaderboard-ranking-section", Nt = "sf-leaderboard-table-section", Ut = "sf-leaderboard-footer-section", It = "Leaderboard", Mt = "Real-time rankings", K = "week", Q = "all", Ft = "Your Position", Ht = "You're in the top 5% of players!", Vt = 42, Wt = [
595
- { label: "Today", value: "today" },
596
- { label: "This Week", value: "week" },
597
- { label: "This Month", value: "month" },
598
- { label: "All Time", value: "all" }
599
- ], Yt = [
600
- { label: "All Games", value: "all" },
601
- { label: "Poker", value: "poker" },
602
- { label: "Blackjack", value: "blackjack" },
603
- { label: "Roulette", value: "roulette" },
604
- { label: "Slots", value: "slots" }
605
- ], Gt = [
606
- {
607
- label: "Total Players",
608
- value: "12,847",
609
- icon: "👥",
610
- trendValue: 12.5,
611
- trendPositive: !0
612
- },
613
- {
614
- label: "Total Wagered",
615
- value: "$84.2M",
616
- icon: "💰",
617
- trendValue: 8.3,
618
- trendPositive: !0
619
- },
620
- {
621
- label: "Active Games",
622
- value: "1,247",
623
- icon: "🎮",
624
- trendValue: 3.2,
625
- trendPositive: !0
626
- },
627
- {
628
- label: "Biggest Win",
629
- value: "$125K",
630
- icon: "⚡",
631
- trendValue: 45.8,
632
- trendPositive: !0
633
- }
634
- ], R = {
635
- header: {
636
- title: It,
637
- subtitle: Mt,
638
- icon: "🏆",
639
- showLive: !0,
640
- backButton: { label: "Back" },
641
- isRefreshing: !1
642
- },
643
- stats: { items: Gt },
644
- ranking: {
645
- podium: { title: "Top Champions", badge: "Elite", players: [] },
646
- playerStats: {
647
- title: Ft,
648
- rank: Vt,
649
- message: Ht
650
- }
651
- },
652
- table: {
653
- title: "All Rankings",
654
- subtitle: "Showing 0 players",
655
- players: [],
656
- filters: {
657
- searchQuery: "",
658
- timeframe: K,
659
- category: Q
660
- }
661
- },
662
- footer: {
663
- text: "Rankings update every 30 seconds • Last updated: Just now"
664
- }
665
- };
666
- function qt(t = {}) {
667
- return {
668
- ...R,
669
- ...t,
670
- header: "header" in t ? t.header : R.header,
671
- stats: t.stats ?? R.stats,
672
- ranking: t.ranking ?? R.ranking,
673
- table: t.table ?? R.table,
674
- footer: t.footer ?? R.footer
675
- };
676
- }
677
- function Kt(t) {
678
- return !!(t?.podium ?? t?.playerStats);
679
- }
680
- const ge = "timeframe-change", ue = "category-change", fe = "search-change", ve = "player-select", Qt = "refresh", Jt = '@charset "UTF-8";:host{--background: var(--color-base-1, #0a0c14);--foreground: var(--color-neutral, #f0f0f5);--card: var(--color-base-2, #00114f);--card-foreground: var(--color-neutral, #f0f0f5);--primary: var(--color-primary-1, #00d4ff);--primary-rgb: var(--color-primary-1-rgb, 0, 212, 255);--primary-foreground: var(--color-base-3, #000c35);--secondary: var(--color-base-2, #00114f);--secondary-foreground: var(--color-neutral, #f0f0f5);--muted: var(--color-base-2, #00114f);--muted-foreground: var(--color-surface-muted, #808090);--accent: var(--color-primary-2, #00e5ff);--accent-foreground: var(--color-base-3, #000c35);--destructive: var(--color-error, #ff4757);--destructive-rgb: var(--color-error-rgb, 255, 71, 87);--border: var(--color-base-2, #00114f);--border-subtle: var(--color-surface-divider, rgba(42, 47, 66, .55));--success: var(--color-success, #00d26a);--success-rgb: var(--color-success-rgb, 0, 210, 106);--warning: var(--color-warning, #ffa502);--warning-rgb: var(--color-warning-rgb, 255, 165, 2);--informative: var(--color-informative, #2388fb);--gold: var(--place-first-table-icon, #ffd700);--gold-rgb: var(--place-first-table-icon-rgb, 255, 215, 0);--silver: var(--place-second-table-icon, #c0c0c0);--silver-rgb: var(--place-second-table-icon-rgb, 192, 192, 192);--bronze: var(--place-third-table-icon, #cd7f32);--bronze-rgb: var(--place-third-table-icon-rgb, 205, 127, 50);--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--font-sans: var(--font-primary, "Inter", system-ui, sans-serif);--transition-fast: .2s ease;--transition-base: .3s ease;--surface-gradient: linear-gradient(145deg, var(--color-base-2, #00114f) 0%, var(--color-base-1, #0a0c14) 100%);--surface-border-color: color-mix(in srgb, var(--color-primary-1, #00d4ff) 18%, transparent);--surface-border-hover: color-mix(in srgb, var(--color-primary-1, #00d4ff) 35%, transparent);--surface-radius: var(--radius-lg);--surface-padding: clamp(12px, 2vw, 18px);--surface-shadow: 0 4px 24px rgba(0, 0, 0, .25);--surface-shadow-hover: 0 0 24px color-mix(in srgb, var(--color-primary-1, #00d4ff) 12%, transparent);--inset-bg: color-mix(in srgb, var(--color-neutral, #f0f0f5) 3%, transparent);--inset-border: color-mix(in srgb, var(--color-neutral, #f0f0f5) 8%, transparent);--inset-radius: var(--radius-sm);--inset-hover-bg: color-mix(in srgb, var(--color-primary-1, #00d4ff) 6%, transparent);--inset-hover-border: color-mix(in srgb, var(--color-primary-1, #00d4ff) 22%, transparent);--accent-soft: color-mix(in srgb, var(--color-primary-1, #00d4ff) 10%, transparent);--accent-soft-strong: color-mix(in srgb, var(--color-primary-1, #00d4ff) 18%, transparent);--accent-border: color-mix(in srgb, var(--color-primary-1, #00d4ff) 28%, transparent);--accent-glow: color-mix(in srgb, var(--color-primary-1, #00d4ff) 45%, transparent);--accent-gradient: var(--color-primary-3, linear-gradient(256deg, #ffeec2 0%, #ffc431 100%));--accent-text-glow: 0 0 16px color-mix(in srgb, var(--color-primary-1, #00d4ff) 55%, transparent), 0 0 32px color-mix(in srgb, var(--color-primary-1, #00d4ff) 28%, transparent);--medal-gold-bg: color-mix(in srgb, var(--place-first-table-icon, #ffd700) 22%, transparent);--medal-gold-border: color-mix(in srgb, var(--place-first-table-icon, #ffd700) 50%, transparent);--medal-silver-bg: color-mix(in srgb, var(--place-second-table-icon, #c0c0c0) 18%, transparent);--medal-silver-border: color-mix(in srgb, var(--place-second-table-icon, #c0c0c0) 40%, transparent);--medal-bronze-bg: color-mix(in srgb, var(--place-third-table-icon, #cd7f32) 18%, transparent);--medal-bronze-border: color-mix(in srgb, var(--place-third-table-icon, #cd7f32) 40%, transparent);--medal-gold-gradient: linear-gradient(135deg, var(--place-first-table-icon, #ffd700) 0%, var(--color-primary-1, #00d4ff) 100%);--medal-silver-gradient: linear-gradient(135deg, var(--place-second-table-icon, #c0c0c0) 0%, var(--color-base-2, #00114f) 100%);--medal-bronze-gradient: linear-gradient(135deg, var(--place-third-table-icon, #cd7f32) 0%, var(--color-base-3, #000c35) 100%);--medal-avatar-fg: var(--color-base-3, #000c35);--medal-gold-glow: color-mix(in srgb, var(--place-first-table-icon, #ffd700) 60%, transparent);--medal-silver-glow: color-mix(in srgb, var(--place-second-table-icon, #c0c0c0) 50%, transparent);--medal-bronze-glow: color-mix(in srgb, var(--place-third-table-icon, #cd7f32) 50%, transparent);--badge-success-bg: color-mix(in srgb, var(--color-success, #00d26a) 20%, transparent);--badge-success-border: color-mix(in srgb, var(--color-success, #00d26a) 35%, transparent);--badge-warning-bg: color-mix(in srgb, var(--color-warning, #ffa502) 20%, transparent);--badge-warning-border: color-mix(in srgb, var(--color-warning, #ffa502) 35%, transparent);--badge-accent-bg: var(--accent-soft);--badge-accent-border: var(--accent-border);font-family:var(--font-sans);color:var(--foreground)}*{box-sizing:border-box}.card{position:relative;overflow:hidden;box-sizing:border-box;background:var(--surface-gradient);border:1px solid var(--surface-border-color);border-radius:var(--surface-radius);box-shadow:var(--surface-shadow);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.card:hover{border-color:var(--surface-border-hover);box-shadow:var(--surface-shadow-hover)}.stat-item,.avatar-section,.percentile-badge{background:var(--inset-bg);border:1px solid var(--inset-border);border-radius:var(--inset-radius)}.stat-item:hover{background:var(--inset-hover-bg);border-color:var(--inset-hover-border)}', b = f(Jt);
681
- function Zt(t) {
682
- return o`<div class="app">
683
- ${t.renderHeader()}
684
- <main class="main">
685
- ${t.renderStats()}
686
- ${t.renderRanking()}
687
- ${t.renderTable()}
688
- ${t.renderFooter()}
689
- </main>
690
- </div>
691
- `;
692
- }
693
- const Xt = ":host{display:block;width:100%;min-height:100vh;background:var(--background)}.app{width:100%;min-height:100vh;min-height:100dvh;padding:clamp(12px,3vw,16px) clamp(12px,4vw,40px) clamp(16px,4vw,40px);box-sizing:border-box;background-image:linear-gradient(var(--border-subtle) 1px,transparent 1px),linear-gradient(90deg,var(--border-subtle) 1px,transparent 1px);background-size:50px 50px;animation:grid-move 20s linear infinite}@keyframes grid-move{0%{background-position:0 0}to{background-position:50px 50px}}.main{width:100%;box-sizing:border-box;margin-top:clamp(1.25rem,4vw,2.5rem)}", er = ':host{display:block;width:100%}.header{position:sticky;top:0;z-index:50;backdrop-filter:blur(16px);background:color-mix(in srgb,var(--background) 82%,transparent);padding:12px 0;border-bottom:1px solid var(--border)}.header-content{width:100%;display:flex;align-items:center;justify-content:space-between}.logo-section{display:flex;align-items:center;gap:.75rem}.logo-icon{width:40px;height:40px;border-radius:var(--radius);background:var(--accent-soft);border:1px solid var(--surface-border-color);display:flex;align-items:center;justify-content:center;font-size:1.25rem;box-shadow:var(--surface-shadow-hover)}.logo-text h1{font-size:1.25rem;font-weight:700;margin:0;text-shadow:var(--accent-text-glow)}.logo-text p{font-size:.75rem;color:var(--muted-foreground);margin:0}.header-actions{display:flex;align-items:center;gap:.75rem}.live-badge{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:9999px;border:1px solid rgba(var(--success-rgb),.35);background:rgba(var(--success-rgb),.08);font-size:.75rem;font-weight:500;color:var(--success)}.live-dot{position:relative;width:8px;height:8px;background:var(--success);border-radius:50%}.live-dot:before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--success);animation:ping 1.5s ease-out infinite}@keyframes ping{0%{transform:scale(1);opacity:1}to{transform:scale(2.5);opacity:0}}.back-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--surface-border-color);background:var(--surface-gradient);color:var(--foreground);font-size:.875rem;font-family:inherit;cursor:pointer;box-shadow:var(--surface-shadow);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.back-btn:hover{border-color:var(--surface-border-hover);box-shadow:var(--surface-shadow-hover)}.back-btn .icon{transition:transform .3s ease}.back-btn.refreshing .icon{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(max-width:639px){.header-content{flex-wrap:wrap;gap:.75rem}.logo-section{flex:1 1 100%;justify-content:center;align-items:center;gap:.5rem}.logo-icon{width:clamp(32px,9vw,40px);height:clamp(32px,9vw,40px);font-size:clamp(1rem,4vw,1.25rem)}.logo-text{text-align:center}.logo-text h1{text-align:center;font-size:clamp(1rem,4.5vw,1.25rem)}.logo-text p{display:none}.header-actions{width:100%;justify-content:space-between}.back-btn{padding:.5rem .75rem;font-size:.8125rem}}@media(max-width:380px){.live-badge{font-size:.6875rem;padding:.3rem .6rem}}';
694
- var tr = Object.defineProperty, rr = Object.getOwnPropertyDescriptor, be = (t, e, r, i) => {
695
- for (var a = i > 1 ? void 0 : i ? rr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
696
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
697
- return i && a && tr(e, r, a), a;
698
- };
699
- let Y = class extends u {
700
- onBackClick() {
701
- const t = this.refreshContext;
702
- this.dispatchEvent(
703
- new CustomEvent(Qt, {
704
- detail: {
705
- timeframe: t?.timeframe ?? K,
706
- category: t?.category ?? Q
707
- },
708
- bubbles: !0,
709
- composed: !0
710
- })
711
- );
712
- }
713
- render() {
714
- if (!this.section) return d;
715
- const t = this.section.backButton != null, e = this.section.backButton?.label ?? "Back";
716
- return o`
717
- <header class="header">
718
- <div class="header-content">
719
- <div class="logo-section">
720
- ${this.section.icon ? o`<div class="logo-icon">${this.section.icon}</div>` : d}
721
- <div class="logo-text">
722
- <h1>${this.section.title}</h1>
723
- ${this.section.subtitle ? o`<p>${this.section.subtitle}</p>` : d}
724
- </div>
725
- </div>
726
-
727
- <div class="header-actions">
728
- ${this.section.showLive ? o`
729
- <div class="live-badge">
730
- <span class="live-dot"></span>
731
- Live
732
- </div>
733
- ` : d}
734
- ${t ? o`
735
- <button
736
- type="button"
737
- class="back-btn ${this.section.isRefreshing ? "refreshing" : ""}"
738
- @click=${this.onBackClick}
739
- >
740
- <span class="icon" aria-hidden="true">←</span>
741
- ${e}
742
- </button>
743
- ` : d}
744
- </div>
745
- </div>
746
- </header>
747
- `;
748
- }
749
- };
750
- Y.styles = [b, f(er)];
751
- be([
752
- p({ attribute: !1 })
753
- ], Y.prototype, "section", 2);
754
- be([
755
- p({ attribute: !1 })
756
- ], Y.prototype, "refreshContext", 2);
757
- Y = be([
758
- v(Lt)
759
- ], Y);
760
- function ar(t) {
761
- return o`<div class="card">
762
- <div class="glow"></div>
763
- <div class="content">
764
- <div class="header">
765
- <span class="label">${t.label}</span>
766
- <div class="icon-wrapper">${t.icon}</div>
767
- </div>
768
- <div class="body">
769
- <p class="value">${t.value}</p>
770
- ${t.renderTrend()}
771
- </div>
772
- </div>
773
- </div>
774
- `;
775
- }
776
- const ir = '@charset "UTF-8";:host{display:block;min-width:0;max-width:100%}.card{padding:clamp(.75rem,2.5vw,1rem);min-width:0;max-width:100%}.glow{position:absolute;top:0;right:0;width:96px;height:96px;background:radial-gradient(circle,var(--accent-soft) 0%,transparent 70%);transform:translate(50%,-50%);pointer-events:none}.content{position:relative}.header{display:flex;align-items:center;justify-content:space-between}.label{font-size:.875rem;color:var(--muted-foreground)}.icon-wrapper{width:32px;height:32px;border-radius:var(--inset-radius);background:var(--accent-soft);display:flex;align-items:center;justify-content:center;font-size:1rem}.body{margin-top:.5rem}.value{font-size:1.5rem;font-weight:700;font-family:var(--font-mono)}.trend{font-size:.75rem;font-weight:500;margin-top:.25rem}.trend.positive{color:var(--success)}.trend.negative{color:var(--destructive)}@media(max-width:639px){:host{display:flex;height:100%;min-height:0}.card{display:flex;flex:1;width:100%;min-height:100%;align-items:center;justify-content:center;padding:clamp(.45rem,2.8vw,.65rem)}.glow{width:clamp(40px,22vw,64px);height:clamp(40px,22vw,64px)}.content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;gap:clamp(.2rem,1.2vw,.35rem)}.header{flex-direction:column;align-items:center;justify-content:center;gap:.25rem;text-align:center}.label{font-size:clamp(.6rem,2.6vw,.7rem);line-height:1.2}.icon-wrapper{width:clamp(22px,7.5vw,28px);height:clamp(22px,7.5vw,28px);font-size:clamp(.7rem,3.2vw,.85rem);flex-shrink:0}.body{margin-top:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;gap:.1rem}.value{margin:0;font-size:clamp(.9rem,5.5vw,1.15rem);line-height:1.15;word-break:break-word}.trend{font-size:clamp(.58rem,2.4vw,.65rem);margin-top:0;margin-bottom:0}}@media(max-width:576px){.card{padding:clamp(.65rem,3.2vw,.85rem);min-height:clamp(5.5rem,26vw,6.75rem)}.glow{width:clamp(48px,20vw,72px);height:clamp(48px,20vw,72px)}.content{gap:clamp(.35rem,2vw,.5rem)}.header{gap:clamp(.3rem,1.6vw,.4rem)}.icon-wrapper{order:-1;width:clamp(30px,8.5vw,36px);height:clamp(30px,8.5vw,36px);font-size:clamp(.95rem,4vw,1.1rem)}.label{order:0;font-size:clamp(.65rem,2.8vw,.75rem);line-height:1.25;letter-spacing:.02em;max-width:100%}.body{gap:clamp(.15rem,1.2vw,.25rem)}.value{font-size:clamp(1rem,5.2vw,1.2rem);line-height:1.2}.trend{font-size:clamp(.625rem,2.6vw,.7rem);line-height:1.3}}@media(max-width:380px){.card{padding:clamp(.55rem,2.8vw,.7rem);min-height:5rem}.value{font-size:clamp(.9rem,4.8vw,1.05rem)}}';
777
- var nr = Object.defineProperty, sr = Object.getOwnPropertyDescriptor, j = (t, e, r, i) => {
778
- for (var a = i > 1 ? void 0 : i ? sr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
779
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
780
- return i && a && nr(e, r, a), a;
781
- };
782
- let A = class extends u {
783
- constructor() {
784
- super(...arguments), this.label = "", this.value = "", this.icon = "", this.trendPositive = !0;
785
- }
786
- renderTrend() {
787
- return this.trendValue === void 0 ? o`` : o`
788
- <p class="trend ${this.trendPositive ? "positive" : "negative"}">
789
- ${this.trendPositive ? "+" : ""}${this.trendValue}% from last week
790
- </p>
791
- `;
792
- }
793
- render() {
794
- return ar(this);
795
- }
796
- };
797
- A.styles = [b, f(ir)];
798
- j([
799
- p({ type: String })
800
- ], A.prototype, "label", 2);
801
- j([
802
- p({ type: String })
803
- ], A.prototype, "value", 2);
804
- j([
805
- p({ type: String })
806
- ], A.prototype, "icon", 2);
807
- j([
808
- p({ type: Number })
809
- ], A.prototype, "trendValue", 2);
810
- j([
811
- p({ type: Boolean })
812
- ], A.prototype, "trendPositive", 2);
813
- A = j([
814
- v(Pt)
815
- ], A);
816
- const or = ".section{margin-bottom:clamp(1.5rem,5vw,3rem);min-width:0}.section-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.section-title{font-size:1.125rem;font-weight:700;margin:0}.elite-badge{font-size:.65rem;padding:.2rem .5rem;border-radius:var(--radius-sm);background:var(--medal-gold-bg);border:1px solid var(--medal-gold-border);color:var(--gold);font-weight:600;letter-spacing:.04em;text-transform:uppercase}@media(max-width:639px){.section-title{font-size:1rem}}:host{display:block;width:100%}.stats-section .stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(.625rem,2vw,1rem);width:100%;min-width:0;align-items:stretch}@media(min-width:640px)and (max-width:1079px){.stats-section .stats-grid{gap:.875rem;grid-auto-rows:1fr}}@media(min-width:1080px){.stats-section .stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:auto;gap:1rem}}@media(max-width:639px){.stats-section .stats-grid{gap:clamp(.35rem,2.5vw,.5rem);grid-auto-rows:1fr;grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:576px){.stats-section .stats-grid{gap:clamp(.5rem,2.8vw,.75rem)}}";
817
- var lr = Object.defineProperty, cr = Object.getOwnPropertyDescriptor, Ne = (t, e, r, i) => {
818
- for (var a = i > 1 ? void 0 : i ? cr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
819
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
820
- return i && a && lr(e, r, a), a;
821
- };
822
- let re = class extends u {
823
- render() {
824
- return this.section?.items?.length ? o`
825
- <section class="section stats-section">
826
- ${this.section.title ? o`
827
- <div class="section-header">
828
- <h2 class="section-title">${this.section.title}</h2>
829
- </div>
830
- ` : d}
831
- <div class="stats-grid">
832
- ${this.section.items.map(
833
- (t) => o`
834
- <sf-leaderboard-stat-card
835
- label=${t.label}
836
- value=${t.value}
837
- icon=${t.icon}
838
- .trendValue=${t.trendValue}
839
- ?trendPositive=${t.trendPositive ?? !0}
840
- ></sf-leaderboard-stat-card>
841
- `
842
- )}
843
- </div>
844
- </section>
845
- ` : d;
846
- }
847
- };
848
- re.styles = [b, f(or)];
849
- Ne([
850
- p({ attribute: !1 })
851
- ], re.prototype, "section", 2);
852
- re = Ne([
853
- v(jt)
854
- ], re);
855
- function xe(t) {
856
- return t >= 1e6 ? `$${(t / 1e6).toFixed(2)}M` : t >= 1e3 ? `$${(t / 1e3).toFixed(1)}K` : `$${t.toFixed(2)}`;
857
- }
858
- function Ue(t) {
859
- return t.slice(0, 2).toUpperCase();
860
- }
861
- function dr(t) {
862
- return t.streak >= 5 ? "🔥" : t.rank === 1 ? "👑" : "✌️";
863
- }
864
- function pr(t) {
865
- return {
866
- rank: t.rank,
867
- initials: Ue(t.username),
868
- username: t.username,
869
- earnings: xe(t.totalWinnings),
870
- winRate: `${t.winRate}% WR`,
871
- badgeEmoji: dr(t)
872
- };
873
- }
874
- function mr(t) {
875
- return t.map(pr);
876
- }
877
- function hr(t) {
878
- return o`<div class="card">
879
- <div class="ambient-glow glow-gold"></div>
880
- <div class="card-content">
881
- <div class="podium-container">
882
- <div class="player-column second">
883
- <div class="avatar-wrapper">
884
- <div class="avatar-ring silver"></div>
885
- <div class="avatar silver">${t.second.initials}</div>
886
- <span class="badge-emoji">${t.second.badgeEmoji}</span>
887
- </div>
888
- <div class="player-name">${t.second.username}</div>
889
- <div class="player-earnings silver">${t.second.earnings}</div>
890
- <div class="player-winrate">${t.second.winRate}</div>
891
- <div class="podium-block second">
892
- <span class="podium-number silver">2</span>
893
- </div>
894
- </div>
895
-
896
- <div class="player-column first">
897
- <div class="sparkles">
898
- <span class="sparkle">✦</span>
899
- <span class="sparkle">✦</span>
900
- <span class="sparkle">✦</span>
901
- </div>
902
- <div class="avatar-wrapper">
903
- <div class="avatar-ring gold"></div>
904
- <div class="avatar gold">${t.first.initials}</div>
905
- <span class="badge-emoji fire">${t.first.badgeEmoji}</span>
906
- </div>
907
- <div class="player-name">${t.first.username}</div>
908
- <div class="player-earnings gold">${t.first.earnings}</div>
909
- <div class="player-winrate">${t.first.winRate}</div>
910
- <div class="podium-block first">
911
- <span class="podium-number gold">1</span>
912
- </div>
913
- </div>
914
-
915
- <div class="player-column third">
916
- <div class="avatar-wrapper">
917
- <div class="avatar-ring bronze"></div>
918
- <div class="avatar bronze">${t.third.initials}</div>
919
- <span class="badge-emoji">${t.third.badgeEmoji}</span>
920
- </div>
921
- <div class="player-name">${t.third.username}</div>
922
- <div class="player-earnings bronze">${t.third.earnings}</div>
923
- <div class="player-winrate">${t.third.winRate}</div>
924
- <div class="podium-block third">
925
- <span class="podium-number bronze">3</span>
926
- </div>
927
- </div>
928
- </div>
929
- </div>
930
- </div>
931
- `;
932
- }
933
- const gr = ':host{display:flex;width:100%;height:100%;min-height:0}.card{padding:var(--surface-padding) clamp(14px,2vw,24px) var(--surface-padding);width:100%;max-width:100%;min-width:0;height:100%;flex:1;display:flex;flex-direction:column}.card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg,transparent,rgba(var(--primary-rgb),.04),transparent,rgba(var(--gold-rgb),.04),transparent);animation:rotate 12s linear infinite}@keyframes rotate{to{transform:rotate(360deg)}}.card-content{position:relative;z-index:1;flex:1;min-height:0;display:flex;flex-direction:column;padding-top:clamp(28px,12%,52px)}.podium-container{flex:1;min-height:0;display:flex;align-items:stretch;justify-content:center;gap:clamp(6px,1.5vw,14px)}.player-column{flex:1;max-width:clamp(88px,14vw,160px);min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-height:0}.player-column.first{order:2;max-width:clamp(96px,16vw,180px)}.player-column.second{order:1}.player-column.third{order:3}.avatar-wrapper,.player-name,.player-earnings,.player-winrate,.sparkles{flex-shrink:0}.sparkles{position:relative;height:clamp(14px,3vh,22px);width:clamp(40px,8vw,56px);margin-bottom:clamp(2px,.5vh,4px);flex-shrink:0}.sparkle{position:absolute;font-size:clamp(10px,1.8vw,14px);animation:sparkle 1.5s ease-in-out infinite}.sparkle:nth-child(1){left:10px;top:5px;animation-delay:0s}.sparkle:nth-child(2){left:25px;top:0;animation-delay:.3s}.sparkle:nth-child(3){left:40px;top:8px;animation-delay:.6s}@keyframes sparkle{0%,to{opacity:1;transform:scale(1) rotate(0)}50%{opacity:.4;transform:scale(1.3) rotate(180deg)}}.avatar-wrapper{position:relative;margin-bottom:clamp(4px,.8vh,8px)}.avatar{width:clamp(40px,7vw,56px);height:clamp(40px,7vw,56px);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:clamp(14px,2.5vw,18px);font-weight:700;position:relative;z-index:2;transition:transform .3s ease}.player-column.first .avatar{width:clamp(44px,8vw,64px);height:clamp(44px,8vw,64px);font-size:clamp(15px,2.8vw,22px)}.avatar:hover{transform:scale(1.08)}.avatar.gold{background:var(--medal-gold-gradient);color:var(--medal-avatar-fg);box-shadow:0 0 30px var(--medal-gold-glow)}.avatar.silver{background:var(--medal-silver-gradient);color:var(--medal-avatar-fg);box-shadow:0 0 20px var(--medal-silver-glow)}.avatar.bronze{background:var(--medal-bronze-gradient);color:var(--medal-avatar-fg);box-shadow:0 0 20px var(--medal-bronze-glow)}.avatar-ring{position:absolute;inset:-5px;border-radius:50%;border:2px solid;animation:ring-pulse 2.5s ease-in-out infinite}.avatar-ring.gold{border-color:var(--medal-gold-border)}.avatar-ring.silver{border-color:var(--medal-silver-border)}.avatar-ring.bronze{border-color:var(--medal-bronze-border)}@keyframes ring-pulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.15);opacity:.2}}.badge-emoji{position:absolute;bottom:-3px;right:-3px;font-size:clamp(12px,2vw,16px);z-index:3;animation:badge-bounce 2s ease-in-out infinite}.badge-emoji.fire{animation:fire-pulse .6s ease-in-out infinite alternate}@keyframes badge-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes fire-pulse{0%{transform:scale(1)}to{transform:scale(1.2)}}.player-name{font-size:clamp(10px,1.6vw,13px);font-weight:700;color:var(--foreground);margin-bottom:2px;text-align:center;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-earnings{font-size:clamp(11px,1.8vw,15px);font-weight:700;margin-bottom:2px;text-align:center;line-height:1.2}.player-earnings.gold{color:var(--gold);text-shadow:0 0 15px rgba(var(--gold-rgb),.5)}.player-earnings.silver{color:var(--silver)}.player-earnings.bronze{color:var(--bronze)}.player-winrate{font-size:clamp(9px,1.4vw,11px);color:var(--muted-foreground);margin-bottom:clamp(4px,.8vh,8px);text-align:center;line-height:1.2}.podium-block{flex:0 0 auto;width:100%;display:flex;align-items:center;justify-content:center;border-radius:12px 12px 0 0;position:relative;overflow:hidden;transition:transform .3s ease}.podium-block.first{height:50%;min-height:clamp(80px,12vh,190px)}.podium-block.second{height:36%;min-height:clamp(58px,9vh,140px)}.podium-block.third{height:26%;min-height:clamp(42px,7vh,105px)}.podium-block:hover{transform:translateY(-3px)}.podium-block:before{content:"";position:absolute;inset:0;opacity:.1;background:linear-gradient(180deg,rgba(255,255,255,.2) 0%,transparent 100%)}.podium-block.first{background:var(--place-first-podium-slot, #ffd700);border:2px solid color-mix(in srgb,var(--place-first-podium-slot, #ffd700) 55%,transparent);border-bottom:none;box-shadow:0 0 32px color-mix(in srgb,var(--place-first-podium-slot, #ffd700) 15%,transparent)}.podium-block.second{background:var(--place-second-podium-slot, #c0c0c0);border:2px solid color-mix(in srgb,var(--place-second-podium-slot, #c0c0c0) 45%,transparent);border-bottom:none;box-shadow:0 0 24px color-mix(in srgb,var(--place-second-podium-slot, #c0c0c0) 12%,transparent)}.podium-block.third{background:var(--place-third-podium-slot, #cd7f32);border:2px solid color-mix(in srgb,var(--place-third-podium-slot, #cd7f32) 45%,transparent);border-bottom:none;box-shadow:0 0 24px color-mix(in srgb,var(--place-third-podium-slot, #cd7f32) 12%,transparent)}.podium-number{font-size:clamp(28px,6vw,48px);font-weight:800;opacity:.4;letter-spacing:-2px;line-height:1}.player-column.first .podium-number{font-size:clamp(32px,7vw,56px)}.podium-number.gold{color:var(--place-first-podium-number, #ffd700)}.podium-number.silver{color:var(--place-second-podium-number, #c0c0c0)}.podium-number.bronze{color:var(--place-third-podium-number, #cd7f32)}.ambient-glow{position:absolute;width:clamp(120px,40%,200px);height:clamp(120px,40%,200px);border-radius:50%;filter:blur(60px);opacity:.15;pointer-events:none;z-index:0}.glow-gold{background:var(--gold);top:8%;left:50%;transform:translate(-50%);animation:glow-pulse 4s ease-in-out infinite}@keyframes glow-pulse{0%,to{opacity:.15}50%{opacity:.25}}@media(min-width:1024px){.card-content{padding-top:clamp(32px,14%,56px)}.podium-block.first{height:54%;min-height:clamp(92px,13vh,210px)}.podium-block.second{height:38%;min-height:clamp(66px,10vh,155px)}.podium-block.third{height:28%;min-height:clamp(48px,8vh,118px)}.podium-number{font-size:clamp(36px,5vw,52px)}.player-column.first .podium-number{font-size:clamp(42px,6vw,64px)}}@media(min-width:1280px){.podium-container{gap:clamp(10px,1.5vw,20px)}.player-column{max-width:clamp(100px,12vw,180px)}.player-column.first{max-width:clamp(110px,14vw,200px)}.podium-block.first{height:56%;min-height:clamp(100px,14vh,230px)}.podium-block.second{height:40%;min-height:clamp(72px,11vh,168px)}.podium-block.third{height:30%;min-height:clamp(52px,8vh,128px)}.podium-number{font-size:clamp(40px,4.5vw,60px)}.player-column.first .podium-number{font-size:clamp(48px,5.5vw,72px)}}@media(max-width:1023px){.podium-block.first{min-height:clamp(64px,10vh,120px)}.podium-block.second{min-height:clamp(48px,8vh,95px)}.podium-block.third{min-height:clamp(36px,6vh,75px)}.player-column{max-width:clamp(72px,22vw,120px)}.player-column.first{max-width:clamp(80px,24vw,140px)}}@media(max-width:639px){.card{border-radius:18px;padding:clamp(8px,2vw,12px) clamp(10px,3vw,16px)}.card-content{padding-top:clamp(18px,8%,32px)}.podium-container{gap:clamp(4px,1.5vw,8px)}.player-column{max-width:clamp(64px,28vw,100px)}.player-column.first{max-width:clamp(72px,30vw,110px)}.podium-block.first{height:48%;min-height:clamp(56px,12dvh,100px)}.podium-block.second{height:34%;min-height:clamp(42px,9dvh,80px)}.podium-block.third{height:24%;min-height:clamp(32px,7dvh,65px)}.podium-number{font-size:clamp(22px,6vw,36px)}.player-column.first .podium-number{font-size:clamp(26px,7vw,42px)}.avatar{width:clamp(34px,9vw,44px);height:clamp(34px,9vw,44px);font-size:clamp(12px,3vw,14px)}.player-column.first .avatar{width:clamp(38px,10vw,48px);height:clamp(38px,10vw,48px)}.player-name{font-size:clamp(9px,2.4vw,11px)}.player-earnings{font-size:clamp(10px,2.6vw,12px)}}@media(max-width:380px){.player-column{max-width:30vw}.player-column.first{max-width:34vw}.sparkle:nth-child(2){left:18px}.sparkle:nth-child(3){left:30px}}';
934
- var ur = Object.defineProperty, fr = Object.getOwnPropertyDescriptor, Ie = (t, e, r, i) => {
935
- for (var a = i > 1 ? void 0 : i ? fr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
936
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
937
- return i && a && ur(e, r, a), a;
938
- };
939
- let ae = class extends u {
940
- constructor() {
941
- super(...arguments), this.players = [];
942
- }
943
- entryByRank(t) {
944
- return mr(this.players).find((e) => e.rank === t);
945
- }
946
- get first() {
947
- return this.entryByRank(1);
948
- }
949
- get second() {
950
- return this.entryByRank(2);
951
- }
952
- get third() {
953
- return this.entryByRank(3);
954
- }
955
- get hasPodium() {
956
- return this.players.length >= 3 && this.entryByRank(1) !== void 0 && this.entryByRank(2) !== void 0 && this.entryByRank(3) !== void 0;
957
- }
958
- render() {
959
- return this.hasPodium ? hr(this) : o``;
960
- }
961
- };
962
- ae.styles = [b, f(gr)];
963
- Ie([
964
- p({ type: Array })
965
- ], ae.prototype, "players", 2);
966
- ae = Ie([
967
- v(Rt)
968
- ], ae);
969
- function vr(t) {
970
- return o`<div class="card">
971
- <div class="card-content">
972
- <div class="card-top">
973
- <div class="rank-section">
974
- <div class="rank-container">
975
- <div class="rank-glow"></div>
976
- <div class="rank-ring"></div>
977
- <div class="rank-ring rank-ring-2"></div>
978
- <span class="rank-number">#${t.rank}</span>
979
- </div>
980
- <p class="percentile-badge">
981
- <span class="percentile-icon" aria-hidden="true">🏆</span>
982
- <span class="percentile-text"
983
- >Top ${t.percentile}% of players</span
984
- >
985
- </p>
986
- </div>
987
-
988
- <div class="avatar-section">
989
- <div class="avatar">${t.initials}</div>
990
- <div class="avatar-info">
991
- <div class="avatar-name">${t.username}</div>
992
- <div class="avatar-earnings">${t.earnings}</div>
993
- </div>
994
- <div class="level-badge">LVL ${t.level}</div>
995
- </div>
996
- </div>
997
-
998
- <div class="stats-grid">
999
- <div class="stat-item">
1000
- <div class="stat-main">
1001
- <span class="stat-value highlight">${t.winRate}%</span>
1002
- <span class="stat-label">Win Rate</span>
1003
- </div>
1004
- </div>
1005
- <div class="stat-item">
1006
- <div class="stat-main">
1007
- <span class="stat-value">${t.gamesPlayed.toLocaleString()}</span>
1008
- <span class="stat-label">Games Played</span>
1009
- </div>
1010
- </div>
1011
- <div class="stat-item">
1012
- <div class="stat-main">
1013
- <span class="stat-value streak">
1014
- <span class="fire-icon">🔥</span> ${t.winStreak}
1015
- </span>
1016
- <span class="stat-label">Win Streak</span>
1017
- </div>
1018
- </div>
1019
- <div class="stat-item">
1020
- <div class="stat-main">
1021
- <span class="stat-value">⭐ 4.8</span>
1022
- <span class="stat-label">Rating</span>
1023
- </div>
1024
- </div>
1025
- </div>
1026
- </div>
1027
- </div>
1028
- `;
1029
- }
1030
- const br = '@charset "UTF-8";:host{display:flex;width:100%;height:100%;min-height:0}.card{padding:var(--surface-padding);width:100%;max-width:100%;height:100%;flex:1;display:flex;flex-direction:column}.card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg,transparent,rgba(var(--primary-rgb),.04),transparent,rgba(var(--primary-rgb),.03),transparent);animation:rotate 8s linear infinite}@keyframes rotate{to{transform:rotate(360deg)}}.card-content{position:relative;z-index:1;flex:1;min-height:0;height:100%;display:flex;flex-direction:column;gap:clamp(6px,1.1vh,10px);overflow:hidden}.card-top{display:flex;flex-direction:column;gap:clamp(6px,1.1vh,10px);flex-shrink:0}.rank-section{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:clamp(8px,1.5vw,12px);flex-shrink:0;width:100%}.rank-container{position:relative;display:flex;align-items:center;justify-content:center;grid-row:1/-1;width:clamp(60px,11vw,76px);height:clamp(60px,11vw,76px);flex-shrink:0}.rank-glow{position:absolute;width:100%;height:100%;background:radial-gradient(circle,var(--accent-glow) 0%,transparent 70%);border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.15);opacity:1}}.rank-ring{position:absolute;width:86%;height:86%;border:2px solid var(--accent-border);border-radius:50%;animation:ring-pulse 3s ease-in-out infinite}.rank-ring-2{width:72%;height:72%;animation-delay:.5s}@keyframes ring-pulse{0%,to{transform:scale(1);opacity:.3}50%{transform:scale(1.1);opacity:.6}}.rank-number{font-size:clamp(24px,4.8vw,34px);font-weight:800;color:var(--primary);text-shadow:var(--accent-text-glow);z-index:2;line-height:1;animation:glow 2s ease-in-out infinite alternate}@keyframes glow{0%{text-shadow:var(--accent-text-glow)}to{text-shadow:0 0 24px rgba(var(--primary-rgb),.9),0 0 40px rgba(var(--primary-rgb),.45)}}.percentile-badge{margin:0;padding:clamp(6px,1vh,8px) clamp(8px,1.5vw,10px);background:linear-gradient(135deg,var(--accent-soft-strong) 0%,var(--accent-soft) 100%);border-color:var(--accent-border);color:var(--primary);font-size:clamp(10px,1.5vw,11px);font-weight:600;letter-spacing:.2px;line-height:1.25;display:flex;align-items:flex-start;gap:6px;min-width:0}.percentile-icon{flex-shrink:0;line-height:1.25}.percentile-text{min-width:0}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:clamp(8px,1.4vw,10px);flex:1;min-height:0}.stat-main{display:contents}.stat-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(8px,1.4vw,12px) clamp(8px,1.2vw,10px);text-align:center;transition:all var(--transition-base);min-width:0;min-height:0}.stat-value{font-size:clamp(15px,2.8vw,20px);font-weight:700;color:var(--foreground);margin-bottom:4px;line-height:1.2}.stat-value.highlight{color:var(--gold);text-shadow:0 0 10px rgba(var(--gold-rgb),.45)}.stat-value.streak{color:var(--destructive);display:flex;align-items:center;justify-content:center;gap:4px}.stat-label{font-size:clamp(10px,1.6vw,11px);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.6px}.fire-icon{display:inline-block;animation:fire .5s ease-in-out infinite alternate}@keyframes fire{0%{transform:scale(1)}to{transform:scale(1.15)}}.avatar-section{display:flex;align-items:center;gap:clamp(8px,1.5vw,10px);padding:clamp(8px,1.5vw,10px);flex-shrink:0}.avatar{width:clamp(36px,7vw,44px);height:clamp(36px,7vw,44px);font-size:clamp(12px,2.2vw,14px);background:var(--accent-gradient);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--primary-foreground);position:relative;flex-shrink:0}.avatar:after{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--accent-border);animation:avatar-pulse 2s ease-in-out infinite}@keyframes avatar-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.5}}.avatar-info{flex:1;min-width:0}.avatar-name{font-size:clamp(12px,2.2vw,14px);font-weight:700;color:var(--foreground);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar-earnings{font-size:clamp(11px,2vw,13px);color:var(--primary);font-weight:600}.level-badge{background:linear-gradient(135deg,var(--gold) 0%,var(--bronze) 100%);color:var(--primary-foreground);padding:3px 8px;border-radius:20px;font-size:clamp(9px,1.6vw,10px);font-weight:700;flex-shrink:0}@media(min-width:1080px)and (max-width:1399px){:host{height:auto;min-height:0;align-self:stretch}.card{height:auto;min-height:100%}.card-content{height:auto;flex:0 1 auto}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:auto;flex:0 0 auto;gap:clamp(4px,1vw,6px)}.stat-item{flex-direction:column;align-items:stretch;justify-content:center;padding:clamp(5px,1.2vw,8px) clamp(3px,.8vw,5px);border-radius:var(--inset-radius)}.stat-main{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:2px 4px;line-height:1.2}.stat-value{margin-bottom:0;font-size:clamp(10px,2.2vw,12px);white-space:nowrap}.stat-value.streak{gap:2px}.stat-label{font-size:clamp(8px,1.6vw,9px);text-transform:none;letter-spacing:0;color:var(--muted-foreground);white-space:nowrap}.fire-icon{font-size:10px}}@media(min-width:677px)and (max-width:1079px){:host{height:auto;min-height:0;align-self:stretch}.card{height:auto;min-height:100%;overflow:hidden}.card-content{height:auto;min-height:0;flex:1 1 auto;overflow:visible}.card-top{flex-shrink:0}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,auto);flex:0 0 auto;min-height:0;gap:clamp(8px,1.2vw,12px);align-content:start}.stat-main{display:contents}.stat-item{flex-direction:column;align-items:center;justify-content:center;min-height:80px;height:auto;padding:clamp(10px,1.5vw,14px) clamp(10px,1.2vw,12px);border-radius:var(--inset-radius)}.stat-value{margin-bottom:4px;font-size:clamp(15px,2.6vw,20px);white-space:normal}.stat-label{font-size:clamp(10px,1.5vw,11px);text-transform:uppercase;letter-spacing:.6px;color:var(--muted-foreground);white-space:normal}.stat-item{min-height:88px}}@media(min-width:1400px){:host{height:auto;min-height:0;align-self:stretch}.card{height:auto;min-height:100%;overflow:hidden}.card-content{height:auto;min-height:0;flex:1 1 auto;overflow:visible}.card-top{flex-shrink:0}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,auto);flex:0 0 auto;min-height:0;gap:clamp(8px,1.2vw,12px);align-content:start}.stat-main{display:contents}.stat-item{flex-direction:column;align-items:center;justify-content:center;min-height:80px;height:auto;padding:clamp(10px,1.5vw,14px) clamp(10px,1.2vw,12px);border-radius:var(--inset-radius)}.stat-value{margin-bottom:4px;font-size:clamp(15px,2.6vw,20px);white-space:normal}.stat-label{font-size:clamp(10px,1.5vw,11px);text-transform:uppercase;letter-spacing:.6px;color:var(--muted-foreground);white-space:normal}}@media(max-width:676px){:host{height:auto;min-height:0;align-self:stretch}.card{height:auto;min-height:0;padding:clamp(14px,4vw,18px);border-radius:var(--surface-radius)}.card-content{height:auto;min-height:0;flex:0 1 auto;gap:clamp(12px,3vw,16px);overflow:visible}.card-top{gap:clamp(14px,3.4vw,18px)}.rank-section{display:flex;flex-direction:column;align-items:center;gap:clamp(12px,3vw,14px);width:100%}.rank-container{width:clamp(84px,22vw,100px);height:clamp(84px,22vw,100px)}.rank-number{font-size:clamp(30px,8vw,38px)}.percentile-badge{width:100%;max-width:100%;justify-content:center;align-items:center;text-align:center;padding:clamp(10px,2.6vw,12px) clamp(14px,3.6vw,18px);font-size:clamp(12px,3.2vw,13px);border-radius:var(--radius-sm);line-height:1.35}.percentile-icon{font-size:clamp(14px,3.6vw,16px)}.percentile-text{text-align:center}.avatar-section{width:100%;padding:clamp(12px,3.2vw,14px);gap:clamp(12px,3vw,14px);border-radius:var(--inset-radius)}.avatar{width:clamp(44px,12vw,52px);height:clamp(44px,12vw,52px);font-size:clamp(14px,3.6vw,16px)}.avatar-name{font-size:clamp(15px,4vw,17px);white-space:normal;line-height:1.25}.avatar-earnings{font-size:clamp(13px,3.6vw,15px)}.level-badge{padding:clamp(5px,1.4vw,7px) clamp(10px,2.4vw,12px);font-size:clamp(10px,2.6vw,11px)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,auto);flex:0 0 auto;gap:clamp(8px,2.2vw,10px);width:100%}.stat-main{display:contents}.stat-item{flex-direction:column;align-items:center;justify-content:center;min-height:clamp(68px,18vw,80px);padding:clamp(10px,2.8vw,12px) clamp(8px,2vw,10px);border-radius:var(--inset-radius)}.stat-value{margin-bottom:clamp(4px,1vw,6px);font-size:clamp(16px,4.2vw,20px);line-height:1.15;white-space:normal}.stat-label{font-size:clamp(9px,2.4vw,10px);text-transform:uppercase;letter-spacing:.05em;line-height:1.25;text-align:center}}@media(max-width:380px){.card{padding:12px}.rank-container{width:76px;height:76px}.rank-number{font-size:26px}.avatar{width:42px;height:42px}.stat-item{min-height:62px;padding:8px 6px}.stat-value{font-size:15px}}@media(min-width:1024px){.card{border-radius:20px}}';
1031
- var xr = Object.defineProperty, wr = Object.getOwnPropertyDescriptor, y = (t, e, r, i) => {
1032
- for (var a = i > 1 ? void 0 : i ? wr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1033
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1034
- return i && a && xr(e, r, a), a;
1035
- };
1036
- let x = class extends u {
1037
- constructor() {
1038
- super(...arguments), this.rank = 42, this.percentile = 5, this.username = "CyberNinja", this.earnings = "$847.2K", this.winRate = 71, this.gamesPlayed = 1284, this.winStreak = 7, this.level = 47;
1039
- }
1040
- get initials() {
1041
- return this.username.slice(0, 2).toUpperCase();
1042
- }
1043
- render() {
1044
- return vr(this);
1045
- }
1046
- };
1047
- x.styles = [b, f(br)];
1048
- y([
1049
- p({ type: Number })
1050
- ], x.prototype, "rank", 2);
1051
- y([
1052
- p({ type: Number })
1053
- ], x.prototype, "percentile", 2);
1054
- y([
1055
- p({ type: String })
1056
- ], x.prototype, "username", 2);
1057
- y([
1058
- p({ type: String })
1059
- ], x.prototype, "earnings", 2);
1060
- y([
1061
- p({ type: Number })
1062
- ], x.prototype, "winRate", 2);
1063
- y([
1064
- p({ type: Number })
1065
- ], x.prototype, "gamesPlayed", 2);
1066
- y([
1067
- p({ type: Number })
1068
- ], x.prototype, "winStreak", 2);
1069
- y([
1070
- p({ type: Number })
1071
- ], x.prototype, "level", 2);
1072
- x = y([
1073
- v(Dt)
1074
- ], x);
1075
- const yr = ".section{margin-bottom:clamp(1.5rem,5vw,3rem);min-width:0}.section-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.section-title{font-size:1.125rem;font-weight:700;margin:0}.elite-badge{font-size:.65rem;padding:.2rem .5rem;border-radius:var(--radius-sm);background:var(--medal-gold-bg);border:1px solid var(--medal-gold-border);color:var(--gold);font-weight:600;letter-spacing:.04em;text-transform:uppercase}@media(max-width:639px){.section-title{font-size:1rem}}:host{display:block;width:100%}.ranking-section{--ranking-podium-min-h: clamp(300px, min(36vh, 36dvh), 420px);--ranking-player-stats-min-h: clamp(300px, min(36vh, 36dvh), 420px)}.ranking-grid{display:grid;grid-template-columns:1fr;gap:clamp(.75rem,2vw,1rem);width:100%;align-items:stretch}@media(min-width:1080px){.ranking-grid.has-pair{grid-template-columns:minmax(0,1.38fr) minmax(0,.82fr);min-height:var(--ranking-podium-min-h)}}.ranking-column{display:flex;flex-direction:column;min-width:0;min-height:0}.ranking-column--player-stats{min-height:var(--ranking-player-stats-min-h)}.ranking-column--player-stats sf-leaderboard-player-stats-card{flex:1 1 auto;width:100%;min-height:0}.podium-slot{display:flex;flex:1 1 auto;min-width:0;min-height:var(--ranking-podium-min-h);overflow:hidden}.podium-slot>sf-leaderboard-podium{flex:1 1 auto;width:100%;height:100%;min-height:100%}@media(max-width:1079px){.ranking-section{--ranking-podium-min-h: clamp(280px, min(38vh, 38dvh), 400px);--ranking-player-stats-min-h: clamp(280px, min(34vh, 34dvh), 360px)}}@media(min-width:677px)and (max-width:1079px){.ranking-section{--ranking-player-stats-min-h: clamp(360px, min(42vh, 42dvh), 440px)}}@media(max-width:676px){.ranking-column--player-stats{min-height:0;height:auto}}@media(min-width:1280px){.ranking-section{--ranking-podium-min-h: clamp(340px, min(38vh, 38dvh), 460px);--ranking-player-stats-min-h: clamp(340px, min(38vh, 38dvh), 460px)}}@media(max-width:639px){.ranking-section{--ranking-podium-min-h: clamp(280px, min(44dvh, 46vh), 360px);--ranking-player-stats-min-h: clamp(240px, min(34dvh, 36vh), 288px)}}@media(max-width:380px){.ranking-section{--ranking-podium-min-h: clamp(268px, 48dvh, 340px);--ranking-player-stats-min-h: clamp(248px, 44dvh, 300px)}}";
1076
- var $r = Object.defineProperty, _r = Object.getOwnPropertyDescriptor, we = (t, e, r, i) => {
1077
- for (var a = i > 1 ? void 0 : i ? _r(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1078
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1079
- return i && a && $r(e, r, a), a;
1080
- };
1081
- let G = class extends u {
1082
- constructor() {
1083
- super(...arguments), this.lookupPlayers = [];
1084
- }
1085
- get hasPair() {
1086
- return this.ranking?.podium != null && this.ranking?.playerStats != null;
1087
- }
1088
- resolvePlayer(t) {
1089
- return this.lookupPlayers.find((e) => e.rank === t.rank);
1090
- }
1091
- renderPlayerStatsCard(t) {
1092
- const e = this.resolvePlayer(t), r = t.message?.match(/(\d+)\s*%/), i = t.percentile ?? (r ? Number(r[1]) : 5);
1093
- return o`
1094
- <sf-leaderboard-player-stats-card
1095
- rank="${t.rank}"
1096
- percentile="${i}"
1097
- username="${t.username ?? e?.username ?? "You"}"
1098
- earnings="${t.earnings ?? (e ? xe(e.totalWinnings) : "$0")}"
1099
- winRate="${t.winRate ?? e?.winRate ?? 0}"
1100
- gamesPlayed="${t.gamesPlayed ?? e?.gamesPlayed ?? 0}"
1101
- winStreak="${t.winStreak ?? e?.streak ?? 0}"
1102
- level="${t.level ?? e?.level ?? 0}"
1103
- ></sf-leaderboard-player-stats-card>
1104
- `;
1105
- }
1106
- render() {
1107
- if (!Kt(this.ranking)) return d;
1108
- const { podium: t, playerStats: e } = this.ranking;
1109
- return o`
1110
- <section class="section ranking-section">
1111
- <div class="ranking-grid ${this.hasPair ? "has-pair" : "single"}">
1112
- ${t ? o`
1113
- <div class="ranking-column ranking-column--podium">
1114
- <div class="section-header">
1115
- <h2 class="section-title">
1116
- ${t.title ?? "Top Champions"}
1117
- </h2>
1118
- ${t.badge ? o`<span class="elite-badge">${t.badge}</span>` : d}
1119
- </div>
1120
- <div class="podium-slot">
1121
- <sf-leaderboard-podium
1122
- .players=${t.players}
1123
- ></sf-leaderboard-podium>
1124
- </div>
1125
- </div>
1126
- ` : d}
1127
- ${e ? o`
1128
- <div class="ranking-column ranking-column--player-stats">
1129
- <div class="section-header">
1130
- <h2 class="section-title">
1131
- ${e.title ?? "Your Position"}
1132
- </h2>
1133
- </div>
1134
- ${this.renderPlayerStatsCard(e)}
1135
- </div>
1136
- ` : d}
1137
- </div>
1138
- </section>
1139
- `;
1140
- }
1141
- };
1142
- G.styles = [b, f(yr)];
1143
- we([
1144
- p({ attribute: !1 })
1145
- ], G.prototype, "ranking", 2);
1146
- we([
1147
- p({ attribute: !1 })
1148
- ], G.prototype, "lookupPlayers", 2);
1149
- G = we([
1150
- v(Bt)
1151
- ], G);
1152
- function kr(t) {
1153
- return o`<div class="filters">
1154
- <div class="search-wrapper">
1155
- <span class="search-icon">🔍</span>
1156
- <input
1157
- type="text"
1158
- class="search-input"
1159
- placeholder="Search players..."
1160
- .value="${t.searchQuery}"
1161
- @input="${t.handleSearchInput}"
1162
- />
1163
- </div>
1164
-
1165
- <div class="timeframe-tabs">${t.renderTimeframeTabs()}</div>
1166
-
1167
- <select
1168
- class="category-select"
1169
- .value="${t.activeCategory}"
1170
- @change="${t.handleCategoryChange}"
1171
- >
1172
- ${t.renderCategoryOptions()}
1173
- </select>
1174
- </div>
1175
- `;
1176
- }
1177
- const Ar = ":host{display:block}.filters{display:flex;flex-direction:column;gap:.75rem;width:100%;min-width:0}@media(min-width:640px){.filters{flex-direction:row;flex-wrap:wrap;align-items:center;gap:1rem}}.search-wrapper{position:relative;flex:1}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted-foreground);font-size:.875rem}.search-input{width:100%;padding:.625rem 1rem .625rem 2.5rem;border-radius:var(--radius-sm);border:1px solid var(--surface-border-color);background:var(--inset-bg);color:var(--foreground);font-size:.875rem;font-family:inherit;outline:none;transition:border-color .2s ease}.search-input::placeholder{color:var(--muted-foreground)}.search-input:focus{border-color:var(--primary)}.timeframe-tabs{display:flex;align-items:center;gap:4px;padding:4px;background:var(--inset-bg);border:1px solid var(--inset-border);border-radius:var(--radius-sm);width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}@media(min-width:640px){.timeframe-tabs{width:auto;overflow-x:visible}}.tab-btn{padding:.375rem .75rem;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted-foreground);font-size:.75rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .2s ease}.tab-btn:hover{color:var(--foreground)}.tab-btn.active{background:var(--accent-gradient);color:var(--primary-foreground);box-shadow:var(--surface-shadow)}.category-select{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--surface-border-color);background:var(--surface-gradient);color:var(--foreground);font-size:.875rem;font-family:inherit;cursor:pointer;outline:none;width:100%;min-width:0;max-width:100%}@media(min-width:640px){.category-select{width:auto;min-width:140px}}.category-select:focus{border-color:var(--primary)}";
1178
- var Er = Object.defineProperty, Sr = Object.getOwnPropertyDescriptor, ce = (t, e, r, i) => {
1179
- for (var a = i > 1 ? void 0 : i ? Sr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1180
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1181
- return i && a && Er(e, r, a), a;
1182
- };
1183
- let L = class extends u {
1184
- constructor() {
1185
- super(...arguments), this.activeTimeframe = K, this.activeCategory = Q, this.searchQuery = "";
1186
- }
1187
- emit(t, e) {
1188
- this.dispatchEvent(
1189
- new CustomEvent(t, { detail: e, bubbles: !0, composed: !0 })
1190
- );
1191
- }
1192
- handleSearchInput(t) {
1193
- const e = t.target;
1194
- this.emit(fe, e.value);
1195
- }
1196
- handleTimeframeClick(t) {
1197
- this.emit(ge, t);
1198
- }
1199
- handleCategoryChange(t) {
1200
- const e = t.target;
1201
- this.emit(ue, e.value);
1202
- }
1203
- renderTimeframeTabs() {
1204
- return o`${Wt.map(
1205
- (t) => o`
1206
- <button
1207
- class="tab-btn ${this.activeTimeframe === t.value ? "active" : ""}"
1208
- @click="${() => this.handleTimeframeClick(t.value)}"
1209
- >
1210
- ${t.label}
1211
- </button>
1212
- `
1213
- )}`;
1214
- }
1215
- renderCategoryOptions() {
1216
- return o`${Yt.map(
1217
- (t) => o`<option value="${t.value}">${t.label}</option>`
1218
- )}`;
1219
- }
1220
- render() {
1221
- return kr(this);
1222
- }
1223
- };
1224
- L.styles = [b, f(Ar)];
1225
- ce([
1226
- p({ type: String })
1227
- ], L.prototype, "activeTimeframe", 2);
1228
- ce([
1229
- p({ type: String })
1230
- ], L.prototype, "activeCategory", 2);
1231
- ce([
1232
- p({ type: String })
1233
- ], L.prototype, "searchQuery", 2);
1234
- L = ce([
1235
- v(zt)
1236
- ], L);
1237
- function Pr(t) {
1238
- return o`<div class="badge ${t.size} ${t.rankClass}">
1239
- ${t.renderRankContent()}
1240
- </div>
1241
- ${t.renderTrend()}
1242
- `;
1243
- }
1244
- const zr = ":host{display:inline-flex;align-items:center;gap:.5rem}.badge{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--inset-radius);border:2px solid;font-family:var(--font-mono);font-weight:700;transition:all .3s ease}.badge.sm{width:32px;height:32px;font-size:.75rem}.badge.md{width:48px;height:48px;font-size:1rem}.badge.lg{width:64px;height:64px;font-size:1.25rem}.badge.rank-1{background:color-mix(in srgb,var(--place-first-table-icon, #ffd700) 22%,transparent);border-color:var(--place-first-table-icon, #ffd700);color:var(--place-first-table-icon, #ffd700);box-shadow:0 0 20px color-mix(in srgb,var(--place-first-table-icon, #ffd700) 35%,transparent)}.badge.rank-2{background:color-mix(in srgb,var(--place-second-table-icon, #c0c0c0) 18%,transparent);border-color:var(--place-second-table-icon, #c0c0c0);color:var(--place-second-table-icon, #c0c0c0);box-shadow:0 0 20px color-mix(in srgb,var(--place-second-table-icon, #c0c0c0) 30%,transparent)}.badge.rank-3{background:color-mix(in srgb,var(--place-third-table-icon, #cd7f32) 18%,transparent);border-color:var(--place-third-table-icon, #cd7f32);color:var(--place-third-table-icon, #cd7f32);box-shadow:0 0 20px color-mix(in srgb,var(--place-third-table-icon, #cd7f32) 30%,transparent)}.badge.rank-other{background:var(--color-base-2, #00114f);border-color:var(--color-base-2, #00114f);color:var(--color-surface-muted, #808090)}.icon{font-size:1em;line-height:1}.rank-number{font-size:.65em;margin-top:2px}.trend{display:flex;align-items:center;gap:2px;font-size:.75rem;font-weight:500}.trend.up{color:var(--color-success, #00d26a)}.trend.down{color:var(--color-error, #ff4757)}.trend.same{color:var(--color-surface-muted, #808090)}.trend-icon{font-size:.75rem}";
1245
- var Cr = Object.defineProperty, Rr = Object.getOwnPropertyDescriptor, J = (t, e, r, i) => {
1246
- for (var a = i > 1 ? void 0 : i ? Rr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1247
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1248
- return i && a && Cr(e, r, a), a;
1249
- };
1250
- let C = class extends u {
1251
- constructor() {
1252
- super(...arguments), this.rank = 1, this.size = "md", this.showTrend = !0;
1253
- }
1254
- get rankClass() {
1255
- return this.rank <= 3 ? `rank-${this.rank}` : "rank-other";
1256
- }
1257
- getIcon() {
1258
- return this.rank === 1 ? "👑" : this.rank === 2 ? "🥈" : this.rank === 3 ? "🥉" : "";
1259
- }
1260
- getTrend() {
1261
- if (!this.previousRank || !this.showTrend) return null;
1262
- const t = this.previousRank - this.rank;
1263
- return t > 0 ? { icon: "↑", class: "up", diff: `+${t}` } : t < 0 ? { icon: "↓", class: "down", diff: `${t}` } : { icon: "–", class: "same", diff: "0" };
1264
- }
1265
- renderRankContent() {
1266
- return this.rank <= 3 ? o`
1267
- <span class="icon">${this.getIcon()}</span>
1268
- <span class="rank-number">${this.rank}</span>
1269
- ` : o`<span>#${this.rank}</span>`;
1270
- }
1271
- renderTrend() {
1272
- const t = this.getTrend();
1273
- return t ? o`
1274
- <div class="trend ${t.class}">
1275
- <span class="trend-icon">${t.icon}</span>
1276
- <span>${t.diff}</span>
1277
- </div>
1278
- ` : o``;
1279
- }
1280
- render() {
1281
- return Pr(this);
1282
- }
1283
- };
1284
- C.styles = [b, f(zr)];
1285
- J([
1286
- p({ type: Number })
1287
- ], C.prototype, "rank", 2);
1288
- J([
1289
- p({ type: Number })
1290
- ], C.prototype, "previousRank", 2);
1291
- J([
1292
- p({ type: String })
1293
- ], C.prototype, "size", 2);
1294
- J([
1295
- p({ type: Boolean })
1296
- ], C.prototype, "showTrend", 2);
1297
- C = J([
1298
- v(Ot)
1299
- ], C);
1300
- function Or(t) {
1301
- return o`<div class="avatar ${t.size} ${t.highlight ? "highlight" : ""}">
1302
- ${t.renderAvatarContent()}
1303
- </div>
1304
- ${t.renderOnlineIndicator()}
1305
- `;
1306
- }
1307
- const Tr = ':host{display:inline-block;position:relative}.avatar{display:flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid var(--border);background:var(--secondary);color:var(--foreground);font-weight:700;overflow:hidden}.avatar.sm{width:32px;height:32px;font-size:.7rem}.avatar.md{width:48px;height:48px;font-size:.875rem}.avatar.lg{width:64px;height:64px;font-size:1.25rem}.avatar.xl{width:80px;height:80px;font-size:1.5rem}.avatar.highlight{border-color:var(--primary)}.avatar img{width:100%;height:100%;object-fit:cover}.online-indicator{position:absolute;bottom:-2px;right:-2px;width:12px;height:12px;background:var(--success);border-radius:50%;border:2px solid var(--surface-border-color)}.online-indicator:before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--success);animation:pulse-ring 1.5s ease-out infinite}@keyframes pulse-ring{0%{transform:scale(.8);opacity:1}to{transform:scale(2);opacity:0}}';
1308
- var Dr = Object.defineProperty, Lr = Object.getOwnPropertyDescriptor, B = (t, e, r, i) => {
1309
- for (var a = i > 1 ? void 0 : i ? Lr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1310
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1311
- return i && a && Dr(e, r, a), a;
1312
- };
1313
- let E = class extends u {
1314
- constructor() {
1315
- super(...arguments), this.username = "", this.avatar = "", this.size = "md", this.isOnline = !1, this.highlight = !1;
1316
- }
1317
- renderAvatarContent() {
1318
- return this.avatar ? o`<img src="${this.avatar}" alt="${this.username}" />` : o`<span>${Ue(this.username)}</span>`;
1319
- }
1320
- renderOnlineIndicator() {
1321
- return this.isOnline ? o`<span class="online-indicator"></span>` : o``;
1322
- }
1323
- render() {
1324
- return Or(this);
1325
- }
1326
- };
1327
- E.styles = [b, f(Tr)];
1328
- B([
1329
- p({ type: String })
1330
- ], E.prototype, "username", 2);
1331
- B([
1332
- p({ type: String })
1333
- ], E.prototype, "avatar", 2);
1334
- B([
1335
- p({ type: String })
1336
- ], E.prototype, "size", 2);
1337
- B([
1338
- p({ type: Boolean })
1339
- ], E.prototype, "isOnline", 2);
1340
- B([
1341
- p({ type: Boolean })
1342
- ], E.prototype, "highlight", 2);
1343
- E = B([
1344
- v(Tt)
1345
- ], E);
1346
- function jr(t) {
1347
- return o`<div class="table-container">
1348
- <div class="table-header">
1349
- <div class="col-rank">Rank</div>
1350
- <div class="col-player">Player</div>
1351
- <div class="col-games text-center hide-mobile">Games</div>
1352
- <div class="col-win-rate text-center hide-mobile">Win Rate</div>
1353
- <div class="col-streak text-center hide-mobile">Streak</div>
1354
- <div class="col-winnings text-right">Winnings</div>
1355
- </div>
1356
- <div class="table-body">${t.renderRows()}</div>
1357
- </div>
1358
- `;
1359
- }
1360
- const Br = ":host{display:block;width:100%}.col-rank{color:var(--table-col-rank-color, inherit);font-size:var(--table-col-rank-font-size, inherit)}.col-player{color:var(--table-col-player-color, inherit);font-size:var(--table-col-player-font-size, inherit)}.col-games{color:var(--table-col-games-color, inherit);font-size:var(--table-col-games-font-size, inherit)}.col-win-rate{color:var(--table-col-win-rate-color, inherit);font-size:var(--table-col-win-rate-font-size, inherit)}.col-streak{color:var(--table-col-streak-color, inherit);font-size:var(--table-col-streak-font-size, inherit)}.col-winnings{color:var(--table-col-winnings-color, inherit);font-size:var(--table-col-winnings-font-size, inherit)}.table-container{width:100%;max-width:100%;border-radius:var(--surface-radius);border:1px solid var(--surface-border-color);background:var(--surface-gradient);box-shadow:var(--surface-shadow);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.table-header{display:grid;grid-template-columns:80px 1fr 100px 100px 100px 120px;gap:1rem;padding:.75rem 1rem;background:var(--muted);border-bottom:1px solid var(--border);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-foreground)}@media(max-width:768px){.table-header{grid-template-columns:52px minmax(120px,1fr) minmax(72px,88px);gap:.5rem;padding:.625rem .75rem;font-size:.625rem}.table-header .hide-mobile{display:none}}@media(max-width:380px){.table-header{grid-template-columns:44px minmax(100px,1fr) 72px;padding:.5rem}}.table-body{display:flex;flex-direction:column}.table-row{display:grid;grid-template-columns:80px 1fr 100px 100px 100px 120px;gap:1rem;padding:.75rem 1rem;align-items:center;border-bottom:1px solid var(--border-subtle);cursor:pointer;transition:background .2s ease;animation:fade-in .3s ease-out forwards;opacity:0}@media(max-width:768px){.table-row{grid-template-columns:52px minmax(120px,1fr) minmax(72px,88px);gap:.5rem;padding:.625rem .75rem}.table-row .hide-mobile{display:none}}@media(max-width:380px){.table-row{grid-template-columns:44px minmax(100px,1fr) 72px;padding:.5rem}}.table-row:hover{background:var(--inset-hover-bg)}.table-row:hover .chevron{opacity:1}.table-row:last-child{border-bottom:none}.table-row.top-3{background:var(--accent-soft)}@keyframes fade-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.player-cell{display:flex;align-items:center;gap:.75rem;min-width:0}.player-details{min-width:0}.player-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-name.highlight{color:var(--primary)}.player-level{display:inline-block;font-size:.6rem;padding:2px 6px;border-radius:4px;border:1px solid var(--border);color:var(--muted-foreground);margin-top:2px}.stat-cell{display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.875rem;color:var(--muted-foreground)}.stat-cell .icon{font-size:.875rem;opacity:.5}.stat-cell.win-rate .icon,.stat-cell.win-rate.high{color:var(--success)}.stat-cell.streak{color:var(--gold)}.winnings-cell{display:flex;align-items:center;justify-content:flex-end;gap:.5rem}.winnings{font-family:var(--font-mono);font-weight:700}.winnings.highlight{color:var(--primary)}.chevron{color:var(--muted-foreground);opacity:0;transition:opacity .2s ease}.text-right{text-align:right}.text-center{text-align:center}";
1361
- var Nr = Object.defineProperty, Ur = Object.getOwnPropertyDescriptor, Me = (t, e, r, i) => {
1362
- for (var a = i > 1 ? void 0 : i ? Ur(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1363
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1364
- return i && a && Nr(e, r, a), a;
1365
- };
1366
- let ie = class extends u {
1367
- constructor() {
1368
- super(...arguments), this.players = [];
1369
- }
1370
- handlePlayerClick(t) {
1371
- this.dispatchEvent(
1372
- new CustomEvent(ve, {
1373
- detail: t,
1374
- bubbles: !0,
1375
- composed: !0
1376
- })
1377
- );
1378
- }
1379
- renderStreak(t) {
1380
- return t.streak > 0 ? o`<span class="icon">🔥</span>${t.streak}` : o`<span>-</span>`;
1381
- }
1382
- renderRows() {
1383
- return o`${this.players.map(
1384
- (t, e) => o`
1385
- <div
1386
- class="table-row ${t.rank <= 3 ? "top-3" : ""}"
1387
- style="animation-delay: ${e * 50}ms"
1388
- @click="${() => this.handlePlayerClick(t)}"
1389
- >
1390
- <div class="col-rank">
1391
- <sf-leaderboard-rank-badge
1392
- rank="${t.rank}"
1393
- previousRank="${t.previousRank || t.rank}"
1394
- size="sm"
1395
- ></sf-leaderboard-rank-badge>
1396
- </div>
1397
- <div class="col-player player-cell">
1398
- <sf-leaderboard-player-avatar
1399
- username="${t.username}"
1400
- avatar="${t.avatar || ""}"
1401
- size="sm"
1402
- ?isOnline="${t.isOnline}"
1403
- ?highlight="${t.rank <= 3}"
1404
- ></sf-leaderboard-player-avatar>
1405
- <div class="player-details">
1406
- <div class="player-name ${t.rank <= 3 ? "highlight" : ""}">
1407
- ${t.username}
1408
- </div>
1409
- <span class="player-level">LVL ${t.level}</span>
1410
- </div>
1411
- </div>
1412
- <div class="col-games stat-cell hide-mobile">
1413
- <span class="icon">🏆</span>
1414
- ${t.gamesPlayed.toLocaleString()}
1415
- </div>
1416
- <div
1417
- class="col-win-rate stat-cell win-rate ${t.winRate >= 60 ? "high" : ""} hide-mobile"
1418
- >
1419
- <span class="icon">🎯</span>
1420
- ${t.winRate}%
1421
- </div>
1422
- <div class="col-streak stat-cell streak hide-mobile">
1423
- ${this.renderStreak(t)}
1424
- </div>
1425
- <div class="col-winnings winnings-cell">
1426
- <span class="winnings ${t.rank <= 3 ? "highlight" : ""}">
1427
- ${xe(t.totalWinnings)}
1428
- </span>
1429
- <span class="chevron">→</span>
1430
- </div>
1431
- </div>
1432
- `
1433
- )}`;
1434
- }
1435
- render() {
1436
- return jr(this);
1437
- }
1438
- };
1439
- ie.styles = [b, f(Br)];
1440
- Me([
1441
- p({ type: Array })
1442
- ], ie.prototype, "players", 2);
1443
- ie = Me([
1444
- v(Ct)
1445
- ], ie);
1446
- const Ir = ".section{margin-bottom:clamp(1.5rem,5vw,3rem);min-width:0}.section-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.section-title{font-size:1.125rem;font-weight:700;margin:0}.elite-badge{font-size:.65rem;padding:.2rem .5rem;border-radius:var(--radius-sm);background:var(--medal-gold-bg);border:1px solid var(--medal-gold-border);color:var(--gold);font-weight:600;letter-spacing:.04em;text-transform:uppercase}@media(max-width:639px){.section-title{font-size:1rem}}:host{display:block;width:100%}.table-section{display:flex;flex-direction:column;gap:1rem;min-width:0}.table-section-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem}.table-subtitle{font-size:.875rem;color:var(--muted-foreground)}.table-section sf-leaderboard-table{width:100%}@media(max-width:639px){.table-section-header{flex-direction:column;align-items:flex-start}}";
1447
- var Mr = Object.defineProperty, Fr = Object.getOwnPropertyDescriptor, Fe = (t, e, r, i) => {
1448
- for (var a = i > 1 ? void 0 : i ? Fr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1449
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1450
- return i && a && Mr(e, r, a), a;
1451
- };
1452
- let ne = class extends u {
1453
- get timeframe() {
1454
- return this.section.filters?.timeframe ?? K;
1455
- }
1456
- get category() {
1457
- return this.section.filters?.category ?? Q;
1458
- }
1459
- get searchQuery() {
1460
- return this.section.filters?.searchQuery ?? "";
1461
- }
1462
- onTimeframeChange(t) {
1463
- t.stopPropagation(), this.dispatchEvent(
1464
- new CustomEvent(ge, {
1465
- detail: t.detail,
1466
- bubbles: !0,
1467
- composed: !0
1468
- })
1469
- );
1470
- }
1471
- onCategoryChange(t) {
1472
- t.stopPropagation(), this.dispatchEvent(
1473
- new CustomEvent(ue, {
1474
- detail: t.detail,
1475
- bubbles: !0,
1476
- composed: !0
1477
- })
1478
- );
1479
- }
1480
- onSearchChange(t) {
1481
- t.stopPropagation(), this.dispatchEvent(
1482
- new CustomEvent(fe, {
1483
- detail: t.detail,
1484
- bubbles: !0,
1485
- composed: !0
1486
- })
1487
- );
1488
- }
1489
- onPlayerSelect(t) {
1490
- t.stopPropagation(), this.dispatchEvent(
1491
- new CustomEvent(ve, {
1492
- detail: t.detail,
1493
- bubbles: !0,
1494
- composed: !0
1495
- })
1496
- );
1497
- }
1498
- render() {
1499
- return this.section ? o`
1500
- <section class="section table-section">
1501
- ${this.section.title || this.section.subtitle ? o`
1502
- <div class="table-section-header">
1503
- ${this.section.title ? o`<h2 class="section-title">${this.section.title}</h2>` : d}
1504
- ${this.section.subtitle ? o`<span class="table-subtitle">${this.section.subtitle}</span>` : d}
1505
- </div>
1506
- ` : d}
1507
- ${this.section.filters ? o`
1508
- <sf-leaderboard-filters
1509
- activeTimeframe=${this.timeframe}
1510
- activeCategory=${this.category}
1511
- searchQuery=${this.searchQuery}
1512
- @timeframe-change=${this.onTimeframeChange}
1513
- @category-change=${this.onCategoryChange}
1514
- @search-change=${this.onSearchChange}
1515
- ></sf-leaderboard-filters>
1516
- ` : d}
1517
- <sf-leaderboard-table
1518
- .players=${this.section.players}
1519
- @player-select=${this.onPlayerSelect}
1520
- ></sf-leaderboard-table>
1521
- </section>
1522
- ` : d;
1523
- }
1524
- };
1525
- ne.styles = [b, f(Ir)];
1526
- Fe([
1527
- p({ attribute: !1 })
1528
- ], ne.prototype, "section", 2);
1529
- ne = Fe([
1530
- v(Nt)
1531
- ], ne);
1532
- const Hr = ":host{display:block;width:100%}.page-footer{border-top:1px solid var(--border);margin-top:clamp(1.5rem,4vw,3rem);padding-top:1rem;width:100%}.page-footer p{margin:0;text-align:center;font-size:.875rem;color:var(--muted-foreground)}";
1533
- var Vr = Object.defineProperty, Wr = Object.getOwnPropertyDescriptor, He = (t, e, r, i) => {
1534
- for (var a = i > 1 ? void 0 : i ? Wr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1535
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1536
- return i && a && Vr(e, r, a), a;
1537
- };
1538
- let se = class extends u {
1539
- constructor() {
1540
- super(...arguments), this.text = "";
1541
- }
1542
- render() {
1543
- return this.text ? o`
1544
- <footer class="page-footer">
1545
- <p>${this.text}</p>
1546
- </footer>
1547
- ` : d;
1548
- }
1549
- };
1550
- se.styles = [b, f(Hr)];
1551
- He([
1552
- p({ type: String })
1553
- ], se.prototype, "text", 2);
1554
- se = He([
1555
- v(Ut)
1556
- ], se);
1557
- var Yr = Object.defineProperty, Gr = Object.getOwnPropertyDescriptor, Ve = (t, e, r, i) => {
1558
- for (var a = i > 1 ? void 0 : i ? Gr(e, r) : e, n = t.length - 1, s; n >= 0; n--)
1559
- (s = t[n]) && (a = (i ? s(e, r, a) : s(a)) || a);
1560
- return i && a && Yr(e, r, a), a;
1561
- };
1562
- let oe = class extends u {
1563
- constructor() {
1564
- super(...arguments), this.data = qt();
1565
- }
1566
- get refreshContext() {
1567
- const t = this.data.table?.filters;
1568
- return {
1569
- timeframe: t?.timeframe ?? K,
1570
- category: t?.category ?? Q
1571
- };
1572
- }
1573
- get footerText() {
1574
- return this.data.footer?.text ?? this.data.table?.footer?.text ?? "";
1575
- }
1576
- get rankingLookupPlayers() {
1577
- const t = this.data.table?.players ?? [], e = this.data.ranking?.podium?.players ?? [];
1578
- return [...t, ...e];
1579
- }
1580
- renderHeader() {
1581
- return this.data.header ? o`
1582
- <sf-leaderboard-header-section
1583
- .section=${this.data.header}
1584
- .refreshContext=${this.refreshContext}
1585
- ></sf-leaderboard-header-section>
1586
- ` : d;
1587
- }
1588
- renderStats() {
1589
- return this.data.stats?.items?.length ? o`
1590
- <sf-leaderboard-stats-section
1591
- .section=${this.data.stats}
1592
- ></sf-leaderboard-stats-section>
1593
- ` : d;
1594
- }
1595
- renderRanking() {
1596
- return this.data.ranking ? o`
1597
- <sf-leaderboard-ranking-section
1598
- .ranking=${this.data.ranking}
1599
- .lookupPlayers=${this.rankingLookupPlayers}
1600
- ></sf-leaderboard-ranking-section>
1601
- ` : d;
1602
- }
1603
- renderTable() {
1604
- return this.data.table ? o`
1605
- <sf-leaderboard-table-section
1606
- .section=${this.data.table}
1607
- @timeframe-change=${this.onTimeframeChange}
1608
- @category-change=${this.onCategoryChange}
1609
- @search-change=${this.onSearchChange}
1610
- @player-select=${this.onPlayerSelect}
1611
- ></sf-leaderboard-table-section>
1612
- ` : d;
1613
- }
1614
- renderFooter() {
1615
- return this.footerText ? o`
1616
- <sf-leaderboard-footer-section
1617
- text=${this.footerText}
1618
- ></sf-leaderboard-footer-section>
1619
- ` : d;
1620
- }
1621
- onTimeframeChange(t) {
1622
- t.stopPropagation(), this.dispatchEvent(
1623
- new CustomEvent(ge, {
1624
- detail: { timeframe: t.detail },
1625
- bubbles: !0,
1626
- composed: !0
1627
- })
1628
- );
1629
- }
1630
- onCategoryChange(t) {
1631
- t.stopPropagation(), this.dispatchEvent(
1632
- new CustomEvent(ue, {
1633
- detail: { category: t.detail },
1634
- bubbles: !0,
1635
- composed: !0
1636
- })
1637
- );
1638
- }
1639
- onSearchChange(t) {
1640
- t.stopPropagation(), this.dispatchEvent(
1641
- new CustomEvent(fe, {
1642
- detail: { query: t.detail },
1643
- bubbles: !0,
1644
- composed: !0
1645
- })
1646
- );
1647
- }
1648
- onPlayerSelect(t) {
1649
- t.stopPropagation(), this.dispatchEvent(
1650
- new CustomEvent(ve, {
1651
- detail: { player: t.detail },
1652
- bubbles: !0,
1653
- composed: !0
1654
- })
1655
- );
1656
- }
1657
- render() {
1658
- return Zt(this);
1659
- }
1660
- };
1661
- oe.styles = [b, f(Xt)];
1662
- Ve([
1663
- p({ attribute: !1 })
1664
- ], oe.prototype, "data", 2);
1665
- oe = Ve([
1666
- v(St)
1667
- ], oe);
1668
- rt(Je);
1669
- //# sourceMappingURL=components.bundle.js.map