@sonordev/site-kit 2.5.6 → 2.5.8

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.
Files changed (33) hide show
  1. package/dist/EngageWidget-4W5EM4UO.mjs +4 -0
  2. package/dist/{EngageWidget-VCMSEZIF.mjs.map → EngageWidget-4W5EM4UO.mjs.map} +1 -1
  3. package/dist/EngageWidget-JIXUBG47.js +13 -0
  4. package/dist/{EngageWidget-XUYC27CV.js.map → EngageWidget-JIXUBG47.js.map} +1 -1
  5. package/dist/{chunk-BYCLAEHI.js → chunk-FJVQO6RW.js} +3 -3
  6. package/dist/{chunk-BYCLAEHI.js.map → chunk-FJVQO6RW.js.map} +1 -1
  7. package/dist/{chunk-WET5VJRP.mjs → chunk-GGK5XOY5.mjs} +170 -18
  8. package/dist/chunk-GGK5XOY5.mjs.map +1 -0
  9. package/dist/{chunk-YX23HISG.mjs → chunk-IAV32YHL.mjs} +17 -15
  10. package/dist/chunk-IAV32YHL.mjs.map +1 -0
  11. package/dist/{chunk-CCU7EY5V.mjs → chunk-SAIQO5EO.mjs} +3 -3
  12. package/dist/{chunk-CCU7EY5V.mjs.map → chunk-SAIQO5EO.mjs.map} +1 -1
  13. package/dist/{chunk-7EPMDUE6.js → chunk-SLJJJWMV.js} +17 -15
  14. package/dist/chunk-SLJJJWMV.js.map +1 -0
  15. package/dist/{chunk-TA2RGEE3.js → chunk-YNZJGZ32.js} +170 -18
  16. package/dist/chunk-YNZJGZ32.js.map +1 -0
  17. package/dist/commerce/index.js +45 -45
  18. package/dist/commerce/index.mjs +1 -1
  19. package/dist/engage/index.js +4 -4
  20. package/dist/engage/index.mjs +1 -1
  21. package/dist/index.js +25 -25
  22. package/dist/index.mjs +1 -1
  23. package/dist/layout/client.js +2 -2
  24. package/dist/layout/client.mjs +1 -1
  25. package/dist/layout/index.js +2 -2
  26. package/dist/layout/index.mjs +1 -1
  27. package/package.json +1 -1
  28. package/dist/EngageWidget-VCMSEZIF.mjs +0 -4
  29. package/dist/EngageWidget-XUYC27CV.js +0 -13
  30. package/dist/chunk-7EPMDUE6.js.map +0 -1
  31. package/dist/chunk-TA2RGEE3.js.map +0 -1
  32. package/dist/chunk-WET5VJRP.mjs.map +0 -1
  33. package/dist/chunk-YX23HISG.mjs.map +0 -1
@@ -6470,7 +6470,8 @@ function EventsWidget({
6470
6470
  ] })
6471
6471
  ] });
6472
6472
  }
