@spatika/react 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/dist/composites/EventCalendar.d.ts +39 -2
- package/dist/composites/EventCalendar.d.ts.map +1 -1
- package/dist/composites/EventCalendar.js +48 -16
- package/dist/composites/EventTimeline.d.ts +6 -1
- package/dist/composites/EventTimeline.d.ts.map +1 -1
- package/dist/composites/EventTimeline.js +5 -3
- package/dist/composites/scheduler-ui.d.ts +4 -3
- package/dist/composites/scheduler-ui.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/lib/scheduler.d.ts +4 -0
- package/dist/lib/scheduler.d.ts.map +1 -1
- package/dist/lib/scheduler.js +1 -0
- package/package.json +3 -3
- package/skills/spatika-ui/SKILL.md +2 -2
- package/src/composites/EventCalendar.tsx +174 -72
- package/src/composites/EventTimeline.tsx +32 -23
- package/src/composites/scheduler-ui.tsx +11 -9
- package/src/composites/scheduler.test.tsx +86 -0
- package/src/index.test.ts +4 -0
- package/src/index.ts +10 -0
- package/src/lib/scheduler.test.ts +13 -0
- package/src/lib/scheduler.ts +5 -0
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Spatika UI — agent guide
|
|
2
2
|
|
|
3
3
|
Glass React design system. Packages: `@spatika/tokens`, `@spatika/react`.
|
|
4
|
-
Human docs: https://spatika.
|
|
4
|
+
Human docs: https://spatika.sweyam.com · Machine index: https://spatika.sweyam.com/llms.txt
|
|
5
5
|
|
|
6
6
|
## Use this library
|
|
7
7
|
|
|
@@ -52,7 +52,7 @@ export function App() {
|
|
|
52
52
|
| Charts | `BarChart`, `LineChart`, or `ChartContainer` |
|
|
53
53
|
| Calendar | `EventCalendar` |
|
|
54
54
|
|
|
55
|
-
Canonical snippets: https://spatika.
|
|
55
|
+
Canonical snippets: https://spatika.sweyam.com/docs/components.md
|
|
56
56
|
Prop types: `node_modules/@spatika/react/dist/index.d.ts`
|
|
57
57
|
|
|
58
58
|
Cursor skill (copy into the consumer repo):
|
|
@@ -1,4 +1,28 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type CalendarView, type NormalizedEvent, type SchedulerEvent, type SchedulerPreferences, type SchedulerResource } from "../lib/scheduler";
|
|
3
|
+
export type EventCalendarEventVariant = "month-bar" | "month-timed" | "all-day" | "time-grid" | "agenda";
|
|
4
|
+
export type EventCalendarEventRenderContext = {
|
|
5
|
+
view: CalendarView;
|
|
6
|
+
variant: EventCalendarEventVariant;
|
|
7
|
+
locale?: string;
|
|
8
|
+
hour12: boolean;
|
|
9
|
+
source?: SchedulerEvent;
|
|
10
|
+
defaultChildren: ReactNode;
|
|
11
|
+
};
|
|
12
|
+
export type EventCalendarToolbarContext = {
|
|
13
|
+
view: CalendarView;
|
|
14
|
+
date: Date;
|
|
15
|
+
title: string;
|
|
16
|
+
views: CalendarView[];
|
|
17
|
+
locale?: string;
|
|
18
|
+
preferences: Required<SchedulerPreferences>;
|
|
19
|
+
onViewChange: (view: CalendarView) => void;
|
|
20
|
+
onPrev: () => void;
|
|
21
|
+
onNext: () => void;
|
|
22
|
+
onToday: () => void;
|
|
23
|
+
onDateChange: (date: Date) => void;
|
|
24
|
+
onPreferencesChange: (next: Required<SchedulerPreferences>) => void;
|
|
25
|
+
};
|
|
2
26
|
export type EventCalendarProps = {
|
|
3
27
|
events?: SchedulerEvent[];
|
|
4
28
|
resources?: SchedulerResource[];
|
|
@@ -28,8 +52,21 @@ export type EventCalendarProps = {
|
|
|
28
52
|
end: Date;
|
|
29
53
|
allDay: boolean;
|
|
30
54
|
}) => void;
|
|
55
|
+
/**
|
|
56
|
+
* Built-in create/edit dialog. Defaults to true.
|
|
57
|
+
* Set false when the host owns create/edit (custom schedule modal, etc.).
|
|
58
|
+
*/
|
|
59
|
+
showEventEditor?: boolean;
|
|
60
|
+
/** Preferences gear in the default toolbar. Ignored when `renderToolbar` is set. */
|
|
61
|
+
showPreferences?: boolean;
|
|
62
|
+
/** Extra controls after the view menu. Ignored when `renderToolbar` is set. */
|
|
63
|
+
toolbarTrailing?: ReactNode;
|
|
64
|
+
/** Replace event chip contents. The kit still wraps with the click/drag trigger. */
|
|
65
|
+
renderEvent?: (event: NormalizedEvent, context: EventCalendarEventRenderContext) => ReactNode;
|
|
66
|
+
/** Replace the toolbar. The default kit toolbar is used when omitted. */
|
|
67
|
+
renderToolbar?: (context: EventCalendarToolbarContext) => ReactNode;
|
|
31
68
|
className?: string;
|
|
32
69
|
};
|
|
33
70
|
/** Month / week / day / agenda calendar with editor, resize, recurrence, and preferences. */
|
|
34
|
-
export declare function EventCalendar({ events, resources, view: viewProp, defaultView, onViewChange, date: dateProp, defaultDate, onDateChange, views, weekStartsOn, hourStart, hourEnd, locale, readOnly, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, className, }: EventCalendarProps): import("react").JSX.Element;
|
|
71
|
+
export declare function EventCalendar({ events, resources, view: viewProp, defaultView, onViewChange, date: dateProp, defaultDate, onDateChange, views, weekStartsOn, hourStart, hourEnd, locale, readOnly, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, showEventEditor, showPreferences, toolbarTrailing, renderEvent, renderToolbar, className, }: EventCalendarProps): import("react").JSX.Element;
|
|
35
72
|
//# sourceMappingURL=EventCalendar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCalendar.d.ts","sourceRoot":"","sources":["../../src/composites/EventCalendar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EventCalendar.d.ts","sourceRoot":"","sources":["../../src/composites/EventCalendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ function draftFromSource(source) {
|
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
54
|
/** Month / week / day / agenda calendar with editor, resize, recurrence, and preferences. */
|
|
55
|
-
export function EventCalendar({ events = [], resources = [], view: viewProp, defaultView = "month", onViewChange, date: dateProp, defaultDate, onDateChange, views = ["month", "week", "day", "agenda"], weekStartsOn = 0, hourStart = 7, hourEnd = 21, locale, readOnly = false, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, className, }) {
|
|
55
|
+
export function EventCalendar({ events = [], resources = [], view: viewProp, defaultView = "month", onViewChange, date: dateProp, defaultDate, onDateChange, views = ["month", "week", "day", "agenda"], weekStartsOn = 0, hourStart = 7, hourEnd = 21, locale, readOnly = false, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, showEventEditor = true, showPreferences = true, toolbarTrailing, renderEvent, renderToolbar, className, }) {
|
|
56
56
|
const [view, setView] = useControllableState({
|
|
57
57
|
prop: viewProp,
|
|
58
58
|
defaultProp: defaultView,
|
|
@@ -118,6 +118,8 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
|
|
|
118
118
|
const source = sourceEvent(events, event.id);
|
|
119
119
|
if (source)
|
|
120
120
|
onEventClick?.(source);
|
|
121
|
+
if (!showEventEditor)
|
|
122
|
+
return;
|
|
121
123
|
setDraft(source ? draftFromSource(source) : {
|
|
122
124
|
id: event.id,
|
|
123
125
|
title: event.title,
|
|
@@ -132,7 +134,7 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
|
|
|
132
134
|
}
|
|
133
135
|
function openSlot(slot) {
|
|
134
136
|
onSlotClick?.(slot);
|
|
135
|
-
if (readOnly)
|
|
137
|
+
if (readOnly || !showEventEditor)
|
|
136
138
|
return;
|
|
137
139
|
setDraft({ start: slot.start, end: slot.end, allDay: slot.allDay });
|
|
138
140
|
}
|
|
@@ -205,13 +207,30 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
|
|
|
205
207
|
setDate(new Date());
|
|
206
208
|
}
|
|
207
209
|
}
|
|
208
|
-
function renderEventTrigger(event, className,
|
|
210
|
+
function renderEventTrigger(event, className, defaultChildren, options) {
|
|
211
|
+
const source = sourceEvent(events, event.id);
|
|
212
|
+
const variant = options?.variant ?? "month-timed";
|
|
213
|
+
const children = renderEvent
|
|
214
|
+
? renderEvent(event, {
|
|
215
|
+
view: resolvedView,
|
|
216
|
+
variant,
|
|
217
|
+
locale,
|
|
218
|
+
hour12,
|
|
219
|
+
source,
|
|
220
|
+
defaultChildren,
|
|
221
|
+
})
|
|
222
|
+
: defaultChildren;
|
|
223
|
+
if (renderEvent && children == null)
|
|
224
|
+
return null;
|
|
209
225
|
const resizable = options?.resize === "ns" &&
|
|
210
226
|
eventCanResize(event, { readOnly, enabled: canResize }) &&
|
|
211
227
|
Boolean(onEventChange);
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
228
|
+
const painted = variant === "month-bar" || variant === "all-day" || variant === "time-grid";
|
|
229
|
+
const button = (_jsx("button", { type: "button", draggable: false, className: className, style: variant === "agenda"
|
|
230
|
+
? eventColorStyle(event.color, "wash")
|
|
231
|
+
: painted
|
|
232
|
+
? eventColorStyle(event.color, resolvedView === "month" ? "bar" : "block")
|
|
233
|
+
: undefined, onClick: () => {
|
|
215
234
|
if (dragRef.current?.active)
|
|
216
235
|
return;
|
|
217
236
|
openEvent(event);
|
|
@@ -220,7 +239,20 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
|
|
|
220
239
|
return button;
|
|
221
240
|
return (_jsxs("div", { className: "relative h-full min-h-0", children: [button, _jsx(EventResizeHandle, { edge: "start", axis: "ns", event: event, hourStart: hourStart, hourEnd: hourEnd, onCommit: commitResize }), _jsx(EventResizeHandle, { edge: "end", axis: "ns", event: event, hourStart: hourStart, hourEnd: hourEnd, onCommit: commitResize })] }));
|
|
222
241
|
}
|
|
223
|
-
return (_jsxs(SchedulerShell, { slot: "event-calendar", className: className, tabIndex: 0, "aria-label": "Event calendar", onKeyDown: handleKeyDown, children: [
|
|
242
|
+
return (_jsxs(SchedulerShell, { slot: "event-calendar", className: className, tabIndex: 0, "aria-label": "Event calendar", onKeyDown: handleKeyDown, children: [renderToolbar ? (renderToolbar({
|
|
243
|
+
view: resolvedView,
|
|
244
|
+
date: resolvedDate,
|
|
245
|
+
title,
|
|
246
|
+
views,
|
|
247
|
+
locale,
|
|
248
|
+
preferences: resolvedPrefs,
|
|
249
|
+
onViewChange: (next) => setView(next),
|
|
250
|
+
onPrev: () => go(-1),
|
|
251
|
+
onNext: () => go(1),
|
|
252
|
+
onToday: () => setDate(new Date()),
|
|
253
|
+
onDateChange: (next) => setDate(next),
|
|
254
|
+
onPreferencesChange: (next) => setPrefs(next),
|
|
255
|
+
})) : (_jsx(SchedulerToolbar, { title: title, onPrev: () => go(-1), onNext: () => go(1), onToday: () => setDate(new Date()), menuLabel: CALENDAR_VIEW_LABEL[resolvedView], menu: views.map((item) => (_jsx(DropdownMenuItem, { onClick: () => setView(item), children: CALENDAR_VIEW_LABEL[item] }, item))), trailing: _jsxs(_Fragment, { children: [toolbarTrailing, showPreferences ? (_jsx(SchedulerPreferencesMenu, { value: resolvedPrefs, onChange: (next) => setPrefs(next) })) : null] }) })), resolvedView === "month" ? (_jsx(MonthGrid, { date: resolvedDate, today: today, events: normalized, weekStartsOn: startOn, showWeekends: resolvedPrefs.showWeekends, showWeekNumber: resolvedPrefs.showWeekNumber, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })) : resolvedView === "agenda" ? (_jsx(AgendaList, { date: resolvedDate, events: normalized, showWeekends: resolvedPrefs.showWeekends, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })) : (_jsx(TimeGrid, { date: resolvedDate, today: today, events: normalized, view: resolvedView === "day" ? "day" : "week", weekStartsOn: startOn, showWeekends: resolvedPrefs.showWeekends, hourStart: hourStart, hourEnd: hourEnd, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })), _jsx(ResourceLegend, { resources: resources, hiddenIds: hiddenIds, onToggle: toggleResource }), showEventEditor ? (_jsx(EventEditor, { open: draft != null, onOpenChange: (open) => {
|
|
224
256
|
if (!open)
|
|
225
257
|
setDraft(null);
|
|
226
258
|
}, draft: draft, resources: resources, readOnly: editorLocked, onSave: (event) => {
|
|
@@ -237,7 +269,7 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
|
|
|
237
269
|
if (source)
|
|
238
270
|
onEventDelete(source);
|
|
239
271
|
}
|
|
240
|
-
: undefined })] }));
|
|
272
|
+
: undefined })) : null] }));
|
|
241
273
|
}
|
|
242
274
|
function MonthGrid({ date, today, events, weekStartsOn, showWeekends, showWeekNumber, locale, hour12, onSlotClick, renderEventTrigger, }) {
|
|
243
275
|
const weeks = chunkWeeks(getMonthGrid(date, weekStartsOn));
|
|
@@ -255,7 +287,7 @@ function MonthGrid({ date, today, events, weekStartsOn, showWeekends, showWeekNu
|
|
|
255
287
|
end: addDays(day, 1),
|
|
256
288
|
allDay: true,
|
|
257
289
|
}), className: cn("flex size-7 items-center justify-center rounded-full text-xs font-bold", isToday && "bg-primary text-primary-foreground", !isToday && inMonth && "text-foreground hover:bg-muted/50", !isToday && !inMonth && "text-muted-foreground/70"), children: day.getDate() }) }, day.toISOString()));
|
|
258
|
-
}) }), lanes.map((lane, laneIndex) => (_jsx("div", { className: "grid gap-px px-0.5 pb-0.5", style: gridStyle, children: laneSlots(lane, columns).map((slot, slotIndex) => slot.kind === "empty" ? (_jsx("div", {}, slotIndex)) : (_jsx("div", { className: "min-w-0", style: { gridColumn: `span ${slot.span}` }, children: renderEventTrigger(slot.event, "flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold leading-none", slot.event.title) }, occurrenceKey(slot.event)))) }, laneIndex))), _jsx("div", { className: "grid min-h-[4.25rem]", style: gridStyle, children: days.map((day) => {
|
|
290
|
+
}) }), lanes.map((lane, laneIndex) => (_jsx("div", { className: "grid gap-px px-0.5 pb-0.5", style: gridStyle, children: laneSlots(lane, columns).map((slot, slotIndex) => slot.kind === "empty" ? (_jsx("div", {}, slotIndex)) : (_jsx("div", { className: "min-w-0", style: { gridColumn: `span ${slot.span}` }, children: renderEventTrigger(slot.event, "flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold leading-none", slot.event.title, { variant: "month-bar" }) }, occurrenceKey(slot.event)))) }, laneIndex))), _jsx("div", { className: "grid min-h-[4.25rem]", style: gridStyle, children: days.map((day) => {
|
|
259
291
|
const timed = timedEventsOnDay(events, day);
|
|
260
292
|
const visibleTimed = timed.slice(0, MAX_TIMED_IN_CELL);
|
|
261
293
|
const extra = timed.length - visibleTimed.length;
|
|
@@ -267,7 +299,7 @@ function MonthGrid({ date, today, events, weekStartsOn, showWeekends, showWeekNu
|
|
|
267
299
|
end: new Date(day.getFullYear(), day.getMonth(), day.getDate(), 10),
|
|
268
300
|
allDay: false,
|
|
269
301
|
});
|
|
270
|
-
}, children: [visibleTimed.map((event) => (_jsx("div", { className: "min-w-0", children: renderEventTrigger(event, "flex w-full min-w-0 items-center gap-1 rounded-sm px-0.5 py-0.5 text-left text-[11px] leading-tight text-foreground hover:bg-muted/40", _jsxs(_Fragment, { children: [_jsx("span", { className: "size-1.5 shrink-0 rounded-full", style: eventColorStyle(event.color, "dot") }), _jsx("span", { className: "shrink-0 text-muted-foreground", children: formatTime(event.start, locale, hour12) }), _jsx("span", { className: "min-w-0 truncate font-medium", children: event.title })] })) }, occurrenceKey(event)))), extra > 0 ? (_jsxs("p", { className: "px-0.5 text-[10px] font-bold text-muted-foreground", children: ["+", extra, " more"] })) : null] }, day.toISOString()));
|
|
302
|
+
}, children: [visibleTimed.map((event) => (_jsx("div", { className: "min-w-0", children: renderEventTrigger(event, "flex w-full min-w-0 items-center gap-1 rounded-sm px-0.5 py-0.5 text-left text-[11px] leading-tight text-foreground hover:bg-muted/40", _jsxs(_Fragment, { children: [_jsx("span", { className: "size-1.5 shrink-0 rounded-full", style: eventColorStyle(event.color, "dot") }), _jsx("span", { className: "shrink-0 text-muted-foreground", children: formatTime(event.start, locale, hour12) }), _jsx("span", { className: "min-w-0 truncate font-medium", children: event.title })] }), { variant: "month-timed" }) }, occurrenceKey(event)))), extra > 0 ? (_jsxs("p", { className: "px-0.5 text-[10px] font-bold text-muted-foreground", children: ["+", extra, " more"] })) : null] }, day.toISOString()));
|
|
271
303
|
}) })] })] }, week[0].toISOString()));
|
|
272
304
|
}) })] }));
|
|
273
305
|
}
|
|
@@ -300,7 +332,7 @@ function TimeGrid({ date, today, events, view, weekStartsOn, showWeekends, hourS
|
|
|
300
332
|
const nowTop = ((now.getHours() + now.getMinutes() / 60 - hourStart) / (hourEnd - hourStart)) * (hours.length * hourHeight);
|
|
301
333
|
return (_jsxs("div", { className: "overflow-x-auto", children: [_jsxs("div", { className: "grid min-w-[640px]", style: { gridTemplateColumns: `3.5rem repeat(${days.length}, minmax(0, 1fr))` }, children: [_jsx("div", { className: "border-b border-border/50" }), days.map((day) => (_jsxs("div", { className: cn("border-b border-l border-border/50 px-2 py-2 text-center", isSameDay(day, today) && "bg-primary/5"), children: [_jsx("p", { className: "text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: new Intl.DateTimeFormat(locale, { weekday: "short" }).format(day) }), _jsx("p", { className: cn("mx-auto mt-0.5 flex size-7 items-center justify-center rounded-full text-sm font-black", isSameDay(day, today) && "bg-primary text-primary-foreground"), children: day.getDate() })] }, day.toISOString()))), _jsx("div", { className: "border-b border-border/50" }), days.map((day) => {
|
|
302
334
|
const allDay = events.filter((event) => isMonthBar(event) && occupiesDay(event, day));
|
|
303
|
-
return (_jsx("div", { "data-scheduler-day": isoDay(day), className: "min-h-10 space-y-0.5 border-b border-l border-border/50 p-1", children: allDay.map((event) => (_jsx("div", { children: renderEventTrigger(event, "flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold", event.title) }, occurrenceKey(event)))) }, `allday-${day.toISOString()}`));
|
|
335
|
+
return (_jsx("div", { "data-scheduler-day": isoDay(day), className: "min-h-10 space-y-0.5 border-b border-l border-border/50 p-1", children: allDay.map((event) => (_jsx("div", { children: renderEventTrigger(event, "flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold", event.title, { variant: "all-day" }) }, occurrenceKey(event)))) }, `allday-${day.toISOString()}`));
|
|
304
336
|
})] }), _jsxs("div", { className: "relative min-w-[640px]", style: { height: hours.length * hourHeight }, children: [_jsxs("div", { className: "grid h-full", style: { gridTemplateColumns: `3.5rem repeat(${days.length}, minmax(0, 1fr))` }, children: [_jsx("div", { className: "relative", children: hours.map((hour) => (_jsx("div", { className: "relative border-b border-border/30 pr-2 text-right text-[10px] font-bold text-muted-foreground", style: { height: hourHeight }, children: _jsx("span", { className: "-translate-y-2 absolute right-2", children: formatHour(hour, locale, hour12) }) }, hour))) }), days.map((day) => {
|
|
305
337
|
const layout = layoutTimedEvents(events, day, hourStart, hourEnd);
|
|
306
338
|
return (_jsxs("div", { "data-scheduler-day": isoDay(day), className: "relative border-l border-border/40", onClick: (click) => {
|
|
@@ -321,10 +353,10 @@ function TimeGrid({ date, today, events, view, weekStartsOn, showWeekends, hourS
|
|
|
321
353
|
height: `${item.height}%`,
|
|
322
354
|
left: `${(item.col / item.cols) * 100}%`,
|
|
323
355
|
width: `${100 / item.cols}%`,
|
|
324
|
-
}, children: renderEventTrigger(item.event, "flex h-full w-full flex-col overflow-hidden rounded-md px-1.5 py-1 text-left text-[11px] font-semibold leading-tight", _jsxs(_Fragment, { children: [_jsx("span", { className: "truncate", children: item.event.title }), _jsx("span", { className: "truncate text-[10px] font-medium opacity-80", children: formatTime(item.event.start, locale, hour12) })] }), { resize: "ns" }) }, occurrenceKey(item.event))))] }, day.toISOString()));
|
|
356
|
+
}, children: renderEventTrigger(item.event, "flex h-full w-full flex-col overflow-hidden rounded-md px-1.5 py-1 text-left text-[11px] font-semibold leading-tight", _jsxs(_Fragment, { children: [_jsx("span", { className: "truncate", children: item.event.title }), _jsx("span", { className: "truncate text-[10px] font-medium opacity-80", children: formatTime(item.event.start, locale, hour12) })] }), { resize: "ns", variant: "time-grid" }) }, occurrenceKey(item.event))))] }, day.toISOString()));
|
|
325
357
|
})] }), showNow && nowTop > 0 && nowTop < hours.length * hourHeight ? (_jsx("div", { className: "pointer-events-none absolute right-0 left-14 z-10 h-px bg-destructive", style: { top: nowTop }, children: _jsx("span", { className: "absolute -top-1 -left-1 size-2 rounded-full bg-destructive" }) })) : null] })] }));
|
|
326
358
|
}
|
|
327
|
-
function AgendaList({ date, events, showWeekends, locale, hour12, onSlotClick,
|
|
359
|
+
function AgendaList({ date, events, showWeekends, locale, hour12, onSlotClick, renderEventTrigger, }) {
|
|
328
360
|
const days = filterWeekendDays(agendaDays(date, AGENDA_LENGTH), showWeekends);
|
|
329
361
|
return (_jsx("div", { className: "divide-y divide-border/50", children: days.map((day) => {
|
|
330
362
|
const items = events.filter((event) => occupiesDay(event, day));
|
|
@@ -332,8 +364,8 @@ function AgendaList({ date, events, showWeekends, locale, hour12, onSlotClick, o
|
|
|
332
364
|
start: new Date(day.getFullYear(), day.getMonth(), day.getDate(), 9),
|
|
333
365
|
end: new Date(day.getFullYear(), day.getMonth(), day.getDate(), 10),
|
|
334
366
|
allDay: false,
|
|
335
|
-
}), children: [_jsx("p", { className: "text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: new Intl.DateTimeFormat(locale, { weekday: "short" }).format(day) }), _jsx("p", { className: cn("text-lg font-black", isSameDay(day, startOfToday()) && "text-primary"), children: new Intl.DateTimeFormat(locale, { month: "short", day: "numeric" }).format(day) })] }), _jsx("div", { className: "min-w-0 space-y-1.5", children: items.length === 0 ? (_jsx("p", { className: "pt-2 text-xs text-muted-foreground", children: "No events" })) : (items.map((event) => (
|
|
336
|
-
|
|
337
|
-
|
|
367
|
+
}), children: [_jsx("p", { className: "text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: new Intl.DateTimeFormat(locale, { weekday: "short" }).format(day) }), _jsx("p", { className: cn("text-lg font-black", isSameDay(day, startOfToday()) && "text-primary"), children: new Intl.DateTimeFormat(locale, { month: "short", day: "numeric" }).format(day) })] }), _jsx("div", { className: "min-w-0 space-y-1.5", children: items.length === 0 ? (_jsx("p", { className: "pt-2 text-xs text-muted-foreground", children: "No events" })) : (items.map((event) => (_jsx("div", { "data-scheduler-day": isoDay(day), children: renderEventTrigger(event, "flex w-full min-w-0 items-start gap-2 rounded-md px-2 py-1.5 text-left hover:bg-muted/40", _jsxs(_Fragment, { children: [_jsx("span", { className: "mt-1.5 size-2 shrink-0 rounded-full", style: eventColorStyle(event.color, "dot") }), _jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "block truncate text-sm font-semibold text-foreground", children: event.title }), _jsx("span", { className: "text-[11px] text-muted-foreground", children: event.allDay || isMonthBar(event)
|
|
368
|
+
? "All day"
|
|
369
|
+
: `${formatTime(event.start, locale, hour12)} – ${formatTime(event.end, locale, hour12)}` })] })] }), { variant: "agenda" }) }, occurrenceKey(event))))) })] }, day.toISOString()));
|
|
338
370
|
}) }));
|
|
339
371
|
}
|
|
@@ -17,8 +17,13 @@ export type EventTimelineProps = {
|
|
|
17
17
|
onEventChange?: (event: SchedulerEvent, next: Partial<SchedulerEvent>) => void;
|
|
18
18
|
onEventCreate?: (event: SchedulerEvent) => void;
|
|
19
19
|
onEventDelete?: (event: SchedulerEvent) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Built-in create/edit dialog. Defaults to true.
|
|
22
|
+
* Set false when the host owns create/edit.
|
|
23
|
+
*/
|
|
24
|
+
showEventEditor?: boolean;
|
|
20
25
|
className?: string;
|
|
21
26
|
};
|
|
22
27
|
/** Horizontal resource timeline — rows are resources, bars are allocations across time. */
|
|
23
|
-
export declare function EventTimeline({ events, resources, scale: scaleProp, defaultScale, onScaleChange, date: dateProp, defaultDate, onDateChange, scales, locale, readOnly, areEventsDraggable, areEventsResizable, onEventClick, onEventChange, onEventCreate, onEventDelete, className, }: EventTimelineProps): import("react").JSX.Element;
|
|
28
|
+
export declare function EventTimeline({ events, resources, scale: scaleProp, defaultScale, onScaleChange, date: dateProp, defaultDate, onDateChange, scales, locale, readOnly, areEventsDraggable, areEventsResizable, onEventClick, onEventChange, onEventCreate, onEventDelete, showEventEditor, className, }: EventTimelineProps): import("react").JSX.Element;
|
|
24
29
|
//# sourceMappingURL=EventTimeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventTimeline.d.ts","sourceRoot":"","sources":["../../src/composites/EventTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,EAeL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAW1B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmCF,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,EAC5B,MAAW,EACX,SAAc,EACd,KAAK,EAAE,SAAS,EAChB,YAAuB,EACvB,aAAa,EACb,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,MAAsD,EACtD,MAAM,EACN,QAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,SAAS,GACV,EAAE,kBAAkB,+
|
|
1
|
+
{"version":3,"file":"EventTimeline.d.ts","sourceRoot":"","sources":["../../src/composites/EventTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,EAeL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAW1B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmCF,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,EAC5B,MAAW,EACX,SAAc,EACd,KAAK,EAAE,SAAS,EAChB,YAAuB,EACvB,aAAa,EACb,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,MAAsD,EACtD,MAAM,EACN,QAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAsB,EACtB,SAAS,GACV,EAAE,kBAAkB,+BA6PpB"}
|
|
@@ -37,7 +37,7 @@ function timelineTitle(scale, date, rangeStart, rangeEnd, locale) {
|
|
|
37
37
|
return formatMonthYear(date, locale);
|
|
38
38
|
}
|
|
39
39
|
/** Horizontal resource timeline — rows are resources, bars are allocations across time. */
|
|
40
|
-
export function EventTimeline({ events = [], resources = [], scale: scaleProp, defaultScale = "months", onScaleChange, date: dateProp, defaultDate, onDateChange, scales = ["hours", "days", "weeks", "months", "years"], locale, readOnly = false, areEventsDraggable, areEventsResizable, onEventClick, onEventChange, onEventCreate, onEventDelete, className, }) {
|
|
40
|
+
export function EventTimeline({ events = [], resources = [], scale: scaleProp, defaultScale = "months", onScaleChange, date: dateProp, defaultDate, onDateChange, scales = ["hours", "days", "weeks", "months", "years"], locale, readOnly = false, areEventsDraggable, areEventsResizable, onEventClick, onEventChange, onEventCreate, onEventDelete, showEventEditor = true, className, }) {
|
|
41
41
|
const [scale, setScale] = useControllableState({
|
|
42
42
|
prop: scaleProp,
|
|
43
43
|
defaultProp: defaultScale,
|
|
@@ -80,6 +80,8 @@ export function EventTimeline({ events = [], resources = [], scale: scaleProp, d
|
|
|
80
80
|
const source = sourceEvent(events, event.id);
|
|
81
81
|
if (source)
|
|
82
82
|
onEventClick?.(source);
|
|
83
|
+
if (!showEventEditor)
|
|
84
|
+
return;
|
|
83
85
|
setDraft(source ? draftFromSource(source) : {
|
|
84
86
|
id: event.id,
|
|
85
87
|
title: event.title,
|
|
@@ -164,7 +166,7 @@ export function EventTimeline({ events = [], resources = [], scale: scaleProp, d
|
|
|
164
166
|
width: `${bar.width}%`,
|
|
165
167
|
height: LANE_HEIGHT,
|
|
166
168
|
}, children: renderBar(bar.event) }, occurrenceKey(bar.event)))) })] }, resource.id));
|
|
167
|
-
})] }) }) }), _jsx(ResourceLegend, { resources: resources, hiddenIds: hiddenIds, onToggle: toggleResource }), _jsx(EventEditor, { open: draft != null, onOpenChange: (open) => {
|
|
169
|
+
})] }) }) }), _jsx(ResourceLegend, { resources: resources, hiddenIds: hiddenIds, onToggle: toggleResource }), showEventEditor ? (_jsx(EventEditor, { open: draft != null, onOpenChange: (open) => {
|
|
168
170
|
if (!open)
|
|
169
171
|
setDraft(null);
|
|
170
172
|
}, draft: draft, resources: resources, readOnly: editorLocked, onSave: (event) => {
|
|
@@ -180,5 +182,5 @@ export function EventTimeline({ events = [], resources = [], scale: scaleProp, d
|
|
|
180
182
|
if (source)
|
|
181
183
|
onEventDelete(source);
|
|
182
184
|
}
|
|
183
|
-
: undefined })] }));
|
|
185
|
+
: undefined })) : null] }));
|
|
184
186
|
}
|
|
@@ -2,15 +2,16 @@ import type { HTMLAttributes, ReactNode } from "react";
|
|
|
2
2
|
import { type CalendarView, type NormalizedEvent, type SchedulerPreferences, type SchedulerResource, type TimelineScale } from "../lib/scheduler";
|
|
3
3
|
export declare const CALENDAR_VIEW_LABEL: Record<CalendarView, string>;
|
|
4
4
|
export declare const TIMELINE_SCALE_LABEL: Record<TimelineScale, string>;
|
|
5
|
-
export
|
|
6
|
-
title:
|
|
5
|
+
export type SchedulerToolbarProps = {
|
|
6
|
+
title: ReactNode;
|
|
7
7
|
onPrev: () => void;
|
|
8
8
|
onNext: () => void;
|
|
9
9
|
onToday: () => void;
|
|
10
10
|
menuLabel: string;
|
|
11
11
|
menu: ReactNode;
|
|
12
12
|
trailing?: ReactNode;
|
|
13
|
-
}
|
|
13
|
+
};
|
|
14
|
+
export declare function SchedulerToolbar({ title, onPrev, onNext, onToday, menuLabel, menu, trailing, }: SchedulerToolbarProps): import("react").JSX.Element;
|
|
14
15
|
export declare function SchedulerPreferencesMenu({ value, onChange, disabled, }: {
|
|
15
16
|
value: Required<SchedulerPreferences>;
|
|
16
17
|
onChange: (next: Required<SchedulerPreferences>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler-ui.d.ts","sourceRoot":"","sources":["../../src/composites/scheduler-ui.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAU1B,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAK5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAM9D,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"scheduler-ui.d.ts","sourceRoot":"","sources":["../../src/composites/scheduler-ui.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAU1B,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAK5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAM9D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE,qBAAqB,+BAwCvB;AAED,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,+BAgCA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,OAAO,EACP,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;CAClF,+BA6CA;AAGD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,sCAqCA;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,QAAQ,EACR,YAAY,GACb,EAAE;IACD,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,+BAsBA;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,cAAc,CAAC,cAAc,CAAC,+BAajC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -145,11 +145,12 @@ export { SegmentedControl, type SegmentedControlProps, type SegmentedControlOpti
|
|
|
145
145
|
export { Toaster, useToast, type ToasterProps, type ToastItem, type ToastTone, } from "./composites/Toast";
|
|
146
146
|
export { Timeline, TimelineItem, type TimelineProps, type TimelineItemProps, } from "./composites/Timeline";
|
|
147
147
|
export { DataTableToolbar, type DataTableToolbarProps, } from "./composites/DataTableToolbar";
|
|
148
|
-
export { EventCalendar, type EventCalendarProps, } from "./composites/EventCalendar";
|
|
148
|
+
export { EventCalendar, type EventCalendarProps, type EventCalendarEventVariant, type EventCalendarEventRenderContext, type EventCalendarToolbarContext, } from "./composites/EventCalendar";
|
|
149
149
|
export { EventTimeline, type EventTimelineProps, } from "./composites/EventTimeline";
|
|
150
150
|
export { EventEditor, type EventEditorDraft, } from "./composites/EventEditor";
|
|
151
|
+
export { SchedulerToolbar, SchedulerPreferencesMenu, CALENDAR_VIEW_LABEL, type SchedulerToolbarProps, } from "./composites/scheduler-ui";
|
|
151
152
|
export { DEFAULT_SCHEDULER_PREFERENCES, SCHEDULER_COLOR_TONES, } from "./lib/scheduler";
|
|
152
|
-
export type { CalendarView, SchedulerColorTone, SchedulerEvent, SchedulerPreferences, SchedulerResource, TimelineScale, } from "./lib/scheduler";
|
|
153
|
+
export type { CalendarView, NormalizedEvent, SchedulerColorTone, SchedulerEvent, SchedulerPreferences, SchedulerResource, TimelineScale, } from "./lib/scheduler";
|
|
153
154
|
export { CHART_COLOR_VARS, chartColor, formatChartNumber, seriesDataFromDataset, axisDataFromDataset, clampZoom, DEFAULT_ZOOM, } from "./lib/charts";
|
|
154
155
|
export type { ChartAxisConfig, ChartCurve, ChartDataset, ChartInteraction, ChartMargin, ChartZoom, HighlightScope, SankeyLink, SankeyNode, TreeNode, } from "./lib/charts";
|
|
155
156
|
export { serializeChartSvg, exportChart, downloadChartSvg, downloadChartPng } from "./lib/chart-export";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -149,6 +149,7 @@ export { DataTableToolbar, } from "./composites/DataTableToolbar";
|
|
|
149
149
|
export { EventCalendar, } from "./composites/EventCalendar";
|
|
150
150
|
export { EventTimeline, } from "./composites/EventTimeline";
|
|
151
151
|
export { EventEditor, } from "./composites/EventEditor";
|
|
152
|
+
export { SchedulerToolbar, SchedulerPreferencesMenu, CALENDAR_VIEW_LABEL, } from "./composites/scheduler-ui";
|
|
152
153
|
export { DEFAULT_SCHEDULER_PREFERENCES, SCHEDULER_COLOR_TONES, } from "./lib/scheduler";
|
|
153
154
|
export { CHART_COLOR_VARS, chartColor, formatChartNumber, seriesDataFromDataset, axisDataFromDataset, clampZoom, DEFAULT_ZOOM, } from "./lib/charts";
|
|
154
155
|
export { serializeChartSvg, exportChart, downloadChartSvg, downloadChartPng } from "./lib/chart-export";
|
package/dist/lib/scheduler.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export type SchedulerEvent = {
|
|
|
22
22
|
readOnly?: boolean;
|
|
23
23
|
draggable?: boolean;
|
|
24
24
|
resizable?: boolean;
|
|
25
|
+
/** Opaque host payload. The kit never inspects it. */
|
|
26
|
+
data?: unknown;
|
|
25
27
|
};
|
|
26
28
|
export type SchedulerResource = {
|
|
27
29
|
id: string;
|
|
@@ -53,6 +55,8 @@ export type NormalizedEvent = {
|
|
|
53
55
|
draggable?: boolean;
|
|
54
56
|
resizable?: boolean;
|
|
55
57
|
occurrenceStart?: Date;
|
|
58
|
+
/** Opaque host payload. The kit never inspects it. */
|
|
59
|
+
data?: unknown;
|
|
56
60
|
};
|
|
57
61
|
export declare const SCHEDULER_COLOR_VARS: Record<SchedulerColorTone, string>;
|
|
58
62
|
export declare function toDate(value: Date | string): Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,gEAOxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;IACrB,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,cAAc,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/scheduler.js
CHANGED
|
@@ -223,6 +223,7 @@ export function normalizeEvents(events, resources = []) {
|
|
|
223
223
|
readOnly: event.readOnly,
|
|
224
224
|
draggable: event.draggable,
|
|
225
225
|
resizable: event.resizable,
|
|
226
|
+
data: event.data,
|
|
226
227
|
};
|
|
227
228
|
})
|
|
228
229
|
.sort((a, b) => a.start.getTime() - b.start.getTime() || a.title.localeCompare(b.title));
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spatika/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Spatika UI — glass React primitives and composites for production apps",
|
|
6
|
-
"homepage": "https://spatika.
|
|
6
|
+
"homepage": "https://spatika.sweyam.com",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/SreelalChalil/spatika",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"react-dom": "^18.2.0 || ^19.0.0"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@spatika/tokens": "1.
|
|
62
|
+
"@spatika/tokens": "1.3.0",
|
|
63
63
|
"class-variance-authority": "^0.7.1",
|
|
64
64
|
"clsx": "^2.1.1",
|
|
65
65
|
"cmdk": "^1.1.1",
|
|
@@ -5,7 +5,7 @@ description: Build UI with Spatika glass React components from @spatika/react. U
|
|
|
5
5
|
|
|
6
6
|
# Spatika UI
|
|
7
7
|
|
|
8
|
-
Glass React design system. Never invent Spatika components. Import from `@spatika/react`. Fetch https://spatika.
|
|
8
|
+
Glass React design system. Never invent Spatika components. Import from `@spatika/react`. Fetch https://spatika.sweyam.com/llms.txt for the live catalog.
|
|
9
9
|
|
|
10
10
|
## Bootstrap
|
|
11
11
|
|
|
@@ -91,6 +91,6 @@ import { Home, Search, User } from "lucide-react";
|
|
|
91
91
|
|
|
92
92
|
## Next
|
|
93
93
|
|
|
94
|
-
1. Fetch the component markdown: `https://spatika.
|
|
94
|
+
1. Fetch the component markdown: `https://spatika.sweyam.com/docs/{slug}.md`
|
|
95
95
|
2. Read prop types from `node_modules/@spatika/react/dist/index.d.ts`
|
|
96
96
|
3. Icons in examples use `lucide-react`
|
|
@@ -60,6 +60,37 @@ import {
|
|
|
60
60
|
} from "./scheduler-ui";
|
|
61
61
|
import { DropdownMenuItem } from "../primitives/DropdownMenu";
|
|
62
62
|
|
|
63
|
+
export type EventCalendarEventVariant =
|
|
64
|
+
| "month-bar"
|
|
65
|
+
| "month-timed"
|
|
66
|
+
| "all-day"
|
|
67
|
+
| "time-grid"
|
|
68
|
+
| "agenda";
|
|
69
|
+
|
|
70
|
+
export type EventCalendarEventRenderContext = {
|
|
71
|
+
view: CalendarView;
|
|
72
|
+
variant: EventCalendarEventVariant;
|
|
73
|
+
locale?: string;
|
|
74
|
+
hour12: boolean;
|
|
75
|
+
source?: SchedulerEvent;
|
|
76
|
+
defaultChildren: ReactNode;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export type EventCalendarToolbarContext = {
|
|
80
|
+
view: CalendarView;
|
|
81
|
+
date: Date;
|
|
82
|
+
title: string;
|
|
83
|
+
views: CalendarView[];
|
|
84
|
+
locale?: string;
|
|
85
|
+
preferences: Required<SchedulerPreferences>;
|
|
86
|
+
onViewChange: (view: CalendarView) => void;
|
|
87
|
+
onPrev: () => void;
|
|
88
|
+
onNext: () => void;
|
|
89
|
+
onToday: () => void;
|
|
90
|
+
onDateChange: (date: Date) => void;
|
|
91
|
+
onPreferencesChange: (next: Required<SchedulerPreferences>) => void;
|
|
92
|
+
};
|
|
93
|
+
|
|
63
94
|
export type EventCalendarProps = {
|
|
64
95
|
events?: SchedulerEvent[];
|
|
65
96
|
resources?: SchedulerResource[];
|
|
@@ -85,6 +116,22 @@ export type EventCalendarProps = {
|
|
|
85
116
|
onEventCreate?: (event: SchedulerEvent) => void;
|
|
86
117
|
onEventDelete?: (event: SchedulerEvent) => void;
|
|
87
118
|
onSlotClick?: (slot: { start: Date; end: Date; allDay: boolean }) => void;
|
|
119
|
+
/**
|
|
120
|
+
* Built-in create/edit dialog. Defaults to true.
|
|
121
|
+
* Set false when the host owns create/edit (custom schedule modal, etc.).
|
|
122
|
+
*/
|
|
123
|
+
showEventEditor?: boolean;
|
|
124
|
+
/** Preferences gear in the default toolbar. Ignored when `renderToolbar` is set. */
|
|
125
|
+
showPreferences?: boolean;
|
|
126
|
+
/** Extra controls after the view menu. Ignored when `renderToolbar` is set. */
|
|
127
|
+
toolbarTrailing?: ReactNode;
|
|
128
|
+
/** Replace event chip contents. The kit still wraps with the click/drag trigger. */
|
|
129
|
+
renderEvent?: (
|
|
130
|
+
event: NormalizedEvent,
|
|
131
|
+
context: EventCalendarEventRenderContext,
|
|
132
|
+
) => ReactNode;
|
|
133
|
+
/** Replace the toolbar. The default kit toolbar is used when omitted. */
|
|
134
|
+
renderToolbar?: (context: EventCalendarToolbarContext) => ReactNode;
|
|
88
135
|
className?: string;
|
|
89
136
|
};
|
|
90
137
|
|
|
@@ -167,6 +214,11 @@ export function EventCalendar({
|
|
|
167
214
|
onEventCreate,
|
|
168
215
|
onEventDelete,
|
|
169
216
|
onSlotClick,
|
|
217
|
+
showEventEditor = true,
|
|
218
|
+
showPreferences = true,
|
|
219
|
+
toolbarTrailing,
|
|
220
|
+
renderEvent,
|
|
221
|
+
renderToolbar,
|
|
170
222
|
className,
|
|
171
223
|
}: EventCalendarProps) {
|
|
172
224
|
const [view, setView] = useControllableState<CalendarView>({
|
|
@@ -238,6 +290,7 @@ export function EventCalendar({
|
|
|
238
290
|
function openEvent(event: NormalizedEvent) {
|
|
239
291
|
const source = sourceEvent(events, event.id);
|
|
240
292
|
if (source) onEventClick?.(source);
|
|
293
|
+
if (!showEventEditor) return;
|
|
241
294
|
setDraft(source ? draftFromSource(source) : {
|
|
242
295
|
id: event.id,
|
|
243
296
|
title: event.title,
|
|
@@ -253,7 +306,7 @@ export function EventCalendar({
|
|
|
253
306
|
|
|
254
307
|
function openSlot(slot: { start: Date; end: Date; allDay: boolean }) {
|
|
255
308
|
onSlotClick?.(slot);
|
|
256
|
-
if (readOnly) return;
|
|
309
|
+
if (readOnly || !showEventEditor) return;
|
|
257
310
|
setDraft({ start: slot.start, end: slot.end, allDay: slot.allDay });
|
|
258
311
|
}
|
|
259
312
|
|
|
@@ -322,13 +375,28 @@ export function EventCalendar({
|
|
|
322
375
|
function renderEventTrigger(
|
|
323
376
|
event: NormalizedEvent,
|
|
324
377
|
className: string,
|
|
325
|
-
|
|
326
|
-
options?: { resize?: "ns" },
|
|
378
|
+
defaultChildren: ReactNode,
|
|
379
|
+
options?: { resize?: "ns"; variant: EventCalendarEventVariant },
|
|
327
380
|
) {
|
|
381
|
+
const source = sourceEvent(events, event.id);
|
|
382
|
+
const variant = options?.variant ?? "month-timed";
|
|
383
|
+
const children = renderEvent
|
|
384
|
+
? renderEvent(event, {
|
|
385
|
+
view: resolvedView,
|
|
386
|
+
variant,
|
|
387
|
+
locale,
|
|
388
|
+
hour12,
|
|
389
|
+
source,
|
|
390
|
+
defaultChildren,
|
|
391
|
+
})
|
|
392
|
+
: defaultChildren;
|
|
393
|
+
if (renderEvent && children == null) return null;
|
|
394
|
+
|
|
328
395
|
const resizable =
|
|
329
396
|
options?.resize === "ns" &&
|
|
330
397
|
eventCanResize(event, { readOnly, enabled: canResize }) &&
|
|
331
398
|
Boolean(onEventChange);
|
|
399
|
+
const painted = variant === "month-bar" || variant === "all-day" || variant === "time-grid";
|
|
332
400
|
|
|
333
401
|
const button = (
|
|
334
402
|
<button
|
|
@@ -336,9 +404,11 @@ export function EventCalendar({
|
|
|
336
404
|
draggable={false}
|
|
337
405
|
className={className}
|
|
338
406
|
style={
|
|
339
|
-
|
|
340
|
-
? eventColorStyle(event.color,
|
|
341
|
-
:
|
|
407
|
+
variant === "agenda"
|
|
408
|
+
? eventColorStyle(event.color, "wash")
|
|
409
|
+
: painted
|
|
410
|
+
? eventColorStyle(event.color, resolvedView === "month" ? "bar" : "block")
|
|
411
|
+
: undefined
|
|
342
412
|
}
|
|
343
413
|
onClick={() => {
|
|
344
414
|
if (dragRef.current?.active) return;
|
|
@@ -385,24 +455,46 @@ export function EventCalendar({
|
|
|
385
455
|
aria-label="Event calendar"
|
|
386
456
|
onKeyDown={handleKeyDown}
|
|
387
457
|
>
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
458
|
+
{renderToolbar ? (
|
|
459
|
+
renderToolbar({
|
|
460
|
+
view: resolvedView,
|
|
461
|
+
date: resolvedDate,
|
|
462
|
+
title,
|
|
463
|
+
views,
|
|
464
|
+
locale,
|
|
465
|
+
preferences: resolvedPrefs,
|
|
466
|
+
onViewChange: (next) => setView(next),
|
|
467
|
+
onPrev: () => go(-1),
|
|
468
|
+
onNext: () => go(1),
|
|
469
|
+
onToday: () => setDate(new Date()),
|
|
470
|
+
onDateChange: (next) => setDate(next),
|
|
471
|
+
onPreferencesChange: (next) => setPrefs(next),
|
|
472
|
+
})
|
|
473
|
+
) : (
|
|
474
|
+
<SchedulerToolbar
|
|
475
|
+
title={title}
|
|
476
|
+
onPrev={() => go(-1)}
|
|
477
|
+
onNext={() => go(1)}
|
|
478
|
+
onToday={() => setDate(new Date())}
|
|
479
|
+
menuLabel={CALENDAR_VIEW_LABEL[resolvedView]}
|
|
480
|
+
menu={views.map((item) => (
|
|
481
|
+
<DropdownMenuItem key={item} onClick={() => setView(item)}>
|
|
482
|
+
{CALENDAR_VIEW_LABEL[item]}
|
|
483
|
+
</DropdownMenuItem>
|
|
484
|
+
))}
|
|
485
|
+
trailing={
|
|
486
|
+
<>
|
|
487
|
+
{toolbarTrailing}
|
|
488
|
+
{showPreferences ? (
|
|
489
|
+
<SchedulerPreferencesMenu
|
|
490
|
+
value={resolvedPrefs}
|
|
491
|
+
onChange={(next) => setPrefs(next)}
|
|
492
|
+
/>
|
|
493
|
+
) : null}
|
|
494
|
+
</>
|
|
495
|
+
}
|
|
496
|
+
/>
|
|
497
|
+
)}
|
|
406
498
|
|
|
407
499
|
{resolvedView === "month" ? (
|
|
408
500
|
<MonthGrid
|
|
@@ -425,7 +517,7 @@ export function EventCalendar({
|
|
|
425
517
|
locale={locale}
|
|
426
518
|
hour12={hour12}
|
|
427
519
|
onSlotClick={openSlot}
|
|
428
|
-
|
|
520
|
+
renderEventTrigger={renderEventTrigger}
|
|
429
521
|
/>
|
|
430
522
|
) : (
|
|
431
523
|
<TimeGrid
|
|
@@ -446,31 +538,33 @@ export function EventCalendar({
|
|
|
446
538
|
|
|
447
539
|
<ResourceLegend resources={resources} hiddenIds={hiddenIds} onToggle={toggleResource} />
|
|
448
540
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
541
|
+
{showEventEditor ? (
|
|
542
|
+
<EventEditor
|
|
543
|
+
open={draft != null}
|
|
544
|
+
onOpenChange={(open) => {
|
|
545
|
+
if (!open) setDraft(null);
|
|
546
|
+
}}
|
|
547
|
+
draft={draft}
|
|
548
|
+
resources={resources}
|
|
549
|
+
readOnly={editorLocked}
|
|
550
|
+
onSave={(event) => {
|
|
551
|
+
if (event.id && sourceEvent(events, event.id)) {
|
|
552
|
+
const source = sourceEvent(events, event.id)!;
|
|
553
|
+
onEventChange?.(source, event);
|
|
554
|
+
} else {
|
|
555
|
+
onEventCreate?.(event);
|
|
556
|
+
}
|
|
557
|
+
}}
|
|
558
|
+
onDelete={
|
|
559
|
+
onEventDelete
|
|
560
|
+
? (id) => {
|
|
561
|
+
const source = sourceEvent(events, id);
|
|
562
|
+
if (source) onEventDelete(source);
|
|
563
|
+
}
|
|
564
|
+
: undefined
|
|
463
565
|
}
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
onEventDelete
|
|
467
|
-
? (id) => {
|
|
468
|
-
const source = sourceEvent(events, id);
|
|
469
|
-
if (source) onEventDelete(source);
|
|
470
|
-
}
|
|
471
|
-
: undefined
|
|
472
|
-
}
|
|
473
|
-
/>
|
|
566
|
+
/>
|
|
567
|
+
) : null}
|
|
474
568
|
</SchedulerShell>
|
|
475
569
|
);
|
|
476
570
|
}
|
|
@@ -500,7 +594,7 @@ function MonthGrid({
|
|
|
500
594
|
event: NormalizedEvent,
|
|
501
595
|
className: string,
|
|
502
596
|
children: ReactNode,
|
|
503
|
-
options?: { resize?: "ns" },
|
|
597
|
+
options?: { resize?: "ns"; variant: EventCalendarEventVariant },
|
|
504
598
|
) => ReactNode;
|
|
505
599
|
}) {
|
|
506
600
|
const weeks = chunkWeeks(getMonthGrid(date, weekStartsOn));
|
|
@@ -585,6 +679,7 @@ function MonthGrid({
|
|
|
585
679
|
slot.event,
|
|
586
680
|
"flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold leading-none",
|
|
587
681
|
slot.event.title,
|
|
682
|
+
{ variant: "month-bar" },
|
|
588
683
|
)}
|
|
589
684
|
</div>
|
|
590
685
|
),
|
|
@@ -628,6 +723,7 @@ function MonthGrid({
|
|
|
628
723
|
</span>
|
|
629
724
|
<span className="min-w-0 truncate font-medium">{event.title}</span>
|
|
630
725
|
</>,
|
|
726
|
+
{ variant: "month-timed" },
|
|
631
727
|
)}
|
|
632
728
|
</div>
|
|
633
729
|
))}
|
|
@@ -698,7 +794,7 @@ function TimeGrid({
|
|
|
698
794
|
event: NormalizedEvent,
|
|
699
795
|
className: string,
|
|
700
796
|
children: ReactNode,
|
|
701
|
-
options?: { resize?: "ns" },
|
|
797
|
+
options?: { resize?: "ns"; variant: EventCalendarEventVariant },
|
|
702
798
|
) => ReactNode;
|
|
703
799
|
}) {
|
|
704
800
|
const days =
|
|
@@ -756,6 +852,7 @@ function TimeGrid({
|
|
|
756
852
|
event,
|
|
757
853
|
"flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold",
|
|
758
854
|
event.title,
|
|
855
|
+
{ variant: "all-day" },
|
|
759
856
|
)}
|
|
760
857
|
</div>
|
|
761
858
|
))}
|
|
@@ -824,7 +921,7 @@ function TimeGrid({
|
|
|
824
921
|
{formatTime(item.event.start, locale, hour12)}
|
|
825
922
|
</span>
|
|
826
923
|
</>,
|
|
827
|
-
{ resize: "ns" },
|
|
924
|
+
{ resize: "ns", variant: "time-grid" },
|
|
828
925
|
)}
|
|
829
926
|
</div>
|
|
830
927
|
))}
|
|
@@ -852,7 +949,7 @@ function AgendaList({
|
|
|
852
949
|
locale,
|
|
853
950
|
hour12,
|
|
854
951
|
onSlotClick,
|
|
855
|
-
|
|
952
|
+
renderEventTrigger,
|
|
856
953
|
}: {
|
|
857
954
|
date: Date;
|
|
858
955
|
events: NormalizedEvent[];
|
|
@@ -860,7 +957,12 @@ function AgendaList({
|
|
|
860
957
|
locale?: string;
|
|
861
958
|
hour12: boolean;
|
|
862
959
|
onSlotClick?: EventCalendarProps["onSlotClick"];
|
|
863
|
-
|
|
960
|
+
renderEventTrigger: (
|
|
961
|
+
event: NormalizedEvent,
|
|
962
|
+
className: string,
|
|
963
|
+
children: ReactNode,
|
|
964
|
+
options?: { resize?: "ns"; variant: EventCalendarEventVariant },
|
|
965
|
+
) => ReactNode;
|
|
864
966
|
}) {
|
|
865
967
|
const days = filterWeekendDays(agendaDays(date, AGENDA_LENGTH), showWeekends);
|
|
866
968
|
|
|
@@ -899,24 +1001,24 @@ function AgendaList({
|
|
|
899
1001
|
<p className="pt-2 text-xs text-muted-foreground">No events</p>
|
|
900
1002
|
) : (
|
|
901
1003
|
items.map((event) => (
|
|
902
|
-
<
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
</
|
|
1004
|
+
<div key={occurrenceKey(event)} data-scheduler-day={isoDay(day)}>
|
|
1005
|
+
{renderEventTrigger(
|
|
1006
|
+
event,
|
|
1007
|
+
"flex w-full min-w-0 items-start gap-2 rounded-md px-2 py-1.5 text-left hover:bg-muted/40",
|
|
1008
|
+
<>
|
|
1009
|
+
<span className="mt-1.5 size-2 shrink-0 rounded-full" style={eventColorStyle(event.color, "dot")} />
|
|
1010
|
+
<span className="min-w-0">
|
|
1011
|
+
<span className="block truncate text-sm font-semibold text-foreground">{event.title}</span>
|
|
1012
|
+
<span className="text-[11px] text-muted-foreground">
|
|
1013
|
+
{event.allDay || isMonthBar(event)
|
|
1014
|
+
? "All day"
|
|
1015
|
+
: `${formatTime(event.start, locale, hour12)} – ${formatTime(event.end, locale, hour12)}`}
|
|
1016
|
+
</span>
|
|
1017
|
+
</span>
|
|
1018
|
+
</>,
|
|
1019
|
+
{ variant: "agenda" },
|
|
1020
|
+
)}
|
|
1021
|
+
</div>
|
|
920
1022
|
))
|
|
921
1023
|
)}
|
|
922
1024
|
</div>
|
|
@@ -48,6 +48,11 @@ export type EventTimelineProps = {
|
|
|
48
48
|
onEventChange?: (event: SchedulerEvent, next: Partial<SchedulerEvent>) => void;
|
|
49
49
|
onEventCreate?: (event: SchedulerEvent) => void;
|
|
50
50
|
onEventDelete?: (event: SchedulerEvent) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Built-in create/edit dialog. Defaults to true.
|
|
53
|
+
* Set false when the host owns create/edit.
|
|
54
|
+
*/
|
|
55
|
+
showEventEditor?: boolean;
|
|
51
56
|
className?: string;
|
|
52
57
|
};
|
|
53
58
|
|
|
@@ -103,6 +108,7 @@ export function EventTimeline({
|
|
|
103
108
|
onEventChange,
|
|
104
109
|
onEventCreate,
|
|
105
110
|
onEventDelete,
|
|
111
|
+
showEventEditor = true,
|
|
106
112
|
className,
|
|
107
113
|
}: EventTimelineProps) {
|
|
108
114
|
const [scale, setScale] = useControllableState<TimelineScale>({
|
|
@@ -153,6 +159,7 @@ export function EventTimeline({
|
|
|
153
159
|
function openEvent(event: NormalizedEvent) {
|
|
154
160
|
const source = sourceEvent(events, event.id);
|
|
155
161
|
if (source) onEventClick?.(source);
|
|
162
|
+
if (!showEventEditor) return;
|
|
156
163
|
setDraft(source ? draftFromSource(source) : {
|
|
157
164
|
id: event.id,
|
|
158
165
|
title: event.title,
|
|
@@ -328,30 +335,32 @@ export function EventTimeline({
|
|
|
328
335
|
onToggle={toggleResource}
|
|
329
336
|
/>
|
|
330
337
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
338
|
+
{showEventEditor ? (
|
|
339
|
+
<EventEditor
|
|
340
|
+
open={draft != null}
|
|
341
|
+
onOpenChange={(open) => {
|
|
342
|
+
if (!open) setDraft(null);
|
|
343
|
+
}}
|
|
344
|
+
draft={draft}
|
|
345
|
+
resources={resources}
|
|
346
|
+
readOnly={editorLocked}
|
|
347
|
+
onSave={(event) => {
|
|
348
|
+
if (event.id && sourceEvent(events, event.id)) {
|
|
349
|
+
onEventChange?.(sourceEvent(events, event.id)!, event);
|
|
350
|
+
} else {
|
|
351
|
+
onEventCreate?.(event);
|
|
352
|
+
}
|
|
353
|
+
}}
|
|
354
|
+
onDelete={
|
|
355
|
+
onEventDelete
|
|
356
|
+
? (id) => {
|
|
357
|
+
const source = sourceEvent(events, id);
|
|
358
|
+
if (source) onEventDelete(source);
|
|
359
|
+
}
|
|
360
|
+
: undefined
|
|
344
361
|
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
onEventDelete
|
|
348
|
-
? (id) => {
|
|
349
|
-
const source = sourceEvent(events, id);
|
|
350
|
-
if (source) onEventDelete(source);
|
|
351
|
-
}
|
|
352
|
-
: undefined
|
|
353
|
-
}
|
|
354
|
-
/>
|
|
362
|
+
/>
|
|
363
|
+
) : null}
|
|
355
364
|
</SchedulerShell>
|
|
356
365
|
);
|
|
357
366
|
}
|
|
@@ -36,6 +36,16 @@ export const TIMELINE_SCALE_LABEL: Record<TimelineScale, string> = {
|
|
|
36
36
|
years: "Years",
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
export type SchedulerToolbarProps = {
|
|
40
|
+
title: ReactNode;
|
|
41
|
+
onPrev: () => void;
|
|
42
|
+
onNext: () => void;
|
|
43
|
+
onToday: () => void;
|
|
44
|
+
menuLabel: string;
|
|
45
|
+
menu: ReactNode;
|
|
46
|
+
trailing?: ReactNode;
|
|
47
|
+
};
|
|
48
|
+
|
|
39
49
|
export function SchedulerToolbar({
|
|
40
50
|
title,
|
|
41
51
|
onPrev,
|
|
@@ -44,15 +54,7 @@ export function SchedulerToolbar({
|
|
|
44
54
|
menuLabel,
|
|
45
55
|
menu,
|
|
46
56
|
trailing,
|
|
47
|
-
}: {
|
|
48
|
-
title: string;
|
|
49
|
-
onPrev: () => void;
|
|
50
|
-
onNext: () => void;
|
|
51
|
-
onToday: () => void;
|
|
52
|
-
menuLabel: string;
|
|
53
|
-
menu: ReactNode;
|
|
54
|
-
trailing?: ReactNode;
|
|
55
|
-
}) {
|
|
57
|
+
}: SchedulerToolbarProps) {
|
|
56
58
|
return (
|
|
57
59
|
<div
|
|
58
60
|
data-slot="scheduler-toolbar"
|
|
@@ -152,6 +152,75 @@ describe("EventCalendar", () => {
|
|
|
152
152
|
await user.click(screen.getByRole("button", { name: "Save" }));
|
|
153
153
|
expect(onEventCreate).toHaveBeenCalledWith(expect.objectContaining({ title: "Focus time" }));
|
|
154
154
|
});
|
|
155
|
+
|
|
156
|
+
it("skips the built-in editor when showEventEditor is false", async () => {
|
|
157
|
+
const user = userEvent.setup();
|
|
158
|
+
const onEventClick = vi.fn();
|
|
159
|
+
const onSlotClick = vi.fn();
|
|
160
|
+
render(
|
|
161
|
+
<EventCalendar
|
|
162
|
+
defaultDate={new Date(2026, 7, 15)}
|
|
163
|
+
events={events}
|
|
164
|
+
resources={resources}
|
|
165
|
+
locale="en-US"
|
|
166
|
+
showEventEditor={false}
|
|
167
|
+
onEventClick={onEventClick}
|
|
168
|
+
onSlotClick={onSlotClick}
|
|
169
|
+
/>,
|
|
170
|
+
);
|
|
171
|
+
await user.click(screen.getByText("Morning Run"));
|
|
172
|
+
expect(onEventClick).toHaveBeenCalledWith(expect.objectContaining({ id: "run" }));
|
|
173
|
+
expect(screen.queryByRole("heading", { name: /event/i })).not.toBeInTheDocument();
|
|
174
|
+
|
|
175
|
+
await user.click(screen.getByRole("button", { name: "15" }));
|
|
176
|
+
expect(onSlotClick).toHaveBeenCalled();
|
|
177
|
+
expect(screen.queryByRole("heading", { name: "New event" })).not.toBeInTheDocument();
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
it("renders custom event chips and toolbar", async () => {
|
|
181
|
+
const user = userEvent.setup();
|
|
182
|
+
const onDateChange = vi.fn();
|
|
183
|
+
render(
|
|
184
|
+
<EventCalendar
|
|
185
|
+
defaultDate={new Date(2026, 7, 15)}
|
|
186
|
+
events={events}
|
|
187
|
+
resources={resources}
|
|
188
|
+
locale="en-US"
|
|
189
|
+
showEventEditor={false}
|
|
190
|
+
showPreferences={false}
|
|
191
|
+
toolbarTrailing={<button type="button">Jump year</button>}
|
|
192
|
+
renderEvent={(event) => <span>★ {event.title}</span>}
|
|
193
|
+
renderToolbar={({ title, onToday }) => (
|
|
194
|
+
<div>
|
|
195
|
+
<p>{title}</p>
|
|
196
|
+
<button type="button" onClick={onToday}>
|
|
197
|
+
Jump today
|
|
198
|
+
</button>
|
|
199
|
+
</div>
|
|
200
|
+
)}
|
|
201
|
+
onDateChange={onDateChange}
|
|
202
|
+
/>,
|
|
203
|
+
);
|
|
204
|
+
expect(screen.getByText("★ Morning Run")).toBeInTheDocument();
|
|
205
|
+
expect(screen.queryByRole("button", { name: "Preferences" })).not.toBeInTheDocument();
|
|
206
|
+
expect(screen.queryByRole("button", { name: "Jump year" })).not.toBeInTheDocument();
|
|
207
|
+
await user.click(screen.getByRole("button", { name: "Jump today" }));
|
|
208
|
+
expect(onDateChange).toHaveBeenCalled();
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
it("keeps toolbarTrailing on the default toolbar", () => {
|
|
212
|
+
render(
|
|
213
|
+
<EventCalendar
|
|
214
|
+
defaultDate={new Date(2026, 7, 15)}
|
|
215
|
+
events={events}
|
|
216
|
+
locale="en-US"
|
|
217
|
+
showPreferences={false}
|
|
218
|
+
toolbarTrailing={<button type="button">Jump year</button>}
|
|
219
|
+
/>,
|
|
220
|
+
);
|
|
221
|
+
expect(screen.getByRole("button", { name: "Jump year" })).toBeInTheDocument();
|
|
222
|
+
expect(screen.getByRole("heading", { name: /August 2026/i })).toBeInTheDocument();
|
|
223
|
+
});
|
|
155
224
|
});
|
|
156
225
|
|
|
157
226
|
describe("EventTimeline", () => {
|
|
@@ -191,4 +260,21 @@ describe("EventTimeline", () => {
|
|
|
191
260
|
expect(screen.getByText("API V3 Development")).toBeInTheDocument();
|
|
192
261
|
expect(screen.getByText("Mobile App UI/UX")).toBeInTheDocument();
|
|
193
262
|
});
|
|
263
|
+
|
|
264
|
+
it("skips the built-in editor when showEventEditor is false", async () => {
|
|
265
|
+
const user = userEvent.setup();
|
|
266
|
+
const onEventClick = vi.fn();
|
|
267
|
+
render(
|
|
268
|
+
<EventTimeline
|
|
269
|
+
defaultDate={new Date(2026, 7, 1)}
|
|
270
|
+
events={timelineEvents}
|
|
271
|
+
resources={timelineResources}
|
|
272
|
+
showEventEditor={false}
|
|
273
|
+
onEventClick={onEventClick}
|
|
274
|
+
/>,
|
|
275
|
+
);
|
|
276
|
+
await user.click(screen.getByText("API V3 Development"));
|
|
277
|
+
expect(onEventClick).toHaveBeenCalledWith(expect.objectContaining({ id: "api" }));
|
|
278
|
+
expect(screen.queryByRole("heading", { name: /event/i })).not.toBeInTheDocument();
|
|
279
|
+
});
|
|
194
280
|
});
|
package/src/index.test.ts
CHANGED
|
@@ -5,7 +5,9 @@ import {
|
|
|
5
5
|
Button,
|
|
6
6
|
ChartContainer,
|
|
7
7
|
ChartDataGrid,
|
|
8
|
+
EventCalendar,
|
|
8
9
|
MapChart,
|
|
10
|
+
SchedulerToolbar,
|
|
9
11
|
mercator,
|
|
10
12
|
} from "./index";
|
|
11
13
|
|
|
@@ -17,6 +19,8 @@ describe("@spatika/react public exports", () => {
|
|
|
17
19
|
expect(ChartDataGrid).toBeTypeOf("function");
|
|
18
20
|
expect(MapChart).toBeTypeOf("function");
|
|
19
21
|
expect(BarChart3D).toBeTypeOf("function");
|
|
22
|
+
expect(EventCalendar).toBeTypeOf("function");
|
|
23
|
+
expect(SchedulerToolbar).toBeTypeOf("function");
|
|
20
24
|
expect(mercator([0, 0])[0]).toBeCloseTo(0.5);
|
|
21
25
|
});
|
|
22
26
|
});
|
package/src/index.ts
CHANGED
|
@@ -486,6 +486,9 @@ export {
|
|
|
486
486
|
export {
|
|
487
487
|
EventCalendar,
|
|
488
488
|
type EventCalendarProps,
|
|
489
|
+
type EventCalendarEventVariant,
|
|
490
|
+
type EventCalendarEventRenderContext,
|
|
491
|
+
type EventCalendarToolbarContext,
|
|
489
492
|
} from "./composites/EventCalendar";
|
|
490
493
|
export {
|
|
491
494
|
EventTimeline,
|
|
@@ -495,12 +498,19 @@ export {
|
|
|
495
498
|
EventEditor,
|
|
496
499
|
type EventEditorDraft,
|
|
497
500
|
} from "./composites/EventEditor";
|
|
501
|
+
export {
|
|
502
|
+
SchedulerToolbar,
|
|
503
|
+
SchedulerPreferencesMenu,
|
|
504
|
+
CALENDAR_VIEW_LABEL,
|
|
505
|
+
type SchedulerToolbarProps,
|
|
506
|
+
} from "./composites/scheduler-ui";
|
|
498
507
|
export {
|
|
499
508
|
DEFAULT_SCHEDULER_PREFERENCES,
|
|
500
509
|
SCHEDULER_COLOR_TONES,
|
|
501
510
|
} from "./lib/scheduler";
|
|
502
511
|
export type {
|
|
503
512
|
CalendarView,
|
|
513
|
+
NormalizedEvent,
|
|
504
514
|
SchedulerColorTone,
|
|
505
515
|
SchedulerEvent,
|
|
506
516
|
SchedulerPreferences,
|
|
@@ -65,6 +65,19 @@ describe("scheduler dates", () => {
|
|
|
65
65
|
expect(occupiesDay(birthday, new Date(2026, 7, 4))).toBe(true);
|
|
66
66
|
expect(occupiesDay(birthday, new Date(2026, 7, 5))).toBe(false);
|
|
67
67
|
});
|
|
68
|
+
|
|
69
|
+
it("preserves host data on normalized events", () => {
|
|
70
|
+
const [event] = normalizeEvents([
|
|
71
|
+
{
|
|
72
|
+
id: "run",
|
|
73
|
+
title: "Morning Run",
|
|
74
|
+
start: "2026-08-03T07:00:00",
|
|
75
|
+
end: "2026-08-03T07:45:00",
|
|
76
|
+
data: { kind: "CATCHUP" },
|
|
77
|
+
},
|
|
78
|
+
]);
|
|
79
|
+
expect(event.data).toEqual({ kind: "CATCHUP" });
|
|
80
|
+
});
|
|
68
81
|
});
|
|
69
82
|
|
|
70
83
|
describe("scheduler layout", () => {
|
package/src/lib/scheduler.ts
CHANGED
|
@@ -33,6 +33,8 @@ export type SchedulerEvent = {
|
|
|
33
33
|
readOnly?: boolean;
|
|
34
34
|
draggable?: boolean;
|
|
35
35
|
resizable?: boolean;
|
|
36
|
+
/** Opaque host payload. The kit never inspects it. */
|
|
37
|
+
data?: unknown;
|
|
36
38
|
};
|
|
37
39
|
|
|
38
40
|
export type SchedulerResource = {
|
|
@@ -74,6 +76,8 @@ export type NormalizedEvent = {
|
|
|
74
76
|
draggable?: boolean;
|
|
75
77
|
resizable?: boolean;
|
|
76
78
|
occurrenceStart?: Date;
|
|
79
|
+
/** Opaque host payload. The kit never inspects it. */
|
|
80
|
+
data?: unknown;
|
|
77
81
|
};
|
|
78
82
|
|
|
79
83
|
export const SCHEDULER_COLOR_VARS: Record<SchedulerColorTone, string> = {
|
|
@@ -335,6 +339,7 @@ export function normalizeEvents(
|
|
|
335
339
|
readOnly: event.readOnly,
|
|
336
340
|
draggable: event.draggable,
|
|
337
341
|
resizable: event.resizable,
|
|
342
|
+
data: event.data,
|
|
338
343
|
};
|
|
339
344
|
})
|
|
340
345
|
.sort((a, b) => a.start.getTime() - b.start.getTime() || a.title.localeCompare(b.title));
|