From a3b6012fb2f74c2b97e9c8c0206d164d6fe036a8 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Tue, 27 Jan 2026 19:47:07 +0530 Subject: [PATCH] feat: podcast and audio UI is now mobile responsive --- surfsense_web/components/tool-ui/audio.tsx | 52 +++++------ .../components/tool-ui/generate-podcast.tsx | 86 +++++++++---------- 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/surfsense_web/components/tool-ui/audio.tsx b/surfsense_web/components/tool-ui/audio.tsx index 4b7679cd6..24f7734d7 100644 --- a/surfsense_web/components/tool-ui/audio.tsx +++ b/surfsense_web/components/tool-ui/audio.tsx @@ -149,16 +149,16 @@ export function Audio({ id, src, title, description, artwork, durationMs, classN return (
-
- +
+
-
-

{title}

-

{error}

+
+

{title}

+

{error}

); @@ -168,7 +168,7 @@ export function Audio({ id, src, title, description, artwork, durationMs, classN
@@ -177,15 +177,15 @@ export function Audio({ id, src, title, description, artwork, durationMs, classN -
+
{/* Artwork */}
-
+
{artwork ? ( {title} ) : (
- +
)}
@@ -195,14 +195,14 @@ export function Audio({ id, src, title, description, artwork, durationMs, classN
{/* Title and description */}
-

{title}

+

{title}

{description && ( -

{description}

+

{description}

)}
{/* Progress bar */} -
+
-
+
{formatTime(currentTime)} {formatTime(duration)}
@@ -220,33 +220,33 @@ export function Audio({ id, src, title, description, artwork, durationMs, classN
{/* Controls */} -
-
+
+
{/* Play/Pause button */} {/* Volume control */} -
- {/* Custom volume bar - visually distinct from progress slider */} -
+
{/* Download button */} -
diff --git a/surfsense_web/components/tool-ui/generate-podcast.tsx b/surfsense_web/components/tool-ui/generate-podcast.tsx index c76d7ce5a..513853c1a 100644 --- a/surfsense_web/components/tool-ui/generate-podcast.tsx +++ b/surfsense_web/components/tool-ui/generate-podcast.tsx @@ -86,23 +86,23 @@ function parsePodcastDetails(data: unknown): { podcast_transcript?: PodcastTrans */ function PodcastGeneratingState({ title }: { title: string }) { return ( -
-
-
-
- +
+
+
+
+
{/* Animated rings */}
-
-

{title}

-
- - Generating podcast. This may take a few minutes. +
+

{title}

+
+ + Generating podcast. This may take a few minutes.
-
-
+
+
@@ -117,15 +117,15 @@ function PodcastGeneratingState({ title }: { title: string }) { */ function PodcastErrorState({ title, error }: { title: string; error: string }) { return ( -
-
-
- +
+
+
+
-
-

{title}

-

Failed to generate podcast

-

{error}

+
+

{title}

+

Failed to generate podcast

+

{error}

@@ -137,16 +137,16 @@ function PodcastErrorState({ title, error }: { title: string; error: string }) { */ function AudioLoadingState({ title }: { title: string }) { return ( -
-
-
- +
+
+
+
-
-

{title}

-
- - Loading audio... +
+

{title}

+
+ + Loading audio...
@@ -264,13 +264,13 @@ function PodcastPlayer({ /> {/* Transcript section */} {transcript && transcript.length > 0 && ( -
- +
+ View transcript ({transcript.length} entries) -
+
{transcript.map((entry, idx) => ( -
+
Speaker {entry.speaker_id + 1}:{" "} {entry.dialog}
@@ -392,9 +392,9 @@ export const GeneratePodcastToolUI = makeAssistantToolUI< if (status.type === "incomplete") { if (status.reason === "cancelled") { return ( -
-

- +

+

+ Podcast generation cancelled

@@ -424,16 +424,16 @@ export const GeneratePodcastToolUI = makeAssistantToolUI< // The FIRST tool call will display the podcast when ready if (result.status === "already_generating") { return ( -
-
-
- +
+
+
+
-
-

+

+

Podcast already in progress

-

+

Please wait for the current podcast to complete.