@burdenoff/microfe-eventfullymanaged 2026.828.1 → 2026.1030.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.
@@ -3,9 +3,9 @@ import { useAnnouncementsQuery as t, useCommunicationCampaignsQuery as n, usePub
3
3
  import { Pagination as o, usePagination as s } from "../../components/Pagination.js";
4
4
  import { describeError as c, mutationSucceeded as l } from "../../lib/mutationResult.js";
5
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";
6
+ import { useI18n as f } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
8
+ import { Mail as h, Megaphone as g, Plus as _, Send as v, Upload as y } from "lucide-react";
9
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
11
  function T(e) {
@@ -38,7 +38,7 @@ var D = (e) => {
38
38
  return t === "" || t === "draft" || t === "created" || t === "scheduled";
39
39
  }, O = (e, t) => e.title ?? e.name ?? `${t} ${e.id}`;
40
40
  function k() {
41
- let { t: k } = y(), A = (e, t) => {
41
+ let { t: k } = f(), A = (e, t) => {
42
42
  let n = k(e);
43
43
  return n === e ? t : n;
44
44
  }, j = s({ pageSize: 8 }), M = s({ pageSize: 8 }), N = t({
@@ -106,79 +106,79 @@ function k() {
106
106
  e.error(n, c(t));
107
107
  }
108
108
  };
109
- return /* @__PURE__ */ p("div", {
109
+ return /* @__PURE__ */ m("div", {
110
110
  className: "space-y-6 p-6",
111
111
  children: [
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", {
112
+ /* @__PURE__ */ p(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__ */ m("div", {
114
114
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
115
- children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
115
+ children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("h1", {
116
116
  className: "text-2xl font-bold text-text-primary",
117
- children: /* @__PURE__ */ f(te, { children: A("eventfullymanaged.communication.title", "Communications") })
118
- }), /* @__PURE__ */ f("p", {
117
+ children: /* @__PURE__ */ p(te, { children: A("eventfullymanaged.communication.title", "Communications") })
118
+ }), /* @__PURE__ */ p("p", {
119
119
  className: "mt-1 text-sm text-text-secondary",
120
120
  children: A("eventfullymanaged.communication.description", "Draft, publish and send from one place.")
121
- })] }), /* @__PURE__ */ p("div", {
121
+ })] }), /* @__PURE__ */ m("div", {
122
122
  className: "flex flex-col gap-2 sm:flex-row",
123
- children: [/* @__PURE__ */ p(x, {
123
+ children: [/* @__PURE__ */ m(x, {
124
124
  type: "button",
125
125
  variant: R === "announcement" ? "default" : "outline",
126
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, {
127
+ children: [/* @__PURE__ */ p(_, { className: "h-4 w-4" }), A("eventfullymanaged.communication.actions.newAnnouncement", "New announcement")]
128
+ }), /* @__PURE__ */ m(x, {
129
129
  type: "button",
130
130
  variant: R === "campaign" ? "default" : "outline",
131
131
  onClick: () => z("campaign"),
132
- children: [/* @__PURE__ */ f(g, { className: "h-4 w-4" }), A("eventfullymanaged.communication.actions.newCampaign", "New campaign")]
132
+ children: [/* @__PURE__ */ p(_, { className: "h-4 w-4" }), A("eventfullymanaged.communication.actions.newCampaign", "New campaign")]
133
133
  })]
134
134
  })]
135
135
  }),
136
- /* @__PURE__ */ f(S, {
136
+ /* @__PURE__ */ p(S, {
137
137
  treatment: "glass",
138
138
  glow: !0,
139
139
  className: "p-5",
140
- children: /* @__PURE__ */ p("div", {
140
+ children: /* @__PURE__ */ m("div", {
141
141
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
142
- children: [/* @__PURE__ */ p("div", {
142
+ children: [/* @__PURE__ */ m("div", {
143
143
  className: "space-y-3",
144
144
  children: [
145
- /* @__PURE__ */ p("div", {
145
+ /* @__PURE__ */ m("div", {
146
146
  className: "flex items-center gap-2",
147
- children: [f(R === "announcement" ? h : m, { className: "h-4 w-4 text-accent-primary" }), /* @__PURE__ */ f("h2", {
147
+ children: [p(R === "announcement" ? g : h, { className: "h-4 w-4 text-accent-primary" }), /* @__PURE__ */ p("h2", {
148
148
  className: "text-base font-semibold text-text-primary",
149
149
  children: R === "announcement" ? A("eventfullymanaged.communication.compose.announcement", "Compose announcement") : A("eventfullymanaged.communication.compose.campaign", "Compose campaign")
150
150
  })]
151
151
  }),
152
- /* @__PURE__ */ p("label", {
152
+ /* @__PURE__ */ m("label", {
153
153
  className: "block space-y-1 text-sm",
154
- children: [/* @__PURE__ */ f("span", {
154
+ children: [/* @__PURE__ */ p("span", {
155
155
  className: "font-medium text-text-primary",
156
156
  children: A("eventfullymanaged.communication.fields.subject", "Subject")
157
- }), /* @__PURE__ */ f(w, {
157
+ }), /* @__PURE__ */ p(w, {
158
158
  value: B,
159
159
  onChange: (e) => V(e.target.value),
160
160
  placeholder: A("eventfullymanaged.communication.fields.subjectPlaceholder", "Q4 Product Roadmap Update"),
161
161
  "aria-label": A("eventfullymanaged.communication.fields.subject", "Subject")
162
162
  })]
163
163
  }),
164
- /* @__PURE__ */ p("label", {
164
+ /* @__PURE__ */ m("label", {
165
165
  className: "block space-y-1 text-sm",
166
- children: [/* @__PURE__ */ f("span", {
166
+ children: [/* @__PURE__ */ p("span", {
167
167
  className: "font-medium text-text-primary",
168
168
  children: A("eventfullymanaged.communication.fields.audience", "Audience")
169
- }), /* @__PURE__ */ f(w, {
169
+ }), /* @__PURE__ */ p(w, {
170
170
  value: H,
171
171
  onChange: (e) => U(e.target.value),
172
172
  placeholder: R === "campaign" ? A("eventfullymanaged.communication.fields.audienceSegmentsPlaceholder", "vip, early-bird, speakers (comma-separated segments)") : A("eventfullymanaged.communication.fields.audiencePlaceholder", "All attendees"),
173
173
  "aria-label": A("eventfullymanaged.communication.fields.audience", "Audience")
174
174
  })]
175
175
  }),
176
- /* @__PURE__ */ p("label", {
176
+ /* @__PURE__ */ m("label", {
177
177
  className: "block space-y-1 text-sm",
178
- children: [/* @__PURE__ */ f("span", {
178
+ children: [/* @__PURE__ */ p("span", {
179
179
  className: "font-medium text-text-primary",
180
180
  children: A("eventfullymanaged.communication.fields.body", "Message")
181
- }), /* @__PURE__ */ f(re, {
181
+ }), /* @__PURE__ */ p(re, {
182
182
  value: W,
183
183
  onChange: (e) => G(e.target.value),
184
184
  rows: 5,
@@ -186,28 +186,28 @@ function k() {
186
186
  "aria-label": A("eventfullymanaged.communication.fields.body", "Message")
187
187
  })]
188
188
  }),
189
- R === "campaign" ? /* @__PURE__ */ p("label", {
189
+ R === "campaign" ? /* @__PURE__ */ m("label", {
190
190
  className: "block space-y-1 text-sm",
191
191
  children: [
192
- /* @__PURE__ */ f("span", {
192
+ /* @__PURE__ */ p("span", {
193
193
  className: "font-medium text-text-primary",
194
194
  children: A("eventfullymanaged.communication.fields.scheduleAt", "Schedule send (optional)")
195
195
  }),
196
- /* @__PURE__ */ f(w, {
196
+ /* @__PURE__ */ p(w, {
197
197
  type: "datetime-local",
198
198
  value: K,
199
199
  onChange: (e) => q(e.target.value),
200
200
  "aria-label": A("eventfullymanaged.communication.fields.scheduleAt", "Schedule send (optional)")
201
201
  }),
202
- /* @__PURE__ */ f("span", {
202
+ /* @__PURE__ */ p("span", {
203
203
  className: "block text-xs text-text-muted",
204
204
  children: A("eventfullymanaged.communication.fields.scheduleHint", "Leave blank to send immediately when you click Send campaign.")
205
205
  })
206
206
  ]
207
207
  }) : null,
208
- /* @__PURE__ */ f("div", {
208
+ /* @__PURE__ */ p("div", {
209
209
  className: "flex justify-end",
210
- children: /* @__PURE__ */ f(x, {
210
+ children: /* @__PURE__ */ p(x, {
211
211
  type: "button",
212
212
  disabled: Q,
213
213
  onClick: le,
@@ -215,26 +215,26 @@ function k() {
215
215
  })
216
216
  })
217
217
  ]
218
- }), /* @__PURE__ */ p("div", {
218
+ }), /* @__PURE__ */ m("div", {
219
219
  className: "rounded-card border border-border-seam bg-bg-surface p-4",
220
- children: [/* @__PURE__ */ p("div", {
220
+ children: [/* @__PURE__ */ m("div", {
221
221
  className: "flex items-center justify-between border-b border-border-seam pb-2",
222
- children: [/* @__PURE__ */ p("span", {
222
+ children: [/* @__PURE__ */ m("span", {
223
223
  className: "flex items-center gap-2 text-xs font-medium uppercase tracking-wide text-text-muted",
224
- children: [/* @__PURE__ */ f(m, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.preview.label", "Preview")]
225
- }), /* @__PURE__ */ f(b, {
224
+ children: [/* @__PURE__ */ p(h, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.preview.label", "Preview")]
225
+ }), /* @__PURE__ */ p(b, {
226
226
  variant: "info",
227
227
  className: "uppercase",
228
228
  children: A("eventfullymanaged.communication.preview.draft", "Draft")
229
229
  })]
230
- }), /* @__PURE__ */ p("div", {
230
+ }), /* @__PURE__ */ m("div", {
231
231
  className: "mt-3 space-y-2",
232
232
  children: [
233
- /* @__PURE__ */ f("p", {
233
+ /* @__PURE__ */ p("p", {
234
234
  className: "text-base font-semibold text-text-primary",
235
235
  children: B.trim() || A("eventfullymanaged.communication.preview.noSubject", "Your subject line")
236
236
  }),
237
- H.trim() ? /* @__PURE__ */ p("p", {
237
+ H.trim() ? /* @__PURE__ */ m("p", {
238
238
  className: "text-xs text-text-secondary",
239
239
  children: [
240
240
  A("eventfullymanaged.communication.preview.to", "To"),
@@ -242,7 +242,7 @@ function k() {
242
242
  H.trim()
243
243
  ]
244
244
  }) : null,
245
- /* @__PURE__ */ f("p", {
245
+ /* @__PURE__ */ p("p", {
246
246
  className: "whitespace-pre-wrap text-sm text-text-secondary",
247
247
  children: W.trim() || A("eventfullymanaged.communication.preview.noBody", "Start typing to see your message preview here.")
248
248
  })
@@ -251,52 +251,52 @@ function k() {
251
251
  })]
252
252
  })
253
253
  }),
254
- /* @__PURE__ */ p("div", {
254
+ /* @__PURE__ */ m("div", {
255
255
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
256
- children: [/* @__PURE__ */ p(S, {
256
+ children: [/* @__PURE__ */ m(S, {
257
257
  treatment: "plain",
258
258
  className: "border-border-seam p-5",
259
- children: [/* @__PURE__ */ p("div", {
259
+ children: [/* @__PURE__ */ m("div", {
260
260
  className: "flex items-center justify-between",
261
- children: [/* @__PURE__ */ f("h2", {
261
+ children: [/* @__PURE__ */ p("h2", {
262
262
  className: "text-lg font-semibold text-text-primary",
263
263
  children: A("eventfullymanaged.communication.announcements.heading", "Announcements")
264
- }), Y > 0 ? /* @__PURE__ */ f("span", {
264
+ }), Y > 0 ? /* @__PURE__ */ p("span", {
265
265
  className: "text-sm text-text-muted",
266
266
  children: Y
267
267
  }) : null]
268
- }), /* @__PURE__ */ p("div", {
268
+ }), /* @__PURE__ */ m("div", {
269
269
  className: "mt-4",
270
- children: [N.loading && J.length === 0 ? /* @__PURE__ */ f("p", {
270
+ children: [N.loading && J.length === 0 ? /* @__PURE__ */ p("p", {
271
271
  className: "py-8 text-center text-sm text-text-secondary",
272
272
  children: A("eventfullymanaged.communication.announcements.loading", "Loading announcements…")
273
- }) : J.length === 0 ? /* @__PURE__ */ f(C, {
273
+ }) : J.length === 0 ? /* @__PURE__ */ p(C, {
274
274
  illustration: "empty-data",
275
275
  title: A("eventfullymanaged.communication.announcements.empty", "No announcements yet."),
276
276
  className: "py-8"
277
- }) : /* @__PURE__ */ f("ul", {
277
+ }) : /* @__PURE__ */ p("ul", {
278
278
  className: "space-y-2.5",
279
- children: J.map((e) => /* @__PURE__ */ p("li", {
279
+ children: J.map((e) => /* @__PURE__ */ m("li", {
280
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",
281
- children: [/* @__PURE__ */ f("p", {
281
+ children: [/* @__PURE__ */ p("p", {
282
282
  className: "min-w-0 truncate font-medium text-text-primary",
283
283
  children: O(e, A("eventfullymanaged.communication.announcements.itemPrefix", "Announcement"))
284
- }), /* @__PURE__ */ p("div", {
284
+ }), /* @__PURE__ */ m("div", {
285
285
  className: "flex shrink-0 items-center gap-2",
286
- children: [e.status ? /* @__PURE__ */ f(b, {
286
+ children: [e.status ? /* @__PURE__ */ p(b, {
287
287
  variant: E(e.status),
288
288
  className: "uppercase",
289
289
  children: e.status
290
- }) : null, D(e.status) ? /* @__PURE__ */ p(x, {
290
+ }) : null, D(e.status) ? /* @__PURE__ */ m(x, {
291
291
  type: "button",
292
292
  size: "sm",
293
293
  disabled: oe,
294
294
  onClick: () => void ue(e),
295
- children: [/* @__PURE__ */ f(v, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.actions.publish", "Publish")]
295
+ children: [/* @__PURE__ */ p(y, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.actions.publish", "Publish")]
296
296
  }) : null]
297
297
  })]
298
298
  }, e.id))
299
- }), /* @__PURE__ */ f(o, {
299
+ }), /* @__PURE__ */ p(o, {
300
300
  offset: j.offset,
301
301
  limit: j.limit,
302
302
  loadedCount: J.length,
@@ -307,39 +307,39 @@ function k() {
307
307
  loading: N.loading
308
308
  })]
309
309
  })]
310
- }), /* @__PURE__ */ p(S, {
310
+ }), /* @__PURE__ */ m(S, {
311
311
  treatment: "plain",
312
312
  className: "border-border-seam p-5",
313
- children: [/* @__PURE__ */ p("div", {
313
+ children: [/* @__PURE__ */ m("div", {
314
314
  className: "flex items-center justify-between",
315
- children: [/* @__PURE__ */ f("h2", {
315
+ children: [/* @__PURE__ */ p("h2", {
316
316
  className: "text-lg font-semibold text-text-primary",
317
317
  children: A("eventfullymanaged.communication.campaigns.heading", "Campaigns")
318
- }), Z > 0 ? /* @__PURE__ */ f("span", {
318
+ }), Z > 0 ? /* @__PURE__ */ p("span", {
319
319
  className: "text-sm text-text-muted",
320
320
  children: Z
321
321
  }) : null]
322
- }), /* @__PURE__ */ p("div", {
322
+ }), /* @__PURE__ */ m("div", {
323
323
  className: "mt-4",
324
- children: [P.loading && X.length === 0 ? /* @__PURE__ */ f("p", {
324
+ children: [P.loading && X.length === 0 ? /* @__PURE__ */ p("p", {
325
325
  className: "py-8 text-center text-sm text-text-secondary",
326
326
  children: A("eventfullymanaged.communication.campaigns.loading", "Loading campaigns…")
327
- }) : X.length === 0 ? /* @__PURE__ */ f(C, {
327
+ }) : X.length === 0 ? /* @__PURE__ */ p(C, {
328
328
  illustration: "empty-data",
329
329
  title: A("eventfullymanaged.communication.campaigns.empty", "No campaigns yet."),
330
330
  className: "py-8"
331
- }) : /* @__PURE__ */ f("ul", {
331
+ }) : /* @__PURE__ */ p("ul", {
332
332
  className: "space-y-2.5",
333
333
  children: X.map((e) => {
334
334
  let t = T(e);
335
- return /* @__PURE__ */ p("li", {
335
+ return /* @__PURE__ */ m("li", {
336
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", {
337
+ children: [/* @__PURE__ */ m("div", {
338
338
  className: "min-w-0",
339
- children: [/* @__PURE__ */ f("p", {
339
+ children: [/* @__PURE__ */ p("p", {
340
340
  className: "truncate font-medium text-text-primary",
341
341
  children: O(e, A("eventfullymanaged.communication.campaigns.itemPrefix", "Campaign"))
342
- }), t ? /* @__PURE__ */ p("p", {
342
+ }), t ? /* @__PURE__ */ m("p", {
343
343
  className: "truncate text-xs text-text-muted",
344
344
  children: [
345
345
  A("eventfullymanaged.communication.campaigns.scheduledFor", "Scheduled for"),
@@ -347,23 +347,23 @@ function k() {
347
347
  new Date(t).toLocaleString()
348
348
  ]
349
349
  }) : null]
350
- }), /* @__PURE__ */ p("div", {
350
+ }), /* @__PURE__ */ m("div", {
351
351
  className: "flex shrink-0 items-center gap-2",
352
- children: [e.status ? /* @__PURE__ */ f(b, {
352
+ children: [e.status ? /* @__PURE__ */ p(b, {
353
353
  variant: E(e.status),
354
354
  className: "uppercase",
355
355
  children: e.status
356
- }) : null, D(e.status) ? /* @__PURE__ */ p(x, {
356
+ }) : null, D(e.status) ? /* @__PURE__ */ m(x, {
357
357
  type: "button",
358
358
  size: "sm",
359
359
  disabled: L,
360
360
  onClick: () => void de(e),
361
- children: [/* @__PURE__ */ f(_, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.actions.send", "Send campaign")]
361
+ children: [/* @__PURE__ */ p(v, { className: "h-3.5 w-3.5" }), A("eventfullymanaged.communication.actions.send", "Send campaign")]
362
362
  }) : null]
363
363
  })]
364
364
  }, e.id);
365
365
  })
366
- }), /* @__PURE__ */ f(o, {
366
+ }), /* @__PURE__ */ p(o, {
367
367
  offset: M.offset,
368
368
  limit: M.limit,
369
369
  loadedCount: X.length,