@burdenoff/microfe-channel 2026.625.1 → 2026.625.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.
Files changed (29) hide show
  1. package/dist/channel/modules/channels/pages/ChannelDashboardPage.js +73 -76
  2. package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
  3. package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +407 -353
  4. package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -1
  5. package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +93 -87
  6. package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -1
  7. package/dist/channel/modules/channels/pages/ChannelUsersPage.js +119 -96
  8. package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
  9. package/dist/channel/modules/channels/pages/ChannelsListPage.js +219 -196
  10. package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -1
  11. package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +277 -232
  12. package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -1
  13. package/dist/channel/modules/channels/pages/ConnectionsListPage.js +112 -91
  14. package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -1
  15. package/dist/channel/modules/channels/pages/CreateChannelPage.js +28 -22
  16. package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -1
  17. package/dist/channel/modules/channels/pages/CreateConnectionPage.js +72 -65
  18. package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -1
  19. package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +101 -93
  20. package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -1
  21. package/dist/channel/modules/channels/pages/EditChannelPage.js +154 -148
  22. package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -1
  23. package/dist/channel/modules/channels/pages/EditConnectionPage.js +69 -62
  24. package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -1
  25. package/dist/channel/modules/channels/pages/SendMessagePage.js +131 -124
  26. package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -1
  27. package/dist/channel/modules/channels/pages/WebhookEventsPage.js +152 -129
  28. package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
  29. package/package.json +2 -2
@@ -1,23 +1,23 @@
1
1
  import { useChannel as e } from "../../../providers/ChannelProvider.js";
2
2
  import { emitShellEvent as t } from "../../../utils/shellBridge.js";
3
3
  import { WEBHOOK_RECEIVED_SUBSCRIPTION as n, useChannelSubscription as r } from "../../../hooks/useChannelSubscription.js";
4
- import { useChannel as ee } from "../../../hooks/useChannels.js";
5
- import { PermissionGuard as i } from "../../../components/PermissionGuard.js";
6
- import { CHANNEL_PERMISSIONS as a } from "../../../constants/permissions.js";
7
- import { useExportWebhookEvents as o } from "../hooks/useExport.js";
4
+ import { useChannel as i } from "../../../hooks/useChannels.js";
5
+ import { PermissionGuard as a } from "../../../components/PermissionGuard.js";
6
+ import { CHANNEL_PERMISSIONS as o } from "../../../constants/permissions.js";
7
+ import { useExportWebhookEvents as ee } from "../hooks/useExport.js";
8
8
  import { useCallback as s, useEffect as c, useRef as l, useState as u } from "react";
