calendarkit-pro 1.2.0 → 1.2.1

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/dist/index.js CHANGED
@@ -1,46 +1,64 @@
1
- 'use strict';
1
+ "use client";
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
30
 
3
- var React15 = require('react');
4
- var core = require('@dnd-kit/core');
5
- var modifiers = require('@dnd-kit/modifiers');
6
- var framerMotion = require('framer-motion');
7
- var dateFns = require('date-fns');
8
- var classVarianceAuthority = require('class-variance-authority');
9
- var clsx = require('clsx');
10
- var tailwindMerge = require('tailwind-merge');
11
- var lucideReact = require('lucide-react');
12
- var dateFnsTz = require('date-fns-tz');
13
- var utilities = require('@dnd-kit/utilities');
14
- var rrule = require('rrule');
31
+ // src/index.tsx
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
+ Scheduler: () => Scheduler,
35
+ cn: () => cn
36
+ });
37
+ module.exports = __toCommonJS(index_exports);
38
+ var import_react19 = __toESM(require("react"));
39
+ var import_core3 = require("@dnd-kit/core");
40
+ var import_modifiers = require("@dnd-kit/modifiers");
41
+ var import_framer_motion4 = require("framer-motion");
15
42
 
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n.default = e;
31
- return Object.freeze(n);
32
- }
43
+ // src/components/CalendarHeader.tsx
44
+ var import_react = __toESM(require("react"));
45
+ var import_date_fns = require("date-fns");
33
46
 
34
- var React15__namespace = /*#__PURE__*/_interopNamespace(React15);
47
+ // src/components/ui/button.tsx
48
+ var React = __toESM(require("react"));
49
+ var import_class_variance_authority = require("class-variance-authority");
35
50
 
51
+ // src/utils.ts
52
+ var import_clsx = require("clsx");
53
+ var import_tailwind_merge = require("tailwind-merge");
36
54
  function cn(...inputs) {
37
- return tailwindMerge.twMerge(clsx.clsx(inputs));
55
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
38
56
  }
39
57
  var isEventDragDisabled = (event) => event?.draggable === false;
40
58
  var isEventResizeDisabled = (event) => event?.resizable === false || event?.resizable === void 0 && isEventDragDisabled(event);
41
59
 
42
60
  // src/components/ui/button.tsx
43
- var buttonVariants = classVarianceAuthority.cva(
61
+ var buttonVariants = (0, import_class_variance_authority.cva)(
44
62
  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
45
63
  {
46
64
  variants: {
@@ -65,10 +83,10 @@ var buttonVariants = classVarianceAuthority.cva(
65
83
  }
66
84
  }
67
85
  );
68
- var Button = React15__namespace.forwardRef(
69
- ({ className, variant, size, asChild = false, ...props }, ref) => {
86
+ var Button = React.forwardRef(
87
+ ({ className, variant, size, ...props }, ref) => {
70
88
  const Comp = "button";
71
- return /* @__PURE__ */ React15__namespace.createElement(
89
+ return /* @__PURE__ */ React.createElement(
72
90
  Comp,
73
91
  {
74
92
  className: cn(buttonVariants({ variant, size, className })),
@@ -79,6 +97,9 @@ var Button = React15__namespace.forwardRef(
79
97
  }
80
98
  );
81
99
  Button.displayName = "Button";
100
+
101
+ // src/components/CalendarHeader.tsx
102
+ var import_lucide_react = require("lucide-react");
82
103
  var CalendarHeader = ({
83
104
  currentDate,
84
105
  onPrev,
@@ -96,12 +117,12 @@ var CalendarHeader = ({
96
117
  locale
97
118
  }) => {
98
119
  const viewConfig = [
99
- { key: "month", icon: lucideReact.CalendarDays },
100
- { key: "week", icon: lucideReact.CalendarRange },
101
- { key: "day", icon: lucideReact.Calendar },
102
- { key: "agenda", icon: lucideReact.ListTodo }
120
+ { key: "month", icon: import_lucide_react.CalendarDays },
121
+ { key: "week", icon: import_lucide_react.CalendarRange },
122
+ { key: "day", icon: import_lucide_react.Calendar },
123
+ { key: "agenda", icon: import_lucide_react.ListTodo }
103
124
  ];
104
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col md:flex-row items-center justify-between px-3 md:px-5 py-3 border-b-[0px] border-border/50 bg-gradient-to-r from-background via-background to-muted/20 gap-3 md:gap-0 min-h-[64px]" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 w-full md:w-auto justify-between md:justify-start" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 md:gap-3" }, /* @__PURE__ */ React15__namespace.default.createElement(
125
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "flex flex-col md:flex-row items-center justify-between px-3 md:px-5 py-3 border-b-[0px] border-border/50 bg-gradient-to-r from-background via-background to-muted/20 gap-3 md:gap-0 min-h-[64px]" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center gap-2 w-full md:w-auto justify-between md:justify-start" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center gap-2 md:gap-3" }, /* @__PURE__ */ import_react.default.createElement(
105
126
  Button,
106
127
  {
107
128
  variant: "ghost",
@@ -109,8 +130,8 @@ var CalendarHeader = ({
109
130
  className: "text-muted-foreground hover:text-foreground hover:bg-accent/80 rounded-xl h-10 w-10 hidden md:inline-flex transition-all duration-200",
110
131
  onClick: onMenuClick
111
132
  },
112
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Menu, { className: "h-5 w-5" })
113
- ), /* @__PURE__ */ React15__namespace.default.createElement(
133
+ /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Menu, { className: "h-5 w-5" })
134
+ ), /* @__PURE__ */ import_react.default.createElement(
114
135
  Button,
115
136
  {
116
137
  variant: "outline",
@@ -118,7 +139,7 @@ var CalendarHeader = ({
118
139
  className: "h-9 px-5 rounded-xl text-sm font-medium hidden sm:inline-flex border-[0.5px] border-border/60 hover:border-primary/40 hover:bg-primary/5 hover:text-primary transition-all duration-200"
119
140
  },
120
141
  translations.today
121
- ), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center bg-muted/40 rounded-xl p-0.5" }, /* @__PURE__ */ React15__namespace.default.createElement(
142
+ ), /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center bg-muted/40 rounded-xl p-0.5" }, /* @__PURE__ */ import_react.default.createElement(
122
143
  Button,
123
144
  {
124
145
  variant: "ghost",
@@ -126,8 +147,8 @@ var CalendarHeader = ({
126
147
  onClick: onPrev,
127
148
  className: "rounded-lg h-8 w-8 hover:bg-background/80 transition-all duration-200"
128
149
  },
129
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4 text-muted-foreground" })
130
- ), /* @__PURE__ */ React15__namespace.default.createElement(
150
+ /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronLeft, { className: "h-4 w-4 text-muted-foreground" })
151
+ ), /* @__PURE__ */ import_react.default.createElement(
131
152
  Button,
132
153
  {
133
154
  variant: "ghost",
@@ -135,8 +156,8 @@ var CalendarHeader = ({
135
156
  onClick: onNext,
136
157
  className: "rounded-lg h-8 w-8 hover:bg-background/80 transition-all duration-200"
137
158
  },
138
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronRight, { className: "h-4 w-4 text-muted-foreground" })
139
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "ml-2 md:ml-4" }, /* @__PURE__ */ React15__namespace.default.createElement("h2", { className: "text-lg md:text-xl font-semibold text-foreground whitespace-nowrap capitalize tracking-tight" }, dateFns.format(currentDate, "MMMM yyyy", { locale }))))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 md:gap-3 w-full md:w-auto justify-end" }, onLanguageChange && language && /* @__PURE__ */ React15__namespace.default.createElement(
159
+ /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, { className: "h-4 w-4 text-muted-foreground" })
160
+ )), /* @__PURE__ */ import_react.default.createElement("div", { className: "ml-2 md:ml-4" }, /* @__PURE__ */ import_react.default.createElement("h2", { className: "text-lg md:text-xl font-semibold text-foreground whitespace-nowrap capitalize tracking-tight" }, (0, import_date_fns.format)(currentDate, "MMMM yyyy", { locale }))))), /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center gap-2 md:gap-3 w-full md:w-auto justify-end" }, onLanguageChange && language && /* @__PURE__ */ import_react.default.createElement(
140
161
  Button,
141
162
  {
142
163
  variant: "ghost",
@@ -145,7 +166,7 @@ var CalendarHeader = ({
145
166
  className: "h-9 px-3 rounded-xl text-xs font-semibold text-muted-foreground hover:text-foreground hover:bg-accent/80 transition-all duration-200 uppercase tracking-wider"
146
167
  },
147
168
  language
148
- ), onThemeToggle && /* @__PURE__ */ React15__namespace.default.createElement(
169
+ ), onThemeToggle && /* @__PURE__ */ import_react.default.createElement(
149
170
  Button,
150
171
  {
151
172
  variant: "ghost",
@@ -153,8 +174,8 @@ var CalendarHeader = ({
153
174
  className: "rounded-xl h-9 w-9 hover:bg-accent/80 transition-all duration-200",
154
175
  onClick: onThemeToggle
155
176
  },
156
- isDarkMode ? /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Sun, { className: "h-4 w-4 text-amber-500" }) : /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Moon, { className: "h-4 w-4 text-muted-foreground" })
157
- ), !hideViewSwitcher && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center bg-muted/50 backdrop-blur-sm rounded-xl p-1" }, viewConfig.map(({ key, icon: Icon }) => /* @__PURE__ */ React15__namespace.default.createElement(
177
+ isDarkMode ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Sun, { className: "h-4 w-4 text-amber-500" }) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Moon, { className: "h-4 w-4 text-muted-foreground" })
178
+ ), !hideViewSwitcher && /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center bg-muted/50 backdrop-blur-sm rounded-xl p-1" }, viewConfig.map(({ key, icon: Icon }) => /* @__PURE__ */ import_react.default.createElement(
158
179
  Button,
159
180
  {
160
181
  key,
@@ -166,24 +187,35 @@ var CalendarHeader = ({
166
187
  view === key ? "bg-background shadow-sm text-foreground font-medium border-[0.5px] border-border/50" : "text-muted-foreground hover:text-foreground hover:bg-background/50"
167
188
  )
168
189
  },
169
- /* @__PURE__ */ React15__namespace.default.createElement(Icon, { className: "h-3.5 w-3.5" }),
170
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "hidden sm:inline" }, translations[key])
190
+ /* @__PURE__ */ import_react.default.createElement(Icon, { className: "h-3.5 w-3.5" }),
191
+ /* @__PURE__ */ import_react.default.createElement("span", { className: "hidden sm:inline" }, translations[key])
171
192
  )))));
172
193
  };
