diff --git a/k-tv-frontend/app/(main)/dashboard/components/channel-card.tsx b/k-tv-frontend/app/(main)/dashboard/components/channel-card.tsx
index 463b4f1..7231e91 100644
--- a/k-tv-frontend/app/(main)/dashboard/components/channel-card.tsx
+++ b/k-tv-frontend/app/(main)/dashboard/components/channel-card.tsx
@@ -1,5 +1,5 @@
import Link from "next/link";
-import { Pencil, Trash2, RefreshCw, Tv2, CalendarDays } from "lucide-react";
+import { Pencil, Trash2, RefreshCw, Tv2, CalendarDays, Download } from "lucide-react";
import { Button } from "@/components/ui/button";
import type { ChannelResponse } from "@/lib/types";
@@ -10,6 +10,7 @@ interface ChannelCardProps {
onDelete: () => void;
onGenerateSchedule: () => void;
onViewSchedule: () => void;
+ onExport: () => void;
}
export function ChannelCard({
@@ -19,6 +20,7 @@ export function ChannelCard({
onDelete,
onGenerateSchedule,
onViewSchedule,
+ onExport,
}: ChannelCardProps) {
const blockCount = channel.schedule_config.blocks.length;
@@ -38,6 +40,15 @@ export function ChannelCard({
+
- setCreateOpen(true)}>
-
- New channel
-
+
+
setImportOpen(true)} className="border-zinc-700 text-zinc-300 hover:text-zinc-100">
+
+ Import
+
+
setCreateOpen(true)}>
+
+ New channel
+
+
{/* Content */}
@@ -117,12 +172,21 @@ export default function DashboardPage() {
onDelete={() => setDeleteTarget(channel)}
onGenerateSchedule={() => generateSchedule.mutate(channel.id)}
onViewSchedule={() => setScheduleChannel(channel)}
+ onExport={() => handleExport(channel)}
/>
))}
)}
{/* Dialogs / sheets */}
+ { if (!open) { setImportOpen(false); setImportError(null); } }}
+ onSubmit={handleImport}
+ isPending={importPending}
+ error={importError}
+ />
+