Initial commit: silicondeck/shadcn-dashboard-landing-template (nextjs-version) + CLAUDE.md
- Next.js 16.1.1 + React 19.2.3 + Tailwind v4 + shadcn/ui v3 - Template scaffold (App Router with (auth)/(dashboard)/landing route groups) - pnpm v10 lockfile - CLAUDE.md describing multi-tenant Appwrite architecture, 8 modules, Gitea+Coolify deploy
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
"use client"
|
||||
|
||||
import { CalendarSidebar } from "./calendar-sidebar"
|
||||
import { CalendarMain } from "./calendar-main"
|
||||
import { EventForm } from "./event-form"
|
||||
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@/components/ui/sheet"
|
||||
import { type CalendarEvent } from "../types"
|
||||
import { useCalendar } from "../use-calendar"
|
||||
|
||||
interface CalendarProps {
|
||||
events: CalendarEvent[]
|
||||
eventDates: Array<{ date: Date; count: number }>
|
||||
}
|
||||
|
||||
export function Calendar({ events, eventDates }: CalendarProps) {
|
||||
const calendar = useCalendar(events)
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="border rounded-lg bg-background relative">
|
||||
<div className="flex min-h-[800px]">
|
||||
{/* Desktop Sidebar - Hidden on mobile/tablet, shown on extra large screens */}
|
||||
<div className="hidden xl:block w-80 flex-shrink-0 border-r">
|
||||
<CalendarSidebar
|
||||
selectedDate={calendar.selectedDate}
|
||||
onDateSelect={calendar.handleDateSelect}
|
||||
onNewCalendar={calendar.handleNewCalendar}
|
||||
onNewEvent={calendar.handleNewEvent}
|
||||
events={eventDates}
|
||||
className="h-full"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Main Calendar Panel */}
|
||||
<div className="flex-1 min-w-0">
|
||||
<CalendarMain
|
||||
selectedDate={calendar.selectedDate}
|
||||
onDateSelect={calendar.handleDateSelect}
|
||||
onMenuClick={() => calendar.setShowCalendarSheet(true)}
|
||||
events={calendar.events}
|
||||
onEventClick={calendar.handleEditEvent}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Mobile/Tablet Sheet - Positioned relative to calendar container */}
|
||||
<Sheet open={calendar.showCalendarSheet} onOpenChange={calendar.setShowCalendarSheet}>
|
||||
<SheetContent side="left" className="w-80 p-0" style={{ position: 'absolute' }}>
|
||||
<SheetHeader className="p-4 pb-2">
|
||||
<SheetTitle>Calendar</SheetTitle>
|
||||
<SheetDescription>
|
||||
Browse dates and manage your calendar events
|
||||
</SheetDescription>
|
||||
</SheetHeader>
|
||||
<CalendarSidebar
|
||||
selectedDate={calendar.selectedDate}
|
||||
onDateSelect={calendar.handleDateSelect}
|
||||
onNewCalendar={calendar.handleNewCalendar}
|
||||
onNewEvent={calendar.handleNewEvent}
|
||||
events={eventDates}
|
||||
className="h-full"
|
||||
/>
|
||||
</SheetContent>
|
||||
</Sheet>
|
||||
</div>
|
||||
|
||||
{/* Event Form Dialog */}
|
||||
<EventForm
|
||||
event={calendar.editingEvent}
|
||||
open={calendar.showEventForm}
|
||||
onOpenChange={calendar.setShowEventForm}
|
||||
onSave={calendar.handleSaveEvent}
|
||||
onDelete={calendar.handleDeleteEvent}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user