@eclass/ui-kit 1.58.2 → 1.58.4

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);
@@ -10240,8 +10272,9 @@ const EventsList = ({
10240
10272
  type,
10241
10273
  unitName
10242
10274
  }) => {
10243
- var _a, _b;
10275
+ var _a, _b, _c;
10244
10276
  const border = `1px solid ${(_a = vars("colors-neutral-platinum")) != null ? _a : "#E8E8E8"}`;
10277
+ const hoverBg = (_b = vars("colors-neutral-cultured2")) != null ? _b : "#F8F8F8";
10245
10278
  const isClickable = Boolean(onClick);
10246
10279
  const initOrEnd = ["end-course", "init-course", "init-course-flexible", "end-course-flexible"].includes(type);
10247
10280
  const dateTextStyle = {
@@ -10251,7 +10284,7 @@ const EventsList = ({
10251
10284
  lineHeight: "100%"
10252
10285
  };
10253
10286
  const detailTextStyle = {
10254
- color: (_b = vars("colors-neutral-gray")) != null ? _b : "#808080",
10287
+ color: (_c = vars("colors-neutral-gray")) != null ? _c : "#808080",
10255
10288
  fontSize: "14px",
10256
10289
  display: "inline",
10257
10290
  gap: "4px",
@@ -10265,6 +10298,10 @@ const EventsList = ({
10265
10298
  cursor: isClickable ? "pointer" : "default",
10266
10299
  onClick,
10267
10300
  p: "16px",
10301
+ transition: "background-color 0.2s ease",
10302
+ _hover: isClickable ? {
10303
+ bg: hoverBg
10304
+ } : void 0,
10268
10305
  children: [/* @__PURE__ */ jsxs(Box, {
10269
10306
  bg: color,
10270
10307
  minW: "88px",