194
+
195
+ // src/components/Sidebar.tsx
196
+ var import_react3 = __toESM(require("react"));
197
+ var import_lucide_react3 = require("lucide-react");
198
+
199
+ // src/components/MiniCalendar.tsx
200
+ var import_react2 = __toESM(require("react"));
201
+ var import_date_fns3 = require("date-fns");
202
+
203
+ // src/lib/date.ts
204
+ var import_date_fns2 = require("date-fns");
173
205
  var getMonthGrid = (date, weekStartOn = 0) => {
174
- const monthStart = dateFns.startOfMonth(date);
175
- const monthEnd = dateFns.endOfMonth(monthStart);
176
- const startDate = dateFns.startOfWeek(monthStart, { weekStartsOn: weekStartOn });
177
- const endDate = dateFns.endOfWeek(monthEnd, { weekStartsOn: weekStartOn });
178
- return dateFns.eachDayOfInterval({
179
- start: startDate,
180
- end: endDate
206
+ const monthStart = (0, import_date_fns2.startOfMonth)(date);
207
+ return (0, import_date_fns2.eachDayOfInterval)({
208
+ start: (0, import_date_fns2.startOfWeek)(monthStart, { weekStartsOn: weekStartOn }),
209
+ end: (0, import_date_fns2.endOfWeek)((0, import_date_fns2.endOfMonth)(monthStart), { weekStartsOn: weekStartOn })
181
210
  });
182
211
  };
183
212
  var uses24HourClock = (locale) => {
184
213
  if (!locale) return false;
185
- return !/[ap]\.?m/i.test(dateFns.format(new Date(2e3, 0, 1, 13, 0), "p", { locale }));
214
+ return !/[ap]\.?m/i.test((0, import_date_fns2.format)(new Date(2e3, 0, 1, 13, 0), "p", { locale }));
186
215
  };
216
+
217
+ // src/components/MiniCalendar.tsx
218
+ var import_lucide_react2 = require("lucide-react");
187
219
  var MiniCalendar = ({
188
220
  currentDate,
189
221
  onDateChange,
@@ -191,12 +223,12 @@ var MiniCalendar = ({
191
223
  className,
192
224
  locale
193
225
  }) => {
194
- const [viewDate, setViewDate] = React15__namespace.default.useState(currentDate);
195
- React15__namespace.default.useEffect(() => {
226
+ const [viewDate, setViewDate] = import_react2.default.useState(currentDate);
227
+ import_react2.default.useEffect(() => {
196
228
  setViewDate(currentDate);
197
229
  }, [currentDate]);
198
230
  const weekStartsOn = locale?.options?.weekStartsOn ?? 0;
199
- const days = React15__namespace.default.useMemo(
231
+ const days = import_react2.default.useMemo(
200
232
  () => getMonthGrid(viewDate, weekStartsOn),
201
233
  [viewDate, weekStartsOn]
202
234
  );
@@ -205,13 +237,13 @@ var MiniCalendar = ({
205
237
  return locale.localize.day(dayIndex, { width: "narrow" });
206
238
  }) : ["S", "M", "T", "W", "T", "F", "S"];
207
239
  const handlePrev = () => {
208
- const newDate = dateFns.subMonths(viewDate, 1);
240
+ const newDate = (0, import_date_fns3.subMonths)(viewDate, 1);
209
241
  setViewDate(newDate);
210
242
  onDateChange(newDate);
211
243
  if (onViewChange) onViewChange("month");
212
244
  };
213
245
  const handleNext = () => {
214
- const newDate = dateFns.addMonths(viewDate, 1);
246
+ const newDate = (0, import_date_fns3.addMonths)(viewDate, 1);
215
247
  setViewDate(newDate);
216
248
  onDateChange(newDate);
217
249
  if (onViewChange) onViewChange("month");
@@ -220,7 +252,7 @@ var MiniCalendar = ({
220
252
  onDateChange(day);
221
253
  if (onViewChange) onViewChange("day");
222
254
  };
223
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn("px-4 w-[260px]", className) }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-semibold text-foreground capitalize" }, dateFns.format(viewDate, "MMMM yyyy", { locale })), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center bg-muted/40 rounded-lg p-0.5" }, /* @__PURE__ */ React15__namespace.default.createElement(
255
+ return /* @__PURE__ */ import_react2.default.createElement("div", { className: cn("px-4 w-[260px]", className) }, /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ import_react2.default.createElement("span", { className: "text-sm font-semibold text-foreground capitalize" }, (0, import_date_fns3.format)(viewDate, "MMMM yyyy", { locale })), /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex items-center bg-muted/40 rounded-lg p-0.5" }, /* @__PURE__ */ import_react2.default.createElement(
224
256
  Button,
225
257
  {
226
258
  variant: "ghost",
@@ -229,8 +261,8 @@ var MiniCalendar = ({
229
261
  onClick: handlePrev,
230
262
  "aria-label": "Previous month"
231
263
  },
232
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4" })
233
- ), /* @__PURE__ */ React15__namespace.default.createElement(
264
+ /* @__PURE__ */ import_react2.default.createElement(import_lucide_react2.ChevronLeft, { className: "h-4 w-4" })
265
+ ), /* @__PURE__ */ import_react2.default.createElement(
234
266
  Button,
235
267
  {
236
268
  variant: "ghost",
@@ -239,12 +271,12 @@ var MiniCalendar = ({
239
271
  onClick: handleNext,
240
272
  "aria-label": "Next month"
241
273
  },
242
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronRight, { className: "h-4 w-4" })
243
- ))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid grid-cols-7 gap-y-2 text-center mb-2" }, weekDays.map((day, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: `${day}-${i}`, className: "text-[10px] text-muted-foreground/70 font-semibold uppercase" }, day))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid grid-cols-7 gap-y-1 text-center" }, days.map((day) => {
244
- const isSelected = dateFns.isSameDay(day, currentDate);
245
- const isCurrentMonth = dateFns.isSameMonth(day, viewDate);
246
- const isTodayDate = dateFns.isToday(day);
247
- return /* @__PURE__ */ React15__namespace.default.createElement(
274
+ /* @__PURE__ */ import_react2.default.createElement(import_lucide_react2.ChevronRight, { className: "h-4 w-4" })
275
+ ))), /* @__PURE__ */ import_react2.default.createElement("div", { className: "grid grid-cols-7 gap-y-2 text-center mb-2" }, weekDays.map((day, i) => /* @__PURE__ */ import_react2.default.createElement("div", { key: `${day}-${i}`, className: "text-[10px] text-muted-foreground/70 font-semibold uppercase" }, day))), /* @__PURE__ */ import_react2.default.createElement("div", { className: "grid grid-cols-7 gap-y-1 text-center" }, days.map((day) => {
276
+ const isSelected = (0, import_date_fns3.isSameDay)(day, currentDate);
277
+ const isCurrentMonth = (0, import_date_fns3.isSameMonth)(day, viewDate);
278
+ const isTodayDate = (0, import_date_fns3.isToday)(day);
279
+ return /* @__PURE__ */ import_react2.default.createElement(
248
280
  "button",
249
281
  {
250
282
  key: day.toISOString(),
@@ -257,10 +289,14 @@ var MiniCalendar = ({
257
289
  !isSelected && isTodayDate && "bg-primary/10 text-primary ring-1 ring-primary/30"
258
290
  )
259
291
  },
260
- dateFns.format(day, "d")
292
+ (0, import_date_fns3.format)(day, "d")
261
293
  );
262
294
  })));
263
295
  };
296
+
297
+ // src/components/Sidebar.tsx
298
+ var import_date_fns_tz = require("date-fns-tz");
299
+ var import_date_fns4 = require("date-fns");
264
300
  var Sidebar = ({
265
301
  currentDate,
266
302
  onDateChange,
@@ -275,11 +311,11 @@ var Sidebar = ({
275
311
  translations,
276
312
  locale
277
313
  }) => {
278
- const [calendarsOpen, setCalendarsOpen] = React15.useState(true);
279
- const [timezoneOpen, setTimezoneOpen] = React15.useState(false);
280
- const [now, setNow] = React15.useState(null);
281
- const [hasMounted, setHasMounted] = React15.useState(false);
282
- React15.useEffect(() => {
314
+ const [calendarsOpen, setCalendarsOpen] = (0, import_react3.useState)(true);
315
+ const [timezoneOpen, setTimezoneOpen] = (0, import_react3.useState)(false);
316
+ const [now, setNow] = (0, import_react3.useState)(null);
317
+ const [hasMounted, setHasMounted] = (0, import_react3.useState)(false);
318
+ (0, import_react3.useEffect)(() => {
283
319
  setHasMounted(true);
284
320
  setNow(/* @__PURE__ */ new Date());
285
321
  const timer = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
@@ -295,7 +331,7 @@ var Sidebar = ({
295
331
  if (!tz || !now) return "LOC";
296
332
  try {
297
333
  return new Intl.DateTimeFormat("en-US", { timeZone: tz, timeZoneName: "short" }).formatToParts(now).find((part) => part.type === "timeZoneName")?.value || "";
298
- } catch (e) {
334
+ } catch {
299
335
  return "";
300
336
  }
301
337
  };
@@ -316,56 +352,56 @@ var Sidebar = ({
316
352
  ];
317
353
  const formatTzLabel = (tz, showTime = true) => {
318
354
  if (!hasMounted || !now || !showTime) {
319
- return /* @__PURE__ */ React15__namespace.default.createElement("span", null, tz.label);
355
+ return /* @__PURE__ */ import_react3.default.createElement("span", null, tz.label);
320
356
  }
321
357
  let time = "";
322
358
  let acronym = tz.acronym;
323
359
  try {
324
360
  if (!tz.value) {
325
- time = dateFns.format(now, "HH:mm");
361
+ time = (0, import_date_fns4.format)(now, "HH:mm");
326
362
  try {
327
363
  acronym = new Intl.DateTimeFormat("en-US", { timeZoneName: "short" }).formatToParts(now).find((part) => part.type === "timeZoneName")?.value || "LOC";
328
- } catch (e) {
364
+ } catch {
329
365
  }
330
366
  } else {
331
- const zDate = dateFnsTz.toZonedTime(now, tz.value);
332
- time = dateFns.format(zDate, "HH:mm");
367
+ const zDate = (0, import_date_fns_tz.toZonedTime)(now, tz.value);
368
+ time = (0, import_date_fns4.format)(zDate, "HH:mm");
333
369
  const dynAcronym = getAcronym(tz.value);
334
370
  if (dynAcronym && !dynAcronym.includes("GMT") && !dynAcronym.includes("Time")) {
335
371
  acronym = dynAcronym;
336
372
  }
337
373
  }
338
- } catch (e) {
339
- return /* @__PURE__ */ React15__namespace.default.createElement("span", null, tz.label);
374
+ } catch {
375
+ return /* @__PURE__ */ import_react3.default.createElement("span", null, tz.label);
340
376
  }
341
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex justify-between w-full" }, /* @__PURE__ */ React15__namespace.default.createElement("span", null, tz.label), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-muted-foreground ml-2 tabular-nums" }, time, " ", /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs opacity-75" }, "(", acronym, ")")));
377
+ return /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex justify-between w-full" }, /* @__PURE__ */ import_react3.default.createElement("span", null, tz.label), /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-muted-foreground ml-2 tabular-nums" }, time, " ", /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-xs opacity-75" }, "(", acronym, ")")));
342
378
  };
343
379
  const selectedTzObj = timezones.find((t) => t.value === (timezone || ""));
344
380
  const selectedTimezoneLabel = selectedTzObj ? formatTzLabel(selectedTzObj) : translations?.localTime || "Local Time";
345
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn("flex flex-col w-[260px] overflow-x-hidden h-full bg-gradient-to-b scrollbar-hide from-background via-background to-muted/10 pt-4 pb-4 overflow-y-auto hidden lg:flex", className) }, !readOnly && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-4 mb-6" }, /* @__PURE__ */ React15__namespace.default.createElement(
381
+ return /* @__PURE__ */ import_react3.default.createElement("div", { className: cn("flex flex-col w-[260px] overflow-x-hidden h-full bg-gradient-to-b scrollbar-hide from-background via-background to-muted/10 pt-4 pb-4 overflow-y-auto hidden lg:flex", className) }, !readOnly && /* @__PURE__ */ import_react3.default.createElement("div", { className: "px-4 mb-6" }, /* @__PURE__ */ import_react3.default.createElement(
346
382
  Button,
347
383
  {
348
384
  className: "w-full rounded-2xl shadow-lg bg-primary text-primary-foreground hover:bg-primary/90 h-12 gap-3 justify-center transition-all duration-300 hover:shadow-xl hover:shadow-primary/20 hover:scale-[1.02] active:scale-[0.98] font-semibold",
349
385
  onClick: onEventCreate
350
386
  },
351
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Plus, { className: "w-5 h-5" }),
352
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm" }, translations?.create || "Create")
353
- )), /* @__PURE__ */ React15__namespace.default.createElement(MiniCalendar, { currentDate, onDateChange, onViewChange, locale }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 px-4 space-y-5 mt-5" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3 border-[0px] border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement(
387
+ /* @__PURE__ */ import_react3.default.createElement(import_lucide_react3.Plus, { className: "w-5 h-5" }),
388
+ /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-sm" }, translations?.create || "Create")
389
+ )), /* @__PURE__ */ import_react3.default.createElement(MiniCalendar, { currentDate, onDateChange, onViewChange, locale }), /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex-1 px-4 space-y-5 mt-5" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3 border-[0px] border-border/30" }, /* @__PURE__ */ import_react3.default.createElement(
354
390
  "div",
355
391
  {
356
392
  className: "flex items-center justify-between cursor-pointer hover:bg-accent/50 p-2 -m-1 rounded-xl mb-2 transition-all duration-200",
357
393
  onClick: () => setCalendarsOpen(!calendarsOpen)
358
394
  },
359
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.calendars || "Calendars"),
360
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", calendarsOpen && "rotate-180") })
361
- ), calendarsOpen && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-1" }, displayCalendars.map((cal) => /* @__PURE__ */ React15__namespace.default.createElement(
395
+ /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.calendars || "Calendars"),
396
+ /* @__PURE__ */ import_react3.default.createElement(import_lucide_react3.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", calendarsOpen && "rotate-180") })
397
+ ), calendarsOpen && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-1" }, displayCalendars.map((cal) => /* @__PURE__ */ import_react3.default.createElement(
362
398
  "div",
363
399
  {
364
400
  key: cal.id,
365
401
  className: "flex items-center gap-3 py-2 px-2 hover:bg-accent/60 rounded-xl cursor-pointer group transition-all duration-200",
366
402
  onClick: () => onCalendarToggle?.(cal.id, !(cal.active ?? true))
367
403
  },
368
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative flex items-center justify-center" }, /* @__PURE__ */ React15__namespace.default.createElement(
404
+ /* @__PURE__ */ import_react3.default.createElement("div", { className: "relative flex items-center justify-center" }, /* @__PURE__ */ import_react3.default.createElement(
369
405
  "input",
370
406
  {
371
407
  type: "checkbox",
@@ -378,7 +414,7 @@ var Sidebar = ({
378
414
  style: { "--primary-color": cal.color },
379
415
  "data-cal-id": cal.id
380
416
  }
381
- ), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none opacity-0 peer-checked:opacity-100 transition-opacity" }, /* @__PURE__ */ React15__namespace.default.createElement("svg", { className: "w-3.5 h-3.5 text-white", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 3 }, /* @__PURE__ */ React15__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ React15__namespace.default.createElement("style", null, `
417
+ ), /* @__PURE__ */ import_react3.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none opacity-0 peer-checked:opacity-100 transition-opacity" }, /* @__PURE__ */ import_react3.default.createElement("svg", { className: "w-3.5 h-3.5 text-white", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 3 }, /* @__PURE__ */ import_react3.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ import_react3.default.createElement("style", null, `
382
418
  input[type="checkbox"][data-cal-id="${cal.id}"]:checked {
383
419
  background-color: ${cal.color} !important;
384
420
  border-color: ${cal.color} !important;
@@ -387,23 +423,23 @@ var Sidebar = ({
387
423
  --tw-ring-color: ${cal.color}40 !important;
388
424
  }
389
425
  `)),
390
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 flex-1 min-w-0" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm text-foreground/90 truncate font-medium" }, cal.label)),
391
- /* @__PURE__ */ React15__namespace.default.createElement(
426
+ /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex items-center gap-2 flex-1 min-w-0" }, /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-sm text-foreground/90 truncate font-medium" }, cal.label)),
427
+ /* @__PURE__ */ import_react3.default.createElement(
392
428
  "div",
393
429
  {
394
430
  className: "w-2 h-2 rounded-full opacity-60 group-hover:opacity-100 transition-opacity",
395
431
  style: { backgroundColor: cal.color }
396
432
  }
397
433
  )
398
- ))))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "mt-auto px-4 pt-5" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 mb-3" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-1.5 bg-primary/10 rounded-lg" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Globe, { className: "w-4 h-4 text-primary" })), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.timezone || "Timezone")), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React15__namespace.default.createElement(
434
+ ))))), /* @__PURE__ */ import_react3.default.createElement("div", { className: "mt-auto px-4 pt-5" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex items-center gap-2 mb-3" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "p-1.5 bg-primary/10 rounded-lg" }, /* @__PURE__ */ import_react3.default.createElement(import_lucide_react3.Globe, { className: "w-4 h-4 text-primary" })), /* @__PURE__ */ import_react3.default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.timezone || "Timezone")), /* @__PURE__ */ import_react3.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react3.default.createElement(
399
435
  "button",
400
436
  {
401
437
  onClick: () => setTimezoneOpen(!timezoneOpen),
402
438
  className: "w-full flex items-center justify-between bg-blue-200/40 hover:bg-blue-200/80 rounded-xl py-2.5 pl-4 pr-3 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary/50 transition-all duration-200 text-left"
403
439
  },
404
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 truncate mr-2 font-medium" }, selectedTimezoneLabel),
405
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", timezoneOpen && "rotate-180") })
406
- ), timezoneOpen && /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, null, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setTimezoneOpen(false) }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute bottom-full left-0 w-full mb-2 bg-background rounded-xl shadow-2xl z-50 max-h-[260px] overflow-y-auto p-1.5 animate-in fade-in zoom-in-95 duration-200 backdrop-blur-none" }, timezones.map((tz) => /* @__PURE__ */ React15__namespace.default.createElement(
440
+ /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex-1 truncate mr-2 font-medium" }, selectedTimezoneLabel),
441
+ /* @__PURE__ */ import_react3.default.createElement(import_lucide_react3.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", timezoneOpen && "rotate-180") })
442
+ ), timezoneOpen && /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setTimezoneOpen(false) }), /* @__PURE__ */ import_react3.default.createElement("div", { className: "absolute bottom-full left-0 w-full mb-2 bg-background rounded-xl shadow-2xl z-50 max-h-[260px] overflow-y-auto p-1.5 animate-in fade-in zoom-in-95 duration-200 backdrop-blur-none" }, timezones.map((tz) => /* @__PURE__ */ import_react3.default.createElement(
407
443
  "div",
408
444
  {
409
445
  key: tz.value,
@@ -419,16 +455,26 @@ var Sidebar = ({
419
455
  formatTzLabel(tz)
420
456
  ))))))));
421
457
  };
458
+
459
+ // src/views/MonthView.tsx
460
+ var import_react6 = __toESM(require("react"));
461
+ var import_date_fns5 = require("date-fns");
462
+ var import_date_fns_tz2 = require("date-fns-tz");
463
+
464
+ // src/components/dnd/DraggableEvent.tsx
465
+ var import_react4 = __toESM(require("react"));
466
+ var import_core = require("@dnd-kit/core");
467
+ var import_utilities = require("@dnd-kit/utilities");
422
468
  var DraggableEvent = ({ event, children, className, style: propStyle, ...props }) => {
423
469
  const dragDisabled = isEventDragDisabled(event);
424
- const { attributes, listeners, setNodeRef, transform, isDragging } = core.useDraggable({
470
+ const { attributes, listeners, setNodeRef, transform, isDragging } = (0, import_core.useDraggable)({
425
471
  id: event.id,
426
472
  data: { event },
427
473
  disabled: dragDisabled
428
474
  });
429
475
  const style = {
430
476
  ...propStyle,
431
- transform: utilities.CSS.Translate.toString(transform),
477
+ transform: import_utilities.CSS.Translate.toString(transform),
432
478
  zIndex: isDragging ? 100 : propStyle?.zIndex,
433
479
  // When dragging, we want the ORIGINAL element to be almost invisible (or fully invisible)
434
480
  // so that the DragOverlay (the "ghost") is the only thing the user focuses on.
@@ -438,7 +484,7 @@ var DraggableEvent = ({ event, children, className, style: propStyle, ...props }
438
484
  opacity: isDragging ? 0 : propStyle?.opacity
439
485
  // Hiding original element completely
440
486
  };
441
- return /* @__PURE__ */ React15__namespace.default.createElement(
487
+ return /* @__PURE__ */ import_react4.default.createElement(
442
488
  "div",
443
489
  {
444
490
  ref: setNodeRef,
@@ -451,15 +497,19 @@ var DraggableEvent = ({ event, children, className, style: propStyle, ...props }
451
497
  children
452
498
  );
453
499
  };
500
+
501
+ // src/components/dnd/DroppableCell.tsx
502
+ var import_react5 = __toESM(require("react"));
503
+ var import_core2 = require("@dnd-kit/core");
454
504
  var DroppableCell = ({ id, date, resourceId, children, className, style, onClick }) => {
455
- const { isOver, setNodeRef } = core.useDroppable({
505
+ const { isOver, setNodeRef } = (0, import_core2.useDroppable)({
456
506
  id,
457
507
  data: { date, resourceId }
458
508
  });
459
509
  const minutes = date.getMinutes();
460
510
  const quarterClass = minutes === 0 ? "hover:bg-blue-50/50 dark:hover:bg-blue-900/10" : minutes === 15 ? "hover:bg-blue-50/80 dark:hover:bg-blue-900/20" : minutes === 30 ? "hover:bg-blue-100/50 dark:hover:bg-blue-900/30" : "hover:bg-blue-100/80 dark:hover:bg-blue-900/40";
461
511
  const activeQuarterClass = minutes === 0 ? "bg-blue-50/50 dark:bg-blue-900/10 ring-2 ring-primary ring-inset" : minutes === 15 ? "bg-blue-50/80 dark:bg-blue-900/20 ring-2 ring-primary ring-inset" : minutes === 30 ? "bg-blue-100/50 dark:bg-blue-900/30 ring-2 ring-primary ring-inset" : "bg-blue-100/80 dark:bg-blue-900/40 ring-2 ring-primary ring-inset";
462
- return /* @__PURE__ */ React15__namespace.default.createElement(
512
+ return /* @__PURE__ */ import_react5.default.createElement(
463
513
  "div",
464
514
  {
465
515
  ref: setNodeRef,
@@ -476,7 +526,7 @@ var DroppableCell = ({ id, date, resourceId, children, className, style, onClick
476
526
  };
477
527
 
478
528
  // src/views/MonthView.tsx
479
- var EventItem = React15__namespace.default.memo(({ event, onEventClick }) => /* @__PURE__ */ React15__namespace.default.createElement(DraggableEvent, { event }, /* @__PURE__ */ React15__namespace.default.createElement(
529
+ var EventItem = import_react6.default.memo(({ event, onEventClick }) => /* @__PURE__ */ import_react6.default.createElement(DraggableEvent, { event }, /* @__PURE__ */ import_react6.default.createElement(
480
530
  "div",
481
531
  {
482
532
  className: cn(
@@ -494,7 +544,7 @@ var EventItem = React15__namespace.default.memo(({ event, onEventClick }) => /*
494
544
  onEventClick?.(event);
495
545
  }
496
546
  },
497
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "font-medium" }, event.title)
547
+ /* @__PURE__ */ import_react6.default.createElement("span", { className: "font-medium" }, event.title)
498
548
  )));
499
549
  EventItem.displayName = "EventItem";
500
550
  var MonthView = ({
@@ -506,23 +556,23 @@ var MonthView = ({
506
556
  locale
507
557
  }) => {
508
558
  const weekStartsOn = locale?.options?.weekStartsOn ?? 1;
509
- const days = React15.useMemo(
559
+ const days = (0, import_react6.useMemo)(
510
560
  () => getMonthGrid(currentDate, weekStartsOn),
511
561
  [currentDate, weekStartsOn]
512
562
  );
513
- const weekDays = React15.useMemo(() => {
514
- const start = dateFns.startOfWeek(currentDate, { weekStartsOn });
515
- const end = dateFns.endOfWeek(currentDate, { weekStartsOn });
516
- return dateFns.eachDayOfInterval({ start, end });
563
+ const weekDays = (0, import_react6.useMemo)(() => {
564
+ const start = (0, import_date_fns5.startOfWeek)(currentDate, { weekStartsOn });
565
+ const end = (0, import_date_fns5.endOfWeek)(currentDate, { weekStartsOn });
566
+ return (0, import_date_fns5.eachDayOfInterval)({ start, end });
517
567
  }, [currentDate, weekStartsOn]);
518
- const getZonedDate = React15.useCallback((date) => {
519
- return timezone ? dateFnsTz.toZonedTime(date, timezone) : date;
568
+ const getZonedDate = (0, import_react6.useCallback)((date) => {
569
+ return timezone ? (0, import_date_fns_tz2.toZonedTime)(date, timezone) : date;
520
570
  }, [timezone]);
521
- const eventsByDay = React15.useMemo(() => {
571
+ const eventsByDay = (0, import_react6.useMemo)(() => {
522
572
  const map = /* @__PURE__ */ new Map();
523
573
  events.forEach((event) => {
524
574
  const zonedStart = getZonedDate(event.start);
525
- const key = dateFns.format(zonedStart, "yyyy-MM-dd");
575
+ const key = (0, import_date_fns5.format)(zonedStart, "yyyy-MM-dd");
526
576
  if (!map.has(key)) {
527
577
  map.set(key, []);
528
578
  }
@@ -530,19 +580,19 @@ var MonthView = ({
530
580
  });
531
581
  return map;
532
582
  }, [events, getZonedDate]);
533
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full bg-background border-[0.5px] scrollbar-hide border-border/50 rounded-2xl overflow-hidden min-w-[800px] md:min-w-0 shadow-sm" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "overflow-y-auto flex-1 relative" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid grid-cols-7 border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/30 via-muted/40 to-muted/30 sticky top-0 z-20 backdrop-blur-sm" }, weekDays.map((day) => /* @__PURE__ */ React15__namespace.default.createElement(
583
+ return /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-col h-full bg-background border-[0.5px] scrollbar-hide border-border/50 rounded-2xl overflow-hidden min-w-[800px] md:min-w-0 shadow-sm" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "overflow-y-auto flex-1 relative" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "grid grid-cols-7 border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/30 via-muted/40 to-muted/30 sticky top-0 z-20 backdrop-blur-sm" }, weekDays.map((day) => /* @__PURE__ */ import_react6.default.createElement(
534
584
  "div",
535
585
  {
536
586
  key: day.toISOString(),
537
587
  className: "py-3 text-center text-xs font-semibold text-muted-foreground border-r-[0.5px] border-border/30 last:border-r-0 uppercase tracking-wider"
538
588
  },
539
- dateFns.format(day, "EEE", { locale })
540
- ))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid grid-cols-7", style: { gridAutoRows: "130px" } }, days.map((day) => {
541
- const dayKey = dateFns.format(day, "yyyy-MM-dd");
589
+ (0, import_date_fns5.format)(day, "EEE", { locale })
590
+ ))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "grid grid-cols-7", style: { gridAutoRows: "130px" } }, days.map((day) => {
591
+ const dayKey = (0, import_date_fns5.format)(day, "yyyy-MM-dd");
542
592
  const dayEvents = eventsByDay.get(dayKey) || [];
543
- const isCurrentMonth = dateFns.isSameMonth(day, currentDate);
593
+ const isCurrentMonth = (0, import_date_fns5.isSameMonth)(day, currentDate);
544
594
  const cellId = day.toISOString();
545
- return /* @__PURE__ */ React15__namespace.default.createElement(
595
+ return /* @__PURE__ */ import_react6.default.createElement(
546
596
  DroppableCell,
547
597
  {
548
598
  key: cellId,
@@ -551,18 +601,26 @@ var MonthView = ({
551
601
  className: cn(
552
602
  "h-[130px] p-2 border-b-[0.5px] border-r-[0.5px] border-border/30 last:border-r-0 relative transition-all duration-200 hover:bg-accent/5 flex flex-col gap-1.5 overflow-hidden group",
553
603
  !isCurrentMonth && "bg-muted/5 text-muted-foreground/60",
554
- dateFns.isToday(day) && "bg-primary/5 ring-1 ring-inset ring-primary/20"
604
+ (0, import_date_fns5.isToday)(day) && "bg-primary/5 ring-1 ring-inset ring-primary/20"
555
605
  ),
556
606
  onClick: () => onDateClick?.(day)
557
607
  },
558
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex justify-between items-start" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
608
+ /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex justify-between items-start" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: cn(
559
609
  "text-sm font-semibold w-7 h-7 flex items-center justify-center rounded-full transition-all duration-200",
560
- dateFns.isToday(day) ? "bg-primary text-primary-foreground shadow-md shadow-primary/30" : "group-hover:bg-accent"
561
- ) }, dateFns.format(day, "d", { locale })), dayEvents.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-[10px] font-medium text-muted-foreground/60 bg-muted/50 px-1.5 py-0.5 rounded-full" }, dayEvents.length)),
562
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 flex flex-col gap-1 scrollbar-hide overflow-y-auto overflow-x-hidden" }, dayEvents.slice(0, 4).map((event) => /* @__PURE__ */ React15__namespace.default.createElement(EventItem, { key: `${event.id}-${dayKey}`, event, onEventClick })), dayEvents.length > 4 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-[10px] text-primary font-semibold text-center py-1 px-2 rounded-md bg-primary/5 hover:bg-primary/10 cursor-pointer transition-colors" }, "+", dayEvents.length - 4, " more"))
610
+ (0, import_date_fns5.isToday)(day) ? "bg-primary text-primary-foreground shadow-md shadow-primary/30" : "group-hover:bg-accent"
611
+ ) }, (0, import_date_fns5.format)(day, "d", { locale })), dayEvents.length > 0 && /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[10px] font-medium text-muted-foreground/60 bg-muted/50 px-1.5 py-0.5 rounded-full" }, dayEvents.length)),
612
+ /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex-1 flex flex-col gap-1 scrollbar-hide overflow-y-auto overflow-x-hidden" }, dayEvents.slice(0, 4).map((event) => /* @__PURE__ */ import_react6.default.createElement(EventItem, { key: `${event.id}-${dayKey}`, event, onEventClick })), dayEvents.length > 4 && /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[10px] text-primary font-semibold text-center py-1 px-2 rounded-md bg-primary/5 hover:bg-primary/10 cursor-pointer transition-colors" }, "+", dayEvents.length - 4, " more"))
563
613
  );
564
614
  }))));
565
615
  };
616
+
617
+ // src/views/WeekView.tsx
618
+ var import_react8 = __toESM(require("react"));
619
+ var import_date_fns6 = require("date-fns");
620
+ var import_date_fns_tz3 = require("date-fns-tz");
621
+
622
+ // src/components/dnd/ResizableEvent.tsx
623
+ var import_react7 = __toESM(require("react"));
566
624
  var ResizableEvent = ({
567
625
  event,
568
626
  hourHeight,
@@ -574,13 +632,13 @@ var ResizableEvent = ({
574
632
  readonly
575
633
  }) => {
576
634
  const resizeLocked = readonly || isEventResizeDisabled(event);
577
- const [isResizing, setIsResizing] = React15.useState(false);
578
- const [resizeHeight, setResizeHeight] = React15.useState(null);
579
- const containerRef = React15.useRef(null);
580
- const startYRef = React15.useRef(0);
581
- const startHeightRef = React15.useRef(0);
582
- const resizeHeightRef = React15.useRef(null);
583
- const handleResizeStart = React15.useCallback((e) => {
635
+ const [isResizing, setIsResizing] = (0, import_react7.useState)(false);
636
+ const [resizeHeight, setResizeHeight] = (0, import_react7.useState)(null);
637
+ const containerRef = (0, import_react7.useRef)(null);
638
+ const startYRef = (0, import_react7.useRef)(0);
639
+ const startHeightRef = (0, import_react7.useRef)(0);
640
+ const resizeHeightRef = (0, import_react7.useRef)(null);
641
+ const handleResizeStart = (0, import_react7.useCallback)((e) => {
584
642
  e.preventDefault();
585
643
  e.stopPropagation();
586
644
  const clientY = "touches" in e ? e.touches[0].clientY : e.clientY;
@@ -625,10 +683,10 @@ var ResizableEvent = ({
625
683
  document.addEventListener("touchmove", handleMove, { passive: false });
626
684
  document.addEventListener("touchend", handleEnd);
627
685
  }, [event, hourHeight, minDuration, onResize]);
628
- const handlePointerDown = React15.useCallback((e) => {
686
+ const handlePointerDown = (0, import_react7.useCallback)((e) => {
629
687
  e.stopPropagation();
630
688
  }, []);
631
- return /* @__PURE__ */ React15__namespace.default.createElement(
689
+ return /* @__PURE__ */ import_react7.default.createElement(
632
690
  "div",
633
691
  {
634
692
  ref: containerRef,
@@ -639,7 +697,7 @@ var ResizableEvent = ({
639
697
  }
640
698
  },
641
699
  children,
642
- /* @__PURE__ */ React15__namespace.default.createElement(
700
+ /* @__PURE__ */ import_react7.default.createElement(
643
701
  "div",
644
702
  {
645
703
  className: cn(
@@ -652,12 +710,12 @@ var ResizableEvent = ({
652
710
  onMouseDown: resizeLocked ? void 0 : handleResizeStart,
653
711
  onTouchStart: resizeLocked ? void 0 : handleResizeStart
654
712
  },
655
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
713
+ /* @__PURE__ */ import_react7.default.createElement("div", { className: cn(
656
714
  "w-8 h-1 rounded-full transition-all",
657
715
  isResizing ? "bg-primary" : "bg-muted-foreground/30 group-hover:bg-primary/50"
658
716
  ) })
659
717
  ),
660
- isResizing && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute inset-0 border-2 border-primary border-dashed rounded-md pointer-events-none bg-primary/5" })
718
+ isResizing && /* @__PURE__ */ import_react7.default.createElement("div", { className: "absolute inset-0 border-2 border-primary border-dashed rounded-md pointer-events-none bg-primary/5" })
661
719
  );
662
720
  };
663
721
 
@@ -673,29 +731,25 @@ var WeekView = ({
673
731
  readonly
674
732
  }) => {
675
733
  const weekStartsOn = locale?.options?.weekStartsOn ?? 1;
676
- const start = dateFns.startOfWeek(currentDate, { weekStartsOn });
677
- const end = dateFns.endOfWeek(currentDate, { weekStartsOn });
678
- const weekDays = dateFns.eachDayOfInterval({ start, end });
734
+ const start = (0, import_date_fns6.startOfWeek)(currentDate, { weekStartsOn });
735
+ const end = (0, import_date_fns6.endOfWeek)(currentDate, { weekStartsOn });
736
+ const weekDays = (0, import_date_fns6.eachDayOfInterval)({ start, end });
679
737
  const hours = Array.from({ length: 24 }, (_, i) => i);
680
738
  const hourHeight = 60;
681
- const scrollContainerRef = React15__namespace.default.useRef(null);
682
- const [now, setNow] = React15__namespace.default.useState(/* @__PURE__ */ new Date());
683
- React15__namespace.default.useEffect(() => {
739
+ const scrollContainerRef = import_react8.default.useRef(null);
740
+ const [now, setNow] = import_react8.default.useState(/* @__PURE__ */ new Date());
741
+ import_react8.default.useEffect(() => {
684
742
  const interval = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
685
743
  return () => clearInterval(interval);
686
744
  }, []);
687
- React15__namespace.default.useEffect(() => {
745
+ import_react8.default.useEffect(() => {
688
746
  if (scrollContainerRef.current) {
689
- const scrollToActualTime = () => {
690
- const currentHour = now.getHours();
691
- const offsetHour = 4;
692
- return (currentHour - offsetHour) * hourHeight;
693
- };
694
- scrollContainerRef.current.scrollTop = scrollToActualTime();
747
+ const offsetHour = 4;
748
+ scrollContainerRef.current.scrollTop = ((/* @__PURE__ */ new Date()).getHours() - offsetHour) * hourHeight;
695
749
  }
696
750
  }, []);
697
751
  const getZonedDate = (date) => {
698
- return timezone ? dateFnsTz.toZonedTime(date, timezone) : date;
752
+ return timezone ? (0, import_date_fns_tz3.toZonedTime)(date, timezone) : date;
699
753
  };
700
754
  const zonedNow = getZonedDate(/* @__PURE__ */ new Date());
701
755
  const getTimezoneDisplay = (tz) => {
@@ -703,60 +757,60 @@ var WeekView = ({
703
757
  let displayTime = "";
704
758
  let acronym = "";
705
759
  if (!tz) {
706
- displayTime = dateFns.format(date, "HH:mm");
760
+ displayTime = (0, import_date_fns6.format)(date, "HH:mm");
707
761
  try {
708
762
  acronym = new Intl.DateTimeFormat("en-US", { timeZoneName: "short" }).formatToParts(date).find((part) => part.type === "timeZoneName")?.value || "";
709
- } catch (e) {
763
+ } catch {
710
764
  acronym = "LOC";
711
765
  }
712
766
  } else {
713
767
  try {
714
- const zDate = dateFnsTz.toZonedTime(date, tz);
715
- displayTime = dateFns.format(zDate, "HH:mm");
768
+ const zDate = (0, import_date_fns_tz3.toZonedTime)(date, tz);
769
+ displayTime = (0, import_date_fns6.format)(zDate, "HH:mm");
716
770
  acronym = new Intl.DateTimeFormat("en-US", { timeZone: tz, timeZoneName: "short" }).formatToParts(date).find((part) => part.type === "timeZoneName")?.value || "";
717
- } catch (e) {
718
- displayTime = dateFns.format(date, "HH:mm");
771
+ } catch {
772
+ displayTime = (0, import_date_fns6.format)(date, "HH:mm");
719
773
  acronym = tz;
720
774
  }
721
775
  }
722
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col items-center justify-center leading-tight" }, /* @__PURE__ */ React15__namespace.default.createElement("span", null, displayTime), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-[10px] opacity-75" }, "(", acronym, ")"));
776
+ return /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-col items-center justify-center leading-tight" }, /* @__PURE__ */ import_react8.default.createElement("span", null, displayTime), /* @__PURE__ */ import_react8.default.createElement("span", { className: "text-[10px] opacity-75" }, "(", acronym, ")"));
723
777
  };
724
778
  const is24h = uses24HourClock(locale);
725
779
  const timeFormat = is24h ? "H:mm" : "h a";
726
780
  const eventTimeFormat = is24h ? "H:mm" : "h:mm a";
727
781
  const nowFormat = is24h ? "H:mm" : "h:mm";
728
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full bg-background border-[0.5px] border-border/50 rounded-2xl overflow-hidden min-w-[800px] md:min-w-0 shadow-sm" }, /* @__PURE__ */ React15__namespace.default.createElement(
782
+ return /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-col h-full bg-background border-[0.5px] border-border/50 rounded-2xl overflow-hidden min-w-[800px] md:min-w-0 shadow-sm" }, /* @__PURE__ */ import_react8.default.createElement(
729
783
  "div",
730
784
  {
731
785
  ref: scrollContainerRef,
732
786
  className: "flex-1 overflow-y-auto scrollbar-hide relative bg-background scroll-smooth"
733
787
  },
734
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/20 via-background to-muted/20 z-20 sticky top-0 backdrop-blur-sm" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-none p-3 text-center text-xs font-semibold text-muted-foreground w-16 flex items-center justify-center border-r-[0.5px] border-border/30 bg-muted/10" }, getTimezoneDisplay(timezone)), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7" }, weekDays.map((day, index) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: day.toISOString(), className: cn("py-3 px-2 text-center", index > 0 && "border-l-[0.5px] border-border/30") }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1.5" }, dateFns.format(day, "EEE", { locale })), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
788
+ /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/20 via-background to-muted/20 z-20 sticky top-0 backdrop-blur-sm" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex-none p-3 text-center text-xs font-semibold text-muted-foreground w-16 flex items-center justify-center border-r-[0.5px] border-border/30 bg-muted/10" }, getTimezoneDisplay(timezone)), /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex-1 grid grid-cols-7" }, weekDays.map((day, index) => /* @__PURE__ */ import_react8.default.createElement("div", { key: day.toISOString(), className: cn("py-3 px-2 text-center", index > 0 && "border-l-[0.5px] border-border/30") }, /* @__PURE__ */ import_react8.default.createElement("div", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1.5" }, (0, import_date_fns6.format)(day, "EEE", { locale })), /* @__PURE__ */ import_react8.default.createElement("div", { className: cn(
735
789
  "w-9 h-9 flex items-center justify-center rounded-xl mx-auto text-sm font-semibold transition-all duration-200",
736
- dateFns.isToday(day) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30 scale-110" : "text-foreground hover:bg-accent/80"
737
- ) }, dateFns.format(day, "d", { locale })))))),
738
- /* @__PURE__ */ React15__namespace.default.createElement(
790
+ (0, import_date_fns6.isToday)(day) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30 scale-110" : "text-foreground hover:bg-accent/80"
791
+ ) }, (0, import_date_fns6.format)(day, "d", { locale })))))),
792
+ /* @__PURE__ */ import_react8.default.createElement(
739
793
  "div",
740
794
  {
741
795
  className: "flex min-w-full relative",
742
796
  style: { height: hours.length * hourHeight }
743
797
  },
744
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-none w-16 border-r-[0.5px] border-border/30 relative bg-muted/5" }, hours.map((hour) => /* @__PURE__ */ React15__namespace.default.createElement(
798
+ /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex-none w-16 border-r-[0.5px] border-border/30 relative bg-muted/5" }, hours.map((hour) => /* @__PURE__ */ import_react8.default.createElement(
745
799
  "div",
746
800
  {
747
801
  key: hour,
748
802
  className: "relative w-full text-[11px] text-muted-foreground/80 text-right pr-3 font-medium tabular-nums box-border",
749
803
  style: { height: hourHeight }
750
804
  },
751
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "block -translate-y-1/2" }, hour !== 0 && dateFns.format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
805
+ /* @__PURE__ */ import_react8.default.createElement("span", { className: "block -translate-y-1/2" }, hour !== 0 && (0, import_date_fns6.format)((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
752
806
  ))),
753
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, weekDays.map((day, dayIndex) => {
807
+ /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, weekDays.map((day, dayIndex) => {
754
808
  const dayEvents = events.filter((e) => {
755
809
  const zonedStart = getZonedDate(e.start);
756
- return dateFns.isSameDay(zonedStart, day);
810
+ return (0, import_date_fns6.isSameDay)(zonedStart, day);
757
811
  });
758
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { key: day.toISOString(), className: cn("relative h-full", dayIndex > 0 && "border-l-[0.5px] border-border/30") }, hours.map((hour) => {
759
- return /* @__PURE__ */ React15__namespace.default.createElement(
812
+ return /* @__PURE__ */ import_react8.default.createElement("div", { key: day.toISOString(), className: cn("relative h-full", dayIndex > 0 && "border-l-[0.5px] border-border/30") }, hours.map((hour) => {
813
+ return /* @__PURE__ */ import_react8.default.createElement(
760
814
  "div",
761
815
  {
762
816
  key: hour,
@@ -767,7 +821,7 @@ var WeekView = ({
767
821
  const cellDate = new Date(day);
768
822
  cellDate.setHours(hour, minute, 0, 0);
769
823
  const cellId = cellDate.toISOString();
770
- return /* @__PURE__ */ React15__namespace.default.createElement(
824
+ return /* @__PURE__ */ import_react8.default.createElement(
771
825
  DroppableCell,
772
826
  {
773
827
  key: minute,
@@ -779,7 +833,7 @@ var WeekView = ({
779
833
  top: `${minute / 60 * 100}%`
780
834
  }
781
835
  },
782
- /* @__PURE__ */ React15__namespace.default.createElement(
836
+ /* @__PURE__ */ import_react8.default.createElement(
783
837
  "div",
784
838
  {
785
839
  className: "w-full h-full bg-transparent cursor-pointer",
@@ -809,11 +863,11 @@ var WeekView = ({
809
863
  const zonedEventStart = getZonedDate(event.start);
810
864
  const zonedEventEnd = getZonedDate(event.end);
811
865
  const startMinutes = zonedEventStart.getHours() * 60 + zonedEventStart.getMinutes();
812
- const durationMinutes = dateFns.differenceInMinutes(zonedEventEnd, zonedEventStart);
866
+ const durationMinutes = (0, import_date_fns6.differenceInMinutes)(zonedEventEnd, zonedEventStart);
813
867
  const top = startMinutes / 60 * hourHeight;
814
868
  const height = durationMinutes / 60 * hourHeight;
815
869
  const isShortEvent = durationMinutes < 60;
816
- return /* @__PURE__ */ React15__namespace.default.createElement(
870
+ return /* @__PURE__ */ import_react8.default.createElement(
817
871
  DraggableEvent,
818
872
  {
819
873
  key: `${event.id}-${day.toISOString()}`,
@@ -828,7 +882,7 @@ var WeekView = ({
828
882
  paddingRight: count > 1 ? "2px" : "0"
829
883
  }
830
884
  },
831
- /* @__PURE__ */ React15__namespace.default.createElement(
885
+ /* @__PURE__ */ import_react8.default.createElement(
832
886
  ResizableEvent,
833
887
  {
834
888
  readonly,
@@ -838,7 +892,7 @@ var WeekView = ({
838
892
  className: "h-full",
839
893
  style: { height: "100%" }
840
894
  },
841
- /* @__PURE__ */ React15__namespace.default.createElement(
895
+ /* @__PURE__ */ import_react8.default.createElement(
842
896
  "div",
843
897
  {
844
898
  className: cn(
@@ -863,14 +917,14 @@ var WeekView = ({
863
917
  },
864
918
  title: count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
865
919
  },
866
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
920
+ /* @__PURE__ */ import_react8.default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ import_react8.default.createElement("div", { className: cn(
867
921
  "font-semibold truncate text-foreground/90 leading-tight",
868
922
  isShortEvent ? "text-xs text-center" : "text-xs"
869
- ) }, event.title), !isShortEvent && /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, null, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-[10px] text-muted-foreground truncate mt-0.5 font-medium leading-tight" }, dateFns.format(zonedEventStart, eventTimeFormat, { locale }), " - ", dateFns.format(zonedEventEnd, eventTimeFormat, { locale })), event.description && height > 50 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-[10px] text-muted-foreground/80 truncate mt-1 leading-tight opacity-80" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute top-1 right-1 bg-background/80 backdrop-blur-sm rounded-full w-4 h-4 flex items-center justify-center text-[9px] font-bold text-muted-foreground border border-border shadow-sm" }, count))
923
+ ) }, event.title), !isShortEvent && /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement("div", { className: "text-[10px] text-muted-foreground truncate mt-0.5 font-medium leading-tight" }, (0, import_date_fns6.format)(zonedEventStart, eventTimeFormat, { locale }), " - ", (0, import_date_fns6.format)(zonedEventEnd, eventTimeFormat, { locale })), event.description && height > 50 && /* @__PURE__ */ import_react8.default.createElement("div", { className: "text-[10px] text-muted-foreground/80 truncate mt-1 leading-tight opacity-80" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ import_react8.default.createElement("div", { className: "absolute top-1 right-1 bg-background/80 backdrop-blur-sm rounded-full w-4 h-4 flex items-center justify-center text-[9px] font-bold text-muted-foreground border border-border shadow-sm" }, count))
870
924
  )
871
925
  )
872
926
  );
873
- }), dateFns.isToday(day) && /* @__PURE__ */ React15__namespace.default.createElement(
927
+ }), (0, import_date_fns6.isToday)(day) && /* @__PURE__ */ import_react8.default.createElement(
874
928
  "div",
875
929
  {
876
930
  className: "absolute left-0 right-0 z-20 pointer-events-none flex items-center",
@@ -878,12 +932,12 @@ var WeekView = ({
878
932
  top: `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
879
933
  }
880
934
  },
881
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
882
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute -left-1.5 w-3 h-3 bg-primary rounded-full shadow-lg shadow-primary/40 ring-2 ring-background animate-pulse" })
935
+ /* @__PURE__ */ import_react8.default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
936
+ /* @__PURE__ */ import_react8.default.createElement("div", { className: "absolute -left-1.5 w-3 h-3 bg-primary rounded-full shadow-lg shadow-primary/40 ring-2 ring-background animate-pulse" })
883
937
  ));
884
938
  }))
885
939
  ),
886
- /* @__PURE__ */ React15__namespace.default.createElement(
940
+ /* @__PURE__ */ import_react8.default.createElement(
887
941
  "div",
888
942
  {
889
943
  className: "absolute left-0 w-16 pointer-events-none z-30 flex justify-end pr-2",
@@ -891,10 +945,15 @@ var WeekView = ({
891
945
  top: `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight + 80}px`
892
946
  }
893
947
  },
894
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-[10px] font-bold text-primary-foreground bg-primary px-1.5 py-0.5 rounded-md shadow-md -translate-y-1/2 backdrop-blur-none" }, dateFns.format(zonedNow, nowFormat, { locale }))
948
+ /* @__PURE__ */ import_react8.default.createElement("span", { className: "text-[10px] font-bold text-primary-foreground bg-primary px-1.5 py-0.5 rounded-md shadow-md -translate-y-1/2 backdrop-blur-none" }, (0, import_date_fns6.format)(zonedNow, nowFormat, { locale }))
895
949
  )
896
950
  ));
897
951
  };
952
+
953
+ // src/views/DayView.tsx
954
+ var import_react9 = __toESM(require("react"));
955
+ var import_date_fns7 = require("date-fns");
956
+ var import_date_fns_tz4 = require("date-fns-tz");
898
957
  var DayView = ({
899
958
  currentDate,
900
959
  events,
@@ -907,43 +966,39 @@ var DayView = ({
907
966
  }) => {
908
967
  const hours = Array.from({ length: 24 }, (_, i) => i);
909
968
  const hourHeight = 80;
910
- const scrollContainerRef = React15__namespace.default.useRef(null);
911
- const [now, setNow] = React15__namespace.default.useState(/* @__PURE__ */ new Date());
912
- React15__namespace.default.useEffect(() => {
969
+ const scrollContainerRef = import_react9.default.useRef(null);
970
+ const [now, setNow] = import_react9.default.useState(/* @__PURE__ */ new Date());
971
+ import_react9.default.useEffect(() => {
913
972
  const interval = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
914
973
  return () => clearInterval(interval);
915
974
  }, []);
916
- React15__namespace.default.useEffect(() => {
975
+ import_react9.default.useEffect(() => {
917
976
  if (scrollContainerRef.current) {
918
- const scrollToActualTime = () => {
919
- const currentHour = now.getHours();
920
- const offsetHour = 3;
921
- return (currentHour - offsetHour) * hourHeight;
922
- };
923
- scrollContainerRef.current.scrollTop = scrollToActualTime();
977
+ const offsetHour = 3;
978
+ scrollContainerRef.current.scrollTop = ((/* @__PURE__ */ new Date()).getHours() - offsetHour) * hourHeight;
924
979
  }
925
980
  }, []);
926
981
  const getZonedDate = (date) => {
927
- return timezone ? dateFnsTz.toZonedTime(date, timezone) : date;
982
+ return timezone ? (0, import_date_fns_tz4.toZonedTime)(date, timezone) : date;
928
983
  };
929
984
  const zonedNow = getZonedDate(now);
930
985
  const dayEvents = events.filter((e) => {
931
986
  const zonedStart = getZonedDate(e.start);
932
- return dateFns.isSameDay(zonedStart, currentDate);
987
+ return (0, import_date_fns7.isSameDay)(zonedStart, currentDate);
933
988
  });
934
989
  const is24h = uses24HourClock(locale);
935
990
  const timeFormat = is24h ? "H:mm" : "h a";
936
991
  const eventTimeFormat = is24h ? "H:mm" : "h:mm a";
937
992
  const nowFormat = is24h ? "H:mm" : "h:mm a";
938
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full bg-background border-[0.5px] border-border/50 rounded-2xl overflow-hidden shadow-sm" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-6 py-4 border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/20 via-background to-muted/20 text-center shrink-0" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-center gap-3" }, /* @__PURE__ */ React15__namespace.default.createElement("h2", { className: "text-xl font-semibold capitalize text-foreground" }, dateFns.format(currentDate, "EEEE, MMMM d, yyyy", { locale })), dateFns.isToday(currentDate) && /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-semibold bg-primary text-primary-foreground px-3 py-1 rounded-full shadow-md shadow-primary/20" }, "Today"))), /* @__PURE__ */ React15__namespace.default.createElement("div", { ref: scrollContainerRef, className: "flex-1 overflow-y-auto relative" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex relative", style: { height: hours.length * hourHeight } }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-20 bg-muted/5 border-r-[0.5px] border-border/30 relative" }, hours.map((hour) => /* @__PURE__ */ React15__namespace.default.createElement(
993
+ return /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex flex-col h-full bg-background border-[0.5px] border-border/50 rounded-2xl overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "px-6 py-4 border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/20 via-background to-muted/20 text-center shrink-0" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex items-center justify-center gap-3" }, /* @__PURE__ */ import_react9.default.createElement("h2", { className: "text-xl font-semibold capitalize text-foreground" }, (0, import_date_fns7.format)(currentDate, "EEEE, MMMM d, yyyy", { locale })), (0, import_date_fns7.isToday)(currentDate) && /* @__PURE__ */ import_react9.default.createElement("span", { className: "text-xs font-semibold bg-primary text-primary-foreground px-3 py-1 rounded-full shadow-md shadow-primary/20" }, "Today"))), /* @__PURE__ */ import_react9.default.createElement("div", { ref: scrollContainerRef, className: "flex-1 overflow-y-auto relative" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex relative", style: { height: hours.length * hourHeight } }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "w-20 bg-muted/5 border-r-[0.5px] border-border/30 relative" }, hours.map((hour) => /* @__PURE__ */ import_react9.default.createElement(
939
994
  "div",
940
995
  {
941
996
  key: hour,
942
997
  className: "relative w-full",
943
998
  style: { height: hourHeight }
944
999
  },
945
- hour !== 0 && /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "absolute w-full text-center -top-3 left-1/2 -translate-x-1/2 text-[11px] text-muted-foreground/80 font-medium tabular-nums bg-background px-1.5 py-0.5 rounded-md" }, dateFns.format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
946
- )), dateFns.isToday(currentDate) && /* @__PURE__ */ React15__namespace.default.createElement(
1000
+ hour !== 0 && /* @__PURE__ */ import_react9.default.createElement("span", { className: "absolute w-full text-center -top-3 left-1/2 -translate-x-1/2 text-[11px] text-muted-foreground/80 font-medium tabular-nums bg-background px-1.5 py-0.5 rounded-md" }, (0, import_date_fns7.format)((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
1001
+ )), (0, import_date_fns7.isToday)(currentDate) && /* @__PURE__ */ import_react9.default.createElement(
947
1002
  "div",
948
1003
  {
949
1004
  className: "absolute left-0 w-full pointer-events-none z-30 flex justify-end pr-2",
@@ -951,9 +1006,9 @@ var DayView = ({
951
1006
  top: `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
952
1007
  }
953
1008
  },
954
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-[10px] font-bold text-white bg-primary px-2 py-1 rounded-lg shadow-md shadow-primary/30 -translate-y-1/2" }, dateFns.format(zonedNow, nowFormat, { locale }))
955
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 relative" }, hours.map((hour) => {
956
- return /* @__PURE__ */ React15__namespace.default.createElement(
1009
+ /* @__PURE__ */ import_react9.default.createElement("span", { className: "text-[10px] font-bold text-white bg-primary px-2 py-1 rounded-lg shadow-md shadow-primary/30 -translate-y-1/2" }, (0, import_date_fns7.format)(zonedNow, nowFormat, { locale }))
1010
+ )), /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex-1 relative" }, hours.map((hour) => {
1011
+ return /* @__PURE__ */ import_react9.default.createElement(
957
1012
  "div",
958
1013
  {
959
1014
  key: hour,
@@ -964,7 +1019,7 @@ var DayView = ({
964
1019
  const cellDate = new Date(currentDate);
965
1020
  cellDate.setHours(hour, minute, 0, 0);
966
1021
  const cellId = cellDate.toISOString();
967
- return /* @__PURE__ */ React15__namespace.default.createElement(
1022
+ return /* @__PURE__ */ import_react9.default.createElement(
968
1023
  DroppableCell,
969
1024
  {
970
1025
  key: minute,
@@ -976,7 +1031,7 @@ var DayView = ({
976
1031
  top: `${minute / 60 * 100}%`
977
1032
  }
978
1033
  },
979
- /* @__PURE__ */ React15__namespace.default.createElement(
1034
+ /* @__PURE__ */ import_react9.default.createElement(
980
1035
  "div",
981
1036
  {
982
1037
  className: "h-full w-full bg-transparent cursor-pointer",
@@ -1005,11 +1060,11 @@ var DayView = ({
1005
1060
  const zonedStart = getZonedDate(event.start);
1006
1061
  const zonedEnd = getZonedDate(event.end);
1007
1062
  const startMinutes = zonedStart.getHours() * 60 + zonedStart.getMinutes();
1008
- const durationMinutes = dateFns.differenceInMinutes(zonedEnd, zonedStart);
1063
+ const durationMinutes = (0, import_date_fns7.differenceInMinutes)(zonedEnd, zonedStart);
1009
1064
  const top = startMinutes / 60 * hourHeight;
1010
1065
  const height = durationMinutes / 60 * hourHeight;
1011
1066
  const isShortEvent = durationMinutes < 45;
1012
- return /* @__PURE__ */ React15__namespace.default.createElement(
1067
+ return /* @__PURE__ */ import_react9.default.createElement(
1013
1068
  DraggableEvent,
1014
1069
  {
1015
1070
  key: `${event.id}-${currentDate.toISOString()}`,
@@ -1023,7 +1078,7 @@ var DayView = ({
1023
1078
  paddingRight: count > 1 ? "2px" : "0"
1024
1079
  }
1025
1080
  },
1026
- /* @__PURE__ */ React15__namespace.default.createElement(
1081
+ /* @__PURE__ */ import_react9.default.createElement(
1027
1082
  ResizableEvent,
1028
1083
  {
1029
1084
  readonly,
@@ -1033,7 +1088,7 @@ var DayView = ({
1033
1088
  className: "h-full",
1034
1089
  style: { height: "100%" }
1035
1090
  },
1036
- /* @__PURE__ */ React15__namespace.default.createElement(
1091
+ /* @__PURE__ */ import_react9.default.createElement(
1037
1092
  "div",
1038
1093
  {
1039
1094
  className: cn(
@@ -1056,15 +1111,15 @@ var DayView = ({
1056
1111
  },
1057
1112
  title: count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
1058
1113
  },
1059
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
1114
+ /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: cn(
1060
1115
  "font-semibold truncate leading-tight",
1061
1116
  isShortEvent ? "text-xs" : "text-sm",
1062
1117
  event.color ? "text-foreground" : "text-foreground/90"
1063
- ) }, event.title), !isShortEvent && /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, null, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-xs text-muted-foreground mt-0.5 font-medium" }, dateFns.format(zonedStart, eventTimeFormat, { locale }), " - ", dateFns.format(zonedEnd, eventTimeFormat, { locale })), event.description && height > 60 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-xs text-muted-foreground/80 mt-1 line-clamp-2" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute top-1.5 right-1.5 bg-background/90 backdrop-blur-sm rounded-full w-5 h-5 flex items-center justify-center text-[10px] font-bold text-muted-foreground border border-border shadow-sm" }, count))
1118
+ ) }, event.title), !isShortEvent && /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("div", { className: "text-xs text-muted-foreground mt-0.5 font-medium" }, (0, import_date_fns7.format)(zonedStart, eventTimeFormat, { locale }), " - ", (0, import_date_fns7.format)(zonedEnd, eventTimeFormat, { locale })), event.description && height > 60 && /* @__PURE__ */ import_react9.default.createElement("div", { className: "text-xs text-muted-foreground/80 mt-1 line-clamp-2" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ import_react9.default.createElement("div", { className: "absolute top-1.5 right-1.5 bg-background/90 backdrop-blur-sm rounded-full w-5 h-5 flex items-center justify-center text-[10px] font-bold text-muted-foreground border border-border shadow-sm" }, count))
1064
1119
  )
1065
1120
  )
1066
1121
  );
1067
- }), dateFns.isToday(currentDate) && /* @__PURE__ */ React15__namespace.default.createElement(
1122
+ }), (0, import_date_fns7.isToday)(currentDate) && /* @__PURE__ */ import_react9.default.createElement(
1068
1123
  "div",
1069
1124
  {
1070
1125
  className: "absolute left-0 right-0 z-20 pointer-events-none flex items-center",
@@ -1072,21 +1127,33 @@ var DayView = ({
1072
1127
  top: `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
1073
1128
  }
1074
1129
  },
1075
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
1076
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute -left-1.5 w-3 h-3 bg-primary rounded-full shadow-lg shadow-primary/40 ring-2 ring-background animate-pulse" })
1130
+ /* @__PURE__ */ import_react9.default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
1131
+ /* @__PURE__ */ import_react9.default.createElement("div", { className: "absolute -left-1.5 w-3 h-3 bg-primary rounded-full shadow-lg shadow-primary/40 ring-2 ring-background animate-pulse" })
1077
1132
  )))));
1078
1133
  };
1079
- var AgendaEmptyState = ({ onCreateEvent, translations }) => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col items-center justify-center h-full min-h-[400px] py-12" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative mb-8" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-8 bg-gradient-to-br from-green-50 to-blue-50 dark:from-green-900/10 dark:to-blue-900/10 rounded-3xl border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-12 h-12 rounded-2xl bg-green-100 dark:bg-green-900/30 flex items-center justify-center" }, /* @__PURE__ */ React15__namespace.default.createElement("svg", { className: "w-6 h-6 text-green-600 dark:text-green-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 }, /* @__PURE__ */ React15__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-left" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "font-medium text-foreground" }, translations?.allCaughtUp || "All caught up!"), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-sm text-muted-foreground" }, translations?.noEventsScheduled || "No events scheduled"))))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-center max-w-sm" }, /* @__PURE__ */ React15__namespace.default.createElement("h3", { className: "text-lg font-semibold text-foreground mb-2" }, translations?.noUpcoming || "Your schedule is clear"), /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-sm text-muted-foreground mb-6" }, translations?.noUpcomingHint || "No upcoming events to show. Create a new event to start planning."), onCreateEvent && /* @__PURE__ */ React15__namespace.default.createElement(
1134
+
1135
+ // src/views/AgendaView.tsx
1136
+ var import_react11 = __toESM(require("react"));
1137
+ var import_date_fns8 = require("date-fns");
1138
+
1139
+ // src/components/EmptyState.tsx
1140
+ var import_react10 = __toESM(require("react"));
1141
+ var import_lucide_react4 = require("lucide-react");
1142
+ var AgendaEmptyState = ({ onCreateEvent, translations }) => /* @__PURE__ */ import_react10.default.createElement("div", { className: "flex flex-col items-center justify-center h-full min-h-[400px] py-12" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "relative mb-8" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "p-8 bg-gradient-to-br from-green-50 to-blue-50 dark:from-green-900/10 dark:to-blue-900/10 rounded-3xl border border-border/30" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "w-12 h-12 rounded-2xl bg-green-100 dark:bg-green-900/30 flex items-center justify-center" }, /* @__PURE__ */ import_react10.default.createElement("svg", { className: "w-6 h-6 text-green-600 dark:text-green-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 }, /* @__PURE__ */ import_react10.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ import_react10.default.createElement("div", { className: "text-left" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "font-medium text-foreground" }, translations?.allCaughtUp || "All caught up!"), /* @__PURE__ */ import_react10.default.createElement("div", { className: "text-sm text-muted-foreground" }, translations?.noEventsScheduled || "No events scheduled"))))), /* @__PURE__ */ import_react10.default.createElement("div", { className: "text-center max-w-sm" }, /* @__PURE__ */ import_react10.default.createElement("h3", { className: "text-lg font-semibold text-foreground mb-2" }, translations?.noUpcoming || "Your schedule is clear"), /* @__PURE__ */ import_react10.default.createElement("p", { className: "text-sm text-muted-foreground mb-6" }, translations?.noUpcomingHint || "No upcoming events to show. Create a new event to start planning."), onCreateEvent && /* @__PURE__ */ import_react10.default.createElement(
1080
1143
  "button",
1081
1144
  {
1082
1145
  onClick: onCreateEvent,
1083
1146
  className: "inline-flex items-center gap-2 px-5 py-2.5 bg-primary text-primary-foreground rounded-xl font-medium text-sm shadow-lg shadow-primary/20 hover:shadow-xl hover:shadow-primary/30 hover:scale-105 active:scale-95 transition-all duration-200"
1084
1147
  },
1085
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Plus, { className: "w-4 h-4" }),
1148
+ /* @__PURE__ */ import_react10.default.createElement(import_lucide_react4.Plus, { className: "w-4 h-4" }),
1086
1149
  translations?.createEvent || "Create Event"
1087
1150
  )));
