Commit 40ded3ba authored by Mahmoud Aglan's avatar Mahmoud Aglan

feat: resweep + admin branding expanded to 60 emoji slots

Full resweep results:
- 78 emojis (was 67)
- 84 colors (was 80)
- 14 gradients
- 26 animations (was 24)
- 57 CSS variables (was 56)

Admin branding panel now has 60 emoji replacement slots:
- Original 27 (trophy, skull, gift, etc.)
- NEW: HUD icons (coin dot, gem diamond, level hex)
- NEW: Game-specific (lightning, best-move star, particle star)
- NEW: Home screen game tiles (chess pawn, domino, backgammon, ludo)
- NEW: Social (challenge swords, search, online dot)
- NEW: All 6 dice faces (⚀⚁⚂⚃⚄⚅) at 56px
- NEW: Puzzle themes (fork, pin, castle, crown, sacrifice)
- NEW: Tournament (cup, money bag)
- NEW: Misc (thinking dots, building/org)

Labels switched to English per user request.
All slots have exact pixel size hints.
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent bf608999
{ {
"emojis": [ "emojis": [
{ {
"emoji": "", "emoji": "⏱️",
"locations": [ "locations": [
"./public/js/modules/org/scenes/home.js:12", "./public/js/modules/chess/components/emotes.js:8"
"./public/js/modules/profile/scenes/settings.js:13",
"./public/js/modules/chess/scenes/review.js:19"
], ],
"context": "<button class=\"btn btn-secondary\" id=\"back-btn\" style=\"min-height:30px;padding:4" "context": "{ key: 'hurry', emoji: '⏱️', label: 'أسرع' },"
},
{
"emoji": "→",
"locations": [
"./public/js/modules/rank/scenes/tournaments.js:77"
],
"context": "// Card click → detail"
}, },
{ {
"emoji": "⏳", "emoji": "⏳",
...@@ -47,43 +38,43 @@ ...@@ -47,43 +38,43 @@
{ {
"emoji": "●●●", "emoji": "●●●",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:53" "./public/js/modules/chess/scenes/game.js:54"
], ],
"context": "${t('game.thinking')} <span class=\"pulse\">●●●</span>" "context": "${t('game.thinking')} <span class=\"pulse\">●●●</span>"
}, },
{ {
"emoji": "★", "emoji": "★",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/review.js:178", "./public/js/modules/ludo/scenes/game.js:229",
"./public/js/modules/chess/logic/classifier.js:43" "./public/js/modules/chess/scenes/review.js:178"
], ],
"context": "return { class: 'best', symbol: '★', color: '#10B981' };" "context": "${renderClassRow('best', '★ أفضل نقلة', '#10B981', whiteSummary, blackSummary, p"
}, },
{ {
"emoji": "♕", "emoji": "♕",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:176" "./public/js/modules/chess/scenes/game.js:184"
], ],
"context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';" "context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';"
}, },
{ {
"emoji": "♖", "emoji": "♖",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:176" "./public/js/modules/chess/scenes/game.js:184"
], ],
"context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';" "context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';"
}, },
{ {
"emoji": "♗", "emoji": "♗",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:176" "./public/js/modules/chess/scenes/game.js:184"
], ],
"context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';" "context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';"
}, },
{ {
"emoji": "♘", "emoji": "♘",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:176" "./public/js/modules/chess/scenes/game.js:184"
], ],
"context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';" "context": "if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = '♗'; names.n = '♘';"
}, },
...@@ -91,39 +82,39 @@ ...@@ -91,39 +82,39 @@
"emoji": "♚", "emoji": "♚",
"locations": [ "locations": [
"./public/js/modules/puzzles/logic/themes.js:4", "./public/js/modules/puzzles/logic/themes.js:4",
"./public/js/modules/chess/scenes/game.js:331" "./public/js/modules/chess/scenes/game.js:339"
], ],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };" "context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
}, },
{ {
"emoji": "♛", "emoji": "♛",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:175", "./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:331" "./public/js/modules/chess/scenes/game.js:339"
], ],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };" "context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
}, },
{ {
"emoji": "♜", "emoji": "♜",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:175", "./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:331" "./public/js/modules/chess/scenes/game.js:339"
], ],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };" "context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
}, },
{ {
"emoji": "♝", "emoji": "♝",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:175", "./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:331" "./public/js/modules/chess/scenes/game.js:339"
], ],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };" "context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
}, },
{ {
"emoji": "♞", "emoji": "♞",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:175", "./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:331" "./public/js/modules/chess/scenes/game.js:339"
], ],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };" "context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
}, },
...@@ -131,60 +122,57 @@ ...@@ -131,60 +122,57 @@
"emoji": "♟", "emoji": "♟",
"locations": [ "locations": [
"./admin/branding.php:158", "./admin/branding.php:158",
"./public/js/modules/puzzles/logic/themes.js:30", "./public/js/modules/puzzles/logic/themes.js:30"
"./public/js/modules/chess/scenes/game.js:331"
], ],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };" "context": "return theme?.icon || '♟';"
}, },
{ {
"emoji": "⚐", "emoji": "⚐",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:82" "./admin/branding.php:298",
"./public/js/modules/chess/scenes/game.js:83"
], ],
"context": "<button class=\"ctrl-btn\" id=\"btn-resign\">⚐ ${t('game.resign')}</button>" "context": "<button class=\"ctrl-btn\" id=\"btn-resign\">⚐ ${t('game.resign')}</button>"
}, },
{ {
"emoji": "⚔️", "emoji": "⚔️",
"locations": [ "locations": [
"./public/js/modules/social/scenes/friends.js:49", "./admin/branding.php:280",
"./public/js/modules/puzzles/logic/themes.js:13", "./public/js/modules/social/scenes/friends.js:173"
"./public/js/modules/puzzles/logic/themes.js:14"
], ],
"context": "{ key: 'attack', name: 'هجوم', nameEn: 'Attack', icon: '⚔️' }," "context": "${f.is_online ? `<div class=\"friend-action\" data-invite=\"${f.id}\" title=\"دعوة لل"
}, },
{ {
"emoji": "⚡", "emoji": "⚡",
"locations": [ "locations": [
"./admin/branding.php:185", "./admin/branding.php:185",
"./public/js/modules/puzzles/scenes/puzzle.js:54", "./public/js/modules/puzzles/scenes/puzzle.js:54"
"./public/js/modules/puzzles/logic/themes.js:5"
], ],
"context": "{ key: 'short', name: 'قصيرة', nameEn: 'Short', icon: '⚡' }," "context": "ratingEl.textContent = `⚡ ${puzzle.rating || '?'}`;"
}, },
{ {
"emoji": "✅", "emoji": "✅",
"locations": [ "locations": [
"./public/js/modules/org/scenes/home.js:74", "./admin/branding.php:296",
"./public/js/modules/shop/scenes/browse.js:90", "./public/js/modules/org/scenes/home.js:74"
"./public/js/modules/puzzles/scenes/puzzle.js:126"
], ],
"context": "status.textContent = '✅ أحسنت! حل صحيح';" "context": "el.querySelector('#join-btn').textContent = '✅ تم الانضمام';"
}, },
{ {
"emoji": "✓", "emoji": "✓",
"locations": [ "locations": [
"./admin/branding.php:88", "./admin/branding.php:88",
"./admin/branding.php:287", "./admin/branding.php:374"
"./public/js/modules/social/scenes/friends.js:35"
], ],
"context": "<button class=\"btn btn-primary\" style=\"font-size:14px;\" onclick=\"navigator.clipb" "context": "<div style=\"font-size:10px;color:#64748b;margin-top:4px;\">✓ مرفوع</div>"
}, },
{ {
"emoji": "✕", "emoji": "✕",
"locations": [ "locations": [
"./public/js/modules/play/scenes/table.js:222" "./public/js/modules/social/scenes/friends.js:117",
"./public/js/modules/social/scenes/friends.js:175"
], ],
"context": "<button class=\"game-menu-close\" id=\"menu-close\">✕</button>" "context": "<div class=\"friend-action\" data-remove=\"${f.id}\" title=\"إزالة\" style=\"font-size:"
}, },
{ {
"emoji": "✦", "emoji": "✦",
...@@ -196,6 +184,7 @@ ...@@ -196,6 +184,7 @@
{ {
"emoji": "❌", "emoji": "❌",
"locations": [ "locations": [
"./admin/branding.php:297",
"./public/js/modules/puzzles/scenes/puzzle.js:139" "./public/js/modules/puzzles/scenes/puzzle.js:139"
], ],
"context": "status.textContent = '❌ حل خاطئ';" "context": "status.textContent = '❌ حل خاطئ';"
...@@ -212,22 +201,22 @@ ...@@ -212,22 +201,22 @@
"emoji": "⬡", "emoji": "⬡",
"locations": [ "locations": [
"./public/js/core/hud.js:34", "./public/js/core/hud.js:34",
"./public/js/modules/ludo/scenes/room.js:10", "./public/js/modules/ludo/scenes/room.js:10"
"./public/js/modules/rank/scenes/leaderboard.js:16"
], ],
"context": "<button class=\"btn btn-secondary\" data-game=\"ludo\" style=\"font-size:12px;min-hei" "context": "<div class=\"pulse\" style=\"width:60px;height:60px;border-radius:50%;border:3px so"
}, },
{ {
"emoji": "⭐", "emoji": "⭐",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/review.js:20", "./admin/branding.php:277",
"./public/js/modules/chess/scenes/review.js:136" "./public/js/modules/chess/scenes/review.js:20"
], ],
"context": "<div style=\"text-align:center;font-size:15px;font-weight:700;color:#f8fafc;margi" "context": "<span style=\"font-size:15px;font-weight:700;color:#f8fafc;\">⭐ مراجعة المباراة</s"
}, },
{ {
"emoji": "🎁", "emoji": "🎁",
"locations": [ "locations": [
"./admin/branding.php:275",
"./public/js/modules/rewards/scenes/daily.js:10" "./public/js/modules/rewards/scenes/daily.js:10"
], ],
"context": "<div style=\"font-size:48px;animation:float 3s ease-in-out infinite;\">🎁</div>" "context": "<div style=\"font-size:48px;animation:float 3s ease-in-out infinite;\">🎁</div>"
...@@ -236,23 +225,22 @@ ...@@ -236,23 +225,22 @@
"emoji": "🎨", "emoji": "🎨",
"locations": [ "locations": [
"./admin/branding.php:85", "./admin/branding.php:85",
"./admin/branding.php:94", "./admin/branding.php:94"
"./public/js/modules/shop/scenes/browse.js:40"
], ],
"context": "🎨" "context": "<h2>🎨 الألوان الأساسية</h2>"
}, },
{ {
"emoji": "🎮", "emoji": "🎮",
"locations": [ "locations": [
"./admin/branding.php:129", "./admin/branding.php:129",
"./public/js/modules/play/scenes/table.js:226" "./admin/branding.php:279"
], ],
"context": "<div class=\"menu-btn-icon\">🎮</div>" "context": "['key' => 'gamepad', 'emoji' => '🎮', 'label' => 'لاعب واحد', 'size' => 24, 'hint"
}, },
{ {
"emoji": "🎲", "emoji": "🎲",
"locations": [ "locations": [
"./public/js/modules/ludo/scenes/game.js:34", "./admin/branding.php:278",
"./public/js/modules/play/scenes/table.js:12" "./public/js/modules/play/scenes/table.js:12"
], ],
"context": "{ key: 'ludo', name: 'لودو', nameEn: 'Ludo', color: '#8B5CF6', secondary: '#EC48" "context": "{ key: 'ludo', name: 'لودو', nameEn: 'Ludo', color: '#8B5CF6', secondary: '#EC48"
...@@ -267,11 +255,10 @@ ...@@ -267,11 +255,10 @@
{ {
"emoji": "🏆", "emoji": "🏆",
"locations": [ "locations": [
"./public/js/modules/domino/scenes/result.js:9", "./admin/branding.php:272",
"./public/js/modules/ludo/scenes/result.js:12", "./public/js/modules/domino/scenes/result.js:9"
"./public/js/modules/chess/scenes/result.js:18"
], ],
"context": "win: { icon: '🏆', title: t('game.you_win'), color: '#34D399' }," "context": "const icon = isWin ? '🏆' : '💀';"
}, },
{ {
"emoji": "🏛️", "emoji": "🏛️",
...@@ -295,6 +282,20 @@ ...@@ -295,6 +282,20 @@
], ],
"context": "{ key: 'discovery', name: 'كشف', nameEn: 'Discovered Attack', icon: '👁️' }," "context": "{ key: 'discovery', name: 'كشف', nameEn: 'Discovered Attack', icon: '👁️' },"
}, },
{
"emoji": "👋",
"locations": [
"./public/js/modules/chess/components/emotes.js:12"
],
"context": "{ key: 'hello', emoji: '👋', label: 'مرحبا' },"
},
{
"emoji": "👏",
"locations": [
"./public/js/modules/chess/components/emotes.js:6"
],
"context": "{ key: 'good_move', emoji: '👏', label: 'نقلة ممتازة' },"
},
{ {
"emoji": "👑", "emoji": "👑",
"locations": [ "locations": [
...@@ -305,33 +306,31 @@ ...@@ -305,33 +306,31 @@
{ {
"emoji": "👤", "emoji": "👤",
"locations": [ "locations": [
"./public/js/modules/org/scenes/home.js:59", "./admin/branding.php:286",
"./public/js/modules/social/scenes/friends.js:43", "./public/js/modules/org/scenes/home.js:59"
"./public/js/modules/profile/scenes/view.js:21"
], ],
"context": "${player.avatar_url ? `<img src=\"${player.avatar_url}\" style=\"width:100%;height:" "context": "<div style=\"width:24px;height:24px;border-radius:50%;background:var(--bg-elevate"
}, },
{ {
"emoji": "👥", "emoji": "👥",
"locations": [ "locations": [
"./public/js/modules/org/scenes/browser.js:39", "./admin/branding.php:287",
"./public/js/modules/social/scenes/friends.js:32", "./public/js/modules/org/scenes/browser.js:39"
"./public/js/modules/rank/scenes/tournaments.js:50"
], ],
"context": "<span style=\"font-size:11px;color:#94a3b8;\">👥 ${tour.player_count || 0}/${tour.m" "context": "<div style=\"font-size:11px;color:var(--text-secondary);\">👥 ${org.member_count ||"
}, },
{ {
"emoji": "💀", "emoji": "💀",
"locations": [ "locations": [
"./public/js/modules/domino/scenes/result.js:9", "./admin/branding.php:273",
"./public/js/modules/ludo/scenes/result.js:12", "./public/js/modules/domino/scenes/result.js:9"
"./public/js/modules/chess/scenes/result.js:19"
], ],
"context": "loss: { icon: '💀', title: t('game.you_lose'), color: '#F87171' }," "context": "const icon = isWin ? '🏆' : '💀';"
}, },
{ {
"emoji": "💎", "emoji": "💎",
"locations": [ "locations": [
"./admin/branding.php:285",
"./public/js/modules/shop/scenes/browse.js:46" "./public/js/modules/shop/scenes/browse.js:46"
], ],
"context": "${item.price_gems ? `${item.price_gems} 💎` : ''}" "context": "${item.price_gems ? `${item.price_gems} 💎` : ''}"
...@@ -343,6 +342,13 @@ ...@@ -343,6 +342,13 @@
], ],
"context": "{ key: 'sacrifice', name: 'تضحية', nameEn: 'Sacrifice', icon: '💥' }," "context": "{ key: 'sacrifice', name: 'تضحية', nameEn: 'Sacrifice', icon: '💥' },"
}, },
{
"emoji": "💬",
"locations": [
"./public/js/modules/chess/components/emotes.js:26"
],
"context": "<button class=\"emote-toggle\" id=\"emote-toggle\">💬</button>"
},
{ {
"emoji": "💰", "emoji": "💰",
"locations": [ "locations": [
...@@ -357,23 +363,28 @@ ...@@ -357,23 +363,28 @@
], ],
"context": "<button type=\"submit\">💾 حفظ كل التغييرات</button>" "context": "<button type=\"submit\">💾 حفظ كل التغييرات</button>"
}, },
{
"emoji": "📅",
"locations": [
"./public/js/modules/rank/scenes/tournament-detail.js:107"
],
"context": "📅 ${new Date(data.starts_at).toLocaleDateString('ar')} — ${new Date(data.starts_"
},
{ {
"emoji": "📊", "emoji": "📊",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/review.js:189", "./admin/branding.php:293",
"./public/js/modules/chess/scenes/analysis.js:25", "./public/js/modules/chess/scenes/review.js:189"
"./public/js/modules/chess/scenes/result.js:74"
], ],
"context": "<button class=\"btn btn-secondary w-full\" id=\"btn-analyze\" style=\"font-size:13px;" "context": "<button class=\"btn btn-secondary w-full\" id=\"btn-full-analysis\" style=\"font-size"
}, },
{ {
"emoji": "📋", "emoji": "📋",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/result.js:77", "./admin/branding.php:294",
"./public/js/modules/chess/scenes/result.js:155", "./public/js/modules/chess/scenes/result.js:77"
"./public/js/modules/play/scenes/table.js:243"
], ],
"context": "<div class=\"feature-chip\" id=\"btn-history\">📋 مبارياتي</div>" "context": "<button class=\"btn btn-secondary\" id=\"btn-copy-pgn\" style=\"flex:1;font-size:12px"
}, },
{ {
"emoji": "📌", "emoji": "📌",
...@@ -392,31 +403,30 @@ ...@@ -392,31 +403,30 @@
{ {
"emoji": "📖", "emoji": "📖",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/review.js:161", "./admin/branding.php:299",
"./public/js/modules/chess/scenes/review.js:180", "./public/js/modules/chess/scenes/review.js:161"
"./public/js/modules/chess/scenes/analysis.js:183"
], ],
"context": "<div style=\"font-size:9px;color:#64748b;margin-bottom:2px;\">📖 كتاب الافتتاحات</d" "context": "<div style=\"text-align:center;font-size:12px;color:#64748b;margin-bottom:12px;\">"
}, },
{ {
"emoji": "📤", "emoji": "📤",
"locations": [ "locations": [
"./admin/branding.php:289", "./admin/branding.php:295",
"./public/js/modules/social/scenes/friends.js:35", "./admin/branding.php:376"
"./public/js/modules/chess/scenes/result.js:76"
], ],
"context": "<button class=\"btn btn-secondary\" id=\"btn-share\" style=\"flex:1;font-size:12px;\">" "context": "📤 اضغط للرفع"
}, },
{ {
"emoji": "📦", "emoji": "📦",
"locations": [ "locations": [
"./admin/branding.php:239" "./admin/branding.php:326"
], ],
"context": "<h2>📦 الأصول البصرية</h2>" "context": "<h2>📦 الأصول البصرية</h2>"
}, },
{ {
"emoji": "🔇", "emoji": "🔇",
"locations": [ "locations": [
"./admin/branding.php:290",
"./public/js/modules/profile/scenes/settings.js:20" "./public/js/modules/profile/scenes/settings.js:20"
], ],
"context": "<button class=\"btn btn-secondary\" id=\"toggle-audio\" style=\"min-height:36px;paddi" "context": "<button class=\"btn btn-secondary\" id=\"toggle-audio\" style=\"min-height:36px;paddi"
...@@ -424,10 +434,26 @@ ...@@ -424,10 +434,26 @@
{ {
"emoji": "🔊", "emoji": "🔊",
"locations": [ "locations": [
"./admin/branding.php:289",
"./public/js/modules/profile/scenes/settings.js:20" "./public/js/modules/profile/scenes/settings.js:20"
], ],
"context": "<button class=\"btn btn-secondary\" id=\"toggle-audio\" style=\"min-height:36px;paddi" "context": "<button class=\"btn btn-secondary\" id=\"toggle-audio\" style=\"min-height:36px;paddi"
}, },
{
"emoji": "🔍",
"locations": [
"./public/js/modules/social/scenes/friends.js:17",
"./public/js/modules/social/scenes/friends.js:85"
],
"context": "<button class=\"btn btn-primary\" id=\"empty-search\" style=\"font-size:13px;padding:"
},
{
"emoji": "🔔",
"locations": [
"./admin/branding.php:288"
],
"context": "['key' => 'bell', 'emoji' => '🔔', 'label' => 'جرس الإشعارات', 'size' => 18, 'hin"
},
{ {
"emoji": "🔘", "emoji": "🔘",
"locations": [ "locations": [
...@@ -449,6 +475,34 @@ ...@@ -449,6 +475,34 @@
], ],
"context": "{ key: 'skewer', name: 'سيخ', nameEn: 'Skewer', icon: '🗡️' }," "context": "{ key: 'skewer', name: 'سيخ', nameEn: 'Skewer', icon: '🗡️' },"
}, },
{
"emoji": "😀",
"locations": [
"./admin/branding.php:266"
],
"context": "<h2>😀 استبدال الرموز التعبيرية</h2>"
},
{
"emoji": "😂",
"locations": [
"./public/js/modules/chess/components/emotes.js:10"
],
"context": "{ key: 'laugh', emoji: '😂', label: 'هههه' },"
},
{
"emoji": "😤",
"locations": [
"./public/js/modules/chess/components/emotes.js:11"
],
"context": "{ key: 'angry', emoji: '😤', label: 'غاضب' },"
},
{
"emoji": "😮",
"locations": [
"./public/js/modules/chess/components/emotes.js:9"
],
"context": "{ key: 'wow', emoji: '😮', label: 'واو!' },"
},
{ {
"emoji": "🛡️", "emoji": "🛡️",
"locations": [ "locations": [
...@@ -456,16 +510,25 @@ ...@@ -456,16 +510,25 @@
], ],
"context": "{ key: 'defense', name: 'دفاع', nameEn: 'Defense', icon: '🛡️' }," "context": "{ key: 'defense', name: 'دفاع', nameEn: 'Defense', icon: '🛡️' },"
}, },
{
"emoji": "🤔",
"locations": [
"./public/js/modules/chess/components/emotes.js:7"
],
"context": "{ key: 'think', emoji: '🤔', label: 'يفكر...' },"
},
{ {
"emoji": "🤖", "emoji": "🤖",
"locations": [ "locations": [
"./public/js/modules/chess/scenes/game.js:40" "./admin/branding.php:276",
"./public/js/modules/chess/scenes/game.js:41"
], ],
"context": "<img src=\"https://stockfishapi.caprover.al-arcade.com/portraits/${botId || 'amin" "context": "<img src=\"https://stockfishapi.caprover.al-arcade.com/portraits/${botId || 'amin"
}, },
{ {
"emoji": "🤝", "emoji": "🤝",
"locations": [ "locations": [
"./admin/branding.php:274",
"./public/js/modules/chess/scenes/result.js:20" "./public/js/modules/chess/scenes/result.js:20"
], ],
"context": "draw: { icon: '🤝', title: t('game.draw_result'), color: '#E4AC38' }" "context": "draw: { icon: '🤝', title: t('game.draw_result'), color: '#E4AC38' }"
...@@ -473,6 +536,7 @@ ...@@ -473,6 +536,7 @@
{ {
"emoji": "🥇", "emoji": "🥇",
"locations": [ "locations": [
"./admin/branding.php:281",
"./public/js/modules/rank/scenes/leaderboard.js:64" "./public/js/modules/rank/scenes/leaderboard.js:64"
], ],
"context": "const medals = ['🥇', '🥈', '🥉'];" "context": "const medals = ['🥇', '🥈', '🥉'];"
...@@ -480,6 +544,7 @@ ...@@ -480,6 +544,7 @@
{ {
"emoji": "🥈", "emoji": "🥈",
"locations": [ "locations": [
"./admin/branding.php:282",
"./public/js/modules/rank/scenes/leaderboard.js:64" "./public/js/modules/rank/scenes/leaderboard.js:64"
], ],
"context": "const medals = ['🥇', '🥈', '🥉'];" "context": "const medals = ['🥇', '🥈', '🥉'];"
...@@ -487,25 +552,33 @@ ...@@ -487,25 +552,33 @@
{ {
"emoji": "🥉", "emoji": "🥉",
"locations": [ "locations": [
"./admin/branding.php:283",
"./public/js/modules/rank/scenes/leaderboard.js:64" "./public/js/modules/rank/scenes/leaderboard.js:64"
], ],
"context": "const medals = ['🥇', '🥈', '🥉'];" "context": "const medals = ['🥇', '🥈', '🥉'];"
}, },
{
"emoji": "🧃",
"locations": [
"./admin/branding.php:239"
],
"context": "<h2>🧃 إعدادات الـ Juice (التأثيرات)</h2>"
},
{ {
"emoji": "🧩", "emoji": "🧩",
"locations": [ "locations": [
"./public/js/modules/play/scenes/table.js:244" "./admin/branding.php:292",
"./public/js/modules/play/scenes/table.js:250"
], ],
"context": "${game.key === 'chess' ? '<div class=\"feature-chip\" id=\"btn-puzzles\">🧩 أحجيات</d" "context": "${game.key === 'chess' ? '<div class=\"feature-chip\" id=\"btn-puzzles\">🧩 أحجيات</d"
}, },
{ {
"emoji": "🪙", "emoji": "🪙",
"locations": [ "locations": [
"./public/js/modules/rewards/scenes/daily.js:31", "./admin/branding.php:284",
"./public/js/modules/shop/scenes/browse.js:45", "./public/js/modules/rewards/scenes/daily.js:31"
"./public/js/modules/shop/scenes/browse.js:70"
], ],
"context": "<div style=\"font-size:14px;color:var(--gold);margin-bottom:var(--s-4);\">${item.p" "context": "<span style=\"color:var(--gold);font-size:18px;font-weight:700;\">+${data.coins ||"
}, },
{ {
"emoji": "🪤", "emoji": "🪤",
...@@ -555,8 +628,8 @@ ...@@ -555,8 +628,8 @@
"./public/js/modules/domino/scenes/game.js" "./public/js/modules/domino/scenes/game.js"
], ],
"#0f0f1e": [ "#0f0f1e": [
"./public/js/modules/chess/scenes/game.js", "./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/chess/scenes/game.js" "./public/js/modules/ludo/scenes/game.js"
], ],
"#10b981": [ "#10b981": [
"./admin/branding.php", "./admin/branding.php",
...@@ -705,16 +778,22 @@ ...@@ -705,16 +778,22 @@
"./admin/branding.php", "./admin/branding.php",
"./public/js/modules/chess/canvas/board.js" "./public/js/modules/chess/canvas/board.js"
], ],
"#bbdefb": [
"./public/js/modules/ludo/scenes/game.js"
],
"#c8e6c9": [
"./public/js/modules/ludo/scenes/game.js"
],
"#cdd16a": [ "#cdd16a": [
"./admin/branding.php", "./admin/branding.php",
"./public/js/modules/chess/canvas/board.js" "./public/js/modules/chess/canvas/board.js"
], ],
"#e0e0e0": [ "#ddd": [
"./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/ludo/scenes/game.js" "./public/js/modules/ludo/scenes/game.js"
], ],
"#e2e8f0": [ "#e2e8f0": [
"./public/js/modules/chess/scenes/game.js" "./public/js/modules/chess/scenes/game.js",
"./public/js/modules/play/scenes/table.js"
], ],
"#e4ac38": [ "#e4ac38": [
"./admin/branding.php", "./admin/branding.php",
...@@ -765,7 +844,11 @@ ...@@ -765,7 +844,11 @@
"./public/js/modules/chess/scenes/game.js", "./public/js/modules/chess/scenes/game.js",
"./public/js/modules/chess/scenes/review.js" "./public/js/modules/chess/scenes/review.js"
], ],
"#f9a825": [
"./public/js/modules/ludo/scenes/game.js"
],
"#fafafa": [ "#fafafa": [
"./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/ludo/scenes/game.js" "./public/js/modules/ludo/scenes/game.js"
], ],
"#fbbf24": [ "#fbbf24": [
...@@ -788,6 +871,9 @@ ...@@ -788,6 +871,9 @@
"./admin/branding.php", "./admin/branding.php",
"./admin/branding.php" "./admin/branding.php"
], ],
"#ffcdd2": [
"./public/js/modules/ludo/scenes/game.js"
],
"#ffd700": [ "#ffd700": [
"./public/js/core/juice.js" "./public/js/core/juice.js"
], ],
...@@ -801,11 +887,12 @@ ...@@ -801,11 +887,12 @@
"#fff59d": [ "#fff59d": [
"./public/js/modules/ludo/scenes/game.js" "./public/js/modules/ludo/scenes/game.js"
], ],
"#fff9c4": [
"./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/ludo/scenes/game.js"
],
"#fffff0": [ "#fffff0": [
"./public/js/modules/domino/scenes/game.js" "./public/js/modules/domino/scenes/game.js"
],
"#ffffff": [
"./public/js/modules/ludo/scenes/game.js"
] ]
}, },
"gradients": [ "gradients": [
...@@ -829,6 +916,7 @@ ...@@ -829,6 +916,7 @@
"bounceIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1)", "bounceIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1)",
"breatheGlow 2.5s ease-in-out infinite", "breatheGlow 2.5s ease-in-out infinite",
"clockPulse 1s infinite", "clockPulse 1s infinite",
"emoteFloat 2s ease-out forwards",
"float 2s ease-in-out infinite", "float 2s ease-in-out infinite",
"float 3s ease-in-out infinite", "float 3s ease-in-out infinite",
"glow 2s ease-in-out infinite", "glow 2s ease-in-out infinite",
...@@ -845,6 +933,7 @@ ...@@ -845,6 +933,7 @@
"shimmer 1.5s infinite", "shimmer 1.5s infinite",
"slamIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1)", "slamIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1)",
"slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)", "slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)",
"slideUpBounce 0.3s cubic-bezier(0.16,1,0.3,1)",
"slideUpBounce 0.4s cubic-bezier(0.16, 1, 0.3, 1)", "slideUpBounce 0.4s cubic-bezier(0.16, 1, 0.3, 1)",
"toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1)", "toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1)",
"toastOut 0.2s ease-in forwards", "toastOut 0.2s ease-in forwards",
...@@ -881,6 +970,7 @@ ...@@ -881,6 +970,7 @@
"loss", "loss",
"ludo-primary", "ludo-primary",
"orange", "orange",
"pc",
"purple", "purple",
"r-btn-secondary", "r-btn-secondary",
"r-full", "r-full",
...@@ -909,10 +999,10 @@ ...@@ -909,10 +999,10 @@
"win" "win"
], ],
"totals": { "totals": {
"emojis": 67, "emojis": 78,
"colors": 80, "colors": 84,
"gradients": 14, "gradients": 14,
"animations": 24, "animations": 26,
"css_variables": 56 "css_variables": 57
} }
} }
\ No newline at end of file
...@@ -293,10 +293,45 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['asset'])) { ...@@ -293,10 +293,45 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['asset'])) {
['key' => 'chart', 'emoji' => '📊', 'label' => 'تحليل', 'size' => 16, 'hint' => 'زر التحليل'], ['key' => 'chart', 'emoji' => '📊', 'label' => 'تحليل', 'size' => 16, 'hint' => 'زر التحليل'],
['key' => 'clipboard', 'emoji' => '📋', 'label' => 'مبارياتي', 'size' => 16, 'hint' => 'زر المباريات'], ['key' => 'clipboard', 'emoji' => '📋', 'label' => 'مبارياتي', 'size' => 16, 'hint' => 'زر المباريات'],
['key' => 'share', 'emoji' => '📤', 'label' => 'مشاركة', 'size' => 16, 'hint' => 'زر المشاركة'], ['key' => 'share', 'emoji' => '📤', 'label' => 'مشاركة', 'size' => 16, 'hint' => 'زر المشاركة'],
['key' => 'checkmark', 'emoji' => '✅', 'label' => 'علامة صح', 'size' => 20, 'hint' => 'نجاح العملية'], ['key' => 'checkmark', 'emoji' => '✅', 'label' => 'Success mark', 'size' => 20, 'hint' => 'Operation success feedback'],
['key' => 'cross', 'emoji' => '❌', 'label' => 'علامة خطأ', 'size' => 20, 'hint' => 'فشل العملية'], ['key' => 'cross', 'emoji' => '❌', 'label' => 'Error mark', 'size' => 20, 'hint' => 'Operation failure feedback'],
['key' => 'flag', 'emoji' => '⚐', 'label' => 'استسلام', 'size' => 16, 'hint' => 'زر الاستسلام في الشطرنج'], ['key' => 'flag', 'emoji' => '⚐', 'label' => 'Resign flag', 'size' => 16, 'hint' => 'Chess resign button'],
['key' => 'book', 'emoji' => '📖', 'label' => 'كتاب/نظرية', 'size' => 14, 'hint' => 'تصنيف نقلة نظرية'], ['key' => 'book', 'emoji' => '📖', 'label' => 'Book/Theory', 'size' => 14, 'hint' => 'Move classification: book move'],
// HUD icons
['key' => 'hud_coin', 'emoji' => '●', 'label' => 'HUD coin dot', 'size' => 16, 'hint' => 'Coin indicator in top HUD bar'],
['key' => 'hud_gem', 'emoji' => '◆', 'label' => 'HUD gem diamond', 'size' => 16, 'hint' => 'Gem indicator in top HUD bar'],
['key' => 'hud_level', 'emoji' => '⬡', 'label' => 'HUD level hex', 'size' => 16, 'hint' => 'Level indicator in top HUD bar'],
// Game specific
['key' => 'lightning', 'emoji' => '⚡', 'label' => 'Puzzle rating bolt', 'size' => 16, 'hint' => 'Puzzle difficulty indicator'],
['key' => 'best_move_star', 'emoji' => '★', 'label' => 'Best move star', 'size' => 14, 'hint' => 'Move classification: best move'],
['key' => 'particle_star', 'emoji' => '✦', 'label' => 'Particle star', 'size' => 10, 'hint' => 'Star burst particle effect'],
['key' => 'backgammon_icon', 'emoji' => '◎', 'label' => 'Backgammon game icon', 'size' => 48, 'hint' => 'Home screen backgammon tile'],
['key' => 'domino_tile', 'emoji' => '⬚', 'label' => 'Domino game icon', 'size' => 48, 'hint' => 'Home screen domino tile'],
['key' => 'ludo_hex', 'emoji' => '⬡', 'label' => 'Ludo game icon', 'size' => 48, 'hint' => 'Home screen ludo tile (if not using dice)'],
['key' => 'chess_pawn', 'emoji' => '♟', 'label' => 'Chess pawn', 'size' => 48, 'hint' => 'Home screen chess tile'],
// Social
['key' => 'challenge_swords', 'emoji' => '⚔️', 'label' => 'Challenge swords', 'size' => 20, 'hint' => 'Challenge friend to game'],
['key' => 'search_icon', 'emoji' => '🔍', 'label' => 'Search icon', 'size' => 16, 'hint' => 'Search button in social'],
['key' => 'online_dot', 'emoji' => '🟢', 'label' => 'Online indicator', 'size' => 12, 'hint' => 'Online status dot'],
// Dice faces
['key' => 'dice_1', 'emoji' => '⚀', 'label' => 'Dice face 1', 'size' => 56, 'hint' => 'Ludo dice — shown when rolled 1'],
['key' => 'dice_2', 'emoji' => '⚁', 'label' => 'Dice face 2', 'size' => 56, 'hint' => 'Ludo dice — shown when rolled 2'],
['key' => 'dice_3', 'emoji' => '⚂', 'label' => 'Dice face 3', 'size' => 56, 'hint' => 'Ludo dice — shown when rolled 3'],
['key' => 'dice_4', 'emoji' => '⚃', 'label' => 'Dice face 4', 'size' => 56, 'hint' => 'Ludo dice — shown when rolled 4'],
['key' => 'dice_5', 'emoji' => '⚄', 'label' => 'Dice face 5', 'size' => 56, 'hint' => 'Ludo dice — shown when rolled 5'],
['key' => 'dice_6', 'emoji' => '⚅', 'label' => 'Dice face 6', 'size' => 56, 'hint' => 'Ludo dice — shown when rolled 6 (golden glow)'],
// Puzzle themes
['key' => 'theme_fork', 'emoji' => '🔱', 'label' => 'Fork theme', 'size' => 16, 'hint' => 'Puzzle theme: fork'],
['key' => 'theme_pin', 'emoji' => '📌', 'label' => 'Pin theme', 'size' => 16, 'hint' => 'Puzzle theme: pin'],
['key' => 'theme_castle', 'emoji' => '🏰', 'label' => 'Back rank theme', 'size' => 16, 'hint' => 'Puzzle theme: back rank mate'],
['key' => 'theme_crown', 'emoji' => '👑', 'label' => 'Promotion theme', 'size' => 16, 'hint' => 'Puzzle theme: promotion'],
['key' => 'theme_sacrifice', 'emoji' => '💥', 'label' => 'Sacrifice theme', 'size' => 16, 'hint' => 'Puzzle theme: sacrifice'],
// Tournaments
['key' => 'tournament_cup', 'emoji' => '🏆', 'label' => 'Tournament trophy', 'size' => 20, 'hint' => 'Tournament list & leaderboard button'],
['key' => 'money_bag', 'emoji' => '💰', 'label' => 'Entry fee', 'size' => 14, 'hint' => 'Tournament entry fee indicator'],
// Misc
['key' => 'thinking_dots', 'emoji' => '●●●', 'label' => 'Bot thinking dots', 'size' => 14, 'hint' => 'Chess bot thinking indicator'],
['key' => 'building', 'emoji' => '🏛️', 'label' => 'Organization', 'size' => 32, 'hint' => 'Organization/club icon'],
]; ];
foreach ($emojiSlots as $e): foreach ($emojiSlots as $e):
$current = $theme['assets']['emoji_' . $e['key']] ?? null; $current = $theme['assets']['emoji_' . $e['key']] ?? null;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment