Enhance UI components and styles for improved user experience

- Added global styles to hide scrollbars across all browsers for a cleaner interface.
- Refactored HistoryTable component to highlight currently playing audio with conditional styling.
- Implemented a confirmation dialog for deleting voice profiles in ProfileCard, enhancing user feedback and preventing accidental deletions.
- Updated ProfileList to rename the section from 'Voice Profiles' to 'Voicebox' for better branding and clarity.
This commit is contained in:
Jamie Pine
2026-01-25 14:44:47 -08:00
parent 98cfe2dc5a
commit 0e38d47855
4 changed files with 62 additions and 15 deletions
+10 -5
View File
@@ -10,6 +10,7 @@ import {
TableHeader,
TableRow,
} from '@/components/ui/table';
import { cn } from '@/lib/utils/cn';
import { apiClient } from '@/lib/api/client';
import { useDeleteGeneration, useHistory } from '@/lib/hooks/useHistory';
import { formatDate, formatDuration } from '@/lib/utils/format';
@@ -60,8 +61,6 @@ export function HistoryTable() {
return (
<div className="flex flex-col h-full min-h-0">
<h2 className="text-2xl font-bold mb-4 shrink-0">Generation History</h2>
{history.length === 0 ? (
<div className="text-center py-12 text-muted-foreground flex-1 flex items-center justify-center">
No generation history yet. Generate your first audio to see it here.
@@ -81,8 +80,13 @@ export function HistoryTable() {
</TableRow>
</TableHeader>
<TableBody>
{history.map((gen) => (
<TableRow key={gen.id}>
{history.map((gen) => {
const isCurrentlyPlaying = currentAudioId === gen.id && isPlaying;
return (
<TableRow
key={gen.id}
className={cn(isCurrentlyPlaying && 'bg-muted/50')}
>
<TableCell className="max-w-[200px] truncate">{gen.text}</TableCell>
<TableCell>{gen.profile_name}</TableCell>
<TableCell>
@@ -123,7 +127,8 @@ export function HistoryTable() {
</div>
</TableCell>
</TableRow>
))}
);
})}
</TableBody>
</Table>
</div>