Files
sbd2-frontend/src/components/AppLayout.tsx
JSC 6cbf0e5e6d feat: add audio extraction management interface and services
- Implemented ExtractionsPage component for managing audio extractions.
- Added ExtractionsService for handling extraction API calls.
- Created Playlist component for displaying audio tracks.
- Introduced ScrollArea component for better UI scrolling experience.
- Developed FilesService for file download and thumbnail management.
- Added PlayerService for controlling audio playback and state.
- Updated API services index to include new services.
2025-08-03 20:43:42 +02:00

64 lines
2.0 KiB
TypeScript

import { SidebarProvider, SidebarInset, SidebarTrigger } from '@/components/ui/sidebar'
import { AppSidebar } from './AppSidebar'
import { Separator } from '@/components/ui/separator'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/components/ui/breadcrumb'
import { Player } from './player/Player'
interface AppLayoutProps {
children: React.ReactNode
breadcrumb?: {
items: Array<{
label: string
href?: string
}>
}
}
export function AppLayout({ children, breadcrumb }: AppLayoutProps) {
return (
<SidebarProvider>
<AppSidebar />
<SidebarInset>
<header className="flex h-16 shrink-0 items-center gap-2">
<div className="flex items-center gap-2 px-4">
<SidebarTrigger className="-ml-1" />
<Separator orientation="vertical" className="mr-2 h-4" />
{breadcrumb && (
<Breadcrumb>
<BreadcrumbList>
{breadcrumb.items.map((item, index) => (
<div key={item.label} className="flex items-center gap-2">
<BreadcrumbItem>
{item.href && index < breadcrumb.items.length - 1 ? (
<BreadcrumbLink href={item.href}>
{item.label}
</BreadcrumbLink>
) : (
<BreadcrumbPage>{item.label}</BreadcrumbPage>
)}
</BreadcrumbItem>
{index < breadcrumb.items.length - 1 && (
<BreadcrumbSeparator />
)}
</div>
))}
</BreadcrumbList>
</Breadcrumb>
)}
</div>
</header>
<div className="flex flex-1 flex-col gap-4 p-4 pt-0">
{children}
</div>
</SidebarInset>
<Player />
</SidebarProvider>
)
}