@eclass/ui-kit 1.58.1 → 1.58.3

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.
@@ -9602,6 +9602,38 @@ function validateTimezone(_hours, minutes) {
9602
9602
  const STORAGE_TODAY_EVENT = "todayEvents";
9603
9603
  const STORAGE_SEEN_EVENT = "seenEvents";
9604
9604
  const STORAGE_HAS_NEW = "hasNewEvents";
9605
+ const getStorage = () => {
9606
+ if (typeof window === "undefined")
9607
+ return null;
9608
+ try {
9609
+ return window.localStorage;
9610
+ } catch {
9611
+ return null;
9612
+ }
9613
+ };
9614
+ const readStorageArray = (key) => {
9615
+ const storage = getStorage();
9616
+ if (!storage)
9617
+ return [];
9618
+ try {
9619
+ const value = storage.getItem(key);
9620
+ if (!value)
9621
+ return [];
9622
+ const parsed = JSON.parse(value);
9623
+ return Array.isArray(parsed) ? parsed : [];
9624
+ } catch {
9625
+ return [];
9626
+ }
9627
+ };
9628
+ const writeStorageValue = (key, value) => {
9629
+ const storage = getStorage();
9630
+ if (!storage)
9631
+ return;
9632
+ try {
9633
+ storage.setItem(key, JSON.stringify(value));
9634
+ } catch {
9635
+ }
9636
+ };
9605
9637
  const useParseEvents = (events, now) => {
9606
9638
  const [todayEvents, setTodayEvents] = useState([]);
9607
9639
  const [tomorrowEvents, setTomorrowEvents] = useState([]);
@@ -9609,12 +9641,11 @@ const useParseEvents = (events, now) => {
9609
9641
  const [hasNew, setHasNew] = useState(false);
9610
9642
  const [hasMoreNext, setHasMoreNext] = useState(false);
9611
9643
  useEffect(() => {
9612
- var _a, _b;
9613
9644
  const parseNow = parseISO(now);
9614
9645
  const today = startOfDay(parseNow);
9615
9646
  const tomorrow = addDays(today, 1);
9616
- const storedTodayEvent = JSON.parse((_a = localStorage.getItem(STORAGE_TODAY_EVENT)) != null ? _a : "[]");
9617
- const storedSeenEvent = JSON.parse((_b = localStorage.getItem(STORAGE_SEEN_EVENT)) != null ? _b : "[]");
9647
+ const storedTodayEvent = readStorageArray(STORAGE_TODAY_EVENT);
9648
+ const storedSeenEvent = readStorageArray(STORAGE_SEEN_EVENT);
9618
9649
  let newEvents = false;
9619
9650
  const todayList = [];
9620
9651
  const tomorrowList = [];
@@ -9642,20 +9673,21 @@ const useParseEvents = (events, now) => {
9642
9673
  if (nextList.length > 5) {
9643
9674
  setHasMoreNext(true);
9644
9675
  next = next.slice(0, 5);
9676
+ } else {
9677
+ setHasMoreNext(false);
9645
9678
  }
9646
9679
  setNextEvents(next);
9647
9680
  setHasNew(newEvents);
9648
- localStorage.setItem(STORAGE_TODAY_EVENT, JSON.stringify(storedTodayEvent));
9649
- localStorage.setItem(STORAGE_HAS_NEW, JSON.stringify(newEvents));
9681
+ writeStorageValue(STORAGE_TODAY_EVENT, storedTodayEvent);
9682
+ writeStorageValue(STORAGE_HAS_NEW, newEvents);
9650
9683
  }, [events, now]);
9651
9684
  const closeAndMarkSeen = () => {
9652
- var _a;
9653
- const storedSeenEvent = JSON.parse((_a = localStorage.getItem(STORAGE_SEEN_EVENT)) != null ? _a : "[]");
9685
+ const storedSeenEvent = readStorageArray(STORAGE_SEEN_EVENT);
9654
9686
  const updatedSeenEvents = Array.from(
9655
9687
  /* @__PURE__ */ new Set([...storedSeenEvent, ...todayEvents.map((e2) => e2.id)])
9656
9688
  );
9657
- localStorage.setItem(STORAGE_SEEN_EVENT, JSON.stringify(updatedSeenEvents));
9658
- localStorage.setItem(STORAGE_HAS_NEW, JSON.stringify(false));
9689
+ writeStorageValue(STORAGE_SEEN_EVENT, updatedSeenEvents);
9690
+ writeStorageValue(STORAGE_HAS_NEW, false);
9659
9691
  setTimeout(() => {
9660
9692
  setTodayEvents(todayEvents.map((el) => ({ ...el, isNew: false })));
9661
9693
  }, 300);
@@ -10242,6 +10274,7 @@ const EventsList = ({
10242
10274
  }) => {
10243
10275
  var _a, _b;
10244
10276
  const border = `1px solid ${(_a = vars("colors-neutral-platinum")) != null ? _a : "#E8E8E8"}`;
10277
+ const isClickable = Boolean(onClick);
10245
10278
  const initOrEnd = ["end-course", "init-course", "init-course-flexible", "end-course-flexible"].includes(type);
10246
10279
  const dateTextStyle = {
10247
10280
  color: vars("colors-neutral-white"),
@@ -10259,11 +10292,11 @@ const EventsList = ({
10259
10292
  return /* @__PURE__ */ jsxs(Box, {
10260
10293
  className: "eventsList",
10261
10294
  borderTop: border,
10262
- cursor: onClick ? "pointer" : "default",
10263
- p: "16px",
10264
10295
  display: "flex",
10265
10296
  gap: "12px",
10297
+ cursor: isClickable ? "pointer" : "default",
10266
10298
  onClick,
10299
+ p: "16px",
10267
10300
  children: [/* @__PURE__ */ jsxs(Box, {
10268
10301
  bg: color,
10269
10302
  minW: "88px",