1151
+
1152
+ // src/views/AgendaView.tsx
1153
+ var import_framer_motion = require("framer-motion");
1154
+ var import_lucide_react5 = require("lucide-react");
1088
1155
  var formatDuration = (start, end) => {
1089
- const minutes = dateFns.differenceInMinutes(end, start);
1156
+ const minutes = (0, import_date_fns8.differenceInMinutes)(end, start);
1090
1157
  if (minutes < 60) return `${minutes}m`;
1091
1158
  const hours = Math.floor(minutes / 60);
1092
1159
  const remainingMinutes = minutes % 60;
@@ -1094,9 +1161,9 @@ var formatDuration = (start, end) => {
1094
1161
  return `${hours}h ${remainingMinutes}m`;
1095
1162
  };
1096
1163
  var getDateLabel = (date, locale, translations) => {
1097
- if (dateFns.isToday(date)) return translations?.today || "Today";
1098
- if (dateFns.isTomorrow(date)) return translations?.tomorrow || "Tomorrow";
1099
- return dateFns.format(date, "EEEE", { locale });
1164
+ if ((0, import_date_fns8.isToday)(date)) return translations?.today || "Today";
1165
+ if ((0, import_date_fns8.isTomorrow)(date)) return translations?.tomorrow || "Tomorrow";
1166
+ return (0, import_date_fns8.format)(date, "EEEE", { locale });
1100
1167
  };
1101
1168
  var AgendaView = ({
1102
1169
  currentDate,
@@ -1109,13 +1176,13 @@ var AgendaView = ({
1109
1176
  const is24h = uses24HourClock(locale);
1110
1177
  const timePattern = is24h ? "H:mm" : "h:mm a";
1111
1178
  const compactTimePattern = is24h ? "H:mm" : "h:mm";
1112
- const groupedEvents = React15.useMemo(() => {
1113
- const startDate = dateFns.startOfDay(currentDate);
1179
+ const groupedEvents = (0, import_react11.useMemo)(() => {
1180
+ const startDate = (0, import_date_fns8.startOfDay)(currentDate);
1114
1181
  const groups = [];
1115
1182
  const sortedEvents = [...events].sort((a, b) => a.start.getTime() - b.start.getTime());
1116
1183
  for (let i = 0; i < 30; i++) {
1117
- const day = dateFns.addDays(startDate, i);
1118
- const dayEvents = sortedEvents.filter((event) => dateFns.isSameDay(event.start, day));
1184
+ const day = (0, import_date_fns8.addDays)(startDate, i);
1185
+ const dayEvents = sortedEvents.filter((event) => (0, import_date_fns8.isSameDay)(event.start, day));
1119
1186
  if (dayEvents.length > 0) {
1120
1187
  groups.push({ date: day, events: dayEvents });
1121
1188
  }
@@ -1135,30 +1202,30 @@ var AgendaView = ({
1135
1202
  hidden: { opacity: 0, x: -20 },
1136
1203
  show: { opacity: 1, x: 0 }
1137
1204
  };
1138
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full bg-background overflow-y-auto" }, groupedEvents.length === 0 ? /* @__PURE__ */ React15__namespace.default.createElement(AgendaEmptyState, { onCreateEvent, translations }) : /* @__PURE__ */ React15__namespace.default.createElement(
1139
- framerMotion.motion.div,
1205
+ return /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col h-full bg-background overflow-y-auto" }, groupedEvents.length === 0 ? /* @__PURE__ */ import_react11.default.createElement(AgendaEmptyState, { onCreateEvent, translations }) : /* @__PURE__ */ import_react11.default.createElement(
1206
+ import_framer_motion.motion.div,
1140
1207
  {
1141
1208
  className: "max-w-3xl mx-auto w-full pb-10 px-4 md:px-6",
1142
1209
  variants: container,
1143
1210
  initial: "hidden",
1144
1211
  animate: "show"
1145
1212
  },
1146
- groupedEvents.map((group, groupIndex) => /* @__PURE__ */ React15__namespace.default.createElement(
1147
- framerMotion.motion.div,
1213
+ groupedEvents.map((group) => /* @__PURE__ */ import_react11.default.createElement(
1214
+ import_framer_motion.motion.div,
1148
1215
  {
1149
1216
  key: group.date.toISOString(),
1150
1217
  className: "relative",
1151
1218
  variants: item
1152
1219
  },
1153
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "sticky top-0 bg-background/95 backdrop-blur-md py-4 z-10 border-b border-border/50" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
1220
+ /* @__PURE__ */ import_react11.default.createElement("div", { className: "sticky top-0 bg-background/95 backdrop-blur-md py-4 z-10 border-b border-border/50" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: cn(
1154
1221
  "flex flex-col items-center justify-center w-16 h-16 rounded-2xl transition-all",
1155
- dateFns.isToday(group.date) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30" : "bg-muted/50 text-foreground"
1156
- ) }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-2xl font-bold leading-none" }, dateFns.format(group.date, "d")), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-medium uppercase tracking-wide opacity-80" }, dateFns.format(group.date, "MMM", { locale }))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: cn(
1222
+ (0, import_date_fns8.isToday)(group.date) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30" : "bg-muted/50 text-foreground"
1223
+ ) }, /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-2xl font-bold leading-none" }, (0, import_date_fns8.format)(group.date, "d")), /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-xs font-medium uppercase tracking-wide opacity-80" }, (0, import_date_fns8.format)(group.date, "MMM", { locale }))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react11.default.createElement("span", { className: cn(
1157
1224
  "text-lg font-semibold",
1158
- dateFns.isToday(group.date) && "text-primary"
1159
- ) }, getDateLabel(group.date, locale, translations)), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm text-muted-foreground" }, group.events.length, " ", group.events.length !== 1 ? translations?.eventPlural || "events" : translations?.eventSingular || "event")))),
1160
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "py-4 space-y-3" }, group.events.map((event, eventIndex) => /* @__PURE__ */ React15__namespace.default.createElement(
1161
- framerMotion.motion.div,
1225
+ (0, import_date_fns8.isToday)(group.date) && "text-primary"
1226
+ ) }, getDateLabel(group.date, locale, translations)), /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-sm text-muted-foreground" }, group.events.length, " ", group.events.length !== 1 ? translations?.eventPlural || "events" : translations?.eventSingular || "event")))),
1227
+ /* @__PURE__ */ import_react11.default.createElement("div", { className: "py-4 space-y-3" }, group.events.map((event) => /* @__PURE__ */ import_react11.default.createElement(
1228
+ import_framer_motion.motion.div,
1162
1229
  {
1163
1230
  key: event.id,
1164
1231
  onClick: () => onEventClick?.(event),
@@ -1171,26 +1238,30 @@ var AgendaView = ({
1171
1238
  whileHover: { scale: 1.01, y: -2 },
1172
1239
  transition: { duration: 0.2 }
1173
1240
  },
1174
- /* @__PURE__ */ React15__namespace.default.createElement(
1241
+ /* @__PURE__ */ import_react11.default.createElement(
1175
1242
  "div",
1176
1243
  {
1177
1244
  className: "absolute left-0 top-3 bottom-3 w-1 rounded-full",
1178
1245
  style: { backgroundColor: event.color || "var(--primary)" }
1179
1246
  }
1180
1247
  ),
1181
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col items-center min-w-[70px] pl-2" }, event.allDay ? /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-semibold text-muted-foreground bg-muted/80 px-2.5 py-1 rounded-full" }, translations?.allDay || "All Day")) : /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-base font-semibold text-foreground" }, dateFns.format(event.start, compactTimePattern, { locale })), !is24h && /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs text-muted-foreground uppercase" }, dateFns.format(event.start, "a")), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-px h-3 bg-border my-1" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs text-muted-foreground/70 font-medium" }, formatDuration(event.start, event.end)))),
1182
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 min-w-0 space-y-2" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-start justify-between gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement("h4", { className: "text-base font-semibold text-foreground group-hover:text-primary transition-colors line-clamp-1" }, event.title), /* @__PURE__ */ React15__namespace.default.createElement(
1248
+ /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col items-center min-w-[70px] pl-2" }, event.allDay ? /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-xs font-semibold text-muted-foreground bg-muted/80 px-2.5 py-1 rounded-full" }, translations?.allDay || "All Day")) : /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-base font-semibold text-foreground" }, (0, import_date_fns8.format)(event.start, compactTimePattern, { locale })), !is24h && /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-xs text-muted-foreground uppercase" }, (0, import_date_fns8.format)(event.start, "a")), /* @__PURE__ */ import_react11.default.createElement("div", { className: "w-px h-3 bg-border my-1" }), /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-xs text-muted-foreground/70 font-medium" }, formatDuration(event.start, event.end)))),
1249
+ /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex-1 min-w-0 space-y-2" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-start justify-between gap-2" }, /* @__PURE__ */ import_react11.default.createElement("h4", { className: "text-base font-semibold text-foreground group-hover:text-primary transition-colors line-clamp-1" }, event.title), /* @__PURE__ */ import_react11.default.createElement(
1183
1250
  "div",
1184
1251
  {
1185
1252
  className: "w-3 h-3 rounded-full shrink-0 mt-1.5",
1186
1253
  style: { backgroundColor: event.color || "var(--primary)" }
1187
1254
  }
1188
- )), event.description && /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed" }, event.description), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-wrap items-center gap-3 pt-1" }, !event.allDay && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Clock, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React15__namespace.default.createElement("span", null, dateFns.format(event.start, timePattern, { locale }), " - ", dateFns.format(event.end, timePattern, { locale }))), event.guests && event.guests.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Users, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React15__namespace.default.createElement("span", null, event.guests.length, " ", event.guests.length !== 1 ? translations?.guestsCount || "guests" : translations?.guestCount || "guest")), event.attachments && event.attachments.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Paperclip, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React15__namespace.default.createElement("span", null, event.attachments.length)), event.reminders && event.reminders.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Bell, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React15__namespace.default.createElement("span", null, event.reminders.length)))),
1189
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute right-4 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React15__namespace.default.createElement("svg", { className: "w-5 h-5 text-muted-foreground", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ React15__namespace.default.createElement("path", { d: "M9 18l6-6-6-6" })))
1255
+ )), event.description && /* @__PURE__ */ import_react11.default.createElement("p", { className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed" }, event.description), /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-wrap items-center gap-3 pt-1" }, !event.allDay && /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ import_react11.default.createElement(import_lucide_react5.Clock, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ import_react11.default.createElement("span", null, (0, import_date_fns8.format)(event.start, timePattern, { locale }), " - ", (0, import_date_fns8.format)(event.end, timePattern, { locale }))), event.guests && event.guests.length > 0 && /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ import_react11.default.createElement(import_lucide_react5.Users, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ import_react11.default.createElement("span", null, event.guests.length, " ", event.guests.length !== 1 ? translations?.guestsCount || "guests" : translations?.guestCount || "guest")), event.attachments && event.attachments.length > 0 && /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ import_react11.default.createElement(import_lucide_react5.Paperclip, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ import_react11.default.createElement("span", null, event.attachments.length)), event.reminders && event.reminders.length > 0 && /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ import_react11.default.createElement(import_lucide_react5.Bell, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ import_react11.default.createElement("span", null, event.reminders.length)))),
1256
+ /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute right-4 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ import_react11.default.createElement("svg", { className: "w-5 h-5 text-muted-foreground", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ import_react11.default.createElement("path", { d: "M9 18l6-6-6-6" })))
1190
1257
  )))
