From fb294252c7f0b2b48bc87e75155a9eb4b8752066 Mon Sep 17 00:00:00 2001 From: Paul Bailey Date: Tue, 9 Dec 2025 13:20:20 +0000 Subject: [PATCH] feat: create stunning premium UI with advanced design elements - Add animated gradient backgrounds with floating particles - Implement advanced glass morphism with enhanced blur effects - Add Google Fonts Inter for professional typography - Create sophisticated button animations with ripple effects - Add progress indicator dots showing current step - Implement card hover effects with smooth transforms - Add animated gradient text with shimmer effects - Create premium loading spinners with dual rings - Add character counter to textarea - Implement numbered badges for roles and segments - Add gradient backgrounds to all cards and sections - Create pulsing glow animations for important elements - Add emoji icons throughout for visual appeal - Implement responsive grid layouts for settings - Add detailed subtitles and descriptions to sections - Create success celebration with bouncing animation - Add shadow effects with color-matched glows - Implement smooth transitions and cubic-bezier easing - Add visual hierarchy with varied font weights - Create immersive, modern user experience --- frontend/src/App.css | 39 +++-- frontend/src/App.tsx | 79 ++++++--- .../src/components/AudioPlayerSection.tsx | 49 +++--- .../src/components/ScriptReviewSection.tsx | 84 ++++++---- frontend/src/components/TextInputSection.tsx | 80 +++++---- .../src/components/VoiceAssignmentSection.tsx | 153 ++++++++++-------- frontend/src/index.css | 67 +++++++- 7 files changed, 365 insertions(+), 186 deletions(-) diff --git a/frontend/src/App.css b/frontend/src/App.css index 6f51c51..30cf955 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3,6 +3,8 @@ width: 100%; margin: 0 auto; padding: 0; + position: relative; + z-index: 1; } /* Ensure touch-friendly interactions */ @@ -11,22 +13,41 @@ } /* Smooth animations */ -* { - transition: all 0.2s ease-in-out; -} - button, input, select, textarea { - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); +} + +/* Advanced button hover effects */ +button:not(:disabled) { + position: relative; + overflow: hidden; +} + +button:not(:disabled)::before { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + border-radius: 50%; + background: rgba(255, 255, 255, 0.3); + transform: translate(-50%, -50%); + transition: width 0.6s, height 0.6s; +} + +button:not(:disabled):hover::before { + width: 300px; + height: 300px; } -/* Button hover effects */ button:not(:disabled):hover { - transform: translateY(-2px); - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); + transform: translateY(-4px) scale(1.02); + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2); } button:not(:disabled):active { - transform: translateY(0); + transform: translateY(-2px) scale(1.01); } /* Custom range slider styling for better mobile support */ diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 4dbb4c2..802d791 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -158,24 +158,41 @@ function App() { const allRolesAssigned = roles.length > 0 && roles.every(role => voiceAssignments.has(role.id)) return ( -
-
+
+
{/* Header with gradient text and icon */} -
-
-
- 🎧 +
+
+
+
+ 🎧
-

+

Text to Audiobook

-

Transform your stories into immersive audio experiences

+

+ Transform your stories into immersive audio experiences with AI-powered voices +

+ + {/* Progress indicator */} +
+
+
+
+
+
{error && ( -
- ⚠️ Error: {error} +
+
+ ⚠️ +
+

Error

+

{error}

+
+
)} @@ -192,8 +209,11 @@ function App() { {phase === 'assignment' && ( <> {isLongText && ( -
- Generation may take several minutes for very long content. +
+
+ ⏱️ +

Generation may take several minutes for very long content.

+
)} {console.log('Rendering VoiceAssignmentSection with roles:', roles, 'allRolesAssigned:', allRolesAssigned)} @@ -216,8 +236,11 @@ function App() { {phase === 'review' && ( <> {isLongText && ( -
- Generation may take several minutes for very long content. +
+
+ ⏱️ +

Generation may take several minutes for very long content.

+
)} -
-
- Generation may take several minutes for very long content. Please be patient... +
+
+
+
+
+
+
+

Generating Your Audiobook

+

This may take several minutes for very long content. Please be patient...

+
)} {isGeneratingScript && ( -
-
-
- Generating script preview... This may take a moment. +
+
+
+
+
+
+
+

Generating Script Preview

+

AI is analyzing your text and assigning speakers...

+
)} diff --git a/frontend/src/components/AudioPlayerSection.tsx b/frontend/src/components/AudioPlayerSection.tsx index 89812ff..bf9c303 100644 --- a/frontend/src/components/AudioPlayerSection.tsx +++ b/frontend/src/components/AudioPlayerSection.tsx @@ -8,38 +8,41 @@ export default function AudioPlayerSection({ onDownload }: AudioPlayerSectionProps) { return ( -
+
{/* Success Header */} -
-
-
- 🎉 +
+
+
+ 🎉
-

+

Your Audiobook is Ready!

-

+

Listen below or download to enjoy offline

{/* Audio Player Card */} -
-
-
- 🎧 +
+
+
+ 🎧 +
+
+

Listen Now

+

Your personalized audiobook

-

Listen Now

{/* Download Button */} -
+
{/* Success Message */} -
-

- ✅ Your audiobook has been successfully generated! +

+
+ ✅ +

Success!

+
+

+ Your audiobook has been successfully generated with AI-powered voices!

diff --git a/frontend/src/components/ScriptReviewSection.tsx b/frontend/src/components/ScriptReviewSection.tsx index bbbe609..6f07d60 100644 --- a/frontend/src/components/ScriptReviewSection.tsx +++ b/frontend/src/components/ScriptReviewSection.tsx @@ -22,40 +22,52 @@ export default function ScriptReviewSection({ }; return ( -
-
-
- 📋 +
+
+
+ 📋 +
+
+

Review Script

+

Fine-tune speaker assignments

-

Review Script

-

- Review the AI-generated script and adjust speaker assignments as needed. -

+
+
+ 💡 +

Review the AI-generated script and adjust speaker assignments as needed.

+
+
{/* Script Segments */} -
+
{segments.map((segment, index) => (
{/* Segment Header */} -
- - #{index + 1} - +
+
+
+ {index + 1} +
+ + SEGMENT + +
{/* Speaker Dropdown */} -
-