calendarkit-prov2 2.0.5 → 2.0.7
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/LICENSE +2 -1
- package/README.md +4 -1
- package/dist/index.d.mts +46 -1
- package/dist/index.d.ts +46 -1
- package/dist/index.js +494 -370
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +410 -291
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React17 = require('react');
|
|
4
4
|
var reactDom = require('react-dom');
|
|
5
5
|
var core = require('@dnd-kit/core');
|
|
6
6
|
var modifiers = require('@dnd-kit/modifiers');
|
|
@@ -33,7 +33,7 @@ function _interopNamespace(e) {
|
|
|
33
33
|
return Object.freeze(n);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var React17__namespace = /*#__PURE__*/_interopNamespace(React17);
|
|
37
37
|
|
|
38
38
|
function cn(...inputs) {
|
|
39
39
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
@@ -65,10 +65,10 @@ var buttonVariants = classVarianceAuthority.cva(
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
);
|
|
68
|
-
var Button =
|
|
68
|
+
var Button = React17__namespace.forwardRef(
|
|
69
69
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
70
70
|
const Comp = "button";
|
|
71
|
-
return /* @__PURE__ */
|
|
71
|
+
return /* @__PURE__ */ React17__namespace.createElement(
|
|
72
72
|
Comp,
|
|
73
73
|
{
|
|
74
74
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -1565,33 +1565,33 @@ var CalendarHeader = ({
|
|
|
1565
1565
|
eventCount,
|
|
1566
1566
|
hideLanguageSwitcher = false
|
|
1567
1567
|
}) => {
|
|
1568
|
-
const [isLangOpen, setIsLangOpen] =
|
|
1569
|
-
const [isCustomViewOpen, setIsCustomViewOpen] =
|
|
1570
|
-
const langButtonRef =
|
|
1571
|
-
const langDropdownRef =
|
|
1572
|
-
const customViewDropdownRef =
|
|
1573
|
-
const customViewButtonRef =
|
|
1574
|
-
const [langPos, setLangPos] =
|
|
1575
|
-
const [customViewPos, setCustomViewPos] =
|
|
1576
|
-
const updateLangPos =
|
|
1568
|
+
const [isLangOpen, setIsLangOpen] = React17.useState(false);
|
|
1569
|
+
const [isCustomViewOpen, setIsCustomViewOpen] = React17.useState(false);
|
|
1570
|
+
const langButtonRef = React17.useRef(null);
|
|
1571
|
+
const langDropdownRef = React17.useRef(null);
|
|
1572
|
+
const customViewDropdownRef = React17.useRef(null);
|
|
1573
|
+
const customViewButtonRef = React17.useRef(null);
|
|
1574
|
+
const [langPos, setLangPos] = React17.useState(null);
|
|
1575
|
+
const [customViewPos, setCustomViewPos] = React17.useState(null);
|
|
1576
|
+
const updateLangPos = React17.useCallback(() => {
|
|
1577
1577
|
const el = langButtonRef.current;
|
|
1578
1578
|
if (!el) return;
|
|
1579
1579
|
setLangPos(getDropdownPosition(el.getBoundingClientRect(), LANG_DROPDOWN_WIDTH));
|
|
1580
1580
|
}, []);
|
|
1581
|
-
const updateCustomViewPos =
|
|
1581
|
+
const updateCustomViewPos = React17.useCallback(() => {
|
|
1582
1582
|
const el = customViewButtonRef.current;
|
|
1583
1583
|
if (!el) return;
|
|
1584
1584
|
setCustomViewPos(getDropdownPosition(el.getBoundingClientRect(), CUSTOM_VIEW_DROPDOWN_WIDTH));
|
|
1585
1585
|
}, []);
|
|
1586
|
-
|
|
1586
|
+
React17.useLayoutEffect(() => {
|
|
1587
1587
|
if (!isLangOpen) return;
|
|
1588
1588
|
updateLangPos();
|
|
1589
1589
|
}, [isLangOpen, updateLangPos]);
|
|
1590
|
-
|
|
1590
|
+
React17.useLayoutEffect(() => {
|
|
1591
1591
|
if (!isCustomViewOpen) return;
|
|
1592
1592
|
updateCustomViewPos();
|
|
1593
1593
|
}, [isCustomViewOpen, updateCustomViewPos]);
|
|
1594
|
-
|
|
1594
|
+
React17.useEffect(() => {
|
|
1595
1595
|
if (!isLangOpen) return;
|
|
1596
1596
|
const handle = () => updateLangPos();
|
|
1597
1597
|
window.addEventListener("resize", handle);
|
|
@@ -1601,7 +1601,7 @@ var CalendarHeader = ({
|
|
|
1601
1601
|
window.removeEventListener("scroll", handle, true);
|
|
1602
1602
|
};
|
|
1603
1603
|
}, [isLangOpen, updateLangPos]);
|
|
1604
|
-
|
|
1604
|
+
React17.useEffect(() => {
|
|
1605
1605
|
if (!isCustomViewOpen) return;
|
|
1606
1606
|
const handle = () => updateCustomViewPos();
|
|
1607
1607
|
window.addEventListener("resize", handle);
|
|
@@ -1611,7 +1611,7 @@ var CalendarHeader = ({
|
|
|
1611
1611
|
window.removeEventListener("scroll", handle, true);
|
|
1612
1612
|
};
|
|
1613
1613
|
}, [isCustomViewOpen, updateCustomViewPos]);
|
|
1614
|
-
|
|
1614
|
+
React17.useEffect(() => {
|
|
1615
1615
|
const handleClickOutside = (e) => {
|
|
1616
1616
|
const target = e.target;
|
|
1617
1617
|
const insideButton = langButtonRef.current?.contains(target);
|
|
@@ -1621,7 +1621,7 @@ var CalendarHeader = ({
|
|
|
1621
1621
|
if (isLangOpen) document.addEventListener("mousedown", handleClickOutside);
|
|
1622
1622
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
1623
1623
|
}, [isLangOpen]);
|
|
1624
|
-
|
|
1624
|
+
React17.useEffect(() => {
|
|
1625
1625
|
const handleClickOutside = (e) => {
|
|
1626
1626
|
const target = e.target;
|
|
1627
1627
|
const insideButton = customViewButtonRef.current?.contains(target);
|
|
@@ -1638,7 +1638,7 @@ var CalendarHeader = ({
|
|
|
1638
1638
|
{ key: "agenda", icon: lucideReact.ListTodo }
|
|
1639
1639
|
];
|
|
1640
1640
|
const currentLang = LANGUAGE_META[language] ?? LANGUAGE_META["tr"];
|
|
1641
|
-
return /* @__PURE__ */
|
|
1641
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col md:flex-row items-center justify-between px-3 md:px-5 py-3 border-b-[0px] border-border/50 bg-gradient-to-r from-background via-background to-muted/20 gap-3 md:gap-0 min-h-[64px]" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 w-full md:w-auto justify-between md:justify-start" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 md:gap-3" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1642
1642
|
Button,
|
|
1643
1643
|
{
|
|
1644
1644
|
variant: "ghost",
|
|
@@ -1646,8 +1646,8 @@ var CalendarHeader = ({
|
|
|
1646
1646
|
className: "text-muted-foreground hover:text-foreground hover:bg-accent/80 rounded-xl h-10 w-10 transition-all duration-200",
|
|
1647
1647
|
onClick: onMenuClick
|
|
1648
1648
|
},
|
|
1649
|
-
/* @__PURE__ */
|
|
1650
|
-
), /* @__PURE__ */
|
|
1649
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Menu, { className: "h-5 w-5" })
|
|
1650
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1651
1651
|
Button,
|
|
1652
1652
|
{
|
|
1653
1653
|
variant: "outline",
|
|
@@ -1655,15 +1655,15 @@ var CalendarHeader = ({
|
|
|
1655
1655
|
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"
|
|
1656
1656
|
},
|
|
1657
1657
|
translations.today
|
|
1658
|
-
), onCreateEvent && /* @__PURE__ */
|
|
1658
|
+
), onCreateEvent && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative group hidden sm:block" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1659
1659
|
Button,
|
|
1660
1660
|
{
|
|
1661
1661
|
onClick: onCreateEvent,
|
|
1662
1662
|
size: "icon",
|
|
1663
1663
|
className: "h-9 w-9 rounded-xl shadow-sm shadow-primary/20 transition-all duration-200"
|
|
1664
1664
|
},
|
|
1665
|
-
/* @__PURE__ */
|
|
1666
|
-
), /* @__PURE__ */
|
|
1665
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Plus, { className: "h-4 w-4" })
|
|
1666
|
+
), /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.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__ */ React17__namespace.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__ */ React17__namespace.default.createElement("div", { className: "flex items-center bg-muted/40 rounded-xl p-0.5" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1667
1667
|
Button,
|
|
1668
1668
|
{
|
|
1669
1669
|
variant: "ghost",
|
|
@@ -1671,8 +1671,8 @@ var CalendarHeader = ({
|
|
|
1671
1671
|
onClick: onPrev,
|
|
1672
1672
|
className: "rounded-lg h-8 w-8 hover:bg-background/80 transition-all duration-200"
|
|
1673
1673
|
},
|
|
1674
|
-
/* @__PURE__ */
|
|
1675
|
-
), /* @__PURE__ */
|
|
1674
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4 text-muted-foreground" })
|
|
1675
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1676
1676
|
Button,
|
|
1677
1677
|
{
|
|
1678
1678
|
variant: "ghost",
|
|
@@ -1680,8 +1680,8 @@ var CalendarHeader = ({
|
|
|
1680
1680
|
onClick: onNext,
|
|
1681
1681
|
className: "rounded-lg h-8 w-8 hover:bg-background/80 transition-all duration-200"
|
|
1682
1682
|
},
|
|
1683
|
-
/* @__PURE__ */
|
|
1684
|
-
)), /* @__PURE__ */
|
|
1683
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronRight, { className: "h-4 w-4 text-muted-foreground" })
|
|
1684
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "ml-2 md:ml-4 hidden sm:block" }, /* @__PURE__ */ React17__namespace.default.createElement("h2", { className: "text-lg md:text-xl font-semibold text-foreground whitespace-nowrap capitalize tracking-tight" }, dateFns.format(currentDate, "MMMM yyyy", { locale })))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "sm:hidden" }, /* @__PURE__ */ React17__namespace.default.createElement("h2", { className: "text-lg font-semibold text-foreground whitespace-nowrap capitalize tracking-tight" }, dateFns.format(currentDate, "MMMM yyyy", { locale })))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 md:gap-3 w-full md:w-auto justify-end" }, onLanguageChange && !hideLanguageSwitcher && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1685
1685
|
"button",
|
|
1686
1686
|
{
|
|
1687
1687
|
ref: langButtonRef,
|
|
@@ -1693,20 +1693,20 @@ var CalendarHeader = ({
|
|
|
1693
1693
|
),
|
|
1694
1694
|
title: currentLang.english
|
|
1695
1695
|
},
|
|
1696
|
-
/* @__PURE__ */
|
|
1697
|
-
/* @__PURE__ */
|
|
1698
|
-
/* @__PURE__ */
|
|
1699
|
-
/* @__PURE__ */
|
|
1696
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Globe, { className: "h-3.5 w-3.5" }),
|
|
1697
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-base leading-none" }, currentLang.flag),
|
|
1698
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "hidden sm:inline text-xs font-semibold uppercase tracking-wider" }, language),
|
|
1699
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("h-3.5 w-3.5 transition-transform duration-200", isLangOpen && "rotate-180") })
|
|
1700
1700
|
), isLangOpen && langPos && reactDom.createPortal(
|
|
1701
|
-
/* @__PURE__ */
|
|
1701
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
1702
1702
|
"div",
|
|
1703
1703
|
{
|
|
1704
1704
|
ref: langDropdownRef,
|
|
1705
1705
|
className: "fixed w-52 bg-background border border-border/60 rounded-2xl shadow-2xl z-[9999] overflow-hidden py-1.5",
|
|
1706
1706
|
style: { top: langPos.top, left: langPos.left, width: LANG_DROPDOWN_WIDTH }
|
|
1707
1707
|
},
|
|
1708
|
-
/* @__PURE__ */
|
|
1709
|
-
/* @__PURE__ */
|
|
1708
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-3 py-2 border-b border-border/40 mb-1" }, /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider" }, "Language / Dil")),
|
|
1709
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "max-h-72 overflow-y-auto" }, Object.entries(LANGUAGE_META).map(([code, meta]) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1710
1710
|
"button",
|
|
1711
1711
|
{
|
|
1712
1712
|
key: code,
|
|
@@ -1720,13 +1720,13 @@ var CalendarHeader = ({
|
|
|
1720
1720
|
language === code ? "bg-primary/10 text-primary font-semibold" : "text-foreground"
|
|
1721
1721
|
)
|
|
1722
1722
|
},
|
|
1723
|
-
/* @__PURE__ */
|
|
1724
|
-
/* @__PURE__ */
|
|
1725
|
-
language === code && /* @__PURE__ */
|
|
1723
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-lg leading-none w-6 text-center" }, meta.flag),
|
|
1724
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 text-left" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn("font-medium", meta.rtl && "text-right") }, meta.native), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-xs text-muted-foreground" }, meta.english)),
|
|
1725
|
+
language === code && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-2 h-2 rounded-full bg-primary shrink-0" })
|
|
1726
1726
|
)))
|
|
1727
1727
|
),
|
|
1728
1728
|
document.body
|
|
1729
|
-
)), onThemeToggle && /* @__PURE__ */
|
|
1729
|
+
)), onThemeToggle && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1730
1730
|
Button,
|
|
1731
1731
|
{
|
|
1732
1732
|
variant: "ghost",
|
|
@@ -1734,16 +1734,16 @@ var CalendarHeader = ({
|
|
|
1734
1734
|
className: "rounded-xl h-9 w-9 hover:bg-accent/80 transition-all duration-200",
|
|
1735
1735
|
onClick: onThemeToggle
|
|
1736
1736
|
},
|
|
1737
|
-
isDarkMode ? /* @__PURE__ */
|
|
1738
|
-
), typeof eventCount === "number" && !hideViewSwitcher && /* @__PURE__ */
|
|
1737
|
+
isDarkMode ? /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Sun, { className: "h-4 w-4 text-amber-500" }) : /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Moon, { className: "h-4 w-4 text-muted-foreground" })
|
|
1738
|
+
), typeof eventCount === "number" && !hideViewSwitcher && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1739
1739
|
"div",
|
|
1740
1740
|
{
|
|
1741
1741
|
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",
|
|
1742
1742
|
title: `${eventCount} event${eventCount !== 1 ? "s" : ""}`
|
|
1743
1743
|
},
|
|
1744
|
-
/* @__PURE__ */
|
|
1745
|
-
/* @__PURE__ */
|
|
1746
|
-
), !hideViewSwitcher && /* @__PURE__ */
|
|
1744
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.CalendarCheck2, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
1745
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", null, eventCount)
|
|
1746
|
+
), !hideViewSwitcher && /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement(
|
|
1747
1747
|
Button,
|
|
1748
1748
|
{
|
|
1749
1749
|
key,
|
|
@@ -1758,9 +1758,9 @@ var CalendarHeader = ({
|
|
|
1758
1758
|
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"
|
|
1759
1759
|
)
|
|
1760
1760
|
},
|
|
1761
|
-
/* @__PURE__ */
|
|
1762
|
-
/* @__PURE__ */
|
|
1763
|
-
)), customViews && customViews.length > 0 && /* @__PURE__ */
|
|
1761
|
+
/* @__PURE__ */ React17__namespace.default.createElement(Icon, { className: "h-3.5 w-3.5" }),
|
|
1762
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "hidden sm:inline" }, translations[key])
|
|
1763
|
+
)), customViews && customViews.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-px h-5 bg-border/60 mx-0.5 shrink-0" }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1764
1764
|
Button,
|
|
1765
1765
|
{
|
|
1766
1766
|
ref: customViewButtonRef,
|
|
@@ -1773,17 +1773,17 @@ var CalendarHeader = ({
|
|
|
1773
1773
|
),
|
|
1774
1774
|
title: "Daha fazla g\xF6r\xFCn\xFCm"
|
|
1775
1775
|
},
|
|
1776
|
-
activeCustomViewId ? customViews.find((cv) => cv.id === activeCustomViewId)?.label : /* @__PURE__ */
|
|
1777
|
-
/* @__PURE__ */
|
|
1776
|
+
activeCustomViewId ? customViews.find((cv) => cv.id === activeCustomViewId)?.label : /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.MoreHorizontal, { className: "h-3.5 w-3.5" }),
|
|
1777
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("h-3 w-3 transition-transform duration-150", isCustomViewOpen && "rotate-180") })
|
|
1778
1778
|
), isCustomViewOpen && customViewPos && reactDom.createPortal(
|
|
1779
|
-
/* @__PURE__ */
|
|
1779
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
1780
1780
|
"div",
|
|
1781
1781
|
{
|
|
1782
1782
|
ref: customViewDropdownRef,
|
|
1783
1783
|
className: "fixed min-w-[160px] bg-background border border-border/60 rounded-2xl shadow-2xl z-[9999] overflow-hidden py-1.5",
|
|
1784
1784
|
style: { top: customViewPos.top, left: customViewPos.left, minWidth: CUSTOM_VIEW_DROPDOWN_WIDTH }
|
|
1785
1785
|
},
|
|
1786
|
-
customViews.map((cv) => /* @__PURE__ */
|
|
1786
|
+
customViews.map((cv) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1787
1787
|
"button",
|
|
1788
1788
|
{
|
|
1789
1789
|
key: cv.id,
|
|
@@ -1797,9 +1797,9 @@ var CalendarHeader = ({
|
|
|
1797
1797
|
activeCustomViewId === cv.id ? "bg-primary/10 text-primary font-semibold" : "text-foreground"
|
|
1798
1798
|
)
|
|
1799
1799
|
},
|
|
1800
|
-
cv.icon && /* @__PURE__ */
|
|
1801
|
-
/* @__PURE__ */
|
|
1802
|
-
activeCustomViewId === cv.id && /* @__PURE__ */
|
|
1800
|
+
cv.icon && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "w-4 h-4 flex items-center justify-center shrink-0" }, cv.icon),
|
|
1801
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", null, cv.label),
|
|
1802
|
+
activeCustomViewId === cv.id && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "ml-auto w-1.5 h-1.5 rounded-full bg-primary shrink-0" })
|
|
1803
1803
|
))
|
|
1804
1804
|
),
|
|
1805
1805
|
document.body
|
|
@@ -1826,12 +1826,12 @@ var MiniCalendar = ({
|
|
|
1826
1826
|
className,
|
|
1827
1827
|
locale
|
|
1828
1828
|
}) => {
|
|
1829
|
-
const [viewDate, setViewDate] =
|
|
1830
|
-
|
|
1829
|
+
const [viewDate, setViewDate] = React17__namespace.default.useState(currentDate);
|
|
1830
|
+
React17__namespace.default.useEffect(() => {
|
|
1831
1831
|
setViewDate(currentDate);
|
|
1832
1832
|
}, [currentDate]);
|
|
1833
|
-
const days =
|
|
1834
|
-
const weekDays =
|
|
1833
|
+
const days = React17__namespace.default.useMemo(() => getMonthGrid(viewDate), [viewDate]);
|
|
1834
|
+
const weekDays = React17__namespace.default.useMemo(() => {
|
|
1835
1835
|
const base = new Date(2024, 0, 7);
|
|
1836
1836
|
return Array.from({ length: 7 }, (_, i) => {
|
|
1837
1837
|
const d = new Date(base);
|
|
@@ -1855,7 +1855,7 @@ var MiniCalendar = ({
|
|
|
1855
1855
|
onDateChange(day);
|
|
1856
1856
|
if (onViewChange) onViewChange("day");
|
|
1857
1857
|
};
|
|
1858
|
-
return /* @__PURE__ */
|
|
1858
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn("px-4 w-[260px]", className) }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-semibold text-foreground capitalize" }, dateFns.format(viewDate, "MMMM yyyy", { locale })), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center bg-muted/40 rounded-lg p-0.5" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1859
1859
|
Button,
|
|
1860
1860
|
{
|
|
1861
1861
|
variant: "ghost",
|
|
@@ -1864,8 +1864,8 @@ var MiniCalendar = ({
|
|
|
1864
1864
|
onClick: handlePrev,
|
|
1865
1865
|
"aria-label": "Previous month"
|
|
1866
1866
|
},
|
|
1867
|
-
/* @__PURE__ */
|
|
1868
|
-
), /* @__PURE__ */
|
|
1867
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
1868
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1869
1869
|
Button,
|
|
1870
1870
|
{
|
|
1871
1871
|
variant: "ghost",
|
|
@@ -1874,12 +1874,12 @@ var MiniCalendar = ({
|
|
|
1874
1874
|
onClick: handleNext,
|
|
1875
1875
|
"aria-label": "Next month"
|
|
1876
1876
|
},
|
|
1877
|
-
/* @__PURE__ */
|
|
1878
|
-
))), /* @__PURE__ */
|
|
1877
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
1878
|
+
))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid grid-cols-7 gap-y-2 text-center mb-2" }, weekDays.map((day, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: `${day}-${i}`, className: "text-[10px] text-muted-foreground/70 font-semibold uppercase" }, day))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid grid-cols-7 gap-y-1 text-center" }, days.map((day) => {
|
|
1879
1879
|
const isSelected = dateFns.isSameDay(day, currentDate);
|
|
1880
1880
|
const isCurrentMonth = dateFns.isSameMonth(day, viewDate);
|
|
1881
1881
|
const isTodayDate = dateFns.isToday(day);
|
|
1882
|
-
return /* @__PURE__ */
|
|
1882
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1883
1883
|
"button",
|
|
1884
1884
|
{
|
|
1885
1885
|
key: day.toISOString(),
|
|
@@ -1919,12 +1919,12 @@ var Sidebar = ({
|
|
|
1919
1919
|
onCustomViewChange,
|
|
1920
1920
|
locale
|
|
1921
1921
|
}) => {
|
|
1922
|
-
const [calendarsOpen, setCalendarsOpen] =
|
|
1923
|
-
const [timezoneOpen, setTimezoneOpen] =
|
|
1924
|
-
const [now, setNow] =
|
|
1925
|
-
const [hasMounted, setHasMounted] =
|
|
1926
|
-
const [menusExpanded, setMenusExpanded] =
|
|
1927
|
-
|
|
1922
|
+
const [calendarsOpen, setCalendarsOpen] = React17.useState(true);
|
|
1923
|
+
const [timezoneOpen, setTimezoneOpen] = React17.useState(false);
|
|
1924
|
+
const [now, setNow] = React17.useState(null);
|
|
1925
|
+
const [hasMounted, setHasMounted] = React17.useState(false);
|
|
1926
|
+
const [menusExpanded, setMenusExpanded] = React17.useState(false);
|
|
1927
|
+
React17.useEffect(() => {
|
|
1928
1928
|
setHasMounted(true);
|
|
1929
1929
|
setNow(/* @__PURE__ */ new Date());
|
|
1930
1930
|
const timer = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
|
|
@@ -1961,7 +1961,7 @@ var Sidebar = ({
|
|
|
1961
1961
|
];
|
|
1962
1962
|
const formatTzLabel = (tz, showTime = true) => {
|
|
1963
1963
|
if (!hasMounted || !now || !showTime) {
|
|
1964
|
-
return /* @__PURE__ */
|
|
1964
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("span", null, tz.label);
|
|
1965
1965
|
}
|
|
1966
1966
|
let time = "";
|
|
1967
1967
|
let acronym = tz.acronym;
|
|
@@ -1981,29 +1981,29 @@ var Sidebar = ({
|
|
|
1981
1981
|
}
|
|
1982
1982
|
}
|
|
1983
1983
|
} catch (e) {
|
|
1984
|
-
return /* @__PURE__ */
|
|
1984
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("span", null, tz.label);
|
|
1985
1985
|
}
|
|
1986
|
-
return /* @__PURE__ */
|
|
1986
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex justify-between w-full" }, /* @__PURE__ */ React17__namespace.default.createElement("span", null, tz.label), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-muted-foreground ml-2 tabular-nums" }, time, " ", /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs opacity-75" }, "(", acronym, ")")));
|
|
1987
1987
|
};
|
|
1988
1988
|
const selectedTzObj = timezones.find((t) => t.value === (timezone || ""));
|
|
1989
1989
|
const selectedTimezoneLabel = selectedTzObj ? formatTzLabel(selectedTzObj) : translations?.localTime ?? "Local Time";
|
|
1990
|
-
return /* @__PURE__ */
|
|
1990
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn("flex flex-col w-[260px] overflow-x-hidden h-full bg-gradient-to-b scrollbar-hide from-background via-background to-muted/10 pt-4 pb-4 overflow-y-auto", className) }, sidebarMenus && sidebarMenus.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-4 mb-4" }, !menusExpanded && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
1991
1991
|
Button,
|
|
1992
1992
|
{
|
|
1993
1993
|
variant: "outline",
|
|
1994
1994
|
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",
|
|
1995
1995
|
onClick: () => setMenusExpanded(true)
|
|
1996
1996
|
},
|
|
1997
|
-
/* @__PURE__ */
|
|
1998
|
-
/* @__PURE__ */
|
|
1999
|
-
), menusExpanded && /* @__PURE__ */
|
|
1997
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.LayoutGrid, { className: "w-4 h-4" }),
|
|
1998
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", null, translations?.operations ?? "\u0130\u015Flemler")
|
|
1999
|
+
), menusExpanded && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "animate-in fade-in slide-in-from-top-2 duration-200" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between mb-2 px-1" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider" }, translations?.operations ?? "\u0130\u015Flemler"), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2000
2000
|
"button",
|
|
2001
2001
|
{
|
|
2002
2002
|
onClick: () => setMenusExpanded(false),
|
|
2003
2003
|
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"
|
|
2004
2004
|
},
|
|
2005
|
-
/* @__PURE__ */
|
|
2006
|
-
)), /* @__PURE__ */
|
|
2005
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.X, { className: "w-3.5 h-3.5" })
|
|
2006
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("nav", { className: "space-y-0.5" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2007
2007
|
"button",
|
|
2008
2008
|
{
|
|
2009
2009
|
onClick: () => {
|
|
@@ -2015,10 +2015,10 @@ var Sidebar = ({
|
|
|
2015
2015
|
activeCustomMenu === null ? "bg-primary/10 text-primary" : "text-muted-foreground hover:bg-accent/60 hover:text-foreground"
|
|
2016
2016
|
)
|
|
2017
2017
|
},
|
|
2018
|
-
/* @__PURE__ */
|
|
2019
|
-
/* @__PURE__ */
|
|
2020
|
-
activeCustomMenu === null && /* @__PURE__ */
|
|
2021
|
-
), sidebarMenus?.map((item) => /* @__PURE__ */
|
|
2018
|
+
/* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ React17__namespace.default.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ React17__namespace.default.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ React17__namespace.default.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" })),
|
|
2019
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", null, translations?.calendar ?? "Takvim"),
|
|
2020
|
+
activeCustomMenu === null && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "ml-auto w-1.5 h-1.5 rounded-full bg-primary" })
|
|
2021
|
+
), sidebarMenus?.map((item) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2022
2022
|
"button",
|
|
2023
2023
|
{
|
|
2024
2024
|
key: item.id,
|
|
@@ -2031,10 +2031,10 @@ var Sidebar = ({
|
|
|
2031
2031
|
activeCustomMenu === item.id ? "bg-primary/10 text-primary" : "text-muted-foreground hover:bg-accent/60 hover:text-foreground"
|
|
2032
2032
|
)
|
|
2033
2033
|
},
|
|
2034
|
-
item.icon && /* @__PURE__ */
|
|
2035
|
-
/* @__PURE__ */
|
|
2036
|
-
activeCustomMenu === item.id && /* @__PURE__ */
|
|
2037
|
-
))))), onEventCreate && /* @__PURE__ */
|
|
2034
|
+
item.icon && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "w-4 h-4 shrink-0 flex items-center justify-center" }, item.icon),
|
|
2035
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "truncate" }, item.label),
|
|
2036
|
+
activeCustomMenu === item.id && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "ml-auto w-1.5 h-1.5 rounded-full bg-primary" })
|
|
2037
|
+
))))), onEventCreate && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "md:hidden px-4 mb-4" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2038
2038
|
Button,
|
|
2039
2039
|
{
|
|
2040
2040
|
onClick: () => {
|
|
@@ -2042,9 +2042,9 @@ var Sidebar = ({
|
|
|
2042
2042
|
},
|
|
2043
2043
|
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"
|
|
2044
2044
|
},
|
|
2045
|
-
/* @__PURE__ */
|
|
2046
|
-
/* @__PURE__ */
|
|
2047
|
-
)), onReverseTimeChange && /* @__PURE__ */
|
|
2045
|
+
/* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React17__namespace.default.createElement("path", { d: "M12 5v14" })),
|
|
2046
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", null, translations?.createEvent ?? "Etkinlik Olu\u015Ftur")
|
|
2047
|
+
)), onReverseTimeChange && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-4 mb-4" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2048
2048
|
"button",
|
|
2049
2049
|
{
|
|
2050
2050
|
onClick: () => onReverseTimeChange(!reverseTime),
|
|
@@ -2053,33 +2053,33 @@ var Sidebar = ({
|
|
|
2053
2053
|
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"
|
|
2054
2054
|
)
|
|
2055
2055
|
},
|
|
2056
|
-
/* @__PURE__ */
|
|
2057
|
-
/* @__PURE__ */
|
|
2056
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2.5" }, /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement("line", { x1: "12", y1: "19", x2: "12", y2: "5" }), /* @__PURE__ */ React17__namespace.default.createElement("polyline", { points: "5 12 12 5 19 12" }), /* @__PURE__ */ React17__namespace.default.createElement("line", { x1: "12", y1: "5", x2: "12", y2: "19", className: "opacity-40" }), /* @__PURE__ */ React17__namespace.default.createElement("polyline", { points: "5 12 12 19 19 12", className: "opacity-40" })), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-left" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-xs font-semibold leading-tight" }, translations?.reverseTimeLabel ?? "Saat Y\xF6n\xFC"), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-[10px] leading-tight opacity-70 mt-0.5" }, reverseTime ? "23:00 \u2192 00:00" : "00:00 \u2192 23:00"))),
|
|
2057
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2058
2058
|
"relative w-9 h-5 rounded-full transition-colors duration-200 shrink-0",
|
|
2059
2059
|
reverseTime ? "bg-primary" : "bg-border"
|
|
2060
|
-
) }, /* @__PURE__ */
|
|
2060
|
+
) }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: cn(
|
|
2061
2061
|
"absolute top-0.5 w-4 h-4 bg-white rounded-full shadow-sm transition-all duration-200",
|
|
2062
2062
|
reverseTime ? "left-4" : "left-0.5"
|
|
2063
2063
|
) }))
|
|
2064
2064
|
)), renderMiniCalendar ? (
|
|
2065
2065
|
// Custom mini-calendar: receives the same props as the built-in one
|
|
2066
2066
|
renderMiniCalendar({ currentDate, onDateChange, onViewChange })
|
|
2067
|
-
) : /* @__PURE__ */
|
|
2067
|
+
) : /* @__PURE__ */ React17__namespace.default.createElement(MiniCalendar, { currentDate, onDateChange, onViewChange, locale }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 px-4 space-y-5 mt-5" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3 border-[0px] border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2068
2068
|
"div",
|
|
2069
2069
|
{
|
|
2070
2070
|
className: "flex items-center justify-between cursor-pointer hover:bg-accent/50 p-2 -m-1 rounded-xl mb-2 transition-all duration-200",
|
|
2071
2071
|
onClick: () => setCalendarsOpen(!calendarsOpen)
|
|
2072
2072
|
},
|
|
2073
|
-
/* @__PURE__ */
|
|
2074
|
-
/* @__PURE__ */
|
|
2075
|
-
), calendarsOpen && /* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.calendars),
|
|
2074
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", calendarsOpen && "rotate-180") })
|
|
2075
|
+
), calendarsOpen && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-1" }, displayCalendars.map((cal) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2076
2076
|
"div",
|
|
2077
2077
|
{
|
|
2078
2078
|
key: cal.id,
|
|
2079
2079
|
className: "flex items-center gap-3 py-2 px-2 hover:bg-accent/60 rounded-xl cursor-pointer group transition-all duration-200",
|
|
2080
2080
|
onClick: () => onCalendarToggle?.(cal.id, !(cal.active ?? true))
|
|
2081
2081
|
},
|
|
2082
|
-
/* @__PURE__ */
|
|
2082
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative flex items-center justify-center" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2083
2083
|
"input",
|
|
2084
2084
|
{
|
|
2085
2085
|
type: "checkbox",
|
|
@@ -2092,7 +2092,7 @@ var Sidebar = ({
|
|
|
2092
2092
|
style: { "--primary-color": cal.color },
|
|
2093
2093
|
"data-cal-id": cal.id
|
|
2094
2094
|
}
|
|
2095
|
-
), /* @__PURE__ */
|
|
2095
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none opacity-0 peer-checked:opacity-100 transition-opacity" }, /* @__PURE__ */ React17__namespace.default.createElement("svg", { className: "w-3.5 h-3.5 text-white", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 3 }, /* @__PURE__ */ React17__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ React17__namespace.default.createElement("style", null, `
|
|
2096
2096
|
input[type="checkbox"][data-cal-id="${cal.id}"]:checked {
|
|
2097
2097
|
background-color: ${cal.color} !important;
|
|
2098
2098
|
border-color: ${cal.color} !important;
|
|
@@ -2101,23 +2101,23 @@ var Sidebar = ({
|
|
|
2101
2101
|
--tw-ring-color: ${cal.color}40 !important;
|
|
2102
2102
|
}
|
|
2103
2103
|
`)),
|
|
2104
|
-
/* @__PURE__ */
|
|
2105
|
-
/* @__PURE__ */
|
|
2104
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 flex-1 min-w-0" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm text-foreground/90 truncate font-medium" }, cal.label)),
|
|
2105
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2106
2106
|
"div",
|
|
2107
2107
|
{
|
|
2108
2108
|
className: "w-2 h-2 rounded-full opacity-60 group-hover:opacity-100 transition-opacity",
|
|
2109
2109
|
style: { backgroundColor: cal.color }
|
|
2110
2110
|
}
|
|
2111
2111
|
)
|
|
2112
|
-
))))), /* @__PURE__ */
|
|
2112
|
+
))))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "mt-auto px-4 pt-5" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "bg-muted/20 rounded-2xl p-3" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 mb-3" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-1.5 bg-primary/10 rounded-lg" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Globe, { className: "w-4 h-4 text-primary" })), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-semibold text-foreground" }, translations?.timezone)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2113
2113
|
"button",
|
|
2114
2114
|
{
|
|
2115
2115
|
onClick: () => setTimezoneOpen(!timezoneOpen),
|
|
2116
2116
|
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"
|
|
2117
2117
|
},
|
|
2118
|
-
/* @__PURE__ */
|
|
2119
|
-
/* @__PURE__ */
|
|
2120
|
-
), timezoneOpen && /* @__PURE__ */
|
|
2118
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 truncate mr-2 font-medium" }, selectedTimezoneLabel),
|
|
2119
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform duration-200", timezoneOpen && "rotate-180") })
|
|
2120
|
+
), timezoneOpen && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setTimezoneOpen(false) }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute bottom-full left-0 w-full mb-2 bg-background rounded-xl shadow-2xl z-50 max-h-[260px] overflow-y-auto p-1.5 animate-in fade-in zoom-in-95 duration-200 backdrop-blur-none" }, timezones.map((tz) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2121
2121
|
"div",
|
|
2122
2122
|
{
|
|
2123
2123
|
key: tz.value,
|
|
@@ -2150,7 +2150,7 @@ var DraggableEvent = ({ event, children, className, style: propStyle, ...props }
|
|
|
2150
2150
|
opacity: isDragging ? 0 : propStyle?.opacity
|
|
2151
2151
|
// Hiding original element completely
|
|
2152
2152
|
};
|
|
2153
|
-
return /* @__PURE__ */
|
|
2153
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2154
2154
|
"div",
|
|
2155
2155
|
{
|
|
2156
2156
|
ref: setNodeRef,
|
|
@@ -2171,7 +2171,7 @@ var DroppableCell = ({ id, date, resourceId, children, className, style, onClick
|
|
|
2171
2171
|
const minutes = date.getMinutes();
|
|
2172
2172
|
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";
|
|
2173
2173
|
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";
|
|
2174
|
-
return /* @__PURE__ */
|
|
2174
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2175
2175
|
"div",
|
|
2176
2176
|
{
|
|
2177
2177
|
ref: setNodeRef,
|
|
@@ -2188,7 +2188,7 @@ var DroppableCell = ({ id, date, resourceId, children, className, style, onClick
|
|
|
2188
2188
|
};
|
|
2189
2189
|
|
|
2190
2190
|
// src/views/MonthView.tsx
|
|
2191
|
-
var EventItem =
|
|
2191
|
+
var EventItem = React17__namespace.default.memo(({ event, onEventClick }) => /* @__PURE__ */ React17__namespace.default.createElement(DraggableEvent, { event }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2192
2192
|
"div",
|
|
2193
2193
|
{
|
|
2194
2194
|
className: cn(
|
|
@@ -2206,7 +2206,7 @@ var EventItem = React15__namespace.default.memo(({ event, onEventClick }) => /*
|
|
|
2206
2206
|
onEventClick?.(event);
|
|
2207
2207
|
}
|
|
2208
2208
|
},
|
|
2209
|
-
/* @__PURE__ */
|
|
2209
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "font-medium" }, event.title)
|
|
2210
2210
|
)));
|
|
2211
2211
|
EventItem.displayName = "EventItem";
|
|
2212
2212
|
var MonthView = ({
|
|
@@ -2217,16 +2217,16 @@ var MonthView = ({
|
|
|
2217
2217
|
timezone,
|
|
2218
2218
|
locale
|
|
2219
2219
|
}) => {
|
|
2220
|
-
const days =
|
|
2221
|
-
const weekDays =
|
|
2220
|
+
const days = React17.useMemo(() => getMonthGrid(currentDate), [currentDate]);
|
|
2221
|
+
const weekDays = React17.useMemo(() => {
|
|
2222
2222
|
const start = dateFns.startOfWeek(currentDate, { weekStartsOn: 1 });
|
|
2223
2223
|
const end = dateFns.endOfWeek(currentDate, { weekStartsOn: 1 });
|
|
2224
2224
|
return dateFns.eachDayOfInterval({ start, end });
|
|
2225
2225
|
}, [currentDate]);
|
|
2226
|
-
const getZonedDate =
|
|
2226
|
+
const getZonedDate = React17.useCallback((date) => {
|
|
2227
2227
|
return timezone ? dateFnsTz.toZonedTime(date, timezone) : date;
|
|
2228
2228
|
}, [timezone]);
|
|
2229
|
-
const eventsByDay =
|
|
2229
|
+
const eventsByDay = React17.useMemo(() => {
|
|
2230
2230
|
const map = /* @__PURE__ */ new Map();
|
|
2231
2231
|
events.forEach((event) => {
|
|
2232
2232
|
const zonedStart = getZonedDate(event.start);
|
|
@@ -2238,19 +2238,19 @@ var MonthView = ({
|
|
|
2238
2238
|
});
|
|
2239
2239
|
return map;
|
|
2240
2240
|
}, [events, getZonedDate]);
|
|
2241
|
-
return /* @__PURE__ */
|
|
2241
|
+
return /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement("div", { className: "overflow-y-auto flex-1 min-h-0 relative" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid grid-cols-7 border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/30 via-muted/40 to-muted/30 sticky top-0 z-20 backdrop-blur-sm" }, weekDays.map((day) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2242
2242
|
"div",
|
|
2243
2243
|
{
|
|
2244
2244
|
key: day.toISOString(),
|
|
2245
2245
|
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"
|
|
2246
2246
|
},
|
|
2247
2247
|
dateFns.format(day, "EEE", { locale })
|
|
2248
|
-
))), /* @__PURE__ */
|
|
2248
|
+
))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid grid-cols-7", style: { gridAutoRows: "130px" } }, days.map((day) => {
|
|
2249
2249
|
const dayKey = dateFns.format(day, "yyyy-MM-dd");
|
|
2250
2250
|
const dayEvents = eventsByDay.get(dayKey) || [];
|
|
2251
2251
|
const isCurrentMonth = dateFns.isSameMonth(day, currentDate);
|
|
2252
2252
|
const cellId = day.toISOString();
|
|
2253
|
-
return /* @__PURE__ */
|
|
2253
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2254
2254
|
DroppableCell,
|
|
2255
2255
|
{
|
|
2256
2256
|
key: cellId,
|
|
@@ -2263,11 +2263,11 @@ var MonthView = ({
|
|
|
2263
2263
|
),
|
|
2264
2264
|
onClick: () => onDateClick?.(day)
|
|
2265
2265
|
},
|
|
2266
|
-
/* @__PURE__ */
|
|
2266
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex justify-between items-start" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2267
2267
|
"text-sm font-semibold w-7 h-7 flex items-center justify-center rounded-full transition-all duration-200",
|
|
2268
2268
|
dateFns.isToday(day) ? "bg-primary text-primary-foreground shadow-md shadow-primary/30" : "group-hover:bg-accent"
|
|
2269
|
-
) }, dateFns.format(day, "d", { locale })), dayEvents.length > 0 && /* @__PURE__ */
|
|
2270
|
-
/* @__PURE__ */
|
|
2269
|
+
) }, dateFns.format(day, "d", { locale })), dayEvents.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-[10px] font-medium text-muted-foreground/60 bg-muted/50 px-1.5 py-0.5 rounded-full" }, dayEvents.length)),
|
|
2270
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 flex flex-col gap-1 scrollbar-hide overflow-y-auto overflow-x-hidden" }, dayEvents.slice(0, 4).map((event) => /* @__PURE__ */ React17__namespace.default.createElement(EventItem, { key: `${event.id}-${dayKey}`, event, onEventClick })), dayEvents.length > 4 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-[10px] text-primary font-semibold text-center py-1 px-2 rounded-md bg-primary/5 hover:bg-primary/10 cursor-pointer transition-colors" }, "+", dayEvents.length - 4, " more"))
|
|
2271
2271
|
);
|
|
2272
2272
|
}))));
|
|
2273
2273
|
};
|
|
@@ -2281,12 +2281,12 @@ var ResizableEvent = ({
|
|
|
2281
2281
|
style,
|
|
2282
2282
|
readonly
|
|
2283
2283
|
}) => {
|
|
2284
|
-
const [isResizing, setIsResizing] =
|
|
2285
|
-
const [resizeHeight, setResizeHeight] =
|
|
2286
|
-
const containerRef =
|
|
2287
|
-
const startYRef =
|
|
2288
|
-
const startHeightRef =
|
|
2289
|
-
const handleResizeStart =
|
|
2284
|
+
const [isResizing, setIsResizing] = React17.useState(false);
|
|
2285
|
+
const [resizeHeight, setResizeHeight] = React17.useState(null);
|
|
2286
|
+
const containerRef = React17.useRef(null);
|
|
2287
|
+
const startYRef = React17.useRef(0);
|
|
2288
|
+
const startHeightRef = React17.useRef(0);
|
|
2289
|
+
const handleResizeStart = React17.useCallback((e) => {
|
|
2290
2290
|
e.preventDefault();
|
|
2291
2291
|
e.stopPropagation();
|
|
2292
2292
|
const clientY = "touches" in e ? e.touches[0].clientY : e.clientY;
|
|
@@ -2328,7 +2328,7 @@ var ResizableEvent = ({
|
|
|
2328
2328
|
document.addEventListener("touchmove", handleMove, { passive: false });
|
|
2329
2329
|
document.addEventListener("touchend", handleEnd);
|
|
2330
2330
|
}, [event, hourHeight, minDuration, onResize, resizeHeight]);
|
|
2331
|
-
return /* @__PURE__ */
|
|
2331
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2332
2332
|
"div",
|
|
2333
2333
|
{
|
|
2334
2334
|
ref: containerRef,
|
|
@@ -2339,7 +2339,7 @@ var ResizableEvent = ({
|
|
|
2339
2339
|
}
|
|
2340
2340
|
},
|
|
2341
2341
|
children,
|
|
2342
|
-
/* @__PURE__ */
|
|
2342
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2343
2343
|
"div",
|
|
2344
2344
|
{
|
|
2345
2345
|
className: cn(
|
|
@@ -2351,14 +2351,122 @@ var ResizableEvent = ({
|
|
|
2351
2351
|
onMouseDown: readonly ? void 0 : handleResizeStart,
|
|
2352
2352
|
onTouchStart: readonly ? void 0 : handleResizeStart
|
|
2353
2353
|
},
|
|
2354
|
-
/* @__PURE__ */
|
|
2354
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2355
2355
|
"w-8 h-1 rounded-full transition-all",
|
|
2356
2356
|
isResizing ? "bg-primary" : "bg-muted-foreground/30 group-hover:bg-primary/50"
|
|
2357
2357
|
) })
|
|
2358
2358
|
),
|
|
2359
|
-
isResizing && /* @__PURE__ */
|
|
2359
|
+
isResizing && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute inset-0 border-2 border-primary border-dashed rounded-md pointer-events-none bg-primary/5" })
|
|
2360
2360
|
);
|
|
2361
2361
|
};
|
|
2362
|
+
var EventCardBadge = ({
|
|
2363
|
+
badge,
|
|
2364
|
+
compact = false,
|
|
2365
|
+
className
|
|
2366
|
+
}) => {
|
|
2367
|
+
if (!badge?.icon || !badge?.name) return null;
|
|
2368
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2369
|
+
"div",
|
|
2370
|
+
{
|
|
2371
|
+
className: cn(
|
|
2372
|
+
// Pin to the card's top-left corner above content
|
|
2373
|
+
"absolute top-0 left-0 z-10 flex items-center gap-0.5 max-w-[calc(100%-4px)]",
|
|
2374
|
+
"rounded-br-md bg-background/85 backdrop-blur-sm border-b border-r border-border/40",
|
|
2375
|
+
"px-1 py-0.5 text-[9px] font-semibold leading-none text-foreground/80",
|
|
2376
|
+
"pointer-events-none select-none",
|
|
2377
|
+
className
|
|
2378
|
+
),
|
|
2379
|
+
title: badge.name
|
|
2380
|
+
},
|
|
2381
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "shrink-0 flex items-center justify-center [&>svg]:w-2.5 [&>svg]:h-2.5" }, badge.icon),
|
|
2382
|
+
!compact && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "truncate max-w-[72px]" }, badge.name)
|
|
2383
|
+
);
|
|
2384
|
+
};
|
|
2385
|
+
var ICON_CLASS = "w-2.5 h-2.5";
|
|
2386
|
+
var EVENT_BADGE_ICONS = {
|
|
2387
|
+
privateLesson: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.User, { className: ICON_CLASS }),
|
|
2388
|
+
groupLesson: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Users, { className: ICON_CLASS }),
|
|
2389
|
+
packageLesson: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Package, { className: ICON_CLASS }),
|
|
2390
|
+
online: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Video, { className: ICON_CLASS }),
|
|
2391
|
+
inPerson: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.MapPin, { className: ICON_CLASS }),
|
|
2392
|
+
homeVisit: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Home, { className: ICON_CLASS }),
|
|
2393
|
+
trial: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Sparkles, { className: ICON_CLASS }),
|
|
2394
|
+
makeup: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.RefreshCw, { className: ICON_CLASS }),
|
|
2395
|
+
exam: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ClipboardCheck, { className: ICON_CLASS }),
|
|
2396
|
+
workshop: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Presentation, { className: ICON_CLASS }),
|
|
2397
|
+
priority: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Star, { className: ICON_CLASS }),
|
|
2398
|
+
holiday: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.PartyPopper, { className: ICON_CLASS }),
|
|
2399
|
+
cancelled: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Ban, { className: ICON_CLASS }),
|
|
2400
|
+
listening: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Headphones, { className: ICON_CLASS })
|
|
2401
|
+
};
|
|
2402
|
+
var EVENT_BADGE_LABELS = {
|
|
2403
|
+
tr: {
|
|
2404
|
+
privateLesson: "\xD6zel Ders",
|
|
2405
|
+
groupLesson: "Grup Ders",
|
|
2406
|
+
packageLesson: "Paket Ders",
|
|
2407
|
+
online: "Online",
|
|
2408
|
+
inPerson: "Y\xFCz Y\xFCze",
|
|
2409
|
+
homeVisit: "Evde",
|
|
2410
|
+
trial: "Deneme",
|
|
2411
|
+
makeup: "Telafi",
|
|
2412
|
+
exam: "S\u0131nav",
|
|
2413
|
+
workshop: "Workshop",
|
|
2414
|
+
priority: "\xD6ncelikli",
|
|
2415
|
+
holiday: "Tatil",
|
|
2416
|
+
cancelled: "\u0130ptal",
|
|
2417
|
+
listening: "Dinleme"
|
|
2418
|
+
},
|
|
2419
|
+
en: {
|
|
2420
|
+
privateLesson: "Private",
|
|
2421
|
+
groupLesson: "Group",
|
|
2422
|
+
packageLesson: "Package",
|
|
2423
|
+
online: "Online",
|
|
2424
|
+
inPerson: "In Person",
|
|
2425
|
+
homeVisit: "At Home",
|
|
2426
|
+
trial: "Trial",
|
|
2427
|
+
makeup: "Makeup",
|
|
2428
|
+
exam: "Exam",
|
|
2429
|
+
workshop: "Workshop",
|
|
2430
|
+
priority: "Priority",
|
|
2431
|
+
holiday: "Holiday",
|
|
2432
|
+
cancelled: "Cancelled",
|
|
2433
|
+
listening: "Listening"
|
|
2434
|
+
}
|
|
2435
|
+
};
|
|
2436
|
+
var resolveLabelLang = (language) => language === "tr" ? "tr" : "en";
|
|
2437
|
+
function isBuiltInEventBadgeId(id) {
|
|
2438
|
+
return Object.prototype.hasOwnProperty.call(EVENT_BADGE_ICONS, id);
|
|
2439
|
+
}
|
|
2440
|
+
function getEventBadge(id, language = "tr", name) {
|
|
2441
|
+
const lang = resolveLabelLang(language);
|
|
2442
|
+
return {
|
|
2443
|
+
icon: EVENT_BADGE_ICONS[id],
|
|
2444
|
+
name: name ?? EVENT_BADGE_LABELS[lang][id]
|
|
2445
|
+
};
|
|
2446
|
+
}
|
|
2447
|
+
function resolveEventBadge(event, language = "tr") {
|
|
2448
|
+
if (event.badge?.icon && event.badge?.name) return event.badge;
|
|
2449
|
+
if (event.badgeId && isBuiltInEventBadgeId(event.badgeId)) {
|
|
2450
|
+
return getEventBadge(event.badgeId, language);
|
|
2451
|
+
}
|
|
2452
|
+
return void 0;
|
|
2453
|
+
}
|
|
2454
|
+
var EVENT_BADGES = {
|
|
2455
|
+
privateLesson: getEventBadge("privateLesson", "tr"),
|
|
2456
|
+
groupLesson: getEventBadge("groupLesson", "tr"),
|
|
2457
|
+
packageLesson: getEventBadge("packageLesson", "tr"),
|
|
2458
|
+
online: getEventBadge("online", "tr"),
|
|
2459
|
+
inPerson: getEventBadge("inPerson", "tr"),
|
|
2460
|
+
homeVisit: getEventBadge("homeVisit", "tr"),
|
|
2461
|
+
trial: getEventBadge("trial", "tr"),
|
|
2462
|
+
makeup: getEventBadge("makeup", "tr"),
|
|
2463
|
+
exam: getEventBadge("exam", "tr"),
|
|
2464
|
+
workshop: getEventBadge("workshop", "tr"),
|
|
2465
|
+
priority: getEventBadge("priority", "tr"),
|
|
2466
|
+
holiday: getEventBadge("holiday", "tr"),
|
|
2467
|
+
cancelled: getEventBadge("cancelled", "tr"),
|
|
2468
|
+
listening: getEventBadge("listening", "tr")
|
|
2469
|
+
};
|
|
2362
2470
|
|
|
2363
2471
|
// src/views/WeekView.tsx
|
|
2364
2472
|
var WeekView = ({
|
|
@@ -2379,13 +2487,13 @@ var WeekView = ({
|
|
|
2379
2487
|
const weekDays = dateFns.eachDayOfInterval({ start, end });
|
|
2380
2488
|
const hours = reverseTime ? Array.from({ length: 24 }, (_, i) => 23 - i) : Array.from({ length: 24 }, (_, i) => i);
|
|
2381
2489
|
const hourHeight = 60;
|
|
2382
|
-
const scrollContainerRef =
|
|
2383
|
-
const [now, setNow] =
|
|
2384
|
-
|
|
2490
|
+
const scrollContainerRef = React17__namespace.default.useRef(null);
|
|
2491
|
+
const [now, setNow] = React17__namespace.default.useState(/* @__PURE__ */ new Date());
|
|
2492
|
+
React17__namespace.default.useEffect(() => {
|
|
2385
2493
|
const interval = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
|
|
2386
2494
|
return () => clearInterval(interval);
|
|
2387
2495
|
}, []);
|
|
2388
|
-
|
|
2496
|
+
React17__namespace.default.useEffect(() => {
|
|
2389
2497
|
if (scrollContainerRef.current) {
|
|
2390
2498
|
scrollContainerRef.current.scrollTop = reverseTime ? (23 - initialScrollHour) * hourHeight : initialScrollHour * hourHeight;
|
|
2391
2499
|
}
|
|
@@ -2415,44 +2523,44 @@ var WeekView = ({
|
|
|
2415
2523
|
acronym = tz;
|
|
2416
2524
|
}
|
|
2417
2525
|
}
|
|
2418
|
-
return /* @__PURE__ */
|
|
2526
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col items-center justify-center leading-tight" }, /* @__PURE__ */ React17__namespace.default.createElement("span", null, displayTime), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-[10px] opacity-75" }, "(", acronym, ")"));
|
|
2419
2527
|
};
|
|
2420
2528
|
const timeFormat = getTimeFormat(language);
|
|
2421
2529
|
const eventTimeFormat = getTimeFormatFull(language);
|
|
2422
2530
|
const nowFormat = getTimeFormatFull(language);
|
|
2423
|
-
return /* @__PURE__ */
|
|
2531
|
+
return /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement(
|
|
2424
2532
|
"div",
|
|
2425
2533
|
{
|
|
2426
2534
|
ref: scrollContainerRef,
|
|
2427
2535
|
className: "flex-1 min-h-0 overflow-y-auto scrollbar-hide relative bg-background scroll-smooth",
|
|
2428
2536
|
style: { scrollbarGutter: "stable" }
|
|
2429
2537
|
},
|
|
2430
|
-
/* @__PURE__ */
|
|
2538
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/20 via-background to-muted/20 z-20 sticky top-0 backdrop-blur-sm" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-none p-3 text-center text-xs font-semibold text-muted-foreground w-16 flex items-center justify-center border-r-[0.5px] border-border/30 bg-muted/10" }, getTimezoneDisplay(timezone)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7" }, weekDays.map((day, index) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: day.toISOString(), className: cn("py-3 px-2 text-center", index > 0 && "border-l-[0.5px] border-border/30") }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1.5" }, dateFns.format(day, "EEE", { locale })), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2431
2539
|
"w-9 h-9 flex items-center justify-center rounded-xl mx-auto text-sm font-semibold transition-all duration-200",
|
|
2432
2540
|
dateFns.isToday(day) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30 scale-110" : "text-foreground hover:bg-accent/80"
|
|
2433
2541
|
) }, dateFns.format(day, "d", { locale })))))),
|
|
2434
|
-
/* @__PURE__ */
|
|
2542
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2435
2543
|
"div",
|
|
2436
2544
|
{
|
|
2437
2545
|
className: "flex min-w-full relative",
|
|
2438
2546
|
style: { height: hours.length * hourHeight }
|
|
2439
2547
|
},
|
|
2440
|
-
/* @__PURE__ */
|
|
2548
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-none w-16 border-r-[0.5px] border-border/30 relative bg-muted/5" }, hours.map((hour) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2441
2549
|
"div",
|
|
2442
2550
|
{
|
|
2443
2551
|
key: hour,
|
|
2444
2552
|
className: "relative w-full text-[11px] text-muted-foreground/80 text-right pr-3 font-medium tabular-nums box-border",
|
|
2445
2553
|
style: { height: hourHeight }
|
|
2446
2554
|
},
|
|
2447
|
-
/* @__PURE__ */
|
|
2555
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "block -translate-y-1/2" }, hour !== 0 && dateFns.format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
|
|
2448
2556
|
))),
|
|
2449
|
-
/* @__PURE__ */
|
|
2557
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, weekDays.map((day, dayIndex) => {
|
|
2450
2558
|
const dayEvents = events.filter((e) => {
|
|
2451
2559
|
const zonedStart = getZonedDate(e.start);
|
|
2452
2560
|
return dateFns.isSameDay(zonedStart, day);
|
|
2453
2561
|
});
|
|
2454
|
-
return /* @__PURE__ */
|
|
2455
|
-
return /* @__PURE__ */
|
|
2562
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { key: day.toISOString(), className: cn("relative h-full", dayIndex > 0 && "border-l-[0.5px] border-border/30") }, hours.map((hour) => {
|
|
2563
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2456
2564
|
"div",
|
|
2457
2565
|
{
|
|
2458
2566
|
key: hour,
|
|
@@ -2463,7 +2571,7 @@ var WeekView = ({
|
|
|
2463
2571
|
const cellDate = new Date(day);
|
|
2464
2572
|
cellDate.setHours(hour, minute, 0, 0);
|
|
2465
2573
|
const cellId = cellDate.toISOString();
|
|
2466
|
-
return /* @__PURE__ */
|
|
2574
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2467
2575
|
DroppableCell,
|
|
2468
2576
|
{
|
|
2469
2577
|
key: minute,
|
|
@@ -2475,7 +2583,7 @@ var WeekView = ({
|
|
|
2475
2583
|
top: `${minute / 60 * 100}%`
|
|
2476
2584
|
}
|
|
2477
2585
|
},
|
|
2478
|
-
/* @__PURE__ */
|
|
2586
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2479
2587
|
"div",
|
|
2480
2588
|
{
|
|
2481
2589
|
className: "w-full h-full bg-transparent cursor-pointer",
|
|
@@ -2509,7 +2617,9 @@ var WeekView = ({
|
|
|
2509
2617
|
const height = durationMinutes / 60 * hourHeight;
|
|
2510
2618
|
const top = reverseTime ? (1440 - startMinutes - durationMinutes) / 60 * hourHeight : startMinutes / 60 * hourHeight;
|
|
2511
2619
|
const isShortEvent = durationMinutes < 60;
|
|
2512
|
-
|
|
2620
|
+
const resolvedBadge = resolveEventBadge(event, language);
|
|
2621
|
+
const hasBadge = Boolean(resolvedBadge);
|
|
2622
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2513
2623
|
DraggableEvent,
|
|
2514
2624
|
{
|
|
2515
2625
|
key: `${event.id}-${day.toISOString()}`,
|
|
@@ -2524,7 +2634,7 @@ var WeekView = ({
|
|
|
2524
2634
|
paddingRight: count > 1 ? "2px" : "0"
|
|
2525
2635
|
}
|
|
2526
2636
|
},
|
|
2527
|
-
/* @__PURE__ */
|
|
2637
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2528
2638
|
ResizableEvent,
|
|
2529
2639
|
{
|
|
2530
2640
|
readonly,
|
|
@@ -2534,7 +2644,7 @@ var WeekView = ({
|
|
|
2534
2644
|
className: "h-full",
|
|
2535
2645
|
style: { height: "100%" }
|
|
2536
2646
|
},
|
|
2537
|
-
/* @__PURE__ */
|
|
2647
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2538
2648
|
"div",
|
|
2539
2649
|
{
|
|
2540
2650
|
className: cn(
|
|
@@ -2543,6 +2653,8 @@ var WeekView = ({
|
|
|
2543
2653
|
readonly ? "cursor-default" : "cursor-grab active:cursor-grabbing",
|
|
2544
2654
|
!event.color && "border-primary/20 bg-primary/10",
|
|
2545
2655
|
isShortEvent ? "px-1 flex items-center justify-center" : "p-2",
|
|
2656
|
+
// Reserve space under the badge so title/time do not overlap
|
|
2657
|
+
hasBadge && !isShortEvent && "pt-4",
|
|
2546
2658
|
// Add active border for overlapped events to distinguish them
|
|
2547
2659
|
count > 1 && "border-l-4 border-l-primary/50"
|
|
2548
2660
|
),
|
|
@@ -2559,14 +2671,21 @@ var WeekView = ({
|
|
|
2559
2671
|
},
|
|
2560
2672
|
title: count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
|
|
2561
2673
|
},
|
|
2562
|
-
|
|
2674
|
+
resolvedBadge && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2675
|
+
EventCardBadge,
|
|
2676
|
+
{
|
|
2677
|
+
badge: resolvedBadge,
|
|
2678
|
+
compact: isShortEvent
|
|
2679
|
+
}
|
|
2680
|
+
),
|
|
2681
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2563
2682
|
"font-semibold truncate text-foreground/90 leading-tight",
|
|
2564
2683
|
isShortEvent ? "text-xs text-center" : "text-xs"
|
|
2565
|
-
) }, event.title), !isShortEvent && /* @__PURE__ */
|
|
2684
|
+
) }, event.title), !isShortEvent && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-[10px] text-muted-foreground truncate mt-0.5 font-medium leading-tight" }, dateFns.format(zonedEventStart, eventTimeFormat, { locale }), " - ", dateFns.format(zonedEventEnd, eventTimeFormat, { locale })), event.description && height > 50 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-[10px] text-muted-foreground/80 truncate mt-1 leading-tight opacity-80" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute top-1 right-1 bg-background/80 backdrop-blur-sm rounded-full w-4 h-4 flex items-center justify-center text-[9px] font-bold text-muted-foreground border border-border shadow-sm" }, count))
|
|
2566
2685
|
)
|
|
2567
2686
|
)
|
|
2568
2687
|
);
|
|
2569
|
-
}), dateFns.isToday(day) && /* @__PURE__ */
|
|
2688
|
+
}), dateFns.isToday(day) && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2570
2689
|
"div",
|
|
2571
2690
|
{
|
|
2572
2691
|
className: "absolute left-0 right-0 z-20 pointer-events-none flex items-center",
|
|
@@ -2574,12 +2693,12 @@ var WeekView = ({
|
|
|
2574
2693
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
|
|
2575
2694
|
}
|
|
2576
2695
|
},
|
|
2577
|
-
/* @__PURE__ */
|
|
2578
|
-
/* @__PURE__ */
|
|
2696
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
|
|
2697
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute -left-1.5 w-3 h-3 bg-primary rounded-full shadow-lg shadow-primary/40 ring-2 ring-background animate-pulse" })
|
|
2579
2698
|
));
|
|
2580
2699
|
}))
|
|
2581
2700
|
),
|
|
2582
|
-
/* @__PURE__ */
|
|
2701
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2583
2702
|
"div",
|
|
2584
2703
|
{
|
|
2585
2704
|
className: "absolute left-0 w-16 pointer-events-none z-30 flex justify-end pr-2",
|
|
@@ -2587,7 +2706,7 @@ var WeekView = ({
|
|
|
2587
2706
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight + 80}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight + 80}px`
|
|
2588
2707
|
}
|
|
2589
2708
|
},
|
|
2590
|
-
/* @__PURE__ */
|
|
2709
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-[10px] font-bold text-primary-foreground bg-primary px-1.5 py-0.5 rounded-md shadow-md -translate-y-1/2 backdrop-blur-none" }, dateFns.format(zonedNow, nowFormat, { locale }))
|
|
2591
2710
|
)
|
|
2592
2711
|
));
|
|
2593
2712
|
};
|
|
@@ -2606,13 +2725,13 @@ var DayView = ({
|
|
|
2606
2725
|
}) => {
|
|
2607
2726
|
const hours = reverseTime ? Array.from({ length: 24 }, (_, i) => 23 - i) : Array.from({ length: 24 }, (_, i) => i);
|
|
2608
2727
|
const hourHeight = 80;
|
|
2609
|
-
const scrollContainerRef =
|
|
2610
|
-
const [now, setNow] =
|
|
2611
|
-
|
|
2728
|
+
const scrollContainerRef = React17__namespace.default.useRef(null);
|
|
2729
|
+
const [now, setNow] = React17__namespace.default.useState(/* @__PURE__ */ new Date());
|
|
2730
|
+
React17__namespace.default.useEffect(() => {
|
|
2612
2731
|
const interval = setInterval(() => setNow(/* @__PURE__ */ new Date()), 6e4);
|
|
2613
2732
|
return () => clearInterval(interval);
|
|
2614
2733
|
}, []);
|
|
2615
|
-
|
|
2734
|
+
React17__namespace.default.useEffect(() => {
|
|
2616
2735
|
if (scrollContainerRef.current) {
|
|
2617
2736
|
scrollContainerRef.current.scrollTop = reverseTime ? (23 - initialScrollHour) * hourHeight : initialScrollHour * hourHeight;
|
|
2618
2737
|
}
|
|
@@ -2628,15 +2747,15 @@ var DayView = ({
|
|
|
2628
2747
|
const timeFormat = getTimeFormat(language);
|
|
2629
2748
|
const eventTimeFormat = getTimeFormatFull(language);
|
|
2630
2749
|
const nowFormat = getTimeFormatFull(language);
|
|
2631
|
-
return /* @__PURE__ */
|
|
2750
|
+
return /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement("div", { className: "px-6 py-4 border-b-[0.5px] border-border/50 bg-gradient-to-r from-muted/20 via-background to-muted/20 text-center shrink-0" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-center gap-3" }, /* @__PURE__ */ React17__namespace.default.createElement("h2", { className: "text-xl font-semibold capitalize text-foreground" }, dateFns.format(currentDate, "EEEE, MMMM d, yyyy", { locale })), dateFns.isToday(currentDate) && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-semibold bg-primary text-primary-foreground px-3 py-1 rounded-full shadow-md shadow-primary/20" }, "Today"))), /* @__PURE__ */ React17__namespace.default.createElement("div", { ref: scrollContainerRef, className: "flex-1 min-h-0 overflow-y-auto relative" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex relative", style: { height: hours.length * hourHeight } }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-20 bg-muted/5 border-r-[0.5px] border-border/30 relative" }, hours.map((hour) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2632
2751
|
"div",
|
|
2633
2752
|
{
|
|
2634
2753
|
key: hour,
|
|
2635
2754
|
className: "relative w-full",
|
|
2636
2755
|
style: { height: hourHeight }
|
|
2637
2756
|
},
|
|
2638
|
-
hour !== 0 && /* @__PURE__ */
|
|
2639
|
-
)), dateFns.isToday(currentDate) && /* @__PURE__ */
|
|
2757
|
+
hour !== 0 && /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "absolute w-full text-center -top-3 left-1/2 -translate-x-1/2 text-[11px] text-muted-foreground/80 font-medium tabular-nums bg-background px-1.5 py-0.5 rounded-md" }, dateFns.format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale }))
|
|
2758
|
+
)), dateFns.isToday(currentDate) && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2640
2759
|
"div",
|
|
2641
2760
|
{
|
|
2642
2761
|
className: "absolute left-0 w-full pointer-events-none z-30 flex justify-end pr-2",
|
|
@@ -2644,9 +2763,9 @@ var DayView = ({
|
|
|
2644
2763
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
|
|
2645
2764
|
}
|
|
2646
2765
|
},
|
|
2647
|
-
/* @__PURE__ */
|
|
2648
|
-
)), /* @__PURE__ */
|
|
2649
|
-
return /* @__PURE__ */
|
|
2766
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-[10px] font-bold text-white bg-primary px-2 py-1 rounded-lg shadow-md shadow-primary/30 -translate-y-1/2" }, dateFns.format(zonedNow, nowFormat, { locale }))
|
|
2767
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 relative" }, hours.map((hour) => {
|
|
2768
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2650
2769
|
"div",
|
|
2651
2770
|
{
|
|
2652
2771
|
key: hour,
|
|
@@ -2657,7 +2776,7 @@ var DayView = ({
|
|
|
2657
2776
|
const cellDate = new Date(currentDate);
|
|
2658
2777
|
cellDate.setHours(hour, minute, 0, 0);
|
|
2659
2778
|
const cellId = cellDate.toISOString();
|
|
2660
|
-
return /* @__PURE__ */
|
|
2779
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2661
2780
|
DroppableCell,
|
|
2662
2781
|
{
|
|
2663
2782
|
key: minute,
|
|
@@ -2669,7 +2788,7 @@ var DayView = ({
|
|
|
2669
2788
|
top: `${minute / 60 * 100}%`
|
|
2670
2789
|
}
|
|
2671
2790
|
},
|
|
2672
|
-
/* @__PURE__ */
|
|
2791
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2673
2792
|
"div",
|
|
2674
2793
|
{
|
|
2675
2794
|
className: "h-full w-full bg-transparent cursor-pointer",
|
|
@@ -2702,7 +2821,7 @@ var DayView = ({
|
|
|
2702
2821
|
const height = durationMinutes / 60 * hourHeight;
|
|
2703
2822
|
const top = reverseTime ? (1440 - startMinutes - durationMinutes) / 60 * hourHeight : startMinutes / 60 * hourHeight;
|
|
2704
2823
|
const isShortEvent = durationMinutes < 45;
|
|
2705
|
-
return /* @__PURE__ */
|
|
2824
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2706
2825
|
DraggableEvent,
|
|
2707
2826
|
{
|
|
2708
2827
|
key: `${event.id}-${currentDate.toISOString()}`,
|
|
@@ -2716,7 +2835,7 @@ var DayView = ({
|
|
|
2716
2835
|
paddingRight: count > 1 ? "2px" : "0"
|
|
2717
2836
|
}
|
|
2718
2837
|
},
|
|
2719
|
-
/* @__PURE__ */
|
|
2838
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2720
2839
|
ResizableEvent,
|
|
2721
2840
|
{
|
|
2722
2841
|
readonly,
|
|
@@ -2726,7 +2845,7 @@ var DayView = ({
|
|
|
2726
2845
|
className: "h-full",
|
|
2727
2846
|
style: { height: "100%" }
|
|
2728
2847
|
},
|
|
2729
|
-
/* @__PURE__ */
|
|
2848
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2730
2849
|
"div",
|
|
2731
2850
|
{
|
|
2732
2851
|
className: cn(
|
|
@@ -2749,15 +2868,15 @@ var DayView = ({
|
|
|
2749
2868
|
},
|
|
2750
2869
|
title: count > 1 ? `${event.title} (${index + 1}/${count})` : void 0
|
|
2751
2870
|
},
|
|
2752
|
-
/* @__PURE__ */
|
|
2871
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col h-full overflow-hidden w-full" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2753
2872
|
"font-semibold truncate leading-tight",
|
|
2754
2873
|
isShortEvent ? "text-xs" : "text-sm",
|
|
2755
2874
|
event.color ? "text-foreground" : "text-foreground/90"
|
|
2756
|
-
) }, event.title), !isShortEvent && /* @__PURE__ */
|
|
2875
|
+
) }, event.title), !isShortEvent && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-xs text-muted-foreground mt-0.5 font-medium" }, dateFns.format(zonedStart, eventTimeFormat, { locale }), " - ", dateFns.format(zonedEnd, eventTimeFormat, { locale })), event.description && height > 60 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-xs text-muted-foreground/80 mt-1 line-clamp-2" }, event.description)), count > 1 && !isShortEvent && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute top-1.5 right-1.5 bg-background/90 backdrop-blur-sm rounded-full w-5 h-5 flex items-center justify-center text-[10px] font-bold text-muted-foreground border border-border shadow-sm" }, count))
|
|
2757
2876
|
)
|
|
2758
2877
|
)
|
|
2759
2878
|
);
|
|
2760
|
-
}), dateFns.isToday(currentDate) && /* @__PURE__ */
|
|
2879
|
+
}), dateFns.isToday(currentDate) && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2761
2880
|
"div",
|
|
2762
2881
|
{
|
|
2763
2882
|
className: "absolute left-0 right-0 z-20 pointer-events-none flex items-center",
|
|
@@ -2765,17 +2884,17 @@ var DayView = ({
|
|
|
2765
2884
|
top: reverseTime ? `${(1440 - (zonedNow.getHours() * 60 + zonedNow.getMinutes())) / 60 * hourHeight}px` : `${(zonedNow.getHours() * 60 + zonedNow.getMinutes()) / 60 * hourHeight}px`
|
|
2766
2885
|
}
|
|
2767
2886
|
},
|
|
2768
|
-
/* @__PURE__ */
|
|
2769
|
-
/* @__PURE__ */
|
|
2887
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-[2px] w-full bg-gradient-to-r from-primary via-primary to-primary/50" }),
|
|
2888
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute -left-1.5 w-3 h-3 bg-primary rounded-full shadow-lg shadow-primary/40 ring-2 ring-background animate-pulse" })
|
|
2770
2889
|
)))));
|
|
2771
2890
|
};
|
|
2772
|
-
var AgendaEmptyState = ({ onCreateEvent, translations }) => /* @__PURE__ */
|
|
2891
|
+
var AgendaEmptyState = ({ onCreateEvent, translations }) => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col items-center justify-center h-full min-h-[400px] py-12" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative mb-8" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-8 bg-gradient-to-br from-green-50 to-blue-50 dark:from-green-900/10 dark:to-blue-900/10 rounded-3xl border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-12 h-12 rounded-2xl bg-green-100 dark:bg-green-900/30 flex items-center justify-center" }, /* @__PURE__ */ React17__namespace.default.createElement("svg", { className: "w-6 h-6 text-green-600 dark:text-green-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2 }, /* @__PURE__ */ React17__namespace.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-left" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "font-medium text-foreground" }, "All caught up!"), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-sm text-muted-foreground" }, "No events scheduled"))))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-center max-w-sm" }, /* @__PURE__ */ React17__namespace.default.createElement("h3", { className: "text-lg font-semibold text-foreground mb-2" }, translations?.noUpcoming || "Your schedule is clear"), /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement(
|
|
2773
2892
|
"button",
|
|
2774
2893
|
{
|
|
2775
2894
|
onClick: onCreateEvent,
|
|
2776
2895
|
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"
|
|
2777
2896
|
},
|
|
2778
|
-
/* @__PURE__ */
|
|
2897
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Plus, { className: "w-4 h-4" }),
|
|
2779
2898
|
translations?.createEvent || "Create Event"
|
|
2780
2899
|
)));
|
|
2781
2900
|
var formatDuration = (start, end) => {
|
|
@@ -2801,7 +2920,7 @@ var AgendaView = ({
|
|
|
2801
2920
|
renderEmptyState
|
|
2802
2921
|
}) => {
|
|
2803
2922
|
const timeFmt = getTimeFormatFull(language);
|
|
2804
|
-
const groupedEvents =
|
|
2923
|
+
const groupedEvents = React17.useMemo(() => {
|
|
2805
2924
|
const startDate = dateFns.startOfDay(currentDate);
|
|
2806
2925
|
const groups = [];
|
|
2807
2926
|
const sortedEvents = [...events].sort((a, b) => a.start.getTime() - b.start.getTime());
|
|
@@ -2827,7 +2946,7 @@ var AgendaView = ({
|
|
|
2827
2946
|
hidden: { opacity: 0, x: -20 },
|
|
2828
2947
|
show: { opacity: 1, x: 0 }
|
|
2829
2948
|
};
|
|
2830
|
-
return /* @__PURE__ */
|
|
2949
|
+
return /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement(AgendaEmptyState, { onCreateEvent }) : /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2831
2950
|
framerMotion.motion.div,
|
|
2832
2951
|
{
|
|
2833
2952
|
className: "max-w-3xl mx-auto w-full pb-10 px-4 md:px-6",
|
|
@@ -2835,21 +2954,21 @@ var AgendaView = ({
|
|
|
2835
2954
|
initial: "hidden",
|
|
2836
2955
|
animate: "show"
|
|
2837
2956
|
},
|
|
2838
|
-
groupedEvents.map((group, groupIndex) => /* @__PURE__ */
|
|
2957
|
+
groupedEvents.map((group, groupIndex) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2839
2958
|
framerMotion.motion.div,
|
|
2840
2959
|
{
|
|
2841
2960
|
key: group.date.toISOString(),
|
|
2842
2961
|
className: "relative",
|
|
2843
2962
|
variants: item
|
|
2844
2963
|
},
|
|
2845
|
-
/* @__PURE__ */
|
|
2964
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "sticky top-0 bg-background/95 backdrop-blur-md py-4 z-10 border-b border-border/50" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
2846
2965
|
"flex flex-col items-center justify-center w-16 h-16 rounded-2xl transition-all",
|
|
2847
2966
|
dateFns.isToday(group.date) ? "bg-primary text-primary-foreground shadow-lg shadow-primary/30" : "bg-muted/50 text-foreground"
|
|
2848
|
-
) }, /* @__PURE__ */
|
|
2967
|
+
) }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-2xl font-bold leading-none" }, dateFns.format(group.date, "d")), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-medium uppercase tracking-wide opacity-80" }, dateFns.format(group.date, "MMM"))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: cn(
|
|
2849
2968
|
"text-lg font-semibold",
|
|
2850
2969
|
dateFns.isToday(group.date) && "text-primary"
|
|
2851
|
-
) }, getDateLabel(group.date, translations?.today ?? "Today", translations?.tomorrow ?? "Tomorrow")), /* @__PURE__ */
|
|
2852
|
-
/* @__PURE__ */
|
|
2970
|
+
) }, getDateLabel(group.date, translations?.today ?? "Today", translations?.tomorrow ?? "Tomorrow")), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm text-muted-foreground" }, group.events.length, " ", group.events.length !== 1 ? translations?.eventsCount ?? "events" : translations?.eventCount ?? "event")))),
|
|
2971
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "py-4 space-y-3" }, group.events.map((event, eventIndex) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2853
2972
|
framerMotion.motion.div,
|
|
2854
2973
|
{
|
|
2855
2974
|
key: event.id,
|
|
@@ -2863,22 +2982,22 @@ var AgendaView = ({
|
|
|
2863
2982
|
whileHover: { scale: 1.01, y: -2 },
|
|
2864
2983
|
transition: { duration: 0.2 }
|
|
2865
2984
|
},
|
|
2866
|
-
/* @__PURE__ */
|
|
2985
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
2867
2986
|
"div",
|
|
2868
2987
|
{
|
|
2869
2988
|
className: "absolute left-0 top-3 bottom-3 w-1 rounded-full",
|
|
2870
2989
|
style: { backgroundColor: event.color || "var(--primary)" }
|
|
2871
2990
|
}
|
|
2872
2991
|
),
|
|
2873
|
-
/* @__PURE__ */
|
|
2874
|
-
/* @__PURE__ */
|
|
2992
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col items-center min-w-[70px] pl-2" }, event.allDay ? /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-semibold text-muted-foreground bg-muted/80 px-2.5 py-1 rounded-full" }, translations?.allDay ?? "All Day")) : /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-base font-semibold text-foreground" }, dateFns.format(event.start, timeFmt)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-px h-3 bg-border my-1" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs text-muted-foreground/70 font-medium" }, formatDuration(event.start, event.end)))),
|
|
2993
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 min-w-0 space-y-2" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-start justify-between gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement("h4", { className: "text-base font-semibold text-foreground group-hover:text-primary transition-colors line-clamp-1" }, event.title), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2875
2994
|
"div",
|
|
2876
2995
|
{
|
|
2877
2996
|
className: "w-3 h-3 rounded-full shrink-0 mt-1.5",
|
|
2878
2997
|
style: { backgroundColor: event.color || "var(--primary)" }
|
|
2879
2998
|
}
|
|
2880
|
-
)), event.description && /* @__PURE__ */
|
|
2881
|
-
/* @__PURE__ */
|
|
2999
|
+
)), event.description && /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed" }, event.description), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-wrap items-center gap-3 pt-1" }, !event.allDay && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Clock, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React17__namespace.default.createElement("span", null, dateFns.format(event.start, timeFmt), " - ", dateFns.format(event.end, timeFmt))), event.guests && event.guests.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Users, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React17__namespace.default.createElement("span", null, event.guests.length, " ", event.guests.length !== 1 ? translations?.guestsCount ?? "guests" : translations?.guestCount ?? "guest")), event.attachments && event.attachments.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Paperclip, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React17__namespace.default.createElement("span", null, event.attachments.length)), event.reminders && event.reminders.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Bell, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ React17__namespace.default.createElement("span", null, event.reminders.length)))),
|
|
3000
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute right-4 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React17__namespace.default.createElement("svg", { className: "w-5 h-5 text-muted-foreground", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ React17__namespace.default.createElement("path", { d: "M9 18l6-6-6-6" })))
|
|
2882
3001
|
)))
|
|
2883
3002
|
))
|
|
2884
3003
|
));
|
|
@@ -2892,7 +3011,7 @@ var ResourceView = ({
|
|
|
2892
3011
|
locale,
|
|
2893
3012
|
language = "tr"
|
|
2894
3013
|
}) => {
|
|
2895
|
-
const containerRef =
|
|
3014
|
+
const containerRef = React17.useRef(null);
|
|
2896
3015
|
const hours = Array.from({ length: 24 }, (_, i) => i);
|
|
2897
3016
|
const hourWidth = 100;
|
|
2898
3017
|
const timeFormat = getTimeFormat(language);
|
|
@@ -2910,7 +3029,7 @@ var ResourceView = ({
|
|
|
2910
3029
|
// Min width for visibility
|
|
2911
3030
|
};
|
|
2912
3031
|
};
|
|
2913
|
-
return /* @__PURE__ */
|
|
3032
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col h-full min-h-0 bg-background overflow-hidden" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex border-b border-border bg-muted/20" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-48 shrink-0 border-r border-border p-4 font-semibold text-sm bg-background sticky left-0 z-20" }, "Resources"), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex overflow-hidden" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex relative", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2914
3033
|
"div",
|
|
2915
3034
|
{
|
|
2916
3035
|
key: hour,
|
|
@@ -2918,11 +3037,11 @@ var ResourceView = ({
|
|
|
2918
3037
|
style: { width: hourWidth }
|
|
2919
3038
|
},
|
|
2920
3039
|
dateFns.format((/* @__PURE__ */ new Date()).setHours(hour, 0, 0, 0), timeFormat, { locale })
|
|
2921
|
-
))))), /* @__PURE__ */
|
|
3040
|
+
))))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 min-h-0 overflow-auto relative", ref: containerRef }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "min-w-fit" }, resources.map((resource) => {
|
|
2922
3041
|
const resourceEvents = events.filter(
|
|
2923
3042
|
(e) => e.resourceId === resource.id && dateFns.isSameDay(new Date(e.start), currentDate)
|
|
2924
3043
|
);
|
|
2925
|
-
return /* @__PURE__ */
|
|
3044
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { key: resource.id, className: "flex border-b border-border min-h-[100px]" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-48 shrink-0 border-r border-border p-4 bg-background sticky left-0 z-10 flex items-center gap-3" }, resource.avatar ? /* @__PURE__ */ React17__namespace.default.createElement("img", { src: resource.avatar, alt: resource.label, className: "w-8 h-8 rounded-full object-cover" }) : /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold text-primary" }, resource.label.substring(0, 2).toUpperCase()), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium" }, resource.label), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs text-muted-foreground" }, "ID: ", resource.id))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative flex", style: { width: hours.length * hourWidth } }, hours.map((hour) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2926
3045
|
"div",
|
|
2927
3046
|
{
|
|
2928
3047
|
key: hour,
|
|
@@ -2933,7 +3052,7 @@ var ResourceView = ({
|
|
|
2933
3052
|
const slotDate = new Date(currentDate);
|
|
2934
3053
|
slotDate.setHours(hour, minute, 0, 0);
|
|
2935
3054
|
const slotId = `${resource.id}-${slotDate.toISOString()}`;
|
|
2936
|
-
return /* @__PURE__ */
|
|
3055
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2937
3056
|
DroppableCell,
|
|
2938
3057
|
{
|
|
2939
3058
|
key: minute,
|
|
@@ -2947,7 +3066,7 @@ var ResourceView = ({
|
|
|
2947
3066
|
}
|
|
2948
3067
|
);
|
|
2949
3068
|
})
|
|
2950
|
-
)), resourceEvents.map((event) => /* @__PURE__ */
|
|
3069
|
+
)), resourceEvents.map((event) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2951
3070
|
DraggableEvent,
|
|
2952
3071
|
{
|
|
2953
3072
|
key: event.id,
|
|
@@ -2964,7 +3083,7 @@ var ResourceView = ({
|
|
|
2964
3083
|
color: "#fff"
|
|
2965
3084
|
}
|
|
2966
3085
|
},
|
|
2967
|
-
/* @__PURE__ */
|
|
3086
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "truncate" }, event.title)
|
|
2968
3087
|
))));
|
|
2969
3088
|
}))));
|
|
2970
3089
|
};
|
|
@@ -2976,8 +3095,8 @@ var Modal = ({
|
|
|
2976
3095
|
className,
|
|
2977
3096
|
hideHeader = false
|
|
2978
3097
|
}) => {
|
|
2979
|
-
const overlayRef =
|
|
2980
|
-
|
|
3098
|
+
const overlayRef = React17.useRef(null);
|
|
3099
|
+
React17.useEffect(() => {
|
|
2981
3100
|
const handleEscape = (e) => {
|
|
2982
3101
|
if (e.key === "Escape") {
|
|
2983
3102
|
onClose();
|
|
@@ -2991,14 +3110,14 @@ var Modal = ({
|
|
|
2991
3110
|
};
|
|
2992
3111
|
}, [isOpen, onClose]);
|
|
2993
3112
|
if (!isOpen) return null;
|
|
2994
|
-
return /* @__PURE__ */
|
|
3113
|
+
return /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center p-4 bg-black/40 backdrop-blur-md animate-in fade-in duration-300" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
2995
3114
|
"div",
|
|
2996
3115
|
{
|
|
2997
3116
|
ref: overlayRef,
|
|
2998
3117
|
className: "absolute inset-0",
|
|
2999
3118
|
onClick: onClose
|
|
3000
3119
|
}
|
|
3001
|
-
), /* @__PURE__ */
|
|
3120
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3002
3121
|
"div",
|
|
3003
3122
|
{
|
|
3004
3123
|
className: cn(
|
|
@@ -3006,7 +3125,7 @@ var Modal = ({
|
|
|
3006
3125
|
className
|
|
3007
3126
|
)
|
|
3008
3127
|
},
|
|
3009
|
-
!hideHeader && /* @__PURE__ */
|
|
3128
|
+
!hideHeader && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-border/50 shrink-0 bg-gradient-to-r from-muted/20 to-background" }, /* @__PURE__ */ React17__namespace.default.createElement("h3", { className: "text-lg font-semibold text-foreground" }, title), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3010
3129
|
Button,
|
|
3011
3130
|
{
|
|
3012
3131
|
variant: "ghost",
|
|
@@ -3014,10 +3133,10 @@ var Modal = ({
|
|
|
3014
3133
|
onClick: onClose,
|
|
3015
3134
|
className: "h-9 w-9 p-0 rounded-xl hover:bg-accent/80 transition-all duration-200"
|
|
3016
3135
|
},
|
|
3017
|
-
/* @__PURE__ */
|
|
3018
|
-
/* @__PURE__ */
|
|
3136
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.X, { className: "h-4 w-4" }),
|
|
3137
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "sr-only" }, "Close")
|
|
3019
3138
|
)),
|
|
3020
|
-
/* @__PURE__ */
|
|
3139
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn("overflow-y-auto flex-1", !hideHeader && "p-6") }, children)
|
|
3021
3140
|
));
|
|
3022
3141
|
};
|
|
3023
3142
|
var COLOR_PALETTE = [
|
|
@@ -3067,9 +3186,9 @@ var EventModal = ({
|
|
|
3067
3186
|
language = "tr"
|
|
3068
3187
|
}) => {
|
|
3069
3188
|
const timeFmt = getTimeFormatFull(language);
|
|
3070
|
-
const [mode, setMode] =
|
|
3071
|
-
const [activeTab, setActiveTab] =
|
|
3072
|
-
const [formData, setFormData] =
|
|
3189
|
+
const [mode, setMode] = React17.useState("create");
|
|
3190
|
+
const [activeTab, setActiveTab] = React17.useState("details");
|
|
3191
|
+
const [formData, setFormData] = React17.useState({
|
|
3073
3192
|
title: "",
|
|
3074
3193
|
description: "",
|
|
3075
3194
|
location: "",
|
|
@@ -3083,10 +3202,10 @@ var EventModal = ({
|
|
|
3083
3202
|
attachments: [],
|
|
3084
3203
|
reminders: [{ id: "1", type: "notification", time: 30, label: "30 minutes before" }]
|
|
3085
3204
|
});
|
|
3086
|
-
const [isCalendarDropdownOpen, setIsCalendarDropdownOpen] =
|
|
3087
|
-
const [isColorPickerOpen, setIsColorPickerOpen] =
|
|
3088
|
-
const [isReminderDropdownOpen, setIsReminderDropdownOpen] =
|
|
3089
|
-
const [isGuestsDropdownOpen, setIsGuestsDropdownOpen] =
|
|
3205
|
+
const [isCalendarDropdownOpen, setIsCalendarDropdownOpen] = React17.useState(false);
|
|
3206
|
+
const [isColorPickerOpen, setIsColorPickerOpen] = React17.useState(false);
|
|
3207
|
+
const [isReminderDropdownOpen, setIsReminderDropdownOpen] = React17.useState(false);
|
|
3208
|
+
const [isGuestsDropdownOpen, setIsGuestsDropdownOpen] = React17.useState(false);
|
|
3090
3209
|
const fakeGuests = [
|
|
3091
3210
|
"alice@example.com",
|
|
3092
3211
|
"bob@example.com",
|
|
@@ -3094,9 +3213,9 @@ var EventModal = ({
|
|
|
3094
3213
|
"diana@example.com",
|
|
3095
3214
|
"evan@example.com"
|
|
3096
3215
|
];
|
|
3097
|
-
|
|
3098
|
-
const [selectedGuests, setSelectedGuests] =
|
|
3099
|
-
|
|
3216
|
+
React17.useRef(null);
|
|
3217
|
+
const [selectedGuests, setSelectedGuests] = React17.useState([]);
|
|
3218
|
+
React17.useEffect(() => {
|
|
3100
3219
|
if (isOpen) {
|
|
3101
3220
|
if (event) {
|
|
3102
3221
|
setMode("view");
|
|
@@ -3218,7 +3337,7 @@ var EventModal = ({
|
|
|
3218
3337
|
if (remainingMins === 0) return `${hours} hr`;
|
|
3219
3338
|
return `${hours} hr ${remainingMins} min`;
|
|
3220
3339
|
};
|
|
3221
|
-
const renderViewMode = () => /* @__PURE__ */
|
|
3340
|
+
const renderViewMode = () => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col bg-background overflow-hidden w-full max-h-[90vh]" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3222
3341
|
"div",
|
|
3223
3342
|
{
|
|
3224
3343
|
className: "relative px-6 pt-6 pb-8",
|
|
@@ -3226,50 +3345,50 @@ var EventModal = ({
|
|
|
3226
3345
|
background: `linear-gradient(135deg, ${event?.color || "#3b82f6"}15 0%, transparent 100%)`
|
|
3227
3346
|
}
|
|
3228
3347
|
},
|
|
3229
|
-
/* @__PURE__ */
|
|
3348
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3230
3349
|
"div",
|
|
3231
3350
|
{
|
|
3232
3351
|
className: "w-3 h-3 rounded-full",
|
|
3233
3352
|
style: { backgroundColor: event?.color || "#3b82f6" }
|
|
3234
3353
|
}
|
|
3235
|
-
), /* @__PURE__ */
|
|
3354
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider" }, calendars?.find((c) => c.id === event?.calendarId)?.label || "Event")), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3236
3355
|
"button",
|
|
3237
3356
|
{
|
|
3238
3357
|
onClick: () => setMode("edit"),
|
|
3239
3358
|
className: "p-2 hover:bg-background/80 rounded-lg transition-all text-muted-foreground hover:text-foreground",
|
|
3240
3359
|
title: "Edit"
|
|
3241
3360
|
},
|
|
3242
|
-
/* @__PURE__ */
|
|
3243
|
-
), /* @__PURE__ */
|
|
3361
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Edit2, { className: "w-4 h-4" })
|
|
3362
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3244
3363
|
"button",
|
|
3245
3364
|
{
|
|
3246
3365
|
onClick: handleDelete,
|
|
3247
3366
|
className: "p-2 hover:bg-destructive/10 rounded-lg transition-all text-muted-foreground hover:text-destructive",
|
|
3248
3367
|
title: "Delete"
|
|
3249
3368
|
},
|
|
3250
|
-
/* @__PURE__ */
|
|
3251
|
-
), /* @__PURE__ */
|
|
3369
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Trash2, { className: "w-4 h-4" })
|
|
3370
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3252
3371
|
"button",
|
|
3253
3372
|
{
|
|
3254
3373
|
onClick: onClose,
|
|
3255
3374
|
className: "p-2 hover:bg-background/80 rounded-lg transition-all text-muted-foreground hover:text-foreground",
|
|
3256
3375
|
title: "Close"
|
|
3257
3376
|
},
|
|
3258
|
-
/* @__PURE__ */
|
|
3377
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.X, { className: "w-4 h-4" })
|
|
3259
3378
|
))),
|
|
3260
|
-
/* @__PURE__ */
|
|
3261
|
-
/* @__PURE__ */
|
|
3262
|
-
), /* @__PURE__ */
|
|
3379
|
+
/* @__PURE__ */ React17__namespace.default.createElement("h1", { className: "text-2xl font-bold text-foreground mb-3 leading-tight" }, event?.title || translations.noTitle),
|
|
3380
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-3 text-sm" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-background/60 backdrop-blur-sm rounded-lg border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Calendar, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "font-medium" }, event?.start && dateFns.format(new Date(event.start), "EEE, MMM d"))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-background/60 backdrop-blur-sm rounded-lg border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Clock, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "font-medium" }, event?.start && dateFns.format(new Date(event.start), timeFmt), " \u2013 ", event?.end && dateFns.format(new Date(event.end), timeFmt))))
|
|
3381
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-6 pb-6 space-y-4 overflow-y-auto flex-1" }, event?.location && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3263
3382
|
framerMotion.motion.div,
|
|
3264
3383
|
{
|
|
3265
3384
|
initial: { opacity: 0, y: 10 },
|
|
3266
3385
|
animate: { opacity: 1, y: 0 },
|
|
3267
3386
|
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"
|
|
3268
3387
|
},
|
|
3269
|
-
/* @__PURE__ */
|
|
3270
|
-
/* @__PURE__ */
|
|
3271
|
-
/* @__PURE__ */
|
|
3272
|
-
), event?.guests && event.guests.length > 0 && /* @__PURE__ */
|
|
3388
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.MapPin, { className: "w-5 h-5 text-primary" })),
|
|
3389
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-sm font-medium text-foreground" }, event.location), /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-xs text-muted-foreground mt-0.5" }, translations.clickToOpenInMaps)),
|
|
3390
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ExternalLink, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
|
|
3391
|
+
), event?.guests && event.guests.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3273
3392
|
framerMotion.motion.div,
|
|
3274
3393
|
{
|
|
3275
3394
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3277,14 +3396,14 @@ var EventModal = ({
|
|
|
3277
3396
|
transition: { delay: 0.05 },
|
|
3278
3397
|
className: "space-y-3"
|
|
3279
3398
|
},
|
|
3280
|
-
/* @__PURE__ */
|
|
3281
|
-
/* @__PURE__ */
|
|
3399
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, event.guests.length, " ", event.guests.length > 1 ? translations.guestsCount : translations.guestCount))),
|
|
3400
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, event.guests.map((email, index) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3282
3401
|
"div",
|
|
3283
3402
|
{
|
|
3284
3403
|
key: index,
|
|
3285
3404
|
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"
|
|
3286
3405
|
},
|
|
3287
|
-
/* @__PURE__ */
|
|
3406
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
3288
3407
|
"div",
|
|
3289
3408
|
{
|
|
3290
3409
|
className: "w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold text-white",
|
|
@@ -3292,9 +3411,9 @@ var EventModal = ({
|
|
|
3292
3411
|
},
|
|
3293
3412
|
email[0].toUpperCase()
|
|
3294
3413
|
),
|
|
3295
|
-
/* @__PURE__ */
|
|
3414
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-sm font-medium text-foreground" }, email.split("@")[0]), /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-xs text-muted-foreground truncate" }, email))
|
|
3296
3415
|
)))
|
|
3297
|
-
), event?.reminders && event.reminders.length > 0 && /* @__PURE__ */
|
|
3416
|
+
), event?.reminders && event.reminders.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3298
3417
|
framerMotion.motion.div,
|
|
3299
3418
|
{
|
|
3300
3419
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3302,8 +3421,8 @@ var EventModal = ({
|
|
|
3302
3421
|
transition: { delay: 0.1 },
|
|
3303
3422
|
className: "flex items-center gap-3"
|
|
3304
3423
|
},
|
|
3305
|
-
/* @__PURE__ */
|
|
3306
|
-
/* @__PURE__ */
|
|
3424
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-2 bg-amber-500/10 rounded-xl" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Bell, { className: "w-4 h-4 text-amber-500" })),
|
|
3425
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, event.reminders.map((reminder) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3307
3426
|
"span",
|
|
3308
3427
|
{
|
|
3309
3428
|
key: reminder.id,
|
|
@@ -3311,7 +3430,7 @@ var EventModal = ({
|
|
|
3311
3430
|
},
|
|
3312
3431
|
reminder.label || `${reminder.time} min before`
|
|
3313
3432
|
)))
|
|
3314
|
-
), event?.description && /* @__PURE__ */
|
|
3433
|
+
), event?.description && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3315
3434
|
framerMotion.motion.div,
|
|
3316
3435
|
{
|
|
3317
3436
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3319,9 +3438,9 @@ var EventModal = ({
|
|
|
3319
3438
|
transition: { delay: 0.15 },
|
|
3320
3439
|
className: "space-y-2"
|
|
3321
3440
|
},
|
|
3322
|
-
/* @__PURE__ */
|
|
3323
|
-
/* @__PURE__ */
|
|
3324
|
-
), event?.attachments && event.attachments.length > 0 && /* @__PURE__ */
|
|
3441
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.notes)),
|
|
3442
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-sm text-foreground/80 whitespace-pre-wrap leading-relaxed pl-6 p-3 rounded-xl bg-muted/20 border border-border/30" }, event.description)
|
|
3443
|
+
), event?.attachments && event.attachments.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3325
3444
|
framerMotion.motion.div,
|
|
3326
3445
|
{
|
|
3327
3446
|
initial: { opacity: 0, y: 10 },
|
|
@@ -3329,27 +3448,27 @@ var EventModal = ({
|
|
|
3329
3448
|
transition: { delay: 0.2 },
|
|
3330
3449
|
className: "space-y-2"
|
|
3331
3450
|
},
|
|
3332
|
-
/* @__PURE__ */
|
|
3333
|
-
/* @__PURE__ */
|
|
3451
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Paperclip, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.attachments)),
|
|
3452
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid gap-2" }, event.attachments.map((att) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3334
3453
|
"div",
|
|
3335
3454
|
{
|
|
3336
3455
|
key: att.id,
|
|
3337
3456
|
onClick: () => handleDownload(att),
|
|
3338
3457
|
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"
|
|
3339
3458
|
},
|
|
3340
|
-
/* @__PURE__ */
|
|
3341
|
-
/* @__PURE__ */
|
|
3342
|
-
/* @__PURE__ */
|
|
3459
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-2 bg-primary/10 rounded-lg" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.File, { className: "w-4 h-4 text-primary" })),
|
|
3460
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-sm font-medium text-foreground truncate" }, att.name), /* @__PURE__ */ React17__namespace.default.createElement("p", { className: "text-xs text-muted-foreground" }, att.size)),
|
|
3461
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Download, { className: "w-4 h-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
|
|
3343
3462
|
)))
|
|
3344
3463
|
)));
|
|
3345
|
-
const renderEditMode = () => /* @__PURE__ */
|
|
3464
|
+
const renderEditMode = () => /* @__PURE__ */ React17__namespace.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col bg-background overflow-hidden w-full max-h-[85vh]" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between px-5 py-4 border-b border-border/50 shrink-0" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3346
3465
|
"button",
|
|
3347
3466
|
{
|
|
3348
3467
|
type: "button",
|
|
3349
3468
|
onClick: () => setIsColorPickerOpen(!isColorPickerOpen),
|
|
3350
3469
|
className: "relative p-1"
|
|
3351
3470
|
},
|
|
3352
|
-
/* @__PURE__ */
|
|
3471
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
3353
3472
|
"div",
|
|
3354
3473
|
{
|
|
3355
3474
|
className: "w-5 h-5 rounded-full cursor-pointer hover:scale-110 transition-transform",
|
|
@@ -3359,7 +3478,7 @@ var EventModal = ({
|
|
|
3359
3478
|
}
|
|
3360
3479
|
}
|
|
3361
3480
|
),
|
|
3362
|
-
isColorPickerOpen && /* @__PURE__ */
|
|
3481
|
+
isColorPickerOpen && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute top-full left-0 mt-2 p-2 bg-background border border-border rounded-xl shadow-xl z-50 flex flex-wrap gap-1.5 w-[180px]" }, COLOR_PALETTE.map((color) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3363
3482
|
"button",
|
|
3364
3483
|
{
|
|
3365
3484
|
key: color,
|
|
@@ -3375,15 +3494,15 @@ var EventModal = ({
|
|
|
3375
3494
|
style: { backgroundColor: color, color }
|
|
3376
3495
|
}
|
|
3377
3496
|
)))
|
|
3378
|
-
), /* @__PURE__ */
|
|
3497
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("h2", { className: "text-lg font-semibold text-foreground" }, mode === "edit" ? translations.editEvent : translations.newEvent)), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3379
3498
|
"button",
|
|
3380
3499
|
{
|
|
3381
3500
|
type: "button",
|
|
3382
3501
|
onClick: onClose,
|
|
3383
3502
|
className: "p-2 hover:bg-accent rounded-xl transition-all text-muted-foreground hover:text-foreground"
|
|
3384
3503
|
},
|
|
3385
|
-
/* @__PURE__ */
|
|
3386
|
-
)), /* @__PURE__ */
|
|
3504
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.X, { className: "w-4 h-4" })
|
|
3505
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-5 py-4 space-y-5" }, /* @__PURE__ */ React17__namespace.default.createElement("div", null, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3387
3506
|
"input",
|
|
3388
3507
|
{
|
|
3389
3508
|
type: "text",
|
|
@@ -3394,7 +3513,7 @@ var EventModal = ({
|
|
|
3394
3513
|
onChange: (e) => setFormData({ ...formData, title: e.target.value }),
|
|
3395
3514
|
placeholder: translations.addTitle
|
|
3396
3515
|
}
|
|
3397
|
-
)), /* @__PURE__ */
|
|
3516
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-3 p-4 rounded-2xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-2 bg-primary/10 rounded-xl shrink-0" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Clock, { className: "w-5 h-5 text-primary" })), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-2 gap-3" }, /* @__PURE__ */ React17__namespace.default.createElement("div", null, /* @__PURE__ */ React17__namespace.default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, translations.start), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3398
3517
|
"input",
|
|
3399
3518
|
{
|
|
3400
3519
|
type: "datetime-local",
|
|
@@ -3402,7 +3521,7 @@ var EventModal = ({
|
|
|
3402
3521
|
value: formatDateForInput(formData.start),
|
|
3403
3522
|
onChange: (e) => handleDateChange("start", e.target.value)
|
|
3404
3523
|
}
|
|
3405
|
-
)), /* @__PURE__ */
|
|
3524
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", null, /* @__PURE__ */ React17__namespace.default.createElement("label", { className: "text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-1 block" }, translations.end), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3406
3525
|
"input",
|
|
3407
3526
|
{
|
|
3408
3527
|
type: "datetime-local",
|
|
@@ -3410,16 +3529,16 @@ var EventModal = ({
|
|
|
3410
3529
|
value: formatDateForInput(formData.end),
|
|
3411
3530
|
onChange: (e) => handleDateChange("end", e.target.value)
|
|
3412
3531
|
}
|
|
3413
|
-
)))), getDurationText() && /* @__PURE__ */
|
|
3532
|
+
)))), getDurationText() && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-medium px-3 py-1 rounded-full bg-primary/10 text-primary" }, getDurationText())), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Bell, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.reminders)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3414
3533
|
"button",
|
|
3415
3534
|
{
|
|
3416
3535
|
type: "button",
|
|
3417
3536
|
onClick: () => setIsReminderDropdownOpen(!isReminderDropdownOpen),
|
|
3418
3537
|
className: "flex items-center gap-1 text-xs font-medium text-primary hover:text-primary/80 transition-colors"
|
|
3419
3538
|
},
|
|
3420
|
-
/* @__PURE__ */
|
|
3539
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Plus, { className: "w-3.5 h-3.5" }),
|
|
3421
3540
|
translations.addReminder
|
|
3422
|
-
), isReminderDropdownOpen && /* @__PURE__ */
|
|
3541
|
+
), isReminderDropdownOpen && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsReminderDropdownOpen(false) }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute right-0 top-full mt-1 w-48 bg-background border border-border rounded-xl shadow-xl z-50 py-1 max-h-60 overflow-y-auto" }, getReminderOptions(translations).map((option) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3423
3542
|
"button",
|
|
3424
3543
|
{
|
|
3425
3544
|
key: option.value,
|
|
@@ -3428,58 +3547,58 @@ var EventModal = ({
|
|
|
3428
3547
|
className: "w-full px-3 py-2 text-left text-sm hover:bg-accent transition-colors"
|
|
3429
3548
|
},
|
|
3430
3549
|
option.label
|
|
3431
|
-
)))))), formData.reminders && formData.reminders.length > 0 && /* @__PURE__ */
|
|
3550
|
+
)))))), formData.reminders && formData.reminders.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-wrap gap-2" }, formData.reminders.map((reminder) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3432
3551
|
"div",
|
|
3433
3552
|
{
|
|
3434
3553
|
key: reminder.id,
|
|
3435
3554
|
className: "flex items-center gap-2 px-3 py-1.5 rounded-full bg-amber-500/10 border border-amber-500/20"
|
|
3436
3555
|
},
|
|
3437
|
-
/* @__PURE__ */
|
|
3438
|
-
/* @__PURE__ */
|
|
3439
|
-
/* @__PURE__ */
|
|
3556
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.BellRing, { className: "w-3.5 h-3.5 text-amber-500" }),
|
|
3557
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-medium text-amber-600 dark:text-amber-400" }, reminder.label),
|
|
3558
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
3440
3559
|
"button",
|
|
3441
3560
|
{
|
|
3442
3561
|
type: "button",
|
|
3443
3562
|
onClick: () => removeReminder(reminder.id),
|
|
3444
3563
|
className: "p-0.5 hover:bg-amber-500/20 rounded-full transition-colors"
|
|
3445
3564
|
},
|
|
3446
|
-
/* @__PURE__ */
|
|
3565
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.X, { className: "w-3 h-3 text-amber-500" })
|
|
3447
3566
|
)
|
|
3448
|
-
)))), /* @__PURE__ */
|
|
3567
|
+
)))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Users, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.guests)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3449
3568
|
"button",
|
|
3450
3569
|
{
|
|
3451
3570
|
type: "button",
|
|
3452
3571
|
onClick: () => setIsGuestsDropdownOpen(!isGuestsDropdownOpen),
|
|
3453
3572
|
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"
|
|
3454
3573
|
},
|
|
3455
|
-
/* @__PURE__ */
|
|
3456
|
-
/* @__PURE__ */
|
|
3457
|
-
), isGuestsDropdownOpen && /* @__PURE__ */
|
|
3574
|
+
/* @__PURE__ */ React17__namespace.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),
|
|
3575
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronDown, { className: cn("w-4 h-4 text-muted-foreground transition-transform", isGuestsDropdownOpen && "rotate-180") })
|
|
3576
|
+
), isGuestsDropdownOpen && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsGuestsDropdownOpen(false) }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute z-50 w-full mt-2 bg-background border border-border rounded-xl shadow-xl max-h-48 overflow-y-auto" }, fakeGuests.map((email) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3458
3577
|
"div",
|
|
3459
3578
|
{
|
|
3460
3579
|
key: email,
|
|
3461
3580
|
className: "px-4 py-3 hover:bg-accent cursor-pointer flex items-center gap-3 transition-colors",
|
|
3462
3581
|
onClick: () => toggleGuest(email)
|
|
3463
3582
|
},
|
|
3464
|
-
/* @__PURE__ */
|
|
3583
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn(
|
|
3465
3584
|
"w-5 h-5 rounded-md border-2 flex items-center justify-center transition-all",
|
|
3466
3585
|
selectedGuests.includes(email) ? "bg-primary border-primary" : "border-border"
|
|
3467
|
-
) }, selectedGuests.includes(email) && /* @__PURE__ */
|
|
3468
|
-
/* @__PURE__ */
|
|
3586
|
+
) }, selectedGuests.includes(email) && /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Check, { className: "w-3 h-3 text-primary-foreground" })),
|
|
3587
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3469
3588
|
"div",
|
|
3470
3589
|
{
|
|
3471
3590
|
className: "w-7 h-7 rounded-full flex items-center justify-center text-xs font-semibold text-white",
|
|
3472
3591
|
style: { backgroundColor: `hsl(${fakeGuests.indexOf(email) * 60}, 70%, 50%)` }
|
|
3473
3592
|
},
|
|
3474
3593
|
email[0].toUpperCase()
|
|
3475
|
-
), /* @__PURE__ */
|
|
3476
|
-
))))), selectedGuests.length > 0 && /* @__PURE__ */
|
|
3594
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm" }, email))
|
|
3595
|
+
))))), selectedGuests.length > 0 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, selectedGuests.map((email) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3477
3596
|
"div",
|
|
3478
3597
|
{
|
|
3479
3598
|
key: email,
|
|
3480
3599
|
className: "flex items-center gap-2 pl-1 pr-2 py-1 bg-muted/30 border border-border/30 rounded-full"
|
|
3481
3600
|
},
|
|
3482
|
-
/* @__PURE__ */
|
|
3601
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
3483
3602
|
"div",
|
|
3484
3603
|
{
|
|
3485
3604
|
className: "w-6 h-6 rounded-full flex items-center justify-center text-xs font-semibold text-white",
|
|
@@ -3487,17 +3606,17 @@ var EventModal = ({
|
|
|
3487
3606
|
},
|
|
3488
3607
|
email[0].toUpperCase()
|
|
3489
3608
|
),
|
|
3490
|
-
/* @__PURE__ */
|
|
3491
|
-
/* @__PURE__ */
|
|
3609
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-xs font-medium text-foreground" }, email.split("@")[0]),
|
|
3610
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
3492
3611
|
"button",
|
|
3493
3612
|
{
|
|
3494
3613
|
type: "button",
|
|
3495
3614
|
onClick: () => toggleGuest(email),
|
|
3496
3615
|
className: "p-0.5 hover:bg-destructive/10 rounded-full transition-colors"
|
|
3497
3616
|
},
|
|
3498
|
-
/* @__PURE__ */
|
|
3617
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.X, { className: "w-3 h-3 text-muted-foreground" })
|
|
3499
3618
|
)
|
|
3500
|
-
)))), /* @__PURE__ */
|
|
3619
|
+
)))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.MapPin, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3501
3620
|
"input",
|
|
3502
3621
|
{
|
|
3503
3622
|
type: "text",
|
|
@@ -3506,7 +3625,7 @@ var EventModal = ({
|
|
|
3506
3625
|
value: formData.location || "",
|
|
3507
3626
|
onChange: (e) => setFormData({ ...formData, location: e.target.value })
|
|
3508
3627
|
}
|
|
3509
|
-
)), /* @__PURE__ */
|
|
3628
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.AlignLeft, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium text-foreground" }, translations.notes)), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3510
3629
|
"textarea",
|
|
3511
3630
|
{
|
|
3512
3631
|
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",
|
|
@@ -3514,7 +3633,7 @@ var EventModal = ({
|
|
|
3514
3633
|
value: formData.description || "",
|
|
3515
3634
|
onChange: (e) => setFormData({ ...formData, description: e.target.value })
|
|
3516
3635
|
}
|
|
3517
|
-
)), /* @__PURE__ */
|
|
3636
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-3 p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Repeat, { className: "w-5 h-5 text-muted-foreground shrink-0" }), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3518
3637
|
"select",
|
|
3519
3638
|
{
|
|
3520
3639
|
className: "flex-1 bg-transparent text-sm text-foreground focus:outline-none cursor-pointer",
|
|
@@ -3533,28 +3652,28 @@ var EventModal = ({
|
|
|
3533
3652
|
}
|
|
3534
3653
|
}
|
|
3535
3654
|
},
|
|
3536
|
-
/* @__PURE__ */
|
|
3537
|
-
/* @__PURE__ */
|
|
3538
|
-
/* @__PURE__ */
|
|
3539
|
-
/* @__PURE__ */
|
|
3540
|
-
/* @__PURE__ */
|
|
3541
|
-
)), /* @__PURE__ */
|
|
3655
|
+
/* @__PURE__ */ React17__namespace.default.createElement("option", { value: "" }, translations.doesNotRepeat),
|
|
3656
|
+
/* @__PURE__ */ React17__namespace.default.createElement("option", { value: "DAILY" }, translations.daily),
|
|
3657
|
+
/* @__PURE__ */ React17__namespace.default.createElement("option", { value: "WEEKLY" }, translations.weekly),
|
|
3658
|
+
/* @__PURE__ */ React17__namespace.default.createElement("option", { value: "MONTHLY" }, translations.monthly),
|
|
3659
|
+
/* @__PURE__ */ React17__namespace.default.createElement("option", { value: "YEARLY" }, translations.yearly)
|
|
3660
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center justify-between p-3 rounded-xl bg-muted/20 border border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Tag, { className: "w-5 h-5 text-muted-foreground" }), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm text-foreground" }, translations.calendar)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3542
3661
|
"button",
|
|
3543
3662
|
{
|
|
3544
3663
|
type: "button",
|
|
3545
3664
|
onClick: () => setIsCalendarDropdownOpen(!isCalendarDropdownOpen),
|
|
3546
3665
|
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"
|
|
3547
3666
|
},
|
|
3548
|
-
/* @__PURE__ */
|
|
3667
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
3549
3668
|
"div",
|
|
3550
3669
|
{
|
|
3551
3670
|
className: "w-3 h-3 rounded-full",
|
|
3552
3671
|
style: { backgroundColor: calendars?.find((c) => c.id === formData.calendarId)?.color || "#3b82f6" }
|
|
3553
3672
|
}
|
|
3554
3673
|
),
|
|
3555
|
-
/* @__PURE__ */
|
|
3556
|
-
/* @__PURE__ */
|
|
3557
|
-
), isCalendarDropdownOpen && /* @__PURE__ */
|
|
3674
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "font-medium" }, calendars?.find((c) => c.id === formData.calendarId)?.label || "Select"),
|
|
3675
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.ChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground" })
|
|
3676
|
+
), isCalendarDropdownOpen && /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsCalendarDropdownOpen(false) }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute right-0 bottom-full mb-2 w-48 bg-background border border-border rounded-xl shadow-xl z-50 py-1" }, calendars?.map((cal) => /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3558
3677
|
"button",
|
|
3559
3678
|
{
|
|
3560
3679
|
key: cal.id,
|
|
@@ -3569,19 +3688,19 @@ var EventModal = ({
|
|
|
3569
3688
|
setIsCalendarDropdownOpen(false);
|
|
3570
3689
|
}
|
|
3571
3690
|
},
|
|
3572
|
-
/* @__PURE__ */
|
|
3573
|
-
/* @__PURE__ */
|
|
3574
|
-
formData.calendarId === cal.id && /* @__PURE__ */
|
|
3575
|
-
)))))))), /* @__PURE__ */
|
|
3691
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-3 h-3 rounded-full", style: { backgroundColor: cal.color } }),
|
|
3692
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", { className: "flex-1 text-sm" }, cal.label),
|
|
3693
|
+
formData.calendarId === cal.id && /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Check, { className: "w-4 h-4 text-primary" })
|
|
3694
|
+
)))))))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-5 py-4 border-t border-border/50 flex items-center justify-between bg-muted/10 shrink-0" }, mode === "edit" && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3576
3695
|
"button",
|
|
3577
3696
|
{
|
|
3578
3697
|
type: "button",
|
|
3579
3698
|
onClick: handleDelete,
|
|
3580
3699
|
className: "flex items-center gap-2 px-4 py-2 text-destructive hover:bg-destructive/10 rounded-xl transition-all text-sm font-medium"
|
|
3581
3700
|
},
|
|
3582
|
-
/* @__PURE__ */
|
|
3701
|
+
/* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Trash2, { className: "w-4 h-4" }),
|
|
3583
3702
|
translations.delete
|
|
3584
|
-
), mode === "create" && /* @__PURE__ */
|
|
3703
|
+
), mode === "create" && /* @__PURE__ */ React17__namespace.default.createElement("div", null), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3585
3704
|
"button",
|
|
3586
3705
|
{
|
|
3587
3706
|
type: "button",
|
|
@@ -3589,7 +3708,7 @@ var EventModal = ({
|
|
|
3589
3708
|
className: "px-4 py-2.5 text-muted-foreground hover:text-foreground font-medium text-sm rounded-xl transition-all hover:bg-accent"
|
|
3590
3709
|
},
|
|
3591
3710
|
translations.cancel
|
|
3592
|
-
), /* @__PURE__ */
|
|
3711
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3593
3712
|
"button",
|
|
3594
3713
|
{
|
|
3595
3714
|
type: "submit",
|
|
@@ -3597,7 +3716,7 @@ var EventModal = ({
|
|
|
3597
3716
|
},
|
|
3598
3717
|
mode === "edit" ? translations.saveChanges : translations.createEvent
|
|
3599
3718
|
))));
|
|
3600
|
-
return /* @__PURE__ */
|
|
3719
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(Modal, { isOpen, onClose, hideHeader: true, className: "p-0 overflow-hidden max-w-lg rounded-2xl shadow-2xl" }, /* @__PURE__ */ React17__namespace.default.createElement(framerMotion.AnimatePresence, { mode: "wait" }, mode === "view" && event ? /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3601
3720
|
framerMotion.motion.div,
|
|
3602
3721
|
{
|
|
3603
3722
|
key: "view",
|
|
@@ -3607,7 +3726,7 @@ var EventModal = ({
|
|
|
3607
3726
|
transition: { duration: 0.15 }
|
|
3608
3727
|
},
|
|
3609
3728
|
renderViewMode()
|
|
3610
|
-
) : /* @__PURE__ */
|
|
3729
|
+
) : /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3611
3730
|
framerMotion.motion.div,
|
|
3612
3731
|
{
|
|
3613
3732
|
key: "edit",
|
|
@@ -3619,9 +3738,9 @@ var EventModal = ({
|
|
|
3619
3738
|
renderEditMode()
|
|
3620
3739
|
)));
|
|
3621
3740
|
};
|
|
3622
|
-
var Skeleton = ({ className, style }) => /* @__PURE__ */
|
|
3623
|
-
var MonthViewSkeleton = () => /* @__PURE__ */
|
|
3624
|
-
var WeekViewSkeleton = () => /* @__PURE__ */
|
|
3741
|
+
var Skeleton = ({ className, style }) => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: cn("animate-pulse bg-muted/40 rounded", className), style });
|
|
3742
|
+
var MonthViewSkeleton = () => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid grid-cols-7 border-b border-border/50 bg-muted/10" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-4 w-8 mx-auto" })))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "grid grid-cols-7 flex-1" }, Array.from({ length: 35 }).map((_, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: i, className: "min-h-[120px] border-r border-b border-border/30 p-2" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-4 w-6 mb-2" }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-1" }, Math.random() > 0.5 && /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-5 w-full rounded-md" }), Math.random() > 0.7 && /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-5 w-3/4 rounded-md" }))))));
|
|
3743
|
+
var WeekViewSkeleton = () => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex border-b border-border/50 bg-muted/10" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-16 p-3 border-r border-border/30" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-8 w-10 mx-auto" })), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7" }, Array.from({ length: 7 }).map((_, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: i, className: "py-3 px-2 text-center border-r border-border/30 last:border-r-0" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-3 w-8 mx-auto mb-1" }), /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-8 w-8 mx-auto rounded-xl" }))))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-16 border-r border-border/30" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: i, className: "h-[60px] relative" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-4 w-10 absolute right-2 -translate-y-1/2" })))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 grid grid-cols-7 relative" }, Array.from({ length: 7 }).map((_, colIdx) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: colIdx, className: "relative border-r border-border/30 last:border-r-0" }, Array.from({ length: 10 }).map((_2, rowIdx) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: rowIdx, className: "h-[60px] border-b border-dashed border-border/20" })), Math.random() > 0.3 && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3625
3744
|
Skeleton,
|
|
3626
3745
|
{
|
|
3627
3746
|
className: "absolute rounded-md",
|
|
@@ -3633,20 +3752,20 @@ var WeekViewSkeleton = () => /* @__PURE__ */ React15__namespace.default.createEl
|
|
|
3633
3752
|
}
|
|
3634
3753
|
}
|
|
3635
3754
|
))))));
|
|
3636
|
-
var DayViewSkeleton = () => /* @__PURE__ */
|
|
3755
|
+
var DayViewSkeleton = () => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-6 py-4 border-b border-border/50 bg-muted/10 text-center" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-7 w-64 mx-auto" })), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-1", style: { height: "600px" } }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "w-20 border-r border-border/30 bg-muted/5" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: i, className: "h-[80px] relative" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-4 w-12 absolute left-1/2 -translate-x-1/2 -translate-y-1/2" })))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 relative" }, Array.from({ length: 10 }).map((_, i) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: i, className: "h-[80px] border-b border-dashed border-border/20" })), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3637
3756
|
Skeleton,
|
|
3638
3757
|
{
|
|
3639
3758
|
className: "absolute rounded-lg left-4 right-4",
|
|
3640
3759
|
style: { top: "160px", height: "120px" }
|
|
3641
3760
|
}
|
|
3642
|
-
), /* @__PURE__ */
|
|
3761
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3643
3762
|
Skeleton,
|
|
3644
3763
|
{
|
|
3645
3764
|
className: "absolute rounded-lg left-4 right-4",
|
|
3646
3765
|
style: { top: "400px", height: "80px" }
|
|
3647
3766
|
}
|
|
3648
3767
|
))));
|
|
3649
|
-
var AgendaViewSkeleton = () => /* @__PURE__ */
|
|
3768
|
+
var AgendaViewSkeleton = () => /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-full bg-background border border-border/50 rounded-2xl overflow-hidden p-6" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-6" }, Array.from({ length: 4 }).map((_, dayIdx) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: dayIdx }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-5 w-40 mb-4" }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "space-y-3" }, Array.from({ length: 2 + Math.floor(Math.random() * 3) }).map((_2, eventIdx) => /* @__PURE__ */ React17__namespace.default.createElement("div", { key: eventIdx, className: "flex items-center gap-4 p-3 rounded-xl bg-muted/10" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-10 w-10 rounded-lg" }), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React17__namespace.default.createElement(Skeleton, { className: "h-3 w-1/2" })))))))));
|
|
3650
3769
|
var EventContextMenu = ({
|
|
3651
3770
|
event,
|
|
3652
3771
|
position,
|
|
@@ -3657,8 +3776,8 @@ var EventContextMenu = ({
|
|
|
3657
3776
|
customActions = [],
|
|
3658
3777
|
translations
|
|
3659
3778
|
}) => {
|
|
3660
|
-
const menuRef =
|
|
3661
|
-
|
|
3779
|
+
const menuRef = React17.useRef(null);
|
|
3780
|
+
React17.useEffect(() => {
|
|
3662
3781
|
const handleKeyDown = (e) => {
|
|
3663
3782
|
if (e.key === "Escape") {
|
|
3664
3783
|
onClose();
|
|
@@ -3669,7 +3788,7 @@ var EventContextMenu = ({
|
|
|
3669
3788
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
3670
3789
|
}
|
|
3671
3790
|
}, [position, onClose]);
|
|
3672
|
-
|
|
3791
|
+
React17.useEffect(() => {
|
|
3673
3792
|
const handleClickOutside = (e) => {
|
|
3674
3793
|
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
3675
3794
|
onClose();
|
|
@@ -3687,7 +3806,7 @@ var EventContextMenu = ({
|
|
|
3687
3806
|
...onEdit ? [{
|
|
3688
3807
|
id: "edit",
|
|
3689
3808
|
label: translations?.edit || "Edit",
|
|
3690
|
-
icon: /* @__PURE__ */
|
|
3809
|
+
icon: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Edit3, { className: "w-4 h-4" }),
|
|
3691
3810
|
onClick: () => {
|
|
3692
3811
|
onEdit(event);
|
|
3693
3812
|
onClose();
|
|
@@ -3696,7 +3815,7 @@ var EventContextMenu = ({
|
|
|
3696
3815
|
...onDuplicate ? [{
|
|
3697
3816
|
id: "duplicate",
|
|
3698
3817
|
label: translations?.duplicate || "Duplicate",
|
|
3699
|
-
icon: /* @__PURE__ */
|
|
3818
|
+
icon: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Copy, { className: "w-4 h-4" }),
|
|
3700
3819
|
onClick: () => {
|
|
3701
3820
|
onDuplicate(event);
|
|
3702
3821
|
onClose();
|
|
@@ -3706,7 +3825,7 @@ var EventContextMenu = ({
|
|
|
3706
3825
|
...onDelete ? [{
|
|
3707
3826
|
id: "delete",
|
|
3708
3827
|
label: translations?.delete || "Delete",
|
|
3709
|
-
icon: /* @__PURE__ */
|
|
3828
|
+
icon: /* @__PURE__ */ React17__namespace.default.createElement(lucideReact.Trash2, { className: "w-4 h-4" }),
|
|
3710
3829
|
onClick: () => {
|
|
3711
3830
|
onDelete(event.id);
|
|
3712
3831
|
onClose();
|
|
@@ -3718,7 +3837,7 @@ var EventContextMenu = ({
|
|
|
3718
3837
|
x: Math.min(position.x, window.innerWidth - 200),
|
|
3719
3838
|
y: Math.min(position.y, window.innerHeight - (actions.length * 44 + 80))
|
|
3720
3839
|
};
|
|
3721
|
-
return /* @__PURE__ */
|
|
3840
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(framerMotion.AnimatePresence, null, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3722
3841
|
framerMotion.motion.div,
|
|
3723
3842
|
{
|
|
3724
3843
|
ref: menuRef,
|
|
@@ -3732,14 +3851,14 @@ var EventContextMenu = ({
|
|
|
3732
3851
|
top: adjustedPosition.y
|
|
3733
3852
|
}
|
|
3734
3853
|
},
|
|
3735
|
-
/* @__PURE__ */
|
|
3854
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "px-3 py-2 border-b-[0.5px] border-border bg-muted/30" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3736
3855
|
"div",
|
|
3737
3856
|
{
|
|
3738
3857
|
className: "w-2.5 h-2.5 rounded-full shrink-0",
|
|
3739
3858
|
style: { backgroundColor: event.color || "var(--primary)" }
|
|
3740
3859
|
}
|
|
3741
|
-
), /* @__PURE__ */
|
|
3742
|
-
/* @__PURE__ */
|
|
3860
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("span", { className: "text-sm font-medium truncate text-foreground" }, event.title))),
|
|
3861
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "py-1" }, actions.map((action, index) => /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, { key: action.id }, index > 0 && action.variant === "danger" && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-px bg-border my-1" }), /* @__PURE__ */ React17__namespace.default.createElement(
|
|
3743
3862
|
"button",
|
|
3744
3863
|
{
|
|
3745
3864
|
onClick: action.onClick,
|
|
@@ -3751,13 +3870,13 @@ var EventContextMenu = ({
|
|
|
3751
3870
|
)
|
|
3752
3871
|
},
|
|
3753
3872
|
action.icon,
|
|
3754
|
-
/* @__PURE__ */
|
|
3873
|
+
/* @__PURE__ */ React17__namespace.default.createElement("span", null, action.label)
|
|
3755
3874
|
))))
|
|
3756
3875
|
));
|
|
3757
3876
|
};
|
|
3758
3877
|
var useEventContextMenu = () => {
|
|
3759
|
-
const [contextMenu, setContextMenu] =
|
|
3760
|
-
const openContextMenu =
|
|
3878
|
+
const [contextMenu, setContextMenu] = React17.useState({ event: null, position: null });
|
|
3879
|
+
const openContextMenu = React17.useCallback((event, e) => {
|
|
3761
3880
|
e.preventDefault();
|
|
3762
3881
|
e.stopPropagation();
|
|
3763
3882
|
setContextMenu({
|
|
@@ -3765,7 +3884,7 @@ var useEventContextMenu = () => {
|
|
|
3765
3884
|
position: { x: e.clientX, y: e.clientY }
|
|
3766
3885
|
});
|
|
3767
3886
|
}, []);
|
|
3768
|
-
const closeContextMenu =
|
|
3887
|
+
const closeContextMenu = React17.useCallback(() => {
|
|
3769
3888
|
setContextMenu({ event: null, position: null });
|
|
3770
3889
|
}, []);
|
|
3771
3890
|
return {
|
|
@@ -3868,20 +3987,20 @@ var useCalendarLogic = ({
|
|
|
3868
3987
|
readOnly,
|
|
3869
3988
|
timezone
|
|
3870
3989
|
}) => {
|
|
3871
|
-
const [internalView, setInternalView] =
|
|
3872
|
-
const [internalDate, setInternalDate] =
|
|
3873
|
-
const [isSidebarOpen, setIsSidebarOpen] =
|
|
3874
|
-
|
|
3990
|
+
const [internalView, setInternalView] = React17.useState("week");
|
|
3991
|
+
const [internalDate, setInternalDate] = React17.useState(/* @__PURE__ */ new Date());
|
|
3992
|
+
const [isSidebarOpen, setIsSidebarOpen] = React17.useState(false);
|
|
3993
|
+
React17.useEffect(() => {
|
|
3875
3994
|
if (window.innerWidth >= 768) {
|
|
3876
3995
|
setIsSidebarOpen(true);
|
|
3877
3996
|
}
|
|
3878
3997
|
}, []);
|
|
3879
|
-
const [isModalOpen, setIsModalOpen] =
|
|
3880
|
-
const [selectedEvent, setSelectedEvent] =
|
|
3881
|
-
const [modalInitialDate, setModalInitialDate] =
|
|
3998
|
+
const [isModalOpen, setIsModalOpen] = React17.useState(false);
|
|
3999
|
+
const [selectedEvent, setSelectedEvent] = React17.useState(null);
|
|
4000
|
+
const [modalInitialDate, setModalInitialDate] = React17.useState(void 0);
|
|
3882
4001
|
const view = controlledView ?? internalView;
|
|
3883
4002
|
const currentDate = controlledDate ?? internalDate;
|
|
3884
|
-
const expandedEvents =
|
|
4003
|
+
const expandedEvents = React17.useMemo(() => {
|
|
3885
4004
|
const allEvents = [];
|
|
3886
4005
|
const rangeStart = dateFns.subDays(currentDate, 365);
|
|
3887
4006
|
const rangeEnd = dateFns.addDays(currentDate, 365);
|
|
@@ -4116,9 +4235,9 @@ var useSwipeGesture = (options) => {
|
|
|
4116
4235
|
allowedTime = 500,
|
|
4117
4236
|
enabled = true
|
|
4118
4237
|
} = options;
|
|
4119
|
-
const touchInfoRef =
|
|
4120
|
-
const elementRef =
|
|
4121
|
-
const handleTouchStart =
|
|
4238
|
+
const touchInfoRef = React17.useRef(null);
|
|
4239
|
+
const elementRef = React17.useRef(null);
|
|
4240
|
+
const handleTouchStart = React17.useCallback((e) => {
|
|
4122
4241
|
if (!enabled) return;
|
|
4123
4242
|
const touch = e.touches[0];
|
|
4124
4243
|
touchInfoRef.current = {
|
|
@@ -4127,7 +4246,7 @@ var useSwipeGesture = (options) => {
|
|
|
4127
4246
|
startTime: Date.now()
|
|
4128
4247
|
};
|
|
4129
4248
|
}, [enabled]);
|
|
4130
|
-
const handleTouchEnd =
|
|
4249
|
+
const handleTouchEnd = React17.useCallback((e) => {
|
|
4131
4250
|
if (!enabled || !touchInfoRef.current) return;
|
|
4132
4251
|
const touch = e.changedTouches[0];
|
|
4133
4252
|
const { startX, startY, startTime } = touchInfoRef.current;
|
|
@@ -4151,7 +4270,7 @@ var useSwipeGesture = (options) => {
|
|
|
4151
4270
|
}
|
|
4152
4271
|
touchInfoRef.current = null;
|
|
4153
4272
|
}, [enabled, threshold, restraint, allowedTime, onSwipeLeft, onSwipeRight, onSwipeUp, onSwipeDown]);
|
|
4154
|
-
|
|
4273
|
+
React17.useEffect(() => {
|
|
4155
4274
|
const element = elementRef.current;
|
|
4156
4275
|
if (!element) return;
|
|
4157
4276
|
element.addEventListener("touchstart", handleTouchStart, { passive: true });
|
|
@@ -4215,10 +4334,10 @@ var Scheduler = ({
|
|
|
4215
4334
|
sidebarMenus,
|
|
4216
4335
|
customViews
|
|
4217
4336
|
}) => {
|
|
4218
|
-
const [activeCustomMenu, setActiveCustomMenu] =
|
|
4219
|
-
const [activeCustomViewId, setActiveCustomViewId] =
|
|
4337
|
+
const [activeCustomMenu, setActiveCustomMenu] = React17.useState(null);
|
|
4338
|
+
const [activeCustomViewId, setActiveCustomViewId] = React17.useState(null);
|
|
4220
4339
|
const REVERSE_TIME_KEY = "calendarkit:reverseTime";
|
|
4221
|
-
const [reverseTime, setReverseTime] =
|
|
4340
|
+
const [reverseTime, setReverseTime] = React17.useState(() => {
|
|
4222
4341
|
try {
|
|
4223
4342
|
const stored = localStorage.getItem(REVERSE_TIME_KEY);
|
|
4224
4343
|
return stored !== null ? stored === "true" : reverseTimeProp;
|
|
@@ -4226,21 +4345,21 @@ var Scheduler = ({
|
|
|
4226
4345
|
return reverseTimeProp;
|
|
4227
4346
|
}
|
|
4228
4347
|
});
|
|
4229
|
-
|
|
4348
|
+
React17.useEffect(() => {
|
|
4230
4349
|
try {
|
|
4231
4350
|
localStorage.setItem(REVERSE_TIME_KEY, String(reverseTime));
|
|
4232
4351
|
} catch {
|
|
4233
4352
|
}
|
|
4234
4353
|
}, [reverseTime]);
|
|
4235
|
-
const [activeDragEvent, setActiveDragEvent] =
|
|
4236
|
-
const schedulerRef =
|
|
4237
|
-
const [fabCssVars, setFabCssVars] =
|
|
4238
|
-
const [isMounted, setIsMounted] =
|
|
4239
|
-
const [isMobile, setIsMobile] =
|
|
4240
|
-
|
|
4354
|
+
const [activeDragEvent, setActiveDragEvent] = React17.useState(null);
|
|
4355
|
+
const schedulerRef = React17.useRef(null);
|
|
4356
|
+
const [fabCssVars, setFabCssVars] = React17.useState({});
|
|
4357
|
+
const [isMounted, setIsMounted] = React17.useState(false);
|
|
4358
|
+
const [isMobile, setIsMobile] = React17.useState(false);
|
|
4359
|
+
React17.useEffect(() => {
|
|
4241
4360
|
setIsMounted(true);
|
|
4242
4361
|
}, []);
|
|
4243
|
-
|
|
4362
|
+
React17.useEffect(() => {
|
|
4244
4363
|
if (!isMounted) return;
|
|
4245
4364
|
const mq = window.matchMedia("(max-width: 767px)");
|
|
4246
4365
|
const update = () => setIsMobile(mq.matches);
|
|
@@ -4248,7 +4367,7 @@ var Scheduler = ({
|
|
|
4248
4367
|
mq.addEventListener("change", update);
|
|
4249
4368
|
return () => mq.removeEventListener("change", update);
|
|
4250
4369
|
}, [isMounted]);
|
|
4251
|
-
const syncFabTheme =
|
|
4370
|
+
const syncFabTheme = React17.useCallback(() => {
|
|
4252
4371
|
const root = schedulerRef.current;
|
|
4253
4372
|
if (!root) return;
|
|
4254
4373
|
const cs = getComputedStyle(root);
|
|
@@ -4260,7 +4379,7 @@ var Scheduler = ({
|
|
|
4260
4379
|
});
|
|
4261
4380
|
setFabCssVars(next);
|
|
4262
4381
|
}, []);
|
|
4263
|
-
|
|
4382
|
+
React17.useEffect(() => {
|
|
4264
4383
|
if (!isMounted) return;
|
|
4265
4384
|
syncFabTheme();
|
|
4266
4385
|
}, [isMounted, theme, isDarkMode, syncFabTheme]);
|
|
@@ -4329,7 +4448,7 @@ var Scheduler = ({
|
|
|
4329
4448
|
});
|
|
4330
4449
|
}
|
|
4331
4450
|
};
|
|
4332
|
-
const id =
|
|
4451
|
+
const id = React17.useId();
|
|
4333
4452
|
const swipeRef = useViewSwipe(handlePrev, handleNext, true);
|
|
4334
4453
|
const t = getTranslations(language, translations ?? {});
|
|
4335
4454
|
const handleDragStart = (event) => {
|
|
@@ -4362,7 +4481,7 @@ var Scheduler = ({
|
|
|
4362
4481
|
}
|
|
4363
4482
|
return "150px";
|
|
4364
4483
|
};
|
|
4365
|
-
const filteredEvents =
|
|
4484
|
+
const filteredEvents = React17.useMemo(() => {
|
|
4366
4485
|
if (!calendars) return expandedEvents;
|
|
4367
4486
|
const activeCalendarIds = calendars.filter((c) => c.active !== false).map((c) => c.id);
|
|
4368
4487
|
return expandedEvents.filter((e) => {
|
|
@@ -4370,7 +4489,7 @@ var Scheduler = ({
|
|
|
4370
4489
|
return activeCalendarIds.includes(e.calendarId);
|
|
4371
4490
|
});
|
|
4372
4491
|
}, [expandedEvents, calendars]);
|
|
4373
|
-
const viewEventCount =
|
|
4492
|
+
const viewEventCount = React17.useMemo(() => {
|
|
4374
4493
|
let rangeStart;
|
|
4375
4494
|
let rangeEnd;
|
|
4376
4495
|
switch (view) {
|
|
@@ -4398,7 +4517,7 @@ var Scheduler = ({
|
|
|
4398
4517
|
(e) => e.start >= rangeStart && e.start <= rangeEnd
|
|
4399
4518
|
).length;
|
|
4400
4519
|
}, [filteredEvents, view, currentDate]);
|
|
4401
|
-
return /* @__PURE__ */
|
|
4520
|
+
return /* @__PURE__ */ React17__namespace.default.createElement(React17__namespace.default.Fragment, null, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4402
4521
|
core.DndContext,
|
|
4403
4522
|
{
|
|
4404
4523
|
id,
|
|
@@ -4407,7 +4526,7 @@ var Scheduler = ({
|
|
|
4407
4526
|
onDragEnd: onDragEndWrapper,
|
|
4408
4527
|
modifiers: modifiers$1
|
|
4409
4528
|
},
|
|
4410
|
-
/* @__PURE__ */
|
|
4529
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4411
4530
|
"div",
|
|
4412
4531
|
{
|
|
4413
4532
|
ref: schedulerRef,
|
|
@@ -4429,7 +4548,7 @@ var Scheduler = ({
|
|
|
4429
4548
|
isDarkMode,
|
|
4430
4549
|
onThemeToggle
|
|
4431
4550
|
})
|
|
4432
|
-
) : /* @__PURE__ */
|
|
4551
|
+
) : /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4433
4552
|
CalendarHeader,
|
|
4434
4553
|
{
|
|
4435
4554
|
currentDate,
|
|
@@ -4457,7 +4576,7 @@ var Scheduler = ({
|
|
|
4457
4576
|
hideLanguageSwitcher
|
|
4458
4577
|
}
|
|
4459
4578
|
),
|
|
4460
|
-
/* @__PURE__ */
|
|
4579
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-1 overflow-hidden" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4461
4580
|
framerMotion.motion.div,
|
|
4462
4581
|
{
|
|
4463
4582
|
className: "hidden md:block overflow-hidden shrink-0",
|
|
@@ -4471,7 +4590,7 @@ var Scheduler = ({
|
|
|
4471
4590
|
ease: [0.4, 0, 0.2, 1]
|
|
4472
4591
|
}
|
|
4473
4592
|
},
|
|
4474
|
-
/* @__PURE__ */
|
|
4593
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4475
4594
|
Sidebar,
|
|
4476
4595
|
{
|
|
4477
4596
|
currentDate,
|
|
@@ -4503,7 +4622,7 @@ var Scheduler = ({
|
|
|
4503
4622
|
}
|
|
4504
4623
|
}
|
|
4505
4624
|
)
|
|
4506
|
-
), /* @__PURE__ */
|
|
4625
|
+
), /* @__PURE__ */ React17__namespace.default.createElement(framerMotion.AnimatePresence, null, isSidebarOpen && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4507
4626
|
framerMotion.motion.div,
|
|
4508
4627
|
{
|
|
4509
4628
|
key: "mobile-sidebar-overlay",
|
|
@@ -4513,7 +4632,7 @@ var Scheduler = ({
|
|
|
4513
4632
|
exit: { opacity: 0 },
|
|
4514
4633
|
transition: { duration: 0.2 }
|
|
4515
4634
|
},
|
|
4516
|
-
/* @__PURE__ */
|
|
4635
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4517
4636
|
framerMotion.motion.div,
|
|
4518
4637
|
{
|
|
4519
4638
|
className: "w-[280px] h-full bg-background shadow-2xl overflow-hidden",
|
|
@@ -4522,7 +4641,7 @@ var Scheduler = ({
|
|
|
4522
4641
|
exit: { x: -280 },
|
|
4523
4642
|
transition: { duration: 0.25, ease: [0.4, 0, 0.2, 1] }
|
|
4524
4643
|
},
|
|
4525
|
-
/* @__PURE__ */
|
|
4644
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4526
4645
|
Sidebar,
|
|
4527
4646
|
{
|
|
4528
4647
|
currentDate,
|
|
@@ -4560,16 +4679,16 @@ var Scheduler = ({
|
|
|
4560
4679
|
}
|
|
4561
4680
|
)
|
|
4562
4681
|
),
|
|
4563
|
-
/* @__PURE__ */
|
|
4682
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4564
4683
|
framerMotion.motion.div,
|
|
4565
4684
|
{
|
|
4566
4685
|
className: "flex-1 bg-black/50 backdrop-blur-sm",
|
|
4567
4686
|
onClick: () => setIsSidebarOpen(false)
|
|
4568
4687
|
}
|
|
4569
4688
|
)
|
|
4570
|
-
)), /* @__PURE__ */
|
|
4689
|
+
)), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex-1 flex flex-col overflow-hidden relative min-h-0" }, activeCustomMenu !== null && sidebarMenus && /* @__PURE__ */ React17__namespace.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__ */ React17__namespace.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__ */ React17__namespace.default.createElement("div", { className: "flex-1 overflow-auto p-0 md:p-4 min-h-0" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "h-full min-w-full" }, view === "month" && /* @__PURE__ */ React17__namespace.default.createElement(MonthViewSkeleton, null), view === "week" && /* @__PURE__ */ React17__namespace.default.createElement(WeekViewSkeleton, null), view === "day" && /* @__PURE__ */ React17__namespace.default.createElement(DayViewSkeleton, null), view === "agenda" && /* @__PURE__ */ React17__namespace.default.createElement(AgendaViewSkeleton, null), view === "resource" && /* @__PURE__ */ React17__namespace.default.createElement(WeekViewSkeleton, null))) : (
|
|
4571
4690
|
/* overflow-hidden here: each view owns its own scroll container */
|
|
4572
|
-
/* @__PURE__ */
|
|
4691
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { ref: swipeRef, className: "flex-1 overflow-hidden p-0 md:p-4 touch-pan-y min-h-0" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "flex flex-col h-full min-w-full min-h-0" }, /* @__PURE__ */ React17__namespace.default.createElement(framerMotion.AnimatePresence, { mode: "wait", initial: false }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4573
4692
|
framerMotion.motion.div,
|
|
4574
4693
|
{
|
|
4575
4694
|
key: `${view}-${currentDate.toISOString()}-${timezone || "local"}`,
|
|
@@ -4593,7 +4712,7 @@ var Scheduler = ({
|
|
|
4593
4712
|
className: "flex-1 min-h-0 flex flex-col",
|
|
4594
4713
|
style: { height: "100%" }
|
|
4595
4714
|
},
|
|
4596
|
-
view === "month" && /* @__PURE__ */
|
|
4715
|
+
view === "month" && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4597
4716
|
MonthView,
|
|
4598
4717
|
{
|
|
4599
4718
|
currentDate,
|
|
@@ -4604,7 +4723,7 @@ var Scheduler = ({
|
|
|
4604
4723
|
locale
|
|
4605
4724
|
}
|
|
4606
4725
|
),
|
|
4607
|
-
view === "week" && /* @__PURE__ */
|
|
4726
|
+
view === "week" && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4608
4727
|
WeekView,
|
|
4609
4728
|
{
|
|
4610
4729
|
currentDate,
|
|
@@ -4620,7 +4739,7 @@ var Scheduler = ({
|
|
|
4620
4739
|
reverseTime
|
|
4621
4740
|
}
|
|
4622
4741
|
),
|
|
4623
|
-
view === "day" && /* @__PURE__ */
|
|
4742
|
+
view === "day" && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4624
4743
|
DayView,
|
|
4625
4744
|
{
|
|
4626
4745
|
currentDate,
|
|
@@ -4636,7 +4755,7 @@ var Scheduler = ({
|
|
|
4636
4755
|
reverseTime
|
|
4637
4756
|
}
|
|
4638
4757
|
),
|
|
4639
|
-
view === "agenda" && /* @__PURE__ */
|
|
4758
|
+
view === "agenda" && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4640
4759
|
AgendaView,
|
|
4641
4760
|
{
|
|
4642
4761
|
currentDate,
|
|
@@ -4648,7 +4767,7 @@ var Scheduler = ({
|
|
|
4648
4767
|
renderEmptyState
|
|
4649
4768
|
}
|
|
4650
4769
|
),
|
|
4651
|
-
view === "resource" && resources && /* @__PURE__ */
|
|
4770
|
+
view === "resource" && resources && /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4652
4771
|
ResourceView,
|
|
4653
4772
|
{
|
|
4654
4773
|
currentDate,
|
|
@@ -4672,7 +4791,7 @@ var Scheduler = ({
|
|
|
4672
4791
|
initialDate: modalInitialDate,
|
|
4673
4792
|
onSave: handleModalSave,
|
|
4674
4793
|
onDelete: handleModalDelete
|
|
4675
|
-
}) : /* @__PURE__ */
|
|
4794
|
+
}) : /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4676
4795
|
EventModal,
|
|
4677
4796
|
{
|
|
4678
4797
|
isOpen: isModalOpen,
|
|
@@ -4687,7 +4806,7 @@ var Scheduler = ({
|
|
|
4687
4806
|
language
|
|
4688
4807
|
}
|
|
4689
4808
|
),
|
|
4690
|
-
/* @__PURE__ */
|
|
4809
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4691
4810
|
EventContextMenu,
|
|
4692
4811
|
{
|
|
4693
4812
|
event: contextMenuEvent,
|
|
@@ -4720,7 +4839,7 @@ var Scheduler = ({
|
|
|
4720
4839
|
}
|
|
4721
4840
|
}
|
|
4722
4841
|
),
|
|
4723
|
-
/* @__PURE__ */
|
|
4842
|
+
/* @__PURE__ */ React17__namespace.default.createElement(core.DragOverlay, { dropAnimation: null }, activeDragEvent ? /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4724
4843
|
"div",
|
|
4725
4844
|
{
|
|
4726
4845
|
className: cn(
|
|
@@ -4738,17 +4857,17 @@ var Scheduler = ({
|
|
|
4738
4857
|
transform: "rotate(-2deg) scale(1.02)"
|
|
4739
4858
|
}
|
|
4740
4859
|
},
|
|
4741
|
-
/* @__PURE__ */
|
|
4860
|
+
/* @__PURE__ */ React17__namespace.default.createElement("div", { className: "p-2.5 h-full flex flex-col" }, /* @__PURE__ */ React17__namespace.default.createElement(
|
|
4742
4861
|
"div",
|
|
4743
4862
|
{
|
|
4744
4863
|
className: "absolute left-0 top-0 bottom-0 w-1 rounded-l-lg",
|
|
4745
4864
|
style: { backgroundColor: activeDragEvent.color || "var(--primary)" }
|
|
4746
4865
|
}
|
|
4747
|
-
), /* @__PURE__ */
|
|
4866
|
+
), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "pl-2" }, /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "font-semibold truncate text-sm" }, activeDragEvent.title), (view === "week" || view === "day") && getDragHeight() && getDragHeight() > 40 && /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "text-xs opacity-80 mt-0.5 flex items-center gap-1" }, /* @__PURE__ */ React17__namespace.default.createElement("svg", { className: "w-3 h-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" }, /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React17__namespace.default.createElement("path", { d: "M12 6v6l4 2" })), dateFns.format(activeDragEvent.start, getTimeFormatFull(language)), " - ", dateFns.format(activeDragEvent.end, getTimeFormatFull(language)))), /* @__PURE__ */ React17__namespace.default.createElement("div", { className: "absolute bottom-1.5 right-1.5 opacity-60" }, /* @__PURE__ */ React17__namespace.default.createElement("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "9", cy: "5", r: "1.5" }), /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "15", cy: "5", r: "1.5" }), /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "9", cy: "12", r: "1.5" }), /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "15", cy: "12", r: "1.5" }), /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "9", cy: "19", r: "1.5" }), /* @__PURE__ */ React17__namespace.default.createElement("circle", { cx: "15", cy: "19", r: "1.5" }))))
|
|
4748
4867
|
) : null)
|
|
4749
4868
|
)
|
|
4750
4869
|
), isMounted && isMobile && !readOnly && reactDom.createPortal(
|
|
4751
|
-
/* @__PURE__ */
|
|
4870
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4752
4871
|
"div",
|
|
4753
4872
|
{
|
|
4754
4873
|
style: {
|
|
@@ -4760,7 +4879,7 @@ var Scheduler = ({
|
|
|
4760
4879
|
...fabCssVars
|
|
4761
4880
|
}
|
|
4762
4881
|
},
|
|
4763
|
-
/* @__PURE__ */
|
|
4882
|
+
/* @__PURE__ */ React17__namespace.default.createElement(
|
|
4764
4883
|
"button",
|
|
4765
4884
|
{
|
|
4766
4885
|
type: "button",
|
|
@@ -4781,7 +4900,7 @@ var Scheduler = ({
|
|
|
4781
4900
|
boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.25)"
|
|
4782
4901
|
}
|
|
4783
4902
|
},
|
|
4784
|
-
/* @__PURE__ */
|
|
4903
|
+
/* @__PURE__ */ React17__namespace.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__ */ React17__namespace.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React17__namespace.default.createElement("path", { d: "M12 5v14" }))
|
|
4785
4904
|
)
|
|
4786
4905
|
),
|
|
4787
4906
|
document.body
|
|
@@ -4790,11 +4909,16 @@ var Scheduler = ({
|
|
|
4790
4909
|
var ProScheduler = Scheduler;
|
|
4791
4910
|
|
|
4792
4911
|
exports.DATE_FNS_LOCALES = DATE_FNS_LOCALES;
|
|
4912
|
+
exports.EVENT_BADGES = EVENT_BADGES;
|
|
4913
|
+
exports.EVENT_BADGE_ICONS = EVENT_BADGE_ICONS;
|
|
4793
4914
|
exports.LANGUAGE_META = LANGUAGE_META;
|
|
4794
4915
|
exports.LOCALES = LOCALES;
|
|
4795
4916
|
exports.ProScheduler = ProScheduler;
|
|
4796
4917
|
exports.Scheduler = Scheduler;
|
|
4797
4918
|
exports.cn = cn;
|
|
4919
|
+
exports.getEventBadge = getEventBadge;
|
|
4798
4920
|
exports.getTranslations = getTranslations;
|
|
4921
|
+
exports.isBuiltInEventBadgeId = isBuiltInEventBadgeId;
|
|
4922
|
+
exports.resolveEventBadge = resolveEventBadge;
|
|
4799
4923
|
//# sourceMappingURL=index.js.map
|
|
4800
4924
|
//# sourceMappingURL=index.js.map
|