1191
1258
  ))
1192
1259
  ));
1193
1260
  };
1261
+
1262
+ // src/views/ResourceView.tsx
1263
+ var import_react12 = __toESM(require("react"));
1264
+ var import_date_fns9 = require("date-fns");
1194
1265
  var ResourceView = ({
1195
1266
  currentDate,
1196
1267
  events,
@@ -1199,16 +1270,16 @@ var ResourceView = ({
1199
1270
  onTimeSlotClick,
1200
1271
  locale
1201
1272
  }) => {
1202
- const containerRef = React15.useRef(null);
1273
+ const containerRef = (0, import_react12.useRef)(null);
1203
1274
  const hours = Array.from({ length: 24 }, (_, i) => i);
1204
1275
  const hourWidth = 100;
1205
1276
  const timeFormat = uses24HourClock(locale) ? "H:mm" : "h a";
1206
1277
  const getEventStyle = (event) => {
1207
1278
  const start = new Date(event.start);
1208
1279
  const end = new Date(event.end);
1209
- const dayStart = dateFns.startOfDay(currentDate);
1210
- const startMinutes = dateFns.differenceInMinutes(start, dayStart);
1211
- const durationMinutes = dateFns.differenceInMinutes(end, start);
1280
+ const dayStart = (0, import_date_fns9.startOfDay)(currentDate);
1281
+ const startMinutes = (0, import_date_fns9.differenceInMinutes)(start, dayStart);
1282
+ const durationMinutes = (0, import_date_fns9.differenceInMinutes)(end, start);
1212
1283
  const left = startMinutes / 60 * hourWidth;
1213
1284
  const width = durationMinutes / 60 * hourWidth;
1214
1285
  return {
@@ -1217,19 +1288,19 @@ var ResourceView = ({
1217
1288
  // Min width for visibility
1218
1289
  };
1219
1290
  };
1220
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col h-full bg-background overflow-hidden" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex border-b border-border bg-muted/20" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-48 shrink-0 border-r border-border p-4 font-semibold text-sm bg-background sticky left-0 z-20" }, "Resources"), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex overflow-hidden" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex relative", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ React15__namespace.default.createElement(
1291
+ return /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex flex-col h-full bg-background overflow-hidden" }, /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex border-b border-border bg-muted/20" }, /* @__PURE__ */ import_react12.default.createElement("div", { className: "w-48 shrink-0 border-r border-border p-4 font-semibold text-sm bg-background sticky left-0 z-20" }, "Resources"), /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex overflow-hidden" }, /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex relative", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ import_react12.default.createElement(
1221
1292
  "div",
1222
1293
  {
1223
1294
  key: hour,
1224
1295
  className: "border-r border-border/50 text-xs text-muted-foreground p-2 font-medium shrink-0",
1225
1296
  style: { width: hourWidth }
1226
1297
  },
1227
- dateFns.format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale })
1228
- ))))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 overflow-auto relative", ref: containerRef }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "min-w-fit" }, resources.map((resource) => {
1298
+ (0, import_date_fns9.format)((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale })
1299
+ ))))), /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex-1 overflow-auto relative", ref: containerRef }, /* @__PURE__ */ import_react12.default.createElement("div", { className: "min-w-fit" }, resources.map((resource) => {
1229
1300
  const resourceEvents = events.filter(
1230
- (e) => e.resourceId === resource.id && dateFns.isSameDay(new Date(e.start), currentDate)
1301
+ (e) => e.resourceId === resource.id && (0, import_date_fns9.isSameDay)(new Date(e.start), currentDate)
1231
1302
  );
