@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
package/main.css DELETED
@@ -1,210 +0,0 @@
1
- * {
2
- box-sizing: border-box;
3
- }
4
-
5
- body {
6
- margin: 0;
7
- font-family: system-ui, sans-serif;
8
- background: #0f1117;
9
- color: #e8eaed;
10
- min-height: 100vh;
11
- }
12
-
13
- .core-dev {
14
- display: flex;
15
- min-height: 100vh;
16
- }
17
-
18
- .core-dev__sidebar {
19
- width: 14rem;
20
- flex-shrink: 0;
21
- padding: 1rem;
22
- background: #1a1d26;
23
- border-right: 1px solid #2a2f3a;
24
- display: flex;
25
- flex-direction: column;
26
- gap: 1rem;
27
- }
28
-
29
- .core-dev__brand strong {
30
- display: block;
31
- font-size: 0.95rem;
32
- }
33
-
34
- .core-dev__brand span {
35
- font-size: 0.75rem;
36
- color: #9aa0a6;
37
- }
38
-
39
- .core-dev__nav {
40
- display: flex;
41
- flex-direction: column;
42
- gap: 0.25rem;
43
- }
44
-
45
- .core-dev__nav-link {
46
- display: block;
47
- padding: 0.5rem 0.65rem;
48
- border-radius: 6px;
49
- color: #c4c7cc;
50
- text-decoration: none;
51
- font-size: 0.875rem;
52
- }
53
-
54
- .core-dev__nav-link:hover {
55
- background: #252830;
56
- color: #fff;
57
- }
58
-
59
- .core-dev__nav-link.is-active {
60
- background: #2d3340;
61
- color: #fff;
62
- }
63
-
64
- .core-dev__main {
65
- flex: 1;
66
- display: flex;
67
- flex-direction: column;
68
- min-width: 0;
69
- }
70
-
71
- .core-dev__header {
72
- padding: 1rem 1.25rem;
73
- border-bottom: 1px solid #2a2f3a;
74
- }
75
-
76
- .core-dev__header h1 {
77
- margin: 0 0 0.35rem;
78
- font-size: 1.25rem;
79
- }
80
-
81
- .core-dev__header p {
82
- margin: 0;
83
- font-size: 0.875rem;
84
- color: #9aa0a6;
85
- }
86
-
87
- .core-dev__stage {
88
- flex: 1;
89
- padding: 1.5rem;
90
- display: flex;
91
- justify-content: center;
92
- align-items: flex-start;
93
- }
94
-
95
- .core-dev__stage:has(> sf-leaderboard:only-child),
96
- .core-dev__stage:has(.sf-leaderboard-dev > sf-leaderboard) {
97
- padding: 0;
98
- display: block;
99
- }
100
-
101
- .core-dev__stage > sf-leaderboard,
102
- .core-dev__stage .sf-leaderboard-dev > sf-leaderboard {
103
- width: 100%;
104
- display: block;
105
- }
106
-
107
- .core-dev__stage:empty::after {
108
- content: 'Select a component';
109
- color: #6b7280;
110
- font-size: 0.875rem;
111
- }
112
-
113
- .core-dev__error {
114
- color: #f87171;
115
- font-size: 0.875rem;
116
- }
117
-
118
- /* SF Leaderboard preset bar (dev preview) */
119
- .sf-leaderboard-dev {
120
- display: flex;
121
- flex-direction: column;
122
- width: 100%;
123
- }
124
-
125
- .playground-preset-bar {
126
- display: flex;
127
- flex-wrap: wrap;
128
- gap: 1rem 1.5rem;
129
- padding: 0.75rem 1rem;
130
- background: #1a1d26;
131
- border-bottom: 1px solid #2a2f3a;
132
- align-items: flex-start;
133
- }
134
-
135
- .playground-preset-bar__group {
136
- display: flex;
137
- flex-direction: column;
138
- gap: 0.35rem;
139
- }
140
-
141
- .playground-preset-bar__label {
142
- font-size: 0.75rem;
143
- color: #9aa0a6;
144
- }
145
-
146
- .playground-preset-bar__select {
147
- font: inherit;
148
- padding: 0.4rem 0.6rem;
149
- border-radius: 6px;
150
- border: 1px solid #3c4048;
151
- background: #0f1117;
152
- color: inherit;
153
- min-width: 12rem;
154
- }
155
-
156
- .playground-preset-bar__hint {
157
- margin: 0;
158
- font-size: 0.75rem;
159
- color: #6b7280;
160
- max-width: 20rem;
161
- }
162
-
163
- .playground-preset-bar__meta {
164
- flex-direction: row;
165
- flex-wrap: wrap;
166
- align-items: center;
167
- gap: 0.5rem;
168
- }
169
-
170
- .playground-preset-bar__badge {
171
- font-size: 0.75rem;
172
- padding: 0.25rem 0.5rem;
173
- border-radius: 4px;
174
- background: #2d3340;
175
- }
176
-
177
- .playground-preset-bar__badge--muted {
178
- background: #252830;
179
- color: #9aa0a6;
180
- }
181
-
182
- .playground-preset-bar__labels {
183
- border: 1px solid #2a2f3a;
184
- border-radius: 6px;
185
- padding: 0.5rem 0.75rem;
186
- margin: 0;
187
- }
188
-
189
- .playground-preset-bar__labels legend {
190
- font-size: 0.75rem;
191
- color: #9aa0a6;
192
- padding: 0 0.25rem;
193
- }
194
-
195
- .playground-preset-bar__labels label {
196
- display: flex;
197
- flex-direction: column;
198
- gap: 0.2rem;
199
- font-size: 0.75rem;
200
- margin-top: 0.35rem;
201
- }
202
-
203
- .playground-preset-bar__labels input {
204
- font: inherit;
205
- padding: 0.3rem 0.5rem;
206
- border-radius: 4px;
207
- border: 1px solid #3c4048;
208
- background: #0f1117;
209
- color: inherit;
210
- }
package/main.ts DELETED
@@ -1,124 +0,0 @@
1
- /**
2
- * Core dev shell — runs before any component module loads.
3
- * Start: npm run dev → http://localhost:5173/?component=sf-leaderboard
4
- */
5
- import {
6
- COMPONENT_CATALOG,
7
- getCatalogEntry,
8
- navigateToComponent,
9
- persistComponentId,
10
- readInitialComponentId,
11
- switchingRequiresReload,
12
- } from './previews/catalog.js';
13
-
14
- const app = document.getElementById('app');
15
- if (!app) {
16
- throw new Error('#app not found — index.html must define the mount point before main.ts');
17
- }
18
-
19
- let activeId = readInitialComponentId();
20
- let teardown: (() => void) | undefined;
21
-
22
- const shell = document.createElement('div');
23
- shell.className = 'core-dev';
24
-
25
- const sidebar = document.createElement('aside');
26
- sidebar.className = 'core-dev__sidebar';
27
-
28
- const brand = document.createElement('div');
29
- brand.className = 'core-dev__brand';
30
- brand.innerHTML = '<strong>Oddsmith</strong><span>Core dev</span>';
31
-
32
- const nav = document.createElement('nav');
33
- nav.className = 'core-dev__nav';
34
- nav.setAttribute('aria-label', 'Components');
35
-
36
- const main = document.createElement('main');
37
- main.className = 'core-dev__main';
38
-
39
- const header = document.createElement('header');
40
- header.className = 'core-dev__header';
41
-
42
- const titleEl = document.createElement('h1');
43
- const descEl = document.createElement('p');
44
- header.append(titleEl, descEl);
45
-
46
- const stage = document.createElement('div');
47
- stage.className = 'core-dev__stage';
48
- main.append(header, stage);
49
-
50
- shell.append(sidebar, main);
51
- sidebar.append(brand, nav);
52
- app.appendChild(shell);
53
-
54
- function renderNav(): void {
55
- nav.replaceChildren();
56
- for (const entry of COMPONENT_CATALOG) {
57
- if (entry.id === 'none') continue;
58
- const link = document.createElement('a');
59
- link.className = 'core-dev__nav-link';
60
- link.href = `?component=${entry.id}`;
61
- link.textContent = entry.title;
62
- link.dataset.component = entry.id;
63
- if (entry.id === activeId) link.classList.add('is-active');
64
- nav.appendChild(link);
65
- }
66
- }
67
-
68
- function updateHeader(): void {
69
- const entry = getCatalogEntry(activeId);
70
- titleEl.textContent = entry?.title ?? 'Preview';
71
- descEl.textContent = entry?.description ?? '';
72
- }
73
-
74
- async function showComponent(id: string): Promise<void> {
75
- teardown?.();
76
- teardown = undefined;
77
- stage.replaceChildren();
78
-
79
- const entry = getCatalogEntry(id);
80
- if (!entry || entry.id === 'none' || !entry.tag) {
81
- updateHeader();
82
- return;
83
- }
84
-
85
- try {
86
- const mod = await entry.load();
87
- teardown = await mod.mount(stage);
88
- } catch (err) {
89
- console.error(err);
90
- const msg = document.createElement('p');
91
- msg.className = 'core-dev__error';
92
- msg.textContent = `Failed to load "${id}": ${err instanceof Error ? err.message : String(err)}`;
93
- stage.appendChild(msg);
94
- }
95
-
96
- updateHeader();
97
- }
98
-
99
- nav.addEventListener('click', (e) => {
100
- const link = (e.target as HTMLElement).closest<HTMLAnchorElement>(
101
- 'a[data-component]',
102
- );
103
- if (!link) return;
104
- e.preventDefault();
105
- const nextId = link.dataset.component;
106
- if (!nextId || nextId === activeId) return;
107
-
108
- if (switchingRequiresReload(activeId, nextId)) {
109
- navigateToComponent(nextId);
110
- return;
111
- }
112
-
113
- activeId = nextId;
114
- persistComponentId(nextId);
115
- const url = new URL(location.href);
116
- url.searchParams.set('component', nextId);
117
- history.replaceState(null, '', url);
118
- renderNav();
119
- void showComponent(activeId);
120
- });
121
-
122
- renderNav();
123
- updateHeader();
124
- void showComponent(activeId);
@@ -1,12 +0,0 @@
1
- import type { ComponentPreviewModule } from './types.js';
2
-
3
- export const mount: ComponentPreviewModule['mount'] = async (root) => {
4
- await import('../src/components/casino-leaderboard/index.ts');
5
-
6
- const el = document.createElement('casino-leaderboard');
7
- root.appendChild(el);
8
-
9
- return () => {
10
- root.replaceChildren();
11
- };
12
- };
@@ -1,94 +0,0 @@
1
- import type { ComponentCatalogEntry } from './types.js';
2
-
3
- export const COMPONENT_CATALOG: readonly ComponentCatalogEntry[] = [
4
- {
5
- id: 'none',
6
- title: '— None —',
7
- description: 'Empty preview stage.',
8
- tag: null,
9
- load: async () => ({
10
- mount: async () => () => {},
11
- }),
12
- },
13
- {
14
- id: 'sf-leaderboard',
15
- title: 'SF Leaderboard',
16
- description:
17
- 'Config-driven leaderboard with presets, theme, and interactive demo data.',
18
- tag: 'sf-leaderboard',
19
- sharedTag: 'sf-leaderboard',
20
- load: () => import('./sf-leaderboard.js'),
21
- },
22
- {
23
- id: 'sf-live-feed',
24
- title: 'Live Feed',
25
- description: 'Activity stream with avatars and event types.',
26
- tag: 'sf-live-feed',
27
- load: () => import('./sf-live-feed.js'),
28
- },
29
- {
30
- id: 'streaks',
31
- title: 'Streaks',
32
- description: 'Step tracker with click-to-complete interaction.',
33
- tag: 'sf-streaks',
34
- load: () => import('./streaks.js'),
35
- },
36
- {
37
- id: 'leaderboard-v2',
38
- title: 'Leaderboard v2 (legacy)',
39
- description: 'Earlier leaderboard — same tag as SF Leaderboard; switch via reload.',
40
- tag: 'sf-leaderboard',
41
- sharedTag: 'sf-leaderboard',
42
- load: () => import('./leaderboard-v2.js'),
43
- },
44
- {
45
- id: 'leaderboard',
46
- title: 'Leaderboard (v1)',
47
- description: 'Original game leaderboard shell.',
48
- tag: 'leaderboard-app',
49
- load: () => import('./leaderboard-v1.js'),
50
- },
51
- {
52
- id: 'casino',
53
- title: 'Casino Leaderboard',
54
- description: 'Casino-style leaderboard with tabs and prize pool.',
55
- tag: 'casino-leaderboard',
56
- load: () => import('./casino.js'),
57
- },
58
- ];
59
-
60
- const STORAGE_KEY = 'oddsmith-core-dev-component';
61
-
62
- export function getCatalogEntry(id: string): ComponentCatalogEntry | undefined {
63
- return COMPONENT_CATALOG.find((e) => e.id === id);
64
- }
65
-
66
- export function readInitialComponentId(): string {
67
- const fromQuery = new URLSearchParams(location.search).get('component');
68
- if (fromQuery && getCatalogEntry(fromQuery)) return fromQuery;
69
- const fromStorage = localStorage.getItem(STORAGE_KEY);
70
- if (fromStorage && getCatalogEntry(fromStorage)) return fromStorage;
71
- return 'sf-leaderboard';
72
- }
73
-
74
- export function persistComponentId(id: string): void {
75
- localStorage.setItem(STORAGE_KEY, id);
76
- }
77
-
78
- export function navigateToComponent(id: string): void {
79
- persistComponentId(id);
80
- const url = new URL(location.href);
81
- if (id === 'none') url.searchParams.delete('component');
82
- else url.searchParams.set('component', id);
83
- location.assign(url);
84
- }
85
-
86
- /** Tags that cannot coexist without reload (duplicate custom element names). */
87
- export function switchingRequiresReload(fromId: string, toId: string): boolean {
88
- if (fromId === toId) return false;
89
- const from = getCatalogEntry(fromId);
90
- const to = getCatalogEntry(toId);
91
- const fromTag = from?.sharedTag ?? from?.tag;
92
- const toTag = to?.sharedTag ?? to?.tag;
93
- return Boolean(fromTag && toTag && fromTag === toTag);
94
- }
@@ -1,12 +0,0 @@
1
- import type { ComponentPreviewModule } from './types.js';
2
-
3
- export const mount: ComponentPreviewModule['mount'] = async (root) => {
4
- await import('../src/components/leaderboard/index.ts');
5
-
6
- const el = document.createElement('leaderboard-app');
7
- root.appendChild(el);
8
-
9
- return () => {
10
- root.replaceChildren();
11
- };
12
- };
@@ -1,17 +0,0 @@
1
- import type { SfLeaderboard } from '../src/components/leaderboard-v2/components/sf-leaderboard.js';
2
- import { lbV2CurrentUser, lbV2Players, lbV2Stats } from './sample-data.js';
3
- import type { ComponentPreviewModule } from './types.js';
4
-
5
- export const mount: ComponentPreviewModule['mount'] = async (root) => {
6
- await import('../src/components/leaderboard-v2/index.ts');
7
-
8
- const el = document.createElement('sf-leaderboard') as SfLeaderboard;
9
- el.players = lbV2Players;
10
- el.stats = lbV2Stats;
11
- el.currentUser = lbV2CurrentUser;
12
- root.appendChild(el);
13
-
14
- return () => {
15
- root.replaceChildren();
16
- };
17
- };
@@ -1,101 +0,0 @@
1
- import type { LiveFeedActivity } from '../src/components/sf-live-feed/types.js';
2
- import type { StreaksStep } from '../src/components/streaks/types.js';
3
- import type {
4
- LbBadge,
5
- LbPlayer,
6
- LbStats,
7
- } from '../src/components/leaderboard-v2/types.js';
8
-
9
- export const mockLiveFeedActivities: LiveFeedActivity[] = [
10
- {
11
- id: '1',
12
- type: 'jackpot',
13
- player: { username: 'CryptoKing', avatar: '' },
14
- message: 'Hit the MEGA JACKPOT on Lightning Slots!',
15
- amount: 125000,
16
- timestamp: new Date(Date.now() - 30000),
17
- },
18
- {
19
- id: '2',
20
- type: 'win',
21
- player: { username: 'AceHunter', avatar: '' },
22
- message: "Won a massive pot in Texas Hold'em",
23
- amount: 45000,
24
- timestamp: new Date(Date.now() - 120000),
25
- },
26
- {
27
- id: '3',
28
- type: 'streak',
29
- player: { username: 'LuckyDragon', avatar: '' },
30
- message: 'Reached a 8-game winning streak!',
31
- timestamp: new Date(Date.now() - 300000),
32
- },
33
- ];
34
-
35
- export const demoStreaksSteps: StreaksStep[] = [
36
- { id: '1', label: 'G1', completed: true },
37
- { id: '2', label: 'G2', completed: true },
38
- { id: '3', label: 'G3', completed: true },
39
- { id: '4', label: 'G4', completed: false },
40
- { id: '5', label: 'G5', completed: false, isReward: true },
41
- ];
42
-
43
- export const lbV2Badges: LbBadge[] = [
44
- { id: '1', name: 'First Win', icon: 'trophy', rarity: 'common' },
45
- { id: '2', name: 'Streak Master', icon: 'flame', rarity: 'rare' },
46
- { id: '3', name: 'Top 10', icon: 'star', rarity: 'epic' },
47
- ];
48
-
49
- export const lbV2Players: LbPlayer[] = [
50
- {
51
- id: '1',
52
- rank: 1,
53
- username: 'ShadowNinja',
54
- avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=shadow',
55
- level: 99,
56
- xp: 45000,
57
- xpToNextLevel: 50000,
58
- score: 2847500,
59
- wins: 342,
60
- streak: 15,
61
- badges: [lbV2Badges[2], lbV2Badges[1]],
62
- trend: 'same',
63
- },
64
- {
65
- id: '2',
66
- rank: 2,
67
- username: 'CyberPhoenix',
68
- avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=phoenix',
69
- level: 95,
70
- xp: 38000,
71
- xpToNextLevel: 45000,
72
- score: 2654200,
73
- wins: 298,
74
- streak: 8,
75
- badges: [lbV2Badges[1], lbV2Badges[0]],
76
- trend: 'up',
77
- rankChange: 2,
78
- },
79
- ];
80
-
81
- export const lbV2Stats: LbStats = {
82
- totalPlayers: 12847,
83
- yourRank: 156,
84
- topScore: 2847500,
85
- };
86
-
87
- export const lbV2CurrentUser: LbPlayer = {
88
- id: 'current',
89
- rank: 156,
90
- username: 'YourLbPlayer',
91
- avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=current',
92
- level: 45,
93
- xp: 12500,
94
- xpToNextLevel: 20000,
95
- score: 456780,
96
- wins: 42,
97
- streak: 3,
98
- badges: [lbV2Badges[0], lbV2Badges[1]],
99
- trend: 'up',
100
- rankChange: 12,
101
- };
@@ -1,100 +0,0 @@
1
- import type { SfLeaderboard } from '../src/components/sf-leaderboard/sf-leaderboard.js';
2
- import {
3
- createLeaderboardDemo,
4
- DEFAULT_SF_LEADERBOARD_PRESET_ID,
5
- getSfLeaderboardPreset,
6
- SF_LEADERBOARD_PRESETS,
7
- type LeaderboardDemoHandle,
8
- } from '../../shared/sf-leaderboard/index.js';
9
- import type { ComponentPreviewModule } from './types.js';
10
-
11
- function readInitialPresetId(): string {
12
- const fromQuery = new URLSearchParams(location.search).get('preset');
13
- if (fromQuery && getSfLeaderboardPreset(fromQuery)) return fromQuery;
14
- return DEFAULT_SF_LEADERBOARD_PRESET_ID;
15
- }
16
-
17
- function buildPresetBar(
18
- presetId: string,
19
- onPresetChange: (id: string) => void,
20
- ): HTMLElement {
21
- const active = getSfLeaderboardPreset(presetId);
22
- const bar = document.createElement('div');
23
- bar.className = 'playground-preset-bar';
24
-
25
- const group = document.createElement('div');
26
- group.className = 'playground-preset-bar__group';
27
-
28
- const label = document.createElement('label');
29
- label.className = 'playground-preset-bar__label';
30
- label.htmlFor = 'sf-leaderboard-preset';
31
- label.textContent = 'Preset';
32
-
33
- const select = document.createElement('select');
34
- select.id = 'sf-leaderboard-preset';
35
- select.className = 'playground-preset-bar__select';
36
- for (const preset of SF_LEADERBOARD_PRESETS) {
37
- const opt = document.createElement('option');
38
- opt.value = preset.id;
39
- opt.textContent = preset.label;
40
- if (preset.id === presetId) opt.selected = true;
41
- select.appendChild(opt);
42
- }
43
- select.addEventListener('change', () => onPresetChange(select.value));
44
-
45
- const hint = document.createElement('p');
46
- hint.className = 'playground-preset-bar__hint';
47
- hint.textContent = active?.description ?? '';
48
-
49
- group.append(label, select, hint);
50
-
51
- const meta = document.createElement('div');
52
- meta.className = 'playground-preset-bar__group playground-preset-bar__meta';
53
- if (active) {
54
- const themeBadge = document.createElement('span');
55
- themeBadge.className = 'playground-preset-bar__badge';
56
- themeBadge.textContent = `Theme: ${active.themeId}`;
57
- const sectionsBadge = document.createElement('span');
58
- sectionsBadge.className =
59
- 'playground-preset-bar__badge playground-preset-bar__badge--muted';
60
- sectionsBadge.textContent = `${active.config.sections.length} sections`;
61
- meta.append(themeBadge, sectionsBadge);
62
- }
63
-
64
- bar.append(group, meta);
65
- return bar;
66
- }
67
-
68
- export const mount: ComponentPreviewModule['mount'] = async (root) => {
69
- await import('../src/components/sf-leaderboard/index.ts');
70
-
71
- let presetId = readInitialPresetId();
72
- let demo: LeaderboardDemoHandle | undefined;
73
-
74
- const wrap = document.createElement('div');
75
- wrap.className = 'sf-leaderboard-dev';
76
-
77
- const setPreset = (id: string) => {
78
- presetId = id;
79
- demo?.setPreset(id);
80
- const url = new URL(location.href);
81
- url.searchParams.set('preset', id);
82
- history.replaceState(null, '', url);
83
- const bar = wrap.querySelector('.playground-preset-bar');
84
- if (bar) bar.replaceWith(buildPresetBar(presetId, setPreset));
85
- };
86
-
87
- wrap.appendChild(buildPresetBar(presetId, setPreset));
88
- const el = document.createElement('sf-leaderboard') as SfLeaderboard;
89
- wrap.appendChild(el);
90
- root.appendChild(wrap);
91
-
92
- demo = createLeaderboardDemo(el);
93
- demo.setPreset(presetId);
94
-
95
- return () => {
96
- demo?.unbind();
97
- demo = undefined;
98
- root.replaceChildren();
99
- };
100
- };
@@ -1,15 +0,0 @@
1
- import type { SfLiveFeed } from '../src/components/sf-live-feed/components/sf-live-feed/sf-live-feed.js';
2
- import { mockLiveFeedActivities } from './sample-data.js';
3
- import type { ComponentPreviewModule } from './types.js';
4
-
5
- export const mount: ComponentPreviewModule['mount'] = async (root) => {
6
- await import('../src/components/sf-live-feed/index.ts');
7
-
8
- const el = document.createElement('sf-live-feed') as SfLiveFeed;
9
- el.activities = mockLiveFeedActivities;
10
- root.appendChild(el);
11
-
12
- return () => {
13
- root.replaceChildren();
14
- };
15
- };