diff --git a/src/assets/animal/1.webp b/src/assets/animal/1.webp index df1dbb9..aa53190 100644 Binary files a/src/assets/animal/1.webp and b/src/assets/animal/1.webp differ diff --git a/src/assets/animal/10.webp b/src/assets/animal/10.webp index d9cb0bb..1d7bfab 100644 Binary files a/src/assets/animal/10.webp and b/src/assets/animal/10.webp differ diff --git a/src/assets/animal/11.webp b/src/assets/animal/11.webp index 55d319f..34c0eee 100644 Binary files a/src/assets/animal/11.webp and b/src/assets/animal/11.webp differ diff --git a/src/assets/animal/12.webp b/src/assets/animal/12.webp index a3eeb5e..655fbb8 100644 Binary files a/src/assets/animal/12.webp and b/src/assets/animal/12.webp differ diff --git a/src/assets/animal/13.webp b/src/assets/animal/13.webp index 10679ad..56c083c 100644 Binary files a/src/assets/animal/13.webp and b/src/assets/animal/13.webp differ diff --git a/src/assets/animal/14.webp b/src/assets/animal/14.webp index 95e63e4..18a896b 100644 Binary files a/src/assets/animal/14.webp and b/src/assets/animal/14.webp differ diff --git a/src/assets/animal/15.webp b/src/assets/animal/15.webp index d7c71f6..37eb540 100644 Binary files a/src/assets/animal/15.webp and b/src/assets/animal/15.webp differ diff --git a/src/assets/animal/16.webp b/src/assets/animal/16.webp index 546dc0b..6f6a009 100644 Binary files a/src/assets/animal/16.webp and b/src/assets/animal/16.webp differ diff --git a/src/assets/animal/17.webp b/src/assets/animal/17.webp index 137d958..bc4a154 100644 Binary files a/src/assets/animal/17.webp and b/src/assets/animal/17.webp differ diff --git a/src/assets/animal/18.webp b/src/assets/animal/18.webp index 421c064..73d2ff0 100644 Binary files a/src/assets/animal/18.webp and b/src/assets/animal/18.webp differ diff --git a/src/assets/animal/19.webp b/src/assets/animal/19.webp index cd69941..e6686bb 100644 Binary files a/src/assets/animal/19.webp and b/src/assets/animal/19.webp differ diff --git a/src/assets/animal/2.webp b/src/assets/animal/2.webp index 21d448d..276d1b5 100644 Binary files a/src/assets/animal/2.webp and b/src/assets/animal/2.webp differ diff --git a/src/assets/animal/20.webp b/src/assets/animal/20.webp index a4c7221..9ed303a 100644 Binary files a/src/assets/animal/20.webp and b/src/assets/animal/20.webp differ diff --git a/src/assets/animal/21.webp b/src/assets/animal/21.webp index 560261e..2c59a34 100644 Binary files a/src/assets/animal/21.webp and b/src/assets/animal/21.webp differ diff --git a/src/assets/animal/22.webp b/src/assets/animal/22.webp index 6a2a2e5..3f3d82c 100644 Binary files a/src/assets/animal/22.webp and b/src/assets/animal/22.webp differ diff --git a/src/assets/animal/23.webp b/src/assets/animal/23.webp index 087ff3e..9ff1d5d 100644 Binary files a/src/assets/animal/23.webp and b/src/assets/animal/23.webp differ diff --git a/src/assets/animal/24.webp b/src/assets/animal/24.webp index 6b713c8..b5df60c 100644 Binary files a/src/assets/animal/24.webp and b/src/assets/animal/24.webp differ diff --git a/src/assets/animal/25.webp b/src/assets/animal/25.webp index e9927b1..905517f 100644 Binary files a/src/assets/animal/25.webp and b/src/assets/animal/25.webp differ diff --git a/src/assets/animal/26.webp b/src/assets/animal/26.webp index 883c8de..fbfbc69 100644 Binary files a/src/assets/animal/26.webp and b/src/assets/animal/26.webp differ diff --git a/src/assets/animal/27.webp b/src/assets/animal/27.webp index 6c4b6da..a4733a6 100644 Binary files a/src/assets/animal/27.webp and b/src/assets/animal/27.webp differ diff --git a/src/assets/animal/28.webp b/src/assets/animal/28.webp index 65ccb32..d67f8ee 100644 Binary files a/src/assets/animal/28.webp and b/src/assets/animal/28.webp differ diff --git a/src/assets/animal/29.webp b/src/assets/animal/29.webp index d545bd0..0f9a052 100644 Binary files a/src/assets/animal/29.webp and b/src/assets/animal/29.webp differ diff --git a/src/assets/animal/3.webp b/src/assets/animal/3.webp index 08bcd84..5aa6b5a 100644 Binary files a/src/assets/animal/3.webp and b/src/assets/animal/3.webp differ diff --git a/src/assets/animal/30.webp b/src/assets/animal/30.webp index fca1bcc..394b23c 100644 Binary files a/src/assets/animal/30.webp and b/src/assets/animal/30.webp differ diff --git a/src/assets/animal/31.webp b/src/assets/animal/31.webp index e848520..eb12f75 100644 Binary files a/src/assets/animal/31.webp and b/src/assets/animal/31.webp differ diff --git a/src/assets/animal/32.webp b/src/assets/animal/32.webp index 43ccd39..d575deb 100644 Binary files a/src/assets/animal/32.webp and b/src/assets/animal/32.webp differ diff --git a/src/assets/animal/33.webp b/src/assets/animal/33.webp index c4822ed..e21db3d 100644 Binary files a/src/assets/animal/33.webp and b/src/assets/animal/33.webp differ diff --git a/src/assets/animal/34.webp b/src/assets/animal/34.webp index 754e55c..4abe6fb 100644 Binary files a/src/assets/animal/34.webp and b/src/assets/animal/34.webp differ diff --git a/src/assets/animal/35.webp b/src/assets/animal/35.webp index 2a0b1f7..33e958c 100644 Binary files a/src/assets/animal/35.webp and b/src/assets/animal/35.webp differ diff --git a/src/assets/animal/36.webp b/src/assets/animal/36.webp index ced01e0..764c370 100644 Binary files a/src/assets/animal/36.webp and b/src/assets/animal/36.webp differ diff --git a/src/assets/animal/4.webp b/src/assets/animal/4.webp index 16624b5..e5bef7f 100644 Binary files a/src/assets/animal/4.webp and b/src/assets/animal/4.webp differ diff --git a/src/assets/animal/5.webp b/src/assets/animal/5.webp index c53193b..8c4bcb9 100644 Binary files a/src/assets/animal/5.webp and b/src/assets/animal/5.webp differ diff --git a/src/assets/animal/6.webp b/src/assets/animal/6.webp index 60c49ae..a97e050 100644 Binary files a/src/assets/animal/6.webp and b/src/assets/animal/6.webp differ diff --git a/src/assets/animal/7.webp b/src/assets/animal/7.webp index d17b21e..7b966c1 100644 Binary files a/src/assets/animal/7.webp and b/src/assets/animal/7.webp differ diff --git a/src/assets/animal/8.webp b/src/assets/animal/8.webp index 583c1ed..5b5bf6e 100644 Binary files a/src/assets/animal/8.webp and b/src/assets/animal/8.webp differ diff --git a/src/assets/animal/9.webp b/src/assets/animal/9.webp index ae1fc71..3ae21ea 100644 Binary files a/src/assets/animal/9.webp and b/src/assets/animal/9.webp differ diff --git a/src/assets/game/add.webp b/src/assets/game/add.webp index 22b8858..6385e46 100644 Binary files a/src/assets/game/add.webp and b/src/assets/game/add.webp differ diff --git a/src/assets/game/animal-border.webp b/src/assets/game/animal-border.webp index f54408c..3129659 100644 Binary files a/src/assets/game/animal-border.webp and b/src/assets/game/animal-border.webp differ diff --git a/src/assets/game/animal-card.webp b/src/assets/game/animal-card.webp index f54408c..3129659 100644 Binary files a/src/assets/game/animal-card.webp and b/src/assets/game/animal-card.webp differ diff --git a/src/assets/game/arrow.webp b/src/assets/game/arrow.webp index f188a96..2b81b32 100644 Binary files a/src/assets/game/arrow.webp and b/src/assets/game/arrow.webp differ diff --git a/src/assets/game/chip-bg.webp b/src/assets/game/chip-bg.webp index 95b8563..05754b2 100644 Binary files a/src/assets/game/chip-bg.webp and b/src/assets/game/chip-bg.webp differ diff --git a/src/assets/game/chip-line-bg.webp b/src/assets/game/chip-line-bg.webp index df3ddaa..30c5358 100644 Binary files a/src/assets/game/chip-line-bg.webp and b/src/assets/game/chip-line-bg.webp differ diff --git a/src/assets/game/chip-lock.webp b/src/assets/game/chip-lock.webp index 34e1409..8b2d53e 100644 Binary files a/src/assets/game/chip-lock.webp and b/src/assets/game/chip-lock.webp differ diff --git a/src/assets/game/chip1.webp b/src/assets/game/chip1.webp index 9d6e83b..1c5d2fe 100644 Binary files a/src/assets/game/chip1.webp and b/src/assets/game/chip1.webp differ diff --git a/src/assets/game/chip2.webp b/src/assets/game/chip2.webp index 40fc046..87484f4 100644 Binary files a/src/assets/game/chip2.webp and b/src/assets/game/chip2.webp differ diff --git a/src/assets/game/chip3.webp b/src/assets/game/chip3.webp index a0763a2..38e5ed7 100644 Binary files a/src/assets/game/chip3.webp and b/src/assets/game/chip3.webp differ diff --git a/src/assets/game/chip4.webp b/src/assets/game/chip4.webp index e7953c2..86e330f 100644 Binary files a/src/assets/game/chip4.webp and b/src/assets/game/chip4.webp differ diff --git a/src/assets/game/chip5.webp b/src/assets/game/chip5.webp index fd21a56..429dd3e 100644 Binary files a/src/assets/game/chip5.webp and b/src/assets/game/chip5.webp differ diff --git a/src/assets/game/chip6.webp b/src/assets/game/chip6.webp index aa773b0..707e06e 100644 Binary files a/src/assets/game/chip6.webp and b/src/assets/game/chip6.webp differ diff --git a/src/assets/game/confirm-bg.png b/src/assets/game/confirm-bg.png index f222351..24494e8 100644 Binary files a/src/assets/game/confirm-bg.png and b/src/assets/game/confirm-bg.png differ diff --git a/src/assets/game/confirm-bg.webp b/src/assets/game/confirm-bg.webp index c16ef28..6e52fd7 100644 Binary files a/src/assets/game/confirm-bg.webp and b/src/assets/game/confirm-bg.webp differ diff --git a/src/assets/game/confirm-red-bg.png b/src/assets/game/confirm-red-bg.png index 6d23c3d..99f8169 100644 Binary files a/src/assets/game/confirm-red-bg.png and b/src/assets/game/confirm-red-bg.png differ diff --git a/src/assets/game/control-bg.png b/src/assets/game/control-bg.png index dea0af7..90c614b 100644 Binary files a/src/assets/game/control-bg.png and b/src/assets/game/control-bg.png differ diff --git a/src/assets/game/control-left.webp b/src/assets/game/control-left.webp index 255c6ac..cffeaba 100644 Binary files a/src/assets/game/control-left.webp and b/src/assets/game/control-left.webp differ diff --git a/src/assets/game/control-mid.webp b/src/assets/game/control-mid.webp index a37b3e7..4543361 100644 Binary files a/src/assets/game/control-mid.webp and b/src/assets/game/control-mid.webp differ diff --git a/src/assets/game/control-right.webp b/src/assets/game/control-right.webp index 061b542..7db0f7d 100644 Binary files a/src/assets/game/control-right.webp and b/src/assets/game/control-right.webp differ diff --git a/src/assets/game/en-stop.webp b/src/assets/game/en-stop.webp index 8ae498b..dcad3e3 100644 Binary files a/src/assets/game/en-stop.webp and b/src/assets/game/en-stop.webp differ diff --git a/src/assets/game/hosting-bg.webp b/src/assets/game/hosting-bg.webp index 1030cb7..f06cd1d 100644 Binary files a/src/assets/game/hosting-bg.webp and b/src/assets/game/hosting-bg.webp differ diff --git a/src/assets/game/hosting-btn.webp b/src/assets/game/hosting-btn.webp index 0b253c7..4ee55bc 100644 Binary files a/src/assets/game/hosting-btn.webp and b/src/assets/game/hosting-btn.webp differ diff --git a/src/assets/game/left-bg.webp b/src/assets/game/left-bg.webp index 6df1f2a..5a49b1f 100644 Binary files a/src/assets/game/left-bg.webp and b/src/assets/game/left-bg.webp differ diff --git a/src/assets/game/mobile-add-reduce-bg.webp b/src/assets/game/mobile-add-reduce-bg.webp index d641226..2e4488c 100644 Binary files a/src/assets/game/mobile-add-reduce-bg.webp and b/src/assets/game/mobile-add-reduce-bg.webp differ diff --git a/src/assets/game/mobile-confirm-red-bg.webp b/src/assets/game/mobile-confirm-red-bg.webp index a9ec7cd..b3d5250 100644 Binary files a/src/assets/game/mobile-confirm-red-bg.webp and b/src/assets/game/mobile-confirm-red-bg.webp differ diff --git a/src/assets/game/mobile-contro-comfirm.webp b/src/assets/game/mobile-contro-comfirm.webp index 78bf73d..cba1022 100644 Binary files a/src/assets/game/mobile-contro-comfirm.webp and b/src/assets/game/mobile-contro-comfirm.webp differ diff --git a/src/assets/game/mobile-control-actions-bg.png b/src/assets/game/mobile-control-actions-bg.png index 813aa6d..a23cca9 100644 Binary files a/src/assets/game/mobile-control-actions-bg.png and b/src/assets/game/mobile-control-actions-bg.png differ diff --git a/src/assets/game/mobile-control-number.webp b/src/assets/game/mobile-control-number.webp index a2ef98d..980222d 100644 Binary files a/src/assets/game/mobile-control-number.webp and b/src/assets/game/mobile-control-number.webp differ diff --git a/src/assets/game/reduce.webp b/src/assets/game/reduce.webp index 550c504..dc19b11 100644 Binary files a/src/assets/game/reduce.webp and b/src/assets/game/reduce.webp differ diff --git a/src/assets/game/total-bg.webp b/src/assets/game/total-bg.webp index 4af8a88..acf8148 100644 Binary files a/src/assets/game/total-bg.webp and b/src/assets/game/total-bg.webp differ diff --git a/src/assets/game/win-bg.webp b/src/assets/game/win-bg.webp index 5c168fa..7ce82a0 100644 Binary files a/src/assets/game/win-bg.webp and b/src/assets/game/win-bg.webp differ diff --git a/src/assets/game/win.webp b/src/assets/game/win.webp index 1b4955e..4649a37 100644 Binary files a/src/assets/game/win.webp and b/src/assets/game/win.webp differ diff --git a/src/assets/game/zh-stop.webp b/src/assets/game/zh-stop.webp index 5326cf1..9152cb5 100644 Binary files a/src/assets/game/zh-stop.webp and b/src/assets/game/zh-stop.webp differ diff --git a/src/assets/reward/1.webp b/src/assets/reward/1.webp index 9fbcb51..aa8b470 100644 Binary files a/src/assets/reward/1.webp and b/src/assets/reward/1.webp differ diff --git a/src/assets/reward/10.webp b/src/assets/reward/10.webp index 552156e..5c35289 100644 Binary files a/src/assets/reward/10.webp and b/src/assets/reward/10.webp differ diff --git a/src/assets/reward/11.webp b/src/assets/reward/11.webp index 286123a..4e9eda8 100644 Binary files a/src/assets/reward/11.webp and b/src/assets/reward/11.webp differ diff --git a/src/assets/reward/12.webp b/src/assets/reward/12.webp index ce7b6c2..4ed52b5 100644 Binary files a/src/assets/reward/12.webp and b/src/assets/reward/12.webp differ diff --git a/src/assets/reward/13.webp b/src/assets/reward/13.webp index 1a843ba..e0b2abb 100644 Binary files a/src/assets/reward/13.webp and b/src/assets/reward/13.webp differ diff --git a/src/assets/reward/14.webp b/src/assets/reward/14.webp index d02f7b9..74ddc24 100644 Binary files a/src/assets/reward/14.webp and b/src/assets/reward/14.webp differ diff --git a/src/assets/reward/15.webp b/src/assets/reward/15.webp index 95e56ee..98f6a1a 100644 Binary files a/src/assets/reward/15.webp and b/src/assets/reward/15.webp differ diff --git a/src/assets/reward/16.webp b/src/assets/reward/16.webp index a6c68b8..80b70cf 100644 Binary files a/src/assets/reward/16.webp and b/src/assets/reward/16.webp differ diff --git a/src/assets/reward/17.webp b/src/assets/reward/17.webp index a131d66..448ed79 100644 Binary files a/src/assets/reward/17.webp and b/src/assets/reward/17.webp differ diff --git a/src/assets/reward/18.webp b/src/assets/reward/18.webp index d2d67ee..2098d6c 100644 Binary files a/src/assets/reward/18.webp and b/src/assets/reward/18.webp differ diff --git a/src/assets/reward/19.webp b/src/assets/reward/19.webp index 7699d2d..c6ed7bd 100644 Binary files a/src/assets/reward/19.webp and b/src/assets/reward/19.webp differ diff --git a/src/assets/reward/2.webp b/src/assets/reward/2.webp index eb0ebe4..3ababb5 100644 Binary files a/src/assets/reward/2.webp and b/src/assets/reward/2.webp differ diff --git a/src/assets/reward/20.webp b/src/assets/reward/20.webp index 66068fc..e04df76 100644 Binary files a/src/assets/reward/20.webp and b/src/assets/reward/20.webp differ diff --git a/src/assets/reward/21.webp b/src/assets/reward/21.webp index c991371..e1dd18d 100644 Binary files a/src/assets/reward/21.webp and b/src/assets/reward/21.webp differ diff --git a/src/assets/reward/22.webp b/src/assets/reward/22.webp index 9826810..49b26fb 100644 Binary files a/src/assets/reward/22.webp and b/src/assets/reward/22.webp differ diff --git a/src/assets/reward/23.webp b/src/assets/reward/23.webp index 5240127..ce8cae6 100644 Binary files a/src/assets/reward/23.webp and b/src/assets/reward/23.webp differ diff --git a/src/assets/reward/24.webp b/src/assets/reward/24.webp index 12ead6f..a7f6ff8 100644 Binary files a/src/assets/reward/24.webp and b/src/assets/reward/24.webp differ diff --git a/src/assets/reward/25.webp b/src/assets/reward/25.webp index bf7d637..835801b 100644 Binary files a/src/assets/reward/25.webp and b/src/assets/reward/25.webp differ diff --git a/src/assets/reward/26.webp b/src/assets/reward/26.webp index 9122933..798274e 100644 Binary files a/src/assets/reward/26.webp and b/src/assets/reward/26.webp differ diff --git a/src/assets/reward/27.webp b/src/assets/reward/27.webp index 40fc6b9..716901a 100644 Binary files a/src/assets/reward/27.webp and b/src/assets/reward/27.webp differ diff --git a/src/assets/reward/28.webp b/src/assets/reward/28.webp index 89fc939..f1c8426 100644 Binary files a/src/assets/reward/28.webp and b/src/assets/reward/28.webp differ diff --git a/src/assets/reward/29.webp b/src/assets/reward/29.webp index 26b4b91..45ea787 100644 Binary files a/src/assets/reward/29.webp and b/src/assets/reward/29.webp differ diff --git a/src/assets/reward/3.webp b/src/assets/reward/3.webp index 3318df3..5674382 100644 Binary files a/src/assets/reward/3.webp and b/src/assets/reward/3.webp differ diff --git a/src/assets/reward/30.webp b/src/assets/reward/30.webp index 61d0193..ffa0cc4 100644 Binary files a/src/assets/reward/30.webp and b/src/assets/reward/30.webp differ diff --git a/src/assets/reward/31.webp b/src/assets/reward/31.webp index bc0c479..2feed5d 100644 Binary files a/src/assets/reward/31.webp and b/src/assets/reward/31.webp differ diff --git a/src/assets/reward/32.webp b/src/assets/reward/32.webp index 1fb8928..f5872a0 100644 Binary files a/src/assets/reward/32.webp and b/src/assets/reward/32.webp differ diff --git a/src/assets/reward/33.webp b/src/assets/reward/33.webp index 951c451..27f24fc 100644 Binary files a/src/assets/reward/33.webp and b/src/assets/reward/33.webp differ diff --git a/src/assets/reward/34.webp b/src/assets/reward/34.webp index 6c52a1f..952dec8 100644 Binary files a/src/assets/reward/34.webp and b/src/assets/reward/34.webp differ diff --git a/src/assets/reward/35.webp b/src/assets/reward/35.webp index 3ed3dff..176b26c 100644 Binary files a/src/assets/reward/35.webp and b/src/assets/reward/35.webp differ diff --git a/src/assets/reward/36.webp b/src/assets/reward/36.webp index 134fa39..fd6d090 100644 Binary files a/src/assets/reward/36.webp and b/src/assets/reward/36.webp differ diff --git a/src/assets/reward/4.webp b/src/assets/reward/4.webp index 381f1f5..ecd8283 100644 Binary files a/src/assets/reward/4.webp and b/src/assets/reward/4.webp differ diff --git a/src/assets/reward/5.webp b/src/assets/reward/5.webp index e0dc2b7..d6249ae 100644 Binary files a/src/assets/reward/5.webp and b/src/assets/reward/5.webp differ diff --git a/src/assets/reward/6.webp b/src/assets/reward/6.webp index db91172..fa6c9f1 100644 Binary files a/src/assets/reward/6.webp and b/src/assets/reward/6.webp differ diff --git a/src/assets/reward/7.webp b/src/assets/reward/7.webp index 644341c..238f02d 100644 Binary files a/src/assets/reward/7.webp and b/src/assets/reward/7.webp differ diff --git a/src/assets/reward/8.webp b/src/assets/reward/8.webp index 36e51b3..af8e279 100644 Binary files a/src/assets/reward/8.webp and b/src/assets/reward/8.webp differ diff --git a/src/assets/reward/9.webp b/src/assets/reward/9.webp index 05d9513..f324189 100644 Binary files a/src/assets/reward/9.webp and b/src/assets/reward/9.webp differ diff --git a/src/assets/system/avatar.webp b/src/assets/system/avatar.webp index eca0e7f..87c841b 100644 Binary files a/src/assets/system/avatar.webp and b/src/assets/system/avatar.webp differ diff --git a/src/assets/system/blue-btn.webp b/src/assets/system/blue-btn.webp index d1fef2b..771b586 100644 Binary files a/src/assets/system/blue-btn.webp and b/src/assets/system/blue-btn.webp differ diff --git a/src/assets/system/broadcast.webp b/src/assets/system/broadcast.webp index 996f498..0131b45 100644 Binary files a/src/assets/system/broadcast.webp and b/src/assets/system/broadcast.webp differ diff --git a/src/assets/system/chat.webp b/src/assets/system/chat.webp index dc8ca70..029eee1 100644 Binary files a/src/assets/system/chat.webp and b/src/assets/system/chat.webp differ diff --git a/src/assets/system/diamond.webp b/src/assets/system/diamond.webp index 47df018..6785b91 100644 Binary files a/src/assets/system/diamond.webp and b/src/assets/system/diamond.webp differ diff --git a/src/assets/system/en-US.png b/src/assets/system/en-US.png index 4cd1fa6..22c6068 100644 Binary files a/src/assets/system/en-US.png and b/src/assets/system/en-US.png differ diff --git a/src/assets/system/fire.webp b/src/assets/system/fire.webp index a1f2957..dd7a974 100644 Binary files a/src/assets/system/fire.webp and b/src/assets/system/fire.webp differ diff --git a/src/assets/system/green-btn.webp b/src/assets/system/green-btn.webp index 2961eb3..47a7424 100644 Binary files a/src/assets/system/green-btn.webp and b/src/assets/system/green-btn.webp differ diff --git a/src/assets/system/history-bg.png b/src/assets/system/history-bg.png index 59a13b3..a52c2be 100644 Binary files a/src/assets/system/history-bg.png and b/src/assets/system/history-bg.png differ diff --git a/src/assets/system/id-ID.webp b/src/assets/system/id-ID.webp index 209535f..7cddfaa 100644 Binary files a/src/assets/system/id-ID.webp and b/src/assets/system/id-ID.webp differ diff --git a/src/assets/system/length-blue-btn.webp b/src/assets/system/length-blue-btn.webp index 7fb504f..8e5b44c 100644 Binary files a/src/assets/system/length-blue-btn.webp and b/src/assets/system/length-blue-btn.webp differ diff --git a/src/assets/system/length-green-btn.webp b/src/assets/system/length-green-btn.webp index f9d194b..4f931a5 100644 Binary files a/src/assets/system/length-green-btn.webp and b/src/assets/system/length-green-btn.webp differ diff --git a/src/assets/system/lock.webp b/src/assets/system/lock.webp index 918a134..5d7bca5 100644 Binary files a/src/assets/system/lock.webp and b/src/assets/system/lock.webp differ diff --git a/src/assets/system/login-bg.webp b/src/assets/system/login-bg.webp index 550c40f..89a2b2c 100644 Binary files a/src/assets/system/login-bg.webp and b/src/assets/system/login-bg.webp differ diff --git a/src/assets/system/login-text.webp b/src/assets/system/login-text.webp index 956cbf7..9ec0edb 100644 Binary files a/src/assets/system/login-text.webp and b/src/assets/system/login-text.webp differ diff --git a/src/assets/system/logo.webp b/src/assets/system/logo.webp index 89e7c34..e5aad53 100644 Binary files a/src/assets/system/logo.webp and b/src/assets/system/logo.webp differ diff --git a/src/assets/system/mobile-add-reduce-bg.webp b/src/assets/system/mobile-add-reduce-bg.webp index d641226..2e4488c 100644 Binary files a/src/assets/system/mobile-add-reduce-bg.webp and b/src/assets/system/mobile-add-reduce-bg.webp differ diff --git a/src/assets/system/mobile-contro-comfirm.webp b/src/assets/system/mobile-contro-comfirm.webp index 78bf73d..cba1022 100644 Binary files a/src/assets/system/mobile-contro-comfirm.webp and b/src/assets/system/mobile-contro-comfirm.webp differ diff --git a/src/assets/system/mobile-control-number.webp b/src/assets/system/mobile-control-number.webp index a2ef98d..980222d 100644 Binary files a/src/assets/system/mobile-control-number.webp and b/src/assets/system/mobile-control-number.webp differ diff --git a/src/assets/system/mobile-modal-header.webp b/src/assets/system/mobile-modal-header.webp index bc7aa5d..45b8b12 100644 Binary files a/src/assets/system/mobile-modal-header.webp and b/src/assets/system/mobile-modal-header.webp differ diff --git a/src/assets/system/modal-bg.webp b/src/assets/system/modal-bg.webp index d1f2795..8be35ad 100644 Binary files a/src/assets/system/modal-bg.webp and b/src/assets/system/modal-bg.webp differ diff --git a/src/assets/system/modal-close.webp b/src/assets/system/modal-close.webp index f340940..6c8051c 100644 Binary files a/src/assets/system/modal-close.webp and b/src/assets/system/modal-close.webp differ diff --git a/src/assets/system/modal-normal-bg.png b/src/assets/system/modal-normal-bg.png index b7eb2fd..8328303 100644 Binary files a/src/assets/system/modal-normal-bg.png and b/src/assets/system/modal-normal-bg.png differ diff --git a/src/assets/system/ms-MY.png b/src/assets/system/ms-MY.png index efe714a..dd0efb7 100644 Binary files a/src/assets/system/ms-MY.png and b/src/assets/system/ms-MY.png differ diff --git a/src/assets/system/notice-bg.webp b/src/assets/system/notice-bg.webp index 3b495c0..de9d611 100644 Binary files a/src/assets/system/notice-bg.webp and b/src/assets/system/notice-bg.webp differ diff --git a/src/assets/system/procedures-bg.webp b/src/assets/system/procedures-bg.webp index e3c76c2..e4e0ec0 100644 Binary files a/src/assets/system/procedures-bg.webp and b/src/assets/system/procedures-bg.webp differ diff --git a/src/assets/system/refresh.webp b/src/assets/system/refresh.webp index e6577be..87b2db5 100644 Binary files a/src/assets/system/refresh.webp and b/src/assets/system/refresh.webp differ diff --git a/src/assets/system/right.webp b/src/assets/system/right.webp index 6cbac06..d60ee52 100644 Binary files a/src/assets/system/right.webp and b/src/assets/system/right.webp differ diff --git a/src/assets/system/status-center.webp b/src/assets/system/status-center.webp index 41c10ec..a4eb5b5 100644 Binary files a/src/assets/system/status-center.webp and b/src/assets/system/status-center.webp differ diff --git a/src/assets/system/status-line.webp b/src/assets/system/status-line.webp index 418df7a..f01436a 100644 Binary files a/src/assets/system/status-line.webp and b/src/assets/system/status-line.webp differ diff --git a/src/assets/system/switch.webp b/src/assets/system/switch.webp index a00c758..cd64e2b 100644 Binary files a/src/assets/system/switch.webp and b/src/assets/system/switch.webp differ diff --git a/src/assets/system/topup.webp b/src/assets/system/topup.webp index c14c2cf..53e9fcf 100644 Binary files a/src/assets/system/topup.webp and b/src/assets/system/topup.webp differ diff --git a/src/assets/system/userInfo-bg.webp b/src/assets/system/userInfo-bg.webp index 1c1eefb..c503a12 100644 Binary files a/src/assets/system/userInfo-bg.webp and b/src/assets/system/userInfo-bg.webp differ diff --git a/src/assets/system/wifi.webp b/src/assets/system/wifi.webp index ac17d33..6569782 100644 Binary files a/src/assets/system/wifi.webp and b/src/assets/system/wifi.webp differ diff --git a/src/assets/system/withdraw.webp b/src/assets/system/withdraw.webp index 5b30754..b2d6659 100644 Binary files a/src/assets/system/withdraw.webp and b/src/assets/system/withdraw.webp differ diff --git a/src/assets/system/zh-CN.png b/src/assets/system/zh-CN.png index 259c44a..5e236e2 100644 Binary files a/src/assets/system/zh-CN.png and b/src/assets/system/zh-CN.png differ diff --git a/src/main.tsx b/src/main.tsx index 4192843..95558cf 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,7 +1,6 @@ import { QueryClientProvider } from '@tanstack/react-query' -import { ReactQueryDevtools } from '@tanstack/react-query-devtools' import { RouterProvider } from '@tanstack/react-router' -import { StrictMode } from 'react' +import { lazy, StrictMode, Suspense } from 'react' import { createRoot } from 'react-dom/client' import { getCurrentUserProfile, refreshAuthSession } from '@/api' import { AppBootResourceGate } from '@/components/app-boot-resource-gate' @@ -23,6 +22,15 @@ const rootElement = document.getElementById(APP_ROOT_ELEMENT_ID) const shouldShowQueryDevtools = import.meta.env.VITE_APP_ENV === 'development' && import.meta.env.VITE_ENABLE_QUERY_DEVTOOLS === 'true' +const QueryDevtools = shouldShowQueryDevtools + ? lazy(async () => { + const { ReactQueryDevtools } = await import( + '@tanstack/react-query-devtools' + ) + + return { default: ReactQueryDevtools } + }) + : null if (!rootElement) { throw new Error('Root element not found') @@ -46,8 +54,10 @@ createRoot(rootElement).render( - {shouldShowQueryDevtools && ( - + {QueryDevtools && ( + + + )} diff --git a/src/main/desktop-modal-host.tsx b/src/main/desktop-modal-host.tsx new file mode 100644 index 0000000..25ee5e4 --- /dev/null +++ b/src/main/desktop-modal-host.tsx @@ -0,0 +1,31 @@ +import { EntryNoticeGateModal } from '@/features/game/components/shared/entry-notice-gate-modal' +import DesktopAutoSettingModal from '@/modal/desktop/desktop-auto-setting-modal.tsx' +import DesktopLanguageModal from '@/modal/desktop/desktop-language-modal.tsx' +import DesktopLoginModal from '@/modal/desktop/desktop-login-modal.tsx' +import DesktopNoticeModal from '@/modal/desktop/desktop-notice-modal.tsx' +import { DesktopPeriodHistoryDrawer } from '@/modal/desktop/desktop-period-history-drawer.tsx' +import DesktopProceduresModal from '@/modal/desktop/desktop-procedures-modal.tsx' +import DesktopRegisterModal from '@/modal/desktop/desktop-register-modal.tsx' +import DesktopRulesModal from '@/modal/desktop/desktop-rules-modal.tsx' +import DesktopSupportModal from '@/modal/desktop/desktop-support-modal.tsx' +import DesktopUserInfoModal from '@/modal/desktop/desktop-userInfo-modal.tsx' +import DesktopWithdrawTopupModal from '@/modal/desktop/desktop-withdraw-topup-modal.tsx' + +export default function DesktopModalHost() { + return ( + <> + + + + + + + + + + + + + + ) +} diff --git a/src/main/main-entry-page.tsx b/src/main/main-entry-page.tsx index 7cad2f3..da98962 100644 --- a/src/main/main-entry-page.tsx +++ b/src/main/main-entry-page.tsx @@ -1,102 +1,25 @@ -import { startTransition, useEffect, useState } from 'react' +import { lazy, Suspense, startTransition, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { getGameLobbyInit } from '@/api' import { MOBILE_LAYOUT_BREAKPOINT_PX } from '@/constants' -import { - EntryNoticeGateModal, - MobileEntryNoticeGateModal, -} from '@/features/game/components/shared/entry-notice-gate-modal' import { useGameRealtimeSync } from '@/hooks/use-game-realtime-sync.ts' import { useDocumentMetadata } from '@/lib/head/document-metadata.ts' import { notify } from '@/lib/notify.ts' -import { MobileEntry } from '@/main/mobile-entry.tsx' -import { PcEntry } from '@/main/pc-entry.tsx' -import DesktopAutoSettingModal from '@/modal/desktop/desktop-auto-setting-modal.tsx' -import DesktopLanguageModal from '@/modal/desktop/desktop-language-modal.tsx' -import DesktopLoginModal from '@/modal/desktop/desktop-login-modal.tsx' -import DesktopNoticeModal from '@/modal/desktop/desktop-notice-modal.tsx' -import { DesktopPeriodHistoryDrawer } from '@/modal/desktop/desktop-period-history-drawer.tsx' -import DesktopProceduresModal from '@/modal/desktop/desktop-procedures-modal.tsx' -import DesktopRegisterModal from '@/modal/desktop/desktop-register-modal.tsx' -import DesktopRulesModal from '@/modal/desktop/desktop-rules-modal.tsx' -import DesktopSupportModal from '@/modal/desktop/desktop-support-modal.tsx' -import DesktopUserInfoModal from '@/modal/desktop/desktop-userInfo-modal.tsx' -import DesktopWithdrawTopupModal from '@/modal/desktop/desktop-withdraw-topup-modal.tsx' -import MobileAutoSettingModal from '@/modal/mobile/mobile-auto-setting-modal.tsx' -import MobileLanguageModal from '@/modal/mobile/mobile-language-modal.tsx' -import MobileLoginModal from '@/modal/mobile/mobile-login-modal.tsx' -import MobileNoticeModal from '@/modal/mobile/mobile-notice-modal.tsx' -import { MobilePeriodHistoryDrawer } from '@/modal/mobile/mobile-period-history-drawer.tsx' -import MobileProceduresModal from '@/modal/mobile/mobile-procedures-modal.tsx' -import MobileRegisterModal from '@/modal/mobile/mobile-register-modal.tsx' -import MobileRulesModal from '@/modal/mobile/mobile-rules-modal.tsx' -import MobileSupportModal from '@/modal/mobile/mobile-support-modal.tsx' -import MobileUserInfoModal from '@/modal/mobile/mobile-userInfo-modal.tsx' -import MobileWithdrawTopupModal from '@/modal/mobile/mobile-withdraw-topup-modal.tsx' import { useAuthStore } from '@/store/auth' import { useGameRoundStore, useGameSessionStore } from '@/store/game' -function DesktopModalHost() { - return ( - <> - {/* 桌面端登录弹窗:用于未登录用户进入登录流程 */} - - {/* 桌面端注册弹窗:用于新用户注册账号 */} - - {/* 桌面端语言切换弹窗:用于选择当前站点展示语言 */} - - {/* 桌面端规则弹窗:展示当前游戏玩法、下注与结算规则 */} - - {/* 桌面端用户信息弹窗:展示个人资料与站内消息 */} - - {/* 桌面端公告弹窗:展示活动公告或运营通知内容 */} - - {/* 桌面端自动托管弹窗:配置自动托管相关条件 */} - - {/* 桌面端充值/提现前置选择弹窗:先选择进入充值还是提现 */} - - {/* 桌面端充值/提现业务弹窗:承载具体的充值或提现内容 */} - - {/* 桌面端客服弹窗:承载在线客服 iframe */} - - {/* 强制弹窗 */} - - {/* 历史开奖信息弹窗 */} - - - ) -} +const DesktopModalHost = lazy(() => import('@/main/desktop-modal-host.tsx')) +const MobileEntry = lazy(async () => { + const { MobileEntry } = await import('@/main/mobile-entry.tsx') -function MobileModalHost() { - return ( - <> - {/* 移动端登录弹窗:用于未登录用户进入登录流程 */} - - {/* 移动端注册弹窗:用于新用户注册账号 */} - - {/* 移动端语言切换弹窗:用于选择当前站点展示语言 */} - - {/* 移动端规则弹窗:展示当前游戏玩法、下注与结算规则 */} - - {/* 移动端用户信息弹窗:展示个人资料与站内消息 */} - - {/* 移动端公告弹窗:展示活动公告或运营通知内容 */} - - {/* 移动端自动托管弹窗:配置自动托管相关条件 */} - - {/* 移动端充值/提现前置选择弹窗:先选择进入充值还是提现 */} - - {/* 移动端充值/提现业务弹窗:承载具体的充值或提现内容 */} - - {/* 移动端客服弹窗:承载在线客服 iframe */} - - {/* 强制弹窗 */} - - {/* 历史开奖信息弹窗 */} - - - ) -} + return { default: MobileEntry } +}) +const MobileModalHost = lazy(() => import('@/main/mobile-modal-host.tsx')) +const PcEntry = lazy(async () => { + const { PcEntry } = await import('@/main/pc-entry.tsx') + + return { default: PcEntry } +}) export function MainEntryPage() { const { t } = useTranslation() @@ -258,8 +181,12 @@ export function MainEntryPage() { isMobile ? 'flex w-full flex-col' : 'flex min-h-0 flex-1 flex-col' } > - {isMobile ? : } - {isMobile ? : } + + {isMobile ? : } + + + {isMobile ? : } + ) } diff --git a/src/main/mobile-modal-host.tsx b/src/main/mobile-modal-host.tsx new file mode 100644 index 0000000..202f7ce --- /dev/null +++ b/src/main/mobile-modal-host.tsx @@ -0,0 +1,31 @@ +import { MobileEntryNoticeGateModal } from '@/features/game/components/shared/entry-notice-gate-modal' +import MobileAutoSettingModal from '@/modal/mobile/mobile-auto-setting-modal.tsx' +import MobileLanguageModal from '@/modal/mobile/mobile-language-modal.tsx' +import MobileLoginModal from '@/modal/mobile/mobile-login-modal.tsx' +import MobileNoticeModal from '@/modal/mobile/mobile-notice-modal.tsx' +import { MobilePeriodHistoryDrawer } from '@/modal/mobile/mobile-period-history-drawer.tsx' +import MobileProceduresModal from '@/modal/mobile/mobile-procedures-modal.tsx' +import MobileRegisterModal from '@/modal/mobile/mobile-register-modal.tsx' +import MobileRulesModal from '@/modal/mobile/mobile-rules-modal.tsx' +import MobileSupportModal from '@/modal/mobile/mobile-support-modal.tsx' +import MobileUserInfoModal from '@/modal/mobile/mobile-userInfo-modal.tsx' +import MobileWithdrawTopupModal from '@/modal/mobile/mobile-withdraw-topup-modal.tsx' + +export default function MobileModalHost() { + return ( + <> + + + + + + + + + + + + + + ) +} diff --git a/vite.config.ts b/vite.config.ts index 032f749..b219918 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,10 +5,61 @@ import { tanstackRouter } from '@tanstack/router-plugin/vite' import react, { reactCompilerPreset } from '@vitejs/plugin-react' import { defineConfig } from 'vite' +function resolveManualChunk(id: string) { + if (!id.includes('/node_modules/')) { + return + } + + if ( + id.includes('/node_modules/react/') || + id.includes('/node_modules/react-dom/') || + id.includes('/node_modules/scheduler/') + ) { + return 'vendor-react' + } + + if (id.includes('/node_modules/@tanstack/')) { + return 'vendor-tanstack' + } + + if ( + id.includes('/node_modules/i18next/') || + id.includes('/node_modules/react-i18next/') + ) { + return 'vendor-i18n' + } + + if ( + id.includes('/node_modules/motion/') || + id.includes('/node_modules/lottie-web/') + ) { + return 'vendor-animation' + } + + if ( + id.includes('/node_modules/radix-ui/') || + id.includes('/node_modules/@radix-ui/') + ) { + return 'vendor-radix' + } + + if (id.includes('/node_modules/lucide-react/')) { + return 'vendor-icons' + } + + return 'vendor' +} + export default defineConfig({ resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), + 'lottie-web': fileURLToPath( + new URL( + './node_modules/lottie-web/build/player/lottie_light.js', + import.meta.url, + ), + ), }, }, server: { @@ -33,5 +84,10 @@ export default defineConfig({ ], build: { outDir: 'zihua-web', + rolldownOptions: { + output: { + manualChunks: resolveManualChunk, + }, + }, }, })