1232
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { key: resource.id, className: "flex border-b border-border min-h-[100px]" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-48 shrink-0 border-r border-border p-4 bg-background sticky left-0 z-10 flex items-center gap-3" }, resource.avatar ? /* @__PURE__ */ React15__namespace.default.createElement("img", { src: resource.avatar, alt: resource.label, className: "w-8 h-8 rounded-full object-cover" }) : /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold text-primary" }, resource.label.substring(0, 2).toUpperCase()), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium" }, resource.label), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs text-muted-foreground" }, "ID: ", resource.id))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative flex", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ React15__namespace.default.createElement(
1303
+ return /* @__PURE__ */ import_react12.default.createElement("div", { key: resource.id, className: "flex border-b border-border min-h-[100px]" }, /* @__PURE__ */ import_react12.default.createElement("div", { className: "w-48 shrink-0 border-r border-border p-4 bg-background sticky left-0 z-10 flex items-center gap-3" }, resource.avatar ? /* @__PURE__ */ import_react12.default.createElement("img", { src: resource.avatar, alt: resource.label, className: "w-8 h-8 rounded-full object-cover" }) : /* @__PURE__ */ import_react12.default.createElement("div", { className: "w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold text-primary" }, resource.label.substring(0, 2).toUpperCase()), /* @__PURE__ */ import_react12.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react12.default.createElement("span", { className: "text-sm font-medium" }, resource.label), /* @__PURE__ */ import_react12.default.createElement("span", { className: "text-xs text-muted-foreground" }, "ID: ", resource.id))), /* @__PURE__ */ import_react12.default.createElement("div", { className: "relative flex", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ import_react12.default.createElement(
1233
1304
  "div",
1234
1305
  {
1235
1306
  key: hour,
@@ -1240,7 +1311,7 @@ var ResourceView = ({
1240
1311
  const slotDate = new Date(currentDate);
1241
1312
  slotDate.setHours(hour, minute, 0, 0);
1242
1313
  const slotId = `${resource.id}-${slotDate.toISOString()}`;
1243
- return /* @__PURE__ */ React15__namespace.default.createElement(
1314
+ return /* @__PURE__ */ import_react12.default.createElement(
1244
1315
  DroppableCell,
1245
1316
  {
1246
1317
  key: minute,
@@ -1254,7 +1325,7 @@ var ResourceView = ({
1254
1325
  }
1255
1326
  );
1256
1327
  })
1257
- )), resourceEvents.map((event) => /* @__PURE__ */ React15__namespace.default.createElement(
1328
+ )), resourceEvents.map((event) => /* @__PURE__ */ import_react12.default.createElement(
1258
1329
  DraggableEvent,
1259
1330
  {
1260
1331
  key: event.id,
@@ -1271,10 +1342,17 @@ var ResourceView = ({
1271
1342
  color: "#fff"
1272
1343
  }
1273
1344
  },
1274
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "truncate" }, event.title)
1345
+ /* @__PURE__ */ import_react12.default.createElement("div", { className: "truncate" }, event.title)
1275
1346
  ))));
1276
1347
  }))));
1277
1348
  };
1349
+
1350
+ // src/components/EventModal.tsx
1351
+ var import_react14 = __toESM(require("react"));
1352
+
1353
+ // src/components/ui/Modal.tsx
1354
+ var import_react13 = __toESM(require("react"));
1355
+ var import_lucide_react6 = require("lucide-react");
1278
1356
  var Modal = ({
1279
1357
  isOpen,
1280
1358
  onClose,
@@ -1283,8 +1361,8 @@ var Modal = ({
1283
1361
  className,
1284
1362
  hideHeader = false
1285
1363
  }) => {
1286
- const overlayRef = React15.useRef(null);
1287
- React15.useEffect(() => {
1364
+ const overlayRef = (0, import_react13.useRef)(null);
1365
+ (0, import_react13.useEffect)(() => {
1288
1366
  const handleEscape = (e) => {
1289
1367
  if (e.key === "Escape") {
1290
1368
  onClose();
@@ -1298,14 +1376,14 @@ var Modal = ({
1298
1376
  };
1299
1377
  }, [isOpen, onClose]);
1300
1378
  if (!isOpen) return null;
1301
- return /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center p-4 bg-black/40 backdrop-blur-md animate-in fade-in duration-300" }, /* @__PURE__ */ React15__namespace.default.createElement(
1379
+ return /* @__PURE__ */ import_react13.default.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center p-4 bg-black/40 backdrop-blur-md animate-in fade-in duration-300" }, /* @__PURE__ */ import_react13.default.createElement(
1302
1380
  "div",
1303
1381
  {
1304
1382
  ref: overlayRef,
1305
1383
  className: "absolute inset-0",
1306
1384
  onClick: onClose
1307
1385
  }
1308
- ), /* @__PURE__ */ React15__namespace.default.createElement(
1386
+ ), /* @__PURE__ */ import_react13.default.createElement(
1309
1387
  "div",
1310
1388
  {
1311
1389
  className: cn(
@@ -1313,7 +1391,7 @@ var Modal = ({
1313
1391
  className
1314
1392
  )
1315
1393
  },
1316
- !hideHeader && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-border/50 shrink-0 bg-gradient-to-r from-muted/20 to-background" }, /* @__PURE__ */ React15__namespace.default.createElement("h3", { className: "text-lg font-semibold text-foreground" }, title), /* @__PURE__ */ React15__namespace.default.createElement(
1394
+ !hideHeader && /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-border/50 shrink-0 bg-gradient-to-r from-muted/20 to-background" }, /* @__PURE__ */ import_react13.default.createElement("h3", { className: "text-lg font-semibold text-foreground" }, title), /* @__PURE__ */ import_react13.default.createElement(
1317
1395
  Button,
1318
1396
  {
1319
1397
  variant: "ghost",
@@ -1321,12 +1399,17 @@ var Modal = ({
1321
1399
  onClick: onClose,
1322
1400
  className: "h-9 w-9 p-0 rounded-xl hover:bg-accent/80 transition-all duration-200"
1323
1401
  },
1324
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.X, { className: "h-4 w-4" }),
1325
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "sr-only" }, "Close")
1402
+ /* @__PURE__ */ import_react13.default.createElement(import_lucide_react6.X, { className: "h-4 w-4" }),
1403
+ /* @__PURE__ */ import_react13.default.createElement("span", { className: "sr-only" }, "Close")
1326
1404
  )),
1327
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn("overflow-y-auto flex-1", !hideHeader && "p-6") }, children)
1405
+ /* @__PURE__ */ import_react13.default.createElement("div", { className: cn("overflow-y-auto flex-1", !hideHeader && "p-6") }, children)
1328
1406
  ));
1329
1407
  };
1408
+
1409
+ // src/components/EventModal.tsx
1410
+ var import_date_fns10 = require("date-fns");
1411
+ var import_framer_motion2 = require("framer-motion");
1412
+ var import_lucide_react7 = require("lucide-react");
1330
1413
  var REMINDER_OPTIONS = [
1331
1414
  { value: 0, label: "At time of event" },
1332
1415
  { value: 5, label: "5 minutes before" },
@@ -1368,13 +1451,10 @@ var EventModal = ({
1368
1451
  initialDate,
1369
1452
  onSave,
1370
1453
  onDelete,
1371
- calendars,
1372
- eventTypes,
1373
- translations
1454
+ calendars
1374
1455
  }) => {
1375
- const [mode, setMode] = React15.useState("create");
1376
- const [activeTab, setActiveTab] = React15.useState("details");
1377
- const [formData, setFormData] = React15.useState({
1456
+ const [mode, setMode] = (0, import_react14.useState)("create");
1457
+ const [formData, setFormData] = (0, import_react14.useState)({
1378
1458
  title: "",
1379
1459
  description: "",
1380
1460
  location: "",
@@ -1388,10 +1468,10 @@ var EventModal = ({
1388
1468
  attachments: [],
1389
1469
  reminders: [{ id: "1", type: "notification", time: 30, label: "30 minutes before" }]
1390
1470
  });
1391
- const [isCalendarDropdownOpen, setIsCalendarDropdownOpen] = React15.useState(false);
1392
- const [isColorPickerOpen, setIsColorPickerOpen] = React15.useState(false);
1393
- const [isReminderDropdownOpen, setIsReminderDropdownOpen] = React15.useState(false);
1394
- const [isGuestsDropdownOpen, setIsGuestsDropdownOpen] = React15.useState(false);
1471
+ const [isCalendarDropdownOpen, setIsCalendarDropdownOpen] = (0, import_react14.useState)(false);
1472
+ const [isColorPickerOpen, setIsColorPickerOpen] = (0, import_react14.useState)(false);
1473
+ const [isReminderDropdownOpen, setIsReminderDropdownOpen] = (0, import_react14.useState)(false);
1474
+ const [isGuestsDropdownOpen, setIsGuestsDropdownOpen] = (0, import_react14.useState)(false);
1395
1475
  const fakeGuests = [
1396
1476
  "alice@example.com",
1397
1477
  "bob@example.com",
@@ -1399,9 +1479,8 @@ var EventModal = ({
1399
1479
  "diana@example.com",
1400
1480
  "evan@example.com"
1401
1481
  ];
1402
- React15.useRef(null);
1403
- const [selectedGuests, setSelectedGuests] = React15.useState([]);
1404
- React15.useEffect(() => {
1482
+ const [selectedGuests, setSelectedGuests] = (0, import_react14.useState)([]);
1483
+ (0, import_react14.useEffect)(() => {
1405
1484
  if (isOpen) {
1406
1485
  if (event) {
1407
1486
  setMode("view");
@@ -1431,7 +1510,6 @@ var EventModal = ({
1431
1510
  reminders: [{ id: "1", type: "notification", time: 30, label: "30 minutes before" }]
1432
1511
  });
1433
1512
  setSelectedGuests([]);
1434
- setActiveTab("details");
1435
1513
  }
1436
1514
  }
1437
1515
  }, [isOpen, event, initialDate, calendars]);
@@ -1466,7 +1544,7 @@ var EventModal = ({
1466
1544
  };
1467
1545
  const formatDateForInput = (date) => {
1468
1546
  if (!date) return "";
1469
- return dateFns.format(date, "yyyy-MM-dd'T'HH:mm");
1547
+ return (0, import_date_fns10.format)(date, "yyyy-MM-dd'T'HH:mm");
1470
1548
  };
1471
1549
  const handleDateChange = (field, value) => {
1472
1550
  const date = new Date(value);
@@ -1516,14 +1594,14 @@ var EventModal = ({
1516
1594
  };
1517
1595
  const getDurationText = () => {
1518
1596
  if (!formData.start || !formData.end) return "";
1519
- const mins = dateFns.differenceInMinutes(formData.end, formData.start);
1597
+ const mins = (0, import_date_fns10.differenceInMinutes)(formData.end, formData.start);
1520
1598
  if (mins < 60) return `${mins} min`;
1521
1599
  const hours = Math.floor(mins / 60);
1522
1600
  const remainingMins = mins % 60;
1523
1601
  if (remainingMins === 0) return `${hours} hr`;
1524
1602
  return `${hours} hr ${remainingMins} min`;
1525
1603
  };
1526
- const renderViewMode = () => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-col bg-background overflow-hidden w-full max-h-[90vh]" }, /* @__PURE__ */ React15__namespace.default.createElement(
1604
+ const renderViewMode = () => /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex flex-col bg-background overflow-hidden w-full max-h-[90vh]" }, /* @__PURE__ */ import_react14.default.createElement(
1527
1605
  "div",
1528
1606
  {
1529
1607
  className: "relative px-6 pt-6 pb-8",
@@ -1531,65 +1609,65 @@ var EventModal = ({
1531
1609
  background: `linear-gradient(135deg, ${event?.color || "#3b82f6"}15 0%, transparent 100%)`
1532
1610
  }
1533
1611
  },
1534
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(
1612
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(
1535
1613
  "div",
1536
1614
  {
1537
1615
  className: "w-3 h-3 rounded-full",
1538
1616
  style: { backgroundColor: event?.color || "#3b82f6" }
1539
1617
  }
1540
- ), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider" }, calendars?.find((c) => c.id === event?.calendarId)?.label || "Event")), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React15__namespace.default.createElement(
1618
+ ), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider" }, calendars?.find((c) => c.id === event?.calendarId)?.label || "Event")), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ import_react14.default.createElement(
1541
1619
  "button",
1542
1620
  {
1543
1621
  onClick: () => setMode("edit"),
1544
1622
  className: "p-2 hover:bg-background/80 rounded-lg transition-all text-muted-foreground hover:text-foreground",
1545
1623
  title: "Edit"
1546
1624
  },
1547
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Edit2, { className: "w-4 h-4" })
1548
- ), /* @__PURE__ */ React15__namespace.default.createElement(
1625
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Edit2, { className: "w-4 h-4" })
1626
+ ), /* @__PURE__ */ import_react14.default.createElement(
1549
1627
  "button",
1550
1628
  {
1551
1629
  onClick: handleDelete,
1552
1630
  className: "p-2 hover:bg-destructive/10 rounded-lg transition-all text-muted-foreground hover:text-destructive",
1553
1631
  title: "Delete"
1554
1632
  },
1555
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Trash2, { className: "w-4 h-4" })
1556
- ), /* @__PURE__ */ React15__namespace.default.createElement(
1633
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Trash2, { className: "w-4 h-4" })
1634
+ ), /* @__PURE__ */ import_react14.default.createElement(
1557
1635
  "button",
1558
1636
  {
1559
1637
  onClick: onClose,
1560
1638
  className: "p-2 hover:bg-background/80 rounded-lg transition-all text-muted-foreground hover:text-foreground",
1561
1639
  title: "Close"
1562
1640
  },
1563
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.X, { className: "w-4 h-4" })
1641
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.X, { className: "w-4 h-4" })
1564
1642
  ))),
1565
- /* @__PURE__ */ React15__namespace.default.createElement("h1", { className: "text-2xl font-bold text-foreground mb-3 leading-tight" }, event?.title || "(No title)"),
1566
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-3 text-sm" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-background/60 backdrop-blur-sm rounded-lg border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Calendar, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "font-medium" }, event?.start && dateFns.format(new Date(event.start), "EEE, MMM d"))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-background/60 backdrop-blur-sm rounded-lg border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Clock, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "font-medium" }, event?.start && dateFns.format(new Date(event.start), "h:mm a"), " \u2013 ", event?.end && dateFns.format(new Date(event.end), "h:mm a"))))
1567
- ), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-6 pb-6 space-y-4 overflow-y-auto flex-1" }, event?.location && /* @__PURE__ */ React15__namespace.default.createElement(
1568
- framerMotion.motion.div,
1643
+ /* @__PURE__ */ import_react14.default.createElement("h1", { className: "text-2xl font-bold text-foreground mb-3 leading-tight" }, event?.title || "(No title)"),
1644
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-3 text-sm" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-background/60 backdrop-blur-sm rounded-lg border border-border/30" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Calendar, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "font-medium" }, event?.start && (0, import_date_fns10.format)(new Date(event.start), "EEE, MMM d"))), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-background/60 backdrop-blur-sm rounded-lg border border-border/30" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Clock, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "font-medium" }, event?.start && (0, import_date_fns10.format)(new Date(event.start), "h:mm a"), " \u2013 ", event?.end && (0, import_date_fns10.format)(new Date(event.end), "h:mm a"))))
1645
+ ), /* @__PURE__ */ import_react14.default.createElement("div", { className: "px-6 pb-6 space-y-4 overflow-y-auto flex-1" }, event?.location && /* @__PURE__ */ import_react14.default.createElement(
1646
+ import_framer_motion2.motion.div,
1569
1647
  {
1570
1648
  initial: { opacity: 0, y: 10 },
1571
1649
  animate: { opacity: 1, y: 0 },
1572
1650
  className: "flex items-start gap-3 p-4 rounded-2xl bg-muted/30 border border-border/30 group hover:bg-muted/50 transition-all cursor-pointer"
1573
1651
  },
1574
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.MapPin, { className: "w-5 h-5 text-primary" })),
1575
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-sm font-medium text-foreground" }, event.location), /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-xs text-muted-foreground mt-0.5" }, "Click to open in maps")),
1576
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ExternalLink, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
1577
- ), event?.guests && event.guests.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement(
1578
- framerMotion.motion.div,
1652
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.MapPin, { className: "w-5 h-5 text-primary" })),
1653
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ import_react14.default.createElement("p", { className: "text-sm font-medium text-foreground" }, event.location), /* @__PURE__ */ import_react14.default.createElement("p", { className: "text-xs text-muted-foreground mt-0.5" }, "Click to open in maps")),
1654
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.ExternalLink, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
1655
+ ), event?.guests && event.guests.length > 0 && /* @__PURE__ */ import_react14.default.createElement(
1656
+ import_framer_motion2.motion.div,
1579
1657
  {
1580
1658
  initial: { opacity: 0, y: 10 },
1581
1659
  animate: { opacity: 1, y: 0 },
1582
1660
  transition: { delay: 0.05 },
1583
1661
  className: "space-y-3"
1584
1662
  },
1585
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, event.guests.length, " ", event.guests.length > 1 ? "Guests" : "Guest"))),
1586
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, event.guests.map((email, index) => /* @__PURE__ */ React15__namespace.default.createElement(
1663
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm font-medium text-foreground" }, event.guests.length, " ", event.guests.length > 1 ? "Guests" : "Guest"))),
1664
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex flex-wrap gap-2" }, event.guests.map((email, index) => /* @__PURE__ */ import_react14.default.createElement(
1587
1665
  "div",
1588
1666
  {
1589
1667
  key: index,
1590
1668
  className: "flex items-center gap-2 px-3 py-2 rounded-xl bg-muted/30 border border-border/30 hover:bg-muted/50 transition-all cursor-pointer group"
1591
1669
  },
1592
- /* @__PURE__ */ React15__namespace.default.createElement(
1670
+ /* @__PURE__ */ import_react14.default.createElement(
1593
1671
  "div",
1594
1672
  {
1595
1673
  className: "w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold text-white",
@@ -1597,18 +1675,18 @@ var EventModal = ({
1597
1675
  },
1598
1676
  email[0].toUpperCase()
1599
1677
  ),
1600
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-sm font-medium text-foreground" }, email.split("@")[0]), /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-xs text-muted-foreground truncate" }, email))
1678
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react14.default.createElement("p", { className: "text-sm font-medium text-foreground" }, email.split("@")[0]), /* @__PURE__ */ import_react14.default.createElement("p", { className: "text-xs text-muted-foreground truncate" }, email))
1601
1679
  )))
1602
- ), event?.reminders && event.reminders.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement(
1603
- framerMotion.motion.div,
1680
+ ), event?.reminders && event.reminders.length > 0 && /* @__PURE__ */ import_react14.default.createElement(
1681
+ import_framer_motion2.motion.div,
1604
1682
  {
1605
1683
  initial: { opacity: 0, y: 10 },
1606
1684
  animate: { opacity: 1, y: 0 },
1607
1685
  transition: { delay: 0.1 },
1608
1686
  className: "flex items-center gap-3"
1609
1687
  },
1610
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-2 bg-amber-500/10 rounded-xl" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Bell, { className: "w-4 h-4 text-amber-500" })),
1611
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, event.reminders.map((reminder) => /* @__PURE__ */ React15__namespace.default.createElement(
1688
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "p-2 bg-amber-500/10 rounded-xl" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Bell, { className: "w-4 h-4 text-amber-500" })),
1689
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex flex-wrap gap-2" }, event.reminders.map((reminder) => /* @__PURE__ */ import_react14.default.createElement(
1612
1690
  "span",
1613
1691
  {
1614
1692
  key: reminder.id,
@@ -1616,45 +1694,45 @@ var EventModal = ({
1616
1694
  },
1617
1695
  reminder.label || `${reminder.time} min before`
1618
1696
  )))
