feat: add schedule sheet and tag input components
- Implemented ScheduleSheet component to display channel schedules with a timeline view. - Added DayRow subcomponent for rendering daily schedule slots with color coding. - Integrated ScheduleSheet into the DashboardPage for viewing schedules of selected channels. - Created TagInput component for managing tags with add and remove functionality. - Updated package dependencies to include zod version 4.3.6.
This commit is contained in:
@@ -14,6 +14,7 @@ import { ChannelCard } from "./components/channel-card";
|
||||
import { CreateChannelDialog } from "./components/create-channel-dialog";
|
||||
import { DeleteChannelDialog } from "./components/delete-channel-dialog";
|
||||
import { EditChannelSheet } from "./components/edit-channel-sheet";
|
||||
import { ScheduleSheet } from "./components/schedule-sheet";
|
||||
import type { ChannelResponse, ProgrammingBlock, RecyclePolicy } from "@/lib/types";
|
||||
|
||||
export default function DashboardPage() {
|
||||
@@ -27,6 +28,7 @@ export default function DashboardPage() {
|
||||
const [createOpen, setCreateOpen] = useState(false);
|
||||
const [editChannel, setEditChannel] = useState<ChannelResponse | null>(null);
|
||||
const [deleteTarget, setDeleteTarget] = useState<ChannelResponse | null>(null);
|
||||
const [scheduleChannel, setScheduleChannel] = useState<ChannelResponse | null>(null);
|
||||
|
||||
const handleCreate = (data: {
|
||||
name: string;
|
||||
@@ -114,6 +116,7 @@ export default function DashboardPage() {
|
||||
onEdit={() => setEditChannel(channel)}
|
||||
onDelete={() => setDeleteTarget(channel)}
|
||||
onGenerateSchedule={() => generateSchedule.mutate(channel.id)}
|
||||
onViewSchedule={() => setScheduleChannel(channel)}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
@@ -137,6 +140,12 @@ export default function DashboardPage() {
|
||||
error={updateChannel.error?.message}
|
||||
/>
|
||||
|
||||
<ScheduleSheet
|
||||
channel={scheduleChannel}
|
||||
open={!!scheduleChannel}
|
||||
onOpenChange={(open) => { if (!open) setScheduleChannel(null); }}
|
||||
/>
|
||||
|
||||
{deleteTarget && (
|
||||
<DeleteChannelDialog
|
||||
channelName={deleteTarget.name}
|
||||
|
||||
Reference in New Issue
Block a user