@burdenoff/microfe-eventfullymanaged 2026.713.1 → 2026.719.1

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 (29) hide show
  1. package/dist/eventfullymanaged/api/eventApi.d.ts +40 -0
  2. package/dist/eventfullymanaged/api/eventApi.d.ts.map +1 -1
  3. package/dist/eventfullymanaged/api/eventApi.js +147 -117
  4. package/dist/eventfullymanaged/api/eventApi.js.map +1 -1
  5. package/dist/eventfullymanaged/pages/events/SessionFormPage.d.ts.map +1 -1
  6. package/dist/eventfullymanaged/pages/events/SessionFormPage.js +152 -135
  7. package/dist/eventfullymanaged/pages/events/SessionFormPage.js.map +1 -1
  8. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.d.ts.map +1 -1
  9. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +154 -117
  10. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
  11. package/dist/eventfullymanaged/pages/modules/CommunicationPage.d.ts.map +1 -1
  12. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +228 -187
  13. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
  14. package/dist/eventfullymanaged/pages/modules/EventsPage.d.ts.map +1 -1
  15. package/dist/eventfullymanaged/pages/modules/EventsPage.js +233 -122
  16. package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
  17. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.d.ts.map +1 -1
  18. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.js +255 -254
  19. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.js.map +1 -1
  20. package/dist/eventfullymanaged/types/index.d.ts.map +1 -1
  21. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -1
  22. package/dist/services/createSandboxAssistantTransport.js.map +1 -1
  23. package/dist/stories/ActionMenu.stories.d.ts +10 -0
  24. package/dist/stories/ActionMenu.stories.d.ts.map +1 -0
  25. package/dist/stories/Pagination.stories.d.ts +11 -0
  26. package/dist/stories/Pagination.stories.d.ts.map +1 -0
  27. package/dist/stories/SafeLink.stories.d.ts +11 -0
  28. package/dist/stories/SafeLink.stories.d.ts.map +1 -0
  29. package/package.json +12 -1
@@ -1,14 +1,20 @@
1
1
  import { notify as e } from "../../lib/toast.js";
2
- import { useAnnouncementsQuery as t, useCommunicationCampaignsQuery as n, usePublishAnnouncementMutation as r, useSendCommunicationCampaignMutation as i, useUpsertAnnouncementMutation as a, useUpsertCommunicationCampaignMutation as o } from "../../api/eventApi.js";
3
- import { Pagination as s, usePagination as c } from "../../components/Pagination.js";
4
- import { describeError as l, mutationSucceeded as u } from "../../lib/mutationResult.js";
5
- import { useMemo as d, useState as f } from "react";
6
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
7
- import { Mail as h, Megaphone as g, Plus as _, Send as v, Upload as y } from "lucide-react";
8
- import { useI18n as b } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
- import { Badge as x, Button as S, GlassCard as C, GradientText as ee, IllustratedEmptyState as w, Input as T, PagePurpose as E, Textarea as D } from "@burdenoff/fe-libs/ui";
2
+ import { useAnnouncementsQuery as t, useCommunicationCampaignsQuery as n, usePublishAnnouncementMutation as r, useSendCommunicationCampaignMutation as i, useUpsertAnnouncementMutation as a, useUpsertCommunicationCampaignMutation as ee } from "../../api/eventApi.js";
3
+ import { Pagination as o, usePagination as s } from "../../components/Pagination.js";
4
+ import { describeError as c, mutationSucceeded as l } from "../../lib/mutationResult.js";
5
+ import { useMemo as u, useState as d } from "react";
6
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
7
+ import { Mail as m, Megaphone as h, Plus as g, Send as _, Upload as v } from "lucide-react";
8
+ import { useI18n as y } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
+ import { Badge as b, Button as x, GlassCard as S, GradientText as te, IllustratedEmptyState as C, Input as w, PagePurpose as ne, Textarea as re } from "@burdenoff/fe-libs/ui";
10
10
  //#region src/eventfullymanaged/pages/modules/CommunicationPage.tsx