1619
- ), event?.description && /* @__PURE__ */ React15__namespace.default.createElement(
1620
- framerMotion.motion.div,
1697
+ ), event?.description && /* @__PURE__ */ import_react14.default.createElement(
1698
+ import_framer_motion2.motion.div,
1621
1699
  {
1622
1700
  initial: { opacity: 0, y: 10 },
1623
1701
  animate: { opacity: 1, y: 0 },
1624
1702
  transition: { delay: 0.15 },
1625
1703
  className: "space-y-2"
1626
1704
  },
1627
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Notes")),
1628
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-sm text-foreground/80 whitespace-pre-wrap leading-relaxed pl-6 p-3 rounded-xl bg-muted/20 border border-border/30" }, event.description)
1629
- ), event?.attachments && event.attachments.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement(
1630
- framerMotion.motion.div,
1705
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Notes")),
1706
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "text-sm text-foreground/80 whitespace-pre-wrap leading-relaxed pl-6 p-3 rounded-xl bg-muted/20 border border-border/30" }, event.description)
1707
+ ), event?.attachments && event.attachments.length > 0 && /* @__PURE__ */ import_react14.default.createElement(
1708
+ import_framer_motion2.motion.div,
1631
1709
  {
1632
1710
  initial: { opacity: 0, y: 10 },
1633
1711
  animate: { opacity: 1, y: 0 },
1634
1712
  transition: { delay: 0.2 },
1635
1713
  className: "space-y-2"
1636
1714
  },
1637
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Paperclip, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Attachments")),
1638
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid gap-2" }, event.attachments.map((att) => /* @__PURE__ */ React15__namespace.default.createElement(
1715
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Paperclip, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Attachments")),
1716
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "grid gap-2" }, event.attachments.map((att) => /* @__PURE__ */ import_react14.default.createElement(
1639
1717
  "div",
1640
1718
  {
1641
1719
  key: att.id,
1642
1720
  onClick: () => handleDownload(att),
1643
1721
  className: "flex items-center gap-3 p-3 rounded-xl border border-border/30 bg-muted/20 hover:bg-muted/40 transition-all cursor-pointer group"
1644
1722
  },
1645
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-2 bg-primary/10 rounded-lg" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.File, { className: "w-4 h-4 text-primary" })),
1646
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-sm font-medium text-foreground truncate" }, att.name), /* @__PURE__ */ React15__namespace.default.createElement("p", { className: "text-xs text-muted-foreground" }, att.size)),
1647
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Download, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
1723
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "p-2 bg-primary/10 rounded-lg" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.File, { className: "w-4 h-4 text-primary" })),
1724
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react14.default.createElement("p", { className: "text-sm font-medium text-foreground truncate" }, att.name), /* @__PURE__ */ import_react14.default.createElement("p", { className: "text-xs text-muted-foreground" }, att.size)),
1725
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Download, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
1648
1726
  )))
1649
1727
  )));
1650
- const renderEditMode = () => /* @__PURE__ */ React15__namespace.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col bg-background overflow-hidden w-full max-h-[85vh]" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between px-5 py-4 border-b border-border/50 shrink-0" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React15__namespace.default.createElement(
1728
+ const renderEditMode = () => /* @__PURE__ */ import_react14.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col bg-background overflow-hidden w-full max-h-[85vh]" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center justify-between px-5 py-4 border-b border-border/50 shrink-0" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react14.default.createElement(
1651
1729
  "button",
1652
1730
  {
1653
1731
  type: "button",
1654
1732
  onClick: () => setIsColorPickerOpen(!isColorPickerOpen),
1655
1733
  className: "relative p-1"
1656
1734
  },
1657
- /* @__PURE__ */ React15__namespace.default.createElement(
1735
+ /* @__PURE__ */ import_react14.default.createElement(
1658
1736
  "div",
1659
1737
  {
1660
1738
  className: "w-5 h-5 rounded-full cursor-pointer hover:scale-110 transition-transform",
@@ -1664,7 +1742,7 @@ var EventModal = ({
1664
1742
  }
1665
1743
  }
1666
1744
  ),
1667
- isColorPickerOpen && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute top-full left-0 mt-2 p-2 bg-background border border-border rounded-xl shadow-xl z-50 flex flex-wrap gap-1.5 w-[180px]" }, COLOR_PALETTE.map((color) => /* @__PURE__ */ React15__namespace.default.createElement(
1745
+ isColorPickerOpen && /* @__PURE__ */ import_react14.default.createElement("div", { className: "absolute top-full left-0 mt-2 p-2 bg-background border border-border rounded-xl shadow-xl z-50 flex flex-wrap gap-1.5 w-[180px]" }, COLOR_PALETTE.map((color) => /* @__PURE__ */ import_react14.default.createElement(
1668
1746
  "button",
1669
1747
  {
1670
1748
  key: color,
@@ -1680,15 +1758,15 @@ var EventModal = ({
1680
1758
  style: { backgroundColor: color, color }
1681
1759
  }
1682
1760
  )))
1683
- ), /* @__PURE__ */ React15__namespace.default.createElement("h2", { className: "text-lg font-semibold text-foreground" }, mode === "edit" ? "Edit Event" : "New Event")), /* @__PURE__ */ React15__namespace.default.createElement(
1761
+ ), /* @__PURE__ */ import_react14.default.createElement("h2", { className: "text-lg font-semibold text-foreground" }, mode === "edit" ? "Edit Event" : "New Event")), /* @__PURE__ */ import_react14.default.createElement(
1684
1762
  "button",
1685
1763
  {
1686
1764
  type: "button",
1687
1765
  onClick: onClose,
1688
1766
  className: "p-2 hover:bg-accent rounded-xl transition-all text-muted-foreground hover:text-foreground"
1689
1767
  },
1690
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.X, { className: "w-4 h-4" })
1691
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-5 py-4 space-y-5" }, /* @__PURE__ */ React15__namespace.default.createElement("div", null, /* @__PURE__ */ React15__namespace.default.createElement(
1768
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.X, { className: "w-4 h-4" })
1769
+ )), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "px-5 py-4 space-y-5" }, /* @__PURE__ */ import_react14.default.createElement("div", null, /* @__PURE__ */ import_react14.default.createElement(
1692
1770
  "input",
1693
1771
  {
1694
1772
  type: "text",
@@ -1699,7 +1777,7 @@ var EventModal = ({
1699
1777
  onChange: (e) => setFormData({ ...formData, title: e.target.value }),
1700
1778
  placeholder: "Add title"
1701
1779
  }
1702
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-3 p-4 rounded-2xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl shrink-0" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Clock, { className: "w-5 h-5 text-primary" })), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-2 gap-3" }, /* @__PURE__ */ React15__namespace.default.createElement("div", null, /* @__PURE__ */ React15__namespace.default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, "Start"), /* @__PURE__ */ React15__namespace.default.createElement(
1780
+ )), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-3 p-4 rounded-2xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl shrink-0" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Clock, { className: "w-5 h-5 text-primary" })), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex-1 grid grid-cols-2 gap-3" }, /* @__PURE__ */ import_react14.default.createElement("div", null, /* @__PURE__ */ import_react14.default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, "Start"), /* @__PURE__ */ import_react14.default.createElement(
1703
1781
  "input",
1704
1782
  {
1705
1783
  type: "datetime-local",
@@ -1707,7 +1785,7 @@ var EventModal = ({
1707
1785
  value: formatDateForInput(formData.start),
1708
1786
  onChange: (e) => handleDateChange("start", e.target.value)
1709
1787
  }
1710
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", null, /* @__PURE__ */ React15__namespace.default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, "End"), /* @__PURE__ */ React15__namespace.default.createElement(
1788
+ )), /* @__PURE__ */ import_react14.default.createElement("div", null, /* @__PURE__ */ import_react14.default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, "End"), /* @__PURE__ */ import_react14.default.createElement(
1711
1789
  "input",
1712
1790
  {
1713
1791
  type: "datetime-local",
@@ -1715,16 +1793,16 @@ var EventModal = ({
1715
1793
  value: formatDateForInput(formData.end),
1716
1794
  onChange: (e) => handleDateChange("end", e.target.value)
1717
1795
  }
1718
- )))), getDurationText() && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-medium px-3 py-1 rounded-full bg-primary/10 text-primary" }, getDurationText())), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Bell, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Reminders")), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React15__namespace.default.createElement(
1796
+ )))), getDurationText() && /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-xs font-medium px-3 py-1 rounded-full bg-primary/10 text-primary" }, getDurationText())), /* @__PURE__ */ import_react14.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Bell, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Reminders")), /* @__PURE__ */ import_react14.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react14.default.createElement(
1719
1797
  "button",
1720
1798
  {
1721
1799
  type: "button",
1722
1800
  onClick: () => setIsReminderDropdownOpen(!isReminderDropdownOpen),
1723
1801
  className: "flex items-center gap-1 text-xs font-medium text-primary hover:text-primary/80 transition-colors"
1724
1802
  },
1725
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Plus, { className: "w-3.5 h-3.5" }),
1803
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Plus, { className: "w-3.5 h-3.5" }),
1726
1804
  "Add"
1727
- ), isReminderDropdownOpen && /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, null, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsReminderDropdownOpen(false) }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute right-0 top-full mt-1 w-48 bg-background border border-border rounded-xl shadow-xl z-50 py-1 max-h-60 overflow-y-auto" }, REMINDER_OPTIONS.map((option) => /* @__PURE__ */ React15__namespace.default.createElement(
1805
+ ), isReminderDropdownOpen && /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsReminderDropdownOpen(false) }), /* @__PURE__ */ import_react14.default.createElement("div", { className: "absolute right-0 top-full mt-1 w-48 bg-background border border-border rounded-xl shadow-xl z-50 py-1 max-h-60 overflow-y-auto" }, REMINDER_OPTIONS.map((option) => /* @__PURE__ */ import_react14.default.createElement(
1728
1806
  "button",
1729
1807
  {
1730
1808
  key: option.value,
@@ -1733,58 +1811,58 @@ var EventModal = ({
1733
1811
  className: "w-full px-3 py-2 text-left text-sm hover:bg-accent transition-colors"
1734
1812
  },
1735
1813
  option.label
1736
- )))))), formData.reminders && formData.reminders.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, formData.reminders.map((reminder) => /* @__PURE__ */ React15__namespace.default.createElement(
1814
+ )))))), formData.reminders && formData.reminders.length > 0 && /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex flex-wrap gap-2" }, formData.reminders.map((reminder) => /* @__PURE__ */ import_react14.default.createElement(
1737
1815
  "div",
1738
1816
  {
1739
1817
  key: reminder.id,
1740
1818
  className: "flex items-center gap-2 px-3 py-1.5 rounded-full bg-amber-500/10 border border-amber-500/20"
1741
1819
  },
1742
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.BellRing, { className: "w-3.5 h-3.5 text-amber-500" }),
1743
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-medium text-amber-600 dark:text-amber-400" }, reminder.label),
1744
- /* @__PURE__ */ React15__namespace.default.createElement(
1820
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.BellRing, { className: "w-3.5 h-3.5 text-amber-500" }),
1821
+ /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-xs font-medium text-amber-600 dark:text-amber-400" }, reminder.label),
1822
+ /* @__PURE__ */ import_react14.default.createElement(
1745
1823
  "button",
1746
1824
  {
1747
1825
  type: "button",
1748
1826
  onClick: () => removeReminder(reminder.id),
1749
1827
  className: "p-0.5 hover:bg-amber-500/20 rounded-full transition-colors"
1750
1828
  },
1751
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.X, { className: "w-3 h-3 text-amber-500" })
1829
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.X, { className: "w-3 h-3 text-amber-500" })
1752
1830
  )
1753
- )))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Guests")), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React15__namespace.default.createElement(
1831
+ )))), /* @__PURE__ */ import_react14.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Guests")), /* @__PURE__ */ import_react14.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react14.default.createElement(
1754
1832
  "button",
1755
1833
  {
1756
1834
  type: "button",
1757
1835
  onClick: () => setIsGuestsDropdownOpen(!isGuestsDropdownOpen),
1758
1836
  className: "w-full flex items-center justify-between px-4 py-3 bg-muted/20 border border-border/30 rounded-xl text-sm text-left hover:bg-muted/30 transition-all"
1759
1837
  },
1760
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: selectedGuests.length > 0 ? "text-foreground font-medium" : "text-muted-foreground" }, selectedGuests.length > 0 ? `${selectedGuests.length} guest${selectedGuests.length > 1 ? "s" : ""} added` : "Add guests"),
1761
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform", isGuestsDropdownOpen && "rotate-180") })
1762
- ), isGuestsDropdownOpen && /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, null, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsGuestsDropdownOpen(false) }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute z-50 w-full mt-2 bg-background border border-border rounded-xl shadow-xl max-h-48 overflow-y-auto" }, fakeGuests.map((email) => /* @__PURE__ */ React15__namespace.default.createElement(
1838
+ /* @__PURE__ */ import_react14.default.createElement("span", { className: selectedGuests.length > 0 ? "text-foreground font-medium" : "text-muted-foreground" }, selectedGuests.length > 0 ? `${selectedGuests.length} guest${selectedGuests.length > 1 ? "s" : ""} added` : "Add guests"),
1839
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform", isGuestsDropdownOpen && "rotate-180") })
1840
+ ), isGuestsDropdownOpen && /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsGuestsDropdownOpen(false) }), /* @__PURE__ */ import_react14.default.createElement("div", { className: "absolute z-50 w-full mt-2 bg-background border border-border rounded-xl shadow-xl max-h-48 overflow-y-auto" }, fakeGuests.map((email) => /* @__PURE__ */ import_react14.default.createElement(
1763
1841
  "div",
1764
1842
  {
1765
1843
  key: email,
1766
1844
  className: "px-4 py-3 hover:bg-accent cursor-pointer flex items-center gap-3 transition-colors",
1767
1845
  onClick: () => toggleGuest(email)
1768
1846
  },
1769
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn(
1847
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: cn(
1770
1848
  "w-5 h-5 rounded-md border-2 flex items-center justify-center transition-all",
1771
1849
  selectedGuests.includes(email) ? "bg-primary border-primary" : "border-border"
1772
- ) }, selectedGuests.includes(email) && /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Check, { className: "w-3 h-3 text-primary-foreground" })),
1773
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(
1850
+ ) }, selectedGuests.includes(email) && /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Check, { className: "w-3 h-3 text-primary-foreground" })),
1851
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(
1774
1852
  "div",
1775
1853
  {
1776
1854
  className: "w-7 h-7 rounded-full flex items-center justify-center text-xs font-semibold text-white",
1777
1855
  style: { backgroundColor: `hsl(${fakeGuests.indexOf(email) * 60}, 70%, 50%)` }
1778
1856
  },
1779
1857
  email[0].toUpperCase()
1780
- ), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm" }, email))
1781
- ))))), selectedGuests.length > 0 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, selectedGuests.map((email) => /* @__PURE__ */ React15__namespace.default.createElement(
1858
+ ), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm" }, email))
1859
+ ))))), selectedGuests.length > 0 && /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, selectedGuests.map((email) => /* @__PURE__ */ import_react14.default.createElement(
1782
1860
  "div",
1783
1861
  {
1784
1862
  key: email,
1785
1863
  className: "flex items-center gap-2 pl-1 pr-2 py-1 bg-muted/30 border border-border/30 rounded-full"
1786
1864
  },
1787
- /* @__PURE__ */ React15__namespace.default.createElement(
1865
+ /* @__PURE__ */ import_react14.default.createElement(
1788
1866
  "div",
1789
1867
  {
1790
1868
  className: "w-6 h-6 rounded-full flex items-center justify-center text-xs font-semibold text-white",
@@ -1792,17 +1870,17 @@ var EventModal = ({
1792
1870
  },
1793
1871
  email[0].toUpperCase()
1794
1872
  ),
1795
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-xs font-medium text-foreground" }, email.split("@")[0]),
1796
- /* @__PURE__ */ React15__namespace.default.createElement(
1873
+ /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-xs font-medium text-foreground" }, email.split("@")[0]),
1874
+ /* @__PURE__ */ import_react14.default.createElement(
1797
1875
  "button",
1798
1876
  {
1799
1877
  type: "button",
1800
1878
  onClick: () => toggleGuest(email),
1801
1879
  className: "p-0.5 hover:bg-destructive/10 rounded-full transition-colors"
1802
1880
  },
1803
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.X, { className: "w-3 h-3 text-muted-foreground" })
1881
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.X, { className: "w-3 h-3 text-muted-foreground" })
1804
1882
  )
1805
- )))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.MapPin, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ React15__namespace.default.createElement(
1883
+ )))), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.MapPin, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ import_react14.default.createElement(
1806
1884
  "input",
1807
1885
  {
1808
1886
  type: "text",
@@ -1811,7 +1889,7 @@ var EventModal = ({
1811
1889
  value: formData.location || "",
1812
1890
  onChange: (e) => setFormData({ ...formData, location: e.target.value })
1813
1891
  }
1814
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Notes")), /* @__PURE__ */ React15__namespace.default.createElement(
1892
+ )), /* @__PURE__ */ import_react14.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm font-medium text-foreground" }, "Notes")), /* @__PURE__ */ import_react14.default.createElement(
1815
1893
  "textarea",
1816
1894
  {
1817
1895
  className: "w-full bg-muted/20 border border-border/30 rounded-xl px-4 py-3 text-sm min-h-[100px] resize-none text-foreground placeholder-muted-foreground focus:border-primary focus:ring-2 focus:ring-primary/20 transition-all",
@@ -1819,7 +1897,7 @@ var EventModal = ({
1819
1897
  value: formData.description || "",
1820
1898
  onChange: (e) => setFormData({ ...formData, description: e.target.value })
1821
1899
  }
1822
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Repeat, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ React15__namespace.default.createElement(
1900
+ )), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Repeat, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ import_react14.default.createElement(
1823
1901
  "select",
1824
1902
  {
1825
1903
  className: "flex-1 bg-transparent text-sm text-foreground focus:outline-none cursor-pointer",
@@ -1838,28 +1916,28 @@ var EventModal = ({
1838
1916
  }
1839
1917
  }
1840
1918
  },
1841
- /* @__PURE__ */ React15__namespace.default.createElement("option", { value: "" }, "Does not repeat"),
1842
- /* @__PURE__ */ React15__namespace.default.createElement("option", { value: "DAILY" }, "Daily"),
1843
- /* @__PURE__ */ React15__namespace.default.createElement("option", { value: "WEEKLY" }, "Weekly"),
1844
- /* @__PURE__ */ React15__namespace.default.createElement("option", { value: "MONTHLY" }, "Monthly"),
1845
- /* @__PURE__ */ React15__namespace.default.createElement("option", { value: "YEARLY" }, "Yearly")
1846
- )), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center justify-between p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Tag, { className: "w-5 h-5 text-muted-foreground" }), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm text-foreground" }, "Calendar")), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React15__namespace.default.createElement(
1919
+ /* @__PURE__ */ import_react14.default.createElement("option", { value: "" }, "Does not repeat"),
1920
+ /* @__PURE__ */ import_react14.default.createElement("option", { value: "DAILY" }, "Daily"),
1921
+ /* @__PURE__ */ import_react14.default.createElement("option", { value: "WEEKLY" }, "Weekly"),
1922
+ /* @__PURE__ */ import_react14.default.createElement("option", { value: "MONTHLY" }, "Monthly"),
1923
+ /* @__PURE__ */ import_react14.default.createElement("option", { value: "YEARLY" }, "Yearly")
1924
+ )), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center justify-between p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Tag, { className: "w-5 h-5 text-muted-foreground" }), /* @__PURE__ */ import_react14.default.createElement("span", { className: "text-sm text-foreground" }, "Calendar")), /* @__PURE__ */ import_react14.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react14.default.createElement(
1847
1925
  "button",
1848
1926
  {
1849
1927
  type: "button",
1850
1928
  onClick: () => setIsCalendarDropdownOpen(!isCalendarDropdownOpen),
1851
1929
  className: "flex items-center gap-2 px-3 py-1.5 bg-background border border-border/50 rounded-lg text-sm hover:bg-accent/50 transition-all"
1852
1930
  },
1853
- /* @__PURE__ */ React15__namespace.default.createElement(
1931
+ /* @__PURE__ */ import_react14.default.createElement(
1854
1932
  "div",
1855
1933
  {
1856
1934
  className: "w-3 h-3 rounded-full",
1857
1935
  style: { backgroundColor: calendars?.find((c) => c.id === formData.calendarId)?.color || "#3b82f6" }
1858
1936
  }
1859
1937
  ),
1860
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "font-medium" }, calendars?.find((c) => c.id === formData.calendarId)?.label || "Select"),
1861
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.ChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground" })
1862
- ), isCalendarDropdownOpen && /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, null, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsCalendarDropdownOpen(false) }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute right-0 bottom-full mb-2 w-48 bg-background border border-border rounded-xl shadow-xl z-50 py-1" }, calendars?.map((cal) => /* @__PURE__ */ React15__namespace.default.createElement(
1938
+ /* @__PURE__ */ import_react14.default.createElement("span", { className: "font-medium" }, calendars?.find((c) => c.id === formData.calendarId)?.label || "Select"),
1939
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.ChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground" })
1940
+ ), isCalendarDropdownOpen && /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsCalendarDropdownOpen(false) }), /* @__PURE__ */ import_react14.default.createElement("div", { className: "absolute right-0 bottom-full mb-2 w-48 bg-background border border-border rounded-xl shadow-xl z-50 py-1" }, calendars?.map((cal) => /* @__PURE__ */ import_react14.default.createElement(
1863
1941
  "button",
1864
1942
  {
1865
1943
  key: cal.id,
@@ -1874,19 +1952,19 @@ var EventModal = ({
1874
1952
  setIsCalendarDropdownOpen(false);
1875
1953
  }
1876
1954
  },
1877
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-3 h-3 rounded-full", style: { backgroundColor: cal.color } }),
1878
- /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "flex-1 text-sm" }, cal.label),
1879
- formData.calendarId === cal.id && /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Check, { className: "w-4 h-4 text-primary" })
1880
- )))))))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-5 py-4 border-t border-border/50 flex items-center justify-between bg-muted/10 shrink-0" }, mode === "edit" && /* @__PURE__ */ React15__namespace.default.createElement(
1955
+ /* @__PURE__ */ import_react14.default.createElement("div", { className: "w-3 h-3 rounded-full", style: { backgroundColor: cal.color } }),
1956
+ /* @__PURE__ */ import_react14.default.createElement("span", { className: "flex-1 text-sm" }, cal.label),
1957
+ formData.calendarId === cal.id && /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Check, { className: "w-4 h-4 text-primary" })
1958
+ )))))))), /* @__PURE__ */ import_react14.default.createElement("div", { className: "px-5 py-4 border-t border-border/50 flex items-center justify-between bg-muted/10 shrink-0" }, mode === "edit" && /* @__PURE__ */ import_react14.default.createElement(
1881
1959
  "button",
1882
1960
  {
1883
1961
  type: "button",
1884
1962
  onClick: handleDelete,
1885
1963
  className: "flex items-center gap-2 px-4 py-2 text-destructive hover:bg-destructive/10 rounded-xl transition-all text-sm font-medium"
1886
1964
  },
1887
- /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Trash2, { className: "w-4 h-4" }),
1965
+ /* @__PURE__ */ import_react14.default.createElement(import_lucide_react7.Trash2, { className: "w-4 h-4" }),
1888
1966
  "Delete"
1889
- ), mode === "create" && /* @__PURE__ */ React15__namespace.default.createElement("div", null), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(
1967
+ ), mode === "create" && /* @__PURE__ */ import_react14.default.createElement("div", null), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react14.default.createElement(
1890
1968
  "button",
1891
1969
  {
1892
1970
  type: "button",
@@ -1894,7 +1972,7 @@ var EventModal = ({
1894
1972
  className: "px-4 py-2.5 text-muted-foreground hover:text-foreground font-medium text-sm rounded-xl transition-all hover:bg-accent"
1895
1973
  },
1896
1974
  "Cancel"
1897
- ), /* @__PURE__ */ React15__namespace.default.createElement(
1975
+ ), /* @__PURE__ */ import_react14.default.createElement(
1898
1976
  "button",
1899
1977
  {
1900
1978
  type: "submit",
@@ -1902,8 +1980,8 @@ var EventModal = ({
1902
1980
  },
1903
1981
  mode === "edit" ? "Save Changes" : "Create Event"
1904
1982
  ))));
1905
- return /* @__PURE__ */ React15__namespace.default.createElement(Modal, { isOpen, onClose, hideHeader: true, className: "p-0 overflow-hidden max-w-lg rounded-2xl shadow-2xl" }, /* @__PURE__ */ React15__namespace.default.createElement(framerMotion.AnimatePresence, { mode: "wait" }, mode === "view" && event ? /* @__PURE__ */ React15__namespace.default.createElement(
1906
- framerMotion.motion.div,
1983
+ return /* @__PURE__ */ import_react14.default.createElement(Modal, { isOpen, onClose, hideHeader: true, className: "p-0 overflow-hidden max-w-lg rounded-2xl shadow-2xl" }, /* @__PURE__ */ import_react14.default.createElement(import_framer_motion2.AnimatePresence, { mode: "wait" }, mode === "view" && event ? /* @__PURE__ */ import_react14.default.createElement(
1984
+ import_framer_motion2.motion.div,
1907
1985
  {
1908
1986
  key: "view",
1909
1987
  initial: { opacity: 0 },
@@ -1912,8 +1990,8 @@ var EventModal = ({
1912
1990
  transition: { duration: 0.15 }
1913
1991
  },
1914
1992
  renderViewMode()
1915
- ) : /* @__PURE__ */ React15__namespace.default.createElement(
1916
- framerMotion.motion.div,
1993
+ ) : /* @__PURE__ */ import_react14.default.createElement(
1994
+ import_framer_motion2.motion.div,
1917
1995
  {
1918
1996
  key: "edit",
1919
1997
  initial: { opacity: 0 },
@@ -1924,9 +2002,12 @@ var EventModal = ({
1924
2002
  renderEditMode()
1925
2003
  )));
1926
2004
  };
1927
- var Skeleton = ({ className, style }) => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: cn("animate-pulse bg-muted/40 rounded", className), style });
1928
- var MonthViewSkeleton = () => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid grid-cols-7 border-b border-border/50 bg-muted/10" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-4 w-8 mx-auto" })))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "grid grid-cols-7 flex-1" }, Array.from({ length: 35 }).map((_, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: i, className: "min-h-[120px] border-r border-b border-border/30 p-2" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-4 w-6 mb-2" }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-1" }, Math.random() > 0.5 && /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-5 w-full rounded-md" }), Math.random() > 0.7 && /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-5 w-3/4 rounded-md" }))))));
1929
- var WeekViewSkeleton = () => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex border-b border-border/50 bg-muted/10" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-16 p-3 border-r border-border/30" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-8 w-10 mx-auto" })), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-3 w-8 mx-auto mb-1" }), /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-8 w-8 mx-auto rounded-xl" }))))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-16 border-r border-border/30" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: i, className: "h-[60px] relative" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-4 w-10 absolute right-2 -translate-y-1/2" })))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, Array.from({ length: 7 }).map((_, colIdx) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: colIdx, className: "relative border-r border-border/30 last:border-r-0" }, Array.from({ length: 10 }).map((_2, rowIdx) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: rowIdx, className: "h-[60px] border-b border-dashed border-border/20" })), Math.random() > 0.3 && /* @__PURE__ */ React15__namespace.default.createElement(
2005
+
2006
+ // src/components/Skeleton.tsx
2007
+ var import_react15 = __toESM(require("react"));
2008
+ var Skeleton = ({ className, style }) => /* @__PURE__ */ import_react15.default.createElement("div", { className: cn("animate-pulse bg-muted/40 rounded", className), style });
2009
+ var MonthViewSkeleton = () => /* @__PURE__ */ import_react15.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "grid grid-cols-7 border-b border-border/50 bg-muted/10" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ import_react15.default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-4 w-8 mx-auto" })))), /* @__PURE__ */ import_react15.default.createElement("div", { className: "grid grid-cols-7 flex-1" }, Array.from({ length: 35 }).map((_, i) => /* @__PURE__ */ import_react15.default.createElement("div", { key: i, className: "min-h-[120px] border-r border-b border-border/30 p-2" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-4 w-6 mb-2" }), /* @__PURE__ */ import_react15.default.createElement("div", { className: "space-y-1" }, Math.random() > 0.5 && /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-5 w-full rounded-md" }), Math.random() > 0.7 && /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-5 w-3/4 rounded-md" }))))));
2010
+ var WeekViewSkeleton = () => /* @__PURE__ */ import_react15.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex border-b border-border/50 bg-muted/10" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "w-16 p-3 border-r border-border/30" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-8 w-10 mx-auto" })), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex-1 grid grid-cols-7" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ import_react15.default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-3 w-8 mx-auto mb-1" }), /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-8 w-8 mx-auto rounded-xl" }))))), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "w-16 border-r border-border/30" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ import_react15.default.createElement("div", { key: i, className: "h-[60px] relative" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-4 w-10 absolute right-2 -translate-y-1/2" })))), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, Array.from({ length: 7 }).map((_, colIdx) => /* @__PURE__ */ import_react15.default.createElement("div", { key: colIdx, className: "relative border-r border-border/30 last:border-r-0" }, Array.from({ length: 10 }).map((_2, rowIdx) => /* @__PURE__ */ import_react15.default.createElement("div", { key: rowIdx, className: "h-[60px] border-b border-dashed border-border/20" })), Math.random() > 0.3 && /* @__PURE__ */ import_react15.default.createElement(
1930
2011
  Skeleton,
1931
2012
  {
1932
2013
  className: "absolute rounded-md",
@@ -1938,20 +2019,25 @@ var WeekViewSkeleton = () => /* @__PURE__ */ React15__namespace.default.createEl
1938
2019
  }
1939
2020
  }
1940
2021
  ))))));
