calendarkit-prov2 2.0.9 → 2.0.11
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/README.md +14 -0
- package/dist/index.d.mts +13 -3
- package/dist/index.d.ts +13 -3
- package/dist/index.js +597 -444
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +517 -364
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
1
|
+
import * as React18 from 'react';
|
|
2
|
+
import React18__default, { useState, useEffect, useRef, useCallback, useId, useMemo, useLayoutEffect } from 'react';
|
|
3
3
|
import { createPortal } from 'react-dom';
|
|
4
4
|
import { useDraggable, useSensors, useSensor, PointerSensor, DndContext, DragOverlay, useDroppable } from '@dnd-kit/core';
|
|
5
5
|
import { createSnapModifier, restrictToWindowEdges } from '@dnd-kit/modifiers';
|
|
@@ -8,7 +8,7 @@ import { startOfDay, addDays, endOfDay, startOfWeek, endOfWeek, startOfMonth, en
|
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
9
9
|
import { clsx } from 'clsx';
|
|
10
10
|
import { twMerge } from 'tailwind-merge';
|
|
11
|
-
import { Headphones, Ban, PartyPopper, Star, Presentation, ClipboardCheck, RefreshCw, Sparkles, Home, MapPin, Video, Package, Users, User, Menu, Plus, ChevronLeft, ChevronRight, Globe, ChevronDown, Sun, Moon, CalendarCheck2, CalendarDays, CalendarRange, Calendar, ListTodo, MoreHorizontal, LayoutGrid, X,
|
|
11
|
+
import { Headphones, Ban, PartyPopper, Star, Presentation, ClipboardCheck, RefreshCw, Sparkles, Home, MapPin, Video, Package, Users, User, Menu, Plus, ChevronLeft, ChevronRight, Globe, ChevronDown, Sun, Moon, CalendarCheck2, Clock, CalendarDays, CalendarRange, Calendar, ListTodo, MoreHorizontal, LayoutGrid, X, Paperclip, Bell, Edit3, Copy, Trash2, Edit2, ExternalLink, AlignLeft, File, Download, BellRing, Check, Repeat, Tag } from 'lucide-react';
|
|
12
12
|
import { sv as sv$1, pl as pl$1, nl as nl$1, ru as ru$1, ko as ko$1, ja as ja$1, zhCN, ar as ar$1, pt as pt$1, it as it$1, es as es$1, de as de$1, fr as fr$1, enUS, tr as tr$1 } from 'date-fns/locale';
|
|
13
13
|
import { toZonedTime, fromZonedTime } from 'date-fns-tz';
|
|
14
14
|
import { CSS } from '@dnd-kit/utilities';
|
|
@@ -44,10 +44,10 @@ var buttonVariants = cva(
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
);
|
|
47
|
-
var Button =
|
|
47
|
+
var Button = React18.forwardRef(
|
|
48
48
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
49
49
|
const Comp = "button";
|
|
50
|
-
return /* @__PURE__ */
|
|
50
|
+
return /* @__PURE__ */ React18.createElement(
|
|
51
51
|
Comp,
|
|
52
52
|
{
|
|
53
53
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -158,6 +158,8 @@ var tr = {
|
|
|
158
158
|
tomorrow: "Yar\u0131n",
|
|
159
159
|
eventCount: "etkinlik",
|
|
160
160
|
eventsCount: "etkinlik",
|
|
161
|
+
hourCount: "saat",
|
|
162
|
+
hoursCount: "saat",
|
|
161
163
|
timezone: "Zaman Dilimi",
|
|
162
164
|
localTime: "Yerel Saat",
|
|
163
165
|
operations: "\u0130\u015Flemler",
|
|
@@ -251,6 +253,8 @@ var en = {
|
|
|
251
253
|
tomorrow: "Tomorrow",
|
|
252
254
|
eventCount: "event",
|
|
253
255
|
eventsCount: "events",
|
|
256
|
+
hourCount: "hour",
|
|
257
|
+
hoursCount: "hours",
|
|
254
258
|
timezone: "Time zone",
|
|
255
259
|
localTime: "Local Time",
|
|
256
260
|
operations: "Operations",
|
|
@@ -344,6 +348,8 @@ var fr = {
|
|
|
344
348
|
tomorrow: "Demain",
|
|
345
349
|
eventCount: "\xE9v\xE9nement",
|
|
346
350
|
eventsCount: "\xE9v\xE9nements",
|
|
351
|
+
hourCount: "heure",
|
|
352
|
+
hoursCount: "heures",
|
|
347
353
|
timezone: "Fuseau horaire",
|
|
348
354
|
localTime: "Heure locale",
|
|
349
355
|
operations: "Op\xE9rations",
|
|
@@ -437,6 +443,8 @@ var de = {
|
|
|
437
443
|
tomorrow: "Morgen",
|
|
438
444
|
eventCount: "Termin",
|
|
439
445
|
eventsCount: "Termine",
|
|
446
|
+
hourCount: "Stunde",
|
|
447
|
+
hoursCount: "Stunden",
|
|
440
448
|
timezone: "Zeitzone",
|
|
441
449
|
localTime: "Ortszeit",
|
|
442
450
|
operations: "Aktionen",
|
|
@@ -530,6 +538,8 @@ var es = {
|
|
|
530
538
|
tomorrow: "Ma\xF1ana",
|
|
531
539
|
eventCount: "evento",
|
|
532
540
|
eventsCount: "eventos",
|
|
541
|
+
hourCount: "hora",
|
|
542
|
+
hoursCount: "horas",
|
|
533
543
|
timezone: "Zona horaria",
|
|
534
544
|
localTime: "Hora local",
|
|
535
545
|
operations: "Operaciones",
|
|
@@ -623,6 +633,8 @@ var it = {
|
|
|
623
633
|
tomorrow: "Domani",
|
|
624
634
|
eventCount: "evento",
|
|
625
635
|
eventsCount: "eventi",
|
|
636
|
+
hourCount: "ora",
|
|
637
|
+
hoursCount: "ore",
|
|
626
638
|
timezone: "Fuso orario",
|
|
627
639
|
localTime: "Ora locale",
|
|
628
640
|
operations: "Operazioni",
|
|
@@ -716,6 +728,8 @@ var pt = {
|
|
|
716
728
|
tomorrow: "Amanh\xE3",
|
|
717
729
|
eventCount: "evento",
|
|
718
730
|
eventsCount: "eventos",
|
|
731
|
+
hourCount: "hora",
|
|
732
|
+
hoursCount: "horas",
|
|
719
733
|
timezone: "Fuso hor\xE1rio",
|
|
720
734
|
localTime: "Hora local",
|
|
721
735
|
operations: "Opera\xE7\xF5es",
|
|
@@ -809,6 +823,8 @@ var ar = {
|
|
|
809
823
|
tomorrow: "\u063A\u062F\u064B\u0627",
|
|
810
824
|
eventCount: "\u062D\u062F\u062B",
|
|
811
825
|
eventsCount: "\u0623\u062D\u062F\u0627\u062B",
|
|
826
|
+
hourCount: "\u0633\u0627\u0639\u0629",
|
|
827
|
+
hoursCount: "\u0633\u0627\u0639\u0627\u062A",
|
|
812
828
|
timezone: "\u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0632\u0645\u0646\u064A\u0629",
|
|
813
829
|
localTime: "\u0627\u0644\u062A\u0648\u0642\u064A\u062A \u0627\u0644\u0645\u062D\u0644\u064A",
|
|
814
830
|
operations: "\u0627\u0644\u0639\u0645\u0644\u064A\u0627\u062A",
|
|
@@ -902,6 +918,8 @@ var zh = {
|
|
|
902
918
|
tomorrow: "\u660E\u5929",
|
|
903
919
|
eventCount: "\u4E2A\u6D3B\u52A8",
|
|
904
920
|
eventsCount: "\u4E2A\u6D3B\u52A8",
|
|
921
|
+
hourCount: "\u5C0F\u65F6",
|
|
922
|
+
hoursCount: "\u5C0F\u65F6",
|
|
905
923
|
timezone: "\u65F6\u533A",
|
|
906
924
|
localTime: "\u672C\u5730\u65F6\u95F4",
|
|
907
925
|
operations: "\u64CD\u4F5C",
|
|
@@ -995,6 +1013,8 @@ var ja = {
|
|
|
995
1013
|
tomorrow: "\u660E\u65E5",
|
|
996
1014
|
eventCount: "\u4EF6\u306E\u30A4\u30D9\u30F3\u30C8",
|
|
997
1015
|
eventsCount: "\u4EF6\u306E\u30A4\u30D9\u30F3\u30C8",
|
|
1016
|
+
hourCount: "\u6642\u9593",
|
|
1017
|
+
hoursCount: "\u6642\u9593",
|
|
998
1018
|
timezone: "\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3",
|
|
999
1019
|
localTime: "\u30ED\u30FC\u30AB\u30EB\u6642\u9593",
|
|
1000
1020
|
operations: "\u64CD\u4F5C",
|
|
@@ -1088,6 +1108,8 @@ var ko = {
|
|
|
1088
1108
|
tomorrow: "\uB0B4\uC77C",
|
|
1089
1109
|
eventCount: "\uAC1C \uC77C\uC815",
|
|
1090
1110
|
eventsCount: "\uAC1C \uC77C\uC815",
|
|
1111
|
+
hourCount: "\uC2DC\uAC04",
|
|
1112
|
+
hoursCount: "\uC2DC\uAC04",
|
|
1091
1113
|
timezone: "\uC2DC\uAC04\uB300",
|
|
1092
1114
|
localTime: "\uB85C\uCEEC \uC2DC\uAC04",
|
|
1093
1115
|
operations: "\uC791\uC5C5",
|
|
@@ -1181,6 +1203,8 @@ var ru = {
|
|
|
1181
1203
|
tomorrow: "\u0417\u0430\u0432\u0442\u0440\u0430",
|
|
1182
1204
|
eventCount: "\u0441\u043E\u0431\u044B\u0442\u0438\u0435",
|
|
1183
1205
|
eventsCount: "\u0441\u043E\u0431\u044B\u0442\u0438\u0439",
|
|
1206
|
+
hourCount: "\u0447\u0430\u0441",
|
|
1207
|
+
hoursCount: "\u0447\u0430\u0441\u043E\u0432",
|
|
1184
1208
|
timezone: "\u0427\u0430\u0441\u043E\u0432\u043E\u0439 \u043F\u043E\u044F\u0441",
|
|
1185
1209
|
localTime: "\u041C\u0435\u0441\u0442\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F",
|
|
1186
1210
|
operations: "\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438",
|
|
@@ -1274,6 +1298,8 @@ var nl = {
|
|
|
1274
1298
|
tomorrow: "Morgen",
|
|
1275
1299
|
eventCount: "evenement",
|
|
1276
1300
|
eventsCount: "evenementen",
|
|
1301
|
+
hourCount: "uur",
|
|
1302
|
+
hoursCount: "uur",
|
|
1277
1303
|
timezone: "Tijdzone",
|
|
1278
1304
|
localTime: "Lokale tijd",
|
|
1279
1305
|
operations: "Bewerkingen",
|
|
@@ -1367,6 +1393,8 @@ var pl = {
|
|
|
1367
1393
|
tomorrow: "Jutro",
|
|
1368
1394
|
eventCount: "wydarzenie",
|
|
1369
1395
|
eventsCount: "wydarze\u0144",
|
|
1396
|
+
hourCount: "godzina",
|
|
1397
|
+
hoursCount: "godzin",
|
|
1370
1398
|
timezone: "Strefa czasowa",
|
|
1371
1399
|
localTime: "Czas lokalny",
|
|
1372
1400
|
operations: "Operacje",
|
|
@@ -1460,6 +1488,8 @@ var sv = {
|
|
|
1460
1488
|
tomorrow: "Imorgon",
|
|
1461
1489
|
eventCount: "h\xE4ndelse",
|
|
1462
1490
|
eventsCount: "h\xE4ndelser",
|
|
1491
|
+
hourCount: "timme",
|
|
1492
|
+
hoursCount: "timmar",
|
|
1463
1493
|
timezone: "Tidszon",
|
|
1464
1494
|
localTime: "Lokal tid",
|
|
1465
1495
|
operations: "\xC5tg\xE4rder",
|
|
@@ -1542,6 +1572,7 @@ var CalendarHeader = ({
|
|
|
1542
1572
|
activeCustomViewId,
|
|
1543
1573
|
onCustomViewChange,
|
|
1544
1574
|
eventCount,
|
|
1575
|
+
hourCount,
|
|
1545
1576
|
hideLanguageSwitcher = false
|
|
1546
1577
|
}) => {
|
|
1547
1578
|
const [isLangOpen, setIsLangOpen] = useState(false);
|
|
@@ -1617,7 +1648,7 @@ var CalendarHeader = ({
|
|
|
1617
1648
|
{ key: "agenda", icon: ListTodo }
|
|
1618
1649
|
];
|
|
1619
1650
|
const currentLang = LANGUAGE_META[language] ?? LANGUAGE_META["tr"];
|
|
1620
|
-
return /* @__PURE__ */
|
|
1651
|
+
return /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { className: "flex items-center gap-2 w-full md:w-auto justify-between md:justify-start" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2 md:gap-3" }, /* @__PURE__ */ React18__default.createElement(
|
|
1621
1652
|
Button,
|
|
1622
1653
|
{
|
|
1623
1654
|
variant: "ghost",
|
|
@@ -1625,8 +1656,8 @@ var CalendarHeader = ({
|
|
|
1625
1656
|
className: "text-muted-foreground hover:text-foreground hover:bg-accent/80 rounded-xl h-10 w-10 transition-all duration-200",
|
|
1626
1657
|
onClick: onMenuClick
|
|
1627
1658
|
},
|
|
1628
|
-
/* @__PURE__ */
|
|
1629
|
-
), /* @__PURE__ */
|
|
1659
|
+
/* @__PURE__ */ React18__default.createElement(Menu, { className: "h-5 w-5" })
|
|
1660
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
1630
1661
|
Button,
|
|
1631
1662
|
{
|
|
1632
1663
|
variant: "outline",
|
|
@@ -1634,15 +1665,15 @@ var CalendarHeader = ({
|
|
|
1634
1665
|
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"
|
|
1635
1666
|
},
|
|
1636
1667
|
translations.today
|
|
1637
|
-
), onCreateEvent && /* @__PURE__ */
|
|
1668
|
+
), onCreateEvent && /* @__PURE__ */ React18__default.createElement("div", { className: "relative group hidden sm:block" }, /* @__PURE__ */ React18__default.createElement(
|
|
1638
1669
|
Button,
|
|
1639
1670
|
{
|
|
1640
1671
|
onClick: onCreateEvent,
|
|
1641
1672
|
size: "icon",
|
|
1642
1673
|
className: "h-9 w-9 rounded-xl shadow-sm shadow-primary/20 transition-all duration-200"
|
|
1643
1674
|
},
|
|
1644
|
-
/* @__PURE__ */
|
|
1645
|
-
), /* @__PURE__ */
|
|
1675
|
+
/* @__PURE__ */ React18__default.createElement(Plus, { className: "h-4 w-4" })
|
|
1676
|
+
), /* @__PURE__ */ React18__default.createElement("div", { className: "pointer-events-none absolute left-1/2 -translate-x-1/2 top-full mt-2 z-50 opacity-0 group-hover:opacity-100 transition-opacity duration-150" }, /* @__PURE__ */ React18__default.createElement("div", { className: "bg-popover text-popover-foreground text-xs font-medium px-2.5 py-1.5 rounded-lg shadow-md border border-border/60 whitespace-nowrap" }, translations.createEvent ?? translations.create), /* @__PURE__ */ React18__default.createElement("div", { className: "absolute -top-1 left-1/2 -translate-x-1/2 w-2 h-2 bg-popover border-l border-t border-border/60 rotate-45" }))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center bg-muted/40 rounded-xl p-0.5" }, /* @__PURE__ */ React18__default.createElement(
|
|
1646
1677
|
Button,
|
|
1647
1678
|
{
|
|
1648
1679
|
variant: "ghost",
|
|
@@ -1650,8 +1681,8 @@ var CalendarHeader = ({
|
|
|
1650
1681
|
onClick: onPrev,
|
|
1651
1682
|
className: "rounded-lg h-8 w-8 hover:bg-background/80 transition-all duration-200"
|
|
1652
1683
|
},
|
|
1653
|
-
/* @__PURE__ */
|
|
1654
|
-
), /* @__PURE__ */
|
|
1684
|
+
/* @__PURE__ */ React18__default.createElement(ChevronLeft, { className: "h-4 w-4 text-muted-foreground" })
|
|
1685
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
1655
1686
|
Button,
|
|
1656
1687
|
{
|
|
1657
1688
|
variant: "ghost",
|
|
@@ -1659,8 +1690,8 @@ var CalendarHeader = ({
|
|
|
1659
1690
|
onClick: onNext,
|
|
1660
1691
|
className: "rounded-lg h-8 w-8 hover:bg-background/80 transition-all duration-200"
|
|
1661
1692
|
},
|
|
1662
|
-
/* @__PURE__ */
|
|
1663
|
-
)), /* @__PURE__ */
|
|
1693
|
+
/* @__PURE__ */ React18__default.createElement(ChevronRight, { className: "h-4 w-4 text-muted-foreground" })
|
|
1694
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "ml-2 md:ml-4 hidden sm:block" }, /* @__PURE__ */ React18__default.createElement("h2", { className: "text-lg md:text-xl font-semibold text-foreground whitespace-nowrap capitalize tracking-tight" }, format(currentDate, "MMMM yyyy", { locale })))), /* @__PURE__ */ React18__default.createElement("div", { className: "sm:hidden" }, /* @__PURE__ */ React18__default.createElement("h2", { className: "text-lg font-semibold text-foreground whitespace-nowrap capitalize tracking-tight" }, format(currentDate, "MMMM yyyy", { locale })))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2 md:gap-3 w-full md:w-auto justify-end" }, onLanguageChange && !hideLanguageSwitcher && /* @__PURE__ */ React18__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React18__default.createElement(
|
|
1664
1695
|
"button",
|
|
1665
1696
|
{
|
|
1666
1697
|
ref: langButtonRef,
|
|
@@ -1672,20 +1703,20 @@ var CalendarHeader = ({
|
|
|
1672
1703
|
),
|
|
1673
1704
|
title: currentLang.english
|
|
1674
1705
|
},
|
|
1675
|
-
/* @__PURE__ */
|
|
1676
|
-
/* @__PURE__ */
|
|
1677
|
-
/* @__PURE__ */
|
|
1678
|
-
/* @__PURE__ */
|
|
1706
|
+
/* @__PURE__ */ React18__default.createElement(Globe, { className: "h-3.5 w-3.5" }),
|
|
1707
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "text-base leading-none" }, currentLang.flag),
|
|
1708
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "hidden sm:inline text-xs font-semibold uppercase tracking-wider" }, language),
|
|
1709
|
+
/* @__PURE__ */ React18__default.createElement(ChevronDown, { className: cn("h-3.5 w-3.5 transition-transform duration-200", isLangOpen && "rotate-180") })
|
|
1679
1710
|
), isLangOpen && langPos && createPortal(
|
|
1680
|
-
/* @__PURE__ */
|
|
1711
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
1681
1712
|
"div",
|
|
1682
1713
|
{
|
|
1683
1714
|
ref: langDropdownRef,
|
|
1684
1715
|
className: "fixed w-52 bg-background border border-border/60 rounded-2xl shadow-2xl z-[9999] overflow-hidden py-1.5",
|
|
1685
1716
|
style: { top: langPos.top, left: langPos.left, width: LANG_DROPDOWN_WIDTH }
|
|
1686
1717
|
},
|
|
1687
|
-
/* @__PURE__ */
|
|
1688
|
-
/* @__PURE__ */
|
|
1718
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "px-3 py-2 border-b border-border/40 mb-1" }, /* @__PURE__ */ React18__default.createElement("p", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider" }, "Language / Dil")),
|
|
1719
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "max-h-72 overflow-y-auto" }, Object.entries(LANGUAGE_META).map(([code, meta]) => /* @__PURE__ */ React18__default.createElement(
|
|
1689
1720
|
"button",
|
|
1690
1721
|
{
|
|
1691
1722
|
key: code,
|
|
@@ -1699,13 +1730,13 @@ var CalendarHeader = ({
|
|
|
1699
1730
|
language === code ? "bg-primary/10 text-primary font-semibold" : "text-foreground"
|
|
1700
1731
|
)
|
|
1701
1732
|
},
|
|
1702
|
-
/* @__PURE__ */
|
|
1703
|
-
/* @__PURE__ */
|
|
1704
|
-
language === code && /* @__PURE__ */
|
|
1733
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "text-lg leading-none w-6 text-center" }, meta.flag),
|
|
1734
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 text-left" }, /* @__PURE__ */ React18__default.createElement("div", { className: cn("font-medium", meta.rtl && "text-right") }, meta.native), /* @__PURE__ */ React18__default.createElement("div", { className: "text-xs text-muted-foreground" }, meta.english)),
|
|
1735
|
+
language === code && /* @__PURE__ */ React18__default.createElement("div", { className: "w-2 h-2 rounded-full bg-primary shrink-0" })
|
|
1705
1736
|
)))
|
|
1706
1737
|
),
|
|
1707
1738
|
document.body
|
|
1708
|
-
)), onThemeToggle && /* @__PURE__ */
|
|
1739
|
+
)), onThemeToggle && /* @__PURE__ */ React18__default.createElement(
|
|
1709
1740
|
Button,
|
|
1710
1741
|
{
|
|
1711
1742
|
variant: "ghost",
|
|
@@ -1713,16 +1744,24 @@ var CalendarHeader = ({
|
|
|
1713
1744
|
className: "rounded-xl h-9 w-9 hover:bg-accent/80 transition-all duration-200",
|
|
1714
1745
|
onClick: onThemeToggle
|
|
1715
1746
|
},
|
|
1716
|
-
isDarkMode ? /* @__PURE__ */
|
|
1717
|
-
), typeof eventCount === "number" &&
|
|
1747
|
+
isDarkMode ? /* @__PURE__ */ React18__default.createElement(Sun, { className: "h-4 w-4 text-amber-500" }) : /* @__PURE__ */ React18__default.createElement(Moon, { className: "h-4 w-4 text-muted-foreground" })
|
|
1748
|
+
), !hideViewSwitcher && (typeof eventCount === "number" || typeof hourCount === "number") && /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-1.5" }, typeof eventCount === "number" && /* @__PURE__ */ React18__default.createElement(
|
|
1718
1749
|
"div",
|
|
1719
1750
|
{
|
|
1720
1751
|
className: "flex items-center gap-1.5 h-8 px-3 rounded-xl bg-primary/10 text-primary text-xs font-semibold tabular-nums select-none border border-primary/20 shadow-sm shadow-primary/10",
|
|
1721
|
-
title: `${eventCount}
|
|
1752
|
+
title: `${eventCount} ${eventCount === 1 ? translations.eventCount ?? "event" : translations.eventsCount ?? "events"}`
|
|
1722
1753
|
},
|
|
1723
|
-
/* @__PURE__ */
|
|
1724
|
-
/* @__PURE__ */
|
|
1725
|
-
),
|
|
1754
|
+
/* @__PURE__ */ React18__default.createElement(CalendarCheck2, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
1755
|
+
/* @__PURE__ */ React18__default.createElement("span", null, eventCount)
|
|
1756
|
+
), typeof hourCount === "number" && /* @__PURE__ */ React18__default.createElement(
|
|
1757
|
+
"div",
|
|
1758
|
+
{
|
|
1759
|
+
className: "flex items-center gap-1.5 h-8 px-3 rounded-xl bg-amber-500/10 text-amber-600 dark:text-amber-400 text-xs font-semibold tabular-nums select-none border border-amber-500/20 shadow-sm shadow-amber-500/10",
|
|
1760
|
+
title: `${hourCount} ${hourCount === 1 ? translations.hourCount ?? "hour" : translations.hoursCount ?? "hours"}`
|
|
1761
|
+
},
|
|
1762
|
+
/* @__PURE__ */ React18__default.createElement(Clock, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
1763
|
+
/* @__PURE__ */ React18__default.createElement("span", null, hourCount)
|
|
1764
|
+
)), !hideViewSwitcher && /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center bg-muted/50 backdrop-blur-sm rounded-xl p-1 gap-0.5" }, viewConfig.map(({ key, icon: Icon }) => /* @__PURE__ */ React18__default.createElement(
|
|
1726
1765
|
Button,
|
|
1727
1766
|
{
|
|
1728
1767
|
key,
|
|
@@ -1737,9 +1776,9 @@ var CalendarHeader = ({
|
|
|
1737
1776
|
view === key && !activeCustomViewId ? "bg-background shadow-sm text-foreground font-medium border-[0.5px] border-border/50" : "text-muted-foreground hover:text-foreground hover:bg-background/50"
|
|
1738
1777
|
)
|
|
1739
1778
|
},
|
|
1740
|
-
/* @__PURE__ */
|
|
1741
|
-
/* @__PURE__ */
|
|
1742
|
-
)), customViews && customViews.length > 0 && /* @__PURE__ */
|
|
1779
|
+
/* @__PURE__ */ React18__default.createElement(Icon, { className: "h-3.5 w-3.5" }),
|
|
1780
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "hidden sm:inline" }, translations[key])
|
|
1781
|
+
)), customViews && customViews.length > 0 && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "w-px h-5 bg-border/60 mx-0.5 shrink-0" }), /* @__PURE__ */ React18__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React18__default.createElement(
|
|
1743
1782
|
Button,
|
|
1744
1783
|
{
|
|
1745
1784
|
ref: customViewButtonRef,
|
|
@@ -1752,17 +1791,17 @@ var CalendarHeader = ({
|
|
|
1752
1791
|
),
|
|
1753
1792
|
title: "Daha fazla g\xF6r\xFCn\xFCm"
|
|
1754
1793
|
},
|
|
1755
|
-
activeCustomViewId ? customViews.find((cv) => cv.id === activeCustomViewId)?.label : /* @__PURE__ */
|
|
1756
|
-
/* @__PURE__ */
|
|
1794
|
+
activeCustomViewId ? customViews.find((cv) => cv.id === activeCustomViewId)?.label : /* @__PURE__ */ React18__default.createElement(MoreHorizontal, { className: "h-3.5 w-3.5" }),
|
|
1795
|
+
/* @__PURE__ */ React18__default.createElement(ChevronDown, { className: cn("h-3 w-3 transition-transform duration-150", isCustomViewOpen && "rotate-180") })
|
|
1757
1796
|
), isCustomViewOpen && customViewPos && createPortal(
|
|
1758
|
-
/* @__PURE__ */
|
|
1797
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
1759
1798
|
"div",
|
|
1760
1799
|
{
|
|
1761
1800
|
ref: customViewDropdownRef,
|
|
1762
1801
|
className: "fixed min-w-[160px] bg-background border border-border/60 rounded-2xl shadow-2xl z-[9999] overflow-hidden py-1.5",
|
|
1763
1802
|
style: { top: customViewPos.top, left: customViewPos.left, minWidth: CUSTOM_VIEW_DROPDOWN_WIDTH }
|
|
1764
1803
|
},
|
|
1765
|
-
customViews.map((cv) => /* @__PURE__ */
|
|
1804
|
+
customViews.map((cv) => /* @__PURE__ */ React18__default.createElement(
|
|
1766
1805
|
"button",
|
|
1767
1806
|
{
|
|
1768
1807
|
key: cv.id,
|
|
@@ -1776,9 +1815,9 @@ var CalendarHeader = ({
|
|
|
1776
1815
|
activeCustomViewId === cv.id ? "bg-primary/10 text-primary font-semibold" : "text-foreground"
|
|
1777
1816
|
)
|
|
1778
1817
|
},
|
|
1779
|
-
cv.icon && /* @__PURE__ */
|
|
1780
|
-
/* @__PURE__ */
|
|
1781
|
-
activeCustomViewId === cv.id && /* @__PURE__ */
|
|
1818
|
+
cv.icon && /* @__PURE__ */ React18__default.createElement("span", { className: "w-4 h-4 flex items-center justify-center shrink-0" }, cv.icon),
|
|
1819
|
+
/* @__PURE__ */ React18__default.createElement("span", null, cv.label),
|
|
1820
|
+
activeCustomViewId === cv.id && /* @__PURE__ */ React18__default.createElement("span", { className: "ml-auto w-1.5 h-1.5 rounded-full bg-primary shrink-0" })
|
|
1782
1821
|
))
|
|
1783
1822
|
),
|
|
1784
1823
|
document.body
|
|
@@ -1805,12 +1844,12 @@ var MiniCalendar = ({
|
|
|
1805
1844
|
className,
|
|
1806
1845
|
locale
|
|
1807
1846
|
}) => {
|
|
1808
|
-
const [viewDate, setViewDate] =
|
|
1809
|
-
|
|
1847
|
+
const [viewDate, setViewDate] = React18__default.useState(currentDate);
|
|
1848
|
+
React18__default.useEffect(() => {
|
|
1810
1849
|
setViewDate(currentDate);
|
|
1811
1850
|
}, [currentDate]);
|
|
1812
|
-
const days =
|
|
1813
|
-
const weekDays =
|
|
1851
|
+
const days = React18__default.useMemo(() => getMonthGrid(viewDate), [viewDate]);
|
|
1852
|
+
const weekDays = React18__default.useMemo(() => {
|
|
1814
1853
|
const base = new Date(2024, 0, 7);
|
|
1815
1854
|
return Array.from({ length: 7 }, (_, i) => {
|
|
1816
1855
|
const d = new Date(base);
|
|
@@ -1834,7 +1873,7 @@ var MiniCalendar = ({
|
|
|
1834
1873
|
onDateChange(day);
|
|
1835
1874
|
if (onViewChange) onViewChange("day");
|
|
1836
1875
|
};
|
|
1837
|
-
return /* @__PURE__ */
|
|
1876
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: cn("px-4 w-[260px]", className) }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-semibold text-foreground capitalize" }, format(viewDate, "MMMM yyyy", { locale })), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center bg-muted/40 rounded-lg p-0.5" }, /* @__PURE__ */ React18__default.createElement(
|
|
1838
1877
|
Button,
|
|
1839
1878
|
{
|
|
1840
1879
|
variant: "ghost",
|
|
@@ -1843,8 +1882,8 @@ var MiniCalendar = ({
|
|
|
1843
1882
|
onClick: handlePrev,
|
|
1844
1883
|
"aria-label": "Previous month"
|
|
1845
1884
|
},
|
|
1846
|
-
/* @__PURE__ */
|
|
1847
|
-
), /* @__PURE__ */
|
|
1885
|
+
/* @__PURE__ */ React18__default.createElement(ChevronLeft, { className: "h-4 w-4" })
|
|
1886
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
1848
1887
|
Button,
|
|
1849
1888
|
{
|
|
1850
1889
|
variant: "ghost",
|
|
@@ -1853,12 +1892,12 @@ var MiniCalendar = ({
|
|
|
1853
1892
|
onClick: handleNext,
|
|
1854
1893
|
"aria-label": "Next month"
|
|
1855
1894
|
},
|
|
1856
|
-
/* @__PURE__ */
|
|
1857
|
-
))), /* @__PURE__ */
|
|
1895
|
+
/* @__PURE__ */ React18__default.createElement(ChevronRight, { className: "h-4 w-4" })
|
|
1896
|
+
))), /* @__PURE__ */ React18__default.createElement("div", { className: "grid grid-cols-7 gap-y-2 text-center mb-2" }, weekDays.map((day, i) => /* @__PURE__ */ React18__default.createElement("div", { key: `${day}-${i}`, className: "text-[10px] text-muted-foreground/70 font-semibold uppercase" }, day))), /* @__PURE__ */ React18__default.createElement("div", { className: "grid grid-cols-7 gap-y-1 text-center" }, days.map((day) => {
|
|
1858
1897
|
const isSelected = isSameDay(day, currentDate);
|
|
1859
1898
|
const isCurrentMonth = isSameMonth(day, viewDate);
|
|
1860
1899
|
const isTodayDate = isToday(day);
|
|
1861
|
-
return /* @__PURE__ */
|
|
1900
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
1862
1901
|
"button",
|
|
1863
1902
|
{
|
|
1864
1903
|
key: day.toISOString(),
|
|
@@ -1940,7 +1979,7 @@ var Sidebar = ({
|
|
|
1940
1979
|
];
|
|
1941
1980
|
const formatTzLabel = (tz, showTime = true) => {
|
|
1942
1981
|
if (!hasMounted || !now || !showTime) {
|
|
1943
|
-
return /* @__PURE__ */
|
|
1982
|
+
return /* @__PURE__ */ React18__default.createElement("span", null, tz.label);
|
|
1944
1983
|
}
|
|
1945
1984
|
let time = "";
|
|
1946
1985
|
let acronym = tz.acronym;
|
|
@@ -1960,29 +1999,29 @@ var Sidebar = ({
|
|
|
1960
1999
|
}
|
|
1961
2000
|
}
|
|
1962
2001
|
} catch (e) {
|
|
1963
|
-
return /* @__PURE__ */
|
|
2002
|
+
return /* @__PURE__ */ React18__default.createElement("span", null, tz.label);
|
|
1964
2003
|
}
|
|
1965
|
-
return /* @__PURE__ */
|
|
2004
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex justify-between w-full" }, /* @__PURE__ */ React18__default.createElement("span", null, tz.label), /* @__PURE__ */ React18__default.createElement("span", { className: "text-muted-foreground ml-2 tabular-nums" }, time, " ", /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs opacity-75" }, "(", acronym, ")")));
|
|
1966
2005
|
};
|
|
1967
2006
|
const selectedTzObj = timezones.find((t) => t.value === (timezone || ""));
|
|
1968
2007
|
const selectedTimezoneLabel = selectedTzObj ? formatTzLabel(selectedTzObj) : translations?.localTime ?? "Local Time";
|
|
1969
|
-
return /* @__PURE__ */
|
|
2008
|
+
return /* @__PURE__ */ React18__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", className) }, sidebarMenus && sidebarMenus.length > 0 && /* @__PURE__ */ React18__default.createElement("div", { className: "px-4 mb-4" }, !menusExpanded && /* @__PURE__ */ React18__default.createElement(
|
|
1970
2009
|
Button,
|
|
1971
2010
|
{
|
|
1972
2011
|
variant: "outline",
|
|
1973
2012
|
className: "w-full rounded-2xl h-11 gap-2.5 justify-start border-[0.5px] border-border/60 hover:border-primary/40 hover:bg-primary/5 hover:text-primary transition-all duration-200 font-medium text-sm",
|
|
1974
2013
|
onClick: () => setMenusExpanded(true)
|
|
1975
2014
|
},
|
|
1976
|
-
/* @__PURE__ */
|
|
1977
|
-
/* @__PURE__ */
|
|
1978
|
-
), menusExpanded && /* @__PURE__ */
|
|
2015
|
+
/* @__PURE__ */ React18__default.createElement(LayoutGrid, { className: "w-4 h-4" }),
|
|
2016
|
+
/* @__PURE__ */ React18__default.createElement("span", null, translations?.operations ?? "\u0130\u015Flemler")
|
|
2017
|
+
), menusExpanded && /* @__PURE__ */ React18__default.createElement("div", { className: "animate-in fade-in slide-in-from-top-2 duration-200" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between mb-2 px-1" }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider" }, translations?.operations ?? "\u0130\u015Flemler"), /* @__PURE__ */ React18__default.createElement(
|
|
1979
2018
|
"button",
|
|
1980
2019
|
{
|
|
1981
2020
|
onClick: () => setMenusExpanded(false),
|
|
1982
2021
|
className: "w-6 h-6 rounded-lg flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent/60 transition-all duration-150"
|
|
1983
2022
|
},
|
|
1984
|
-
/* @__PURE__ */
|
|
1985
|
-
)), /* @__PURE__ */
|
|
2023
|
+
/* @__PURE__ */ React18__default.createElement(X, { className: "w-3.5 h-3.5" })
|
|
2024
|
+
)), /* @__PURE__ */ React18__default.createElement("nav", { className: "space-y-0.5" }, /* @__PURE__ */ React18__default.createElement(
|
|
1986
2025
|
"button",
|
|
1987
2026
|
{
|
|
1988
2027
|
onClick: () => {
|
|
@@ -1994,10 +2033,10 @@ var Sidebar = ({
|
|
|
1994
2033
|
activeCustomMenu === null ? "bg-primary/10 text-primary" : "text-muted-foreground hover:bg-accent/60 hover:text-foreground"
|
|
1995
2034
|
)
|
|
1996
2035
|
},
|
|
1997
|
-
/* @__PURE__ */
|
|
1998
|
-
/* @__PURE__ */
|
|
1999
|
-
activeCustomMenu === null && /* @__PURE__ */
|
|
2000
|
-
), sidebarMenus?.map((item) => /* @__PURE__ */
|
|
2036
|
+
/* @__PURE__ */ React18__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "w-4 h-4 shrink-0", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React18__default.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ React18__default.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ React18__default.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ React18__default.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" })),
|
|
2037
|
+
/* @__PURE__ */ React18__default.createElement("span", null, translations?.calendar ?? "Takvim"),
|
|
2038
|
+
activeCustomMenu === null && /* @__PURE__ */ React18__default.createElement("span", { className: "ml-auto w-1.5 h-1.5 rounded-full bg-primary" })
|
|
2039
|
+
), sidebarMenus?.map((item) => /* @__PURE__ */ React18__default.createElement(
|
|
2001
2040
|
"button",
|
|
2002
2041
|
{
|
|
2003
2042
|
key: item.id,
|
|
@@ -2010,10 +2049,10 @@ var Sidebar = ({
|
|
|
2010
2049
|
activeCustomMenu === item.id ? "bg-primary/10 text-primary" : "text-muted-foreground hover:bg-accent/60 hover:text-foreground"
|
|
2011
2050
|
)
|
|
2012
2051
|
},
|
|
2013
|
-
item.icon && /* @__PURE__ */
|
|
2014
|
-
/* @__PURE__ */
|
|
2015
|
-
activeCustomMenu === item.id && /* @__PURE__ */
|
|
2016
|
-
))))), onEventCreate && /* @__PURE__ */
|
|
2052
|
+
item.icon && /* @__PURE__ */ React18__default.createElement("span", { className: "w-4 h-4 shrink-0 flex items-center justify-center" }, item.icon),
|
|
2053
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "truncate" }, item.label),
|
|
2054
|
+
activeCustomMenu === item.id && /* @__PURE__ */ React18__default.createElement("span", { className: "ml-auto w-1.5 h-1.5 rounded-full bg-primary" })
|
|
2055
|
+
))))), onEventCreate && /* @__PURE__ */ React18__default.createElement("div", { className: "md:hidden px-4 mb-4" }, /* @__PURE__ */ React18__default.createElement(
|
|
2017
2056
|
Button,
|
|
2018
2057
|
{
|
|
2019
2058
|
onClick: () => {
|
|
@@ -2021,9 +2060,9 @@ var Sidebar = ({
|
|
|
2021
2060
|
},
|
|
2022
2061
|
className: "w-full rounded-2xl h-11 gap-2.5 justify-center shadow-sm shadow-primary/20 transition-all duration-200 font-medium text-sm"
|
|
2023
2062
|
},
|
|
2024
|
-
/* @__PURE__ */
|
|
2025
|
-
/* @__PURE__ */
|
|
2026
|
-
)), onReverseTimeChange && /* @__PURE__ */
|
|
2063
|
+
/* @__PURE__ */ React18__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "w-4 h-4 shrink-0", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React18__default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React18__default.createElement("path", { d: "M12 5v14" })),
|
|
2064
|
+
/* @__PURE__ */ React18__default.createElement("span", null, translations?.createEvent ?? "Etkinlik Olu\u015Ftur")
|
|
2065
|
+
)), onReverseTimeChange && /* @__PURE__ */ React18__default.createElement("div", { className: "px-4 mb-4" }, /* @__PURE__ */ React18__default.createElement(
|
|
2027
2066
|
"button",
|
|
2028
2067
|
{
|
|
2029
2068
|
onClick: () => onReverseTimeChange(!reverseTime),
|
|
@@ -2032,33 +2071,33 @@ var Sidebar = ({
|
|
|
2032
2071
|
reverseTime ? "bg-primary/10 border-primary/30 text-primary" : "bg-muted/30 border-border/50 text-muted-foreground hover:border-primary/30 hover:text-foreground"
|
|
2033
2072
|
)
|
|
2034
2073
|
},
|
|
2035
|
-
/* @__PURE__ */
|
|
2036
|
-
/* @__PURE__ */
|
|
2074
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2.5" }, /* @__PURE__ */ React18__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "w-4 h-4 shrink-0", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React18__default.createElement("line", { x1: "12", y1: "19", x2: "12", y2: "5" }), /* @__PURE__ */ React18__default.createElement("polyline", { points: "5 12 12 5 19 12" }), /* @__PURE__ */ React18__default.createElement("line", { x1: "12", y1: "5", x2: "12", y2: "19", className: "opacity-40" }), /* @__PURE__ */ React18__default.createElement("polyline", { points: "5 12 12 19 19 12", className: "opacity-40" })), /* @__PURE__ */ React18__default.createElement("div", { className: "text-left" }, /* @__PURE__ */ React18__default.createElement("div", { className: "text-xs font-semibold leading-tight" }, translations?.reverseTimeLabel ?? "Saat Y\xF6n\xFC"), /* @__PURE__ */ React18__default.createElement("div", { className: "text-[10px] leading-tight opacity-70 mt-0.5" }, reverseTime ? "23:00 \u2192 00:00" : "00:00 \u2192 23:00"))),
|
|
2075
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
2037
2076
|
"relative w-9 h-5 rounded-full transition-colors duration-200 shrink-0",
|
|
2038
2077
|
reverseTime ? "bg-primary" : "bg-border"
|
|
2039
|
-
) }, /* @__PURE__ */
|
|
2078
|
+
) }, /* @__PURE__ */ React18__default.createElement("span", { className: cn(
|
|
2040
2079
|
"absolute top-0.5 w-4 h-4 bg-white rounded-full shadow-sm transition-all duration-200",
|
|
2041
2080
|
reverseTime ? "left-4" : "left-0.5"
|
|
2042
2081
|
) }))
|
|
2043
2082
|
)), renderMiniCalendar ? (
|
|
2044
2083
|
// Custom mini-calendar: receives the same props as the built-in one
|
|
2045
2084
|
renderMiniCalendar({ currentDate, onDateChange, onViewChange })
|
|
2046
|
-
) : /* @__PURE__ */
|
|
2085
|
+
) : /* @__PURE__ */ React18__default.createElement(MiniCalendar, { currentDate, onDateChange, onViewChange, locale }), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 px-4 space-y-5 mt-5" }, /* @__PURE__ */ React18__default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3 border-[0px] border-border/30" }, /* @__PURE__ */ React18__default.createElement(
|
|
2047
2086
|
"div",
|
|
2048
2087
|
{
|
|
2049
2088
|
className: "flex items-center justify-between cursor-pointer hover:bg-accent/50 p-2 -m-1 rounded-xl mb-2 transition-all duration-200",
|
|
2050
2089
|
onClick: () => setCalendarsOpen(!calendarsOpen)
|
|
2051
2090
|
},
|
|
2052
|
-
/* @__PURE__ */
|
|
2053
|
-
/* @__PURE__ */
|
|
2054
|
-
), calendarsOpen && /* @__PURE__ */
|
|
2091
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.calendars),
|
|
2092
|
+
/* @__PURE__ */ React18__default.createElement(ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", calendarsOpen && "rotate-180") })
|
|
2093
|
+
), calendarsOpen && /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-1" }, displayCalendars.map((cal) => /* @__PURE__ */ React18__default.createElement(
|
|
2055
2094
|
"div",
|
|
2056
2095
|
{
|
|
2057
2096
|
key: cal.id,
|
|
2058
2097
|
className: "flex items-center gap-3 py-2 px-2 hover:bg-accent/60 rounded-xl cursor-pointer group transition-all duration-200",
|
|
2059
2098
|
onClick: () => onCalendarToggle?.(cal.id, !(cal.active ?? true))
|
|
2060
2099
|
},
|
|
2061
|
-
/* @__PURE__ */
|
|
2100
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "relative flex items-center justify-center" }, /* @__PURE__ */ React18__default.createElement(
|
|
2062
2101
|
"input",
|
|
2063
2102
|
{
|
|
2064
2103
|
type: "checkbox",
|
|
@@ -2071,7 +2110,7 @@ var Sidebar = ({
|
|
|
2071
2110
|
style: { "--primary-color": cal.color },
|
|
2072
2111
|
"data-cal-id": cal.id
|
|
2073
2112
|
}
|
|
2074
|
-
), /* @__PURE__ */
|
|
2113
|
+
), /* @__PURE__ */ React18__default.createElement("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none opacity-0 peer-checked:opacity-100 transition-opacity" }, /* @__PURE__ */ React18__default.createElement("svg", { className: "w-3.5 h-3.5 text-white", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 3 }, /* @__PURE__ */ React18__default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ React18__default.createElement("style", null, `
|
|
2075
2114
|
input[type="checkbox"][data-cal-id="${cal.id}"]:checked {
|
|
2076
2115
|
background-color: ${cal.color} !important;
|
|
2077
2116
|
border-color: ${cal.color} !important;
|
|
@@ -2080,23 +2119,23 @@ var Sidebar = ({
|
|
|
2080
2119
|
--tw-ring-color: ${cal.color}40 !important;
|
|
2081
2120
|
}
|
|
2082
2121
|
`)),
|
|
2083
|
-
/* @__PURE__ */
|
|
2084
|
-
/* @__PURE__ */
|
|
2122
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2 flex-1 min-w-0" }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm text-foreground/90 truncate font-medium" }, cal.label)),
|
|
2123
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2085
2124
|
"div",
|
|
2086
2125
|
{
|
|
2087
2126
|
className: "w-2 h-2 rounded-full opacity-60 group-hover:opacity-100 transition-opacity",
|
|
2088
2127
|
style: { backgroundColor: cal.color }
|
|
2089
2128
|
}
|
|
2090
2129
|
)
|
|
2091
|
-
))))), /* @__PURE__ */
|
|
2130
|
+
))))), /* @__PURE__ */ React18__default.createElement("div", { className: "mt-auto px-4 pt-5" }, /* @__PURE__ */ React18__default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2 mb-3" }, /* @__PURE__ */ React18__default.createElement("div", { className: "p-1.5 bg-primary/10 rounded-lg" }, /* @__PURE__ */ React18__default.createElement(Globe, { className: "w-4 h-4 text-primary" })), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.timezone)), /* @__PURE__ */ React18__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React18__default.createElement(
|
|
2092
2131
|
"button",
|
|
2093
2132
|
{
|
|
2094
2133
|
onClick: () => setTimezoneOpen(!timezoneOpen),
|
|
2095
2134
|
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"
|
|
2096
2135
|
},
|
|
2097
|
-
/* @__PURE__ */
|
|
2098
|
-
/* @__PURE__ */
|
|
2099
|
-
), timezoneOpen && /* @__PURE__ */
|
|
2136
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 truncate mr-2 font-medium" }, selectedTimezoneLabel),
|
|
2137
|
+
/* @__PURE__ */ React18__default.createElement(ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", timezoneOpen && "rotate-180") })
|
|
2138
|
+
), timezoneOpen && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setTimezoneOpen(false) }), /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
2100
2139
|
"div",
|
|
2101
2140
|
{
|
|
2102
2141
|
key: tz.value,
|
|
@@ -2129,7 +2168,7 @@ var DraggableEvent = ({ event, children, className, style: propStyle, ...props }
|
|
|
2129
2168
|
opacity: isDragging ? 0 : propStyle?.opacity
|
|
2130
2169
|
// Hiding original element completely
|
|
2131
2170
|
};
|
|
2132
|
-
return /* @__PURE__ */
|
|
2171
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2133
2172
|
"div",
|
|
2134
2173
|
{
|
|
2135
2174
|
ref: setNodeRef,
|
|
@@ -2150,7 +2189,7 @@ var DroppableCell = ({ id, date, resourceId, children, className, style, onClick
|
|
|
2150
2189
|
const minutes = date.getMinutes();
|
|
2151
2190
|
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";
|
|
2152
2191
|
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";
|
|
2153
|
-
return /* @__PURE__ */
|
|
2192
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2154
2193
|
"div",
|
|
2155
2194
|
{
|
|
2156
2195
|
ref: setNodeRef,
|
|
@@ -2167,7 +2206,7 @@ var DroppableCell = ({ id, date, resourceId, children, className, style, onClick
|
|
|
2167
2206
|
};
|
|
2168
2207
|
|
|
2169
2208
|
// src/views/MonthView.tsx
|
|
2170
|
-
var EventItem =
|
|
2209
|
+
var EventItem = React18__default.memo(({ event, onEventClick }) => /* @__PURE__ */ React18__default.createElement(DraggableEvent, { event }, /* @__PURE__ */ React18__default.createElement(
|
|
2171
2210
|
"div",
|
|
2172
2211
|
{
|
|
2173
2212
|
className: cn(
|
|
@@ -2185,7 +2224,7 @@ var EventItem = React17__default.memo(({ event, onEventClick }) => /* @__PURE__
|
|
|
2185
2224
|
onEventClick?.(event);
|
|
2186
2225
|
}
|
|
2187
2226
|
},
|
|
2188
|
-
/* @__PURE__ */
|
|
2227
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "font-medium" }, event.title)
|
|
2189
2228
|
)));
|
|
2190
2229
|
EventItem.displayName = "EventItem";
|
|
2191
2230
|
var MonthView = ({
|
|
@@ -2217,19 +2256,19 @@ var MonthView = ({
|
|
|
2217
2256
|
});
|
|
2218
2257
|
return map;
|
|
2219
2258
|
}, [events, getZonedDate]);
|
|
2220
|
-
return /* @__PURE__ */
|
|
2259
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full min-h-0 bg-background border-[0.5px] scrollbar-hide border-border/50 rounded-2xl overflow-hidden min-w-[800px] md:min-w-0 shadow-sm" }, /* @__PURE__ */ React18__default.createElement("div", { className: "overflow-y-auto flex-1 min-h-0 relative" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
2221
2260
|
"div",
|
|
2222
2261
|
{
|
|
2223
2262
|
key: day.toISOString(),
|
|
2224
2263
|
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"
|
|
2225
2264
|
},
|
|
2226
2265
|
format(day, "EEE", { locale })
|
|
2227
|
-
))), /* @__PURE__ */
|
|
2266
|
+
))), /* @__PURE__ */ React18__default.createElement("div", { className: "grid grid-cols-7", style: { gridAutoRows: "130px" } }, days.map((day) => {
|
|
2228
2267
|
const dayKey = format(day, "yyyy-MM-dd");
|
|
2229
2268
|
const dayEvents = eventsByDay.get(dayKey) || [];
|
|
2230
2269
|
const isCurrentMonth = isSameMonth(day, currentDate);
|
|
2231
2270
|
const cellId = day.toISOString();
|
|
2232
|
-
return /* @__PURE__ */
|
|
2271
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2233
2272
|
DroppableCell,
|
|
2234
2273
|
{
|
|
2235
2274
|
key: cellId,
|
|
@@ -2242,11 +2281,11 @@ var MonthView = ({
|
|
|
2242
2281
|
),
|
|
2243
2282
|
onClick: () => onDateClick?.(day)
|
|
2244
2283
|
},
|
|
2245
|
-
/* @__PURE__ */
|
|
2284
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex justify-between items-start" }, /* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
2246
2285
|
"text-sm font-semibold w-7 h-7 flex items-center justify-center rounded-full transition-all duration-200",
|
|
2247
2286
|
isToday(day) ? "bg-primary text-primary-foreground shadow-md shadow-primary/30" : "group-hover:bg-accent"
|
|
2248
|
-
) }, format(day, "d", { locale })), dayEvents.length > 0 && /* @__PURE__ */
|
|
2249
|
-
/* @__PURE__ */
|
|
2287
|
+
) }, format(day, "d", { locale })), dayEvents.length > 0 && /* @__PURE__ */ React18__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)),
|
|
2288
|
+
/* @__PURE__ */ React18__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__ */ React18__default.createElement(EventItem, { key: `${event.id}-${dayKey}`, event, onEventClick })), dayEvents.length > 4 && /* @__PURE__ */ React18__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"))
|
|
2250
2289
|
);
|
|
2251
2290
|
}))));
|
|
2252
2291
|
};
|
|
@@ -2307,7 +2346,7 @@ var ResizableEvent = ({
|
|
|
2307
2346
|
document.addEventListener("touchmove", handleMove, { passive: false });
|
|
2308
2347
|
document.addEventListener("touchend", handleEnd);
|
|
2309
2348
|
}, [event, hourHeight, minDuration, onResize, resizeHeight]);
|
|
2310
|
-
return /* @__PURE__ */
|
|
2349
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2311
2350
|
"div",
|
|
2312
2351
|
{
|
|
2313
2352
|
ref: containerRef,
|
|
@@ -2318,7 +2357,7 @@ var ResizableEvent = ({
|
|
|
2318
2357
|
}
|
|
2319
2358
|
},
|
|
2320
2359
|
children,
|
|
2321
|
-
/* @__PURE__ */
|
|
2360
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2322
2361
|
"div",
|
|
2323
2362
|
{
|
|
2324
2363
|
className: cn(
|
|
@@ -2330,12 +2369,12 @@ var ResizableEvent = ({
|
|
|
2330
2369
|
onMouseDown: readonly ? void 0 : handleResizeStart,
|
|
2331
2370
|
onTouchStart: readonly ? void 0 : handleResizeStart
|
|
2332
2371
|
},
|
|
2333
|
-
/* @__PURE__ */
|
|
2372
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
2334
2373
|
"w-8 h-1 rounded-full transition-all",
|
|
2335
2374
|
isResizing ? "bg-primary" : "bg-muted-foreground/30 group-hover:bg-primary/50"
|
|
2336
2375
|
) })
|
|
2337
2376
|
),
|
|
2338
|
-
isResizing && /* @__PURE__ */
|
|
2377
|
+
isResizing && /* @__PURE__ */ React18__default.createElement("div", { className: "absolute inset-0 border-2 border-primary border-dashed rounded-md pointer-events-none bg-primary/5" })
|
|
2339
2378
|
);
|
|
2340
2379
|
};
|
|
2341
2380
|
var EventCardBadge = ({
|
|
@@ -2344,7 +2383,7 @@ var EventCardBadge = ({
|
|
|
2344
2383
|
className
|
|
2345
2384
|
}) => {
|
|
2346
2385
|
if (!badge?.icon || !badge?.name) return null;
|
|
2347
|
-
return /* @__PURE__ */
|
|
2386
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2348
2387
|
"div",
|
|
2349
2388
|
{
|
|
2350
2389
|
className: cn(
|
|
@@ -2357,26 +2396,121 @@ var EventCardBadge = ({
|
|
|
2357
2396
|
),
|
|
2358
2397
|
title: badge.name
|
|
2359
2398
|
},
|
|
2360
|
-
/* @__PURE__ */
|
|
2361
|
-
!compact && /* @__PURE__ */
|
|
2399
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "shrink-0 flex items-center justify-center [&>svg]:w-2.5 [&>svg]:h-2.5" }, badge.icon),
|
|
2400
|
+
!compact && /* @__PURE__ */ React18__default.createElement("span", { className: "truncate max-w-[72px]" }, badge.name)
|
|
2362
2401
|
);
|
|
2363
2402
|
};
|
|
2403
|
+
var EventHoverPopover = ({
|
|
2404
|
+
enabled,
|
|
2405
|
+
event,
|
|
2406
|
+
timeRange,
|
|
2407
|
+
children,
|
|
2408
|
+
className
|
|
2409
|
+
}) => {
|
|
2410
|
+
const triggerRef = useRef(null);
|
|
2411
|
+
const [open, setOpen] = useState(false);
|
|
2412
|
+
const [coords, setCoords] = useState({ top: 0, left: 0, placeAbove: true });
|
|
2413
|
+
const hideTimerRef = useRef(null);
|
|
2414
|
+
const updatePosition = useCallback(() => {
|
|
2415
|
+
const el = triggerRef.current;
|
|
2416
|
+
if (!el) return;
|
|
2417
|
+
const rect = el.getBoundingClientRect();
|
|
2418
|
+
const placeAbove = rect.top > 160;
|
|
2419
|
+
setCoords({
|
|
2420
|
+
top: placeAbove ? rect.top - 8 : rect.bottom + 8,
|
|
2421
|
+
left: Math.min(
|
|
2422
|
+
Math.max(rect.left + rect.width / 2, 120),
|
|
2423
|
+
window.innerWidth - 120
|
|
2424
|
+
),
|
|
2425
|
+
placeAbove
|
|
2426
|
+
});
|
|
2427
|
+
}, []);
|
|
2428
|
+
const show = useCallback(() => {
|
|
2429
|
+
if (!enabled) return;
|
|
2430
|
+
if (hideTimerRef.current) {
|
|
2431
|
+
clearTimeout(hideTimerRef.current);
|
|
2432
|
+
hideTimerRef.current = null;
|
|
2433
|
+
}
|
|
2434
|
+
updatePosition();
|
|
2435
|
+
setOpen(true);
|
|
2436
|
+
}, [enabled, updatePosition]);
|
|
2437
|
+
const scheduleHide = useCallback(() => {
|
|
2438
|
+
if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
|
|
2439
|
+
hideTimerRef.current = setTimeout(() => setOpen(false), 80);
|
|
2440
|
+
}, []);
|
|
2441
|
+
useEffect(() => {
|
|
2442
|
+
if (!open) return;
|
|
2443
|
+
const onMove = () => updatePosition();
|
|
2444
|
+
window.addEventListener("scroll", onMove, true);
|
|
2445
|
+
window.addEventListener("resize", onMove);
|
|
2446
|
+
return () => {
|
|
2447
|
+
window.removeEventListener("scroll", onMove, true);
|
|
2448
|
+
window.removeEventListener("resize", onMove);
|
|
2449
|
+
};
|
|
2450
|
+
}, [open, updatePosition]);
|
|
2451
|
+
useEffect(() => () => {
|
|
2452
|
+
if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
|
|
2453
|
+
}, []);
|
|
2454
|
+
if (!enabled) {
|
|
2455
|
+
return /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, children);
|
|
2456
|
+
}
|
|
2457
|
+
const accent = event.color || "hsl(var(--primary))";
|
|
2458
|
+
return /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement(
|
|
2459
|
+
"div",
|
|
2460
|
+
{
|
|
2461
|
+
ref: triggerRef,
|
|
2462
|
+
className: cn("h-full w-full", className),
|
|
2463
|
+
onMouseEnter: show,
|
|
2464
|
+
onMouseLeave: scheduleHide
|
|
2465
|
+
},
|
|
2466
|
+
children
|
|
2467
|
+
), open && typeof document !== "undefined" && createPortal(
|
|
2468
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2469
|
+
"div",
|
|
2470
|
+
{
|
|
2471
|
+
role: "tooltip",
|
|
2472
|
+
className: cn(
|
|
2473
|
+
"fixed z-[10000] w-64 max-w-[min(16rem,calc(100vw-1.5rem))]",
|
|
2474
|
+
"rounded-xl border border-border/60 bg-popover text-popover-foreground",
|
|
2475
|
+
"shadow-xl shadow-black/10 backdrop-blur-md",
|
|
2476
|
+
"pointer-events-none transition-opacity duration-150"
|
|
2477
|
+
),
|
|
2478
|
+
style: {
|
|
2479
|
+
top: coords.top,
|
|
2480
|
+
left: coords.left,
|
|
2481
|
+
transform: coords.placeAbove ? "translate(-50%, -100%)" : "translate(-50%, 0)"
|
|
2482
|
+
},
|
|
2483
|
+
onMouseEnter: show,
|
|
2484
|
+
onMouseLeave: scheduleHide
|
|
2485
|
+
},
|
|
2486
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2487
|
+
"div",
|
|
2488
|
+
{
|
|
2489
|
+
className: "h-1 rounded-t-xl",
|
|
2490
|
+
style: { backgroundColor: accent }
|
|
2491
|
+
}
|
|
2492
|
+
),
|
|
2493
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "p-3 space-y-2" }, /* @__PURE__ */ React18__default.createElement("div", { className: "text-sm font-semibold leading-snug text-foreground" }, event.title), /* @__PURE__ */ React18__default.createElement("div", { className: "text-xs font-medium text-muted-foreground tabular-nums" }, timeRange), event.description && /* @__PURE__ */ React18__default.createElement("p", { className: "text-xs text-muted-foreground/90 leading-relaxed line-clamp-4" }, event.description), event.guests?.length || event.attachments?.length || event.reminders?.length ? /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-wrap gap-1.5 pt-0.5" }, event.guests && event.guests.length > 0 && /* @__PURE__ */ React18__default.createElement("span", { className: "rounded-md bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground" }, event.guests.length, " guest", event.guests.length !== 1 ? "s" : ""), event.attachments && event.attachments.length > 0 && /* @__PURE__ */ React18__default.createElement("span", { className: "rounded-md bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground" }, event.attachments.length, " file", event.attachments.length !== 1 ? "s" : ""), event.reminders && event.reminders.length > 0 && /* @__PURE__ */ React18__default.createElement("span", { className: "rounded-md bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground" }, event.reminders.length, " reminder", event.reminders.length !== 1 ? "s" : "")) : null)
|
|
2494
|
+
),
|
|
2495
|
+
document.body
|
|
2496
|
+
));
|
|
2497
|
+
};
|
|
2364
2498
|
var ICON_CLASS = "w-2.5 h-2.5";
|
|
2365
2499
|
var EVENT_BADGE_ICONS = {
|
|
2366
|
-
privateLesson: /* @__PURE__ */
|
|
2367
|
-
groupLesson: /* @__PURE__ */
|
|
2368
|
-
packageLesson: /* @__PURE__ */
|
|
2369
|
-
online: /* @__PURE__ */
|
|
2370
|
-
inPerson: /* @__PURE__ */
|
|
2371
|
-
homeVisit: /* @__PURE__ */
|
|
2372
|
-
trial: /* @__PURE__ */
|
|
2373
|
-
makeup: /* @__PURE__ */
|
|
2374
|
-
exam: /* @__PURE__ */
|
|
2375
|
-
workshop: /* @__PURE__ */
|
|
2376
|
-
priority: /* @__PURE__ */
|
|
2377
|
-
holiday: /* @__PURE__ */
|
|
2378
|
-
cancelled: /* @__PURE__ */
|
|
2379
|
-
listening: /* @__PURE__ */
|
|
2500
|
+
privateLesson: /* @__PURE__ */ React18__default.createElement(User, { className: ICON_CLASS }),
|
|
2501
|
+
groupLesson: /* @__PURE__ */ React18__default.createElement(Users, { className: ICON_CLASS }),
|
|
2502
|
+
packageLesson: /* @__PURE__ */ React18__default.createElement(Package, { className: ICON_CLASS }),
|
|
2503
|
+
online: /* @__PURE__ */ React18__default.createElement(Video, { className: ICON_CLASS }),
|
|
2504
|
+
inPerson: /* @__PURE__ */ React18__default.createElement(MapPin, { className: ICON_CLASS }),
|
|
2505
|
+
homeVisit: /* @__PURE__ */ React18__default.createElement(Home, { className: ICON_CLASS }),
|
|
2506
|
+
trial: /* @__PURE__ */ React18__default.createElement(Sparkles, { className: ICON_CLASS }),
|
|
2507
|
+
makeup: /* @__PURE__ */ React18__default.createElement(RefreshCw, { className: ICON_CLASS }),
|
|
2508
|
+
exam: /* @__PURE__ */ React18__default.createElement(ClipboardCheck, { className: ICON_CLASS }),
|
|
2509
|
+
workshop: /* @__PURE__ */ React18__default.createElement(Presentation, { className: ICON_CLASS }),
|
|
2510
|
+
priority: /* @__PURE__ */ React18__default.createElement(Star, { className: ICON_CLASS }),
|
|
2511
|
+
holiday: /* @__PURE__ */ React18__default.createElement(PartyPopper, { className: ICON_CLASS }),
|
|
2512
|
+
cancelled: /* @__PURE__ */ React18__default.createElement(Ban, { className: ICON_CLASS }),
|
|
2513
|
+
listening: /* @__PURE__ */ React18__default.createElement(Headphones, { className: ICON_CLASS })
|
|
2380
2514
|
};
|
|
2381
2515
|
var EVENT_BADGE_LABELS = {
|
|
2382
2516
|
tr: {
|
|
@@ -2467,13 +2601,13 @@ var WeekView = ({
|
|
|
2467
2601
|
const weekDays = eachDayOfInterval({ start, end });
|
|
2468
2602
|
const hours = reverseTime ? Array.from({ length: 24 }, (_, i) => 23 - i) : Array.from({ length: 24 }, (_, i) => i);
|
|
2469
2603
|
const hourHeight = 60;
|
|
2470
|
-
const scrollContainerRef =
|
|
2471
|
-
const [now, setNow] =
|
|
2472
|
-
|
|
2604
|
+
const scrollContainerRef = React18__default.useRef(null);
|
|
2605
|
+
const [now, setNow] = React18__default.useState(/* @__PURE__ */ new Date());
|
|
2606
|
+
React18__default.useEffect(() => {
|
|
2473
2607
|
const interval = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
|
|
2474
2608
|
return () => clearInterval(interval);
|
|
2475
2609
|
}, []);
|
|
2476
|
-
|
|
2610
|
+
React18__default.useEffect(() => {
|
|
2477
2611
|
if (scrollContainerRef.current) {
|
|
2478
2612
|
scrollContainerRef.current.scrollTop = reverseTime ? (23 - initialScrollHour) * hourHeight : initialScrollHour * hourHeight;
|
|
2479
2613
|
}
|
|
@@ -2503,44 +2637,44 @@ var WeekView = ({
|
|
|
2503
2637
|
acronym = tz;
|
|
2504
2638
|
}
|
|
2505
2639
|
}
|
|
2506
|
-
return /* @__PURE__ */
|
|
2640
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col items-center justify-center leading-tight" }, /* @__PURE__ */ React18__default.createElement("span", null, displayTime), /* @__PURE__ */ React18__default.createElement("span", { className: "text-[10px] opacity-75" }, "(", acronym, ")"));
|
|
2507
2641
|
};
|
|
2508
2642
|
const timeFormat = getTimeFormat(language);
|
|
2509
2643
|
const eventTimeFormat = getTimeFormatFull(language);
|
|
2510
2644
|
const nowFormat = getTimeFormatFull(language);
|
|
2511
|
-
return /* @__PURE__ */
|
|
2645
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full min-h-0 bg-background border-[0.5px] border-border/50 rounded-2xl overflow-hidden min-w-[800px] md:min-w-0 shadow-sm" }, /* @__PURE__ */ React18__default.createElement(
|
|
2512
2646
|
"div",
|
|
2513
2647
|
{
|
|
2514
2648
|
ref: scrollContainerRef,
|
|
2515
2649
|
className: "flex-1 min-h-0 overflow-y-auto scrollbar-hide relative bg-background scroll-smooth",
|
|
2516
2650
|
style: { scrollbarGutter: "stable" }
|
|
2517
2651
|
},
|
|
2518
|
-
/* @__PURE__ */
|
|
2652
|
+
/* @__PURE__ */ React18__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__ */ React18__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__ */ React18__default.createElement("div", { className: "flex-1 grid grid-cols-7" }, weekDays.map((day, index) => /* @__PURE__ */ React18__default.createElement("div", { key: day.toISOString(), className: cn("py-3 px-2 text-center", index > 0 && "border-l-[0.5px] border-border/30") }, /* @__PURE__ */ React18__default.createElement("div", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1.5" }, format(day, "EEE", { locale })), /* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
2519
2653
|
"w-9 h-9 flex items-center justify-center rounded-xl mx-auto text-sm font-semibold transition-all duration-200",
|
|
2520
2654
|
isToday(day) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30 scale-110" : "text-foreground hover:bg-accent/80"
|
|
2521
2655
|
) }, format(day, "d", { locale })))))),
|
|
2522
|
-
/* @__PURE__ */
|
|
2656
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2523
2657
|
"div",
|
|
2524
2658
|
{
|
|
2525
2659
|
className: "flex min-w-full relative",
|
|
2526
2660
|
style: { height: hours.length * hourHeight }
|
|
2527
2661
|
},
|
|
2528
|
-
/* @__PURE__ */
|
|
2662
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-none w-16 border-r-[0.5px] border-border/30 relative bg-muted/5" }, hours.map((hour) => /* @__PURE__ */ React18__default.createElement(
|
|
2529
2663
|
"div",
|
|
2530
2664
|
{
|
|
2531
2665
|
key: hour,
|
|
2532
2666
|
className: "relative w-full text-[11px] text-muted-foreground/80 text-right pr-3 font-medium tabular-nums box-border",
|
|
2533
2667
|
style: { height: hourHeight }
|
|
2534
2668
|
},
|
|
2535
|
-
/* @__PURE__ */
|
|
2669
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "block -translate-y-1/2" }, hour !== 0 && format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
|
|
2536
2670
|
))),
|
|
2537
|
-
/* @__PURE__ */
|
|
2671
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, weekDays.map((day, dayIndex) => {
|
|
2538
2672
|
const dayEvents = events.filter((e) => {
|
|
2539
2673
|
const zonedStart = getZonedDate(e.start);
|
|
2540
2674
|
return isSameDay(zonedStart, day);
|
|
2541
2675
|
});
|
|
2542
|
-
return /* @__PURE__ */
|
|
2543
|
-
return /* @__PURE__ */
|
|
2676
|
+
return /* @__PURE__ */ React18__default.createElement("div", { key: day.toISOString(), className: cn("relative h-full", dayIndex > 0 && "border-l-[0.5px] border-border/30") }, hours.map((hour) => {
|
|
2677
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2544
2678
|
"div",
|
|
2545
2679
|
{
|
|
2546
2680
|
key: hour,
|
|
@@ -2551,7 +2685,7 @@ var WeekView = ({
|
|
|
2551
2685
|
const cellDate = new Date(day);
|
|
2552
2686
|
cellDate.setHours(hour, minute, 0, 0);
|
|
2553
2687
|
const cellId = cellDate.toISOString();
|
|
2554
|
-
return /* @__PURE__ */
|
|
2688
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2555
2689
|
DroppableCell,
|
|
2556
2690
|
{
|
|
2557
2691
|
key: minute,
|
|
@@ -2563,7 +2697,7 @@ var WeekView = ({
|
|
|
2563
2697
|
top: `${minute / 60 * 100}%`
|
|
2564
2698
|
}
|
|
2565
2699
|
},
|
|
2566
|
-
/* @__PURE__ */
|
|
2700
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2567
2701
|
"div",
|
|
2568
2702
|
{
|
|
2569
2703
|
className: "w-full h-full bg-transparent cursor-pointer",
|
|
@@ -2597,9 +2731,9 @@ var WeekView = ({
|
|
|
2597
2731
|
const height = durationMinutes / 60 * hourHeight;
|
|
2598
2732
|
const top = reverseTime ? (1440 - startMinutes - durationMinutes) / 60 * hourHeight : startMinutes / 60 * hourHeight;
|
|
2599
2733
|
const isShortEvent = compactShortEvents && durationMinutes < 60;
|
|
2600
|
-
const resolvedBadge = resolveEventBadge(event, language);
|
|
2734
|
+
const resolvedBadge = !isShortEvent ? resolveEventBadge(event, language) : void 0;
|
|
2601
2735
|
const hasBadge = Boolean(resolvedBadge);
|
|
2602
|
-
return /* @__PURE__ */
|
|
2736
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2603
2737
|
DraggableEvent,
|
|
2604
2738
|
{
|
|
2605
2739
|
key: `${event.id}-${day.toISOString()}`,
|
|
@@ -2614,7 +2748,7 @@ var WeekView = ({
|
|
|
2614
2748
|
paddingRight: count > 1 ? "2px" : "0"
|
|
2615
2749
|
}
|
|
2616
2750
|
},
|
|
2617
|
-
/* @__PURE__ */
|
|
2751
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2618
2752
|
ResizableEvent,
|
|
2619
2753
|
{
|
|
2620
2754
|
readonly,
|
|
@@ -2624,48 +2758,56 @@ var WeekView = ({
|
|
|
2624
2758
|
className: "h-full",
|
|
2625
2759
|
style: { height: "100%" }
|
|
2626
2760
|
},
|
|
2627
|
-
/* @__PURE__ */
|
|
2628
|
-
|
|
2761
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2762
|
+
EventHoverPopover,
|
|
2629
2763
|
{
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
readonly ? "cursor-default" : "cursor-grab active:cursor-grabbing",
|
|
2634
|
-
!event.color && "border-primary/20 bg-primary/10",
|
|
2635
|
-
isShortEvent ? "px-1 flex items-center justify-center" : "p-2",
|
|
2636
|
-
// Reserve space under the badge so title/time do not overlap
|
|
2637
|
-
hasBadge && !isShortEvent && "pt-4",
|
|
2638
|
-
// Add active border for overlapped events to distinguish them
|
|
2639
|
-
count > 1 && "border-l-4 border-l-primary/50"
|
|
2640
|
-
),
|
|
2641
|
-
style: {
|
|
2642
|
-
height: "100%",
|
|
2643
|
-
backgroundColor: event.color ? `${event.color}15` : void 0,
|
|
2644
|
-
borderColor: event.color ? `${event.color}40` : void 0,
|
|
2645
|
-
borderLeftWidth: "3px",
|
|
2646
|
-
borderLeftColor: event.color || "var(--primary)"
|
|
2647
|
-
},
|
|
2648
|
-
onClick: (e) => {
|
|
2649
|
-
e.stopPropagation();
|
|
2650
|
-
onEventClick?.(event);
|
|
2651
|
-
},
|
|
2652
|
-
title: count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
|
|
2764
|
+
enabled: isShortEvent,
|
|
2765
|
+
event,
|
|
2766
|
+
timeRange: `${format(zonedEventStart, eventTimeFormat, { locale })} - ${format(zonedEventEnd, eventTimeFormat, { locale })}`
|
|
2653
2767
|
},
|
|
2654
|
-
|
|
2655
|
-
|
|
2768
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2769
|
+
"div",
|
|
2656
2770
|
{
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2771
|
+
className: cn(
|
|
2772
|
+
"rounded-md border shadow-sm transition-all hover:shadow-md group overflow-hidden relative",
|
|
2773
|
+
"glass",
|
|
2774
|
+
readonly ? "cursor-default" : "cursor-grab active:cursor-grabbing",
|
|
2775
|
+
!event.color && "border-primary/20 bg-primary/10",
|
|
2776
|
+
isShortEvent ? "px-1 flex items-center justify-center" : "p-2",
|
|
2777
|
+
// Reserve space under the badge so title/time do not overlap
|
|
2778
|
+
hasBadge && !isShortEvent && "pt-4",
|
|
2779
|
+
// Add active border for overlapped events to distinguish them
|
|
2780
|
+
count > 1 && "border-l-4 border-l-primary/50"
|
|
2781
|
+
),
|
|
2782
|
+
style: {
|
|
2783
|
+
height: "100%",
|
|
2784
|
+
backgroundColor: event.color ? `${event.color}15` : void 0,
|
|
2785
|
+
borderColor: event.color ? `${event.color}40` : void 0,
|
|
2786
|
+
borderLeftWidth: "3px",
|
|
2787
|
+
borderLeftColor: event.color || "var(--primary)"
|
|
2788
|
+
},
|
|
2789
|
+
onClick: (e) => {
|
|
2790
|
+
e.stopPropagation();
|
|
2791
|
+
onEventClick?.(event);
|
|
2792
|
+
},
|
|
2793
|
+
title: !isShortEvent && count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
|
|
2794
|
+
},
|
|
2795
|
+
hasBadge && /* @__PURE__ */ React18__default.createElement(
|
|
2796
|
+
EventCardBadge,
|
|
2797
|
+
{
|
|
2798
|
+
badge: resolvedBadge,
|
|
2799
|
+
compact: false
|
|
2800
|
+
}
|
|
2801
|
+
),
|
|
2802
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
2803
|
+
"font-semibold truncate text-foreground/90 leading-tight",
|
|
2804
|
+
isShortEvent ? "text-xs text-center" : "text-xs"
|
|
2805
|
+
) }, event.title), !isShortEvent && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "text-[10px] text-muted-foreground truncate mt-0.5 font-medium leading-tight" }, format(zonedEventStart, eventTimeFormat, { locale }), " - ", format(zonedEventEnd, eventTimeFormat, { locale })), event.description && height > 50 && /* @__PURE__ */ React18__default.createElement("div", { className: "text-[10px] text-muted-foreground/80 truncate mt-1 leading-tight opacity-80" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ React18__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))
|
|
2806
|
+
)
|
|
2665
2807
|
)
|
|
2666
2808
|
)
|
|
2667
2809
|
);
|
|
2668
|
-
}), isToday(day) && /* @__PURE__ */
|
|
2810
|
+
}), isToday(day) && /* @__PURE__ */ React18__default.createElement(
|
|
2669
2811
|
"div",
|
|
2670
2812
|
{
|
|
2671
2813
|
className: "absolute left-0 right-0 z-20 pointer-events-none flex items-center",
|
|
@@ -2673,12 +2815,12 @@ var WeekView = ({
|
|
|
2673
2815
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
|
|
2674
2816
|
}
|
|
2675
2817
|
},
|
|
2676
|
-
/* @__PURE__ */
|
|
2677
|
-
/* @__PURE__ */
|
|
2818
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
|
|
2819
|
+
/* @__PURE__ */ React18__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" })
|
|
2678
2820
|
));
|
|
2679
2821
|
}))
|
|
2680
2822
|
),
|
|
2681
|
-
/* @__PURE__ */
|
|
2823
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2682
2824
|
"div",
|
|
2683
2825
|
{
|
|
2684
2826
|
className: "absolute left-0 w-16 pointer-events-none z-30 flex justify-end pr-2",
|
|
@@ -2686,7 +2828,7 @@ var WeekView = ({
|
|
|
2686
2828
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight + 80}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight + 80}px`
|
|
2687
2829
|
}
|
|
2688
2830
|
},
|
|
2689
|
-
/* @__PURE__ */
|
|
2831
|
+
/* @__PURE__ */ React18__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" }, format(zonedNow, nowFormat, { locale }))
|
|
2690
2832
|
)
|
|
2691
2833
|
));
|
|
2692
2834
|
};
|
|
@@ -2706,13 +2848,13 @@ var DayView = ({
|
|
|
2706
2848
|
}) => {
|
|
2707
2849
|
const hours = reverseTime ? Array.from({ length: 24 }, (_, i) => 23 - i) : Array.from({ length: 24 }, (_, i) => i);
|
|
2708
2850
|
const hourHeight = 80;
|
|
2709
|
-
const scrollContainerRef =
|
|
2710
|
-
const [now, setNow] =
|
|
2711
|
-
|
|
2851
|
+
const scrollContainerRef = React18__default.useRef(null);
|
|
2852
|
+
const [now, setNow] = React18__default.useState(/* @__PURE__ */ new Date());
|
|
2853
|
+
React18__default.useEffect(() => {
|
|
2712
2854
|
const interval = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
|
|
2713
2855
|
return () => clearInterval(interval);
|
|
2714
2856
|
}, []);
|
|
2715
|
-
|
|
2857
|
+
React18__default.useEffect(() => {
|
|
2716
2858
|
if (scrollContainerRef.current) {
|
|
2717
2859
|
scrollContainerRef.current.scrollTop = reverseTime ? (23 - initialScrollHour) * hourHeight : initialScrollHour * hourHeight;
|
|
2718
2860
|
}
|
|
@@ -2728,15 +2870,15 @@ var DayView = ({
|
|
|
2728
2870
|
const timeFormat = getTimeFormat(language);
|
|
2729
2871
|
const eventTimeFormat = getTimeFormatFull(language);
|
|
2730
2872
|
const nowFormat = getTimeFormatFull(language);
|
|
2731
|
-
return /* @__PURE__ */
|
|
2873
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full min-h-0 bg-background border-[0.5px] border-border/50 rounded-2xl overflow-hidden shadow-sm" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { className: "flex items-center justify-center gap-3" }, /* @__PURE__ */ React18__default.createElement("h2", { className: "text-xl font-semibold capitalize text-foreground" }, format(currentDate, "EEEE, MMMM d, yyyy", { locale })), isToday(currentDate) && /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { ref: scrollContainerRef, className: "flex-1 min-h-0 overflow-y-auto relative" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex relative", style: { height: hours.length * hourHeight } }, /* @__PURE__ */ React18__default.createElement("div", { className: "w-20 bg-muted/5 border-r-[0.5px] border-border/30 relative" }, hours.map((hour) => /* @__PURE__ */ React18__default.createElement(
|
|
2732
2874
|
"div",
|
|
2733
2875
|
{
|
|
2734
2876
|
key: hour,
|
|
2735
2877
|
className: "relative w-full",
|
|
2736
2878
|
style: { height: hourHeight }
|
|
2737
2879
|
},
|
|
2738
|
-
hour !== 0 && /* @__PURE__ */
|
|
2739
|
-
)), isToday(currentDate) && /* @__PURE__ */
|
|
2880
|
+
hour !== 0 && /* @__PURE__ */ React18__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" }, format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
|
|
2881
|
+
)), isToday(currentDate) && /* @__PURE__ */ React18__default.createElement(
|
|
2740
2882
|
"div",
|
|
2741
2883
|
{
|
|
2742
2884
|
className: "absolute left-0 w-full pointer-events-none z-30 flex justify-end pr-2",
|
|
@@ -2744,9 +2886,9 @@ var DayView = ({
|
|
|
2744
2886
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
|
|
2745
2887
|
}
|
|
2746
2888
|
},
|
|
2747
|
-
/* @__PURE__ */
|
|
2748
|
-
)), /* @__PURE__ */
|
|
2749
|
-
return /* @__PURE__ */
|
|
2889
|
+
/* @__PURE__ */ React18__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" }, format(zonedNow, nowFormat, { locale }))
|
|
2890
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 relative" }, hours.map((hour) => {
|
|
2891
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2750
2892
|
"div",
|
|
2751
2893
|
{
|
|
2752
2894
|
key: hour,
|
|
@@ -2757,7 +2899,7 @@ var DayView = ({
|
|
|
2757
2899
|
const cellDate = new Date(currentDate);
|
|
2758
2900
|
cellDate.setHours(hour, minute, 0, 0);
|
|
2759
2901
|
const cellId = cellDate.toISOString();
|
|
2760
|
-
return /* @__PURE__ */
|
|
2902
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2761
2903
|
DroppableCell,
|
|
2762
2904
|
{
|
|
2763
2905
|
key: minute,
|
|
@@ -2769,7 +2911,7 @@ var DayView = ({
|
|
|
2769
2911
|
top: `${minute / 60 * 100}%`
|
|
2770
2912
|
}
|
|
2771
2913
|
},
|
|
2772
|
-
/* @__PURE__ */
|
|
2914
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2773
2915
|
"div",
|
|
2774
2916
|
{
|
|
2775
2917
|
className: "h-full w-full bg-transparent cursor-pointer",
|
|
@@ -2802,7 +2944,8 @@ var DayView = ({
|
|
|
2802
2944
|
const height = durationMinutes / 60 * hourHeight;
|
|
2803
2945
|
const top = reverseTime ? (1440 - startMinutes - durationMinutes) / 60 * hourHeight : startMinutes / 60 * hourHeight;
|
|
2804
2946
|
const isShortEvent = compactShortEvents && durationMinutes < 45;
|
|
2805
|
-
|
|
2947
|
+
const timeRange = `${format(zonedStart, eventTimeFormat, { locale })} - ${format(zonedEnd, eventTimeFormat, { locale })}`;
|
|
2948
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
2806
2949
|
DraggableEvent,
|
|
2807
2950
|
{
|
|
2808
2951
|
key: `${event.id}-${currentDate.toISOString()}`,
|
|
@@ -2816,7 +2959,7 @@ var DayView = ({
|
|
|
2816
2959
|
paddingRight: count > 1 ? "2px" : "0"
|
|
2817
2960
|
}
|
|
2818
2961
|
},
|
|
2819
|
-
/* @__PURE__ */
|
|
2962
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2820
2963
|
ResizableEvent,
|
|
2821
2964
|
{
|
|
2822
2965
|
readonly,
|
|
@@ -2826,38 +2969,46 @@ var DayView = ({
|
|
|
2826
2969
|
className: "h-full",
|
|
2827
2970
|
style: { height: "100%" }
|
|
2828
2971
|
},
|
|
2829
|
-
/* @__PURE__ */
|
|
2830
|
-
|
|
2972
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2973
|
+
EventHoverPopover,
|
|
2831
2974
|
{
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
readonly ? "cursor-default" : "cursor-grab active:cursor-grabbing",
|
|
2836
|
-
!event.color && "bg-primary/10 border-primary/20",
|
|
2837
|
-
isShortEvent ? "px-2 flex items-center" : "px-3 py-2",
|
|
2838
|
-
count > 1 && "border-l-4"
|
|
2839
|
-
),
|
|
2840
|
-
style: {
|
|
2841
|
-
backgroundColor: event.color ? `${event.color}15` : void 0,
|
|
2842
|
-
borderColor: event.color ? `${event.color}30` : void 0,
|
|
2843
|
-
borderLeftColor: event.color || "var(--primary)",
|
|
2844
|
-
borderLeftWidth: count > 1 ? "4px" : "3px"
|
|
2845
|
-
},
|
|
2846
|
-
onClick: (e) => {
|
|
2847
|
-
e.stopPropagation();
|
|
2848
|
-
onEventClick?.(event);
|
|
2849
|
-
},
|
|
2850
|
-
title: count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
|
|
2975
|
+
enabled: isShortEvent,
|
|
2976
|
+
event,
|
|
2977
|
+
timeRange
|
|
2851
2978
|
},
|
|
2852
|
-
/* @__PURE__ */
|
|
2853
|
-
"
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2979
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2980
|
+
"div",
|
|
2981
|
+
{
|
|
2982
|
+
className: cn(
|
|
2983
|
+
"h-full rounded-lg border-[0.5px] shadow-sm overflow-hidden transition-all hover:shadow-lg hover:z-20 group",
|
|
2984
|
+
"glass backdrop-blur-sm",
|
|
2985
|
+
readonly ? "cursor-default" : "cursor-grab active:cursor-grabbing",
|
|
2986
|
+
!event.color && "bg-primary/10 border-primary/20",
|
|
2987
|
+
isShortEvent ? "px-2 flex items-center" : "px-3 py-2",
|
|
2988
|
+
count > 1 && "border-l-4"
|
|
2989
|
+
),
|
|
2990
|
+
style: {
|
|
2991
|
+
backgroundColor: event.color ? `${event.color}15` : void 0,
|
|
2992
|
+
borderColor: event.color ? `${event.color}30` : void 0,
|
|
2993
|
+
borderLeftColor: event.color || "var(--primary)",
|
|
2994
|
+
borderLeftWidth: count > 1 ? "4px" : "3px"
|
|
2995
|
+
},
|
|
2996
|
+
onClick: (e) => {
|
|
2997
|
+
e.stopPropagation();
|
|
2998
|
+
onEventClick?.(event);
|
|
2999
|
+
},
|
|
3000
|
+
title: !isShortEvent && count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
|
|
3001
|
+
},
|
|
3002
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
3003
|
+
"font-semibold truncate leading-tight",
|
|
3004
|
+
isShortEvent ? "text-xs" : "text-sm",
|
|
3005
|
+
event.color ? "text-foreground" : "text-foreground/90"
|
|
3006
|
+
) }, event.title), !isShortEvent && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "text-xs text-muted-foreground mt-0.5 font-medium" }, timeRange), event.description && height > 60 && /* @__PURE__ */ React18__default.createElement("div", { className: "text-xs text-muted-foreground/80 mt-1 line-clamp-2" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ React18__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))
|
|
3007
|
+
)
|
|
2857
3008
|
)
|
|
2858
3009
|
)
|
|
2859
3010
|
);
|
|
2860
|
-
}), isToday(currentDate) && /* @__PURE__ */
|
|
3011
|
+
}), isToday(currentDate) && /* @__PURE__ */ React18__default.createElement(
|
|
2861
3012
|
"div",
|
|
2862
3013
|
{
|
|
2863
3014
|
className: "absolute left-0 right-0 z-20 pointer-events-none flex items-center",
|
|
@@ -2865,17 +3016,17 @@ var DayView = ({
|
|
|
2865
3016
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
|
|
2866
3017
|
}
|
|
2867
3018
|
},
|
|
2868
|
-
/* @__PURE__ */
|
|
2869
|
-
/* @__PURE__ */
|
|
3019
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
|
|
3020
|
+
/* @__PURE__ */ React18__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" })
|
|
2870
3021
|
)))));
|
|
2871
3022
|
};
|
|
2872
|
-
var AgendaEmptyState = ({ onCreateEvent, translations }) => /* @__PURE__ */
|
|
3023
|
+
var AgendaEmptyState = ({ onCreateEvent, translations }) => /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col items-center justify-center h-full min-h-[400px] py-12" }, /* @__PURE__ */ React18__default.createElement("div", { className: "relative mb-8" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React18__default.createElement("div", { className: "w-12 h-12 rounded-2xl bg-green-100 dark:bg-green-900/30 flex items-center justify-center" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ React18__default.createElement("div", { className: "text-left" }, /* @__PURE__ */ React18__default.createElement("div", { className: "font-medium text-foreground" }, "All caught up!"), /* @__PURE__ */ React18__default.createElement("div", { className: "text-sm text-muted-foreground" }, "No events scheduled"))))), /* @__PURE__ */ React18__default.createElement("div", { className: "text-center max-w-sm" }, /* @__PURE__ */ React18__default.createElement("h3", { className: "text-lg font-semibold text-foreground mb-2" }, translations?.noUpcoming || "Your schedule is clear"), /* @__PURE__ */ React18__default.createElement("p", { className: "text-sm text-muted-foreground mb-6" }, "No upcoming events to show. Create a new event to start planning."), onCreateEvent && /* @__PURE__ */ React18__default.createElement(
|
|
2873
3024
|
"button",
|
|
2874
3025
|
{
|
|
2875
3026
|
onClick: onCreateEvent,
|
|
2876
3027
|
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"
|
|
2877
3028
|
},
|
|
2878
|
-
/* @__PURE__ */
|
|
3029
|
+
/* @__PURE__ */ React18__default.createElement(Plus, { className: "w-4 h-4" }),
|
|
2879
3030
|
translations?.createEvent || "Create Event"
|
|
2880
3031
|
)));
|
|
2881
3032
|
var formatDuration = (start, end) => {
|
|
@@ -2927,7 +3078,7 @@ var AgendaView = ({
|
|
|
2927
3078
|
hidden: { opacity: 0, x: -20 },
|
|
2928
3079
|
show: { opacity: 1, x: 0 }
|
|
2929
3080
|
};
|
|
2930
|
-
return /* @__PURE__ */
|
|
3081
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full min-h-0 bg-background overflow-y-auto" }, groupedEvents.length === 0 ? renderEmptyState ? renderEmptyState({ view: "agenda", onCreateEvent }) : /* @__PURE__ */ React18__default.createElement(AgendaEmptyState, { onCreateEvent }) : /* @__PURE__ */ React18__default.createElement(
|
|
2931
3082
|
motion.div,
|
|
2932
3083
|
{
|
|
2933
3084
|
className: "max-w-3xl mx-auto w-full pb-10 px-4 md:px-6",
|
|
@@ -2935,21 +3086,21 @@ var AgendaView = ({
|
|
|
2935
3086
|
initial: "hidden",
|
|
2936
3087
|
animate: "show"
|
|
2937
3088
|
},
|
|
2938
|
-
groupedEvents.map((group, groupIndex) => /* @__PURE__ */
|
|
3089
|
+
groupedEvents.map((group, groupIndex) => /* @__PURE__ */ React18__default.createElement(
|
|
2939
3090
|
motion.div,
|
|
2940
3091
|
{
|
|
2941
3092
|
key: group.date.toISOString(),
|
|
2942
3093
|
className: "relative",
|
|
2943
3094
|
variants: item
|
|
2944
3095
|
},
|
|
2945
|
-
/* @__PURE__ */
|
|
3096
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "sticky top-0 bg-background/95 backdrop-blur-md py-4 z-10 border-b border-border/50" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
2946
3097
|
"flex flex-col items-center justify-center w-16 h-16 rounded-2xl transition-all",
|
|
2947
3098
|
isToday(group.date) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30" : "bg-muted/50 text-foreground"
|
|
2948
|
-
) }, /* @__PURE__ */
|
|
3099
|
+
) }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-2xl font-bold leading-none" }, format(group.date, "d")), /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs font-medium uppercase tracking-wide opacity-80" }, format(group.date, "MMM"))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React18__default.createElement("span", { className: cn(
|
|
2949
3100
|
"text-lg font-semibold",
|
|
2950
3101
|
isToday(group.date) && "text-primary"
|
|
2951
|
-
) }, getDateLabel(group.date, translations?.today ?? "Today", translations?.tomorrow ?? "Tomorrow")), /* @__PURE__ */
|
|
2952
|
-
/* @__PURE__ */
|
|
3102
|
+
) }, getDateLabel(group.date, translations?.today ?? "Today", translations?.tomorrow ?? "Tomorrow")), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm text-muted-foreground" }, group.events.length, " ", group.events.length !== 1 ? translations?.eventsCount ?? "events" : translations?.eventCount ?? "event")))),
|
|
3103
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "py-4 space-y-3" }, group.events.map((event, eventIndex) => /* @__PURE__ */ React18__default.createElement(
|
|
2953
3104
|
motion.div,
|
|
2954
3105
|
{
|
|
2955
3106
|
key: event.id,
|
|
@@ -2963,22 +3114,22 @@ var AgendaView = ({
|
|
|
2963
3114
|
whileHover: { scale: 1.01, y: -2 },
|
|
2964
3115
|
transition: { duration: 0.2 }
|
|
2965
3116
|
},
|
|
2966
|
-
/* @__PURE__ */
|
|
3117
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
2967
3118
|
"div",
|
|
2968
3119
|
{
|
|
2969
3120
|
className: "absolute left-0 top-3 bottom-3 w-1 rounded-full",
|
|
2970
3121
|
style: { backgroundColor: event.color || "var(--primary)" }
|
|
2971
3122
|
}
|
|
2972
3123
|
),
|
|
2973
|
-
/* @__PURE__ */
|
|
2974
|
-
/* @__PURE__ */
|
|
3124
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col items-center min-w-[70px] pl-2" }, event.allDay ? /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-base font-semibold text-foreground" }, format(event.start, timeFmt)), /* @__PURE__ */ React18__default.createElement("div", { className: "w-px h-3 bg-border my-1" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs text-muted-foreground/70 font-medium" }, formatDuration(event.start, event.end)))),
|
|
3125
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 min-w-0 space-y-2" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-start justify-between gap-2" }, /* @__PURE__ */ React18__default.createElement("h4", { className: "text-base font-semibold text-foreground group-hover:text-primary transition-colors line-clamp-1" }, event.title), /* @__PURE__ */ React18__default.createElement(
|
|
2975
3126
|
"div",
|
|
2976
3127
|
{
|
|
2977
3128
|
className: "w-3 h-3 rounded-full shrink-0 mt-1.5",
|
|
2978
3129
|
style: { backgroundColor: event.color || "var(--primary)" }
|
|
2979
3130
|
}
|
|
2980
|
-
)), event.description && /* @__PURE__ */
|
|
2981
|
-
/* @__PURE__ */
|
|
3131
|
+
)), event.description && /* @__PURE__ */ React18__default.createElement("p", { className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed" }, event.description), /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-wrap items-center gap-3 pt-1" }, !event.allDay && /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React18__default.createElement(Clock, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React18__default.createElement("span", null, format(event.start, timeFmt), " - ", format(event.end, timeFmt))), event.guests && event.guests.length > 0 && /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React18__default.createElement(Users, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React18__default.createElement("span", null, event.guests.length, " ", event.guests.length !== 1 ? translations?.guestsCount ?? "guests" : translations?.guestCount ?? "guest")), event.attachments && event.attachments.length > 0 && /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React18__default.createElement(Paperclip, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React18__default.createElement("span", null, event.attachments.length)), event.reminders && event.reminders.length > 0 && /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React18__default.createElement(Bell, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React18__default.createElement("span", null, event.reminders.length)))),
|
|
3132
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "absolute right-4 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React18__default.createElement("svg", { className: "w-5 h-5 text-muted-foreground", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ React18__default.createElement("path", { d: "M9 18l6-6-6-6" })))
|
|
2982
3133
|
)))
|
|
2983
3134
|
))
|
|
2984
3135
|
));
|
|
@@ -3010,7 +3161,7 @@ var ResourceView = ({
|
|
|
3010
3161
|
// Min width for visibility
|
|
3011
3162
|
};
|
|
3012
3163
|
};
|
|
3013
|
-
return /* @__PURE__ */
|
|
3164
|
+
return /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full min-h-0 bg-background overflow-hidden" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex border-b border-border bg-muted/20" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { className: "flex overflow-hidden" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex relative", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ React18__default.createElement(
|
|
3014
3165
|
"div",
|
|
3015
3166
|
{
|
|
3016
3167
|
key: hour,
|
|
@@ -3018,11 +3169,11 @@ var ResourceView = ({
|
|
|
3018
3169
|
style: { width: hourWidth }
|
|
3019
3170
|
},
|
|
3020
3171
|
format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale })
|
|
3021
|
-
))))), /* @__PURE__ */
|
|
3172
|
+
))))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 min-h-0 overflow-auto relative", ref: containerRef }, /* @__PURE__ */ React18__default.createElement("div", { className: "min-w-fit" }, resources.map((resource) => {
|
|
3022
3173
|
const resourceEvents = events.filter(
|
|
3023
3174
|
(e) => e.resourceId === resource.id && isSameDay(new Date(e.start), currentDate)
|
|
3024
3175
|
);
|
|
3025
|
-
return /* @__PURE__ */
|
|
3176
|
+
return /* @__PURE__ */ React18__default.createElement("div", { key: resource.id, className: "flex border-b border-border min-h-[100px]" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement("img", { src: resource.avatar, alt: resource.label, className: "w-8 h-8 rounded-full object-cover" }) : /* @__PURE__ */ React18__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__ */ React18__default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium" }, resource.label), /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs text-muted-foreground" }, "ID: ", resource.id))), /* @__PURE__ */ React18__default.createElement("div", { className: "relative flex", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ React18__default.createElement(
|
|
3026
3177
|
"div",
|
|
3027
3178
|
{
|
|
3028
3179
|
key: hour,
|
|
@@ -3033,7 +3184,7 @@ var ResourceView = ({
|
|
|
3033
3184
|
const slotDate = new Date(currentDate);
|
|
3034
3185
|
slotDate.setHours(hour, minute, 0, 0);
|
|
3035
3186
|
const slotId = `${resource.id}-${slotDate.toISOString()}`;
|
|
3036
|
-
return /* @__PURE__ */
|
|
3187
|
+
return /* @__PURE__ */ React18__default.createElement(
|
|
3037
3188
|
DroppableCell,
|
|
3038
3189
|
{
|
|
3039
3190
|
key: minute,
|
|
@@ -3047,7 +3198,7 @@ var ResourceView = ({
|
|
|
3047
3198
|
}
|
|
3048
3199
|
);
|
|
3049
3200
|
})
|
|
3050
|
-
)), resourceEvents.map((event) => /* @__PURE__ */
|
|
3201
|
+
)), resourceEvents.map((event) => /* @__PURE__ */ React18__default.createElement(
|
|
3051
3202
|
DraggableEvent,
|
|
3052
3203
|
{
|
|
3053
3204
|
key: event.id,
|
|
@@ -3064,7 +3215,7 @@ var ResourceView = ({
|
|
|
3064
3215
|
color: "#fff"
|
|
3065
3216
|
}
|
|
3066
3217
|
},
|
|
3067
|
-
/* @__PURE__ */
|
|
3218
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "truncate" }, event.title)
|
|
3068
3219
|
))));
|
|
3069
3220
|
}))));
|
|
3070
3221
|
};
|
|
@@ -3091,14 +3242,14 @@ var Modal = ({
|
|
|
3091
3242
|
};
|
|
3092
3243
|
}, [isOpen, onClose]);
|
|
3093
3244
|
if (!isOpen) return null;
|
|
3094
|
-
return /* @__PURE__ */
|
|
3245
|
+
return /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
3095
3246
|
"div",
|
|
3096
3247
|
{
|
|
3097
3248
|
ref: overlayRef,
|
|
3098
3249
|
className: "absolute inset-0",
|
|
3099
3250
|
onClick: onClose
|
|
3100
3251
|
}
|
|
3101
|
-
), /* @__PURE__ */
|
|
3252
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
3102
3253
|
"div",
|
|
3103
3254
|
{
|
|
3104
3255
|
className: cn(
|
|
@@ -3106,7 +3257,7 @@ var Modal = ({
|
|
|
3106
3257
|
className
|
|
3107
3258
|
)
|
|
3108
3259
|
},
|
|
3109
|
-
!hideHeader && /* @__PURE__ */
|
|
3260
|
+
!hideHeader && /* @__PURE__ */ React18__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__ */ React18__default.createElement("h3", { className: "text-lg font-semibold text-foreground" }, title), /* @__PURE__ */ React18__default.createElement(
|
|
3110
3261
|
Button,
|
|
3111
3262
|
{
|
|
3112
3263
|
variant: "ghost",
|
|
@@ -3114,10 +3265,10 @@ var Modal = ({
|
|
|
3114
3265
|
onClick: onClose,
|
|
3115
3266
|
className: "h-9 w-9 p-0 rounded-xl hover:bg-accent/80 transition-all duration-200"
|
|
3116
3267
|
},
|
|
3117
|
-
/* @__PURE__ */
|
|
3118
|
-
/* @__PURE__ */
|
|
3268
|
+
/* @__PURE__ */ React18__default.createElement(X, { className: "h-4 w-4" }),
|
|
3269
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "sr-only" }, "Close")
|
|
3119
3270
|
)),
|
|
3120
|
-
/* @__PURE__ */
|
|
3271
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: cn("overflow-y-auto flex-1", !hideHeader && "p-6") }, children)
|
|
3121
3272
|
));
|
|
3122
3273
|
};
|
|
3123
3274
|
var COLOR_PALETTE = [
|
|
@@ -3318,7 +3469,7 @@ var EventModal = ({
|
|
|
3318
3469
|
if (remainingMins === 0) return `${hours} hr`;
|
|
3319
3470
|
return `${hours} hr ${remainingMins} min`;
|
|
3320
3471
|
};
|
|
3321
|
-
const renderViewMode = () => /* @__PURE__ */
|
|
3472
|
+
const renderViewMode = () => /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col bg-background overflow-hidden w-full max-h-[90vh]" }, /* @__PURE__ */ React18__default.createElement(
|
|
3322
3473
|
"div",
|
|
3323
3474
|
{
|
|
3324
3475
|
className: "relative px-6 pt-6 pb-8",
|
|
@@ -3326,50 +3477,50 @@ var EventModal = ({
|
|
|
3326
3477
|
background: `linear-gradient(135deg, ${event?.color || "#3b82f6"}15 0%, transparent 100%)`
|
|
3327
3478
|
}
|
|
3328
3479
|
},
|
|
3329
|
-
/* @__PURE__ */
|
|
3480
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(
|
|
3330
3481
|
"div",
|
|
3331
3482
|
{
|
|
3332
3483
|
className: "w-3 h-3 rounded-full",
|
|
3333
3484
|
style: { backgroundColor: event?.color || "#3b82f6" }
|
|
3334
3485
|
}
|
|
3335
|
-
), /* @__PURE__ */
|
|
3486
|
+
), /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider" }, calendars?.find((c) => c.id === event?.calendarId)?.label || "Event")), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React18__default.createElement(
|
|
3336
3487
|
"button",
|
|
3337
3488
|
{
|
|
3338
3489
|
onClick: () => setMode("edit"),
|
|
3339
3490
|
className: "p-2 hover:bg-background/80 rounded-lg transition-all text-muted-foreground hover:text-foreground",
|
|
3340
3491
|
title: "Edit"
|
|
3341
3492
|
},
|
|
3342
|
-
/* @__PURE__ */
|
|
3343
|
-
), /* @__PURE__ */
|
|
3493
|
+
/* @__PURE__ */ React18__default.createElement(Edit2, { className: "w-4 h-4" })
|
|
3494
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
3344
3495
|
"button",
|
|
3345
3496
|
{
|
|
3346
3497
|
onClick: handleDelete,
|
|
3347
3498
|
className: "p-2 hover:bg-destructive/10 rounded-lg transition-all text-muted-foreground hover:text-destructive",
|
|
3348
3499
|
title: "Delete"
|
|
3349
3500
|
},
|
|
3350
|
-
/* @__PURE__ */
|
|
3351
|
-
), /* @__PURE__ */
|
|
3501
|
+
/* @__PURE__ */ React18__default.createElement(Trash2, { className: "w-4 h-4" })
|
|
3502
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
3352
3503
|
"button",
|
|
3353
3504
|
{
|
|
3354
3505
|
onClick: onClose,
|
|
3355
3506
|
className: "p-2 hover:bg-background/80 rounded-lg transition-all text-muted-foreground hover:text-foreground",
|
|
3356
3507
|
title: "Close"
|
|
3357
3508
|
},
|
|
3358
|
-
/* @__PURE__ */
|
|
3509
|
+
/* @__PURE__ */ React18__default.createElement(X, { className: "w-4 h-4" })
|
|
3359
3510
|
))),
|
|
3360
|
-
/* @__PURE__ */
|
|
3361
|
-
/* @__PURE__ */
|
|
3362
|
-
), /* @__PURE__ */
|
|
3511
|
+
/* @__PURE__ */ React18__default.createElement("h1", { className: "text-2xl font-bold text-foreground mb-3 leading-tight" }, event?.title || translations.noTitle),
|
|
3512
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-3 text-sm" }, /* @__PURE__ */ React18__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__ */ React18__default.createElement(Calendar, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "font-medium" }, event?.start && format(new Date(event.start), "EEE, MMM d"))), /* @__PURE__ */ React18__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__ */ React18__default.createElement(Clock, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "font-medium" }, event?.start && format(new Date(event.start), timeFmt), " \u2013 ", event?.end && format(new Date(event.end), timeFmt))))
|
|
3513
|
+
), /* @__PURE__ */ React18__default.createElement("div", { className: "px-6 pb-6 space-y-4 overflow-y-auto flex-1" }, event?.location && /* @__PURE__ */ React18__default.createElement(
|
|
3363
3514
|
motion.div,
|
|
3364
3515
|
{
|
|
3365
3516
|
initial: { opacity: 0, y: 10 },
|
|
3366
3517
|
animate: { opacity: 1, y: 0 },
|
|
3367
3518
|
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"
|
|
3368
3519
|
},
|
|
3369
|
-
/* @__PURE__ */
|
|
3370
|
-
/* @__PURE__ */
|
|
3371
|
-
/* @__PURE__ */
|
|
3372
|
-
), event?.guests && event.guests.length > 0 && /* @__PURE__ */
|
|
3520
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl" }, /* @__PURE__ */ React18__default.createElement(MapPin, { className: "w-5 h-5 text-primary" })),
|
|
3521
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React18__default.createElement("p", { className: "text-sm font-medium text-foreground" }, event.location), /* @__PURE__ */ React18__default.createElement("p", { className: "text-xs text-muted-foreground mt-0.5" }, translations.clickToOpenInMaps)),
|
|
3522
|
+
/* @__PURE__ */ React18__default.createElement(ExternalLink, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
|
|
3523
|
+
), event?.guests && event.guests.length > 0 && /* @__PURE__ */ React18__default.createElement(
|
|
3373
3524
|
motion.div,
|
|
3374
3525
|
{
|
|
3375
3526
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3377,14 +3528,14 @@ var EventModal = ({
|
|
|
3377
3528
|
transition: { delay: 0.05 },
|
|
3378
3529
|
className: "space-y-3"
|
|
3379
3530
|
},
|
|
3380
|
-
/* @__PURE__ */
|
|
3381
|
-
/* @__PURE__ */
|
|
3531
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium text-foreground" }, event.guests.length, " ", event.guests.length > 1 ? translations.guestsCount : translations.guestCount))),
|
|
3532
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-wrap gap-2" }, event.guests.map((email, index) => /* @__PURE__ */ React18__default.createElement(
|
|
3382
3533
|
"div",
|
|
3383
3534
|
{
|
|
3384
3535
|
key: index,
|
|
3385
3536
|
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"
|
|
3386
3537
|
},
|
|
3387
|
-
/* @__PURE__ */
|
|
3538
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
3388
3539
|
"div",
|
|
3389
3540
|
{
|
|
3390
3541
|
className: "w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold text-white",
|
|
@@ -3392,9 +3543,9 @@ var EventModal = ({
|
|
|
3392
3543
|
},
|
|
3393
3544
|
email[0].toUpperCase()
|
|
3394
3545
|
),
|
|
3395
|
-
/* @__PURE__ */
|
|
3546
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React18__default.createElement("p", { className: "text-sm font-medium text-foreground" }, email.split("@")[0]), /* @__PURE__ */ React18__default.createElement("p", { className: "text-xs text-muted-foreground truncate" }, email))
|
|
3396
3547
|
)))
|
|
3397
|
-
), event?.reminders && event.reminders.length > 0 && /* @__PURE__ */
|
|
3548
|
+
), event?.reminders && event.reminders.length > 0 && /* @__PURE__ */ React18__default.createElement(
|
|
3398
3549
|
motion.div,
|
|
3399
3550
|
{
|
|
3400
3551
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3402,8 +3553,8 @@ var EventModal = ({
|
|
|
3402
3553
|
transition: { delay: 0.1 },
|
|
3403
3554
|
className: "flex items-center gap-3"
|
|
3404
3555
|
},
|
|
3405
|
-
/* @__PURE__ */
|
|
3406
|
-
/* @__PURE__ */
|
|
3556
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "p-2 bg-amber-500/10 rounded-xl" }, /* @__PURE__ */ React18__default.createElement(Bell, { className: "w-4 h-4 text-amber-500" })),
|
|
3557
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-wrap gap-2" }, event.reminders.map((reminder) => /* @__PURE__ */ React18__default.createElement(
|
|
3407
3558
|
"span",
|
|
3408
3559
|
{
|
|
3409
3560
|
key: reminder.id,
|
|
@@ -3411,7 +3562,7 @@ var EventModal = ({
|
|
|
3411
3562
|
},
|
|
3412
3563
|
reminder.label || `${reminder.time} min before`
|
|
3413
3564
|
)))
|
|
3414
|
-
), event?.description && /* @__PURE__ */
|
|
3565
|
+
), event?.description && /* @__PURE__ */ React18__default.createElement(
|
|
3415
3566
|
motion.div,
|
|
3416
3567
|
{
|
|
3417
3568
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3419,9 +3570,9 @@ var EventModal = ({
|
|
|
3419
3570
|
transition: { delay: 0.15 },
|
|
3420
3571
|
className: "space-y-2"
|
|
3421
3572
|
},
|
|
3422
|
-
/* @__PURE__ */
|
|
3423
|
-
/* @__PURE__ */
|
|
3424
|
-
), event?.attachments && event.attachments.length > 0 && /* @__PURE__ */
|
|
3573
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.notes)),
|
|
3574
|
+
/* @__PURE__ */ React18__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)
|
|
3575
|
+
), event?.attachments && event.attachments.length > 0 && /* @__PURE__ */ React18__default.createElement(
|
|
3425
3576
|
motion.div,
|
|
3426
3577
|
{
|
|
3427
3578
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3429,27 +3580,27 @@ var EventModal = ({
|
|
|
3429
3580
|
transition: { delay: 0.2 },
|
|
3430
3581
|
className: "space-y-2"
|
|
3431
3582
|
},
|
|
3432
|
-
/* @__PURE__ */
|
|
3433
|
-
/* @__PURE__ */
|
|
3583
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(Paperclip, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.attachments)),
|
|
3584
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "grid gap-2" }, event.attachments.map((att) => /* @__PURE__ */ React18__default.createElement(
|
|
3434
3585
|
"div",
|
|
3435
3586
|
{
|
|
3436
3587
|
key: att.id,
|
|
3437
3588
|
onClick: () => handleDownload(att),
|
|
3438
3589
|
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"
|
|
3439
3590
|
},
|
|
3440
|
-
/* @__PURE__ */
|
|
3441
|
-
/* @__PURE__ */
|
|
3442
|
-
/* @__PURE__ */
|
|
3591
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "p-2 bg-primary/10 rounded-lg" }, /* @__PURE__ */ React18__default.createElement(File, { className: "w-4 h-4 text-primary" })),
|
|
3592
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React18__default.createElement("p", { className: "text-sm font-medium text-foreground truncate" }, att.name), /* @__PURE__ */ React18__default.createElement("p", { className: "text-xs text-muted-foreground" }, att.size)),
|
|
3593
|
+
/* @__PURE__ */ React18__default.createElement(Download, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
|
|
3443
3594
|
)))
|
|
3444
3595
|
)));
|
|
3445
|
-
const renderEditMode = () => /* @__PURE__ */
|
|
3596
|
+
const renderEditMode = () => /* @__PURE__ */ React18__default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col bg-background overflow-hidden w-full max-h-[85vh]" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between px-5 py-4 border-b border-border/50 shrink-0" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React18__default.createElement(
|
|
3446
3597
|
"button",
|
|
3447
3598
|
{
|
|
3448
3599
|
type: "button",
|
|
3449
3600
|
onClick: () => setIsColorPickerOpen(!isColorPickerOpen),
|
|
3450
3601
|
className: "relative p-1"
|
|
3451
3602
|
},
|
|
3452
|
-
/* @__PURE__ */
|
|
3603
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
3453
3604
|
"div",
|
|
3454
3605
|
{
|
|
3455
3606
|
className: "w-5 h-5 rounded-full cursor-pointer hover:scale-110 transition-transform",
|
|
@@ -3459,7 +3610,7 @@ var EventModal = ({
|
|
|
3459
3610
|
}
|
|
3460
3611
|
}
|
|
3461
3612
|
),
|
|
3462
|
-
isColorPickerOpen && /* @__PURE__ */
|
|
3613
|
+
isColorPickerOpen && /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
3463
3614
|
"button",
|
|
3464
3615
|
{
|
|
3465
3616
|
key: color,
|
|
@@ -3475,15 +3626,15 @@ var EventModal = ({
|
|
|
3475
3626
|
style: { backgroundColor: color, color }
|
|
3476
3627
|
}
|
|
3477
3628
|
)))
|
|
3478
|
-
), /* @__PURE__ */
|
|
3629
|
+
), /* @__PURE__ */ React18__default.createElement("h2", { className: "text-lg font-semibold text-foreground" }, mode === "edit" ? translations.editEvent : translations.newEvent)), /* @__PURE__ */ React18__default.createElement(
|
|
3479
3630
|
"button",
|
|
3480
3631
|
{
|
|
3481
3632
|
type: "button",
|
|
3482
3633
|
onClick: onClose,
|
|
3483
3634
|
className: "p-2 hover:bg-accent rounded-xl transition-all text-muted-foreground hover:text-foreground"
|
|
3484
3635
|
},
|
|
3485
|
-
/* @__PURE__ */
|
|
3486
|
-
)), /* @__PURE__ */
|
|
3636
|
+
/* @__PURE__ */ React18__default.createElement(X, { className: "w-4 h-4" })
|
|
3637
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ React18__default.createElement("div", { className: "px-5 py-4 space-y-5" }, /* @__PURE__ */ React18__default.createElement("div", null, /* @__PURE__ */ React18__default.createElement(
|
|
3487
3638
|
"input",
|
|
3488
3639
|
{
|
|
3489
3640
|
type: "text",
|
|
@@ -3494,7 +3645,7 @@ var EventModal = ({
|
|
|
3494
3645
|
onChange: (e) => setFormData({ ...formData, title: e.target.value }),
|
|
3495
3646
|
placeholder: translations.addTitle
|
|
3496
3647
|
}
|
|
3497
|
-
)), /* @__PURE__ */
|
|
3648
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-3 p-4 rounded-2xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React18__default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl shrink-0" }, /* @__PURE__ */ React18__default.createElement(Clock, { className: "w-5 h-5 text-primary" })), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 grid grid-cols-2 gap-3" }, /* @__PURE__ */ React18__default.createElement("div", null, /* @__PURE__ */ React18__default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, translations.start), /* @__PURE__ */ React18__default.createElement(
|
|
3498
3649
|
"input",
|
|
3499
3650
|
{
|
|
3500
3651
|
type: "datetime-local",
|
|
@@ -3502,7 +3653,7 @@ var EventModal = ({
|
|
|
3502
3653
|
value: formatDateForInput(formData.start),
|
|
3503
3654
|
onChange: (e) => handleDateChange("start", e.target.value)
|
|
3504
3655
|
}
|
|
3505
|
-
)), /* @__PURE__ */
|
|
3656
|
+
)), /* @__PURE__ */ React18__default.createElement("div", null, /* @__PURE__ */ React18__default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, translations.end), /* @__PURE__ */ React18__default.createElement(
|
|
3506
3657
|
"input",
|
|
3507
3658
|
{
|
|
3508
3659
|
type: "datetime-local",
|
|
@@ -3510,16 +3661,16 @@ var EventModal = ({
|
|
|
3510
3661
|
value: formatDateForInput(formData.end),
|
|
3511
3662
|
onChange: (e) => handleDateChange("end", e.target.value)
|
|
3512
3663
|
}
|
|
3513
|
-
)))), getDurationText() && /* @__PURE__ */
|
|
3664
|
+
)))), getDurationText() && /* @__PURE__ */ React18__default.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React18__default.createElement("span", { className: "text-xs font-medium px-3 py-1 rounded-full bg-primary/10 text-primary" }, getDurationText())), /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(Bell, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.reminders)), /* @__PURE__ */ React18__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React18__default.createElement(
|
|
3514
3665
|
"button",
|
|
3515
3666
|
{
|
|
3516
3667
|
type: "button",
|
|
3517
3668
|
onClick: () => setIsReminderDropdownOpen(!isReminderDropdownOpen),
|
|
3518
3669
|
className: "flex items-center gap-1 text-xs font-medium text-primary hover:text-primary/80 transition-colors"
|
|
3519
3670
|
},
|
|
3520
|
-
/* @__PURE__ */
|
|
3671
|
+
/* @__PURE__ */ React18__default.createElement(Plus, { className: "w-3.5 h-3.5" }),
|
|
3521
3672
|
translations.addReminder
|
|
3522
|
-
), isReminderDropdownOpen && /* @__PURE__ */
|
|
3673
|
+
), isReminderDropdownOpen && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsReminderDropdownOpen(false) }), /* @__PURE__ */ React18__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" }, getReminderOptions(translations).map((option) => /* @__PURE__ */ React18__default.createElement(
|
|
3523
3674
|
"button",
|
|
3524
3675
|
{
|
|
3525
3676
|
key: option.value,
|
|
@@ -3528,58 +3679,58 @@ var EventModal = ({
|
|
|
3528
3679
|
className: "w-full px-3 py-2 text-left text-sm hover:bg-accent transition-colors"
|
|
3529
3680
|
},
|
|
3530
3681
|
option.label
|
|
3531
|
-
)))))), formData.reminders && formData.reminders.length > 0 && /* @__PURE__ */
|
|
3682
|
+
)))))), formData.reminders && formData.reminders.length > 0 && /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-wrap gap-2" }, formData.reminders.map((reminder) => /* @__PURE__ */ React18__default.createElement(
|
|
3532
3683
|
"div",
|
|
3533
3684
|
{
|
|
3534
3685
|
key: reminder.id,
|
|
3535
3686
|
className: "flex items-center gap-2 px-3 py-1.5 rounded-full bg-amber-500/10 border border-amber-500/20"
|
|
3536
3687
|
},
|
|
3537
|
-
/* @__PURE__ */
|
|
3538
|
-
/* @__PURE__ */
|
|
3539
|
-
/* @__PURE__ */
|
|
3688
|
+
/* @__PURE__ */ React18__default.createElement(BellRing, { className: "w-3.5 h-3.5 text-amber-500" }),
|
|
3689
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "text-xs font-medium text-amber-600 dark:text-amber-400" }, reminder.label),
|
|
3690
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
3540
3691
|
"button",
|
|
3541
3692
|
{
|
|
3542
3693
|
type: "button",
|
|
3543
3694
|
onClick: () => removeReminder(reminder.id),
|
|
3544
3695
|
className: "p-0.5 hover:bg-amber-500/20 rounded-full transition-colors"
|
|
3545
3696
|
},
|
|
3546
|
-
/* @__PURE__ */
|
|
3697
|
+
/* @__PURE__ */ React18__default.createElement(X, { className: "w-3 h-3 text-amber-500" })
|
|
3547
3698
|
)
|
|
3548
|
-
)))), /* @__PURE__ */
|
|
3699
|
+
)))), /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.guests)), /* @__PURE__ */ React18__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React18__default.createElement(
|
|
3549
3700
|
"button",
|
|
3550
3701
|
{
|
|
3551
3702
|
type: "button",
|
|
3552
3703
|
onClick: () => setIsGuestsDropdownOpen(!isGuestsDropdownOpen),
|
|
3553
3704
|
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"
|
|
3554
3705
|
},
|
|
3555
|
-
/* @__PURE__ */
|
|
3556
|
-
/* @__PURE__ */
|
|
3557
|
-
), isGuestsDropdownOpen && /* @__PURE__ */
|
|
3706
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: selectedGuests.length > 0 ? "text-foreground font-medium" : "text-muted-foreground" }, selectedGuests.length > 0 ? `${selectedGuests.length} ${selectedGuests.length > 1 ? translations.guestsAdded : translations.guestAdded}` : translations.addGuests),
|
|
3707
|
+
/* @__PURE__ */ React18__default.createElement(ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform", isGuestsDropdownOpen && "rotate-180") })
|
|
3708
|
+
), isGuestsDropdownOpen && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsGuestsDropdownOpen(false) }), /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
3558
3709
|
"div",
|
|
3559
3710
|
{
|
|
3560
3711
|
key: email,
|
|
3561
3712
|
className: "px-4 py-3 hover:bg-accent cursor-pointer flex items-center gap-3 transition-colors",
|
|
3562
3713
|
onClick: () => toggleGuest(email)
|
|
3563
3714
|
},
|
|
3564
|
-
/* @__PURE__ */
|
|
3715
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: cn(
|
|
3565
3716
|
"w-5 h-5 rounded-md border-2 flex items-center justify-center transition-all",
|
|
3566
3717
|
selectedGuests.includes(email) ? "bg-primary border-primary" : "border-border"
|
|
3567
|
-
) }, selectedGuests.includes(email) && /* @__PURE__ */
|
|
3568
|
-
/* @__PURE__ */
|
|
3718
|
+
) }, selectedGuests.includes(email) && /* @__PURE__ */ React18__default.createElement(Check, { className: "w-3 h-3 text-primary-foreground" })),
|
|
3719
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(
|
|
3569
3720
|
"div",
|
|
3570
3721
|
{
|
|
3571
3722
|
className: "w-7 h-7 rounded-full flex items-center justify-center text-xs font-semibold text-white",
|
|
3572
3723
|
style: { backgroundColor: `hsl(${fakeGuests.indexOf(email) * 60}, 70%, 50%)` }
|
|
3573
3724
|
},
|
|
3574
3725
|
email[0].toUpperCase()
|
|
3575
|
-
), /* @__PURE__ */
|
|
3576
|
-
))))), selectedGuests.length > 0 && /* @__PURE__ */
|
|
3726
|
+
), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm" }, email))
|
|
3727
|
+
))))), selectedGuests.length > 0 && /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, selectedGuests.map((email) => /* @__PURE__ */ React18__default.createElement(
|
|
3577
3728
|
"div",
|
|
3578
3729
|
{
|
|
3579
3730
|
key: email,
|
|
3580
3731
|
className: "flex items-center gap-2 pl-1 pr-2 py-1 bg-muted/30 border border-border/30 rounded-full"
|
|
3581
3732
|
},
|
|
3582
|
-
/* @__PURE__ */
|
|
3733
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
3583
3734
|
"div",
|
|
3584
3735
|
{
|
|
3585
3736
|
className: "w-6 h-6 rounded-full flex items-center justify-center text-xs font-semibold text-white",
|
|
@@ -3587,17 +3738,17 @@ var EventModal = ({
|
|
|
3587
3738
|
},
|
|
3588
3739
|
email[0].toUpperCase()
|
|
3589
3740
|
),
|
|
3590
|
-
/* @__PURE__ */
|
|
3591
|
-
/* @__PURE__ */
|
|
3741
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "text-xs font-medium text-foreground" }, email.split("@")[0]),
|
|
3742
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
3592
3743
|
"button",
|
|
3593
3744
|
{
|
|
3594
3745
|
type: "button",
|
|
3595
3746
|
onClick: () => toggleGuest(email),
|
|
3596
3747
|
className: "p-0.5 hover:bg-destructive/10 rounded-full transition-colors"
|
|
3597
3748
|
},
|
|
3598
|
-
/* @__PURE__ */
|
|
3749
|
+
/* @__PURE__ */ React18__default.createElement(X, { className: "w-3 h-3 text-muted-foreground" })
|
|
3599
3750
|
)
|
|
3600
|
-
)))), /* @__PURE__ */
|
|
3751
|
+
)))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React18__default.createElement(MapPin, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ React18__default.createElement(
|
|
3601
3752
|
"input",
|
|
3602
3753
|
{
|
|
3603
3754
|
type: "text",
|
|
@@ -3606,7 +3757,7 @@ var EventModal = ({
|
|
|
3606
3757
|
value: formData.location || "",
|
|
3607
3758
|
onChange: (e) => setFormData({ ...formData, location: e.target.value })
|
|
3608
3759
|
}
|
|
3609
|
-
)), /* @__PURE__ */
|
|
3760
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.notes)), /* @__PURE__ */ React18__default.createElement(
|
|
3610
3761
|
"textarea",
|
|
3611
3762
|
{
|
|
3612
3763
|
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",
|
|
@@ -3614,7 +3765,7 @@ var EventModal = ({
|
|
|
3614
3765
|
value: formData.description || "",
|
|
3615
3766
|
onChange: (e) => setFormData({ ...formData, description: e.target.value })
|
|
3616
3767
|
}
|
|
3617
|
-
)), /* @__PURE__ */
|
|
3768
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React18__default.createElement(Repeat, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ React18__default.createElement(
|
|
3618
3769
|
"select",
|
|
3619
3770
|
{
|
|
3620
3771
|
className: "flex-1 bg-transparent text-sm text-foreground focus:outline-none cursor-pointer",
|
|
@@ -3633,28 +3784,28 @@ var EventModal = ({
|
|
|
3633
3784
|
}
|
|
3634
3785
|
}
|
|
3635
3786
|
},
|
|
3636
|
-
/* @__PURE__ */
|
|
3637
|
-
/* @__PURE__ */
|
|
3638
|
-
/* @__PURE__ */
|
|
3639
|
-
/* @__PURE__ */
|
|
3640
|
-
/* @__PURE__ */
|
|
3641
|
-
)), /* @__PURE__ */
|
|
3787
|
+
/* @__PURE__ */ React18__default.createElement("option", { value: "" }, translations.doesNotRepeat),
|
|
3788
|
+
/* @__PURE__ */ React18__default.createElement("option", { value: "DAILY" }, translations.daily),
|
|
3789
|
+
/* @__PURE__ */ React18__default.createElement("option", { value: "WEEKLY" }, translations.weekly),
|
|
3790
|
+
/* @__PURE__ */ React18__default.createElement("option", { value: "MONTHLY" }, translations.monthly),
|
|
3791
|
+
/* @__PURE__ */ React18__default.createElement("option", { value: "YEARLY" }, translations.yearly)
|
|
3792
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center justify-between p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(Tag, { className: "w-5 h-5 text-muted-foreground" }), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm text-foreground" }, translations.calendar)), /* @__PURE__ */ React18__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React18__default.createElement(
|
|
3642
3793
|
"button",
|
|
3643
3794
|
{
|
|
3644
3795
|
type: "button",
|
|
3645
3796
|
onClick: () => setIsCalendarDropdownOpen(!isCalendarDropdownOpen),
|
|
3646
3797
|
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"
|
|
3647
3798
|
},
|
|
3648
|
-
/* @__PURE__ */
|
|
3799
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
3649
3800
|
"div",
|
|
3650
3801
|
{
|
|
3651
3802
|
className: "w-3 h-3 rounded-full",
|
|
3652
3803
|
style: { backgroundColor: calendars?.find((c) => c.id === formData.calendarId)?.color || "#3b82f6" }
|
|
3653
3804
|
}
|
|
3654
3805
|
),
|
|
3655
|
-
/* @__PURE__ */
|
|
3656
|
-
/* @__PURE__ */
|
|
3657
|
-
), isCalendarDropdownOpen && /* @__PURE__ */
|
|
3806
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "font-medium" }, calendars?.find((c) => c.id === formData.calendarId)?.label || "Select"),
|
|
3807
|
+
/* @__PURE__ */ React18__default.createElement(ChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground" })
|
|
3808
|
+
), isCalendarDropdownOpen && /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsCalendarDropdownOpen(false) }), /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
3658
3809
|
"button",
|
|
3659
3810
|
{
|
|
3660
3811
|
key: cal.id,
|
|
@@ -3669,19 +3820,19 @@ var EventModal = ({
|
|
|
3669
3820
|
setIsCalendarDropdownOpen(false);
|
|
3670
3821
|
}
|
|
3671
3822
|
},
|
|
3672
|
-
/* @__PURE__ */
|
|
3673
|
-
/* @__PURE__ */
|
|
3674
|
-
formData.calendarId === cal.id && /* @__PURE__ */
|
|
3675
|
-
)))))))), /* @__PURE__ */
|
|
3823
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "w-3 h-3 rounded-full", style: { backgroundColor: cal.color } }),
|
|
3824
|
+
/* @__PURE__ */ React18__default.createElement("span", { className: "flex-1 text-sm" }, cal.label),
|
|
3825
|
+
formData.calendarId === cal.id && /* @__PURE__ */ React18__default.createElement(Check, { className: "w-4 h-4 text-primary" })
|
|
3826
|
+
)))))))), /* @__PURE__ */ React18__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__ */ React18__default.createElement(
|
|
3676
3827
|
"button",
|
|
3677
3828
|
{
|
|
3678
3829
|
type: "button",
|
|
3679
3830
|
onClick: handleDelete,
|
|
3680
3831
|
className: "flex items-center gap-2 px-4 py-2 text-destructive hover:bg-destructive/10 rounded-xl transition-all text-sm font-medium"
|
|
3681
3832
|
},
|
|
3682
|
-
/* @__PURE__ */
|
|
3833
|
+
/* @__PURE__ */ React18__default.createElement(Trash2, { className: "w-4 h-4" }),
|
|
3683
3834
|
translations.delete
|
|
3684
|
-
), mode === "create" && /* @__PURE__ */
|
|
3835
|
+
), mode === "create" && /* @__PURE__ */ React18__default.createElement("div", null), /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(
|
|
3685
3836
|
"button",
|
|
3686
3837
|
{
|
|
3687
3838
|
type: "button",
|
|
@@ -3689,7 +3840,7 @@ var EventModal = ({
|
|
|
3689
3840
|
className: "px-4 py-2.5 text-muted-foreground hover:text-foreground font-medium text-sm rounded-xl transition-all hover:bg-accent"
|
|
3690
3841
|
},
|
|
3691
3842
|
translations.cancel
|
|
3692
|
-
), /* @__PURE__ */
|
|
3843
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
3693
3844
|
"button",
|
|
3694
3845
|
{
|
|
3695
3846
|
type: "submit",
|
|
@@ -3697,7 +3848,7 @@ var EventModal = ({
|
|
|
3697
3848
|
},
|
|
3698
3849
|
mode === "edit" ? translations.saveChanges : translations.createEvent
|
|
3699
3850
|
))));
|
|
3700
|
-
return /* @__PURE__ */
|
|
3851
|
+
return /* @__PURE__ */ React18__default.createElement(Modal, { isOpen, onClose, hideHeader: true, className: "p-0 overflow-hidden max-w-lg rounded-2xl shadow-2xl" }, /* @__PURE__ */ React18__default.createElement(AnimatePresence, { mode: "wait" }, mode === "view" && event ? /* @__PURE__ */ React18__default.createElement(
|
|
3701
3852
|
motion.div,
|
|
3702
3853
|
{
|
|
3703
3854
|
key: "view",
|
|
@@ -3707,7 +3858,7 @@ var EventModal = ({
|
|
|
3707
3858
|
transition: { duration: 0.15 }
|
|
3708
3859
|
},
|
|
3709
3860
|
renderViewMode()
|
|
3710
|
-
) : /* @__PURE__ */
|
|
3861
|
+
) : /* @__PURE__ */ React18__default.createElement(
|
|
3711
3862
|
motion.div,
|
|
3712
3863
|
{
|
|
3713
3864
|
key: "edit",
|
|
@@ -3719,9 +3870,9 @@ var EventModal = ({
|
|
|
3719
3870
|
renderEditMode()
|
|
3720
3871
|
)));
|
|
3721
3872
|
};
|
|
3722
|
-
var Skeleton = ({ className, style }) => /* @__PURE__ */
|
|
3723
|
-
var MonthViewSkeleton = () => /* @__PURE__ */
|
|
3724
|
-
var WeekViewSkeleton = () => /* @__PURE__ */
|
|
3873
|
+
var Skeleton = ({ className, style }) => /* @__PURE__ */ React18__default.createElement("div", { className: cn("animate-pulse bg-muted/40 rounded", className), style });
|
|
3874
|
+
var MonthViewSkeleton = () => /* @__PURE__ */ React18__default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React18__default.createElement("div", { className: "grid grid-cols-7 border-b border-border/50 bg-muted/10" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ React18__default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-4 w-8 mx-auto" })))), /* @__PURE__ */ React18__default.createElement("div", { className: "grid grid-cols-7 flex-1" }, Array.from({ length: 35 }).map((_, i) => /* @__PURE__ */ React18__default.createElement("div", { key: i, className: "min-h-[120px] border-r border-b border-border/30 p-2" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-4 w-6 mb-2" }), /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-1" }, Math.random() > 0.5 && /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-5 w-full rounded-md" }), Math.random() > 0.7 && /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-5 w-3/4 rounded-md" }))))));
|
|
3875
|
+
var WeekViewSkeleton = () => /* @__PURE__ */ React18__default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex border-b border-border/50 bg-muted/10" }, /* @__PURE__ */ React18__default.createElement("div", { className: "w-16 p-3 border-r border-border/30" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-8 w-10 mx-auto" })), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 grid grid-cols-7" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ React18__default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-3 w-8 mx-auto mb-1" }), /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-8 w-8 mx-auto rounded-xl" }))))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ React18__default.createElement("div", { className: "w-16 border-r border-border/30" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React18__default.createElement("div", { key: i, className: "h-[60px] relative" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-4 w-10 absolute right-2 -translate-y-1/2" })))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, Array.from({ length: 7 }).map((_, colIdx) => /* @__PURE__ */ React18__default.createElement("div", { key: colIdx, className: "relative border-r border-border/30 last:border-r-0" }, Array.from({ length: 10 }).map((_2, rowIdx) => /* @__PURE__ */ React18__default.createElement("div", { key: rowIdx, className: "h-[60px] border-b border-dashed border-border/20" })), Math.random() > 0.3 && /* @__PURE__ */ React18__default.createElement(
|
|
3725
3876
|
Skeleton,
|
|
3726
3877
|
{
|
|
3727
3878
|
className: "absolute rounded-md",
|
|
@@ -3733,20 +3884,20 @@ var WeekViewSkeleton = () => /* @__PURE__ */ React17__default.createElement("div
|
|
|
3733
3884
|
}
|
|
3734
3885
|
}
|
|
3735
3886
|
))))));
|
|
3736
|
-
var DayViewSkeleton = () => /* @__PURE__ */
|
|
3887
|
+
var DayViewSkeleton = () => /* @__PURE__ */ React18__default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React18__default.createElement("div", { className: "px-6 py-4 border-b border-border/50 bg-muted/10 text-center" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-7 w-64 mx-auto" })), /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ React18__default.createElement("div", { className: "w-20 border-r border-border/30 bg-muted/5" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React18__default.createElement("div", { key: i, className: "h-[80px] relative" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-4 w-12 absolute left-1/2 -translate-x-1/2 -translate-y-1/2" })))), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 relative" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React18__default.createElement("div", { key: i, className: "h-[80px] border-b border-dashed border-border/20" })), /* @__PURE__ */ React18__default.createElement(
|
|
3737
3888
|
Skeleton,
|
|
3738
3889
|
{
|
|
3739
3890
|
className: "absolute rounded-lg left-4 right-4",
|
|
3740
3891
|
style: { top: "160px", height: "120px" }
|
|
3741
3892
|
}
|
|
3742
|
-
), /* @__PURE__ */
|
|
3893
|
+
), /* @__PURE__ */ React18__default.createElement(
|
|
3743
3894
|
Skeleton,
|
|
3744
3895
|
{
|
|
3745
3896
|
className: "absolute rounded-lg left-4 right-4",
|
|
3746
3897
|
style: { top: "400px", height: "80px" }
|
|
3747
3898
|
}
|
|
3748
3899
|
))));
|
|
3749
|
-
var AgendaViewSkeleton = () => /* @__PURE__ */
|
|
3900
|
+
var AgendaViewSkeleton = () => /* @__PURE__ */ React18__default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden p-6" }, /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-6" }, Array.from({ length: 4 }).map((_, dayIdx) => /* @__PURE__ */ React18__default.createElement("div", { key: dayIdx }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-5 w-40 mb-4" }), /* @__PURE__ */ React18__default.createElement("div", { className: "space-y-3" }, Array.from({ length: 2 + Math.floor(Math.random() * 3) }).map((_2, eventIdx) => /* @__PURE__ */ React18__default.createElement("div", { key: eventIdx, className: "flex items-center gap-4 p-3 rounded-xl bg-muted/10" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-10 w-10 rounded-lg" }), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React18__default.createElement(Skeleton, { className: "h-3 w-1/2" })))))))));
|
|
3750
3901
|
var EventContextMenu = ({
|
|
3751
3902
|
event,
|
|
3752
3903
|
position,
|
|
@@ -3787,7 +3938,7 @@ var EventContextMenu = ({
|
|
|
3787
3938
|
...onEdit ? [{
|
|
3788
3939
|
id: "edit",
|
|
3789
3940
|
label: translations?.edit || "Edit",
|
|
3790
|
-
icon: /* @__PURE__ */
|
|
3941
|
+
icon: /* @__PURE__ */ React18__default.createElement(Edit3, { className: "w-4 h-4" }),
|
|
3791
3942
|
onClick: () => {
|
|
3792
3943
|
onEdit(event);
|
|
3793
3944
|
onClose();
|
|
@@ -3796,7 +3947,7 @@ var EventContextMenu = ({
|
|
|
3796
3947
|
...onDuplicate ? [{
|
|
3797
3948
|
id: "duplicate",
|
|
3798
3949
|
label: translations?.duplicate || "Duplicate",
|
|
3799
|
-
icon: /* @__PURE__ */
|
|
3950
|
+
icon: /* @__PURE__ */ React18__default.createElement(Copy, { className: "w-4 h-4" }),
|
|
3800
3951
|
onClick: () => {
|
|
3801
3952
|
onDuplicate(event);
|
|
3802
3953
|
onClose();
|
|
@@ -3806,7 +3957,7 @@ var EventContextMenu = ({
|
|
|
3806
3957
|
...onDelete ? [{
|
|
3807
3958
|
id: "delete",
|
|
3808
3959
|
label: translations?.delete || "Delete",
|
|
3809
|
-
icon: /* @__PURE__ */
|
|
3960
|
+
icon: /* @__PURE__ */ React18__default.createElement(Trash2, { className: "w-4 h-4" }),
|
|
3810
3961
|
onClick: () => {
|
|
3811
3962
|
onDelete(event.id);
|
|
3812
3963
|
onClose();
|
|
@@ -3818,7 +3969,7 @@ var EventContextMenu = ({
|
|
|
3818
3969
|
x: Math.min(position.x, window.innerWidth - 200),
|
|
3819
3970
|
y: Math.min(position.y, window.innerHeight - (actions.length * 44 + 80))
|
|
3820
3971
|
};
|
|
3821
|
-
return /* @__PURE__ */
|
|
3972
|
+
return /* @__PURE__ */ React18__default.createElement(AnimatePresence, null, /* @__PURE__ */ React18__default.createElement(
|
|
3822
3973
|
motion.div,
|
|
3823
3974
|
{
|
|
3824
3975
|
ref: menuRef,
|
|
@@ -3832,14 +3983,14 @@ var EventContextMenu = ({
|
|
|
3832
3983
|
top: adjustedPosition.y
|
|
3833
3984
|
}
|
|
3834
3985
|
},
|
|
3835
|
-
/* @__PURE__ */
|
|
3986
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "px-3 py-2 border-b-[0.5px] border-border bg-muted/30" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18__default.createElement(
|
|
3836
3987
|
"div",
|
|
3837
3988
|
{
|
|
3838
3989
|
className: "w-2.5 h-2.5 rounded-full shrink-0",
|
|
3839
3990
|
style: { backgroundColor: event.color || "var(--primary)" }
|
|
3840
3991
|
}
|
|
3841
|
-
), /* @__PURE__ */
|
|
3842
|
-
/* @__PURE__ */
|
|
3992
|
+
), /* @__PURE__ */ React18__default.createElement("span", { className: "text-sm font-medium truncate text-foreground" }, event.title))),
|
|
3993
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "py-1" }, actions.map((action, index) => /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, { key: action.id }, index > 0 && action.variant === "danger" && /* @__PURE__ */ React18__default.createElement("div", { className: "h-px bg-border my-1" }), /* @__PURE__ */ React18__default.createElement(
|
|
3843
3994
|
"button",
|
|
3844
3995
|
{
|
|
3845
3996
|
onClick: action.onClick,
|
|
@@ -3851,7 +4002,7 @@ var EventContextMenu = ({
|
|
|
3851
4002
|
)
|
|
3852
4003
|
},
|
|
3853
4004
|
action.icon,
|
|
3854
|
-
/* @__PURE__ */
|
|
4005
|
+
/* @__PURE__ */ React18__default.createElement("span", null, action.label)
|
|
3855
4006
|
))))
|
|
3856
4007
|
));
|
|
3857
4008
|
};
|
|
@@ -4306,6 +4457,7 @@ var Scheduler = ({
|
|
|
4306
4457
|
translations,
|
|
4307
4458
|
hideViewSwitcher,
|
|
4308
4459
|
hideLanguageSwitcher,
|
|
4460
|
+
hourCount,
|
|
4309
4461
|
hideFab = false,
|
|
4310
4462
|
compactShortEvents = true,
|
|
4311
4463
|
initialScrollHour = 8,
|
|
@@ -4500,7 +4652,7 @@ var Scheduler = ({
|
|
|
4500
4652
|
(e) => e.start >= rangeStart && e.start <= rangeEnd
|
|
4501
4653
|
).length;
|
|
4502
4654
|
}, [filteredEvents, view, currentDate]);
|
|
4503
|
-
return /* @__PURE__ */
|
|
4655
|
+
return /* @__PURE__ */ React18__default.createElement(React18__default.Fragment, null, /* @__PURE__ */ React18__default.createElement(
|
|
4504
4656
|
DndContext,
|
|
4505
4657
|
{
|
|
4506
4658
|
id,
|
|
@@ -4509,7 +4661,7 @@ var Scheduler = ({
|
|
|
4509
4661
|
onDragEnd: onDragEndWrapper,
|
|
4510
4662
|
modifiers
|
|
4511
4663
|
},
|
|
4512
|
-
/* @__PURE__ */
|
|
4664
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4513
4665
|
"div",
|
|
4514
4666
|
{
|
|
4515
4667
|
ref: schedulerRef,
|
|
@@ -4531,7 +4683,7 @@ var Scheduler = ({
|
|
|
4531
4683
|
isDarkMode,
|
|
4532
4684
|
onThemeToggle
|
|
4533
4685
|
})
|
|
4534
|
-
) : /* @__PURE__ */
|
|
4686
|
+
) : /* @__PURE__ */ React18__default.createElement(
|
|
4535
4687
|
CalendarHeader,
|
|
4536
4688
|
{
|
|
4537
4689
|
currentDate,
|
|
@@ -4556,10 +4708,11 @@ var Scheduler = ({
|
|
|
4556
4708
|
setActiveCustomMenu(null);
|
|
4557
4709
|
},
|
|
4558
4710
|
eventCount: viewEventCount,
|
|
4711
|
+
hourCount,
|
|
4559
4712
|
hideLanguageSwitcher
|
|
4560
4713
|
}
|
|
4561
4714
|
),
|
|
4562
|
-
/* @__PURE__ */
|
|
4715
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-1 overflow-hidden" }, /* @__PURE__ */ React18__default.createElement(
|
|
4563
4716
|
motion.div,
|
|
4564
4717
|
{
|
|
4565
4718
|
className: "hidden md:block overflow-hidden shrink-0",
|
|
@@ -4573,7 +4726,7 @@ var Scheduler = ({
|
|
|
4573
4726
|
ease: [0.4, 0, 0.2, 1]
|
|
4574
4727
|
}
|
|
4575
4728
|
},
|
|
4576
|
-
/* @__PURE__ */
|
|
4729
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4577
4730
|
Sidebar,
|
|
4578
4731
|
{
|
|
4579
4732
|
currentDate,
|
|
@@ -4605,7 +4758,7 @@ var Scheduler = ({
|
|
|
4605
4758
|
}
|
|
4606
4759
|
}
|
|
4607
4760
|
)
|
|
4608
|
-
), /* @__PURE__ */
|
|
4761
|
+
), /* @__PURE__ */ React18__default.createElement(AnimatePresence, null, isSidebarOpen && /* @__PURE__ */ React18__default.createElement(
|
|
4609
4762
|
motion.div,
|
|
4610
4763
|
{
|
|
4611
4764
|
key: "mobile-sidebar-overlay",
|
|
@@ -4615,7 +4768,7 @@ var Scheduler = ({
|
|
|
4615
4768
|
exit: { opacity: 0 },
|
|
4616
4769
|
transition: { duration: 0.2 }
|
|
4617
4770
|
},
|
|
4618
|
-
/* @__PURE__ */
|
|
4771
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4619
4772
|
motion.div,
|
|
4620
4773
|
{
|
|
4621
4774
|
className: "w-[280px] h-full bg-background shadow-2xl overflow-hidden",
|
|
@@ -4624,7 +4777,7 @@ var Scheduler = ({
|
|
|
4624
4777
|
exit: { x: -280 },
|
|
4625
4778
|
transition: { duration: 0.25, ease: [0.4, 0, 0.2, 1] }
|
|
4626
4779
|
},
|
|
4627
|
-
/* @__PURE__ */
|
|
4780
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4628
4781
|
Sidebar,
|
|
4629
4782
|
{
|
|
4630
4783
|
currentDate,
|
|
@@ -4662,16 +4815,16 @@ var Scheduler = ({
|
|
|
4662
4815
|
}
|
|
4663
4816
|
)
|
|
4664
4817
|
),
|
|
4665
|
-
/* @__PURE__ */
|
|
4818
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4666
4819
|
motion.div,
|
|
4667
4820
|
{
|
|
4668
4821
|
className: "flex-1 bg-black/50 backdrop-blur-sm",
|
|
4669
4822
|
onClick: () => setIsSidebarOpen(false)
|
|
4670
4823
|
}
|
|
4671
4824
|
)
|
|
4672
|
-
)), /* @__PURE__ */
|
|
4825
|
+
)), /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 flex flex-col overflow-hidden relative min-h-0" }, activeCustomMenu !== null && sidebarMenus && /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 overflow-y-auto p-4 md:p-6" }, sidebarMenus.find((m) => m.id === activeCustomMenu)?.component), activeCustomViewId !== null && activeCustomMenu === null && customViews && /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 overflow-y-auto p-4 md:p-6" }, customViews.find((v) => v.id === activeCustomViewId)?.component), activeCustomMenu === null && activeCustomViewId === null && (isLoading ? /* @__PURE__ */ React18__default.createElement("div", { className: "flex-1 overflow-auto p-0 md:p-4 min-h-0" }, /* @__PURE__ */ React18__default.createElement("div", { className: "h-full min-w-full" }, view === "month" && /* @__PURE__ */ React18__default.createElement(MonthViewSkeleton, null), view === "week" && /* @__PURE__ */ React18__default.createElement(WeekViewSkeleton, null), view === "day" && /* @__PURE__ */ React18__default.createElement(DayViewSkeleton, null), view === "agenda" && /* @__PURE__ */ React18__default.createElement(AgendaViewSkeleton, null), view === "resource" && /* @__PURE__ */ React18__default.createElement(WeekViewSkeleton, null))) : (
|
|
4673
4826
|
/* overflow-hidden here: each view owns its own scroll container */
|
|
4674
|
-
/* @__PURE__ */
|
|
4827
|
+
/* @__PURE__ */ React18__default.createElement("div", { ref: swipeRef, className: "flex-1 overflow-hidden p-0 md:p-4 touch-pan-y min-h-0" }, /* @__PURE__ */ React18__default.createElement("div", { className: "flex flex-col h-full min-w-full min-h-0" }, /* @__PURE__ */ React18__default.createElement(AnimatePresence, { mode: "wait", initial: false }, /* @__PURE__ */ React18__default.createElement(
|
|
4675
4828
|
motion.div,
|
|
4676
4829
|
{
|
|
4677
4830
|
key: `${view}-${currentDate.toISOString()}-${timezone || "local"}`,
|
|
@@ -4695,7 +4848,7 @@ var Scheduler = ({
|
|
|
4695
4848
|
className: "flex-1 min-h-0 flex flex-col",
|
|
4696
4849
|
style: { height: "100%" }
|
|
4697
4850
|
},
|
|
4698
|
-
view === "month" && /* @__PURE__ */
|
|
4851
|
+
view === "month" && /* @__PURE__ */ React18__default.createElement(
|
|
4699
4852
|
MonthView,
|
|
4700
4853
|
{
|
|
4701
4854
|
currentDate,
|
|
@@ -4706,7 +4859,7 @@ var Scheduler = ({
|
|
|
4706
4859
|
locale
|
|
4707
4860
|
}
|
|
4708
4861
|
),
|
|
4709
|
-
view === "week" && /* @__PURE__ */
|
|
4862
|
+
view === "week" && /* @__PURE__ */ React18__default.createElement(
|
|
4710
4863
|
WeekView,
|
|
4711
4864
|
{
|
|
4712
4865
|
currentDate,
|
|
@@ -4723,7 +4876,7 @@ var Scheduler = ({
|
|
|
4723
4876
|
compactShortEvents
|
|
4724
4877
|
}
|
|
4725
4878
|
),
|
|
4726
|
-
view === "day" && /* @__PURE__ */
|
|
4879
|
+
view === "day" && /* @__PURE__ */ React18__default.createElement(
|
|
4727
4880
|
DayView,
|
|
4728
4881
|
{
|
|
4729
4882
|
currentDate,
|
|
@@ -4740,7 +4893,7 @@ var Scheduler = ({
|
|
|
4740
4893
|
compactShortEvents
|
|
4741
4894
|
}
|
|
4742
4895
|
),
|
|
4743
|
-
view === "agenda" && /* @__PURE__ */
|
|
4896
|
+
view === "agenda" && /* @__PURE__ */ React18__default.createElement(
|
|
4744
4897
|
AgendaView,
|
|
4745
4898
|
{
|
|
4746
4899
|
currentDate,
|
|
@@ -4752,7 +4905,7 @@ var Scheduler = ({
|
|
|
4752
4905
|
renderEmptyState
|
|
4753
4906
|
}
|
|
4754
4907
|
),
|
|
4755
|
-
view === "resource" && resources && /* @__PURE__ */
|
|
4908
|
+
view === "resource" && resources && /* @__PURE__ */ React18__default.createElement(
|
|
4756
4909
|
ResourceView,
|
|
4757
4910
|
{
|
|
4758
4911
|
currentDate,
|
|
@@ -4776,7 +4929,7 @@ var Scheduler = ({
|
|
|
4776
4929
|
initialDate: modalInitialDate,
|
|
4777
4930
|
onSave: handleModalSave,
|
|
4778
4931
|
onDelete: handleModalDelete
|
|
4779
|
-
}) : /* @__PURE__ */
|
|
4932
|
+
}) : /* @__PURE__ */ React18__default.createElement(
|
|
4780
4933
|
EventModal,
|
|
4781
4934
|
{
|
|
4782
4935
|
isOpen: isModalOpen,
|
|
@@ -4791,7 +4944,7 @@ var Scheduler = ({
|
|
|
4791
4944
|
language
|
|
4792
4945
|
}
|
|
4793
4946
|
),
|
|
4794
|
-
/* @__PURE__ */
|
|
4947
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4795
4948
|
EventContextMenu,
|
|
4796
4949
|
{
|
|
4797
4950
|
event: contextMenuEvent,
|
|
@@ -4824,7 +4977,7 @@ var Scheduler = ({
|
|
|
4824
4977
|
}
|
|
4825
4978
|
}
|
|
4826
4979
|
),
|
|
4827
|
-
/* @__PURE__ */
|
|
4980
|
+
/* @__PURE__ */ React18__default.createElement(DragOverlay, { dropAnimation: null }, activeDragEvent ? /* @__PURE__ */ React18__default.createElement(
|
|
4828
4981
|
"div",
|
|
4829
4982
|
{
|
|
4830
4983
|
className: cn(
|
|
@@ -4842,17 +4995,17 @@ var Scheduler = ({
|
|
|
4842
4995
|
transform: "rotate(-2deg) scale(1.02)"
|
|
4843
4996
|
}
|
|
4844
4997
|
},
|
|
4845
|
-
/* @__PURE__ */
|
|
4998
|
+
/* @__PURE__ */ React18__default.createElement("div", { className: "p-2.5 h-full flex flex-col" }, /* @__PURE__ */ React18__default.createElement(
|
|
4846
4999
|
"div",
|
|
4847
5000
|
{
|
|
4848
5001
|
className: "absolute left-0 top-0 bottom-0 w-1 rounded-l-lg",
|
|
4849
5002
|
style: { backgroundColor: activeDragEvent.color || "var(--primary)" }
|
|
4850
5003
|
}
|
|
4851
|
-
), /* @__PURE__ */
|
|
5004
|
+
), /* @__PURE__ */ React18__default.createElement("div", { className: "pl-2" }, /* @__PURE__ */ React18__default.createElement("div", { className: "font-semibold truncate text-sm" }, activeDragEvent.title), (view === "week" || view === "day") && getDragHeight() && getDragHeight() > 40 && /* @__PURE__ */ React18__default.createElement("div", { className: "text-xs opacity-80 mt-0.5 flex items-center gap-1" }, /* @__PURE__ */ React18__default.createElement("svg", { className: "w-3 h-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ React18__default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React18__default.createElement("path", { d: "M12 6v6l4 2" })), format(activeDragEvent.start, getTimeFormatFull(language)), " - ", format(activeDragEvent.end, getTimeFormatFull(language)))), /* @__PURE__ */ React18__default.createElement("div", { className: "absolute bottom-1.5 right-1.5 opacity-60" }, /* @__PURE__ */ React18__default.createElement("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ React18__default.createElement("circle", { cx: "9", cy: "5", r: "1.5" }), /* @__PURE__ */ React18__default.createElement("circle", { cx: "15", cy: "5", r: "1.5" }), /* @__PURE__ */ React18__default.createElement("circle", { cx: "9", cy: "12", r: "1.5" }), /* @__PURE__ */ React18__default.createElement("circle", { cx: "15", cy: "12", r: "1.5" }), /* @__PURE__ */ React18__default.createElement("circle", { cx: "9", cy: "19", r: "1.5" }), /* @__PURE__ */ React18__default.createElement("circle", { cx: "15", cy: "19", r: "1.5" }))))
|
|
4852
5005
|
) : null)
|
|
4853
5006
|
)
|
|
4854
5007
|
), isMounted && isMobile && !readOnly && !hideFab && createPortal(
|
|
4855
|
-
/* @__PURE__ */
|
|
5008
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4856
5009
|
"div",
|
|
4857
5010
|
{
|
|
4858
5011
|
style: {
|
|
@@ -4864,7 +5017,7 @@ var Scheduler = ({
|
|
|
4864
5017
|
...fabCssVars
|
|
4865
5018
|
}
|
|
4866
5019
|
},
|
|
4867
|
-
/* @__PURE__ */
|
|
5020
|
+
/* @__PURE__ */ React18__default.createElement(
|
|
4868
5021
|
"button",
|
|
4869
5022
|
{
|
|
4870
5023
|
type: "button",
|
|
@@ -4885,7 +5038,7 @@ var Scheduler = ({
|
|
|
4885
5038
|
boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.25)"
|
|
4886
5039
|
}
|
|
4887
5040
|
},
|
|
4888
|
-
/* @__PURE__ */
|
|
5041
|
+
/* @__PURE__ */ React18__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React18__default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React18__default.createElement("path", { d: "M12 5v14" }))
|
|
4889
5042
|
)
|
|
4890
5043
|
),
|
|
4891
5044
|
document.body
|