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
+3 -8
View File
@@ -282,16 +282,11 @@
inline
class="hidden w-full h-full page-content relative z-50"
></flag-input-modal>
<territory-patterns-modal
id="territory-patterns-modal"
<cosmetics-modal
id="cosmetics-modal"
inline
class="hidden w-full h-full page-content relative z-50"
></territory-patterns-modal>
<effects-modal
id="effects-modal"
inline
class="hidden w-full h-full page-content relative z-50"
></effects-modal>
></cosmetics-modal>
<ranked-modal
id="page-ranked"
inline