1941
- var DayViewSkeleton = () => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-6 py-4 border-b border-border/50 bg-muted/10 text-center" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-7 w-64 mx-auto" })), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "w-20 border-r border-border/30 bg-muted/5" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: i, className: "h-[80px] relative" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-4 w-12 absolute left-1/2 -translate-x-1/2 -translate-y-1/2" })))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 relative" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: i, className: "h-[80px] border-b border-dashed border-border/20" })), /* @__PURE__ */ React15__namespace.default.createElement(
2022
+ var DayViewSkeleton = () => /* @__PURE__ */ import_react15.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "px-6 py-4 border-b border-border/50 bg-muted/10 text-center" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-7 w-64 mx-auto" })), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "w-20 border-r border-border/30 bg-muted/5" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ import_react15.default.createElement("div", { key: i, className: "h-[80px] relative" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-4 w-12 absolute left-1/2 -translate-x-1/2 -translate-y-1/2" })))), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex-1 relative" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ import_react15.default.createElement("div", { key: i, className: "h-[80px] border-b border-dashed border-border/20" })), /* @__PURE__ */ import_react15.default.createElement(
1942
2023
  Skeleton,
1943
2024
  {
1944
2025
  className: "absolute rounded-lg left-4 right-4",
1945
2026
  style: { top: "160px", height: "120px" }
1946
2027
  }
1947
- ), /* @__PURE__ */ React15__namespace.default.createElement(
2028
+ ), /* @__PURE__ */ import_react15.default.createElement(
1948
2029
  Skeleton,
1949
2030
  {
1950
2031
  className: "absolute rounded-lg left-4 right-4",
1951
2032
  style: { top: "400px", height: "80px" }
1952
2033
  }
1953
2034
  ))));
