@oddsmith/ui 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -115
  3. package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json +9 -0
  4. package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json.js +13 -0
  5. package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json.js.map +1 -0
  6. package/dist/components/os-leaderboard-casino/assets/fallback/config.json +8 -0
  7. package/dist/components/os-leaderboard-casino/assets/fallback/defaults/glam-sections.json +564 -0
  8. package/dist/components/os-leaderboard-casino/assets/fallback/fonts.json +3 -0
  9. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json +5 -0
  10. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js +12 -0
  11. package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js.map +1 -0
  12. package/dist/components/os-leaderboard-casino/assets/fallback/manifest.json +6 -0
  13. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json +38 -0
  14. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js +10 -0
  15. package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js.map +1 -0
  16. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json +601 -0
  17. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js +8 -0
  18. package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js.map +1 -0
  19. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json +69 -0
  20. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js +73 -0
  21. package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js.map +1 -0
  22. package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg +7 -0
  23. package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg.js +12 -0
  24. package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg.js.map +1 -0
  25. package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg +7 -0
  26. package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg.js +12 -0
  27. package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg.js.map +1 -0
  28. package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg +5 -0
  29. package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg.js +10 -0
  30. package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg.js.map +1 -0
  31. package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg +10 -0
  32. package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg.js +15 -0
  33. package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg.js.map +1 -0
  34. package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg +5 -0
  35. package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg.js +10 -0
  36. package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg.js.map +1 -0
  37. package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg +5 -0
  38. package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg.js +10 -0
  39. package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg.js.map +1 -0
  40. package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg +8 -0
  41. package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg.js +13 -0
  42. package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg.js.map +1 -0
  43. package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg +4 -0
  44. package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg.js +9 -0
  45. package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg.js.map +1 -0
  46. package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg +5 -0
  47. package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg.js +10 -0
  48. package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg.js.map +1 -0
  49. package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg +5 -0
  50. package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg.js +10 -0
  51. package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg.js.map +1 -0
  52. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg +4 -0
  53. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg.js +9 -0
  54. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg.js.map +1 -0
  55. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg +4 -0
  56. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg.js +9 -0
  57. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg.js.map +1 -0
  58. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg +4 -0
  59. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg.js +9 -0
  60. package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg.js.map +1 -0
  61. package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg +7 -0
  62. package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg.js +12 -0
  63. package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg.js.map +1 -0
  64. package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg +5 -0
  65. package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg.js +10 -0
  66. package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg.js.map +1 -0
  67. package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg +4 -0
  68. package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg.js +9 -0
  69. package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg.js.map +1 -0
  70. package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg +5 -0
  71. package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg.js +10 -0
  72. package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg.js.map +1 -0
  73. package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg +4 -0
  74. package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg.js +9 -0
  75. package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg.js.map +1 -0
  76. package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg +5 -0
  77. package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg.js +10 -0
  78. package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg.js.map +1 -0
  79. package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg +5 -0
  80. package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg.js +10 -0
  81. package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg.js.map +1 -0
  82. package/dist/components/os-leaderboard-casino/assets/images/games/cards.png +0 -0
  83. package/dist/components/os-leaderboard-casino/assets/images/games/cards.png.js +5 -0
  84. package/dist/components/os-leaderboard-casino/assets/images/games/cards.png.js.map +1 -0
  85. package/dist/components/os-leaderboard-casino/assets/images/games/chips.png +0 -0
  86. package/dist/components/os-leaderboard-casino/assets/images/games/chips.png.js +5 -0
  87. package/dist/components/os-leaderboard-casino/assets/images/games/chips.png.js.map +1 -0
  88. package/dist/components/os-leaderboard-casino/assets/images/games/dice.png +0 -0
  89. package/dist/components/os-leaderboard-casino/assets/images/games/dice.png.js +5 -0
  90. package/dist/components/os-leaderboard-casino/assets/images/games/dice.png.js.map +1 -0
  91. package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png +0 -0
  92. package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png.js +5 -0
  93. package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png.js.map +1 -0
  94. package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png +0 -0
  95. package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png.js +5 -0
  96. package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png.js.map +1 -0
  97. package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png +0 -0
  98. package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png.js +5 -0
  99. package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png.js.map +1 -0
  100. package/dist/components/os-leaderboard-casino/assets/images/logo.png +0 -0
  101. package/dist/components/os-leaderboard-casino/constants/defaults.js +9 -0
  102. package/dist/components/os-leaderboard-casino/constants/defaults.js.map +1 -0
  103. package/dist/components/os-leaderboard-casino/constants/tags.js +15 -0
  104. package/dist/components/os-leaderboard-casino/constants/tags.js.map +1 -0
  105. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js +20 -0
  106. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js.map +1 -0
  107. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js +152 -0
  108. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js.map +1 -0
  109. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js +5 -0
  110. package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js.map +1 -0
  111. package/dist/components/os-leaderboard-casino/index.js +39 -0
  112. package/dist/components/os-leaderboard-casino/index.js.map +1 -0
  113. package/dist/components/os-leaderboard-casino/integration/assemble-assets.js +48 -0
  114. package/dist/components/os-leaderboard-casino/integration/assemble-assets.js.map +1 -0
  115. package/dist/components/os-leaderboard-casino/integration/assets-context.js +64 -0
  116. package/dist/components/os-leaderboard-casino/integration/assets-context.js.map +1 -0
  117. package/dist/components/os-leaderboard-casino/integration/load-assets.js +22 -0
  118. package/dist/components/os-leaderboard-casino/integration/load-assets.js.map +1 -0
  119. package/dist/components/os-leaderboard-casino/integration/resolve-input.js +99 -0
  120. package/dist/components/os-leaderboard-casino/integration/resolve-input.js.map +1 -0
  121. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js +46 -0
  122. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js.map +1 -0
  123. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js +74 -0
  124. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js.map +1 -0
  125. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js +5 -0
  126. package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js.map +1 -0
  127. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js +116 -0
  128. package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js.map +1 -0
  129. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js +89 -0
  130. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js.map +1 -0
  131. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js +5 -0
  132. package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js.map +1 -0
  133. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js +18 -0
  134. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js.map +1 -0
  135. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js +38 -0
  136. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js.map +1 -0
  137. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js +5 -0
  138. package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js.map +1 -0
  139. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js +15 -0
  140. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js.map +1 -0
  141. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js +86 -0
  142. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js.map +1 -0
  143. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js +5 -0
  144. package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js.map +1 -0
  145. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js +34 -0
  146. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js.map +1 -0
  147. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js +159 -0
  148. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js.map +1 -0
  149. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js +5 -0
  150. package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js.map +1 -0
  151. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js +33 -0
  152. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js.map +1 -0
  153. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js +73 -0
  154. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js.map +1 -0
  155. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js +5 -0
  156. package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js.map +1 -0
  157. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js +8 -0
  158. package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js.map +1 -0
  159. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js +57 -0
  160. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js.map +1 -0
  161. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js +17 -0
  162. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js.map +1 -0
  163. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js +287 -0
  164. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js.map +1 -0
  165. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js +5 -0
  166. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js.map +1 -0
  167. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js +16 -0
  168. package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js.map +1 -0
  169. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js +18 -0
  170. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js.map +1 -0
  171. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js +134 -0
  172. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js.map +1 -0
  173. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js +5 -0
  174. package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js.map +1 -0
  175. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js +34 -0
  176. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js.map +1 -0
  177. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js +67 -0
  178. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js.map +1 -0
  179. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js +5 -0
  180. package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js.map +1 -0
  181. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js +38 -0
  182. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js.map +1 -0
  183. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js +182 -0
  184. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js.map +1 -0
  185. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js +5 -0
  186. package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js.map +1 -0
  187. package/dist/components/os-leaderboard-casino/services/adapter.service.js +49 -0
  188. package/dist/components/os-leaderboard-casino/services/adapter.service.js.map +1 -0
  189. package/dist/components/os-leaderboard-casino/services/icon.service.js +192 -0
  190. package/dist/components/os-leaderboard-casino/services/icon.service.js.map +1 -0
  191. package/dist/components/os-leaderboard-casino/theme/prize-resolve.js +11 -0
  192. package/dist/components/os-leaderboard-casino/theme/prize-resolve.js.map +1 -0
  193. package/dist/components/os-leaderboard-casino/theme/styles.js +179 -0
  194. package/dist/components/os-leaderboard-casino/theme/styles.js.map +1 -0
  195. package/dist/components/os-leaderboard-casino/theme/vip-icons.js +6 -0
  196. package/dist/components/os-leaderboard-casino/theme/vip-icons.js.map +1 -0
  197. package/dist/components/os-leaderboard-casino/theme/vip-mark.js +20 -0
  198. package/dist/components/os-leaderboard-casino/theme/vip-mark.js.map +1 -0
  199. package/dist/components/os-leaderboard-casino/types/data.js +7 -0
  200. package/dist/components/os-leaderboard-casino/types/data.js.map +1 -0
  201. package/dist/components/os-leaderboard-casino/types/events.js +8 -0
  202. package/dist/components/os-leaderboard-casino/types/events.js.map +1 -0
  203. package/dist/components/os-leaderboard-casino/types/state.js +12 -0
  204. package/dist/components/os-leaderboard-casino/types/state.js.map +1 -0
  205. package/dist/index.d.ts +734 -0
  206. package/dist/shared/lib/lit/component.js +8 -0
  207. package/dist/shared/lib/lit/component.js.map +1 -0
  208. package/dist/shared/lib/lit/safe-custom-element.js +7 -0
  209. package/dist/shared/lib/lit/safe-custom-element.js.map +1 -0
  210. package/dist/shared/lib/lit/scss.js +8 -0
  211. package/dist/shared/lib/lit/scss.js.map +1 -0
  212. package/dist/shared/vendor/keen-slider-keen-slider.es.js +538 -0
  213. package/dist/shared/vendor/keen-slider-keen-slider.es.js.map +1 -0
  214. package/package.json +36 -39
  215. package/.eleventy.cjs +0 -14
  216. package/custom-elements.json +0 -1539
  217. package/docs/_README/index.html +0 -4
  218. package/docs/api/index.html +0 -2100
  219. package/docs/components.bundle.js +0 -1669
  220. package/docs/components.bundle.js.map +0 -1
  221. package/docs/docs.css +0 -162
  222. package/docs/examples/index.html +0 -56
  223. package/docs/index.html +0 -53
  224. package/docs/install/index.html +0 -45
  225. package/docs/prism-okaidia.css +0 -123
  226. package/docs-src/.nojekyll +0 -0
  227. package/docs-src/_README.md +0 -7
  228. package/docs-src/_data/api.11tydata.js +0 -8
  229. package/docs-src/_includes/example.11ty.js +0 -35
  230. package/docs-src/_includes/footer.11ty.js +0 -6
  231. package/docs-src/_includes/header.11ty.js +0 -7
  232. package/docs-src/_includes/nav.11ty.js +0 -11
  233. package/docs-src/_includes/page.11ty.js +0 -32
  234. package/docs-src/_includes/relative-path.cjs +0 -9
  235. package/docs-src/api.11ty.js +0 -85
  236. package/docs-src/bundle.ts +0 -9
  237. package/docs-src/docs.css +0 -162
  238. package/docs-src/examples/index.md +0 -15
  239. package/docs-src/index.md +0 -39
  240. package/docs-src/install.md +0 -28
  241. package/docs-src/package.json +0 -3
  242. package/index.html +0 -19
  243. package/karma.conf.cjs +0 -24
  244. package/main.css +0 -210
  245. package/main.ts +0 -124
  246. package/previews/casino.ts +0 -12
  247. package/previews/catalog.ts +0 -94
  248. package/previews/leaderboard-v1.ts +0 -12
  249. package/previews/leaderboard-v2.ts +0 -17
  250. package/previews/sample-data.ts +0 -101
  251. package/previews/sf-leaderboard.ts +0 -100
  252. package/previews/sf-live-feed.ts +0 -15
  253. package/previews/streaks.ts +0 -40
  254. package/previews/types.ts +0 -18
  255. package/src/components/README.md +0 -16
  256. package/src/components/casino-leaderboard/casino-leaderboard.html +0 -80
  257. package/src/components/casino-leaderboard/casino-leaderboard.scss +0 -585
  258. package/src/components/casino-leaderboard/casino-leaderboard.ts +0 -136
  259. package/src/components/casino-leaderboard/data.ts +0 -111
  260. package/src/components/casino-leaderboard/index.ts +0 -5
  261. package/src/components/casino-leaderboard/todo.txt +0 -2
  262. package/src/components/casino-leaderboard/types.ts +0 -19
  263. package/src/components/leaderboard/components/leaderboard.ts +0 -373
  264. package/src/components/leaderboard/components/player-card.ts +0 -342
  265. package/src/components/leaderboard/components/ui.ts +0 -452
  266. package/src/components/leaderboard/data.ts +0 -152
  267. package/src/components/leaderboard/index.ts +0 -2
  268. package/src/components/leaderboard/main.ts +0 -42
  269. package/src/components/leaderboard/styles.ts +0 -67
  270. package/src/components/leaderboard/types.ts +0 -28
  271. package/src/components/leaderboard-v2/components/sf-leaderboard-player.ts +0 -451
  272. package/src/components/leaderboard-v2/components/sf-leaderboard-ui.ts +0 -512
  273. package/src/components/leaderboard-v2/components/sf-leaderboard.ts +0 -205
  274. package/src/components/leaderboard-v2/constants.ts +0 -16
  275. package/src/components/leaderboard-v2/demo/sample-data.ts +0 -152
  276. package/src/components/leaderboard-v2/events.ts +0 -13
  277. package/src/components/leaderboard-v2/icons.ts +0 -22
  278. package/src/components/leaderboard-v2/index.ts +0 -23
  279. package/src/components/leaderboard-v2/sf-leaderboard.html +0 -1
  280. package/src/components/leaderboard-v2/sf-leaderboard.scss +0 -382
  281. package/src/components/leaderboard-v2/tokens.ts +0 -35
  282. package/src/components/leaderboard-v2/types.ts +0 -30
  283. package/src/components/sf-leaderboard/index.ts +0 -77
  284. package/src/components/sf-leaderboard/sections/footer-section/footer-section.host.ts +0 -3
  285. package/src/components/sf-leaderboard/sections/footer-section/footer-section.html +0 -3
  286. package/src/components/sf-leaderboard/sections/footer-section/footer-section.scss +0 -18
  287. package/src/components/sf-leaderboard/sections/footer-section/footer-section.ts +0 -22
  288. package/src/components/sf-leaderboard/sections/header-section/header-section.host.ts +0 -14
  289. package/src/components/sf-leaderboard/sections/header-section/header-section.html +0 -27
  290. package/src/components/sf-leaderboard/sections/header-section/header-section.scss +0 -189
  291. package/src/components/sf-leaderboard/sections/header-section/header-section.ts +0 -70
  292. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.host.ts +0 -22
  293. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.html +0 -38
  294. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.scss +0 -99
  295. package/src/components/sf-leaderboard/sections/ranking-section/ranking-section.ts +0 -121
  296. package/src/components/sf-leaderboard/sections/stats-section/stats-section.host.ts +0 -8
  297. package/src/components/sf-leaderboard/sections/stats-section/stats-section.html +0 -6
  298. package/src/components/sf-leaderboard/sections/stats-section/stats-section.scss +0 -44
  299. package/src/components/sf-leaderboard/sections/stats-section/stats-section.ts +0 -41
  300. package/src/components/sf-leaderboard/sections/table-section/table-section.host.ts +0 -17
  301. package/src/components/sf-leaderboard/sections/table-section/table-section.html +0 -19
  302. package/src/components/sf-leaderboard/sections/table-section/table-section.scss +0 -37
  303. package/src/components/sf-leaderboard/sections/table-section/table-section.ts +0 -108
  304. package/src/components/sf-leaderboard/services/index.ts +0 -22
  305. package/src/components/sf-leaderboard/services/sf-leaderboard-data.service.ts +0 -54
  306. package/src/components/sf-leaderboard/services/sf-leaderboard.state.ts +0 -160
  307. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.host.ts +0 -7
  308. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.html +0 -10
  309. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.scss +0 -180
  310. package/src/components/sf-leaderboard/shared/components/activity-feed/activity-feed.ts +0 -88
  311. package/src/components/sf-leaderboard/shared/components/filters/filters.host.ts +0 -12
  312. package/src/components/sf-leaderboard/shared/components/filters/filters.html +0 -22
  313. package/src/components/sf-leaderboard/shared/components/filters/filters.scss +0 -122
  314. package/src/components/sf-leaderboard/shared/components/filters/filters.ts +0 -75
  315. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.host.ts +0 -9
  316. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.html +0 -5
  317. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.scss +0 -81
  318. package/src/components/sf-leaderboard/shared/components/player-avatar/player-avatar.ts +0 -34
  319. package/src/components/sf-leaderboard/shared/components/podium/map-players.ts +0 -24
  320. package/src/components/sf-leaderboard/shared/components/podium/podium.host.ts +0 -10
  321. package/src/components/sf-leaderboard/shared/components/podium/podium.html +0 -53
  322. package/src/components/sf-leaderboard/shared/components/podium/podium.scss +0 -580
  323. package/src/components/sf-leaderboard/shared/components/podium/podium.ts +0 -49
  324. package/src/components/sf-leaderboard/shared/components/podium/podium.types.ts +0 -9
  325. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.host.ts +0 -11
  326. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.html +0 -9
  327. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.scss +0 -98
  328. package/src/components/sf-leaderboard/shared/components/rank-badge/rank-badge.ts +0 -63
  329. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.host.ts +0 -9
  330. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.html +0 -15
  331. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.scss +0 -210
  332. package/src/components/sf-leaderboard/shared/components/stat-card/stat-card.ts +0 -36
  333. package/src/components/sf-leaderboard/shared/components/table/table.host.ts +0 -5
  334. package/src/components/sf-leaderboard/shared/components/table/table.html +0 -11
  335. package/src/components/sf-leaderboard/shared/components/table/table.scss +0 -212
  336. package/src/components/sf-leaderboard/shared/components/table/table.ts +0 -111
  337. package/src/components/sf-leaderboard/shared/constants/defaults.ts +0 -7
  338. package/src/components/sf-leaderboard/shared/constants/filters.ts +0 -16
  339. package/src/components/sf-leaderboard/shared/constants/index.ts +0 -5
  340. package/src/components/sf-leaderboard/shared/constants/player-stats.ts +0 -3
  341. package/src/components/sf-leaderboard/shared/constants/stats-overview.ts +0 -38
  342. package/src/components/sf-leaderboard/shared/constants/tags.ts +0 -16
  343. package/src/components/sf-leaderboard/shared/styles/_section.scss +0 -35
  344. package/src/components/sf-leaderboard/shared/types/data.ts +0 -29
  345. package/src/components/sf-leaderboard/shared/types/events.ts +0 -30
  346. package/src/components/sf-leaderboard/shared/types/player-stats.ts +0 -3
  347. package/src/components/sf-leaderboard/shared/types/sections.ts +0 -100
  348. package/src/components/sf-leaderboard/shared/utils/utils.ts +0 -17
  349. package/src/components/sf-leaderboard/theme/THEMING.md +0 -54
  350. package/src/components/sf-leaderboard/theme/context.ts +0 -16
  351. package/src/components/sf-leaderboard/theme/default-theme.ts +0 -4
  352. package/src/components/sf-leaderboard/theme/hex-to-rgb.ts +0 -25
  353. package/src/components/sf-leaderboard/theme/index.ts +0 -18
  354. package/src/components/sf-leaderboard/theme/inject-theme.ts +0 -39
  355. package/src/components/sf-leaderboard/theme/load-theme.ts +0 -26
  356. package/src/components/sf-leaderboard/theme/merge-theme.ts +0 -59
  357. package/src/components/sf-leaderboard/theme/scss/_colors.scss +0 -101
  358. package/src/components/sf-leaderboard/theme/scss/shared.scss +0 -123
  359. package/src/components/sf-leaderboard/theme/styles.ts +0 -6
  360. package/src/components/sf-leaderboard/theme/theme-to-css-vars.ts +0 -99
  361. package/src/components/sf-leaderboard/theme/themes/fallback.json +0 -62
  362. package/src/components/sf-leaderboard/theme/themes/red.json +0 -62
  363. package/src/components/sf-leaderboard/theme/types.ts +0 -71
  364. package/src/components/sf-live-feed/components/avatar/avatar.host.ts +0 -5
  365. package/src/components/sf-live-feed/components/avatar/avatar.html +0 -3
  366. package/src/components/sf-live-feed/components/avatar/avatar.scss +0 -24
  367. package/src/components/sf-live-feed/components/avatar/avatar.ts +0 -27
  368. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.host.ts +0 -8
  369. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.html +0 -10
  370. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.scss +0 -177
  371. package/src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.ts +0 -65
  372. package/src/components/sf-live-feed/constants.ts +0 -4
  373. package/src/components/sf-live-feed/demo/sample-data.ts +0 -34
  374. package/src/components/sf-live-feed/index.ts +0 -19
  375. package/src/components/sf-live-feed/styles/theme.scss +0 -19
  376. package/src/components/sf-live-feed/styles/theme.ts +0 -5
  377. package/src/components/sf-live-feed/types.ts +0 -19
  378. package/src/components/sf-live-feed/utils.ts +0 -17
  379. package/src/components/streaks/constants.ts +0 -17
  380. package/src/components/streaks/demo/sample-steps.ts +0 -10
  381. package/src/components/streaks/events.ts +0 -8
  382. package/src/components/streaks/index.ts +0 -16
  383. package/src/components/streaks/sf-streaks.html +0 -26
  384. package/src/components/streaks/sf-streaks.scss +0 -351
  385. package/src/components/streaks/sf-streaks.ts +0 -235
  386. package/src/components/streaks/types.ts +0 -7
  387. package/src/lib/lit/component.ts +0 -10
  388. package/src/lib/lit/safe-custom-element.ts +0 -12
  389. package/src/lib/lit/scss.ts +0 -6
  390. package/src/vite-env.d.ts +0 -18
  391. package/styles/global.css +0 -125
  392. package/todo.txt +0 -54
  393. package/tsconfig.json +0 -31
  394. package/vite.config.ts +0 -56
  395. package/vite.docs.config.ts +0 -33
  396. package/vite.lit-html-plugin.ts +0 -43
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.service.js","sources":["../../../../src/components/os-leaderboard-casino/services/icon.service.ts"],"sourcesContent":["import { html } from 'lit';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { labelText, type LabelKey } from '@os-leaderboard-casino/types/data.js';\nimport cards from '../assets/images/games/cards.png?url';\nimport chips from '../assets/images/games/chips.png?url';\nimport dice from '../assets/images/games/dice.png?url';\nimport gatesOfOlympus from '../assets/images/games/gates-of-olympus.png?url';\nimport roulette from '../assets/images/games/roulette.png?url';\nimport slotMachine from '../assets/images/games/slot-machine.png?url';\nimport type {\n GameIconName,\n IconHandle,\n IconName,\n IconRenderOptions,\n PrizeIconName,\n StatIconName,\n WinIconName,\n} from '../types/icons.js';\nimport type { TemplateResult } from 'lit';\n\nexport type {\n GameIconName,\n IconHandle,\n IconName,\n IconRenderOptions,\n PrizeIconName,\n StatIconName,\n WinIconName,\n} from '../types/icons.js';\n\nconst svgModules = import.meta.glob('../assets/icons/*.svg', {\n query: '?raw',\n import: 'default',\n eager: true,\n}) as Record<string, string>;\n\nconst GAME_ICON_URLS: Record<GameIconName, string> = {\n 'game.cards': cards,\n 'game.chips': chips,\n 'game.dice': dice,\n 'game.gates-of-olympus': gatesOfOlympus,\n 'game.roulette': roulette,\n 'game.slot-machine': slotMachine,\n};\n\nconst GAME_ICON_FALLBACK_ORDER: readonly GameIconName[] = [\n 'game.cards',\n 'game.chips',\n 'game.dice',\n 'game.gates-of-olympus',\n 'game.roulette',\n 'game.slot-machine',\n];\n\nconst GAME_ID_TO_ICON: Record<string, GameIconName> = {\n cards: 'game.cards',\n chips: 'game.chips',\n dice: 'game.dice',\n 'gates-of-olympus': 'game.gates-of-olympus',\n roulette: 'game.roulette',\n 'slot-machine': 'game.slot-machine',\n};\n\nfunction iconNameFromPath(path: string): string {\n return path.match(/\\/([^/]+)\\.svg$/)?.[1] ?? '';\n}\n\nfunction createSvgHandle(name: IconName, markup: string): IconHandle {\n return {\n name,\n kind: 'svg',\n svg() {\n return html`${unsafeSVG(markup)}`;\n },\n render({ className = '' } = {}) {\n const content = html`${unsafeSVG(markup)}`;\n return className\n ? html`<span class=${className}>${content}</span>`\n : content;\n },\n };\n}\n\nfunction createImageHandle(name: IconName, url: string): IconHandle {\n return {\n name,\n kind: 'image',\n url,\n svg() {\n throw new Error(`[IconService] Icon \"${name}\" is an image, not SVG`);\n },\n render({ className = '', alt = '' } = {}) {\n return html`<img\n src=${url}\n alt=${alt}\n class=${className}\n loading=\"lazy\"\n />`;\n },\n };\n}\n\nfunction resolvePrizeIconName(\n label: LabelKey | string | undefined,\n): PrizeIconName {\n const text = labelText(label).toLowerCase();\n\n if (text.includes('grand jackpot') || text === 'jackpot') {\n return 'prize.grand-jackpot';\n }\n if (text.includes('elite bonus')) {\n return 'prize.elite-bonus';\n }\n if (text.includes('high roller')) {\n return 'prize.high-roller';\n }\n if (text.includes('free spin')) {\n return 'prize.free-spins';\n }\n if (text.includes('casino credit')) {\n return 'prize.casino-credits';\n }\n if (text.includes('mystery')) {\n return 'prize.mystery-bonus';\n }\n\n return 'prize.default';\n}\n\nfunction resolveGameIconName(id: string, index: number): GameIconName {\n return (\n GAME_ID_TO_ICON[id] ??\n GAME_ICON_FALLBACK_ORDER[index % GAME_ICON_FALLBACK_ORDER.length]\n );\n}\n\n/** Registry-backed icon loader for os-leaderboard-casino. */\nexport class IconService {\n private readonly registry = new Map<string, IconHandle>();\n private loadPromise: Promise<void> | null = null;\n private loaded = false;\n\n /** Load all bundled SVG and game image icons. Call once on app start. */\n async load(): Promise<void> {\n if (this.loaded) return;\n if (this.loadPromise) return this.loadPromise;\n\n this.loadPromise = (async () => {\n for (const [path, markup] of Object.entries(svgModules)) {\n const name = iconNameFromPath(path);\n if (!name) continue;\n this.registry.set(name, createSvgHandle(name as IconName, markup));\n }\n\n for (const [name, url] of Object.entries(GAME_ICON_URLS)) {\n this.registry.set(name, createImageHandle(name as IconName, url));\n }\n\n this.loaded = true;\n })();\n\n return this.loadPromise;\n }\n\n /** Pick a loaded icon by registry name, e.g. `prize.free-spins`. */\n get(name: string): IconHandle {\n this.assertLoaded();\n const icon = this.registry.get(name);\n if (!icon) {\n throw new Error(`[IconService] Unknown icon \"${name}\"`);\n }\n return icon;\n }\n\n has(name: string): boolean {\n this.assertLoaded();\n return this.registry.has(name);\n }\n\n resolvePrizeIconName(label: LabelKey | string | undefined): PrizeIconName {\n return resolvePrizeIconName(label);\n }\n\n resolveGameIconName(id: string, index: number): GameIconName {\n return resolveGameIconName(id, index);\n }\n\n resolveWinIconName(name: string, index: number): WinIconName {\n const key = `win.${name}` as WinIconName;\n if (this.has(key)) return key;\n\n const fallback: WinIconName[] = [\n 'win.bag',\n 'win.coin',\n 'win.trophy',\n 'win.fire',\n 'win.gem',\n 'win.bolt',\n ];\n return fallback[index % fallback.length];\n }\n\n resolveStatIconName(name: string): StatIconName {\n const key = `stat.${name}` as StatIconName;\n return this.has(key) ? key : 'stat.users';\n }\n\n render(name: string, options?: IconRenderOptions): TemplateResult {\n return this.get(name).render(options);\n }\n\n svg(name: string): TemplateResult {\n return this.get(name).svg();\n }\n\n url(name: string): string {\n const icon = this.get(name);\n if (icon.kind !== 'image' || !icon.url) {\n throw new Error(`[IconService] Icon \"${name}\" has no image URL`);\n }\n return icon.url;\n }\n\n private assertLoaded(): void {\n if (!this.loaded) {\n throw new Error('[IconService] Call load() before get()');\n }\n }\n}\n\nexport const iconService = new IconService();\n\nexport function prizeIconSvg(\n label: LabelKey | string | undefined,\n): TemplateResult {\n return iconService.svg(iconService.resolvePrizeIconName(label));\n}\n\nexport function renderPrizeIcon(\n label: LabelKey | string | undefined,\n className = '',\n): TemplateResult {\n return iconService.render(iconService.resolvePrizeIconName(label), {\n className: ['prize-icon', className].filter(Boolean).join(' '),\n });\n}\n\nexport function resolveGameImage(id: string, index: number): string {\n return iconService.url(iconService.resolveGameIconName(id, index));\n}\n\nexport function winIcon(name: string): TemplateResult {\n const registryName = name.startsWith('win.') ? name : `win.${name}`;\n return iconService.svg(registryName);\n}\n"],"names":["svgModules","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","__vite_glob_0_15","__vite_glob_0_16","__vite_glob_0_17","__vite_glob_0_18","__vite_glob_0_19","GAME_ICON_URLS","cards","chips","dice","gatesOfOlympus","roulette","slotMachine","GAME_ICON_FALLBACK_ORDER","GAME_ID_TO_ICON","iconNameFromPath","path","createSvgHandle","name","markup","html","unsafeSVG","className","content","createImageHandle","url","alt","resolvePrizeIconName","label","text","labelText","resolveGameIconName","id","index","IconService","icon","key","fallback","options","iconService","winIcon","registryName"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ function i(n, r) {
2
+ return n.find((o) => r >= o.rankFrom && r <= o.rankTo);
3
+ }
4
+ function t(n) {
5
+ return { 1: "gold", 2: "silver", 3: "bronze" }[n];
6
+ }
7
+ export {
8
+ t as podiumVariantForRank,
9
+ i as prizeForRank
10
+ };
11
+ //# sourceMappingURL=prize-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prize-resolve.js","sources":["../../../../src/components/os-leaderboard-casino/theme/prize-resolve.ts"],"sourcesContent":["import type { QuizPrize } from '@os-leaderboard-casino/types/data.js';\n\n/** Prize tier that covers `rank` (inclusive range). */\nexport function prizeForRank(\n prizes: QuizPrize[],\n rank: number,\n): QuizPrize | undefined {\n return prizes.find((prize) => rank >= prize.rankFrom && rank <= prize.rankTo);\n}\n\nexport function isPodiumPrize(prize: QuizPrize): boolean {\n return (\n prize.rankFrom === prize.rankTo &&\n prize.rankFrom >= 1 &&\n prize.rankFrom <= 3\n );\n}\n\nexport function podiumVariantForRank(\n rank: 1 | 2 | 3,\n): 'gold' | 'silver' | 'bronze' {\n return ({ 1: 'gold', 2: 'silver', 3: 'bronze' } as const)[rank];\n}\n"],"names":["prizeForRank","prizes","rank","prize","podiumVariantForRank"],"mappings":"AAGO,SAASA,EACdC,GACAC,GACuB;AACvB,SAAOD,EAAO,KAAK,CAACE,MAAUD,KAAQC,EAAM,YAAYD,KAAQC,EAAM,MAAM;AAC9E;AAUO,SAASC,EACdF,GAC8B;AAC9B,SAAQ,EAAE,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAA,EAAqBA,CAAI;AAChE;"}
@@ -0,0 +1,179 @@
1
+ import { css as a } from "@lit/reactive-element/css-tag.js";
2
+ const o = a`
3
+ :host {
4
+ --bg: var(--os-casino-bg, #0a0712);
5
+ --bg-2: var(--os-casino-bg-2, #110b1e);
6
+ --surface: var(--os-casino-surface, rgba(26, 19, 42, 0.78));
7
+ --surface-solid: var(--os-casino-surface-solid, #1a132a);
8
+ --surface-2: var(--os-casino-surface-2, rgba(38, 28, 60, 0.85));
9
+ --glass-blur: 14px;
10
+ --radius-lg: 20px;
11
+ --hairline: var(--os-casino-hairline, rgba(255, 255, 255, 0.07));
12
+ --hairline-strong: var(--os-casino-hairline-strong, rgba(255, 255, 255, 0.13));
13
+ --hairline-gold: var(--os-casino-hairline-gold, rgba(245, 196, 81, 0.22));
14
+
15
+ --text: var(--os-casino-text, #f7f3ff);
16
+ --text-dim: var(--os-casino-text-dim, #ab9fce);
17
+ --text-faint: var(--os-casino-text-faint, #6e6394);
18
+
19
+ --gold: var(--os-casino-gold, #f5c451);
20
+ --gold-strong: var(--os-casino-gold-strong, #ffe093);
21
+ --gold-deep: var(--os-casino-gold-deep, #c98f1d);
22
+ --gold-soft: var(--os-casino-gold-soft, rgba(245, 196, 81, 0.13));
23
+ --gold-glow: var(--os-casino-gold-glow, rgba(245, 196, 81, 0.38));
24
+ --gold-gradient: var(
25
+ --os-casino-gold-gradient,
26
+ linear-gradient(
27
+ 120deg,
28
+ #8a5e10 0%,
29
+ #f5c451 28%,
30
+ #ffe9b0 50%,
31
+ #f5c451 72%,
32
+ #8a5e10 100%
33
+ )
34
+ );
35
+
36
+ --silver: var(--os-casino-silver, #cfd6e4);
37
+ --silver-soft: var(--os-casino-silver-soft, rgba(207, 214, 228, 0.12));
38
+ --bronze: var(--os-casino-bronze, #d99a66);
39
+ --bronze-soft: var(--os-casino-bronze-soft, rgba(217, 154, 102, 0.12));
40
+
41
+ --violet: var(--os-casino-violet, #9d6bff);
42
+ --violet-soft: var(--os-casino-violet-soft, rgba(157, 107, 255, 0.16));
43
+ --green: var(--os-casino-green, #41e6a5);
44
+ --green-soft: var(--os-casino-green-soft, rgba(65, 230, 165, 0.13));
45
+ --cyan: var(--os-casino-cyan, #5fe6ff);
46
+ --cyan-soft: var(--os-casino-cyan-soft, rgba(95, 230, 255, 0.13));
47
+ --red: var(--os-casino-red, #ff5d7c);
48
+ --red-soft: var(--os-casino-red-soft, rgba(255, 93, 124, 0.13));
49
+
50
+ --radius: 20px;
51
+ --radius-sm: 13px;
52
+ --shadow: 0 22px 48px -24px rgba(0, 0, 0, 0.95);
53
+ --shadow-gold: 0 12px 42px -16px var(--gold-glow);
54
+
55
+ --font-display: var(--os-casino-font-display, 'Sora', system-ui, sans-serif);
56
+ --font-body: var(--os-casino-font-body, 'Inter', system-ui, sans-serif);
57
+ --font-mono: var(--os-casino-font-mono, ui-monospace, 'JetBrains Mono', monospace);
58
+
59
+ font-family: var(--font-body);
60
+
61
+ --transition-fast: 0.2s ease;
62
+
63
+ --accent-2: var(--os-casino-accent-2, color-mix(in srgb, var(--violet) 28%, transparent));
64
+
65
+ --panel-bg: linear-gradient(
66
+ 120deg,
67
+ color-mix(in srgb, var(--surface-solid) 94%, transparent),
68
+ color-mix(in srgb, var(--surface) 88%, transparent)
69
+ );
70
+ --panel-border: color-mix(in srgb, var(--violet) 22%, var(--hairline));
71
+ --panel-shadow: 0 18px 50px -28px color-mix(in srgb, black 90%, transparent);
72
+ --panel-fade-start: color-mix(in srgb, var(--surface-solid) 94%, transparent);
73
+ --panel-fade-end: color-mix(in srgb, var(--surface) 88%, transparent);
74
+ }
75
+
76
+ .section-header {
77
+ display: flex;
78
+ align-items: baseline;
79
+ gap: 12px;
80
+ margin-bottom: 12px;
81
+ }
82
+
83
+ .section-header:has(.strategy) {
84
+ align-items: center;
85
+ }
86
+
87
+ .section-title {
88
+ margin: 0;
89
+ font-family: var(--font-display);
90
+ font-size: 15px;
91
+ font-weight: 800;
92
+ letter-spacing: 0.02em;
93
+ color: var(--text);
94
+ }
95
+
96
+ .player-name {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ gap: 6px;
100
+ min-width: 0;
101
+ max-width: 100%;
102
+ }
103
+
104
+ .player-name .name {
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ font-weight: 700;
109
+ }
110
+
111
+ .player-name .vip-badge {
112
+ flex: none;
113
+ display: inline-flex;
114
+ align-items: center;
115
+ gap: 3px;
116
+ font-family: var(--font-body);
117
+ font-size: 9.5px;
118
+ font-weight: 800;
119
+ letter-spacing: 0.08em;
120
+ line-height: 1;
121
+ text-transform: uppercase;
122
+ color: var(--gold);
123
+ border: 1px solid color-mix(in srgb, var(--gold) 45%, transparent);
124
+ border-radius: 5px;
125
+ padding: 1px 5px;
126
+ background: transparent;
127
+ vertical-align: middle;
128
+ }
129
+
130
+ .player-name .vip-badge svg {
131
+ width: 10px;
132
+ height: 10px;
133
+ flex-shrink: 0;
134
+ }
135
+
136
+ .prize-icon {
137
+ display: inline-grid;
138
+ place-items: center;
139
+ flex: none;
140
+ width: 18px;
141
+ height: 18px;
142
+ vertical-align: -3px;
143
+ }
144
+
145
+ .prize-icon--inline {
146
+ width: 14px;
147
+ height: 14px;
148
+ vertical-align: -2px;
149
+ }
150
+
151
+ .prize-entry {
152
+ display: inline-flex;
153
+ align-items: center;
154
+ gap: 6px;
155
+ min-width: 0;
156
+ max-width: 100%;
157
+ }
158
+
159
+ .prize-entry .prize-label {
160
+ overflow: hidden;
161
+ text-overflow: ellipsis;
162
+ white-space: nowrap;
163
+ min-width: 0;
164
+ }
165
+ `;
166
+ a`
167
+ .glass {
168
+ background: var(--surface);
169
+ border: 1px solid var(--hairline);
170
+ border-radius: var(--radius);
171
+ box-shadow: var(--shadow);
172
+ backdrop-filter: blur(var(--glass-blur));
173
+ -webkit-backdrop-filter: blur(var(--glass-blur));
174
+ }
175
+ `;
176
+ export {
177
+ o as osLeaderboardCasinoTheme
178
+ };
179
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/os-leaderboard-casino/theme/styles.ts"],"sourcesContent":["import { css } from '@lit/reactive-element/css-tag.js';\n\n/**\n * Design tokens — \"casino noir\" glam.\n * Champagne gold on deep noir, glassy surfaces, soft neon accents.\n * Each color token reads an external `--os-casino-*` override first so\n * consumers can theme the component from outside the shadow DOM.\n */\nexport const osLeaderboardCasinoTheme = css`\n :host {\n --bg: var(--os-casino-bg, #0a0712);\n --bg-2: var(--os-casino-bg-2, #110b1e);\n --surface: var(--os-casino-surface, rgba(26, 19, 42, 0.78));\n --surface-solid: var(--os-casino-surface-solid, #1a132a);\n --surface-2: var(--os-casino-surface-2, rgba(38, 28, 60, 0.85));\n --glass-blur: 14px;\n --radius-lg: 20px;\n --hairline: var(--os-casino-hairline, rgba(255, 255, 255, 0.07));\n --hairline-strong: var(--os-casino-hairline-strong, rgba(255, 255, 255, 0.13));\n --hairline-gold: var(--os-casino-hairline-gold, rgba(245, 196, 81, 0.22));\n\n --text: var(--os-casino-text, #f7f3ff);\n --text-dim: var(--os-casino-text-dim, #ab9fce);\n --text-faint: var(--os-casino-text-faint, #6e6394);\n\n --gold: var(--os-casino-gold, #f5c451);\n --gold-strong: var(--os-casino-gold-strong, #ffe093);\n --gold-deep: var(--os-casino-gold-deep, #c98f1d);\n --gold-soft: var(--os-casino-gold-soft, rgba(245, 196, 81, 0.13));\n --gold-glow: var(--os-casino-gold-glow, rgba(245, 196, 81, 0.38));\n --gold-gradient: var(\n --os-casino-gold-gradient,\n linear-gradient(\n 120deg,\n #8a5e10 0%,\n #f5c451 28%,\n #ffe9b0 50%,\n #f5c451 72%,\n #8a5e10 100%\n )\n );\n\n --silver: var(--os-casino-silver, #cfd6e4);\n --silver-soft: var(--os-casino-silver-soft, rgba(207, 214, 228, 0.12));\n --bronze: var(--os-casino-bronze, #d99a66);\n --bronze-soft: var(--os-casino-bronze-soft, rgba(217, 154, 102, 0.12));\n\n --violet: var(--os-casino-violet, #9d6bff);\n --violet-soft: var(--os-casino-violet-soft, rgba(157, 107, 255, 0.16));\n --green: var(--os-casino-green, #41e6a5);\n --green-soft: var(--os-casino-green-soft, rgba(65, 230, 165, 0.13));\n --cyan: var(--os-casino-cyan, #5fe6ff);\n --cyan-soft: var(--os-casino-cyan-soft, rgba(95, 230, 255, 0.13));\n --red: var(--os-casino-red, #ff5d7c);\n --red-soft: var(--os-casino-red-soft, rgba(255, 93, 124, 0.13));\n\n --radius: 20px;\n --radius-sm: 13px;\n --shadow: 0 22px 48px -24px rgba(0, 0, 0, 0.95);\n --shadow-gold: 0 12px 42px -16px var(--gold-glow);\n\n --font-display: var(--os-casino-font-display, 'Sora', system-ui, sans-serif);\n --font-body: var(--os-casino-font-body, 'Inter', system-ui, sans-serif);\n --font-mono: var(--os-casino-font-mono, ui-monospace, 'JetBrains Mono', monospace);\n\n font-family: var(--font-body);\n\n --transition-fast: 0.2s ease;\n\n --accent-2: var(--os-casino-accent-2, color-mix(in srgb, var(--violet) 28%, transparent));\n\n --panel-bg: linear-gradient(\n 120deg,\n color-mix(in srgb, var(--surface-solid) 94%, transparent),\n color-mix(in srgb, var(--surface) 88%, transparent)\n );\n --panel-border: color-mix(in srgb, var(--violet) 22%, var(--hairline));\n --panel-shadow: 0 18px 50px -28px color-mix(in srgb, black 90%, transparent);\n --panel-fade-start: color-mix(in srgb, var(--surface-solid) 94%, transparent);\n --panel-fade-end: color-mix(in srgb, var(--surface) 88%, transparent);\n }\n\n .section-header {\n display: flex;\n align-items: baseline;\n gap: 12px;\n margin-bottom: 12px;\n }\n\n .section-header:has(.strategy) {\n align-items: center;\n }\n\n .section-title {\n margin: 0;\n font-family: var(--font-display);\n font-size: 15px;\n font-weight: 800;\n letter-spacing: 0.02em;\n color: var(--text);\n }\n\n .player-name {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n max-width: 100%;\n }\n\n .player-name .name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 700;\n }\n\n .player-name .vip-badge {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: 3px;\n font-family: var(--font-body);\n font-size: 9.5px;\n font-weight: 800;\n letter-spacing: 0.08em;\n line-height: 1;\n text-transform: uppercase;\n color: var(--gold);\n border: 1px solid color-mix(in srgb, var(--gold) 45%, transparent);\n border-radius: 5px;\n padding: 1px 5px;\n background: transparent;\n vertical-align: middle;\n }\n\n .player-name .vip-badge svg {\n width: 10px;\n height: 10px;\n flex-shrink: 0;\n }\n\n .prize-icon {\n display: inline-grid;\n place-items: center;\n flex: none;\n width: 18px;\n height: 18px;\n vertical-align: -3px;\n }\n\n .prize-icon--inline {\n width: 14px;\n height: 14px;\n vertical-align: -2px;\n }\n\n .prize-entry {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n max-width: 100%;\n }\n\n .prize-entry .prize-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n`;\n\n/** Shared glass-card recipe used across sections. */\nexport const glassCard = css`\n .glass {\n background: var(--surface);\n border: 1px solid var(--hairline);\n border-radius: var(--radius);\n box-shadow: var(--shadow);\n backdrop-filter: blur(var(--glass-blur));\n -webkit-backdrop-filter: blur(var(--glass-blur));\n }\n`;\n"],"names":["osLeaderboardCasinoTheme","css"],"mappings":";AAQO,MAAMA,IAA2BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsKfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,6 @@
1
+ import { iconService as o } from "../services/icon.service.js";
2
+ const c = () => o.svg("vip.crown");
3
+ export {
4
+ c as iconCrown
5
+ };
6
+ //# sourceMappingURL=vip-icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vip-icons.js","sources":["../../../../src/components/os-leaderboard-casino/theme/vip-icons.ts"],"sourcesContent":["import type { TemplateResult } from 'lit';\nimport { iconService } from '@os-leaderboard-casino/services/icon.service.js';\n\nexport const iconCrown = (): TemplateResult => iconService.svg('vip.crown');\n"],"names":["iconCrown","iconService"],"mappings":";AAGO,MAAMA,IAAY,MAAsBC,EAAY,IAAI,WAAW;"}
@@ -0,0 +1,20 @@
1
+ import { nothing as s, html as e } from "lit";
2
+ import { iconCrown as p } from "./vip-icons.js";
3
+ function i(n) {
4
+ return n ? e`<span class="vip-badge">${p()}VIP</span>` : s;
5
+ }
6
+ function f(n, a) {
7
+ const r = a?.vip ?? !1;
8
+ return e`
9
+ <span class="player-name ${r ? "is-vip" : ""}">
10
+ ${i(r)}
11
+ <span class="name">${n}</span>
12
+ ${a?.suffix ?? s}
13
+ </span>
14
+ `;
15
+ }
16
+ export {
17
+ f as renderPlayerName,
18
+ i as vipBadge
19
+ };
20
+ //# sourceMappingURL=vip-mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vip-mark.js","sources":["../../../../src/components/os-leaderboard-casino/theme/vip-mark.ts"],"sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport { iconCrown } from './vip-icons.js';\n\n/** v0 vip badge — slim outline tag with crown + VIP label. */\nexport function vipBadge(vip?: boolean): TemplateResult | typeof nothing {\n if (!vip) return nothing;\n return html`<span class=\"vip-badge\">${iconCrown()}VIP</span>`;\n}\n\nexport function renderPlayerName(\n username: string,\n options?: { vip?: boolean; suffix?: TemplateResult | typeof nothing },\n): TemplateResult {\n const vip = options?.vip ?? false;\n\n return html`\n <span class=\"player-name ${vip ? 'is-vip' : ''}\">\n ${vipBadge(vip)}\n <span class=\"name\">${username}</span>\n ${options?.suffix ?? nothing}\n </span>\n `;\n}\n"],"names":["vipBadge","vip","html","iconCrown","nothing","renderPlayerName","username","options"],"mappings":";;AAIO,SAASA,EAASC,GAAgD;AACvE,SAAKA,IACEC,4BAA+BC,GAAW,eADhCC;AAEnB;AAEO,SAASC,EACdC,GACAC,GACgB;AAChB,QAAMN,IAAMM,GAAS,OAAO;AAE5B,SAAOL;AAAA,+BACsBD,IAAM,WAAW,EAAE;AAAA,QAC1CD,EAASC,CAAG,CAAC;AAAA,2BACMK,CAAQ;AAAA,QAC3BC,GAAS,UAAUH,CAAO;AAAA;AAAA;AAGlC;"}
@@ -0,0 +1,7 @@
1
+ function r(n) {
2
+ return n == null ? "" : typeof n == "string" ? n : n.enValue ?? n.values[0]?.value ?? n.key ?? "";
3
+ }
4
+ export {
5
+ r as labelText
6
+ };
7
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sources":["../../../../src/components/os-leaderboard-casino/types/data.ts"],"sourcesContent":["/**\n * Domain types for the casino leaderboard splash.\n * Source: ai-context/casino-leaderboard-real/domain.md\n */\n\n/* ── Shared content models ── */\n\nexport type LabelType = 'CORE_GAME' | 'ON_DEMAND' | 'COMPETITOR';\n\nexport interface LabelValue {\n value: string;\n language: string;\n}\n\n/** Localized content container. */\nexport interface LabelKey {\n uuid?: string;\n key?: string;\n description?: string;\n hint?: string;\n values: LabelValue[];\n labelType: LabelType;\n enValue?: string;\n}\n\n/** Resolve display text from a LabelKey (or pass plain strings through). */\nexport function labelText(label: LabelKey | string | undefined): string {\n if (label == null) return '';\n if (typeof label === 'string') return label;\n return label.enValue ?? label.values[0]?.value ?? label.key ?? '';\n}\n\n/* ── Asset models ── */\n\nexport type AssetType = 'GAME' | 'REPORT' | 'FONT' | 'CLIENT' | 'AUDIO';\n\nexport type SportType = string;\n\n/** Campaign visual asset. */\nexport interface Asset {\n uuid: string;\n createdTs: string;\n name: string;\n label: string;\n comment: string;\n url: string;\n tags: string[];\n type: AssetType;\n sportType: SportType;\n}\n\n/* ── Strategy types ── */\n\nexport type PointsStrategy = 'DEFAULT';\n\nexport type PrizeAllocationStrategy = 'BEST_PRIZE' | 'SPLIT_PRIZE';\n\n/* ── Prize models (predicted — backend definitions are source of truth) ── */\n\nexport interface QuizPrize {\n uuid: string;\n /** Display label; may be transformed client-side. */\n label: LabelKey | string;\n /** Monetary value when applicable. */\n value?: number;\n currency?: string;\n /** Inclusive rank range this prize covers. */\n rankFrom: number;\n rankTo: number;\n iconUrl?: string;\n}\n\nexport interface QuizPrizePackage {\n uuid: string;\n name?: string;\n prizes: QuizPrize[];\n}\n\n/* ── Leaderboard entities ── */\n\n/** Shared metadata for all leaderboard campaigns. */\nexport interface LeaderboardBase {\n uuid: string;\n name: LabelKey;\n infoText: LabelKey;\n createdTs: string;\n updatedTs: string;\n endTs: string;\n pointsStrategyType: PointsStrategy;\n prizeAllocationStrategy: PrizeAllocationStrategy;\n bannerAsset: Asset;\n finished: boolean;\n deleted: boolean;\n}\n\n/** Leaderboard campaign entity. */\nexport interface QuizLeaderboard extends LeaderboardBase {\n prizePackage: QuizPrizePackage;\n}\n\n/** Represents a leaderboard position. */\nexport interface UserRank {\n username: string;\n rank: number;\n points: number;\n /** Total wager volume in the active window (money spent). */\n totalBet?: number;\n prize: QuizPrize | null;\n splitCount: number;\n /** Current user flag. */\n you: boolean;\n /** VIP player — shows gold badge across the layout. */\n vip?: boolean;\n showBorder?: boolean;\n /** Rank at the previous snapshot — used to render ▲/▼ trend. */\n previousRank?: number;\n /** Win rate as an integer percentage, e.g. 68 = 68%. */\n winRate?: number;\n /** Number of qualifying games played in the active window. */\n gamesPlayed?: number;\n}\n\n/* ── Predicted / extended types ── */\n\nexport type LeaderboardStatus = 'upcoming' | 'active' | 'completed' | 'cancelled';\n\nexport interface LeaderboardStatistics {\n totalParticipants: number;\n totalPoints?: number;\n averagePoints?: number;\n highestScore?: number;\n prizesAwarded?: number;\n}\n\nexport interface LeaderboardCountdown {\n endTs: string;\n remainingSeconds: number;\n expired: boolean;\n}\n"],"names":["labelText","label"],"mappings":"AA0BO,SAASA,EAAUC,GAA8C;AACtE,SAAIA,KAAS,OAAa,KACtB,OAAOA,KAAU,WAAiBA,IAC/BA,EAAM,WAAWA,EAAM,OAAO,CAAC,GAAG,SAASA,EAAM,OAAO;AACjE;"}
@@ -0,0 +1,8 @@
1
+ const A = "leaderboard-open", E = "search-change", _ = "refresh", O = "prize-click";
2
+ export {
3
+ A as OS_LEADERBOARD_CASINO_OPEN,
4
+ O as OS_LEADERBOARD_CASINO_PRIZE_CLICK,
5
+ _ as OS_LEADERBOARD_CASINO_REFRESH,
6
+ E as OS_LEADERBOARD_CASINO_SEARCH_CHANGE
7
+ };
8
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sources":["../../../../src/components/os-leaderboard-casino/types/events.ts"],"sourcesContent":["import type { QuizPrize } from './data.js';\n\n/** Client events emitted by `<os-leaderboard-casino>` (bubbling, composed). */\nexport const OS_LEADERBOARD_CASINO_OPEN = 'leaderboard-open';\nexport const OS_LEADERBOARD_CASINO_SEARCH_CHANGE = 'search-change';\nexport const OS_LEADERBOARD_CASINO_REFRESH = 'refresh';\nexport const OS_LEADERBOARD_CASINO_PRIZE_CLICK = 'prize-click';\n\nexport interface OsLeaderboardCasinoOpenDetail {\n uuid: string;\n}\n\nexport interface OsLeaderboardCasinoSearchChangeDetail {\n query: string;\n}\n\nexport interface OsLeaderboardCasinoRefreshDetail {\n uuid: string;\n}\n\nexport interface OsLeaderboardCasinoPrizeClickDetail {\n prize: QuizPrize;\n}\n"],"names":["OS_LEADERBOARD_CASINO_OPEN","OS_LEADERBOARD_CASINO_SEARCH_CHANGE","OS_LEADERBOARD_CASINO_REFRESH","OS_LEADERBOARD_CASINO_PRIZE_CLICK"],"mappings":"AAGO,MAAMA,IAA6B,oBAC7BC,IAAsC,iBACtCC,IAAgC,WAChCC,IAAoC;"}
@@ -0,0 +1,12 @@
1
+ const e = {
2
+ config: {
3
+ appearance: "glam",
4
+ themeId: "glam-default",
5
+ enabled: []
6
+ },
7
+ sections: {}
8
+ };
9
+ export {
10
+ e as EMPTY_OS_LEADERBOARD_CASINO_STATE
11
+ };
12
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sources":["../../../../src/components/os-leaderboard-casino/types/state.ts"],"sourcesContent":["import type {\n Category,\n Player,\n PrizeTier,\n TimeFrame,\n} from './ledger.js';\nimport type {\n PrizeAllocationStrategy,\n QuizPrizePackage,\n UserRank,\n} from './data.js';\nimport type {\n OsLeaderboardCasinoClimbSection,\n OsLeaderboardCasinoEventsSection,\n OsLeaderboardCasinoFooterSection,\n OsLeaderboardCasinoGameItem,\n OsLeaderboardCasinoGamesSection,\n OsLeaderboardCasinoHeroSection as OsLeaderboardCasinoGlamHeroSection,\n OsLeaderboardCasinoLegalsSection,\n OsLeaderboardCasinoMarqueeSection,\n OsLeaderboardCasinoStatsSection,\n} from './sections.js';\n\nexport type OsLeaderboardCasinoAppearance = 'glam';\n\nexport type OsLeaderboardCasinoMainSectionId =\n | 'prize'\n | 'stats'\n | 'games'\n | 'climb'\n | 'table';\n\nexport type OsLeaderboardCasinoSectionId =\n | 'marquee'\n | 'events'\n | 'hero'\n | OsLeaderboardCasinoMainSectionId\n | 'footer'\n | 'legals';\n\nexport interface OsLeaderboardCasinoLabels {\n back?: string;\n live?: string;\n cta?: string;\n}\n\nexport interface OsLeaderboardCasinoHeroSection\n extends Omit<OsLeaderboardCasinoGlamHeroSection, 'endTs'> {\n endTs?: string | number;\n showCta?: boolean;\n ctaLabel?: string;\n isRefreshing?: boolean;\n}\n\nexport interface OsLeaderboardCasinoPrizeSection {\n title?: string;\n strategyLabel?: string;\n prizePackage?: QuizPrizePackage;\n allocationStrategy?: PrizeAllocationStrategy;\n tiers?: PrizeTier[];\n}\n\nexport interface OsLeaderboardCasinoTableSection {\n mode: 'preview' | 'ledger';\n title?: string;\n topPlayers?: UserRank[];\n currentUser?: UserRank | Player;\n ctaLabel?: string;\n players?: Player[];\n searchPlaceholder?: string;\n filters?: {\n searchQuery?: string;\n timeframe?: TimeFrame;\n category?: Category;\n };\n}\n\nexport interface OsLeaderboardCasinoSectionData {\n marquee?: OsLeaderboardCasinoMarqueeSection;\n events?: OsLeaderboardCasinoEventsSection;\n hero?: OsLeaderboardCasinoHeroSection;\n prize?: OsLeaderboardCasinoPrizeSection;\n stats?: OsLeaderboardCasinoStatsSection;\n games?: OsLeaderboardCasinoGamesSection & {\n items?: OsLeaderboardCasinoGameItem[];\n };\n climb?: OsLeaderboardCasinoClimbSection;\n table?: OsLeaderboardCasinoTableSection;\n footer?: OsLeaderboardCasinoFooterSection;\n legals?: OsLeaderboardCasinoLegalsSection;\n}\n\nexport interface OsLeaderboardCasinoConfig {\n appearance: OsLeaderboardCasinoAppearance;\n themeId: string;\n labels?: OsLeaderboardCasinoLabels;\n enabled: readonly OsLeaderboardCasinoSectionId[];\n mainOrder?: readonly OsLeaderboardCasinoMainSectionId[];\n /** Palette overrides — CSS custom properties on the host. */\n themeVars?: Record<string, string>;\n}\n\nexport interface OsLeaderboardCasinoState {\n config: OsLeaderboardCasinoConfig;\n sections: OsLeaderboardCasinoSectionData;\n}\n\nexport const EMPTY_OS_LEADERBOARD_CASINO_STATE: OsLeaderboardCasinoState = {\n config: {\n appearance: 'glam',\n themeId: 'glam-default',\n enabled: [],\n },\n sections: {},\n};\n\nexport type OsLeaderboardCasinoSectionPatch = {\n [K in keyof OsLeaderboardCasinoSectionData]?: Partial<\n NonNullable<OsLeaderboardCasinoSectionData[K]>\n >;\n};\n"],"names":["EMPTY_OS_LEADERBOARD_CASINO_STATE"],"mappings":"AA2GO,MAAMA,IAA8D;AAAA,EACzE,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS,CAAA;AAAA,EAAC;AAAA,EAEZ,UAAU,CAAA;AACZ;"}