Merge skin/effects pickers into one lobby Cosmetics modal (#4617)

## What

Replaces the three lobby cosmetic buttons (skin, flag, effects) with
two: **Flag** and **Cosmetics**. The new Cosmetics button opens a single
tabbed modal (`#modal=cosmetics`) with:

- **Skins** — the combined patterns + image-skins grid (from
TerritoryPatternsModal)
- **Effects** — all effect types via the tabbed effects-grid, same
layout as the Store

## Changes

- New `CosmeticsModal` and `CosmeticsInput` (lobby button previews the
selected skin/pattern, shows a "Cosmetics" label on defaults, hidden on
CrazyGames via `no-crazygames`)
- Removed `TerritoryPatternsModal`, `EffectsModal`, `PatternInput`,
`EffectsInput` and their wiring in Main.ts / index.html / LangSelector
- Selecting a skin or pattern no longer closes the modal — the tile
highlight moves to the new selection (matches the Effects tab behavior)
- i18n: added `cosmetics.title/button_title/search`; removed the keys
orphaned by the deleted components

## Notes

- Deep links to the old `#modal=territory-patterns` and `#modal=effects`
no longer resolve
- A follow-up PR (crowns cosmetic) stacks on this branch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Evan
2026-07-15 12:39:56 -07:00
committed by GitHub
co-authored by Claude Fable 5
parent ef6e8be2be
commit 7636f4770c
9 changed files with 115 additions and 346 deletions
+4 -6
View File
@@ -389,6 +389,7 @@
"cosmetics": {
"adfree": "ad-free for life!",
"artist_label": "Artist:",
"button_title": "Pick your cosmetics!",
"color_label": "Color:",
"common": "Common",
"epic": "Epic",
@@ -397,7 +398,9 @@
"legendary": "Legendary",
"per_day": "/day",
"rare": "Rare",
"search": "Search...",
"soft": "Caps",
"title": "Cosmetics",
"uncommon": "Uncommon",
"unlimited_ranked": "Unlimited ranked",
"usd_value": "Value: {usd}"
@@ -432,14 +435,11 @@
"veryfast": "Very Fast"
},
"effects": {
"button_title": "Pick an effect!",
"nukeType": {
"atom": "Atom",
"hydro": "Hydrogen",
"mirvWarhead": "MIRV"
},
"search": "Search...",
"title": "Effects",
"type": {
"nukeExplosion": "Nuke Explosion",
"nukeTrail": "Nuke Trail",
@@ -1399,10 +1399,8 @@
"pattern": {
"default": "Default"
},
"search": "Search...",
"select_skin": "Skin",
"selected": "selected",
"title": "Skins"
"selected": "selected"
},
"token_login_modal": {
"logging_in": "Logging in...",