1954
- var AgendaViewSkeleton = () => /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden p-6" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-6" }, Array.from({ length: 4 }).map((_, dayIdx) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: dayIdx }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-5 w-40 mb-4" }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "space-y-3" }, Array.from({ length: 2 + Math.floor(Math.random() * 3) }).map((_2, eventIdx) => /* @__PURE__ */ React15__namespace.default.createElement("div", { key: eventIdx, className: "flex items-center gap-4 p-3 rounded-xl bg-muted/10" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-10 w-10 rounded-lg" }), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React15__namespace.default.createElement(Skeleton, { className: "h-3 w-1/2" })))))))));
2035
+ var AgendaViewSkeleton = () => /* @__PURE__ */ import_react15.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden p-6" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "space-y-6" }, Array.from({ length: 4 }).map((_, dayIdx) => /* @__PURE__ */ import_react15.default.createElement("div", { key: dayIdx }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-5 w-40 mb-4" }), /* @__PURE__ */ import_react15.default.createElement("div", { className: "space-y-3" }, Array.from({ length: 2 + Math.floor(Math.random() * 3) }).map((_2, eventIdx) => /* @__PURE__ */ import_react15.default.createElement("div", { key: eventIdx, className: "flex items-center gap-4 p-3 rounded-xl bg-muted/10" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-10 w-10 rounded-lg" }), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ import_react15.default.createElement(Skeleton, { className: "h-3 w-1/2" })))))))));
2036
+
2037
+ // src/components/ContextMenu.tsx
2038
+ var import_react16 = __toESM(require("react"));
2039
+ var import_lucide_react8 = require("lucide-react");
2040
+ var import_framer_motion3 = require("framer-motion");
1955
2041
  var EventContextMenu = ({
1956
2042
  event,
1957
2043
  position,
@@ -1962,8 +2048,8 @@ var EventContextMenu = ({
1962
2048
  customActions = [],
1963
2049
  translations
1964
2050
  }) => {
1965
- const menuRef = React15.useRef(null);
1966
- React15.useEffect(() => {
2051
+ const menuRef = (0, import_react16.useRef)(null);
2052
+ (0, import_react16.useEffect)(() => {
1967
2053
  const handleKeyDown = (e) => {
1968
2054
  if (e.key === "Escape") {
1969
2055
  onClose();
@@ -1974,7 +2060,7 @@ var EventContextMenu = ({
1974
2060
  return () => document.removeEventListener("keydown", handleKeyDown);
1975
2061
  }
1976
2062
  }, [position, onClose]);
1977
- React15.useEffect(() => {
2063
+ (0, import_react16.useEffect)(() => {
1978
2064
  const handleClickOutside = (e) => {
1979
2065
  if (menuRef.current && !menuRef.current.contains(e.target)) {
1980
2066
  onClose();
@@ -1992,7 +2078,7 @@ var EventContextMenu = ({
1992
2078
  ...onEdit ? [{
1993
2079
  id: "edit",
1994
2080
  label: translations?.edit || "Edit",
1995
- icon: /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Edit3, { className: "w-4 h-4" }),
2081
+ icon: /* @__PURE__ */ import_react16.default.createElement(import_lucide_react8.Edit3, { className: "w-4 h-4" }),
1996
2082
  onClick: () => {
1997
2083
  onEdit(event);
1998
2084
  onClose();
@@ -2001,7 +2087,7 @@ var EventContextMenu = ({
2001
2087
  ...onDuplicate ? [{
2002
2088
  id: "duplicate",
2003
2089
  label: translations?.duplicate || "Duplicate",
2004
- icon: /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Copy, { className: "w-4 h-4" }),
2090
+ icon: /* @__PURE__ */ import_react16.default.createElement(import_lucide_react8.Copy, { className: "w-4 h-4" }),
2005
2091
  onClick: () => {
2006
2092
  onDuplicate(event);
2007
2093
  onClose();
@@ -2011,7 +2097,7 @@ var EventContextMenu = ({
2011
2097
  ...onDelete ? [{
2012
2098
  id: "delete",
2013
2099
  label: translations?.delete || "Delete",
2014
- icon: /* @__PURE__ */ React15__namespace.default.createElement(lucideReact.Trash2, { className: "w-4 h-4" }),
2100
+ icon: /* @__PURE__ */ import_react16.default.createElement(import_lucide_react8.Trash2, { className: "w-4 h-4" }),
2015
2101
  onClick: () => {
2016
2102
  onDelete(event.id);
2017
2103
  onClose();
@@ -2023,8 +2109,8 @@ var EventContextMenu = ({
2023
2109
  x: Math.min(position.x, window.innerWidth - 200),
2024
2110
  y: Math.min(position.y, window.innerHeight - (actions.length * 44 + 80))
2025
2111
  };
2026
- return /* @__PURE__ */ React15__namespace.default.createElement(framerMotion.AnimatePresence, null, /* @__PURE__ */ React15__namespace.default.createElement(
2027
- framerMotion.motion.div,
2112
+ return /* @__PURE__ */ import_react16.default.createElement(import_framer_motion3.AnimatePresence, null, /* @__PURE__ */ import_react16.default.createElement(
2113
+ import_framer_motion3.motion.div,
2028
2114
  {
2029
2115
  ref: menuRef,
2030
2116
  initial: { opacity: 0, scale: 0.95, y: -5 },
@@ -2037,14 +2123,14 @@ var EventContextMenu = ({
2037
2123
  top: adjustedPosition.y
2038
2124
  }
2039
2125
  },
2040
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "px-3 py-2 border-b-[0.5px] border-border bg-muted/30" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15__namespace.default.createElement(
2126
+ /* @__PURE__ */ import_react16.default.createElement("div", { className: "px-3 py-2 border-b-[0.5px] border-border bg-muted/30" }, /* @__PURE__ */ import_react16.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react16.default.createElement(
2041
2127
  "div",
2042
2128
  {
2043
2129
  className: "w-2.5 h-2.5 rounded-full shrink-0",
2044
2130
  style: { backgroundColor: event.color || "var(--primary)" }
2045
2131
  }
2046
- ), /* @__PURE__ */ React15__namespace.default.createElement("span", { className: "text-sm font-medium truncate text-foreground" }, event.title))),
2047
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "py-1" }, actions.map((action, index) => /* @__PURE__ */ React15__namespace.default.createElement(React15__namespace.default.Fragment, { key: action.id }, index > 0 && action.variant === "danger" && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-px bg-border my-1" }), /* @__PURE__ */ React15__namespace.default.createElement(
2132
+ ), /* @__PURE__ */ import_react16.default.createElement("span", { className: "text-sm font-medium truncate text-foreground" }, event.title))),
2133
+ /* @__PURE__ */ import_react16.default.createElement("div", { className: "py-1" }, actions.map((action, index) => /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, { key: action.id }, index > 0 && action.variant === "danger" && /* @__PURE__ */ import_react16.default.createElement("div", { className: "h-px bg-border my-1" }), /* @__PURE__ */ import_react16.default.createElement(
2048
2134
  "button",
2049
2135
  {
2050
2136
  onClick: action.onClick,
@@ -2056,13 +2142,13 @@ var EventContextMenu = ({
2056
2142
  )
2057
2143
  },
2058
2144
  action.icon,
2059
- /* @__PURE__ */ React15__namespace.default.createElement("span", null, action.label)
2145
+ /* @__PURE__ */ import_react16.default.createElement("span", null, action.label)
2060
2146
  ))))
2061
2147
  ));
2062
2148
  };
2063
2149
  var useEventContextMenu = () => {
2064
- const [contextMenu, setContextMenu] = React15.useState({ event: null, position: null });
2065
- const openContextMenu = React15.useCallback((event, e) => {
2150
+ const [contextMenu, setContextMenu] = (0, import_react16.useState)({ event: null, position: null });
2151
+ const openContextMenu = (0, import_react16.useCallback)((event, e) => {
2066
2152
  e.preventDefault();
2067
2153
  e.stopPropagation();
2068
2154
  setContextMenu({
@@ -2070,7 +2156,7 @@ var useEventContextMenu = () => {
2070
2156
  position: { x: e.clientX, y: e.clientY }
2071
2157
  });
2072
2158
  }, []);
2073
- const closeContextMenu = React15.useCallback(() => {
2159
+ const closeContextMenu = (0, import_react16.useCallback)(() => {
2074
2160
  setContextMenu({ event: null, position: null });
2075
2161
  }, []);
2076
2162
  return {
@@ -2246,7 +2332,7 @@ function colorToHsl(color) {
2246
2332
  const min = Math.min(r, g, b);
2247
2333
  let h = 0;
2248
2334
  let s = 0;
2249
- let l = (max + min) / 2;
2335
+ const l = (max + min) / 2;
2250
2336
  if (max !== min) {
2251
2337
  const d = max - min;
2252
2338
  s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
@@ -2299,6 +2385,12 @@ function getThemeStyles(theme) {
2299
2385
  }
2300
2386
  return styles;
2301
2387
  }
2388
+
2389
+ // src/hooks/useCalendarLogic.ts
2390
+ var import_react17 = require("react");
2391
+ var import_date_fns11 = require("date-fns");
2392
+ var import_date_fns_tz5 = require("date-fns-tz");
2393
+ var import_rrule = require("rrule");
2302
2394
  var useCalendarLogic = ({
2303
2395
  events,
2304
2396
  view: controlledView,
@@ -2312,23 +2404,23 @@ var useCalendarLogic = ({
2312
2404
  readOnly,
2313
2405
  timezone
2314
2406
  }) => {
2315
- const [internalView, setInternalView] = React15.useState("week");
2316
- const [internalDate, setInternalDate] = React15.useState(/* @__PURE__ */ new Date());
2317
- const [isSidebarOpen, setIsSidebarOpen] = React15.useState(true);
2318
- const [isModalOpen, setIsModalOpen] = React15.useState(false);
2319
- const [selectedEvent, setSelectedEvent] = React15.useState(null);
2320
- const [modalInitialDate, setModalInitialDate] = React15.useState(void 0);
2407
+ const [internalView, setInternalView] = (0, import_react17.useState)("week");
2408
+ const [internalDate, setInternalDate] = (0, import_react17.useState)(/* @__PURE__ */ new Date());
2409
+ const [isSidebarOpen, setIsSidebarOpen] = (0, import_react17.useState)(true);
2410
+ const [isModalOpen, setIsModalOpen] = (0, import_react17.useState)(false);
2411
+ const [selectedEvent, setSelectedEvent] = (0, import_react17.useState)(null);
2412
+ const [modalInitialDate, setModalInitialDate] = (0, import_react17.useState)(void 0);
2321
2413
  const view = controlledView ?? internalView;
2322
2414
  const currentDate = controlledDate ?? internalDate;
2323
- const expandedEvents = React15.useMemo(() => {
2415
+ const expandedEvents = (0, import_react17.useMemo)(() => {
2324
2416
  const allEvents = [];
2325
- const rangeStart = dateFns.subDays(currentDate, 365);
2326
- const rangeEnd = dateFns.addDays(currentDate, 365);
2417
+ const rangeStart = (0, import_date_fns11.subDays)(currentDate, 365);
2418
+ const rangeEnd = (0, import_date_fns11.addDays)(currentDate, 365);
2327
2419
  events.forEach((event) => {
2328
2420
  if (event.recurrence) {
2329
2421
  try {
2330
- const rule = new rrule.RRule({
2331
- freq: rrule.RRule[event.recurrence.freq],
2422
+ const rule = new import_rrule.RRule({
2423
+ freq: import_rrule.RRule[event.recurrence.freq],
2332
2424
  interval: event.recurrence.interval || 1,
2333
2425
  dtstart: new Date(event.start),
2334
2426
  until: event.recurrence.until ? new Date(event.recurrence.until) : void 0,
@@ -2336,7 +2428,7 @@ var useCalendarLogic = ({
2336
2428
  });
2337
2429
  const dates = rule.between(rangeStart, rangeEnd);
2338
2430
  dates.forEach((date) => {
2339
- const duration = dateFns.differenceInMilliseconds(new Date(event.end), new Date(event.start));
2431
+ const duration = (0, import_date_fns11.differenceInMilliseconds)(new Date(event.end), new Date(event.start));
2340
2432
  allEvents.push({
2341
2433
  ...event,
2342
2434
  id: `${event.id}-${date.getTime()}`,
@@ -2374,34 +2466,34 @@ var useCalendarLogic = ({
2374
2466
  const handlePrev = () => {
2375
2467
  switch (view) {
2376
2468
  case "month":
2377
- handleDateChange(dateFns.subMonths(currentDate, 1));
2469
+ handleDateChange((0, import_date_fns11.subMonths)(currentDate, 1));
2378
2470
  break;
2379
2471
  case "week":
2380
- handleDateChange(dateFns.subWeeks(currentDate, 1));
2472
+ handleDateChange((0, import_date_fns11.subWeeks)(currentDate, 1));
2381
2473
  break;
2382
2474
  case "day":
2383
2475
  case "resource":
2384
- handleDateChange(dateFns.subDays(currentDate, 1));
2476
+ handleDateChange((0, import_date_fns11.subDays)(currentDate, 1));
2385
2477
  break;
2386
2478
  case "agenda":
2387
- handleDateChange(dateFns.subDays(currentDate, 7));
2479
+ handleDateChange((0, import_date_fns11.subDays)(currentDate, 7));
2388
2480
  break;
2389
2481
  }
2390
2482
  };
2391
2483
  const handleNext = () => {
2392
2484
  switch (view) {
2393
2485
  case "month":
2394
- handleDateChange(dateFns.addMonths(currentDate, 1));
2486
+ handleDateChange((0, import_date_fns11.addMonths)(currentDate, 1));
2395
2487
  break;
2396
2488
  case "week":
2397
- handleDateChange(dateFns.addWeeks(currentDate, 1));
2489
+ handleDateChange((0, import_date_fns11.addWeeks)(currentDate, 1));
2398
2490
  break;
2399
2491
  case "day":
2400
2492
  case "resource":
2401
- handleDateChange(dateFns.addDays(currentDate, 1));
2493
+ handleDateChange((0, import_date_fns11.addDays)(currentDate, 1));
2402
2494
  break;
2403
2495
  case "agenda":
2404
- handleDateChange(dateFns.addDays(currentDate, 7));
2496
+ handleDateChange((0, import_date_fns11.addDays)(currentDate, 7));
2405
2497
  break;
2406
2498
  }
2407
2499
  };
@@ -2469,17 +2561,17 @@ var useCalendarLogic = ({
2469
2561
  if (!activeEvent || !overDate) return;
2470
2562
  const originalStart = new Date(activeEvent.start);
2471
2563
  const originalEnd = new Date(activeEvent.end);
2472
- const duration = dateFns.differenceInMilliseconds(originalEnd, originalStart);
2564
+ const duration = (0, import_date_fns11.differenceInMilliseconds)(originalEnd, originalStart);
2473
2565
  let newStart;
2474
2566
  if (view === "month") {
2475
2567
  if (timezone) {
2476
- const zonedOriginal = dateFnsTz.toZonedTime(originalStart, timezone);
2568
+ const zonedOriginal = (0, import_date_fns_tz5.toZonedTime)(originalStart, timezone);
2477
2569
  const zonedNew = new Date(overDate);
2478
2570
  zonedNew.setHours(zonedOriginal.getHours());
2479
2571
  zonedNew.setMinutes(zonedOriginal.getMinutes());
2480
2572
  zonedNew.setSeconds(zonedOriginal.getSeconds());
2481
2573
  zonedNew.setMilliseconds(zonedOriginal.getMilliseconds());
2482
- newStart = dateFnsTz.fromZonedTime(zonedNew, timezone);
2574
+ newStart = (0, import_date_fns_tz5.fromZonedTime)(zonedNew, timezone);
2483
2575
  } else {
2484
2576
  newStart = new Date(overDate);
2485
2577
  newStart.setHours(originalStart.getHours());
@@ -2489,7 +2581,7 @@ var useCalendarLogic = ({
2489
2581
  }
2490
2582
  } else {
2491
2583
  if (timezone) {
2492
- newStart = dateFnsTz.fromZonedTime(overDate, timezone);
2584
+ newStart = (0, import_date_fns_tz5.fromZonedTime)(overDate, timezone);
2493
2585
  } else {
2494
2586
  newStart = new Date(overDate);
2495
2587
  }
@@ -2538,6 +2630,12 @@ var useCalendarLogic = ({
2538
2630
  handleDragEnd
2539
2631
  };
2540
2632
  };
2633
+
2634
+ // src/index.tsx
2635
+ var import_date_fns12 = require("date-fns");
2636
+
2637
+ // src/hooks/useSwipeGesture.ts
2638
+ var import_react18 = require("react");
2541
2639
  var useSwipeGesture = (options) => {
2542
2640
  const {
2543
2641
  onSwipeLeft,
@@ -2549,9 +2647,9 @@ var useSwipeGesture = (options) => {
2549
2647
  allowedTime = 500,
2550
2648
  enabled = true
2551
2649
  } = options;
2552
- const touchInfoRef = React15.useRef(null);
2553
- const elementRef = React15.useRef(null);
2554
- const handleTouchStart = React15.useCallback((e) => {
2650
+ const touchInfoRef = (0, import_react18.useRef)(null);
2651
+ const elementRef = (0, import_react18.useRef)(null);
2652
+ const handleTouchStart = (0, import_react18.useCallback)((e) => {
2555
2653
  if (!enabled) return;
2556
2654
  const touch = e.touches[0];
2557
2655
  touchInfoRef.current = {
@@ -2560,7 +2658,7 @@ var useSwipeGesture = (options) => {
2560
2658
  startTime: Date.now()
2561
2659
  };
2562
2660
  }, [enabled]);
2563
- const handleTouchEnd = React15.useCallback((e) => {
2661
+ const handleTouchEnd = (0, import_react18.useCallback)((e) => {
2564
2662
  if (!enabled || !touchInfoRef.current) return;
2565
2663
  const touch = e.changedTouches[0];
2566
2664
  const { startX, startY, startTime } = touchInfoRef.current;
@@ -2584,7 +2682,7 @@ var useSwipeGesture = (options) => {
2584
2682
  }
2585
2683
  touchInfoRef.current = null;
2586
2684
  }, [enabled, threshold, restraint, allowedTime, onSwipeLeft, onSwipeRight, onSwipeUp, onSwipeDown]);
2587
- React15.useEffect(() => {
2685
+ (0, import_react18.useEffect)(() => {
2588
2686
  const element = elementRef.current;
2589
2687
  if (!element) return;
2590
2688
  element.addEventListener("touchstart", handleTouchStart, { passive: true });
@@ -2640,7 +2738,7 @@ var Scheduler = ({
2640
2738
  locale
2641
2739
  // Date-fns locale
2642
2740
  }) => {
2643
- const [activeDragEvent, setActiveDragEvent] = React15.useState(null);
2741
+ const [activeDragEvent, setActiveDragEvent] = (0, import_react19.useState)(null);
2644
2742
  const {
2645
2743
  contextMenuEvent,
2646
2744
  contextMenuPosition,
@@ -2682,16 +2780,16 @@ var Scheduler = ({
2682
2780
  readOnly,
2683
2781
  timezone
2684
2782
  });
2685
- const sensors = core.useSensors(
2686
- core.useSensor(core.PointerSensor, {
2783
+ const sensors = (0, import_core3.useSensors)(
2784
+ (0, import_core3.useSensor)(import_core3.PointerSensor, {
2687
2785
  activationConstraint: {
2688
2786
  distance: 8
2689
2787
  }
2690
2788
  })
2691
2789
  );
2692
2790
  const gridSize = 15;
2693
- const snapToGrid = modifiers.createSnapModifier(gridSize);
2694
- const modifiers$1 = [snapToGrid, modifiers.restrictToWindowEdges];
2791
+ const snapToGrid = (0, import_modifiers.createSnapModifier)(gridSize);
2792
+ const modifiers = [snapToGrid, import_modifiers.restrictToWindowEdges];
2695
2793
  const dndSensors = readOnly ? [] : sensors;
2696
2794
  const handleEventResize = (event, newEnd) => {
2697
2795
  if (readOnly) return;
@@ -2705,7 +2803,7 @@ var Scheduler = ({
2705
2803
  });
2706
2804
  }
2707
2805
  };
2708
- const id = React15.useId();
2806
+ const id = (0, import_react19.useId)();
2709
2807
  const swipeRef = useViewSwipe(handlePrev, handleNext, true);
2710
2808
  const languagePack = language === "fr" ? fr : en;
2711
2809
  const t = {
@@ -2730,20 +2828,20 @@ var Scheduler = ({
2730
2828
  return 80;
2731
2829
  }
2732
2830
  if (view !== "week" && view !== "day") return void 0;
2733
- const duration = dateFns.differenceInMinutes(activeDragEvent.end, activeDragEvent.start);
2831
+ const duration = (0, import_date_fns12.differenceInMinutes)(activeDragEvent.end, activeDragEvent.start);
2734
2832
  const hourHeight = view === "day" ? 80 : 60;
2735
2833
  return duration / 60 * hourHeight;
2736
2834
  };
2737
2835
  const getDragWidth = () => {
2738
2836
  if (view === "month") return "100%";
2739
2837
  if (view === "resource" && activeDragEvent) {
2740
- const duration = dateFns.differenceInMinutes(activeDragEvent.end, activeDragEvent.start);
2838
+ const duration = (0, import_date_fns12.differenceInMinutes)(activeDragEvent.end, activeDragEvent.start);
2741
2839
  const width = duration / 60 * 100;
2742
2840
  return `${Math.max(width, 4)}px`;
2743
2841
  }
2744
2842
  return "150px";
2745
2843
  };
2746
- const filteredEvents = React15.useMemo(() => {
2844
+ const filteredEvents = (0, import_react19.useMemo)(() => {
2747
2845
  if (!calendars) return expandedEvents;
2748
2846
  const activeCalendarIds = calendars.filter((c) => c.active !== false).map((c) => c.id);
2749
2847
  return expandedEvents.filter((e) => {
@@ -2751,22 +2849,22 @@ var Scheduler = ({
2751
2849
  return activeCalendarIds.includes(e.calendarId);
2752
2850
  });
2753
2851
  }, [expandedEvents, calendars]);
2754
- return /* @__PURE__ */ React15__namespace.default.createElement(
2755
- core.DndContext,
2852
+ return /* @__PURE__ */ import_react19.default.createElement(
2853
+ import_core3.DndContext,
2756
2854
  {
2757
2855
  id,
2758
2856
  sensors: dndSensors,
2759
2857
  onDragStart: handleDragStart,
2760
2858
  onDragEnd: onDragEndWrapper,
2761
- modifiers: modifiers$1
2859
+ modifiers
2762
2860
  },
2763
- /* @__PURE__ */ React15__namespace.default.createElement(
2861
+ /* @__PURE__ */ import_react19.default.createElement(
2764
2862
  "div",
2765
2863
  {
2766
2864
  className: cn("flex flex-col h-full bg-background text-foreground relative", className),
2767
2865
  style: getThemeStyles(theme)
2768
2866
  },
2769
- /* @__PURE__ */ React15__namespace.default.createElement(
2867
+ /* @__PURE__ */ import_react19.default.createElement(
2770
2868
  CalendarHeader,
2771
2869
  {
2772
2870
  currentDate,
@@ -2785,8 +2883,8 @@ var Scheduler = ({
2785
2883
  locale
2786
2884
  }
2787
2885
  ),
2788
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex flex-1 overflow-hidden" }, /* @__PURE__ */ React15__namespace.default.createElement(
2789
- framerMotion.motion.div,
2886
+ /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex flex-1 overflow-hidden" }, /* @__PURE__ */ import_react19.default.createElement(
2887
+ import_framer_motion4.motion.div,
2790
2888
  {
2791
2889
  className: cn(
2792
2890
  "hidden md:block overflow-hidden"
@@ -2801,7 +2899,7 @@ var Scheduler = ({
2801
2899
  ease: [0.4, 0, 0.2, 1]
2802
2900
  }
2803
2901
  },
2804
- /* @__PURE__ */ React15__namespace.default.createElement(
2902
+ /* @__PURE__ */ import_react19.default.createElement(
2805
2903
  Sidebar,
2806
2904
  {
2807
2905
  currentDate,
@@ -2818,8 +2916,8 @@ var Scheduler = ({
2818
2916
  locale
2819
2917
  }
2820
2918
  )
2821
- ), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 flex flex-col overflow-hidden relative" }, isLoading ? /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "flex-1 overflow-auto p-0 md:p-4" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-full min-w-full" }, view === "month" && /* @__PURE__ */ React15__namespace.default.createElement(MonthViewSkeleton, null), view === "week" && /* @__PURE__ */ React15__namespace.default.createElement(WeekViewSkeleton, null), view === "day" && /* @__PURE__ */ React15__namespace.default.createElement(DayViewSkeleton, null), view === "agenda" && /* @__PURE__ */ React15__namespace.default.createElement(AgendaViewSkeleton, null), view === "resource" && /* @__PURE__ */ React15__namespace.default.createElement(WeekViewSkeleton, null))) : /* @__PURE__ */ React15__namespace.default.createElement("div", { ref: swipeRef, className: "flex-1 overflow-auto p-0 md:p-4 touch-pan-y" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "h-full min-w-full" }, /* @__PURE__ */ React15__namespace.default.createElement(framerMotion.AnimatePresence, { mode: "wait", initial: false }, /* @__PURE__ */ React15__namespace.default.createElement(
2822
- framerMotion.motion.div,
2919
+ ), /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex-1 flex flex-col overflow-hidden relative" }, isLoading ? /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex-1 overflow-auto p-0 md:p-4" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "h-full min-w-full" }, view === "month" && /* @__PURE__ */ import_react19.default.createElement(MonthViewSkeleton, null), view === "week" && /* @__PURE__ */ import_react19.default.createElement(WeekViewSkeleton, null), view === "day" && /* @__PURE__ */ import_react19.default.createElement(DayViewSkeleton, null), view === "agenda" && /* @__PURE__ */ import_react19.default.createElement(AgendaViewSkeleton, null), view === "resource" && /* @__PURE__ */ import_react19.default.createElement(WeekViewSkeleton, null))) : /* @__PURE__ */ import_react19.default.createElement("div", { ref: swipeRef, className: "flex-1 overflow-auto p-0 md:p-4 touch-pan-y" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "h-full min-w-full" }, /* @__PURE__ */ import_react19.default.createElement(import_framer_motion4.AnimatePresence, { mode: "wait", initial: false }, /* @__PURE__ */ import_react19.default.createElement(
2920
+ import_framer_motion4.motion.div,
2823
2921
  {
2824
2922
  key: `${view}-${currentDate.toISOString()}-${timezone || "local"}`,
2825
2923
  initial: { opacity: 0, scale: 0.98, y: 15 },
@@ -2843,7 +2941,7 @@ var Scheduler = ({
2843
2941
  },
2844
2942
  className: "h-full"
2845
2943
  },
2846
- view === "month" && /* @__PURE__ */ React15__namespace.default.createElement(
2944
+ view === "month" && /* @__PURE__ */ import_react19.default.createElement(
2847
2945
  MonthView,
2848
2946
  {
2849
2947
  currentDate,
@@ -2854,7 +2952,7 @@ var Scheduler = ({
2854
2952
  locale
2855
2953
  }
2856
2954
  ),
2857
- view === "week" && /* @__PURE__ */ React15__namespace.default.createElement(
2955
+ view === "week" && /* @__PURE__ */ import_react19.default.createElement(
2858
2956
  WeekView,
2859
2957
  {
2860
2958
  currentDate,
@@ -2867,7 +2965,7 @@ var Scheduler = ({
2867
2965
  readonly: readOnly
2868
2966
  }
2869
2967
  ),
2870
- view === "day" && /* @__PURE__ */ React15__namespace.default.createElement(
2968
+ view === "day" && /* @__PURE__ */ import_react19.default.createElement(
2871
2969
  DayView,
2872
2970
  {
2873
2971
  currentDate,
@@ -2880,7 +2978,7 @@ var Scheduler = ({
2880
2978
  readonly: readOnly
2881
2979
  }
2882
2980
  ),
2883
- view === "agenda" && /* @__PURE__ */ React15__namespace.default.createElement(
2981
+ view === "agenda" && /* @__PURE__ */ import_react19.default.createElement(
2884
2982
  AgendaView,
2885
2983
  {
2886
2984
  currentDate,
@@ -2891,27 +2989,27 @@ var Scheduler = ({
2891
2989
  translations: t
2892
2990
  }
2893
2991
  ),
2894
- view === "resource" && resources && /* @__PURE__ */ React15__namespace.default.createElement(
2992
+ view === "resource" && resources && /* @__PURE__ */ import_react19.default.createElement(
2895
2993
  ResourceView,
2896
2994
  {
2897
2995
  currentDate,
2898
2996
  events: filteredEvents,
2899
2997
  resources,
2900
2998
  onEventClick: handleEventClickInternal,
2901
- onTimeSlotClick: (date, resourceId) => {
2999
+ onTimeSlotClick: (date) => {
2902
3000
  if (readOnly) return;
2903
3001
  handleTimeSlotClick(date);
2904
3002
  },
2905
3003
  locale
2906
3004
  }
2907
3005
  )
2908
- )))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "md:hidden absolute bottom-6 right-6 z-50" }, /* @__PURE__ */ React15__namespace.default.createElement(
3006
+ )))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "md:hidden absolute bottom-6 right-6 z-50" }, /* @__PURE__ */ import_react19.default.createElement(
2909
3007
  "button",
2910
3008
  {
2911
3009
  onClick: handleCreateEvent,
2912
3010
  className: "w-14 h-14 bg-blue-600 rounded-full shadow-lg flex items-center justify-center text-white active:scale-90 transition-transform"
2913
3011
  },
2914
- /* @__PURE__ */ React15__namespace.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React15__namespace.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React15__namespace.default.createElement("path", { d: "M12 5v14" }))
3012
+ /* @__PURE__ */ import_react19.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react19.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ import_react19.default.createElement("path", { d: "M12 5v14" }))
2915
3013
  )))),
2916
3014
  renderEventForm ? renderEventForm({
2917
3015
  isOpen: isModalOpen,
@@ -2920,7 +3018,7 @@ var Scheduler = ({
2920
3018
  initialDate: modalInitialDate,
2921
3019
  onSave: handleModalSave,
2922
3020
  onDelete: handleModalDelete
2923
- }) : /* @__PURE__ */ React15__namespace.default.createElement(
3021
+ }) : /* @__PURE__ */ import_react19.default.createElement(
2924
3022
  EventModal,
2925
3023
  {
2926
3024
  isOpen: isModalOpen,
@@ -2934,7 +3032,7 @@ var Scheduler = ({
2934
3032
  translations: t
2935
3033
  }
2936
3034
  ),
2937
- /* @__PURE__ */ React15__namespace.default.createElement(
3035
+ /* @__PURE__ */ import_react19.default.createElement(
2938
3036
  EventContextMenu,
2939
3037
  {
2940
3038
  event: contextMenuEvent,
@@ -2967,7 +3065,7 @@ var Scheduler = ({
2967
3065
  }
2968
3066
  }
2969
3067
  ),
2970
- /* @__PURE__ */ React15__namespace.default.createElement(core.DragOverlay, { dropAnimation: null }, activeDragEvent ? /* @__PURE__ */ React15__namespace.default.createElement(
3068
+ /* @__PURE__ */ import_react19.default.createElement(import_core3.DragOverlay, { dropAnimation: null }, activeDragEvent ? /* @__PURE__ */ import_react19.default.createElement(
2971
3069
  "div",
2972
3070
  {
2973
3071
  className: cn(
@@ -2985,19 +3083,19 @@ var Scheduler = ({
2985
3083
  transform: "rotate(-2deg) scale(1.02)"
2986
3084
  }
2987
3085
  },
2988
- /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "p-2.5 h-full flex flex-col" }, /* @__PURE__ */ React15__namespace.default.createElement(
3086
+ /* @__PURE__ */ import_react19.default.createElement("div", { className: "p-2.5 h-full flex flex-col" }, /* @__PURE__ */ import_react19.default.createElement(
2989
3087
  "div",
2990
3088
  {
2991
3089
  className: "absolute left-0 top-0 bottom-0 w-1 rounded-l-lg",
2992
3090
  style: { backgroundColor: activeDragEvent.color || "var(--primary)" }
2993
3091
  }
2994
- ), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "pl-2" }, /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "font-semibold truncate text-sm" }, activeDragEvent.title), (view === "week" || view === "day") && getDragHeight() && getDragHeight() > 40 && /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "text-xs opacity-80 mt-0.5 flex items-center gap-1" }, /* @__PURE__ */ React15__namespace.default.createElement("svg", { className: "w-3 h-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React15__namespace.default.createElement("path", { d: "M12 6v6l4 2" })), dateFns.format(activeDragEvent.start, overlayTimeFormat, { locale }), " - ", dateFns.format(activeDragEvent.end, overlayTimeFormat, { locale }))), /* @__PURE__ */ React15__namespace.default.createElement("div", { className: "absolute bottom-1.5 right-1.5 opacity-60" }, /* @__PURE__ */ React15__namespace.default.createElement("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "9", cy: "5", r: "1.5" }), /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "15", cy: "5", r: "1.5" }), /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "9", cy: "12", r: "1.5" }), /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "15", cy: "12", r: "1.5" }), /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "9", cy: "19", r: "1.5" }), /* @__PURE__ */ React15__namespace.default.createElement("circle", { cx: "15", cy: "19", r: "1.5" }))))
3092
+ ), /* @__PURE__ */ import_react19.default.createElement("div", { className: "pl-2" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "font-semibold truncate text-sm" }, activeDragEvent.title), (view === "week" || view === "day") && getDragHeight() && getDragHeight() > 40 && /* @__PURE__ */ import_react19.default.createElement("div", { className: "text-xs opacity-80 mt-0.5 flex items-center gap-1" }, /* @__PURE__ */ import_react19.default.createElement("svg", { className: "w-3 h-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react19.default.createElement("path", { d: "M12 6v6l4 2" })), (0, import_date_fns12.format)(activeDragEvent.start, overlayTimeFormat, { locale }), " - ", (0, import_date_fns12.format)(activeDragEvent.end, overlayTimeFormat, { locale }))), /* @__PURE__ */ import_react19.default.createElement("div", { className: "absolute bottom-1.5 right-1.5 opacity-60" }, /* @__PURE__ */ import_react19.default.createElement("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "9", cy: "5", r: "1.5" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "15", cy: "5", r: "1.5" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "9", cy: "12", r: "1.5" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "15", cy: "12", r: "1.5" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "9", cy: "19", r: "1.5" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "15", cy: "19", r: "1.5" }))))
2995
3093
  ) : null)
2996
3094
  )
2997
3095
  );
2998
3096
  };
2999
-
3000
- exports.Scheduler = Scheduler;
3001
- exports.cn = cn;
3002
- //# sourceMappingURL=index.js.map
3003
- //# sourceMappingURL=index.js.map
3097
+ // Annotate the CommonJS export names for ESM import in node:
3098
+ 0 && (module.exports = {
3099
+ Scheduler,
3100
+ cn
3101
+ });