feat: redesign fortune wheel UI and add to mobile nav

- Add wheel button to mobile bottom nav (replaces Support when enabled)
- Slow down LED lights animation (250ms -> 600ms)
- Replace result modal with inline card in Wheel.tsx
- Add haptic feedback on spin result
- AdminWheel.tsx: inline prize editing instead of modal
- AdminWheel.tsx: drag-and-drop for prize reordering
- AdminWheel.tsx: live wheel preview on desktop
- AdminWheel.tsx: group settings into sections
- Replace confirm() with native dialog
- Add translations for all languages
This commit is contained in:
c0mrade
2026-02-02 17:51:46 +03:00
parent e9af285dad
commit 7e2802c5b5
9 changed files with 740 additions and 472 deletions

View File

@@ -19,6 +19,7 @@
"and": "and",
"edit": "Edit",
"delete": "Delete",
"collapse": "Collapse",
"currency": "$",
"refresh": "Refresh",
"copy": "Copy",
@@ -952,21 +953,27 @@
"prizes": "Prizes",
"statistics": "Statistics"
},
"preview": "Preview",
"settings": {
"enableWheel": "Enable Wheel",
"allowSpins": "Allow users to spin the wheel",
"spinCost": "Spin Cost",
"costInStars": "Cost in Stars",
"costInDays": "Cost in Days",
"limitsAndRtp": "Limits & RTP",
"rtpPercent": "RTP (Return to Player) %",
"dailyLimit": "Daily Spin Limit (0 = unlimited)",
"minSubDays": "Min subscription days for day payment",
"promocodes": "Promocodes",
"promoPrefix": "Promo code prefix"
},
"prizes": {
"addPrize": "Add Prize",
"editPrize": "Edit Prize",
"noPrizes": "No prizes configured. Add some prizes to enable the wheel.",
"deletePrize": "Delete this prize?",
"deletePrize": "Delete Prize",
"confirmDelete": "Are you sure you want to delete this prize? This action cannot be undone.",
"dragToReorder": "Drag to reorder",
"types": {
"subscription_days": "Subscription Days",
"balance_bonus": "Balance Bonus",

View File

@@ -29,7 +29,8 @@
"refresh": "بازخوانی",
"retry": "تلاش مجدد",
"saving": "در حال ذخیره...",
"understand": "متوجه شدم"
"understand": "متوجه شدم",
"collapse": "جمع کردن"
},
"nav": {
"dashboard": "داشبورد",
@@ -676,6 +677,7 @@
},
"wheel": {
"title": "تنظیمات چرخ شانس",
"preview": "پیش‌نمایش",
"enabled": "فعال",
"disabled": "غیرفعال",
"tabs": {
@@ -691,13 +693,18 @@
"rtpPercent": "درصد RTP",
"dailyLimit": "محدودیت روزانه (0 = نامحدود)",
"minSubDays": "حداقل روز اشتراک برای پرداخت روزانه",
"promoPrefix": "پیشوند کد تخفیف"
"promoPrefix": "پیشوند کد تخفیف",
"spinCost": "هزینه چرخش",
"limitsAndRtp": "محدودیت‌ها و RTP",
"promocodes": "کدهای تخفیف"
},
"prizes": {
"addPrize": "افزودن جایزه",
"editPrize": "ویرایش جایزه",
"noPrizes": "جایزه‌ای تنظیم نشده. برای فعال‌سازی چرخ جایزه اضافه کنید.",
"deletePrize": "این جایزه حذف شود؟",
"dragToReorder": "کشیدن برای مرتب‌سازی",
"confirmDelete": "آیا از حذف این جایزه مطمئن هستید؟",
"types": {
"subscription_days": "روز اشتراک",
"balance_bonus": "جایزه موجودی",

View File

@@ -20,6 +20,7 @@
"and": "и",
"edit": "Редактировать",
"delete": "Удалить",
"collapse": "Свернуть",
"currency": "₽",
"refresh": "Обновить",
"copy": "Копировать",
@@ -971,21 +972,27 @@
"prizes": "Призы",
"statistics": "Статистика"
},
"preview": "Предпросмотр",
"settings": {
"enableWheel": "Включить колесо",
"allowSpins": "Разрешить пользователям крутить колесо",
"spinCost": "Стоимость вращения",
"costInStars": "Стоимость в Stars",
"costInDays": "Стоимость в днях",
"limitsAndRtp": "Лимиты и RTP",
"rtpPercent": "RTP (Return to Player) %",
"dailyLimit": "Дневной лимит вращений (0 = безлимит)",
"minSubDays": "Мин. дней подписки для оплаты днями",
"promocodes": "Промокоды",
"promoPrefix": "Префикс промокодов"
},
"prizes": {
"addPrize": "Добавить приз",
"editPrize": "Редактировать приз",
"noPrizes": "Призы не настроены. Добавьте призы для активации колеса.",
"deletePrize": "Удалить этот приз?",
"deletePrize": "Удалить приз",
"confirmDelete": "Вы уверены, что хотите удалить этот приз? Это действие нельзя отменить.",
"dragToReorder": "Перетащите для изменения порядка",
"types": {
"subscription_days": "Дни подписки",
"balance_bonus": "Бонус баланса",

View File

@@ -26,6 +26,7 @@
"retry": "重试",
"saving": "保存中...",
"understand": "明白了",
"collapse": "收起",
"units": {
"gb": "GB",
"perGb": "/GB"
@@ -728,6 +729,7 @@
},
"wheel": {
"title": "幸运转盘设置",
"preview": "预览",
"enabled": "已启用",
"disabled": "已禁用",
"tabs": {
@@ -743,13 +745,18 @@
"rtpPercent": "RTP (返还率) %",
"dailyLimit": "每日限制 (0 = 无限)",
"minSubDays": "天数支付最低订阅天数",
"promoPrefix": "优惠码前缀"
"promoPrefix": "优惠码前缀",
"spinCost": "旋转费用",
"limitsAndRtp": "限制和RTP",
"promocodes": "促销码"
},
"prizes": {
"addPrize": "添加奖品",
"editPrize": "编辑奖品",
"noPrizes": "未配置奖品。添加奖品以启用转盘。",
"deletePrize": "删除此奖品?",
"dragToReorder": "拖动排序",
"confirmDelete": "确定要删除这个奖品吗?",
"types": {
"subscription_days": "订阅天数",
"balance_bonus": "余额奖励",