6473
- const displayEvents = effectiveView === "list" || effectiveView === "grid" ? events.slice(0, limit) : events;
6473
+ const groupedList = groupEventsByOffering(events).slice(0, limit);
6474
+ const displayEvents = effectiveView === "grid" ? events.slice(0, limit) : events;
6474
6475
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `site-kit-events-widget ${className}`, children: [
6475
6476
  (title || subtitle || showViewToggle) && /* @__PURE__ */ jsxRuntime.jsxs(
6476
6477
  "div",
@@ -6583,16 +6584,31 @@ function EventsWidget({
6583
6584
  }
6584
6585
  ),
6585
6586
  effectiveView === "list" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `site-kit-events-list ${listClassName}`, children: [
6586
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: displayEvents.map((eventItem, index) => {
6587
- const nextSchedule = eventItem.next_schedule || eventItem.schedules?.[0];
6587
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
6588
+ .sk-date-pills { display: flex; flex-wrap: wrap; gap: 0.375rem; }
6589
+ .sk-date-select-wrap { display: none; }
6590
+ @media (max-width: 640px) {
6591
+ .sk-date-pills { display: none; }
6592
+ .sk-date-select-wrap { display: block; }
6593
+ .site-kit-event-card { flex-direction: column !important; }
6594
+ .site-kit-event-card-image { width: 100% !important; min-width: 0 !important; min-height: 140px !important; }
6595
+ }
6596
+ ` }),
6597
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: groupedList.map(({ event: eventItem, schedules: allSchedules }) => {
6598
+ const schedules = allSchedules.length > 0 ? allSchedules : eventItem.next_schedule ? [eventItem.next_schedule] : [];
6599
+ const isMulti = schedules.length > 1;
6600
+ const primarySchedule = schedules[0] || eventItem.next_schedule || eventItem.schedules?.[0];
6588
6601
  const isFree = !eventItem.price || eventItem.price === 0;
6589
6602
  const imageUrl = eventItem.featured_image_url;
6590
- const uniqueKey = nextSchedule ? `${eventItem.id}-${nextSchedule.id}` : `${eventItem.id}-${index}`;
6603
+ const uniqueKey = eventItem.id;
6591
6604
  return /* @__PURE__ */ jsxRuntime.jsxs(
6592
6605
  "div",
6593
6606
  {
6594
6607
  className: `site-kit-event-card ${eventCardClassName}`,
6595
- onClick: () => nextSchedule && handleEventClick(eventItem, nextSchedule),
6608
+ onClick: (e) => {
6609
+ if (e.target.closest("[data-sk-date-selector]")) return;
6610
+ if (!isMulti && primarySchedule) handleEventClick(eventItem, primarySchedule);
6611
+ },
6596
6612
  style: {
6597
6613
  display: "flex",
6598
6614
  flexDirection: "row",
@@ -6601,12 +6617,12 @@ function EventsWidget({
6601
6617
  background: "var(--sk-bg)",
6602
6618
  border: "1px solid var(--sk-border)",
6603
6619
  borderRadius: "0.75rem",
6604
- cursor: nextSchedule ? "pointer" : "default",
6620
+ cursor: !isMulti && primarySchedule ? "pointer" : "default",
6605
6621
  transition: "all 150ms",
6606
6622
  overflow: "hidden"
6607
6623
  },
6608
6624
  onMouseEnter: (e) => {
6609
- if (nextSchedule) {
6625
+ if (!isMulti && primarySchedule) {
6610
6626
  e.currentTarget.style.borderColor = "var(--sk-primary)";
6611
6627
  e.currentTarget.style.boxShadow = "0 4px 6px -1px rgba(0, 0, 0, 0.1)";
6612
6628
  }
@@ -6616,7 +6632,7 @@ function EventsWidget({
6616
6632
  e.currentTarget.style.boxShadow = "none";
6617
6633
  },
6618
6634
  children: [
6619
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: {
6635
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "site-kit-event-card-image", style: {
6620
6636
  width: "160px",
6621
6637
  minWidth: "160px",
6622
6638
  flexShrink: 0,
@@ -6676,23 +6692,130 @@ function EventsWidget({
6676
6692
  whiteSpace: "nowrap"
6677
6693
  }, children: isFree ? "Free" : formatPrice(eventItem.price ?? 0, eventItem.currency) })
6678
6694
  ] }),
6679
- nextSchedule && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: "1rem", fontSize: "0.875rem", color: "var(--sk-text-secondary)" }, children: [
6695
+ !isMulti && primarySchedule && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: "1rem", fontSize: "0.875rem", color: "var(--sk-text-secondary)" }, children: [
6680
6696
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "flex", alignItems: "center", gap: "0.375rem" }, children: [
6681
6697
  /* @__PURE__ */ jsxRuntime.jsx(CalendarIcon, {}),
6682
- formatDate(nextSchedule.starts_at)
6698
+ formatDate(primarySchedule.starts_at)
6683
6699
  ] }),
6684
6700
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "flex", alignItems: "center", gap: "0.375rem" }, children: [
6685
6701
  /* @__PURE__ */ jsxRuntime.jsx(ClockIcon, {}),
6686
- formatTime(nextSchedule.starts_at)
6702
+ formatTime(primarySchedule.starts_at)
6687
6703
  ] }),
6688
6704
  eventItem.location && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "flex", alignItems: "center", gap: "0.375rem" }, children: [
6689
6705
  /* @__PURE__ */ jsxRuntime.jsx(LocationIcon, {}),
6690
6706
  eventItem.location
6691
6707
  ] }),
6692
- nextSchedule.spots_remaining !== null && nextSchedule.spots_remaining !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { style: {
6693
- color: nextSchedule.spots_remaining < 5 ? "var(--sk-error)" : "var(--sk-text-secondary)",
6694
- fontWeight: nextSchedule.spots_remaining < 5 ? 500 : 400
6695
- }, children: nextSchedule.spots_remaining === 0 ? "Sold Out" : `${nextSchedule.spots_remaining} spots left` })
6708
+ primarySchedule.spots_remaining !== null && primarySchedule.spots_remaining !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { style: {
6709
+ color: primarySchedule.spots_remaining < 5 ? "var(--sk-error)" : "var(--sk-text-secondary)",
6710
+ fontWeight: primarySchedule.spots_remaining < 5 ? 500 : 400
6711
+ }, children: primarySchedule.spots_remaining === 0 ? "Sold Out" : `${primarySchedule.spots_remaining} spots left` })
6712
+ ] }),
6713
+ isMulti && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-sk-date-selector": true, onClick: (e) => e.stopPropagation(), children: [
6714
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: "1rem", fontSize: "0.875rem", color: "var(--sk-text-secondary)", marginBottom: "0.625rem" }, children: [
6715
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "flex", alignItems: "center", gap: "0.375rem", fontWeight: 500, color: "var(--sk-text-primary)" }, children: [
6716
+ /* @__PURE__ */ jsxRuntime.jsx(CalendarIcon, {}),
6717
+ schedules.length,
6718
+ " dates available"
6719
+ ] }),
6720
+ eventItem.location && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "flex", alignItems: "center", gap: "0.375rem" }, children: [
6721
+ /* @__PURE__ */ jsxRuntime.jsx(LocationIcon, {}),
6722
+ eventItem.location
6723
+ ] }),
6724
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
6725
+ formatDate(schedules[0].starts_at),
6726
+ " \u2013 ",
6727
+ formatDate(schedules[schedules.length - 1].starts_at)
6728
+ ] })
6729
+ ] }),
6730
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-date-pills", children: schedules.map((s) => {
6731
+ const soldOut = s.spots_remaining === 0;
6732
+ const low = !soldOut && s.spots_remaining !== null && s.spots_remaining !== void 0 && s.spots_remaining < 5;
6733
+ return /* @__PURE__ */ jsxRuntime.jsxs(
6734
+ "button",
6735
+ {
6736
+ type: "button",
6737
+ onClick: () => !soldOut && handleEventClick(eventItem, s),
6738
+ disabled: soldOut,
6739
+ title: `${formatDate(s.starts_at)} \u2022 ${formatTime(s.starts_at)}${soldOut ? " (Sold Out)" : low ? ` (${s.spots_remaining} left)` : ""}`,
6740
+ style: {
6741
+ display: "inline-flex",
6742
+ alignItems: "center",
6743
+ gap: "0.375rem",
6744
+ padding: "0.375rem 0.75rem",
6745
+ borderRadius: "9999px",
6746
+ border: "1px solid var(--sk-border)",
6747
+ background: soldOut ? "var(--sk-surface)" : "var(--sk-bg)",
6748
+ color: soldOut ? "var(--sk-text-secondary)" : "var(--sk-text-primary)",
6749
+ fontSize: "0.8125rem",
6750
+ fontWeight: 500,
6751
+ cursor: soldOut ? "not-allowed" : "pointer",
6752
+ textDecoration: soldOut ? "line-through" : "none",
6753
+ transition: "all 150ms",
6754
+ whiteSpace: "nowrap"
6755
+ },
6756
+ onMouseEnter: (e) => {
6757
+ if (!soldOut) {
6758
+ e.currentTarget.style.background = "var(--sk-primary)";
6759
+ e.currentTarget.style.color = "var(--sk-bg)";
6760
+ e.currentTarget.style.borderColor = "var(--sk-primary)";
6761
+ }
6762
+ },
6763
+ onMouseLeave: (e) => {
6764
+ if (!soldOut) {
6765
+ e.currentTarget.style.background = "var(--sk-bg)";
6766
+ e.currentTarget.style.color = "var(--sk-text-primary)";
6767
+ e.currentTarget.style.borderColor = "var(--sk-border)";
6768
+ }
6769
+ },
6770
+ children: [
6771
+ formatDate(s.starts_at),
6772
+ " \xB7 ",
6773
+ formatTime(s.starts_at),
6774
+ low && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { color: "var(--sk-error)", fontWeight: 600, fontSize: "0.75rem" }, children: [
6775
+ s.spots_remaining,
6776
+ " left"
6777
+ ] })
6778
+ ]
6779
+ },
6780
+ s.id
6781
+ );
6782
+ }) }),
6783
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-date-select-wrap", children: /* @__PURE__ */ jsxRuntime.jsxs(
6784
+ "select",
6785
+ {
6786
+ defaultValue: "",
6787
+ onChange: (e) => {
6788
+ const scheduleId = e.target.value;
6789
+ const s = schedules.find((x) => x.id === scheduleId);
6790
+ if (s) handleEventClick(eventItem, s);
6791
+ e.currentTarget.value = "";
6792
+ },
6793
+ style: {
6794
+ width: "100%",
6795
+ padding: "0.625rem 0.75rem",
6796
+ border: "1px solid var(--sk-border)",
6797
+ borderRadius: "0.5rem",
6798
+ background: "var(--sk-bg)",
6799
+ color: "var(--sk-text-primary)",
6800
+ fontSize: "0.875rem",
6801
+ fontWeight: 500,
6802
+ cursor: "pointer"
6803
+ },
6804
+ children: [
6805
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: true, children: "Select a date to register\u2026" }),
6806
+ schedules.map((s) => {
6807
+ const soldOut = s.spots_remaining === 0;
6808
+ const low = !soldOut && s.spots_remaining !== null && s.spots_remaining !== void 0 && s.spots_remaining < 5;
6809
+ return /* @__PURE__ */ jsxRuntime.jsxs("option", { value: s.id, disabled: soldOut, children: [
6810
+ formatDate(s.starts_at),
6811
+ " \xB7 ",
6812
+ formatTime(s.starts_at),
6813
+ soldOut ? " \u2014 Sold Out" : low ? ` \u2014 ${s.spots_remaining} left` : ""
6814
+ ] }, s.id);
6815
+ })
6816
+ ]
6817
+ }
6818
+ ) })
6696
6819
  ] })
6697
6820
  ] })
6698
6821
  ]
@@ -6700,7 +6823,7 @@ function EventsWidget({
6700
6823
  uniqueKey
6701
6824
  );
6702
6825
  }) }),
6703
- showViewAll && events.length > limit && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { textAlign: "center", marginTop: "1.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(
6826
+ showViewAll && groupedList.length >= limit && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { textAlign: "center", marginTop: "1.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(
6704
6827
  "a",
6705
6828
  {
6706
6829
  href: viewAllUrl,
@@ -6850,6 +6973,35 @@ function getApiKey2() {
6850
6973
  }
6851
6974
  return "";
6852
6975
  }
6976
+ function groupEventsByOffering(events) {
6977
+ const groups = /* @__PURE__ */ new Map();
6978
+ for (const ev of events) {
6979
+ const incoming = (ev.schedules || []).filter(Boolean);
6980
+ const existing = groups.get(ev.id);
6981
+ if (existing) {
6982
+ for (const s of incoming) {
6983
+ if (!existing.schedules.some((x) => x.id === s.id)) {
6984
+ existing.schedules.push(s);
6985
+ }
6986
+ }
6987
+ } else {
6988
+ groups.set(ev.id, { event: ev, schedules: [...incoming] });
6989
+ }
6990
+ }
6991
+ for (const g of groups.values()) {
6992
+ g.schedules.sort(
6993
+ (a, b) => new Date(a.starts_at).getTime() - new Date(b.starts_at).getTime()
6994
+ );
6995
+ }
6996
+ return Array.from(groups.values()).sort((a, b) => {
6997
+ const aFirst = a.schedules[0]?.starts_at;
6998
+ const bFirst = b.schedules[0]?.starts_at;
6999
+ if (!aFirst && !bFirst) return 0;
7000
+ if (!aFirst) return 1;
7001
+ if (!bFirst) return -1;
7002
+ return new Date(aFirst).getTime() - new Date(bFirst).getTime();
7003
+ });
7004
+ }
6853
7005
 
6854
7006
  exports.CalendarView = CalendarView;
6855
7007
  exports.CheckoutForm = CheckoutForm;
@@ -6895,5 +7047,5 @@ exports.registerForEvent = registerForEvent;
6895
7047
  exports.useEventModal = useEventModal;
6896
7048
  exports.validateAddress = validateAddress;
6897
7049
  exports.validateDiscountCode = validateDiscountCode;
6898
- //# sourceMappingURL=chunk-TA2RGEE3.js.map
6899
- //# sourceMappingURL=chunk-TA2RGEE3.js.map
7050
+ //# sourceMappingURL=chunk-YNZJGZ32.js.map
7051
+ //# sourceMappingURL=chunk-YNZJGZ32.js.map