@oddsmith/ui 1.0.5 → 1.0.6
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.
- package/README.md +8 -4
- package/dist/.shared/index.ts +5 -0
- package/dist/.shared/labels-engine/engine.d.ts +22 -0
- package/dist/.shared/labels-engine/engine.ts +70 -0
- package/dist/.shared/labels-engine/index.d.ts +1 -0
- package/dist/.shared/labels-engine/index.ts +1 -0
- package/dist/.shared/lib/lit/component.ts +10 -0
- package/dist/.shared/lib/lit/safe-custom-element.ts +12 -0
- package/dist/.shared/lib/lit/scss.ts +6 -0
- package/dist/{shared/lib/lit/template.d.ts → .shared/lib/lit/template.ts} +2 -1
- package/dist/.shared/theme-engine/animation.d.ts +5 -0
- package/dist/.shared/theme-engine/animation.ts +40 -0
- package/dist/.shared/theme-engine/default-theme.d.ts +24 -0
- package/dist/.shared/theme-engine/default-theme.ts +38 -0
- package/dist/.shared/theme-engine/engine.d.ts +22 -0
- package/dist/.shared/theme-engine/engine.ts +151 -0
- package/dist/.shared/theme-engine/index.d.ts +2 -0
- package/dist/.shared/theme-engine/index.ts +8 -0
- package/dist/assets/config/data.js +279 -0
- package/dist/assets/config/images/events/bolt.svg +4 -0
- package/dist/assets/config/images/events/boost.svg +6 -0
- package/dist/assets/config/images/events/clock.svg +4 -0
- package/dist/assets/config/images/events/fire.svg +4 -0
- package/dist/assets/config/images/events/gift.svg +5 -0
- package/dist/assets/config/images/events/star.svg +4 -0
- package/dist/assets/config/images/games/gates-of-olympus.png +0 -0
- package/dist/assets/config/labels.js +79 -0
- package/dist/assets/config/theme.js +15 -0
- package/dist/assets/icons/prize.medal.svg +5 -0
- package/dist/assets/image.fallback.png +0 -0
- package/dist/bootstrap/casino.bootstrap.d.ts +32 -0
- package/dist/bootstrap/index.d.ts +5 -0
- package/dist/constants/default-data.d.ts +8 -0
- package/dist/constants/defaults.d.ts +16 -0
- package/dist/{components/os-leaderboard-casino/constants → constants}/index.d.ts +1 -0
- package/dist/{components/os-leaderboard-casino/constants → constants}/tags.d.ts +0 -9
- package/dist/container/os-leaderboard-casino.d.ts +59 -0
- package/dist/container/os-leaderboard-casino.host.d.ts +5 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2483 -0
- package/dist/index.js.map +1 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/climb-section/climb-section.d.ts +7 -2
- package/dist/{components/os-leaderboard-casino/sections → sections}/climb-section/climb-section.host.d.ts +5 -2
- package/dist/sections/climb-section/types/labels.d.ts +8 -0
- package/dist/sections/climb-section/types/view.d.ts +13 -0
- package/dist/sections/events-banner/events-banner.d.ts +30 -0
- package/dist/sections/events-banner/events-banner.host.d.ts +15 -0
- package/dist/sections/events-banner/types/data.d.ts +18 -0
- package/dist/sections/events-banner/types/events.d.ts +8 -0
- package/dist/sections/events-banner/types/labels.d.ts +6 -0
- package/dist/sections/events-banner/types/view.d.ts +12 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/footer-section/footer-section.d.ts +4 -3
- package/dist/sections/footer-section/footer-section.host.d.ts +5 -0
- package/dist/sections/footer-section/types/view.d.ts +4 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/games-section/games-section.d.ts +8 -3
- package/dist/sections/games-section/games-section.host.d.ts +10 -0
- package/dist/sections/games-section/types/data.d.ts +7 -0
- package/dist/sections/games-section/types/labels.d.ts +6 -0
- package/dist/sections/games-section/types/view.d.ts +9 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/hero-section/hero-section.d.ts +10 -16
- package/dist/sections/hero-section/hero-section.host.d.ts +18 -0
- package/dist/sections/hero-section/types/data.d.ts +14 -0
- package/dist/sections/hero-section/types/labels.d.ts +12 -0
- package/dist/sections/hero-section/types/view.d.ts +12 -0
- package/dist/sections/index.d.ts +0 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/legals-section/legals-section.d.ts +8 -3
- package/dist/{components/os-leaderboard-casino/sections → sections}/legals-section/legals-section.host.d.ts +6 -1
- package/dist/sections/legals-section/types/data.d.ts +19 -0
- package/dist/sections/legals-section/types/labels.d.ts +5 -0
- package/dist/sections/legals-section/types/view.d.ts +6 -0
- package/dist/sections/marquee-section/marquee-item.d.ts +13 -0
- package/dist/sections/marquee-section/marquee-section.d.ts +19 -0
- package/dist/sections/marquee-section/marquee-section.host.d.ts +10 -0
- package/dist/sections/marquee-section/types/data.d.ts +18 -0
- package/dist/sections/marquee-section/types/labels.d.ts +7 -0
- package/dist/sections/marquee-section/types/view.d.ts +17 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/prize-section/prize-section.d.ts +7 -4
- package/dist/{components/os-leaderboard-casino/sections → sections}/prize-section/prize-section.host.d.ts +4 -4
- package/dist/sections/prize-section/types/data.d.ts +7 -0
- package/dist/sections/prize-section/types/events.d.ts +12 -0
- package/dist/sections/prize-section/types/labels.d.ts +11 -0
- package/dist/sections/prize-section/types/view.d.ts +12 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/stats-section/stats-section.d.ts +9 -6
- package/dist/sections/stats-section/stats-section.host.d.ts +15 -0
- package/dist/sections/stats-section/types/data.d.ts +12 -0
- package/dist/sections/stats-section/types/labels.d.ts +6 -0
- package/dist/sections/stats-section/types/view.d.ts +8 -0
- package/dist/{components/os-leaderboard-casino/sections → sections}/table-section/table-section.d.ts +17 -7
- package/dist/sections/table-section/table-section.host.d.ts +22 -0
- package/dist/sections/table-section/types/data.d.ts +24 -0
- package/dist/sections/table-section/types/events.d.ts +9 -0
- package/dist/sections/table-section/types/labels.d.ts +16 -0
- package/dist/sections/table-section/types/view.d.ts +20 -0
- package/dist/store/casino.context.d.ts +5 -0
- package/dist/store/casino.store.d.ts +37 -0
- package/dist/store/consume-store.d.ts +781 -0
- package/dist/store/index.d.ts +3 -0
- package/dist/types/config.d.ts +6 -0
- package/dist/types/data.d.ts +49 -0
- package/dist/types/host.d.ts +24 -0
- package/dist/types/index.d.ts +35 -0
- package/dist/types/labels.d.ts +43 -0
- package/dist/types/public.d.ts +23 -0
- package/dist/types/status.d.ts +1 -0
- package/dist/types/theme.d.ts +1 -0
- package/dist/utils/boolean-attr.d.ts +8 -0
- package/dist/utils/current-user.d.ts +9 -0
- package/dist/utils/data-resolve.d.ts +6 -0
- package/dist/utils/demo-countdown.d.ts +2 -0
- package/dist/utils/format.d.ts +10 -0
- package/dist/utils/image-fallback.d.ts +11 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/{components/os-leaderboard-casino/theme/vip-mark.d.ts → utils/player-name.d.ts} +1 -3
- package/dist/utils/prize-resolve.d.ts +10 -0
- package/dist/utils/safe-href.d.ts +2 -0
- package/dist/utils/safe-html.d.ts +6 -0
- package/dist/utils/status.d.ts +10 -0
- package/dist/utils/svg.d.ts +5 -0
- package/index.d.ts +5 -0
- package/index.js +3 -0
- package/os-leaderboard-casino-pro.d.ts +1 -0
- package/os-leaderboard-casino-pro.js +1 -0
- package/package.json +33 -50
- package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json +0 -9
- package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json.js +0 -13
- package/dist/components/os-leaderboard-casino/assets/fallback/catalog.json.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/fallback/config.json +0 -8
- package/dist/components/os-leaderboard-casino/assets/fallback/defaults/glam-sections.json +0 -564
- package/dist/components/os-leaderboard-casino/assets/fallback/fonts.json +0 -3
- package/dist/components/os-leaderboard-casino/assets/fallback/labels.json +0 -5
- package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js +0 -12
- package/dist/components/os-leaderboard-casino/assets/fallback/labels.json.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/fallback/manifest.json +0 -6
- package/dist/components/os-leaderboard-casino/assets/fallback/presets.json +0 -38
- package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/fallback/presets.json.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json +0 -603
- package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js +0 -8
- package/dist/components/os-leaderboard-casino/assets/fallback/resolved-presets.json.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/fallback/themes.json +0 -68
- package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js +0 -72
- package/dist/components/os-leaderboard-casino/assets/fallback/themes.json.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg +0 -7
- package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg.js +0 -12
- package/dist/components/os-leaderboard-casino/assets/icons/prize.casino-credits.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg.js +0 -12
- package/dist/components/os-leaderboard-casino/assets/icons/prize.default.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg +0 -5
- package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/prize.elite-bonus.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg.js +0 -15
- package/dist/components/os-leaderboard-casino/assets/icons/prize.free-spins.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg +0 -5
- package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/prize.grand-jackpot.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg +0 -5
- package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/prize.high-roller.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg +0 -8
- package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg.js +0 -13
- package/dist/components/os-leaderboard-casino/assets/icons/prize.mystery-bonus.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg +0 -4
- package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg.js +0 -9
- package/dist/components/os-leaderboard-casino/assets/icons/stat.clock.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/stat.gift.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/stat.users.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg.js +0 -9
- package/dist/components/os-leaderboard-casino/assets/icons/table.rank-down.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg.js +0 -9
- package/dist/components/os-leaderboard-casino/assets/icons/table.rank-neutral.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg.js +0 -9
- package/dist/components/os-leaderboard-casino/assets/icons/table.rank-up.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg +0 -7
- package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg.js +0 -12
- package/dist/components/os-leaderboard-casino/assets/icons/vip.crown.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/win.bag.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg.js +0 -9
- package/dist/components/os-leaderboard-casino/assets/icons/win.bolt.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/win.coin.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg.js +0 -9
- package/dist/components/os-leaderboard-casino/assets/icons/win.fire.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/win.gem.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg.js +0 -10
- package/dist/components/os-leaderboard-casino/assets/icons/win.trophy.svg.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/games/cards.png.js +0 -5
- package/dist/components/os-leaderboard-casino/assets/images/games/cards.png.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/games/chips.png.js +0 -5
- package/dist/components/os-leaderboard-casino/assets/images/games/chips.png.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/games/dice.png.js +0 -5
- package/dist/components/os-leaderboard-casino/assets/images/games/dice.png.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png +0 -0
- package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png.js +0 -5
- package/dist/components/os-leaderboard-casino/assets/images/games/gates-of-olympus.png.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png.js +0 -5
- package/dist/components/os-leaderboard-casino/assets/images/games/roulette.png.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png.js +0 -5
- package/dist/components/os-leaderboard-casino/assets/images/games/slot-machine.png.js.map +0 -1
- package/dist/components/os-leaderboard-casino/assets/images/logo.png +0 -0
- package/dist/components/os-leaderboard-casino/constants/defaults.d.ts +0 -8
- package/dist/components/os-leaderboard-casino/constants/defaults.js +0 -9
- package/dist/components/os-leaderboard-casino/constants/defaults.js.map +0 -1
- package/dist/components/os-leaderboard-casino/constants/tags.js +0 -17
- package/dist/components/os-leaderboard-casino/constants/tags.js.map +0 -1
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.d.ts +0 -35
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.host.d.ts +0 -13
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js +0 -22
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js +0 -154
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.js.map +0 -1
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/container/os-leaderboard-casino.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/index.d.ts +0 -36
- package/dist/components/os-leaderboard-casino/index.js +0 -39
- package/dist/components/os-leaderboard-casino/index.js.map +0 -1
- package/dist/components/os-leaderboard-casino/integration/assemble-assets.d.ts +0 -21
- package/dist/components/os-leaderboard-casino/integration/assemble-assets.js +0 -48
- package/dist/components/os-leaderboard-casino/integration/assemble-assets.js.map +0 -1
- package/dist/components/os-leaderboard-casino/integration/assets-context.d.ts +0 -26
- package/dist/components/os-leaderboard-casino/integration/assets-context.js +0 -69
- package/dist/components/os-leaderboard-casino/integration/assets-context.js.map +0 -1
- package/dist/components/os-leaderboard-casino/integration/defaults-glam.d.ts +0 -14
- package/dist/components/os-leaderboard-casino/integration/defaults-new-money.d.ts +0 -3
- package/dist/components/os-leaderboard-casino/integration/index.d.ts +0 -5
- package/dist/components/os-leaderboard-casino/integration/labels.d.ts +0 -1
- package/dist/components/os-leaderboard-casino/integration/load-assets.d.ts +0 -9
- package/dist/components/os-leaderboard-casino/integration/load-assets.js +0 -22
- package/dist/components/os-leaderboard-casino/integration/load-assets.js.map +0 -1
- package/dist/components/os-leaderboard-casino/integration/presets.d.ts +0 -1
- package/dist/components/os-leaderboard-casino/integration/resolve-input.d.ts +0 -20
- package/dist/components/os-leaderboard-casino/integration/resolve-input.js +0 -115
- package/dist/components/os-leaderboard-casino/integration/resolve-input.js.map +0 -1
- package/dist/components/os-leaderboard-casino/integration/themes.d.ts +0 -1
- package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js +0 -48
- package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js +0 -69
- package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/climb-section/climb-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.d.ts +0 -5
- package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js +0 -118
- package/dist/components/os-leaderboard-casino/sections/events-banner/components/event-icons.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.d.ts +0 -16
- package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.host.d.ts +0 -8
- package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js +0 -93
- package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/events-banner/events-banner.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.host.d.ts +0 -3
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js +0 -20
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js +0 -41
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/footer-section/footer-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/games-section/components/game-images.d.ts +0 -1
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.host.d.ts +0 -7
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js +0 -17
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js +0 -88
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/games-section/games-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/header-section/header-section.d.ts +0 -12
- package/dist/components/os-leaderboard-casino/sections/header-section/header-section.host.d.ts +0 -8
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.host.d.ts +0 -20
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js +0 -36
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js +0 -192
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/hero-section/hero-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js +0 -35
- package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js +0 -78
- package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/legals-section/legals-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/live-feed-section/live-feed-section.d.ts +0 -13
- package/dist/components/os-leaderboard-casino/sections/live-feed-section/live-feed-section.host.d.ts +0 -8
- package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.d.ts +0 -3
- package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js +0 -8
- package/dist/components/os-leaderboard-casino/sections/marquee-section/components/win-icons.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.d.ts +0 -14
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js +0 -57
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-item.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.d.ts +0 -42
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.host.d.ts +0 -8
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js +0 -19
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js +0 -290
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.d.ts +0 -6
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js +0 -16
- package/dist/components/os-leaderboard-casino/sections/marquee-section/marquee-variants.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.d.ts +0 -16
- package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.js +0 -73
- package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/prize-section/components/medal-coin/medal-coin.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js +0 -20
- package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js +0 -137
- package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/prize-section/prize-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-band/stat-band.d.ts +0 -17
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-card/stat-card.d.ts +0 -15
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-chip/stat-chip.d.ts +0 -17
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-gauge/stat-gauge.d.ts +0 -14
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-icons.d.ts +0 -5
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-icons.js +0 -11
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-icons.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-meter/stat-meter.d.ts +0 -17
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.d.ts +0 -17
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.js +0 -63
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/stats-section/components/stat-rail/stat-rail.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.host.d.ts +0 -13
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js +0 -36
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js +0 -71
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/stats-section/stats-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.host.d.ts +0 -15
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js +0 -40
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.html.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js +0 -185
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.js.map +0 -1
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js +0 -5
- package/dist/components/os-leaderboard-casino/sections/table-section/table-section.scss.js.map +0 -1
- package/dist/components/os-leaderboard-casino/services/adapter.service.d.ts +0 -11
- package/dist/components/os-leaderboard-casino/services/adapter.service.js +0 -49
- package/dist/components/os-leaderboard-casino/services/adapter.service.js.map +0 -1
- package/dist/components/os-leaderboard-casino/services/icon.service.d.ts +0 -28
- package/dist/components/os-leaderboard-casino/services/icon.service.js +0 -194
- package/dist/components/os-leaderboard-casino/services/icon.service.js.map +0 -1
- package/dist/components/os-leaderboard-casino/services/index.d.ts +0 -2
- package/dist/components/os-leaderboard-casino/theme/background.d.ts +0 -4
- package/dist/components/os-leaderboard-casino/theme/background.js +0 -22
- package/dist/components/os-leaderboard-casino/theme/background.js.map +0 -1
- package/dist/components/os-leaderboard-casino/theme/index.d.ts +0 -3
- package/dist/components/os-leaderboard-casino/theme/prize-icons.d.ts +0 -1
- package/dist/components/os-leaderboard-casino/theme/prize-resolve.d.ts +0 -5
- package/dist/components/os-leaderboard-casino/theme/prize-resolve.js +0 -11
- package/dist/components/os-leaderboard-casino/theme/prize-resolve.js.map +0 -1
- package/dist/components/os-leaderboard-casino/theme/styles.d.ts +0 -9
- package/dist/components/os-leaderboard-casino/theme/styles.js +0 -179
- package/dist/components/os-leaderboard-casino/theme/styles.js.map +0 -1
- package/dist/components/os-leaderboard-casino/theme/vip-icons.d.ts +0 -2
- package/dist/components/os-leaderboard-casino/theme/vip-icons.js +0 -6
- package/dist/components/os-leaderboard-casino/theme/vip-icons.js.map +0 -1
- package/dist/components/os-leaderboard-casino/theme/vip-mark.js +0 -22
- package/dist/components/os-leaderboard-casino/theme/vip-mark.js.map +0 -1
- package/dist/components/os-leaderboard-casino/types/assets.d.ts +0 -42
- package/dist/components/os-leaderboard-casino/types/data.d.ts +0 -106
- package/dist/components/os-leaderboard-casino/types/data.js +0 -7
- package/dist/components/os-leaderboard-casino/types/data.js.map +0 -1
- package/dist/components/os-leaderboard-casino/types/events.d.ts +0 -18
- package/dist/components/os-leaderboard-casino/types/events.js +0 -8
- package/dist/components/os-leaderboard-casino/types/events.js.map +0 -1
- package/dist/components/os-leaderboard-casino/types/icons.d.ts +0 -18
- package/dist/components/os-leaderboard-casino/types/input.d.ts +0 -79
- package/dist/components/os-leaderboard-casino/types/ledger.d.ts +0 -67
- package/dist/components/os-leaderboard-casino/types/sections.d.ts +0 -200
- package/dist/components/os-leaderboard-casino/types/state.d.ts +0 -69
- package/dist/components/os-leaderboard-casino/types/state.js +0 -12
- package/dist/components/os-leaderboard-casino/types/state.js.map +0 -1
- package/dist/components/os-leaderboard-casino/utils/demo-countdown.d.ts +0 -7
- package/dist/components/os-leaderboard-casino/utils/demo-countdown.js +0 -22
- package/dist/components/os-leaderboard-casino/utils/demo-countdown.js.map +0 -1
- package/dist/shared/lib/lit/component.js +0 -8
- package/dist/shared/lib/lit/component.js.map +0 -1
- package/dist/shared/lib/lit/safe-custom-element.js +0 -7
- package/dist/shared/lib/lit/safe-custom-element.js.map +0 -1
- package/dist/shared/lib/lit/scss.js +0 -8
- package/dist/shared/lib/lit/scss.js.map +0 -1
- package/dist/shared/vendor/keen-slider-keen-slider.es.js +0 -538
- package/dist/shared/vendor/keen-slider-keen-slider.es.js.map +0 -1
- package/dist/shared/vendor/lit-element-lit-element.js +0 -45
- package/dist/shared/vendor/lit-element-lit-element.js.map +0 -1
- package/dist/shared/vendor/lit-html-directive-helpers.js +0 -32
- package/dist/shared/vendor/lit-html-directive-helpers.js.map +0 -1
- package/dist/shared/vendor/lit-html-directive.js +0 -23
- package/dist/shared/vendor/lit-html-directive.js.map +0 -1
- package/dist/shared/vendor/lit-html-keyed.js +0 -18
- package/dist/shared/vendor/lit-html-keyed.js.map +0 -1
- package/dist/shared/vendor/lit-html-lit-html.js +0 -234
- package/dist/shared/vendor/lit-html-lit-html.js.map +0 -1
- package/dist/shared/vendor/lit-html-repeat.js +0 -57
- package/dist/shared/vendor/lit-html-repeat.js.map +0 -1
- package/dist/shared/vendor/lit-html-unsafe-html.js +0 -21
- package/dist/shared/vendor/lit-html-unsafe-html.js.map +0 -1
- package/dist/shared/vendor/lit-html-unsafe-svg.js +0 -10
- package/dist/shared/vendor/lit-html-unsafe-svg.js.map +0 -1
- package/dist/shared/vendor/lit-reactive-element-base.js +0 -5
- package/dist/shared/vendor/lit-reactive-element-base.js.map +0 -1
- package/dist/shared/vendor/lit-reactive-element-css-tag.js +0 -46
- package/dist/shared/vendor/lit-reactive-element-css-tag.js.map +0 -1
- package/dist/shared/vendor/lit-reactive-element-property.js +0 -33
- package/dist/shared/vendor/lit-reactive-element-property.js.map +0 -1
- package/dist/shared/vendor/lit-reactive-element-query.js +0 -13
- package/dist/shared/vendor/lit-reactive-element-query.js.map +0 -1
- package/dist/shared/vendor/lit-reactive-element-reactive-element.js +0 -226
- package/dist/shared/vendor/lit-reactive-element-reactive-element.js.map +0 -1
- package/dist/shared/vendor/lit-reactive-element-state.js +0 -8
- package/dist/shared/vendor/lit-reactive-element-state.js.map +0 -1
- /package/dist/{shared → .shared}/lib/lit/component.d.ts +0 -0
- /package/dist/{shared → .shared}/lib/lit/safe-custom-element.d.ts +0 -0
- /package/dist/{shared → .shared}/lib/lit/scss.d.ts +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets/config}/images/games/cards.png +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets/config}/images/games/chips.png +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets/config}/images/games/dice.png +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets/config}/images/games/roulette.png +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets/config}/images/games/slot-machine.png +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/prize.default.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/stat.gift.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/stat.users.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/table.rank-down.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/table.rank-neutral.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/table.rank-up.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/win.bag.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/win.bolt.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/win.coin.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/win.fire.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/win.gem.svg +0 -0
- /package/dist/{components/os-leaderboard-casino/assets → assets}/icons/win.trophy.svg +0 -0
package/README.md
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Casino Leaderboard Component
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Deploy a fully brandable casino leaderboard, ready to match your brand. Live rankings, prize tiers, and campaign stats. Your data, our UI.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```ts
|
|
6
|
+
import { OsLeaderboardCasino } from '@oddsmith/ui/os-leaderboard-casino';
|
|
7
|
+
```
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
There is no root `@oddsmith/ui` entry. Pro is `@oddsmith/ui/os-leaderboard-casino-pro`.
|
|
10
|
+
|
|
11
|
+
[Integration docs](https://app.notion.com/p/Client-integration-3c9437e762d68075b87ff9fd358678dd)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic labels bag — any component's `labels.json` shape.
|
|
3
|
+
* Component-specific types (e.g. LeaderboardLabels) live next to that component.
|
|
4
|
+
*/
|
|
5
|
+
export type LabelsMap = Record<string, string>;
|
|
6
|
+
/**
|
|
7
|
+
* Stamps a labels bag on a host and can reverse that stamp.
|
|
8
|
+
* Nested objects are flattened to dotted keys (`hero.pool`).
|
|
9
|
+
* {@link LabelsEngine.get} walks out of shadow roots to find that host.
|
|
10
|
+
*/
|
|
11
|
+
export declare class LabelsEngine {
|
|
12
|
+
private static readonly labels;
|
|
13
|
+
apply(host: object, labels: object): void;
|
|
14
|
+
clear(host: object): void;
|
|
15
|
+
/**
|
|
16
|
+
* Resolves one label key from the stamped host, or from a descendant
|
|
17
|
+
* (walks parent elements and shadow hosts).
|
|
18
|
+
* Missing or empty values return `'n/a'`.
|
|
19
|
+
*/
|
|
20
|
+
static get(from: object, key: string): string;
|
|
21
|
+
private static resolveHost;
|
|
22
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic labels bag — any component's `labels.json` shape.
|
|
3
|
+
* Component-specific types (e.g. LeaderboardLabels) live next to that component.
|
|
4
|
+
*/
|
|
5
|
+
export type LabelsMap = Record<string, string>;
|
|
6
|
+
|
|
7
|
+
function flattenLabels(
|
|
8
|
+
value: unknown,
|
|
9
|
+
prefix = '',
|
|
10
|
+
out: LabelsMap = {},
|
|
11
|
+
): LabelsMap {
|
|
12
|
+
if (typeof value === 'string') {
|
|
13
|
+
if (prefix) out[prefix] = value;
|
|
14
|
+
return out;
|
|
15
|
+
}
|
|
16
|
+
if (value != null && typeof value === 'object') {
|
|
17
|
+
for (const [key, child] of Object.entries(value as Record<string, unknown>)) {
|
|
18
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
19
|
+
flattenLabels(child, path, out);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Stamps a labels bag on a host and can reverse that stamp.
|
|
27
|
+
* Nested objects are flattened to dotted keys (`hero.pool`).
|
|
28
|
+
* {@link LabelsEngine.get} walks out of shadow roots to find that host.
|
|
29
|
+
*/
|
|
30
|
+
export class LabelsEngine {
|
|
31
|
+
private static readonly labels = new WeakMap<object, LabelsMap>();
|
|
32
|
+
|
|
33
|
+
apply(host: object, labels: object): void {
|
|
34
|
+
LabelsEngine.labels.set(host, flattenLabels(labels));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
clear(host: object): void {
|
|
38
|
+
LabelsEngine.labels.delete(host);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Resolves one label key from the stamped host, or from a descendant
|
|
43
|
+
* (walks parent elements and shadow hosts).
|
|
44
|
+
* Missing or empty values return `'n/a'`.
|
|
45
|
+
*/
|
|
46
|
+
static get(from: object, key: string): string {
|
|
47
|
+
const host = LabelsEngine.resolveHost(from);
|
|
48
|
+
const value = host != null ? LabelsEngine.labels.get(host)?.[key] : undefined;
|
|
49
|
+
return value != null && value !== '' ? value : 'n/a';
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
private static resolveHost(from: object): object | null {
|
|
53
|
+
if (LabelsEngine.labels.has(from)) return from;
|
|
54
|
+
if (!(from instanceof Node)) return null;
|
|
55
|
+
|
|
56
|
+
let node: Node | null = from;
|
|
57
|
+
while (node) {
|
|
58
|
+
if (node instanceof Element && LabelsEngine.labels.has(node)) {
|
|
59
|
+
return node;
|
|
60
|
+
}
|
|
61
|
+
if (node instanceof Element && node.parentElement) {
|
|
62
|
+
node = node.parentElement;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const root = node.getRootNode();
|
|
66
|
+
node = root instanceof ShadowRoot ? root.host : null;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LabelsEngine, type LabelsMap } from './engine.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LabelsEngine, type LabelsMap } from './engine.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { customElement } from './safe-custom-element.js';
|
|
2
|
+
|
|
3
|
+
export interface ComponentOptions {
|
|
4
|
+
selector: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/** Angular-style `@Component` — registers a Lit class as a custom element. */
|
|
8
|
+
export function Component(options: ComponentOptions) {
|
|
9
|
+
return customElement(options.selector);
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a custom element only if the tag is not already in the registry.
|
|
3
|
+
* Use instead of Lit's `@customElement` when HMR or duplicate bundles are possible.
|
|
4
|
+
*/
|
|
5
|
+
export function customElement(tag: string) {
|
|
6
|
+
return <T extends CustomElementConstructor>(cls: T): T => {
|
|
7
|
+
if (!customElements.get(tag)) {
|
|
8
|
+
customElements.define(tag, cls);
|
|
9
|
+
}
|
|
10
|
+
return cls;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const THEME_TRANSITION_CLASS = 'os-theme-transition';
|
|
2
|
+
const THEME_TRANSITION_MS = 500;
|
|
3
|
+
const THEME_TRANSITION_DELAY_MS = 500;
|
|
4
|
+
|
|
5
|
+
function prefersReducedMotion(): boolean {
|
|
6
|
+
return (
|
|
7
|
+
typeof matchMedia !== 'undefined' &&
|
|
8
|
+
matchMedia('(prefers-reduced-motion: reduce)').matches
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Runs `apply` while a short-lived transition class is on `nodes`.
|
|
14
|
+
* Skipped when `animate` is false or the user prefers reduced motion.
|
|
15
|
+
*/
|
|
16
|
+
export function withThemeTransition(
|
|
17
|
+
nodes: HTMLElement[],
|
|
18
|
+
animate: boolean,
|
|
19
|
+
apply: () => void,
|
|
20
|
+
): void {
|
|
21
|
+
const runAnimation = animate && !prefersReducedMotion();
|
|
22
|
+
|
|
23
|
+
if (runAnimation) {
|
|
24
|
+
for (const node of nodes) {
|
|
25
|
+
node.classList.add(THEME_TRANSITION_CLASS);
|
|
26
|
+
}
|
|
27
|
+
void nodes[0]?.offsetHeight;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
apply();
|
|
31
|
+
|
|
32
|
+
if (runAnimation) {
|
|
33
|
+
const totalMs = THEME_TRANSITION_DELAY_MS + THEME_TRANSITION_MS + 80;
|
|
34
|
+
window.setTimeout(() => {
|
|
35
|
+
for (const node of nodes) {
|
|
36
|
+
node.classList.remove(THEME_TRANSITION_CLASS);
|
|
37
|
+
}
|
|
38
|
+
}, totalMs);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Palette bag. Operator chrome colors — not campaign content.
|
|
3
|
+
*
|
|
4
|
+
* Host `.theme` is mixed onto glam {@link DEFAULT_THEME} per key.
|
|
5
|
+
* `background` and `surface` are CSS backgrounds (solid color or gradient).
|
|
6
|
+
* `fontDisplay` / `fontBody` / `fontMono` are CSS `font-family` stacks.
|
|
7
|
+
* The component does not load font files — the host must.
|
|
8
|
+
*/
|
|
9
|
+
export type LeaderboardTheme = {
|
|
10
|
+
background: string;
|
|
11
|
+
surface: string;
|
|
12
|
+
text: string;
|
|
13
|
+
textMuted: string;
|
|
14
|
+
primary: string;
|
|
15
|
+
secondary: string;
|
|
16
|
+
success: string;
|
|
17
|
+
danger: string;
|
|
18
|
+
borderRadius: string;
|
|
19
|
+
fontDisplay: string;
|
|
20
|
+
fontBody: string;
|
|
21
|
+
fontMono: string;
|
|
22
|
+
};
|
|
23
|
+
/** Glam palette used when the host omits `.theme`. */
|
|
24
|
+
export declare const DEFAULT_THEME: LeaderboardTheme;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Palette bag. Operator chrome colors — not campaign content.
|
|
3
|
+
*
|
|
4
|
+
* Host `.theme` is mixed onto glam {@link DEFAULT_THEME} per key.
|
|
5
|
+
* `background` and `surface` are CSS backgrounds (solid color or gradient).
|
|
6
|
+
* `fontDisplay` / `fontBody` / `fontMono` are CSS `font-family` stacks.
|
|
7
|
+
* The component does not load font files — the host must.
|
|
8
|
+
*/
|
|
9
|
+
export type LeaderboardTheme = {
|
|
10
|
+
background: string;
|
|
11
|
+
surface: string;
|
|
12
|
+
text: string;
|
|
13
|
+
textMuted: string;
|
|
14
|
+
primary: string;
|
|
15
|
+
secondary: string;
|
|
16
|
+
success: string;
|
|
17
|
+
danger: string;
|
|
18
|
+
borderRadius: string;
|
|
19
|
+
fontDisplay: string;
|
|
20
|
+
fontBody: string;
|
|
21
|
+
fontMono: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/** Glam palette used when the host omits `.theme`. */
|
|
25
|
+
export const DEFAULT_THEME: LeaderboardTheme = {
|
|
26
|
+
background: '#181622',
|
|
27
|
+
surface: 'rgba(26, 19, 42, 0.78)',
|
|
28
|
+
text: '#f7f3ff',
|
|
29
|
+
textMuted: '#ab9fce',
|
|
30
|
+
primary: '#f5c451',
|
|
31
|
+
secondary: '#9d6bff',
|
|
32
|
+
success: '#41e6a5',
|
|
33
|
+
danger: '#ff5d7c',
|
|
34
|
+
borderRadius: '20px',
|
|
35
|
+
fontDisplay: "'Sora', system-ui, sans-serif",
|
|
36
|
+
fontBody: "'Inter', system-ui, sans-serif",
|
|
37
|
+
fontMono: "ui-monospace, 'JetBrains Mono', monospace",
|
|
38
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LeaderboardTheme } from './default-theme.js';
|
|
2
|
+
export type ThemeEngineOptions = {
|
|
3
|
+
/** Animate color token changes on the host. */
|
|
4
|
+
animate?: boolean;
|
|
5
|
+
/** Prefix for mix/validation console.error. */
|
|
6
|
+
logPrefix?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Mixes a host palette onto {@link DEFAULT_THEME} and stamps the 12 keys
|
|
10
|
+
* as CSS vars on the host.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ThemeEngine {
|
|
13
|
+
private host;
|
|
14
|
+
private stamped;
|
|
15
|
+
apply(host: HTMLElement, input?: Partial<LeaderboardTheme> | null, options?: ThemeEngineOptions): void;
|
|
16
|
+
clear(host: HTMLElement, options?: ThemeEngineOptions): void;
|
|
17
|
+
private unstamp;
|
|
18
|
+
private resolveTheme;
|
|
19
|
+
private pickCss;
|
|
20
|
+
private pickFont;
|
|
21
|
+
private cssSupports;
|
|
22
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { withThemeTransition } from './animation.js';
|
|
2
|
+
import { DEFAULT_THEME, type LeaderboardTheme } from './default-theme.js';
|
|
3
|
+
|
|
4
|
+
export type ThemeEngineOptions = {
|
|
5
|
+
/** Animate color token changes on the host. */
|
|
6
|
+
animate?: boolean;
|
|
7
|
+
/** Prefix for mix/validation console.error. */
|
|
8
|
+
logPrefix?: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/** CSS custom properties stamped from the 12 host keys. */
|
|
12
|
+
const THEME_CSS_VARS: Record<keyof LeaderboardTheme, `--${string}`> = {
|
|
13
|
+
background: '--background',
|
|
14
|
+
surface: '--surface',
|
|
15
|
+
text: '--text',
|
|
16
|
+
textMuted: '--text-muted',
|
|
17
|
+
primary: '--primary',
|
|
18
|
+
secondary: '--secondary',
|
|
19
|
+
success: '--success',
|
|
20
|
+
danger: '--danger',
|
|
21
|
+
borderRadius: '--border-radius',
|
|
22
|
+
fontDisplay: '--font-display',
|
|
23
|
+
fontBody: '--font-body',
|
|
24
|
+
fontMono: '--font-mono',
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const CSS_PROPERTY: Record<
|
|
28
|
+
Exclude<keyof LeaderboardTheme, 'fontDisplay' | 'fontBody' | 'fontMono'>,
|
|
29
|
+
string
|
|
30
|
+
> = {
|
|
31
|
+
background: 'background',
|
|
32
|
+
surface: 'background',
|
|
33
|
+
text: 'color',
|
|
34
|
+
textMuted: 'color',
|
|
35
|
+
primary: 'color',
|
|
36
|
+
secondary: 'color',
|
|
37
|
+
success: 'color',
|
|
38
|
+
danger: 'color',
|
|
39
|
+
borderRadius: 'border-radius',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Mixes a host palette onto {@link DEFAULT_THEME} and stamps the 12 keys
|
|
44
|
+
* as CSS vars on the host.
|
|
45
|
+
*/
|
|
46
|
+
export class ThemeEngine {
|
|
47
|
+
private host: HTMLElement | null = null;
|
|
48
|
+
private stamped: LeaderboardTheme | null = null;
|
|
49
|
+
|
|
50
|
+
apply(
|
|
51
|
+
host: HTMLElement,
|
|
52
|
+
input?: Partial<LeaderboardTheme> | null,
|
|
53
|
+
options: ThemeEngineOptions = {},
|
|
54
|
+
): void {
|
|
55
|
+
const theme = this.resolveTheme(input, options.logPrefix);
|
|
56
|
+
withThemeTransition([host], options.animate === true, () => {
|
|
57
|
+
this.unstamp();
|
|
58
|
+
for (const key of Object.keys(THEME_CSS_VARS) as (keyof LeaderboardTheme)[]) {
|
|
59
|
+
host.style.setProperty(THEME_CSS_VARS[key], theme[key]);
|
|
60
|
+
}
|
|
61
|
+
this.host = host;
|
|
62
|
+
this.stamped = theme;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
clear(host: HTMLElement, options: ThemeEngineOptions = {}): void {
|
|
67
|
+
withThemeTransition([host], options.animate === true, () => {
|
|
68
|
+
this.unstamp(host);
|
|
69
|
+
this.host = null;
|
|
70
|
+
this.stamped = null;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private unstamp(host: HTMLElement | null = this.host): void {
|
|
75
|
+
if (host == null || this.stamped == null) return;
|
|
76
|
+
for (const varName of Object.values(THEME_CSS_VARS)) {
|
|
77
|
+
host.style.removeProperty(varName);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private resolveTheme(
|
|
82
|
+
input?: Partial<LeaderboardTheme> | null,
|
|
83
|
+
logPrefix = '[os-leaderboard-casino]',
|
|
84
|
+
): LeaderboardTheme {
|
|
85
|
+
return {
|
|
86
|
+
background: this.pickCss(input, 'background', logPrefix),
|
|
87
|
+
surface: this.pickCss(input, 'surface', logPrefix),
|
|
88
|
+
text: this.pickCss(input, 'text', logPrefix),
|
|
89
|
+
textMuted: this.pickCss(input, 'textMuted', logPrefix),
|
|
90
|
+
primary: this.pickCss(input, 'primary', logPrefix),
|
|
91
|
+
secondary: this.pickCss(input, 'secondary', logPrefix),
|
|
92
|
+
success: this.pickCss(input, 'success', logPrefix),
|
|
93
|
+
danger: this.pickCss(input, 'danger', logPrefix),
|
|
94
|
+
borderRadius: this.pickCss(input, 'borderRadius', logPrefix),
|
|
95
|
+
fontDisplay: this.pickFont(input, 'fontDisplay', logPrefix),
|
|
96
|
+
fontBody: this.pickFont(input, 'fontBody', logPrefix),
|
|
97
|
+
fontMono: this.pickFont(input, 'fontMono', logPrefix),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private pickCss(
|
|
102
|
+
input: Partial<LeaderboardTheme> | null | undefined,
|
|
103
|
+
key: keyof typeof CSS_PROPERTY,
|
|
104
|
+
logPrefix: string,
|
|
105
|
+
): string {
|
|
106
|
+
const fallback = DEFAULT_THEME[key];
|
|
107
|
+
if (input == null || !Object.prototype.hasOwnProperty.call(input, key)) {
|
|
108
|
+
return fallback;
|
|
109
|
+
}
|
|
110
|
+
const raw = input[key];
|
|
111
|
+
if (typeof raw !== 'string' || raw.trim() === '') {
|
|
112
|
+
console.error(
|
|
113
|
+
`${logPrefix} theme.${key} is missing or empty; using default.`,
|
|
114
|
+
);
|
|
115
|
+
return fallback;
|
|
116
|
+
}
|
|
117
|
+
if (!this.cssSupports(CSS_PROPERTY[key], raw)) {
|
|
118
|
+
console.error(
|
|
119
|
+
`${logPrefix} theme.${key} is invalid CSS (${JSON.stringify(raw)}); using default.`,
|
|
120
|
+
);
|
|
121
|
+
return fallback;
|
|
122
|
+
}
|
|
123
|
+
return raw;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
private pickFont(
|
|
127
|
+
input: Partial<LeaderboardTheme> | null | undefined,
|
|
128
|
+
key: 'fontDisplay' | 'fontBody' | 'fontMono',
|
|
129
|
+
logPrefix: string,
|
|
130
|
+
): string {
|
|
131
|
+
const fallback = DEFAULT_THEME[key];
|
|
132
|
+
if (input == null || !Object.prototype.hasOwnProperty.call(input, key)) {
|
|
133
|
+
return fallback;
|
|
134
|
+
}
|
|
135
|
+
const raw = input[key];
|
|
136
|
+
if (typeof raw !== 'string' || raw.trim() === '') {
|
|
137
|
+
console.error(
|
|
138
|
+
`${logPrefix} theme.${key} is missing or empty; using default.`,
|
|
139
|
+
);
|
|
140
|
+
return fallback;
|
|
141
|
+
}
|
|
142
|
+
return raw;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
private cssSupports(property: string, value: string): boolean {
|
|
146
|
+
if (typeof CSS === 'undefined' || typeof CSS.supports !== 'function') {
|
|
147
|
+
return value.trim() !== '';
|
|
148
|
+
}
|
|
149
|
+
return CSS.supports(property, value);
|
|
150
|
+
}
|
|
151
|
+
}
|