{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "code-big-calendar",
  "type": "registry:ui",
  "description": "Big calendar component for displaying events",
  "files": [
    {
      "path": "packages/code/big-calendar.tsx",
      "content": "\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { addDays, setHours, setMinutes, getDay } from \"date-fns\";\nimport { useCalendarContext } from \"./event-calendar/calendar-context\";\n\nimport {\n    EventCalendar,\n    type CalendarEvent,\n    type EventColor,\n} from \"./event-calendar\";\n\n// Etiquettes data for calendar filtering\nexport const etiquettes = [\n    {\n        id: \"my-events\",\n        name: \"My Events\",\n        color: \"emerald\" as EventColor,\n        isActive: true,\n    },\n    {\n        id: \"marketing-team\",\n        name: \"Marketing Team\",\n        color: \"orange\" as EventColor,\n        isActive: true,\n    },\n    {\n        id: \"interviews\",\n        name: \"Interviews\",\n        color: \"violet\" as EventColor,\n        isActive: true,\n    },\n    {\n        id: \"events-planning\",\n        name: \"Events Planning\",\n        color: \"blue\" as EventColor,\n        isActive: true,\n    },\n    {\n        id: \"holidays\",\n        name: \"Holidays\",\n        color: \"rose\" as EventColor,\n        isActive: true,\n    },\n];\n\n// Function to calculate days until next Sunday\nconst getDaysUntilNextSunday = (date: Date) => {\n    const day = getDay(date); // 0 is Sunday, 6 is Saturday\n    return day === 0 ? 0 : 7 - day; // If today is Sunday, return 0, otherwise calculate days until Sunday\n};\n\n// Store the current date to avoid repeated new Date() calls\nconst currentDate = new Date();\n\n// Calculate the offset once to avoid repeated calculations\nconst daysUntilNextSunday = getDaysUntilNextSunday(currentDate);\n\n// Sample events data with hardcoded times\nconst sampleEvents: CalendarEvent[] = [\n    {\n        id: \"w1-0a\",\n        title: \"Executive Board Meeting\",\n        description: \"Quarterly review with executive team\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -13 + daysUntilNextSunday), 9),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -13 + daysUntilNextSunday), 11),\n            30,\n        ),\n        color: \"blue\",\n        location: \"Executive Boardroom\",\n    },\n    {\n        id: \"w1-0b\",\n        title: \"Investor Call\",\n        description: \"Update investors on company progress\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -13 + daysUntilNextSunday), 14),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -13 + daysUntilNextSunday), 15),\n            0,\n        ),\n        color: \"violet\",\n        location: \"Conference Room A\",\n    },\n    {\n        id: \"w1-1\",\n        title: \"Strategy Workshop\",\n        description: \"Annual strategy planning session\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -12 + daysUntilNextSunday), 8),\n            30,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -12 + daysUntilNextSunday), 10),\n            0,\n        ),\n        color: \"violet\",\n        location: \"Innovation Lab\",\n    },\n    {\n        id: \"w1-2\",\n        title: \"Client Presentation\",\n        description: \"Present quarterly results\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -12 + daysUntilNextSunday), 13),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -12 + daysUntilNextSunday), 14),\n            30,\n        ),\n        color: \"emerald\",\n        location: \"Client HQ\",\n    },\n    {\n        id: \"w1-3\",\n        title: \"Budget Review\",\n        description: \"Review department budgets\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -11 + daysUntilNextSunday), 9),\n            15,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -11 + daysUntilNextSunday), 11),\n            0,\n        ),\n        color: \"blue\",\n        location: \"Finance Room\",\n    },\n    {\n        id: \"w1-4\",\n        title: \"Team Lunch\",\n        description: \"Quarterly team lunch\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -11 + daysUntilNextSunday), 12),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -11 + daysUntilNextSunday), 13),\n            30,\n        ),\n        color: \"orange\",\n        location: \"Bistro Garden\",\n    },\n    {\n        id: \"w1-5\",\n        title: \"Project Kickoff\",\n        description: \"Launch new marketing campaign\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -10 + daysUntilNextSunday), 10),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -10 + daysUntilNextSunday), 12),\n            0,\n        ),\n        color: \"orange\",\n        location: \"Marketing Suite\",\n    },\n    {\n        id: \"w1-6\",\n        title: \"Interview: UX Designer\",\n        description: \"First round interview\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -10 + daysUntilNextSunday), 14),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -10 + daysUntilNextSunday), 15),\n            0,\n        ),\n        color: \"violet\",\n        location: \"HR Office\",\n    },\n    {\n        id: \"w1-7\",\n        title: \"Company All-Hands\",\n        description: \"Monthly company update\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -9 + daysUntilNextSunday), 9),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -9 + daysUntilNextSunday), 10),\n            30,\n        ),\n        color: \"emerald\",\n        location: \"Main Auditorium\",\n    },\n    {\n        id: \"w1-8\",\n        title: \"Product Demo\",\n        description: \"Demo new features to stakeholders\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -9 + daysUntilNextSunday), 13),\n            45,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -9 + daysUntilNextSunday), 15),\n            0,\n        ),\n        color: \"blue\",\n        location: \"Demo Room\",\n    },\n    {\n        id: \"w1-9\",\n        title: \"Family Time\",\n        description: \"Morning routine with kids\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -8 + daysUntilNextSunday), 7),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -8 + daysUntilNextSunday), 7),\n            30,\n        ),\n        color: \"rose\",\n    },\n    {\n        id: \"w1-10\",\n        title: \"Family Time\",\n        description: \"Breakfast with family\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -8 + daysUntilNextSunday), 10),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -8 + daysUntilNextSunday), 10),\n            30,\n        ),\n        color: \"rose\",\n    },\n    {\n        id: \"5e\",\n        title: \"Family Time\",\n        description: \"Some time to spend with family\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -7 + daysUntilNextSunday), 10),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -7 + daysUntilNextSunday), 13),\n            30,\n        ),\n        color: \"rose\",\n    },\n    {\n        id: \"1b\",\n        title: \"Meeting w/ Ely\",\n        description: \"Strategic planning for next year\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -6 + daysUntilNextSunday), 7),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -6 + daysUntilNextSunday), 8),\n            0,\n        ),\n        color: \"orange\",\n        location: \"Main Conference Hall\",\n    },\n    {\n        id: \"1c\",\n        title: \"Team Catch-up\",\n        description: \"Weekly team sync\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -6 + daysUntilNextSunday), 8),\n            15,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -6 + daysUntilNextSunday), 11),\n            0,\n        ),\n        color: \"blue\",\n        location: \"Main Conference Hall\",\n    },\n    {\n        id: \"1d\",\n        title: \"Checkin w/ Pedra\",\n        description: \"Coordinate operations\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -6 + daysUntilNextSunday), 15),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -6 + daysUntilNextSunday), 16),\n            0,\n        ),\n        color: \"blue\",\n        location: \"Main Conference Hall\",\n    },\n    {\n        id: \"1e\",\n        title: \"Teem Intro\",\n        description: \"Introduce team members\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -5 + daysUntilNextSunday), 8),\n            15,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -5 + daysUntilNextSunday), 9),\n            30,\n        ),\n        color: \"emerald\",\n        location: \"Main Conference Hall\",\n    },\n    {\n        id: \"1f\",\n        title: \"Task Presentation\",\n        description: \"Present tasks\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -5 + daysUntilNextSunday), 10),\n            45,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -5 + daysUntilNextSunday), 13),\n            30,\n        ),\n        color: \"emerald\",\n        location: \"Main Conference Hall\",\n    },\n    {\n        id: \"5\",\n        title: \"Product Meeting\",\n        description: \"Discuss product requirements\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -4 + daysUntilNextSunday), 9),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -4 + daysUntilNextSunday), 11),\n            30,\n        ),\n        color: \"orange\",\n        location: \"Downtown Cafe\",\n    },\n    {\n        id: \"5b\",\n        title: \"Team Meeting\",\n        description: \"Discuss new project requirements\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -4 + daysUntilNextSunday), 13),\n            30,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -4 + daysUntilNextSunday), 14),\n            0,\n        ),\n        color: \"violet\",\n        location: \"Downtown Cafe\",\n    },\n    {\n        id: \"5c\",\n        title: \"1:1 w/ Tommy\",\n        description: \"Talent review\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -3 + daysUntilNextSunday), 9),\n            45,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -3 + daysUntilNextSunday), 10),\n            45,\n        ),\n        color: \"violet\",\n        location: \"Abbey Road Room\",\n    },\n    {\n        id: \"5d\",\n        title: \"Kick-off call\",\n        description: \"Ultra fast call with Sonia\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -3 + daysUntilNextSunday), 11),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -3 + daysUntilNextSunday), 11),\n            30,\n        ),\n        color: \"violet\",\n        location: \"Abbey Road Room\",\n    },\n    {\n        id: \"5ef\",\n        title: \"Weekly Review\",\n        description: \"Manual process review\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -2 + daysUntilNextSunday), 8),\n            45,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -2 + daysUntilNextSunday), 9),\n            45,\n        ),\n        color: \"blue\",\n    },\n    {\n        id: \"5f\",\n        title: \"Meeting w/ Mike\",\n        description: \"Explore new ideas\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -2 + daysUntilNextSunday), 14),\n            30,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -2 + daysUntilNextSunday), 15),\n            30,\n        ),\n        color: \"orange\",\n        location: \"Main Conference Hall\",\n    },\n    {\n        id: \"5g\",\n        title: \"Family Time\",\n        description: \"Some time to spend with family\",\n        start: setMinutes(\n            setHours(addDays(currentDate, -1 + daysUntilNextSunday), 7),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, -1 + daysUntilNextSunday), 7),\n            30,\n        ),\n        color: \"rose\",\n    },\n    {\n        id: \"w3-1\",\n        title: \"Quarterly Planning\",\n        description: \"Plan next quarter objectives\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday), 9),\n            30,\n        ),\n        end: setMinutes(setHours(addDays(currentDate, daysUntilNextSunday), 12), 0),\n        color: \"blue\",\n        location: \"Planning Room\",\n    },\n    {\n        id: \"w3-2\",\n        title: \"Vendor Meeting\",\n        description: \"Review vendor proposals\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 1), 7),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 1), 8),\n            30,\n        ),\n        color: \"violet\",\n        location: \"Meeting Room B\",\n    },\n    {\n        id: \"w3-3\",\n        title: \"Design Workshop\",\n        description: \"Brainstorming session for new UI\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 1), 10),\n            15,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 1), 12),\n            45,\n        ),\n        color: \"emerald\",\n        location: \"Design Studio\",\n    },\n    {\n        id: \"w3-4\",\n        title: \"Lunch with CEO\",\n        description: \"Informal discussion about company vision\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 1), 13),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 1), 14),\n            30,\n        ),\n        color: \"orange\",\n        location: \"Executive Dining Room\",\n    },\n    {\n        id: \"w3-5\",\n        title: \"Technical Review\",\n        description: \"Code review with engineering team\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 2), 11),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 2), 12),\n            30,\n        ),\n        color: \"blue\",\n        location: \"Engineering Lab\",\n    },\n    {\n        id: \"w3-6\",\n        title: \"Customer Call\",\n        description: \"Follow-up with key customer\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 2), 15),\n            15,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 2), 16),\n            0,\n        ),\n        color: \"violet\",\n        location: \"Call Center\",\n    },\n    {\n        id: \"w3-7\",\n        title: \"Team Building\",\n        description: \"Offsite team building activity\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 3), 9),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 3), 17),\n            0,\n        ),\n        color: \"emerald\",\n        location: \"Adventure Park\",\n        allDay: true,\n    },\n    {\n        id: \"w3-8\",\n        title: \"Marketing Review\",\n        description: \"Review campaign performance\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 4), 8),\n            45,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 4), 10),\n            15,\n        ),\n        color: \"orange\",\n        location: \"Marketing Room\",\n    },\n    {\n        id: \"w3-9\",\n        title: \"Product Roadmap\",\n        description: \"Discuss product roadmap for next quarter\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 5), 14),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 5), 16),\n            30,\n        ),\n        color: \"blue\",\n        location: \"Strategy Room\",\n    },\n    {\n        id: \"w3-10\",\n        title: \"Family Time\",\n        description: \"Morning walk with family\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 6), 7),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 6), 7),\n            30,\n        ),\n        color: \"rose\",\n    },\n    {\n        id: \"w3-11\",\n        title: \"Family Time\",\n        description: \"Brunch with family\",\n        start: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 6), 10),\n            0,\n        ),\n        end: setMinutes(\n            setHours(addDays(currentDate, daysUntilNextSunday + 6), 10),\n            30,\n        ),\n        color: \"rose\",\n    },\n];\n\nexport default function Component() {\n    const [events, setEvents] = useState<CalendarEvent[]>(sampleEvents);\n    const { isColorVisible } = useCalendarContext();\n\n    // Filter events based on visible colors\n    const visibleEvents = useMemo(() => {\n        return events.filter((event) => isColorVisible(event.color));\n    }, [events, isColorVisible]);\n\n    const handleEventAdd = (event: CalendarEvent) => {\n        setEvents([...events, event]);\n    };\n\n    const handleEventUpdate = (updatedEvent: CalendarEvent) => {\n        setEvents(\n            events.map((event) =>\n                event.id === updatedEvent.id ? updatedEvent : event,\n            ),\n        );\n    };\n\n    const handleEventDelete = (eventId: string) => {\n        setEvents(events.filter((event) => event.id !== eventId));\n    };\n\n    return (\n        <EventCalendar\n            events={visibleEvents}\n            onEventAdd={handleEventAdd}\n            onEventUpdate={handleEventUpdate}\n            onEventDelete={handleEventDelete}\n            initialView=\"week\"\n        />\n    );\n}",
      "type": "registry:component"
    }
  ]
}