Alight Motion Edit freeလေ့လာကြမယ်
Ir al canal en Telegram
4 011
Suscriptores
+924 horas
+1187 días
-2430 días
Archivo de publicaciones
ဇာတ်ကောင်ရုပ်မပြောင်းအောင် ပုံထုတ်ရန်အတွက့် prompt👇
Describe an english prompt, အသက် ၂၀ လောက်ရှိသော မြန်မာအမျိုးသား "နာမည်ထည့်" ရဲ့ Full body model prompt ရေးပေးပါ။အဝတ်အစားက အအဝါကြားရောင် ပုဆိုး အစိမ်း ၊ ဆံပင် အနက်ရောင် ၊ နောက်ခံ ၊ 2D cartoon illustration style ၊နောက်ခံ Green screen
Promptပေးပါ
သတိပေးချက် စေားစေားသင်တန်းတက်သူတွေ ဝင်ငွေကောင်းကောင်းရှာတက်နိုင်ပြီးသူများထက်
သင်တန်းကြေး50000ကျပ့် နောက်ပိုင်းသင်တန်းကြေးပိုအပြောင်းလဲရှိနိုင်ပါတယ် သင်ခန်းစာတွေ့ အမြဲ အပ်ပဒိတ်လုပ်သွားမှာမို့ စေားစေားသင်တန်းjoinသူတွေက အခွင့်ရေးကောင်းသွားတယ်။
ဖုန်းတစ်လုံးရှိရုံနဲ့ တစ်နေ့ကို သိန်းချီငွေဝင်နိုင်မယ့် အခွင့်အရေး 💸🔥
အလုပ်တွေပင်ပန်းပြီး လစာမလောက်တဲ့ ဒုက္ခတွေကနေ ရုန်းထွက်ချင်ပြီလား? 🤷♂️
ငွေကို ရေလိုသုံးနိုင်ဖို့အတွက် အကောင်းဆုံး လမ်းစတစ်ခု ဒီမှာရှိနေပါပြီ။ 🚀
✅ တစ်နေ့ကို (၂) သိန်းကနေ (၅) သိန်းအထိ အိမ်မှာနေရင်း အေးဆေးရှာမယ်။
✅ ကိုယ်တိုင်ကစားမလား? မန်ဘာပဲရှာမလား? ကြိုက်သလိုရွေး အဆင်ပြေစေရမယ်။
✅ Wave/ Kpay / USDT ကြိုက်ရာနဲ့ ငွေသွင်းငွေထုတ် စိတ်ချလက်ချ ပြုလုပ်နိုင်တယ်။
လက်တွန့်နေရင် အခွင့်အရေးတွေ ဆုံးရှုံးသွားလိမ့်မယ်နော်။ သူများတွေ နေ့တိုင်း ငွေထုတ်နေချိန်မှာ ကိုယ်က ကြည့်နေရုံပဲ ဖြစ်နေမှာလား? 🤔
အခုပဲ အကောင့်ဖွင့်ပြီး စမ်းကြည့်လိုက်ပါ။ 👇
[https://6win343.com/#/register?invitationCode=kwDWr93169]
လေ့လာရန်channel👇👇👇
https://t.me/makemoney593
၂၄နာရီဝန်ဆောင်မု လစဥ်မန်းဘားဘောနပ်တောင်းရန်👉@csr6lottery
#6lottery #game #lottery
Tiktok Thumbnail လှလှထုတ်ရန် Gem Prompt👇
You are now "Thumbnail Master Gem" — a professional TikTok thumbnail designer specialized in creating highly clickable, viral thumbnails.
Rules you must always follow:
- Always generate in exact 9:16 vertical ratio (1080x1920)
- Always output in 4K ultra high resolution
- Use vibrant, bright, eye-catching colors with high contrast
- Cinematic lighting, sharp details, premium look
MOST IMPORTANT TEXT RULES (Never break these):
- All text MUST have very generous safe padding from all four edges (minimum 15-20% margin from top, bottom, left, right)
- Text must NEVER touch or go close to the image borders — keep everything in the safe central area
- If the text is long, automatically make it smaller or adjust line spacing so it fits safely without any cutoff
- Use large, bold text with thick black or colored outline + shadow for maximum readability
- Main title on the upper third, secondary text or number on the lower third (never too close to bottom)
When I give you a Burmese title, create ONE powerful thumbnail using:
- The exact title as the main text
- Emotional visual that matches the title (stick figure style is good)
- Eye-catching effects (glow, broken hearts, fire, aura, etc.)
Now wait for my title.
ဂျပန် TikTok နဲ့ YouTube ကနေ ဖုန်းတစ်လုံးတည်းနဲ့ ဒေါ်လာရှာမယ့် လျှို့ဝှက်ချက် 💸
ဖုန်းတစ်လုံးရှိရုံနဲ့ AI တွေကိုခိုင်းပြီး TikTok နဲ့ YouTube ကနေ အလွယ်တကူ ငွေရှာချင်ပါသလား။ နေ့တိုင်း ဇာတ်လမ်းစဉ်းစားရတဲ့ ဒုက္ခ၊ Video Edit လုပ်ဖို့ အချိန်ကုန်ရတဲ့ ပြဿနာတွေအားလုံးကို ဖြေရှင်းပေးမယ့် လျှို့ဝှက်ချက်တွေကို Telegram သင်တန်းမှာ အကုန်သင်ပေးနေပါပြီ။ လုံးဝ ကွန်ပျူတာမလိုဘဲ အလိုအလျောက် Content ဖန်တီးနည်းတွေကိုပါ ရာသက်ပန် လေ့လာခွင့်ရမယ့် အခွင့်အရေးကြီးကို လက်မလွှတ်ချင်ရင် အခုပဲ သင်တန်းကို လာရောက် Join လိုက်တော့နော်Telegram👇
@online21111
#tiktokuni #ငွေရှာနည်း #aivideocreator #contentcreatormyanmar #tiktokmyanmar
Repost from ANDROFOREVER
📱 CapCut 18.2.0 Pro 👑
Supports All Phones & All Languages
Mσd features ⚡️ You can use it without vpn «Before and after logging in» 🔥 No need to remove the sim before installing the mσd 🔥 You can create accounts from this version ✅ All Ads removed ✅ The watermark has been removed from the videos ✅ Edit Templates button is visible both before and after using the template. ✅ You can log in with your Facebook and TikTok accounts. You can also log in with your email and phone number. ✅ You can export your videos and all templates without login ✅ You can export your templates with AI Ultra HD quality ✅ You can export your videos without internet connection ✅ Capcut ending watermark has been removed ✅ business creation mode is always enabled, but you need to enable it on some phones. ‼️✅ There are many other features waiting for you to experience. 😁⚡️
NOTE 📣 Click tutorial here before logging ⚠️ If it doesn't work for you without a VPN, then enable business creator mode in the settings. ✅
A clean installation is necessary (uninstall all versions and install this one).Let's get 6k Likes 👍 to make it lifєtime Mσd 👻
ဖုန်းတစ်လုံးရှိရုံနဲ့ တစ်နေ့ကို သိန်းချီငွေဝင်နိုင်မယ့် အခွင့်အရေး 💸🔥
အလုပ်တွေပင်ပန်းပြီး လစာမလောက်တဲ့ ဒုက္ခတွေကနေ ရုန်းထွက်ချင်ပြီလား? 🤷♂️
ငွေကို ရေလိုသုံးနိုင်ဖို့အတွက် အကောင်းဆုံး လမ်းစတစ်ခု ဒီမှာရှိနေပါပြီ။ 🚀
✅ တစ်နေ့ကို (၂) သိန်းကနေ (၅) သိန်းအထိ အိမ်မှာနေရင်း အေးဆေးရှာမယ်။
✅ ကိုယ်တိုင်ကစားမလား? မန်ဘာပဲရှာမလား? ကြိုက်သလိုရွေး အဆင်ပြေစေရမယ်။
✅ Wave/ Kpay / USDT ကြိုက်ရာနဲ့ ငွေသွင်းငွေထုတ် စိတ်ချလက်ချ ပြုလုပ်နိုင်တယ်။
လက်တွန့်နေရင် အခွင့်အရေးတွေ ဆုံးရှုံးသွားလိမ့်မယ်နော်။ သူများတွေ နေ့တိုင်း ငွေထုတ်နေချိန်မှာ ကိုယ်က ကြည့်နေရုံပဲ ဖြစ်နေမှာလား? 🤔
အခုပဲ အကောင့်ဖွင့်ပြီး စမ်းကြည့်လိုက်ပါ။ 👇
[https://6win343.com/#/register?invitationCode=kwDWr93169]
လေ့လာရန်channel👇👇👇
https://t.me/makemoney593
၂၄နာရီဝန်ဆောင်မု လစဥ်မန်းဘားဘောနပ်တောင်းရန်👉@csr6lottery
#6lottery #game #lottery
Youtubeနဲ့tiktokမှာကိုယ်ပိုင်videoတွေဖန်တီးပြီးငွေရှာချင်သူများ သင်တန်းjoinရန်telegram👇
@online21111
Auto work flow လေးနဲ့Movie recap လုပ်ပေးတဲ့ Web app တစ်ခုတည်ဆောက်မယ်
1 video upload လုပ်မယ်
2 အဲ့Video ရဲ့ ဘာသာစကားကနေ မြန်မာဘာသာကိုပြောင်းမယ်
3ပြောင်းထားတဲ့ မြန်မာဘာသာ စာသားတွေကို Burmese language support တဲ့ Free version ai နဲ့ Voiceover အသံသွင်းမယ်
4 အဲ့သွင်းထားတဲ့ Voiceover နဲ့ မူရင်း uploadတင်လိုက်တဲ့ video နဲ့ပေါင်းပြီး Video လုပ်ပေးပါ
5 မူရင်း Videoကို ဘယ်ညာပြောင်းပြီး 5စက္ကန့်ခြားစီကို freeze လုပ်ပေးပါ copyright မငြိအောင်
6 အဲ့Video က မူရင်းအသံဖျောက်ပြီး Voiceoverအသံနဲ့ မူရင်းvideo စာသား မိနစ် တို့နဲ့ကိုက်အောင်လုပ်ပေးပါ editပေးပါ
7 နောက်ဆုံးထွက်လာတဲ့ Video ကို Mp4နဲ့ downloadလုပ်ရအောင်လုပ်ပေးပါ
+1
ဖုန်းတစ်လုံးရှိရုံနဲ့ တစ်နေ့ကို သိန်းချီငွေဝင်နိုင်မယ့် အခွင့်အရေး 💸🔥
အလုပ်တွေပင်ပန်းပြီး လစာမလောက်တဲ့ ဒုက္ခတွေကနေ ရုန်းထွက်ချင်ပြီလား? 🤷♂️
ငွေကို ရေလိုသုံးနိုင်ဖို့အတွက် အကောင်းဆုံး လမ်းစတစ်ခု ဒီမှာရှိနေပါပြီ။ 🚀
✅ တစ်နေ့ကို (၂) သိန်းကနေ (၅) သိန်းအထိ အိမ်မှာနေရင်း အေးဆေးရှာမယ်။
✅ ကိုယ်တိုင်ကစားမလား? မန်ဘာပဲရှာမလား? ကြိုက်သလိုရွေး အဆင်ပြေစေရမယ်။
✅ Wave/ Kpay / USDT ကြိုက်ရာနဲ့ ငွေသွင်းငွေထုတ် စိတ်ချလက်ချ ပြုလုပ်နိုင်တယ်။
လက်တွန့်နေရင် အခွင့်အရေးတွေ ဆုံးရှုံးသွားလိမ့်မယ်နော်။ သူများတွေ နေ့တိုင်း ငွေထုတ်နေချိန်မှာ ကိုယ်က ကြည့်နေရုံပဲ ဖြစ်နေမှာလား? 🤔
အခုပဲ အကောင့်ဖွင့်ပြီး စမ်းကြည့်လိုက်ပါ။ 👇
[https://6win343.com/#/register?invitationCode=kwDWr93169]
လေ့လာရန်channel👇👇👇
https://t.me/makemoney593
၂၄နာရီဝန်ဆောင်မု လစဥ်မန်းဘားဘောနပ်တောင်းရန်👉@csr6lottery
#6lottery #game #lottery
>
<Download className="w-4 h-4" />
</button>
</>
)}
<button onClick={() => removeHistoryItem(item.id)} className="bg-red-500/20 hover:bg-red-600/40 text-red-300 p-2.5 rounded-lg border border-red-500/30 transition-colors" title="Delete"><Trash2 className="w-4 h-4" /></button>
</div>
</>
)}
</div>
);
})}
</div>
)}
</div>
)}
</main>
<style dangerouslySetInnerHTML={{__html:
@import url('[https://fonts.googleapis.com/css2?family=Noto+Sans+Myanmar:wght@400;500;700;900&display=swap](https://fonts.googleapis.com/css2?family=Noto+Sans+Myanmar:wght@400;500;700;900&display=swap)');
.font-mm { font-family: 'Pyidaungsu', 'Myanmar Text', 'Noto Sans Myanmar', sans-serif; }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes fade-in-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.animate-fade-in { animation: fade-in 0.4s ease-out forwards; }
.animate-fade-in-up { animation: fade-in-up 0.4s ease-out forwards; }
/* Neon Moving Gradient Keyframes */
@keyframes gradientBG {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
/* Moving Marquee Keyframes (Left to Right) */
@keyframes scrollLtr {
0% { transform: translateX(-50%); }
100% { transform: translateX(0%); }
}
.marquee-ltr {
display: flex;
width: 200%;
animation: scrollLtr 25s linear infinite;
}
.moving-gradient-bg {
background: linear-gradient(-45deg, #ff0055, #0066ff, #ffcc00, #ff0055);
background-size: 300% 300%;
animation: gradientBG 8s ease infinite;
}
.neon-text {
background: linear-gradient(-45deg, #ff3366, #33ccff, #ffcc00, #ff3366);
background-size: 300% 300%;
animation: gradientBG 8s ease infinite;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 0 0 10px rgba(255,255,255,0.2);
/* Fix for Burmese text clipping */
line-height: 1.5 !important;
padding-top: 0.2em;
padding-bottom: 0.2em;
}
.neon-border::before {
content: "";
position: absolute;
inset: -2px;
border-radius: inherit;
background: linear-gradient(-45deg, #ff0055, #0066ff, #ffcc00);
background-size: 300% 300%;
animation: gradientBG 8s ease infinite;
z-index: -1;
opacity: 0.5;
filter: blur(8px);
}
.custom-scrollbar::-webkit-scrollbar { width: 6px; height: 6px; }
.custom-scrollbar::-webkit-scrollbar-track { background: rgba(0,0,0,0.2); border-radius: 4px; }
.custom-scrollbar::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); border-radius: 4px; }
.custom-scrollbar::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.4); }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: rgba(0,0,0,0.3); }
::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.4); }
}} />
</div>
);
}
`
{/* Voice, Emotion & Speed Detailed Badges */}
<div className="flex flex-wrap gap-2 text-[11px] text-gray-400 mt-2">
<span className="flex items-center gap-1 bg-white/5 px-2 py-1 rounded-md border border-white/10"><Mic className="w-3 h-3 text-blue-400" /> {item.voice}</span>
<span className="flex items-center gap-1 bg-white/5 px-2 py-1 rounded-md border border-white/10"><Activity className="w-3 h-3 text-red-400" /> {item.emotionEmoji} {item.emotionLabel?.mm || item.emotionLabel?.en}</span>
{(item.speedLabel?.mm || item.speedLabel?.en) && (
<span className="flex items-center gap-1 bg-white/5 px-2 py-1 rounded-md border border-white/10"><Gauge className="w-3 h-3 text-yellow-400" /> {item.speedEmoji "▶️"} {item.speedLabel?.mm item.speedLabel?.en}</span>
)}
</div>
</div>
<div className="flex items-end gap-2 shrink-0 flex-wrap justify-end md:pt-6">
{(item.audioBase64 || item.hasLocalAudio) && (
<>
<button onClick={() => toggleHistoryAudio(item)} className="bg-white/10 hover:bg-white/20 text-white p-2.5 rounded-lg border border-white/20 transition-colors" title={isHistoryPlaying ? "Pause" : "Play"}>
{isHistoryPlaying ? <Pause className="w-4 h-4 text-yellow-400" /> : <Play className="w-4 h-4" />}
</button>
{isHistoryPlaying && activeHistoryAudio && (
<audio
src={activeHistoryAudio.playableSrc}
autoPlay
onPlay={() => pauseBackgroundMusic()}
onPause={() => { resumeBackgroundMusic(); setActiveHistoryAudio(null); }}
onEnded={() => { setActiveHistoryAudio(null); resumeBackgroundMusic(); }}
className="hidden"
/>
)}
<button
onClick={async () => {
let base64 = item.audioBase64;
if(!base64 && item.hasLocalAudio) base64 = await getLocalAudio(item.id);
if(base64) handleDownloadSRT(base64, item.fullText || item.text, item.id);
}}
className="bg-white/10 hover:bg-white/20 text-white p-2.5 rounded-lg border border-white/20 transition-colors" title="Download SRT"
>
<Subtitles className="w-4 h-4" />
</button>
<button
onClick={async () => {
let base64 = item.audioBase64;
if(!base64 && item.hasLocalAudio) base64 = await getLocalAudio(item.id);
if(base64) handleDownload(base64, item.id);
}}
className="bg-white/10 hover:bg-white/20 text-white p-2.5 rounded-lg border border-white/20 transition-colors" title="Download Audio"
{/* Top Bar for Date & Countdown */}
<div className="absolute top-3 right-4 flex flex-col items-end gap-1">
<div className="text-[10px] text-gray-400 flex items-center gap-1 font-mono">
<Clock className="w-3 h-3" /> {formatDateTime(item.timestamp)}
</div>
<div className="text-[10px] font-bold text-red-400 flex items-center gap-1 animate-pulse font-mono bg-red-900/30 px-2 py-0.5 rounded-md border border-red-500/20">
<Timer className="w-3 h-3" /> {getCountdown(item.timestamp, nowTime, t)}
</div>
</div>
{item.type === 'script' ? (
<>
<div className="flex-1 space-y-3 pl-2 mt-4 md:mt-0">
<div className="flex items-center gap-2">
<span className="text-[10px] font-bold px-2 py-0.5 rounded-full border border-white/30 text-white shadow-[0_0_5px_rgba(255,255,255,0.3)]">Script</span>
<span className={classNames("text-[10px] font-bold px-2 py-0.5 rounded-full flex items-center gap-1", isLocal ? "bg-yellow-500/20 text-yellow-300" : "bg-blue-500/20 text-blue-300")}>
<Cloud className="w-3 h-3"/> Cloud Sync
</span>
</div>
<p className="text-gray-200 font-medium text-sm border-l-2 border-white/30 pl-3 line-clamp-3">"{item.translatedText}"</p>
</div>
<div className="flex items-end gap-2 shrink-0 md:pt-6">
<button
onClick={() => {
copyToClipboard(item.translatedText, () => {
setCopiedScriptId(item.id);
setTimeout(() => setCopiedScriptId(null), 2000);
});
}}
className="bg-white/10 hover:bg-white/20 text-white p-2.5 rounded-lg border border-white/20 transition-colors"
>
{copiedScriptId === item.id ? <Check className="w-4 h-4 text-green-400" /> : <Copy className="w-4 h-4" />}
</button>
<button onClick={() => removeHistoryItem(item.id)} className="bg-red-500/20 hover:bg-red-600/40 text-red-300 p-2.5 rounded-lg border border-red-500/30 transition-colors"><Trash2 className="w-4 h-4" /></button>
</div>
</>
) : (
<>
<div className="flex-1 space-y-2 pl-2 mt-4 md:mt-0">
<div className="flex items-center gap-2">
<span className="text-[10px] font-bold px-2 py-0.5 rounded-full border border-white/30 text-white shadow-[0_0_5px_rgba(255,255,255,0.3)]">Audio</span>
<span className={classNames("text-[10px] font-bold px-2 py-0.5 rounded-full flex items-center gap-1", isLocal ? "bg-yellow-500/20 text-yellow-300" : "bg-blue-500/20 text-blue-300")}>
{isLocal ? <Smartphone className="w-3 h-3"/> : <Cloud className="w-3 h-3"/>}
{isLocal ? "Local Storage" : "Cloud Storage"}
</span>
</div>
<p className="text-gray-200 text-sm italic border-l-2 border-white/30 pl-3 line-clamp-2">"{item.text}"</p>
ref={audioRef}
src={currentAudio}
className="hidden"
onPlay={() => { setIsPlaying(true); pauseBackgroundMusic(); }}
onPause={() => { setIsPlaying(false); resumeBackgroundMusic(); }}
onEnded={() => { setIsPlaying(false); resumeBackgroundMusic(); }}
/>
<div className="flex gap-2 ml-auto">
<button onClick={() => handleDownloadSRT(currentAudio, currentFullText, 'recent')} className="bg-white/10 text-white p-2 rounded-lg border border-white/20 hover:bg-white/20" title="Download SRT"><Subtitles className="w-4 h-4" /></button>
<button onClick={() => handleDownload(currentAudio, 'recent')} className="bg-white/10 text-white p-2 rounded-lg border border-white/20 hover:bg-white/20" title="Download Audio"><Download className="w-4 h-4" /></button>
</div>
</div>
</div>
)}
</div>
</div>
)}
{/* --- HISTORY TAB (CLOUD + LOCAL HYBRID) --- */}
{activeTab === 'history' && (
<div className="max-w-4xl mx-auto space-y-6 animate-fade-in">
<div className="flex items-center justify-between mb-2">
<h2 className="text-2xl font-bold flex items-center gap-2 neon-text pb-1">
<BookOpen className="w-6 h-6 text-white drop-shadow-[0_0_8px_rgba(255,255,255,1)]" /> {t("မှတ်တမ်းများ", "History")}
</h2>
</div>
<div className="bg-red-500/10 border border-red-500/20 p-4 rounded-xl mb-6 shadow-sm">
<p className="text-xs text-red-300 leading-relaxed font-medium">
<span className="font-bold text-red-400 text-sm">⚠️ {t('အသိပေးချက်', 'Notice')} - </span>
{t('Cloud မှတ်တမ်းများကို ၃ ရက် (72 Hrs) ပြည့်လျှင် အလိုအလျောက် ရှင်းလင်းပေးမည်ဖြစ်ပါသည်။ File size 1MB ထက်ကြီးသော File များကို Local Storage ထဲတွင်သာ ယာယီသိမ်းဆည်းထားပါသဖြင့် App ထဲကထွက်လျှင် ယာယီသိမ်းဆည်းထားသော File များ ပျက်သွားပါမည်။ File တွေ မပျက်ခင် Download လုပ်ထားနိုင်ပါသည်။', 'Cloud history will be automatically cleared after 3 days (72 Hrs). Files larger than 1MB are temporarily saved in Local Storage, so they will be deleted when you exit or refresh the App. Please download your files before leaving.')}
</p>
</div>
{history.length === 0 ? (
<div className="text-center py-20 bg-black/40 border border-white/10 rounded-2xl">
<Clock className="w-12 h-12 text-gray-600 mx-auto mb-4" />
<p className="text-gray-400">History Empty</p>
</div>
) : (
<div className="space-y-4">
{history.map(item => {
const isDeleting = deletingIds.includes(item.id);
const isLocal = item.hasLocalAudio;
const isHistoryPlaying = activeHistoryAudio?.id === item.id;
return (
<div
key={item.id}
className={classNames(
"bg-black/60 border rounded-2xl p-5 flex flex-col md:flex-row md:items-start justify-between gap-4 transition-all duration-300 relative overflow-hidden group hover:shadow-[0_0_20px_rgba(255,255,255,0.2)]",
isLocal ? "border-yellow-500/30 hover:border-yellow-400/50" : "border-blue-500/30 hover:border-blue-400/50",
isDeleting ? "opacity-0 scale-95" : "opacity-100"
)}
>
<div className={classNames("absolute left-0 top-0 bottom-0 w-1", isLocal ? "bg-gradient-to-b from-yellow-400 to-orange-500" : "bg-gradient-to-b from-blue-400 to-indigo-500")}></div>
)}
>
<span className="text-lg shrink-0">{emotion.emoji}</span>
<span className="truncate">{t(emotion.label, emotion.enLabel)}</span>
{selectedEmotion === emotion.id && <Check className="w-4 h-4 text-white drop-shadow-[0_0_5px_rgba(255,255,255,0.8)] ml-auto" />}
</button>
))}
</div>
</div>
<div className="flex gap-2 mt-4 relative z-10">
<button
onClick={generateTTS}
disabled={isGenerating || !text.trim()}
className={classNames(
"flex-1 relative moving-gradient-bg text-white font-bold py-4 px-6 rounded-xl shadow-[0_0_20px_rgba(255,255,255,0.3)] transition-all hover:scale-105 disabled:opacity-50 disabled:hover:scale-100",
isGenerating && "opacity-80"
)}
>
<div className="flex items-center justify-center gap-2 w-full">
{isGenerating ? (
<>
<Loader2 className="w-5 h-5 animate-spin shrink-0" />
<span>{t("ဖန်တီးနေပါသည်...", "Generating...")}</span>
<span>{generationProgress}</span>
</>
) : (
<>
<Play className="w-5 h-5 fill-current shrink-0" />
<span>{t("အသံဖန်တီးမည်", "Generate Audio")}</span>
</>
)}
</div>
</button>
{/* Cancel Button - Only shows while generating */}
{isGenerating && (
<button
onClick={handleCancelGeneration}
className="w-16 shrink-0 flex items-center justify-center bg-red-500/20 hover:bg-red-500/40 border border-red-500/50 text-red-100 rounded-xl transition-colors shadow-[0_0_10px_rgba(239,68,68,0.3)]"
title={t("ရပ်တန့်မည်", "Cancel")}
>
<XCircle className="w-6 h-6" />
</button>
)}
</div>
</div>
{/* MAIN GENERATOR AUDIO PLAYER */}
{currentAudio && (
<div className="bg-black/70 border border-white/30 rounded-2xl p-6 shadow-[0_0_30px_rgba(255,255,255,0.2)] animate-fade-in-up relative overflow-hidden">
<div className="absolute top-0 left-0 right-0 h-1 moving-gradient-bg shadow-[0_0_10px_rgba(255,255,255,0.8)]"></div>
<div className="flex items-center justify-between mb-4 mt-2">
<h3 className="text-sm font-bold text-white flex items-center gap-2 drop-shadow-[0_0_5px_rgba(255,255,255,0.5)]">
<Volume2 className="w-4 h-4" /> {t("ဖန်တီးမှု ပြီးစီးပါပြီ", "Success")}
</h3>
</div>
<div className="flex items-center gap-4 bg-white/10 rounded-xl p-3 border border-white/20">
<button
onClick={toggleMainPlay}
className="w-12 h-12 flex-shrink-0 flex items-center justify-center rounded-full moving-gradient-bg text-white shadow-[0_0_15px_rgba(255,255,255,0.4)] hover:scale-105 transition-transform"
>
{isPlaying ? <Pause className="w-5 h-5 fill-current" /> : <Play className="w-5 h-5 fill-current ml-1" />}
</button>
<audio
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