9
9
  import { useI18n as te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
10
- import { AlertCircle as d, ArrowLeft as ne, CheckCircle2 as f, ChevronLeft as p, ChevronRight as m, Clock as h, Download as re, Eye as g, EyeOff as _, Loader2 as v, RefreshCw as y, XCircle as b } from "lucide-react";
11
- import { useNavigate as x, useParams as ie } from "react-router-dom";
12
- import { usePermissions as ae } from "@burdenoff/fe-libs/shared/providers/shell";
13
- import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
14
- import { CTAOverflowMenu as oe, GlassCard as T } from "@burdenoff/fe-libs/ui";
10
+ import { AlertCircle as d, ArrowLeft as f, CheckCircle2 as p, ChevronLeft as m, ChevronRight as h, Clock as g, Download as ne, Eye as re, EyeOff as _, Loader2 as v, RefreshCw as y, XCircle as b } from "lucide-react";
11
+ import { useNavigate as ie, useParams as x } from "react-router-dom";
12
+ import { usePermissions as S } from "@burdenoff/fe-libs/shared/providers/shell";
13
+ import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
14
+ import { CTAOverflowMenu as ae, EmphasisPanel as E, GlassCard as oe, IllustratedEmptyState as se, PagePurpose as ce } from "@burdenoff/fe-libs/ui";
15
15
  //#region src/channel/modules/channels/pages/WebhookEventsPage.tsx
16
- var E = {
16
+ var D = {
17
17
  PENDING: {
18
18
  label: "Pending",
19
19
  color: "text-text-secondary bg-bg-sunken",
20
- icon: h
20
+ icon: g
21
21
  },
22
22
  PROCESSING: {
23
23
  label: "Processing",
@@ -27,7 +27,7 @@ var E = {
27
27
  COMPLETED: {
28
28
  label: "Completed",
29
29
  color: "text-status-success-text bg-status-success-bg-subtle",
30
- icon: f
30
+ icon: p
31
31
  },
32
32
  FAILED: {
33
33
  label: "Failed",
@@ -40,24 +40,24 @@ var E = {
40
40
  icon: _
41
41
  }
42
42
  };
43
- function D() {
44
- let { channelId: f } = ie(), h = x(), { hasPermission: b } = ae(), D = b(a.CHANNEL_WEBHOOK_EXPORT), { t: O } = te(), k = (e, t) => {
45
- let n = O(e);
43
+ function O() {
44
+ let { channelId: p } = x(), b = ie(), { hasPermission: O } = S(), le = O(o.CHANNEL_WEBHOOK_EXPORT), { t: ue } = te(), k = (e, t) => {
45
+ let n = ue(e);
46
46
  return n === e ? t : n;
47
- }, { organizationId: se } = e(), { triggerExport: ce, isExporting: A, exportError: j } = o(se ?? void 0, f), [M, N] = u(!0), [P, F] = u([]), [I, L] = u(null), [R, z] = u(25), [B, V] = u(0), [H, U] = u([void 0]), [W, G] = u(0), { channel: K, isLoading: le, error: q, fetchWebhookEvents: J } = ee(f), Y = s(async (e) => {
48
- if (f) {
49
- N(!0);
47
+ }, { organizationId: de } = e(), { triggerExport: A, isExporting: j, exportError: M } = ee(de ?? void 0, p), [N, P] = u(!0), [F, I] = u([]), [L, R] = u(null), [z, B] = u(25), [V, fe] = u(0), [H, U] = u([void 0]), [W, G] = u(0), { channel: K, isLoading: pe, error: q, fetchWebhookEvents: J } = i(p), Y = s(async (e) => {
48
+ if (p) {
49
+ P(!0);
50
50
  try {
51
- let t = await J(R, e);
52
- return F(t.items), V(t.total), t.nextCursor;
51
+ let t = await J(z, e);
52
+ return I(t.items), fe(t.total), t.nextCursor;
53
53
  } finally {
54
- N(!1);
54
+ P(!1);
55
55
  }
56
56
  }
57
57
  }, [
58
- f,
58
+ p,
59
59
  J,
60
- R
60
+ z
61
61
  ]), X = l(Y), Z = l(H), Q = l(W);
62
62
  c(() => {
63
63
  X.current = Y, Z.current = H, Q.current = W;
@@ -67,14 +67,14 @@ function D() {
67
67
  Promise.resolve().then(() => {
68
68
  U([void 0]), G(0), X.current(void 0);
69
69
  });
70
- }, [R]), c(() => {
70
+ }, [z]), c(() => {
71
71
  if ($.current) {
72
72
  $.current = !1;
73
73
  return;
74
74
  }
75
75
  Promise.resolve().then(() => X.current(Z.current[W]));
76
76
  }, [W]);
77
- let ue = s(async () => {
77
+ let me = s(async () => {
78
78
  let e = await Y(H[W]);
79
79
  e && U((t) => {
80
80
  let n = [...t];
@@ -84,251 +84,274 @@ function D() {
84
84
  H,
85
85
  W,
86
86
  Y
87
- ]), de = s(() => {
87
+ ]), he = s(() => {
88
88
  let e = W - 1;
89
89
  G(e), Y(H[e]);
90
90
  }, [
91
91
  H,
92
92
  W,
93
93
  Y
94
- ]), fe = P.length === R, pe = W > 0;
94
+ ]), ge = F.length === z, _e = W > 0;
95
95
  r({
96
96
  query: n,
97
- variables: { channelId: f },
97
+ variables: { channelId: p },
98
98
  operationName: "WebhookReceived",
99
- enabled: !!f,
99
+ enabled: !!p,
100
100
  onData: s(() => {
101
- t("webhook.received", { channelId: f }), X.current(Z.current[Q.current]);
102
- }, [f]),
101
+ t("webhook.received", { channelId: p }), X.current(Z.current[Q.current]);
102
+ }, [p]),
103
103
  pollFn: s(() => {
104
104
  X.current(Z.current[Q.current]);
105
105
  }, []),
106
106
  pollIntervalMs: 6e4
107
107
  });
108
- let me = (e) => E[e] || E.PENDING;
109
- return le ? /* @__PURE__ */ C("div", {
108
+ let ve = (e) => D[e] || D.PENDING;
109
+ return pe ? /* @__PURE__ */ w("div", {
110
110
  className: "flex items-center justify-center min-h-screen",
111
- children: /* @__PURE__ */ C(v, {
111
+ children: /* @__PURE__ */ w(v, {
112
112
  size: 32,
113
113
  className: "animate-spin text-accent-primary"
114
114
  })
115
- }) : q || !K ? /* @__PURE__ */ C("div", {
115
+ }) : q || !K ? /* @__PURE__ */ w("div", {
116
116
  className: "p-6",
117
- children: /* @__PURE__ */ w("div", {
117
+ children: /* @__PURE__ */ T("div", {
118
118
  className: "flex items-center gap-3 p-4 bg-status-error-bg-subtle border border-status-error-border rounded-lg",
119
119
  children: [
120
- /* @__PURE__ */ C(d, {
120
+ /* @__PURE__ */ w(d, {
121
121
  size: 20,
122
122
  className: "text-status-error-text"
123
123
  }),
124
- /* @__PURE__ */ C("div", { children: /* @__PURE__ */ C("p", {
124
+ /* @__PURE__ */ w("div", { children: /* @__PURE__ */ w("p", {
125
125
  className: "text-sm font-medium text-status-error-text",
126
126
  children: q || "Channel not found"
127
127
  }) }),
128
- /* @__PURE__ */ C("button", {
128
+ /* @__PURE__ */ w("button", {
129
129
  type: "button",
130
- onClick: () => h(`/channels/${f}`),
130
+ onClick: () => b(`/channels/${p}`),
131
131
  className: "ml-auto px-3 py-1 text-sm text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
132
132
  children: "Go Back"
133
133
  })
134
134
  ]
135
135
  })
136
- }) : /* @__PURE__ */ C(i, {
137
- permission: a.CHANNEL_WEBHOOK_READ,
138
- children: /* @__PURE__ */ w("div", {
136
+ }) : /* @__PURE__ */ w(a, {
137
+ permission: o.CHANNEL_WEBHOOK_READ,
138
+ children: /* @__PURE__ */ T("div", {
139
139
  className: "space-y-6 p-3 sm:p-6",
140
140
  children: [
141
- /* @__PURE__ */ w("div", {
141
+ /* @__PURE__ */ T("div", {
142
142
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
143
- children: [/* @__PURE__ */ w("div", {
143
+ children: [/* @__PURE__ */ T("div", {
144
144
  className: "flex items-center gap-3",
145
- children: [/* @__PURE__ */ C("button", {
145
+ children: [/* @__PURE__ */ w("button", {
146
146
  type: "button",
147
- onClick: () => h(`/channels/${f}`),
147
+ onClick: () => b(`/channels/${p}`),
148
148
  "aria-label": k("channel.backToChannel", "Back to channel"),
149
149
  className: "p-2 text-text-secondary hover:text-text-primary hover:bg-bg-sunken rounded-lg transition-colors",
150
- children: /* @__PURE__ */ C(ne, {
150
+ children: /* @__PURE__ */ w(f, {
151
151
  size: 20,
152
152
  "aria-hidden": "true"
153
153
  })
154
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("h1", {
154
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
155
155
  className: "text-xl sm:text-2xl font-bold text-text-primary",
156
156
  children: k("channel.webhookEvents", "Webhook Events")
157
- }), /* @__PURE__ */ w("p", {
157
+ }), /* @__PURE__ */ T("p", {
158
158
  className: "text-sm text-text-secondary mt-1",
159
159
  children: [K.name, " - Event history"]
160
160
  })] })]
161
- }), /* @__PURE__ */ w("div", {
161
+ }), /* @__PURE__ */ T("div", {
162
162
  className: "flex items-center gap-3",
163
- children: [/* @__PURE__ */ w("select", {
164
- value: R,
165
- onChange: (e) => z(Number(e.target.value)),
163
+ children: [/* @__PURE__ */ T("select", {
164
+ value: z,
165
+ onChange: (e) => B(Number(e.target.value)),
166
166
  className: "px-3 py-2 text-sm bg-surface border border-border-subtle rounded-lg focus:outline-none focus:ring-2 focus:ring-action-primary-bg/50 text-text-primary",
167
167
  children: [
168
- /* @__PURE__ */ C("option", {
168
+ /* @__PURE__ */ w("option", {
169
169
  value: 10,
170
170
  children: "10 results"
171
171
  }),
172
- /* @__PURE__ */ C("option", {
172
+ /* @__PURE__ */ w("option", {
173
173
  value: 25,
174
174
  children: "25 results"
175
175
  }),
176
- /* @__PURE__ */ C("option", {
176
+ /* @__PURE__ */ w("option", {
177
177
  value: 50,
178
178
  children: "50 results"
179
179
  }),
180
- /* @__PURE__ */ C("option", {
180
+ /* @__PURE__ */ w("option", {
181
181
  value: 100,
182
182
  children: "100 results"
183
183
  })
184
184
  ]
185
- }), /* @__PURE__ */ C(oe, { actions: [{
185
+ }), /* @__PURE__ */ w(ae, { actions: [{
186
186
  label: k("channel.refresh", "Refresh"),
187
- icon: /* @__PURE__ */ C(y, {
187
+ icon: /* @__PURE__ */ w(y, {
188
188
  size: 16,
189
- className: M ? "animate-spin" : "",
189
+ className: N ? "animate-spin" : "",
190
190
  "aria-hidden": "true"
191
191
  }),
192
- disabled: M,
192
+ disabled: N,
193
193
  onSelect: () => void Y(H[W])
194
- }, ...D ? [{
194
+ }, ...le ? [{
195
195
  label: k("channel.export", "Export"),
196
- icon: A ? /* @__PURE__ */ C(v, {
196
+ icon: j ? /* @__PURE__ */ w(v, {
197
197
  size: 16,
198
198
  className: "animate-spin",
199
199
  "aria-hidden": "true"
200
- }) : /* @__PURE__ */ C(re, {
200
+ }) : /* @__PURE__ */ w(ne, {
201
201
  size: 16,
202
202
  "aria-hidden": "true"
203
203
  }),
204
- disabled: A,
205
- onSelect: () => void ce()
204
+ disabled: j,
205
+ onSelect: () => void A()
206
206
  }] : []] })]
207
207
  })]
208
208
  }),
209
- j && /* @__PURE__ */ w("div", {
209
+ M && /* @__PURE__ */ T("div", {
210
210
  className: "p-4 bg-status-error-bg-subtle border border-status-error-border rounded-lg flex items-center gap-3",
211
- children: [/* @__PURE__ */ C(d, {
211
+ children: [/* @__PURE__ */ w(d, {
212
212
  size: 20,
213
213
  className: "text-status-error-text"
214
- }), /* @__PURE__ */ C("p", {
214
+ }), /* @__PURE__ */ w("p", {
215
215
  className: "text-sm text-status-error-text flex-1",
216
- children: j
216
+ children: M
217
217
  })]
218
218
  }),
219
- /* @__PURE__ */ C(T, {
220
- treatment: "insight",
221
- className: "p-4 border-border-seam",
222
- children: /* @__PURE__ */ C("p", {
219
+ /* @__PURE__ */ w(ce, {
220
+ icon: /* @__PURE__ */ w(g, {
221
+ size: 15,
222
+ "aria-hidden": "true"
223
+ }),
224
+ children: k("channel.webhookEventsPurpose", "Inbound events the provider pushed to this channel — delivery receipts, replies, status callbacks and the like. Each row shows how the event was processed, whether it was a duplicate, and the raw payload so you can inspect exactly what arrived. Use it to verify your webhook endpoint is receiving traffic and to debug why an event wasn't handled. Records are kept for 7 days.")
225
+ }),
226
+ /* @__PURE__ */ T(E, {
227
+ className: "flex items-center gap-3 p-4",
228
+ children: [/* @__PURE__ */ w("span", {
229
+ className: "rounded-lg bg-accent-purple-subtle p-2",
230
+ children: /* @__PURE__ */ w(g, {
231
+ size: 18,
232
+ className: "text-accent-purple",
233
+ "aria-hidden": "true"
234
+ })
235
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("p", {
236
+ className: "text-sm font-semibold text-text-primary",
237
+ children: [
238
+ V,
239
+ " ",
240
+ V === 1 ? k("channel.webhookEventSingular", "webhook event") : k("channel.webhookEventsPlural", "webhook events")
241
+ ]
242
+ }), /* @__PURE__ */ w("p", {
223
243
  className: "text-sm text-text-secondary",
224
- children: "Webhook events show all incoming webhooks received by this channel. Data is retained for 7 days."
225
- })
244
+ children: k("channel.webhookEventsBannerHint", "All incoming webhooks received by this channel, retained for 7 days. Expand a row to inspect its raw payload.")
245
+ })] })]
226
246
  }),
227
- /* @__PURE__ */ C(T, {
247
+ /* @__PURE__ */ w(oe, {
228
248
  treatment: "plain",
229
249
  className: "border-border-seam rounded-lg overflow-hidden p-0",
230
- children: /* @__PURE__ */ C("div", {
250
+ children: /* @__PURE__ */ w("div", {
231
251
  className: "overflow-x-auto min-w-full",
232
- children: /* @__PURE__ */ w("table", {
252
+ children: /* @__PURE__ */ T("table", {
233
253
  className: "w-full min-w-[600px]",
234
- children: [/* @__PURE__ */ C("thead", {
254
+ children: [/* @__PURE__ */ w("thead", {
235
255
  className: "bg-bg-sunken/50 border-b border-border-subtle",
236
- children: /* @__PURE__ */ w("tr", { children: [
237
- /* @__PURE__ */ C("th", {
256
+ children: /* @__PURE__ */ T("tr", { children: [
257
+ /* @__PURE__ */ w("th", {
238
258
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
239
259
  children: k("channel.status", "Status")
240
260
  }),
241
- /* @__PURE__ */ C("th", {
261
+ /* @__PURE__ */ w("th", {
242
262
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
243
263
  children: k("channel.eventType", "Event Type")
244
264
  }),
245
- /* @__PURE__ */ C("th", {
265
+ /* @__PURE__ */ w("th", {
246
266
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
247
267
  children: k("channel.duplicate", "Duplicate")
248
268
  }),
249
- /* @__PURE__ */ C("th", {
269
+ /* @__PURE__ */ w("th", {
250
270
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
251
271
  children: k("channel.processedAt", "Processed At")
252
272
  }),
253
- /* @__PURE__ */ C("th", {
273
+ /* @__PURE__ */ w("th", {
254
274
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
255
275
  children: k("channel.error", "Error")
256
276
  }),
257
- /* @__PURE__ */ C("th", {
277
+ /* @__PURE__ */ w("th", {
258
278
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
259
279
  children: k("channel.actions", "Actions")
260
280
  })
261
281
  ] })
262
- }), /* @__PURE__ */ C("tbody", {
282
+ }), /* @__PURE__ */ w("tbody", {
263
283
  className: "divide-y divide-border",
264
- children: P.length === 0 ? /* @__PURE__ */ C("tr", { children: /* @__PURE__ */ C("td", {
284
+ children: F.length === 0 ? /* @__PURE__ */ w("tr", { children: /* @__PURE__ */ w("td", {
265
285
  colSpan: 6,
266
- className: "px-4 py-8 text-center text-text-secondary",
267
- children: k("channel.noWebhookEventsFound", "No webhook events found")
268
- }) }) : P.map((e) => {
269
- let t = me(e.status), n = t.icon, r = I === e.id;
270
- return /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ w("tr", {
286
+ className: "px-4 py-8",
287
+ children: /* @__PURE__ */ w(se, {
288
+ illustration: "empty-notifications",
289
+ title: k("channel.noWebhookEventsFound", "No webhook events found")
290
+ })
291
+ }) }) : F.map((e) => {
292
+ let t = ve(e.status), n = t.icon, r = L === e.id;
293
+ return /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T("tr", {
271
294
  className: "hover:bg-bg-sunken/30 transition-colors",
272
295
  children: [
273
- /* @__PURE__ */ C("td", {
296
+ /* @__PURE__ */ w("td", {
274
297
  className: "px-4 py-3",
275
- children: /* @__PURE__ */ w("div", {
298
+ children: /* @__PURE__ */ T("div", {
276
299
  className: "flex items-center gap-2",
277
- children: [/* @__PURE__ */ C(n, {
300
+ children: [/* @__PURE__ */ w(n, {
278
301
  size: 14,
279
302
  className: t.color.split(" ")[0]
280
- }), /* @__PURE__ */ C("span", {
303
+ }), /* @__PURE__ */ w("span", {
281
304
  className: `text-sm font-medium ${t.color}`,
282
305
  children: t.label
283
306
  })]
284
307
  })
285
308
  }),
286
- /* @__PURE__ */ C("td", {
309
+ /* @__PURE__ */ w("td", {
287
310
  className: "px-4 py-3 text-sm font-mono text-text-primary",
288
311
  children: e.eventType
289
312
  }),
290
- /* @__PURE__ */ C("td", {
313
+ /* @__PURE__ */ w("td", {
291
314
  className: "px-4 py-3",
292
- children: e.isDuplicate ? /* @__PURE__ */ C("span", {
315
+ children: e.isDuplicate ? /* @__PURE__ */ w("span", {
293
316
  className: "text-xs text-status-warning-text bg-status-warning-bg-subtle px-2 py-1 rounded",
294
317
  children: "Duplicate"
295
- }) : /* @__PURE__ */ C("span", {
318
+ }) : /* @__PURE__ */ w("span", {
296
319
  className: "text-xs text-text-secondary",
297
320
  children: "No"
298
321
  })
299
322
  }),
300
- /* @__PURE__ */ C("td", {
323
+ /* @__PURE__ */ w("td", {
301
324
  className: "px-4 py-3 text-sm text-text-secondary",
302
325
  children: e.processedAt ? new Date(e.processedAt).toLocaleString() : "-"
303
326
  }),
304
- /* @__PURE__ */ C("td", {
327
+ /* @__PURE__ */ w("td", {
305
328
  className: "px-4 py-3 text-sm text-status-error-text max-w-xs truncate",
306
329
  children: e.errorMessage || "-"
307
330
  }),
308
- /* @__PURE__ */ C("td", {
331
+ /* @__PURE__ */ w("td", {
309
332
  className: "px-4 py-3",
310
- children: /* @__PURE__ */ C("button", {
333
+ children: /* @__PURE__ */ w("button", {
311
334
  type: "button",
312
- onClick: () => L(r ? null : e.id),
335
+ onClick: () => R(r ? null : e.id),
313
336
  "aria-label": r ? k("channel.hidePayload", "Hide payload") : k("channel.viewPayload", "View payload"),
314
337
  "aria-expanded": r,
315
338
  className: "p-1 text-text-secondary hover:text-text-primary hover:bg-bg-sunken rounded transition-colors",
316
- children: C(r ? _ : g, {
339
+ children: w(r ? _ : re, {
317
340
  size: 16,
318
341
  "aria-hidden": "true"
319
342
  })
320
343
  })
321
344
  })
322
345
  ]
323
- }, e.id), r && /* @__PURE__ */ C("tr", { children: /* @__PURE__ */ C("td", {
346
+ }, e.id), r && /* @__PURE__ */ w("tr", { children: /* @__PURE__ */ w("td", {
324
347
  colSpan: 6,
325
348
  className: "px-4 py-3 bg-bg-sunken/30",
326
- children: /* @__PURE__ */ w("div", {
349
+ children: /* @__PURE__ */ T("div", {
327
350
  className: "text-xs",
328
- children: [/* @__PURE__ */ w("p", {
351
+ children: [/* @__PURE__ */ T("p", {
329
352
  className: "text-text-secondary mb-1",
330
353
  children: [k("channel.payload", "Payload"), ":"]
331
- }), /* @__PURE__ */ C("pre", {
354
+ }), /* @__PURE__ */ w("pre", {
332
355
  className: "bg-surface p-2 rounded border border-border-subtle overflow-auto",
333
356
  children: JSON.stringify(e.payload, null, 2)
334
357
  })]
@@ -339,39 +362,39 @@ function D() {
339
362
  })
340
363
  })
341
364
  }),
342
- /* @__PURE__ */ w("div", {
365
+ /* @__PURE__ */ T("div", {
343
366
  className: "flex items-center justify-between",
344
- children: [/* @__PURE__ */ C("p", {
367
+ children: [/* @__PURE__ */ w("p", {
345
368
  className: "text-sm text-text-secondary",
346
- children: B > 0 && /* @__PURE__ */ w(S, { children: [
369
+ children: V > 0 && /* @__PURE__ */ T(C, { children: [
347
370
  k("channel.page", "Page"),
348
371
  " ",
349
- /* @__PURE__ */ C("span", {
372
+ /* @__PURE__ */ w("span", {
350
373
  className: "font-medium",
351
374
  children: W + 1
352
375
  }),
353
376
  " · ",
354
377
  k("channel.totalRecords", "Total"),
355
378
  ": ",
356
- /* @__PURE__ */ C("span", {
379
+ /* @__PURE__ */ w("span", {
357
380
  className: "font-medium",
358
- children: B
381
+ children: V
359
382
  })
360
383
  ] })
361
- }), /* @__PURE__ */ w("div", {
384
+ }), /* @__PURE__ */ T("div", {
362
385
  className: "flex items-center gap-2",
363
- children: [/* @__PURE__ */ w("button", {
386
+ children: [/* @__PURE__ */ T("button", {
364
387
  type: "button",
365
- onClick: de,
366
- disabled: !pe || M,
388
+ onClick: he,
389
+ disabled: !_e || N,
367
390
  className: "flex items-center gap-1 px-3 py-1.5 text-sm border border-border-subtle rounded-lg hover:bg-bg-sunken transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
368
- children: [/* @__PURE__ */ C(p, { size: 16 }), k("channel.previous", "Previous")]
369
- }), /* @__PURE__ */ w("button", {
391
+ children: [/* @__PURE__ */ w(m, { size: 16 }), k("channel.previous", "Previous")]
392
+ }), /* @__PURE__ */ T("button", {
370
393
  type: "button",
371
- onClick: () => void ue(),
372
- disabled: !fe || M,
394
+ onClick: () => void me(),
395
+ disabled: !ge || N,
373
396
  className: "flex items-center gap-1 px-3 py-1.5 text-sm border border-border-subtle rounded-lg hover:bg-bg-sunken transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
374
- children: [k("channel.next", "Next"), /* @__PURE__ */ C(m, { size: 16 })]
397
+ children: [k("channel.next", "Next"), /* @__PURE__ */ w(h, { size: 16 })]
375
398
  })]
376
399
  })]
377
400
  })
@@ -380,6 +403,6 @@ function D() {
380
403
  });
381
404
  }
382
405
  //#endregion
383
- export { D as WebhookEventsPage };
406
+ export { O as WebhookEventsPage };
384
407
 
385
408
  //# sourceMappingURL=WebhookEventsPage.js.map