11
- function O(e) {
11
+ function T(e) {
12
+ let t = e.metadata?.schedule;
13
+ if (!t || typeof t != "object" || Array.isArray(t)) return null;
14
+ let n = t.sendAt;
15
+ return typeof n == "string" && n ? n : null;
16
+ }
17
+ function E(e) {
12
18
  let t = e.toLowerCase();
13
19
  return [
14
20
  "published",
@@ -27,310 +33,345 @@ function O(e) {
27
33
  "scheduled"
28
34
  ].includes(t) ? "info" : "secondary";
29
35
  }
30
- var k = (e) => {
36
+ var D = (e) => {
31
37
  let t = (e ?? "").toLowerCase();
32
- return t === "" || t === "draft" || t === "created";
33
- }, A = (e, t) => e.title ?? e.name ?? `${t} ${e.id}`;
34
- function j() {
35
- let { t: j } = b(), M = (e, t) => {
36
- let n = j(e);
38
+ return t === "" || t === "draft" || t === "created" || t === "scheduled";
39
+ }, O = (e, t) => e.title ?? e.name ?? `${t} ${e.id}`;
40
+ function k() {
41
+ let { t: k } = y(), A = (e, t) => {
42
+ let n = k(e);
37
43
  return n === e ? t : n;
38
- }, N = c({ pageSize: 8 }), P = c({ pageSize: 8 }), F = t({
39
- limit: N.limit,
40
- offset: N.offset
41
- }), I = n({
42
- limit: P.limit,
43
- offset: P.offset
44
- }), [L, { loading: te }] = a(), [ne, { loading: re }] = r(), [ie, { loading: ae }] = o(), [R, { loading: z }] = i(), [B, V] = f("announcement"), [H, U] = f(""), [W, G] = f(""), [K, q] = f(""), J = d(() => F.data?.announcements.items ?? [], [F.data]), Y = F.data?.announcements.total ?? 0, X = d(() => I.data?.communicationCampaigns.items ?? [], [I.data]), Z = I.data?.communicationCampaigns.total ?? 0, Q = B === "announcement" ? te : ae, $ = () => {
45
- U(""), G(""), q("");
46
- }, oe = async () => {
47
- if (!H.trim()) {
48
- e.error(M("eventfullymanaged.communication.subjectRequired", "Subject required"), "");
44
+ }, j = s({ pageSize: 8 }), M = s({ pageSize: 8 }), N = t({
45
+ limit: j.limit,
46
+ offset: j.offset
47
+ }), P = n({
48
+ limit: M.limit,
49
+ offset: M.offset
50
+ }), [F, { loading: ie }] = a(), [ae, { loading: oe }] = r(), [se, { loading: I }] = ee(), [ce, { loading: L }] = i(), [R, z] = d("announcement"), [B, V] = d(""), [H, U] = d(""), [W, G] = d(""), [K, q] = d(""), J = u(() => N.data?.announcements.items ?? [], [N.data]), Y = N.data?.announcements.total ?? 0, X = u(() => P.data?.communicationCampaigns.items ?? [], [P.data]), Z = P.data?.communicationCampaigns.total ?? 0, Q = R === "announcement" ? ie : I, $ = () => {
51
+ V(""), U(""), G(""), q("");
52
+ }, le = async () => {
53
+ if (!B.trim()) {
54
+ e.error(A("eventfullymanaged.communication.subjectRequired", "Subject required"), "");
49
55
  return;
50
56
  }
51
- let t = {};
52
- if (K.trim() && (t.body = K.trim()), W.trim() && (t.audience = W.trim()), B === "announcement") {
53
- let n = M("eventfullymanaged.communication.errors.create", "Could not create announcement");
57
+ if (R === "announcement") {
58
+ let t = {};
59
+ W.trim() && (t.body = W.trim()), H.trim() && (t.audience = H.trim());
60
+ let n = A("eventfullymanaged.communication.errors.create", "Could not create announcement");
54
61
  try {
55
- let r = await L({ variables: { input: {
56
- title: H,
57
- name: H,
62
+ let r = await F({ variables: { input: {
63
+ title: B,
64
+ name: B,
58
65
  status: "draft",
59
66
  metadata: t
60
67
  } } });
61
- if (!u(r, r.data?.upsertAnnouncement?.id, n)) return;
62
- $(), e.success(M("eventfullymanaged.communication.created", "Announcement created")), await F.refetch();
68
+ if (!l(r, r.data?.upsertAnnouncement?.id, n)) return;
69
+ $(), e.success(A("eventfullymanaged.communication.created", "Announcement created")), await N.refetch();
63
70
  } catch (t) {
64
- e.error(n, l(t));
71
+ e.error(n, c(t));
65
72
  }
66
73
  return;
67
74
  }
68
- let n = M("eventfullymanaged.communication.errors.createCampaign", "Could not create campaign");
75
+ let t = H.split(",").map((e) => e.trim()).filter(Boolean), n = {};
76
+ W.trim() && (n.content = { body: W.trim() }), t.length > 0 && (n.targetAudience = { segments: t }), K && (n.schedule = { sendAt: new Date(K).toISOString() });
77
+ let r = A("eventfullymanaged.communication.errors.createCampaign", "Could not create campaign");
69
78
  try {
70
- let r = await ie({ variables: { input: {
71
- title: H,
72
- name: H,
79
+ let t = await se({ variables: { input: {
80
+ title: B,
81
+ name: B,
73
82
  status: "draft",
74
- metadata: t
83
+ metadata: n
75
84
  } } });
76
- if (!u(r, r.data?.upsertCommunicationCampaign?.id, n)) return;
77
- $(), e.success(M("eventfullymanaged.communication.campaignCreated", "Campaign created")), await I.refetch();
85
+ if (!l(t, t.data?.upsertCommunicationCampaign?.id, r)) return;
86
+ $(), e.success(A("eventfullymanaged.communication.campaignCreated", "Campaign created")), await P.refetch();
78
87
  } catch (t) {
79
- e.error(n, l(t));
88
+ e.error(r, c(t));
80
89
  }
81
- }, se = async (t) => {
82
- let n = M("eventfullymanaged.communication.errors.publish", "Could not publish announcement");
90
+ }, ue = async (t) => {
91
+ let n = A("eventfullymanaged.communication.errors.publish", "Could not publish announcement");
83
92
  try {
84
- let r = await ne({ variables: { id: t.id } });
85
- if (!u(r, r.data?.publishAnnouncement?.id, n)) return;
86
- e.success(M("eventfullymanaged.communication.published", "Announcement published")), await F.refetch();
93
+ let r = await ae({ variables: { id: t.id } });
94
+ if (!l(r, r.data?.publishAnnouncement?.id, n)) return;
95
+ e.success(A("eventfullymanaged.communication.published", "Announcement published")), await N.refetch();
87
96
  } catch (t) {
88
- e.error(n, l(t));
97
+ e.error(n, c(t));
89
98
  }
90
- }, ce = async (t) => {
91
- let n = M("eventfullymanaged.communication.errors.send", "Could not send campaign");
99
+ }, de = async (t) => {
100
+ let n = A("eventfullymanaged.communication.errors.send", "Could not send campaign");
92
101
  try {
93
- let r = await R({ variables: { id: t.id } });
94
- if (!u(r, r.data?.sendCommunicationCampaign?.id, n)) return;
95
- e.success(M("eventfullymanaged.communication.sent", "Campaign delivery started")), await I.refetch();
102
+ let r = await ce({ variables: { id: t.id } });
103
+ if (!l(r, r.data?.sendCommunicationCampaign?.id, n)) return;
104
+ r.data?.sendCommunicationCampaign?.status === "scheduled" ? e.success(A("eventfullymanaged.communication.scheduled", "Campaign scheduled for its send time")) : e.success(A("eventfullymanaged.communication.sent", "Campaign delivery started")), await P.refetch();
96
105
  } catch (t) {
97
- e.error(n, l(t));
106
+ e.error(n, c(t));
98
107
  }
99
108
  };
100
- return /* @__PURE__ */ m("div", {
109
+ return /* @__PURE__ */ p("div", {
101
110
  className: "space-y-6 p-6",
102
111
  children: [
103
- /* @__PURE__ */ p(E, { children: M("eventfullymanaged.communication.purpose", "Keep attendees informed and engaged. Announcements are one-off broadcasts (a schedule change, a welcome message); campaigns are scheduled, multi-step outreach (reminder emails, follow-ups). Compose each one here, then publish an announcement or send a campaign — delivery runs server-side through the notification service.") }),
104
- /* @__PURE__ */ m("div", {
112
+ /* @__PURE__ */ f(ne, { children: A("eventfullymanaged.communication.purpose", "Keep attendees informed and engaged. Announcements are one-off broadcasts (a schedule change, a welcome message); campaigns are scheduled, multi-step outreach (reminder emails, follow-ups). Compose each one here, then publish an announcement or send a campaign — delivery runs server-side through the notification service.") }),
113
+ /* @__PURE__ */ p("div", {
105
114
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
106
- children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("h1", {
115
+ children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
107
116
  className: "text-2xl font-bold text-text-primary",
108
- children: /* @__PURE__ */ p(ee, { children: M("eventfullymanaged.communication.title", "Communications") })
109
- }), /* @__PURE__ */ p("p", {
117
+ children: /* @__PURE__ */ f(te, { children: A("eventfullymanaged.communication.title", "Communications") })
118
+ }), /* @__PURE__ */ f("p", {
110
119
  className: "mt-1 text-sm text-text-secondary",
111
- children: M("eventfullymanaged.communication.description", "Draft, publish and send from one place.")
112
- })] }), /* @__PURE__ */ m("div", {
120
+ children: A("eventfullymanaged.communication.description", "Draft, publish and send from one place.")
121
+ })] }), /* @__PURE__ */ p("div", {
113
122
  className: "flex flex-col gap-2 sm:flex-row",
114
- children: [/* @__PURE__ */ m(S, {
123
+ children: [/* @__PURE__ */ p(x, {
115
124
  type: "button",
116
- variant: B === "announcement" ? "default" : "outline",
117
- onClick: () => V("announcement"),
118
- children: [/* @__PURE__ */ p(_, { className: "h-4 w-4" }), M("eventfullymanaged.communication.actions.newAnnouncement", "New announcement")]
119
- }), /* @__PURE__ */ m(S, {
125
+ variant: R === "announcement" ? "default" : "outline",
126
+ onClick: () => z("announcement"),
127
+ children: [/* @__PURE__ */ f(g, { className: "h-4 w-4" }), A("eventfullymanaged.communication.actions.newAnnouncement", "New announcement")]
128
+ }), /* @__PURE__ */ p(x, {
120
129
  type: "button",
121
- variant: B === "campaign" ? "default" : "outline",
122
- onClick: () => V("campaign"),
123
- children: [/* @__PURE__ */ p(_, { className: "h-4 w-4" }), M("eventfullymanaged.communication.actions.newCampaign", "New campaign")]
130
+ variant: R === "campaign" ? "default" : "outline",
131
+ onClick: () => z("campaign"),
132
+ children: [/* @__PURE__ */ f(g, { className: "h-4 w-4" }), A("eventfullymanaged.communication.actions.newCampaign", "New campaign")]
124
133
  })]
125
134
  })]
126
135
  }),
127
- /* @__PURE__ */ p(C, {
136
+ /* @__PURE__ */ f(S, {
128
137
  treatment: "glass",
129
138
  glow: !0,
130
139
  className: "p-5",
131
- children: /* @__PURE__ */ m("div", {
140
+ children: /* @__PURE__ */ p("div", {
132
141
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
133
- children: [/* @__PURE__ */ m("div", {
142
+ children: [/* @__PURE__ */ p("div", {
134
143
  className: "space-y-3",
135
144
  children: [
136
- /* @__PURE__ */ m("div", {
145
+ /* @__PURE__ */ p("div", {
137
146
  className: "flex items-center gap-2",
138
- children: [p(B === "announcement" ? g : h, { className: "h-4 w-4 text-accent-primary" }), /* @__PURE__ */ p("h2", {
147
+ children: [f(R === "announcement" ? h : m, { className: "h-4 w-4 text-accent-primary" }), /* @__PURE__ */ f("h2", {
139
148
  className: "text-base font-semibold text-text-primary",
140
- children: B === "announcement" ? M("eventfullymanaged.communication.compose.announcement", "Compose announcement") : M("eventfullymanaged.communication.compose.campaign", "Compose campaign")
149
+ children: R === "announcement" ? A("eventfullymanaged.communication.compose.announcement", "Compose announcement") : A("eventfullymanaged.communication.compose.campaign", "Compose campaign")
141
150
  })]
142
151
  }),
143
- /* @__PURE__ */ m("label", {
152
+ /* @__PURE__ */ p("label", {
144
153
  className: "block space-y-1 text-sm",
145
- children: [/* @__PURE__ */ p("span", {
154
+ children: [/* @__PURE__ */ f("span", {
146
155
  className: "font-medium text-text-primary",
147
- children: M("eventfullymanaged.communication.fields.subject", "Subject")
148
- }), /* @__PURE__ */ p(T, {
149
- value: H,
150
- onChange: (e) => U(e.target.value),
151
- placeholder: M("eventfullymanaged.communication.fields.subjectPlaceholder", "Q4 Product Roadmap Update"),
152
- "aria-label": M("eventfullymanaged.communication.fields.subject", "Subject")
156
+ children: A("eventfullymanaged.communication.fields.subject", "Subject")
157
+ }), /* @__PURE__ */ f(w, {
158
+ value: B,
159
+ onChange: (e) => V(e.target.value),
160
+ placeholder: A("eventfullymanaged.communication.fields.subjectPlaceholder", "Q4 Product Roadmap Update"),
161
+ "aria-label": A("eventfullymanaged.communication.fields.subject", "Subject")
153
162
  })]
154
163
  }),
155
- /* @__PURE__ */ m("label", {
164
+ /* @__PURE__ */ p("label", {
156
165
  className: "block space-y-1 text-sm",
157
- children: [/* @__PURE__ */ p("span", {
166
+ children: [/* @__PURE__ */ f("span", {
158
167
  className: "font-medium text-text-primary",
159
- children: M("eventfullymanaged.communication.fields.audience", "Audience")
160
- }), /* @__PURE__ */ p(T, {
161
- value: W,
162
- onChange: (e) => G(e.target.value),
163
- placeholder: M("eventfullymanaged.communication.fields.audiencePlaceholder", "All attendees"),
164
- "aria-label": M("eventfullymanaged.communication.fields.audience", "Audience")
168
+ children: A("eventfullymanaged.communication.fields.audience", "Audience")
169
+ }), /* @__PURE__ */ f(w, {
170
+ value: H,
171
+ onChange: (e) => U(e.target.value),
172
+ placeholder: R === "campaign" ? A("eventfullymanaged.communication.fields.audienceSegmentsPlaceholder", "vip, early-bird, speakers (comma-separated segments)") : A("eventfullymanaged.communication.fields.audiencePlaceholder", "All attendees"),
173
+ "aria-label": A("eventfullymanaged.communication.fields.audience", "Audience")
165
174
  })]
166
175
  }),
167
- /* @__PURE__ */ m("label", {
176
+ /* @__PURE__ */ p("label", {
168
177
  className: "block space-y-1 text-sm",
169
- children: [/* @__PURE__ */ p("span", {
178
+ children: [/* @__PURE__ */ f("span", {
170
179
  className: "font-medium text-text-primary",
171
- children: M("eventfullymanaged.communication.fields.body", "Message")
172
- }), /* @__PURE__ */ p(D, {
173
- value: K,
174
- onChange: (e) => q(e.target.value),
180
+ children: A("eventfullymanaged.communication.fields.body", "Message")
181
+ }), /* @__PURE__ */ f(re, {
182
+ value: W,
183
+ onChange: (e) => G(e.target.value),
175
184
  rows: 5,
176
- placeholder: M("eventfullymanaged.communication.fields.bodyPlaceholder", "Hi there, here are the latest updates…"),
177
- "aria-label": M("eventfullymanaged.communication.fields.body", "Message")
185
+ placeholder: A("eventfullymanaged.communication.fields.bodyPlaceholder", "Hi there, here are the latest updates…"),
186
+ "aria-label": A("eventfullymanaged.communication.fields.body", "Message")
178
187
  })]
179
188
  }),
180
- /* @__PURE__ */ p("div", {
189
+ R === "campaign" ? /* @__PURE__ */ p("label", {
190
+ className: "block space-y-1 text-sm",
191
+ children: [
192
+ /* @__PURE__ */ f("span", {
193
+ className: "font-medium text-text-primary",
194
+ children: A("eventfullymanaged.communication.fields.scheduleAt", "Schedule send (optional)")
195
+ }),
196
+ /* @__PURE__ */ f(w, {
197
+ type: "datetime-local",
198
+ value: K,
199
+ onChange: (e) => q(e.target.value),
200
+ "aria-label": A("eventfullymanaged.communication.fields.scheduleAt", "Schedule send (optional)")
201
+ }),
202
+ /* @__PURE__ */ f("span", {
203
+ className: "block text-xs text-text-muted",
204
+ children: A("eventfullymanaged.communication.fields.scheduleHint", "Leave blank to send immediately when you click Send campaign.")
205
+ })
206
+ ]
207
+ }) : null,
208
+ /* @__PURE__ */ f("div", {
181
209
  className: "flex justify-end",
182
- children: /* @__PURE__ */ p(S, {
210
+ children: /* @__PURE__ */ f(x, {
183
211
  type: "button",
184
212
  disabled: Q,
185
- onClick: oe,
186
- children: Q ? M("eventfullymanaged.communication.actions.saving", "Saving…") : M(B === "announcement" ? "eventfullymanaged.communication.actions.createAnnouncement" : "eventfullymanaged.communication.actions.createCampaign", "Create draft")
213
+ onClick: le,
214
+ children: Q ? A("eventfullymanaged.communication.actions.saving", "Saving…") : A(R === "announcement" ? "eventfullymanaged.communication.actions.createAnnouncement" : "eventfullymanaged.communication.actions.createCampaign", "Create draft")
187
215
  })
188
216
  })
189
217
  ]
190
- }), /* @__PURE__ */ m("div", {
218
+ }), /* @__PURE__ */ p("div", {
191
219
  className: "rounded-card border border-border-seam bg-bg-surface p-4",
192
- children: [/* @__PURE__ */ m("div", {
220
+ children: [/* @__PURE__ */ p("div", {
193
221
  className: "flex items-center justify-between border-b border-border-seam pb-2",
194
- children: [/* @__PURE__ */ m("span", {
222
+ children: [/* @__PURE__ */ p("span", {
195
223
  className: "flex items-center gap-2 text-xs font-medium uppercase tracking-wide text-text-muted",
196
- children: [/* @__PURE__ */ p(h, { className: "h-3.5 w-3.5" }), M("eventfullymanaged.communication.preview.label", "Preview")]
197
- }), /* @__PURE__ */ p(x, {
224
+ children: [/* @__PURE__ */ f(m, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.preview.label", "Preview")]
225
+ }), /* @__PURE__ */ f(b, {
198
226
  variant: "info",
199
227
  className: "uppercase",
200
- children: M("eventfullymanaged.communication.preview.draft", "Draft")
228
+ children: A("eventfullymanaged.communication.preview.draft", "Draft")
201
229
  })]
202
- }), /* @__PURE__ */ m("div", {
230
+ }), /* @__PURE__ */ p("div", {
203
231
  className: "mt-3 space-y-2",
204
232
  children: [
205
- /* @__PURE__ */ p("p", {
233
+ /* @__PURE__ */ f("p", {
206
234
  className: "text-base font-semibold text-text-primary",
207
- children: H.trim() || M("eventfullymanaged.communication.preview.noSubject", "Your subject line")
235
+ children: B.trim() || A("eventfullymanaged.communication.preview.noSubject", "Your subject line")
208
236
  }),
209
- W.trim() ? /* @__PURE__ */ m("p", {
237
+ H.trim() ? /* @__PURE__ */ p("p", {
210
238
  className: "text-xs text-text-secondary",
211
239
  children: [
212
- M("eventfullymanaged.communication.preview.to", "To"),
240
+ A("eventfullymanaged.communication.preview.to", "To"),
213
241
  ": ",
214
- W.trim()
242
+ H.trim()
215
243
  ]
216
244
  }) : null,
217
- /* @__PURE__ */ p("p", {
245
+ /* @__PURE__ */ f("p", {
218
246
  className: "whitespace-pre-wrap text-sm text-text-secondary",
219
- children: K.trim() || M("eventfullymanaged.communication.preview.noBody", "Start typing to see your message preview here.")
247
+ children: W.trim() || A("eventfullymanaged.communication.preview.noBody", "Start typing to see your message preview here.")
220
248
  })
221
249
  ]
222
250
  })]
223
251
  })]
224
252
  })
225
253
  }),
226
- /* @__PURE__ */ m("div", {
254
+ /* @__PURE__ */ p("div", {
227
255
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
228
- children: [/* @__PURE__ */ m(C, {
256
+ children: [/* @__PURE__ */ p(S, {
229
257
  treatment: "plain",
230
258
  className: "border-border-seam p-5",
231
- children: [/* @__PURE__ */ m("div", {
259
+ children: [/* @__PURE__ */ p("div", {
232
260
  className: "flex items-center justify-between",
233
- children: [/* @__PURE__ */ p("h2", {
261
+ children: [/* @__PURE__ */ f("h2", {
234
262
  className: "text-lg font-semibold text-text-primary",
235
- children: M("eventfullymanaged.communication.announcements.heading", "Announcements")
236
- }), Y > 0 ? /* @__PURE__ */ p("span", {
263
+ children: A("eventfullymanaged.communication.announcements.heading", "Announcements")
264
+ }), Y > 0 ? /* @__PURE__ */ f("span", {
237
265
  className: "text-sm text-text-muted",
238
266
  children: Y
239
267
  }) : null]
240
- }), /* @__PURE__ */ m("div", {
268
+ }), /* @__PURE__ */ p("div", {
241
269
  className: "mt-4",
242
- children: [F.loading && J.length === 0 ? /* @__PURE__ */ p("p", {
270
+ children: [N.loading && J.length === 0 ? /* @__PURE__ */ f("p", {
243
271
  className: "py-8 text-center text-sm text-text-secondary",
244
- children: M("eventfullymanaged.communication.announcements.loading", "Loading announcements…")
245
- }) : J.length === 0 ? /* @__PURE__ */ p(w, {
272
+ children: A("eventfullymanaged.communication.announcements.loading", "Loading announcements…")
273
+ }) : J.length === 0 ? /* @__PURE__ */ f(C, {
246
274
  illustration: "empty-data",
247
- title: M("eventfullymanaged.communication.announcements.empty", "No announcements yet."),
275
+ title: A("eventfullymanaged.communication.announcements.empty", "No announcements yet."),
248
276
  className: "py-8"
249
- }) : /* @__PURE__ */ p("ul", {
277
+ }) : /* @__PURE__ */ f("ul", {
250
278
  className: "space-y-2.5",
251
- children: J.map((e) => /* @__PURE__ */ m("li", {
279
+ children: J.map((e) => /* @__PURE__ */ p("li", {
252
280
  className: "flex items-center justify-between gap-3 rounded-card border border-border-seam bg-bg-surface p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1",
253
- children: [/* @__PURE__ */ p("p", {
281
+ children: [/* @__PURE__ */ f("p", {
254
282
  className: "min-w-0 truncate font-medium text-text-primary",
255
- children: A(e, M("eventfullymanaged.communication.announcements.itemPrefix", "Announcement"))
256
- }), /* @__PURE__ */ m("div", {
283
+ children: O(e, A("eventfullymanaged.communication.announcements.itemPrefix", "Announcement"))
284
+ }), /* @__PURE__ */ p("div", {
257
285
  className: "flex shrink-0 items-center gap-2",
258
- children: [e.status ? /* @__PURE__ */ p(x, {
259
- variant: O(e.status),
286
+ children: [e.status ? /* @__PURE__ */ f(b, {
287
+ variant: E(e.status),
260
288
  className: "uppercase",
261
289
  children: e.status
262
- }) : null, k(e.status) ? /* @__PURE__ */ m(S, {
290
+ }) : null, D(e.status) ? /* @__PURE__ */ p(x, {
263
291
  type: "button",
264
292
  size: "sm",
265
- disabled: re,
266
- onClick: () => void se(e),
267
- children: [/* @__PURE__ */ p(y, { className: "h-3.5 w-3.5" }), M("eventfullymanaged.communication.actions.publish", "Publish")]
293
+ disabled: oe,
294
+ onClick: () => void ue(e),
295
+ children: [/* @__PURE__ */ f(v, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.actions.publish", "Publish")]
268
296
  }) : null]
269
297
  })]
270
298
  }, e.id))
271
- }), /* @__PURE__ */ p(s, {
272
- offset: N.offset,
273
- limit: N.limit,
299
+ }), /* @__PURE__ */ f(o, {
300
+ offset: j.offset,
301
+ limit: j.limit,
274
302
  loadedCount: J.length,
275
303
  total: Y,
276
- onPrev: N.prevPage,
277
- onNext: N.nextPage,
278
- itemLabel: M("eventfullymanaged.communication.announcements.heading", "Announcements").toLowerCase(),
279
- loading: F.loading
304
+ onPrev: j.prevPage,
305
+ onNext: j.nextPage,
306
+ itemLabel: A("eventfullymanaged.communication.announcements.heading", "Announcements").toLowerCase(),
307
+ loading: N.loading
280
308
  })]
281
309
  })]
282
- }), /* @__PURE__ */ m(C, {
310
+ }), /* @__PURE__ */ p(S, {
283
311
  treatment: "plain",
284
312
  className: "border-border-seam p-5",
285
- children: [/* @__PURE__ */ m("div", {
313
+ children: [/* @__PURE__ */ p("div", {
286
314
  className: "flex items-center justify-between",
287
- children: [/* @__PURE__ */ p("h2", {
315
+ children: [/* @__PURE__ */ f("h2", {
288
316
  className: "text-lg font-semibold text-text-primary",
289
- children: M("eventfullymanaged.communication.campaigns.heading", "Campaigns")
290
- }), Z > 0 ? /* @__PURE__ */ p("span", {
317
+ children: A("eventfullymanaged.communication.campaigns.heading", "Campaigns")
318
+ }), Z > 0 ? /* @__PURE__ */ f("span", {
291
319
  className: "text-sm text-text-muted",
292
320
  children: Z
293
321
  }) : null]
294
- }), /* @__PURE__ */ m("div", {
322
+ }), /* @__PURE__ */ p("div", {
295
323
  className: "mt-4",
296
- children: [I.loading && X.length === 0 ? /* @__PURE__ */ p("p", {
324
+ children: [P.loading && X.length === 0 ? /* @__PURE__ */ f("p", {
297
325
  className: "py-8 text-center text-sm text-text-secondary",
298
- children: M("eventfullymanaged.communication.campaigns.loading", "Loading campaigns…")
299
- }) : X.length === 0 ? /* @__PURE__ */ p(w, {
326
+ children: A("eventfullymanaged.communication.campaigns.loading", "Loading campaigns…")
327
+ }) : X.length === 0 ? /* @__PURE__ */ f(C, {
300
328
  illustration: "empty-data",
301
- title: M("eventfullymanaged.communication.campaigns.empty", "No campaigns yet."),
329
+ title: A("eventfullymanaged.communication.campaigns.empty", "No campaigns yet."),
302
330
  className: "py-8"
303
- }) : /* @__PURE__ */ p("ul", {
331
+ }) : /* @__PURE__ */ f("ul", {
304
332
  className: "space-y-2.5",
305
- children: X.map((e) => /* @__PURE__ */ m("li", {
306
- className: "flex items-center justify-between gap-3 rounded-card border border-border-seam bg-bg-surface p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1",
307
- children: [/* @__PURE__ */ p("p", {
308
- className: "min-w-0 truncate font-medium text-text-primary",
309
- children: A(e, M("eventfullymanaged.communication.campaigns.itemPrefix", "Campaign"))
310
- }), /* @__PURE__ */ m("div", {
311
- className: "flex shrink-0 items-center gap-2",
312
- children: [e.status ? /* @__PURE__ */ p(x, {
313
- variant: O(e.status),
314
- className: "uppercase",
315
- children: e.status
316
- }) : null, k(e.status) ? /* @__PURE__ */ m(S, {
317
- type: "button",
318
- size: "sm",
319
- disabled: z,
320
- onClick: () => void ce(e),
321
- children: [/* @__PURE__ */ p(v, { className: "h-3.5 w-3.5" }), M("eventfullymanaged.communication.actions.send", "Send campaign")]
322
- }) : null]
323
- })]
324
- }, e.id))
325
- }), /* @__PURE__ */ p(s, {
326
- offset: P.offset,
327
- limit: P.limit,
333
+ children: X.map((e) => {
334
+ let t = T(e);
335
+ return /* @__PURE__ */ p("li", {
336
+ className: "flex items-center justify-between gap-3 rounded-card border border-border-seam bg-bg-surface p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1",
337
+ children: [/* @__PURE__ */ p("div", {
338
+ className: "min-w-0",
339
+ children: [/* @__PURE__ */ f("p", {
340
+ className: "truncate font-medium text-text-primary",
341
+ children: O(e, A("eventfullymanaged.communication.campaigns.itemPrefix", "Campaign"))
342
+ }), t ? /* @__PURE__ */ p("p", {
343
+ className: "truncate text-xs text-text-muted",
344
+ children: [
345
+ A("eventfullymanaged.communication.campaigns.scheduledFor", "Scheduled for"),
346
+ " ",
347
+ new Date(t).toLocaleString()
348
+ ]
349
+ }) : null]
350
+ }), /* @__PURE__ */ p("div", {
351
+ className: "flex shrink-0 items-center gap-2",
352
+ children: [e.status ? /* @__PURE__ */ f(b, {
353
+ variant: E(e.status),
354
+ className: "uppercase",
355
+ children: e.status
356
+ }) : null, D(e.status) ? /* @__PURE__ */ p(x, {
357
+ type: "button",
358
+ size: "sm",
359
+ disabled: L,
360
+ onClick: () => void de(e),
361
+ children: [/* @__PURE__ */ f(_, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.actions.send", "Send campaign")]
362
+ }) : null]
363
+ })]
364
+ }, e.id);
365
+ })
366
+ }), /* @__PURE__ */ f(o, {
367
+ offset: M.offset,
368
+ limit: M.limit,
328
369
  loadedCount: X.length,
329
370
  total: Z,
330
- onPrev: P.prevPage,
331
- onNext: P.nextPage,
332
- itemLabel: M("eventfullymanaged.communication.campaigns.heading", "Campaigns").toLowerCase(),
333
- loading: I.loading
371
+ onPrev: M.prevPage,
372
+ onNext: M.nextPage,
373
+ itemLabel: A("eventfullymanaged.communication.campaigns.heading", "Campaigns").toLowerCase(),
374
+ loading: P.loading
334
375
  })]
335
376
  })]
336
377
  })]
@@ -339,6 +380,6 @@ function j() {
339
380
  });
340
381
  }
341
382
  //#endregion
342
- export { j as default };
383
+ export { k as default };
343
384
 
344
385
  //# sourceMappingURL=CommunicationPage.js.map