Event Calendar
ilinxa/event-calendarFreeBlock
Editable event calendar with month, week, day, and agenda views — multi-day spans, drag and resize editing, clipboard support, and keyboard navigation.
Install it
npx shadcn@latest add https://ui.ilinxa.com/r/event-calendar.jsonSource
1"use client";23import { forwardRef } from "react";4import { useCalendar } from "./hooks/use-calendar-context";5import { useCalendarEditOptional } from "./hooks/use-calendar-edit-extension";6import { EventCalendarRoot } from "./parts/calendar-root";7import { CalendarToolbar } from "./parts/calendar-toolbar";8import { CalendarMiniNav } from "./parts/calendar-mini-nav";9import { CalendarMonthView } from "./parts/calendar-month-view";10import { CalendarWeekView } from "./parts/calendar-week-view";11import { CalendarDayView } from "./parts/calendar-day-view";12import { CalendarAgendaView } from "./parts/calendar-agenda-view";13import { CalendarEventInspector } from "./parts/calendar-event-inspector";14import type { CalendarHandle, CalendarProps } from "./types";1516/** Renders the active view (must live inside the Root to read context). */17function ActiveView() {18 const { view, availableViews } = useCalendar();19 const v = availableViews.includes(view) ? view : availableViews[0];20 switch (v) {21 case "week":22 return <CalendarWeekView />;23 case "day":24 return <CalendarDayView />;25 case "agenda":26 return <CalendarAgendaView />;27 case "month":28 default:29 return <CalendarMonthView />;30 }31}3233/**34 * Renders the quick-composer / rename field / detail-editor overlays — but35 * ONLY when the editing extension is wired (`useCalendarEditOptional()` is36 * non-null). A tiny inner component so it can read that context itself37 * (must live inside the Root, same as `ActiveView`); the assembly never38 * statically imports any of these — they resolve through `edit.components`.39 */40function EditOverlaysSlot({ showInspector }: { showInspector: boolean }) {41 const edit = useCalendarEditOptional();42 if (!edit) return null;43 return (44 <>45 <edit.components.QuickComposer />46 {/* Inline rename popup (the inspector never hosted rename). */}47 <edit.components.RenameField />48 {/* Detail editor — only when the inspector isn't mounted (it hosts the49 editor inline; mounting both would double-render on `editingId`). */}50 {showInspector ? null : <edit.components.EditOverlays />}51 </>52 );53}5455/**56 * Calendar 01 — batteries-included assembly (Tier A). Root + toolbar + optional57 * mini-nav + the active view, gated by `show*` toggles. Contains no logic the58 * parts lack; hand-assemble `EventCalendarRoot` + the parts you want for a lighter59 * build.60 */61// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from ilinxa
All 184 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Account Switcheraccount-switcher | ilinxa | Blocks | Free | 1 dep · 10 files | |
| Account Switcher (deprecated alias)account-switcher-01 | ilinxa | Blocks | Free | no deps | |
| Account Switcher — fixturesaccount-switcher-fixtures | ilinxa | Blocks | Free | no deps | |
| App Sidebarapp-sidebar | ilinxa | Blocks | Free | 1 dep · 37 files | |
| App Sidebar — fixturesapp-sidebar-fixtures | ilinxa | Blocks | Free | no deps | |
| Rich Text Editor (deprecated alias)article-body-01 | ilinxa | Blocks | Free | no deps | |
| Article Metaarticle-meta | ilinxa | Blocks | Free | 1 dep · 4 files | |
| Article Meta (deprecated alias)article-meta-01 | ilinxa | Blocks | Free | no deps |
