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": [
{
"emoji": "",
"emoji": "⏱️",
"locations": [
"./public/js/modules/org/scenes/home.js:12",
"./public/js/modules/profile/scenes/settings.js:13",
"./public/js/modules/chess/scenes/review.js:19"
"./public/js/modules/chess/components/emotes.js:8"
],
"context": "<button class=\"btn btn-secondary\" id=\"back-btn\" style=\"min-height:30px;padding:4"
},
{
"emoji": "→",
"locations": [
"./public/js/modules/rank/scenes/tournaments.js:77"
],
"context": "// Card click → detail"
"context": "{ key: 'hurry', emoji: '⏱️', label: 'أسرع' },"
},
{
"emoji": "⏳",
......@@ -47,43 +38,43 @@
{
"emoji": "●●●",
"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>"
},
{
"emoji": "★",
"locations": [
"./public/js/modules/chess/scenes/review.js:178",
"./public/js/modules/chess/logic/classifier.js:43"
"./public/js/modules/ludo/scenes/game.js:229",
"./public/js/modules/chess/scenes/review.js:178"
],
"context": "return { class: 'best', symbol: '★', color: '#10B981' };"
"context": "${renderClassRow('best', '★ أفضل نقلة', '#10B981', whiteSummary, blackSummary, p"
},
{
"emoji": "♕",
"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 = '♘';"
},
{
"emoji": "♖",
"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 = '♘';"
},
{
"emoji": "♗",
"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 = '♘';"
},
{
"emoji": "♘",
"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 = '♘';"
},
......@@ -91,39 +82,39 @@
"emoji": "♚",
"locations": [
"./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: '♚' };"
},
{
"emoji": "♛",
"locations": [
"./public/js/modules/chess/scenes/game.js:175",
"./public/js/modules/chess/scenes/game.js:331"
"./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:339"
],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
},
{
"emoji": "♜",
"locations": [
"./public/js/modules/chess/scenes/game.js:175",
"./public/js/modules/chess/scenes/game.js:331"
"./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:339"
],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
},
{
"emoji": "♝",
"locations": [
"./public/js/modules/chess/scenes/game.js:175",
"./public/js/modules/chess/scenes/game.js:331"
"./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:339"
],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
},
{
"emoji": "♞",
"locations": [
"./public/js/modules/chess/scenes/game.js:175",
"./public/js/modules/chess/scenes/game.js:331"
"./public/js/modules/chess/scenes/game.js:183",
"./public/js/modules/chess/scenes/game.js:339"
],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
},
......@@ -131,60 +122,57 @@
"emoji": "♟",
"locations": [
"./admin/branding.php:158",
"./public/js/modules/puzzles/logic/themes.js:30",
"./public/js/modules/chess/scenes/game.js:331"
"./public/js/modules/puzzles/logic/themes.js:30"
],
"context": "const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛', k: '♚' };"
"context": "return theme?.icon || '♟';"
},
{
"emoji": "⚐",
"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>"
},
{
"emoji": "⚔️",
"locations": [
"./public/js/modules/social/scenes/friends.js:49",
"./public/js/modules/puzzles/logic/themes.js:13",
"./public/js/modules/puzzles/logic/themes.js:14"
"./admin/branding.php:280",
"./public/js/modules/social/scenes/friends.js:173"
],
"context": "{ key: 'attack', name: 'هجوم', nameEn: 'Attack', icon: '⚔️' },"
"context": "${f.is_online ? `<div class=\"friend-action\" data-invite=\"${f.id}\" title=\"دعوة لل"
},
{
"emoji": "⚡",
"locations": [
"./admin/branding.php:185",
"./public/js/modules/puzzles/scenes/puzzle.js:54",
"./public/js/modules/puzzles/logic/themes.js:5"
"./public/js/modules/puzzles/scenes/puzzle.js:54"
],
"context": "{ key: 'short', name: 'قصيرة', nameEn: 'Short', icon: '⚡' },"
"context": "ratingEl.textContent = `⚡ ${puzzle.rating || '?'}`;"
},
{
"emoji": "✅",
"locations": [
"./public/js/modules/org/scenes/home.js:74",
"./public/js/modules/shop/scenes/browse.js:90",
"./public/js/modules/puzzles/scenes/puzzle.js:126"
"./admin/branding.php:296",
"./public/js/modules/org/scenes/home.js:74"
],
"context": "status.textContent = '✅ أحسنت! حل صحيح';"
"context": "el.querySelector('#join-btn').textContent = '✅ تم الانضمام';"
},
{
"emoji": "✓",
"locations": [
"./admin/branding.php:88",
"./admin/branding.php:287",
"./public/js/modules/social/scenes/friends.js:35"
"./admin/branding.php:374"
],
"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": "✕",
"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": "✦",
......@@ -196,6 +184,7 @@
{
"emoji": "❌",
"locations": [
"./admin/branding.php:297",
"./public/js/modules/puzzles/scenes/puzzle.js:139"
],
"context": "status.textContent = '❌ حل خاطئ';"
......@@ -212,22 +201,22 @@
"emoji": "⬡",
"locations": [
"./public/js/core/hud.js:34",
"./public/js/modules/ludo/scenes/room.js:10",
"./public/js/modules/rank/scenes/leaderboard.js:16"
"./public/js/modules/ludo/scenes/room.js:10"
],
"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": "⭐",
"locations": [
"./public/js/modules/chess/scenes/review.js:20",
"./public/js/modules/chess/scenes/review.js:136"
"./admin/branding.php:277",
"./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": "🎁",
"locations": [
"./admin/branding.php:275",
"./public/js/modules/rewards/scenes/daily.js:10"
],
"context": "<div style=\"font-size:48px;animation:float 3s ease-in-out infinite;\">🎁</div>"
......@@ -236,23 +225,22 @@
"emoji": "🎨",
"locations": [
"./admin/branding.php:85",
"./admin/branding.php:94",
"./public/js/modules/shop/scenes/browse.js:40"
"./admin/branding.php:94"
],
"context": "🎨"
"context": "<h2>🎨 الألوان الأساسية</h2>"
},
{
"emoji": "🎮",
"locations": [
"./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": "🎲",
"locations": [
"./public/js/modules/ludo/scenes/game.js:34",
"./admin/branding.php:278",
"./public/js/modules/play/scenes/table.js:12"
],
"context": "{ key: 'ludo', name: 'لودو', nameEn: 'Ludo', color: '#8B5CF6', secondary: '#EC48"
......@@ -267,11 +255,10 @@
{
"emoji": "🏆",
"locations": [
"./public/js/modules/domino/scenes/result.js:9",
"./public/js/modules/ludo/scenes/result.js:12",
"./public/js/modules/chess/scenes/result.js:18"
"./admin/branding.php:272",
"./public/js/modules/domino/scenes/result.js:9"
],
"context": "win: { icon: '🏆', title: t('game.you_win'), color: '#34D399' },"
"context": "const icon = isWin ? '🏆' : '💀';"
},
{
"emoji": "🏛️",
......@@ -295,6 +282,20 @@
],
"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": "👑",
"locations": [
......@@ -305,33 +306,31 @@
{
"emoji": "👤",
"locations": [
"./public/js/modules/org/scenes/home.js:59",
"./public/js/modules/social/scenes/friends.js:43",
"./public/js/modules/profile/scenes/view.js:21"
"./admin/branding.php:286",
"./public/js/modules/org/scenes/home.js:59"
],
"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": "👥",
"locations": [
"./public/js/modules/org/scenes/browser.js:39",
"./public/js/modules/social/scenes/friends.js:32",
"./public/js/modules/rank/scenes/tournaments.js:50"
"./admin/branding.php:287",
"./public/js/modules/org/scenes/browser.js:39"
],
"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": "💀",
"locations": [
"./public/js/modules/domino/scenes/result.js:9",
"./public/js/modules/ludo/scenes/result.js:12",
"./public/js/modules/chess/scenes/result.js:19"
"./admin/branding.php:273",
"./public/js/modules/domino/scenes/result.js:9"
],
"context": "loss: { icon: '💀', title: t('game.you_lose'), color: '#F87171' },"
"context": "const icon = isWin ? '🏆' : '💀';"
},
{
"emoji": "💎",
"locations": [
"./admin/branding.php:285",
"./public/js/modules/shop/scenes/browse.js:46"
],
"context": "${item.price_gems ? `${item.price_gems} 💎` : ''}"
......@@ -343,6 +342,13 @@
],
"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": "💰",
"locations": [
......@@ -357,23 +363,28 @@
],
"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": "📊",
"locations": [
"./public/js/modules/chess/scenes/review.js:189",
"./public/js/modules/chess/scenes/analysis.js:25",
"./public/js/modules/chess/scenes/result.js:74"
"./admin/branding.php:293",
"./public/js/modules/chess/scenes/review.js:189"
],
"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": "📋",
"locations": [
"./public/js/modules/chess/scenes/result.js:77",
"./public/js/modules/chess/scenes/result.js:155",
"./public/js/modules/play/scenes/table.js:243"
"./admin/branding.php:294",
"./public/js/modules/chess/scenes/result.js:77"
],
"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": "📌",
......@@ -392,31 +403,30 @@
{
"emoji": "📖",
"locations": [
"./public/js/modules/chess/scenes/review.js:161",
"./public/js/modules/chess/scenes/review.js:180",
"./public/js/modules/chess/scenes/analysis.js:183"
"./admin/branding.php:299",
"./public/js/modules/chess/scenes/review.js:161"
],
"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": "📤",
"locations": [
"./admin/branding.php:289",
"./public/js/modules/social/scenes/friends.js:35",
"./public/js/modules/chess/scenes/result.js:76"
"./admin/branding.php:295",
"./admin/branding.php:376"
],
"context": "<button class=\"btn btn-secondary\" id=\"btn-share\" style=\"flex:1;font-size:12px;\">"
"context": "📤 اضغط للرفع"
},
{
"emoji": "📦",
"locations": [
"./admin/branding.php:239"
"./admin/branding.php:326"
],
"context": "<h2>📦 الأصول البصرية</h2>"
},
{
"emoji": "🔇",
"locations": [
"./admin/branding.php:290",
"./public/js/modules/profile/scenes/settings.js:20"
],
"context": "<button class=\"btn btn-secondary\" id=\"toggle-audio\" style=\"min-height:36px;paddi"
......@@ -424,10 +434,26 @@
{
"emoji": "🔊",
"locations": [
"./admin/branding.php:289",
"./public/js/modules/profile/scenes/settings.js:20"
],
"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": "🔘",
"locations": [
......@@ -449,6 +475,34 @@
],
"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": "🛡️",
"locations": [
......@@ -456,16 +510,25 @@
],
"context": "{ key: 'defense', name: 'دفاع', nameEn: 'Defense', icon: '🛡️' },"
},
{
"emoji": "🤔",
"locations": [
"./public/js/modules/chess/components/emotes.js:7"
],
"context": "{ key: 'think', emoji: '🤔', label: 'يفكر...' },"
},
{
"emoji": "🤖",
"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"
},
{
"emoji": "🤝",
"locations": [
"./admin/branding.php:274",
"./public/js/modules/chess/scenes/result.js:20"
],
"context": "draw: { icon: '🤝', title: t('game.draw_result'), color: '#E4AC38' }"
......@@ -473,6 +536,7 @@
{
"emoji": "🥇",
"locations": [
"./admin/branding.php:281",
"./public/js/modules/rank/scenes/leaderboard.js:64"
],
"context": "const medals = ['🥇', '🥈', '🥉'];"
......@@ -480,6 +544,7 @@
{
"emoji": "🥈",
"locations": [
"./admin/branding.php:282",
"./public/js/modules/rank/scenes/leaderboard.js:64"
],
"context": "const medals = ['🥇', '🥈', '🥉'];"
......@@ -487,25 +552,33 @@
{
"emoji": "🥉",
"locations": [
"./admin/branding.php:283",
"./public/js/modules/rank/scenes/leaderboard.js:64"
],
"context": "const medals = ['🥇', '🥈', '🥉'];"
},
{
"emoji": "🧃",
"locations": [
"./admin/branding.php:239"
],
"context": "<h2>🧃 إعدادات الـ Juice (التأثيرات)</h2>"
},
{
"emoji": "🧩",
"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"
},
{
"emoji": "🪙",
"locations": [
"./public/js/modules/rewards/scenes/daily.js:31",
"./public/js/modules/shop/scenes/browse.js:45",
"./public/js/modules/shop/scenes/browse.js:70"
"./admin/branding.php:284",
"./public/js/modules/rewards/scenes/daily.js:31"
],
"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": "🪤",
......@@ -555,8 +628,8 @@
"./public/js/modules/domino/scenes/game.js"
],
"#0f0f1e": [
"./public/js/modules/chess/scenes/game.js",
"./public/js/modules/chess/scenes/game.js"
"./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/ludo/scenes/game.js"
],
"#10b981": [
"./admin/branding.php",
......@@ -705,16 +778,22 @@
"./admin/branding.php",
"./public/js/modules/chess/canvas/board.js"
],
"#bbdefb": [
"./public/js/modules/ludo/scenes/game.js"
],
"#c8e6c9": [
"./public/js/modules/ludo/scenes/game.js"
],
"#cdd16a": [
"./admin/branding.php",
"./public/js/modules/chess/canvas/board.js"
],
"#e0e0e0": [
"./public/js/modules/ludo/scenes/game.js",
"#ddd": [
"./public/js/modules/ludo/scenes/game.js"
],
"#e2e8f0": [
"./public/js/modules/chess/scenes/game.js"
"./public/js/modules/chess/scenes/game.js",
"./public/js/modules/play/scenes/table.js"
],
"#e4ac38": [
"./admin/branding.php",
......@@ -765,7 +844,11 @@
"./public/js/modules/chess/scenes/game.js",
"./public/js/modules/chess/scenes/review.js"
],
"#f9a825": [
"./public/js/modules/ludo/scenes/game.js"
],
"#fafafa": [
"./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/ludo/scenes/game.js"
],
"#fbbf24": [
......@@ -788,6 +871,9 @@
"./admin/branding.php",
"./admin/branding.php"
],
"#ffcdd2": [
"./public/js/modules/ludo/scenes/game.js"
],
"#ffd700": [
"./public/js/core/juice.js"
],
......@@ -801,11 +887,12 @@
"#fff59d": [
"./public/js/modules/ludo/scenes/game.js"
],
"#fff9c4": [
"./public/js/modules/ludo/scenes/game.js",
"./public/js/modules/ludo/scenes/game.js"
],
"#fffff0": [
"./public/js/modules/domino/scenes/game.js"
],
"#ffffff": [
"./public/js/modules/ludo/scenes/game.js"
]
},
"gradients": [
......@@ -829,6 +916,7 @@
"bounceIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1)",
"breatheGlow 2.5s ease-in-out infinite",
"clockPulse 1s infinite",
"emoteFloat 2s ease-out forwards",
"float 2s ease-in-out infinite",
"float 3s ease-in-out infinite",
"glow 2s ease-in-out infinite",
......@@ -845,6 +933,7 @@
"shimmer 1.5s infinite",
"slamIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 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)",
"toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1)",
"toastOut 0.2s ease-in forwards",
......@@ -881,6 +970,7 @@
"loss",
"ludo-primary",
"orange",
"pc",
"purple",
"r-btn-secondary",
"r-full",
......@@ -909,10 +999,10 @@
"win"
],
"totals": {
"emojis": 67,
"colors": 80,
"emojis": 78,
"colors": 84,
"gradients": 14,
"animations": 24,
"css_variables": 56
"animations": 26,
"css_variables": 57
}
}
\ No newline at end of file
......@@ -293,10 +293,45 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['asset'])) {
['key' => 'chart', 'emoji' => '📊', 'label' => 'تحليل', 'size' => 16, 'hint' => 'زر التحليل'],
['key' => 'clipboard', 'emoji' => '📋', 'label' => 'مبارياتي', 'size' => 16, 'hint' => 'زر المباريات'],
['key' => 'share', 'emoji' => '📤', 'label' => 'مشاركة', 'size' => 16, 'hint' => 'زر المشاركة'],
['key' => 'checkmark', 'emoji' => '✅', 'label' => 'علامة صح', 'size' => 20, 'hint' => 'نجاح العملية'],
['key' => 'cross', 'emoji' => '❌', 'label' => 'علامة خطأ', 'size' => 20, 'hint' => 'فشل العملية'],
['key' => 'flag', 'emoji' => '⚐', 'label' => 'استسلام', 'size' => 16, 'hint' => 'زر الاستسلام في الشطرنج'],
['key' => 'book', 'emoji' => '📖', 'label' => 'كتاب/نظرية', 'size' => 14, 'hint' => 'تصنيف نقلة نظرية'],
['key' => 'checkmark', 'emoji' => '✅', 'label' => 'Success mark', 'size' => 20, 'hint' => 'Operation success feedback'],
['key' => 'cross', 'emoji' => '❌', 'label' => 'Error mark', 'size' => 20, 'hint' => 'Operation failure feedback'],
['key' => 'flag', 'emoji' => '⚐', 'label' => 'Resign flag', 'size' => 16, 'hint' => 'Chess resign button'],
['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):
$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