@burdenoff/microfe-channel 2026.624.3 → 2026.625.2

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 +134 -134
  2. package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
  3. package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +287 -277
  4. package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -1
  5. package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +140 -131
  6. package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -1
  7. package/dist/channel/modules/channels/pages/ChannelUsersPage.js +169 -169
  8. package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
  9. package/dist/channel/modules/channels/pages/ChannelsListPage.js +204 -209
  10. package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -1
  11. package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +161 -155
  12. package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -1
  13. package/dist/channel/modules/channels/pages/ConnectionsListPage.js +141 -148
  14. package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -1
  15. package/dist/channel/modules/channels/pages/CreateChannelPage.js +27 -24
  16. package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -1
  17. package/dist/channel/modules/channels/pages/CreateConnectionPage.js +161 -156
  18. package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -1
  19. package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +177 -192
  20. package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -1
  21. package/dist/channel/modules/channels/pages/EditChannelPage.js +130 -122
  22. package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -1
  23. package/dist/channel/modules/channels/pages/EditConnectionPage.js +137 -132
  24. package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -1
  25. package/dist/channel/modules/channels/pages/SendMessagePage.js +87 -84
  26. package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -1
  27. package/dist/channel/modules/channels/pages/WebhookEventsPage.js +185 -183
  28. package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
  29. package/package.json +2 -2
@@ -12,8 +12,9 @@ import { Activity as oe, AlertCircle as p, AlertTriangle as m, Cable as h, Check
12
12
  import { useNavigate as me } from "react-router-dom";
13
13
  import { usePermissions as he } from "@burdenoff/fe-libs/shared/providers/shell";
14
14
  import { jsx as w, jsxs as T } from "react/jsx-runtime";
15
+ import { AuroraBackground as ge, CTAOverflowMenu as _e, GlassCard as E, GradientText as ve, IllustratedEmptyState as ye } from "@burdenoff/fe-libs/ui";
15
16
  //#region src/channel/modules/channels/pages/ChannelDashboardPage.tsx
16
- var E = {
17
+ var D = {
17
18
  EMAIL: {
18
19
  label: "Email",
19
20
  color: "bg-accent-blue-subtle text-accent-blue"
@@ -54,7 +55,7 @@ var E = {
54
55
  label: "Webchat",
55
56
  color: "bg-accent-teal-subtle text-accent-teal"
56
57
  }
57
- }, D = {
58
+ }, O = {
58
59
  ACTIVE: {
59
60
  label: "Active",
60
61
  dotColor: "bg-status-success-bg",
@@ -85,7 +86,7 @@ var E = {
85
86
  textColor: "text-text-secondary",
86
87
  icon: b
87
88
  }
88
- }, O = {
89
+ }, k = {
89
90
  HEALTHY: {
90
91
  label: "Healthy",
91
92
  color: "text-status-success-text",
@@ -107,7 +108,7 @@ var E = {
107
108
  icon: _
108
109
  }
109
110
  };
110
- function ge(e) {
111
+ function be(e) {
111
112
  let t = Date.now() - new Date(e).getTime();
112
113
  if (Number.isNaN(t) || t < 0) return "just now";
113
114
  let n = Math.floor(t / 1e3);
@@ -119,13 +120,15 @@ function ge(e) {
119
120
  let a = Math.floor(i / 24);
120
121
  return a < 7 ? `${a}d ago` : a < 30 ? `${Math.floor(a / 7)}w ago` : `${Math.floor(a / 30)}mo ago`;
121
122
  }
122
- function k({ icon: e, iconClass: t, value: n, label: r, sub: i }) {
123
- return /* @__PURE__ */ T("div", {
124
- className: "p-4 bg-surface border border-border-subtle rounded-lg",
123
+ function A({ icon: e, iconClass: t, value: n, label: r, sub: i, featured: a }) {
124
+ return /* @__PURE__ */ T(E, {
125
+ treatment: a ? "glass" : "metric",
126
+ glow: a,
127
+ className: "p-4 border-border-seam",
125
128
  children: [/* @__PURE__ */ T("div", {
126
129
  className: "flex items-center gap-3",
127
130
  children: [/* @__PURE__ */ w("div", {
128
- className: "p-2 rounded-lg hover:bg-action-primary-bg/10",
131
+ className: "p-2 rounded-lg bg-accent-primary/10",
129
132
  children: /* @__PURE__ */ w(e, {
130
133
  size: 18,
131
134
  className: t
@@ -138,27 +141,27 @@ function k({ icon: e, iconClass: t, value: n, label: r, sub: i }) {
138
141
  children: r
139
142
  })] })]
140
143
  }), i && /* @__PURE__ */ w("p", {
141
- className: "text-[11px] text-text-secondary mt-2 pl-11",
144
+ className: "text-[11px] text-text-muted mt-2 pl-11",
142
145
  children: i
143
146
  })]
144
147
  });
145
148
  }
146
- function A() {
147
- let m = me(), { hasPermission: g } = he(), _ = g(c.CHANNEL_CREATE), { t: C } = ae(), A = (e, t) => {
149
+ function j() {
150
+ let m = me(), { hasPermission: g } = he(), _ = g(c.CHANNEL_CREATE), { t: C } = ae(), j = (e, t) => {
148
151
  let n = C(e);
149
152
  return n === e ? t : n;
150
- }, [j, M] = f(null), [_e, N] = f(null), [P, F] = f(0), I = (e) => ({
151
- ...E[e] ?? {
153
+ }, [xe, M] = f(null), [Se, N] = f(null), [P, F] = f(0), I = (e) => ({
154
+ ...D[e] ?? {
152
155
  label: e,
153
156
  color: "bg-bg-sunken text-text-tertiary"
154
157
  },
155
- label: l(e, te, A)
158
+ label: l(e, te, j)
156
159
  }), L = (e) => ({
157
- ...D[e] ?? D.INACTIVE,
158
- label: l(e, ne, A)
160
+ ...O[e] ?? O.INACTIVE,
161
+ label: l(e, ne, j)
159
162
  }), R = (e) => ({
160
- ...O[e] ?? O.UNKNOWN,
161
- label: l(e, ee, A)
163
+ ...k[e] ?? k.UNKNOWN,
164
+ label: l(e, ee, j)
162
165
  }), { channels: z, isLoading: B, error: V, total: H, filter: U, updateFilter: W, deleteChannel: G, activateChannel: K, deactivateChannel: q, runHealthCheck: J, refetch: Y } = o(), X = Math.max(1, Math.ceil(H / 10)), Z = ie(Y);
163
166
  d(() => {
164
167
  Z.current = Y;
@@ -207,7 +210,7 @@ function A() {
207
210
  errored: i,
208
211
  unhealthy: a
209
212
  };
210
- }, [z]), ve = u(async (e) => {
213
+ }, [z]), Ce = u(async (e) => {
211
214
  t("medium"), N(e);
212
215
  try {
213
216
  await G(e), n("success"), M(null);
@@ -216,14 +219,14 @@ function A() {
216
219
  } finally {
217
220
  N(null);
218
221
  }
219
- }, [G]), ye = u(async (e) => {
222
+ }, [G]), we = u(async (e) => {
220
223
  N(e.id);
221
224
  try {
222
225
  e.status === "ACTIVE" ? await q(e.id) : await K(e.id);
223
226
  } finally {
224
227
  N(null);
225
228
  }
226
- }, [K, q]), be = u(async (e) => {
229
+ }, [K, q]), Te = u(async (e) => {
227
230
  N(e);
228
231
  try {
229
232
  await J(e);
@@ -237,35 +240,45 @@ function A() {
237
240
  className: "space-y-5 p-3 sm:p-6",
238
241
  children: [
239
242
  /* @__PURE__ */ T("div", {
240
- className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
241
- children: [/* @__PURE__ */ T("div", {
242
- className: "flex items-center gap-3",
243
- children: [/* @__PURE__ */ w("div", {
244
- className: "p-2 rounded-lg bg-accent-primary/10",
245
- children: /* @__PURE__ */ w(ce, {
246
- size: 20,
247
- className: "text-accent-primary"
248
- })
249
- }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
250
- className: "text-xl font-bold text-text-primary",
251
- children: A("channel.channelDashboard", "Channel Dashboard")
252
- }), /* @__PURE__ */ w("p", {
253
- className: "text-sm text-text-secondary",
254
- children: A("channel.dashboardSubtitle", "Manage and monitor your communication channels")
255
- })] })]
256
- }), /* @__PURE__ */ T("div", {
257
- className: "flex items-center gap-2",
258
- children: [/* @__PURE__ */ T("button", {
259
- type: "button",
260
- onClick: () => Y(),
261
- className: "inline-flex items-center gap-1.5 px-3 py-2 text-sm text-text-secondary hover:text-text-primary border border-border-subtle rounded-lg hover:bg-action-primary-bg/10 transition-colors",
262
- children: [/* @__PURE__ */ w(S, { size: 14 }), A("channel.refresh", "Refresh")]
263
- }), _ && /* @__PURE__ */ T("button", {
264
- type: "button",
265
- onClick: () => m("/channels/create"),
266
- className: "inline-flex items-center gap-1.5 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg hover:bg-action-primary-bg-hover rounded-lg transition-colors",
243
+ className: "relative overflow-hidden rounded-xl",
244
+ children: [/* @__PURE__ */ w(ge, { intensity: "subtle" }), /* @__PURE__ */ T("div", {
245
+ className: "flex flex-col gap-3 p-2 sm:flex-row sm:items-center sm:justify-between",
246
+ children: [/* @__PURE__ */ T("div", {
247
+ className: "flex items-center gap-3",
248
+ children: [/* @__PURE__ */ w("div", {
249
+ className: "p-2 rounded-lg bg-accent-primary/10",
250
+ children: /* @__PURE__ */ w(ce, {
251
+ size: 20,
252
+ className: "text-accent-primary"
253
+ })
254
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
255
+ className: "text-xl font-bold text-text-primary",
256
+ children: /* @__PURE__ */ w(ve, { children: j("channel.channelDashboard", "Channel Dashboard") })
257
+ }), /* @__PURE__ */ w("p", {
258
+ className: "text-sm text-text-secondary",
259
+ children: j("channel.dashboardSubtitle", "Manage and monitor your communication channels")
260
+ })] })]
261
+ }), /* @__PURE__ */ w("div", {
262
+ className: "flex items-center gap-2",
267
263
  "data-tour": "channels-dashboard-create-button",
268
- children: [/* @__PURE__ */ w(y, { size: 14 }), A("channel.createChannel", "Create Channel")]
264
+ children: /* @__PURE__ */ w(_e, {
265
+ primary: _ ? {
266
+ label: j("channel.createChannel", "Create Channel"),
267
+ icon: /* @__PURE__ */ w(y, {
268
+ size: 16,
269
+ "aria-hidden": "true"
270
+ }),
271
+ onSelect: () => m("/channels/create")
272
+ } : void 0,
273
+ actions: [{
274
+ label: j("channel.refresh", "Refresh"),
275
+ icon: /* @__PURE__ */ w(S, {
276
+ size: 16,
277
+ "aria-hidden": "true"
278
+ }),
279
+ onSelect: () => void Y()
280
+ }]
281
+ })
269
282
  })]
270
283
  })]
271
284
  }),
@@ -273,32 +286,33 @@ function A() {
273
286
  "data-tour": "channels-dashboard-kpi-section",
274
287
  className: "grid gap-3 grid-cols-2 md:grid-cols-3 lg:grid-cols-4",
275
288
  children: [
276
- /* @__PURE__ */ w(k, {
289
+ /* @__PURE__ */ w(A, {
290
+ featured: !0,
277
291
  icon: x,
278
292
  iconClass: "text-accent-primary",
279
293
  value: H,
280
- label: A("channel.totalChannels", "Total Channels"),
281
- sub: $.active > 0 ? `${$.active} ${A("channel.status.active", "Active").toLowerCase()}, ${H - $.active} ${A("channel.status.inactive", "Inactive").toLowerCase()}` : void 0
294
+ label: j("channel.totalChannels", "Total Channels"),
295
+ sub: $.active > 0 ? `${$.active} ${j("channel.status.active", "Active").toLowerCase()}, ${H - $.active} ${j("channel.status.inactive", "Inactive").toLowerCase()}` : void 0
282
296
  }),
283
- /* @__PURE__ */ w(k, {
297
+ /* @__PURE__ */ w(A, {
284
298
  icon: fe,
285
299
  iconClass: "text-status-success-text",
286
300
  value: $.healthy,
287
- label: A("channel.healthy", "Healthy"),
288
- sub: $.unhealthy > 0 ? `${$.unhealthy} ${A("channel.health.unhealthy", "Unhealthy").toLowerCase()}` : H > 0 ? $.healthy === H ? A("channel.allSystemsNominal", "All systems nominal") : `${H - $.healthy} ${A("channel.health.unchecked", "unchecked")}` : void 0
301
+ label: j("channel.healthy", "Healthy"),
302
+ sub: $.unhealthy > 0 ? `${$.unhealthy} ${j("channel.health.unhealthy", "Unhealthy").toLowerCase()}` : H > 0 ? $.healthy === H ? j("channel.allSystemsNominal", "All systems nominal") : `${H - $.healthy} ${j("channel.health.unchecked", "unchecked")}` : void 0
289
303
  }),
290
- /* @__PURE__ */ w(k, {
304
+ /* @__PURE__ */ w(A, {
291
305
  icon: h,
292
306
  iconClass: "text-accent-blue",
293
307
  value: $.connected,
294
- label: A("channel.connected", "Connected"),
295
- sub: H > 0 ? `${H - $.connected} ${A("channel.disconnected", "Disconnected").toLowerCase()}` : void 0
308
+ label: j("channel.connected", "Connected"),
309
+ sub: H > 0 ? `${H - $.connected} ${j("channel.disconnected", "Disconnected").toLowerCase()}` : void 0
296
310
  }),
297
- /* @__PURE__ */ w(k, {
311
+ /* @__PURE__ */ w(A, {
298
312
  icon: le,
299
313
  iconClass: "text-accent-violet",
300
314
  value: $.messages24h.toLocaleString(),
301
- label: A("channel.messages24h", "Messages (24h)")
315
+ label: j("channel.messages24h", "Messages (24h)")
302
316
  })
303
317
  ]
304
318
  }),
@@ -317,14 +331,14 @@ function A() {
317
331
  children: $.errored
318
332
  }),
319
333
  " ",
320
- A($.errored === 1 ? "channel.errorStateSummarySingle" : "channel.errorStateSummaryMultiple", $.errored === 1 ? "channel in error state" : "channels in error state")
334
+ j($.errored === 1 ? "channel.errorStateSummarySingle" : "channel.errorStateSummaryMultiple", $.errored === 1 ? "channel in error state" : "channels in error state")
321
335
  ]
322
336
  }),
323
337
  /* @__PURE__ */ w("button", {
324
338
  type: "button",
325
339
  onClick: () => W({ status: "ERROR" }),
326
340
  className: "ml-auto text-xs font-medium text-status-error-text hover:text-status-error-text/80 transition-colors",
327
- children: A("channel.showErrors", "Show errors")
341
+ children: j("channel.showErrors", "Show errors")
328
342
  })
329
343
  ]
330
344
  }),
@@ -339,8 +353,8 @@ function A() {
339
353
  className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary"
340
354
  }), /* @__PURE__ */ w("input", {
341
355
  type: "text",
342
- "aria-label": A("channel.searchChannels", "Search channels..."),
343
- placeholder: A("channel.searchChannels", "Search channels..."),
356
+ "aria-label": j("channel.searchChannels", "Search channels..."),
357
+ placeholder: j("channel.searchChannels", "Search channels..."),
344
358
  value: U.search || "",
345
359
  onChange: (e) => W({ search: e.target.value }),
346
360
  className: "w-full pl-9 pr-4 py-2 text-sm bg-surface border border-border-subtle rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500/50 placeholder:text-text-secondary"
@@ -352,8 +366,8 @@ function A() {
352
366
  className: "px-3 py-2 text-sm bg-surface border border-border-subtle rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500/50 text-text-primary",
353
367
  children: [/* @__PURE__ */ w("option", {
354
368
  value: "",
355
- children: A("channel.allPlatforms", "All Platforms")
356
- }), Object.entries(E).map(([e, t]) => /* @__PURE__ */ w("option", {
369
+ children: j("channel.allPlatforms", "All Platforms")
370
+ }), Object.entries(D).map(([e, t]) => /* @__PURE__ */ w("option", {
357
371
  value: e,
358
372
  children: t.label
359
373
  }, e))]
@@ -364,8 +378,8 @@ function A() {
364
378
  className: "px-3 py-2 text-sm bg-surface border border-border-subtle rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500/50 text-text-primary",
365
379
  children: [/* @__PURE__ */ w("option", {
366
380
  value: "",
367
- children: A("channel.allStatus", "All Status")
368
- }), Object.entries(D).map(([e, t]) => /* @__PURE__ */ w("option", {
381
+ children: j("channel.allStatus", "All Status")
382
+ }), Object.entries(O).map(([e, t]) => /* @__PURE__ */ w("option", {
369
383
  value: e,
370
384
  children: t.label
371
385
  }, e))]
@@ -383,7 +397,7 @@ function A() {
383
397
  className: "flex-1 min-w-0",
384
398
  children: [/* @__PURE__ */ w("p", {
385
399
  className: "text-sm font-medium text-status-error-text",
386
- children: A("channel.loadFailed", "Failed to load channels")
400
+ children: j("channel.loadFailed", "Failed to load channels")
387
401
  }), /* @__PURE__ */ w("p", {
388
402
  className: "text-xs text-status-error-text/70 truncate",
389
403
  children: V
@@ -393,7 +407,7 @@ function A() {
393
407
  type: "button",
394
408
  onClick: () => Y(),
395
409
  className: "shrink-0 px-3 py-1 text-sm text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
396
- children: A("channel.retry", "Retry")
410
+ children: j("channel.retry", "Retry")
397
411
  })
398
412
  ]
399
413
  }),
@@ -404,34 +418,20 @@ function A() {
404
418
  className: "animate-spin text-accent-primary"
405
419
  })
406
420
  }),
407
- !B && !V && z.length === 0 && /* @__PURE__ */ T("div", {
408
- className: "flex flex-col items-center justify-center py-16 text-center",
409
- children: [
410
- /* @__PURE__ */ w("div", {
411
- className: "p-3 rounded-full bg-accent-primary/10 mb-4",
412
- children: /* @__PURE__ */ w(x, {
413
- size: 36,
414
- className: "text-accent-primary"
415
- })
416
- }),
417
- /* @__PURE__ */ w("h3", {
418
- className: "text-lg font-semibold text-text-primary mb-1",
419
- children: U.search || U.platform || U.status ? A("channel.noChannelsMatchFilter", "No channels match your filters") : A("channel.noChannels", "No channels yet")
420
- }),
421
- /* @__PURE__ */ w("p", {
422
- className: "text-sm text-text-secondary max-w-sm mb-5",
423
- children: U.search || U.platform || U.status ? A("channel.adjustFilters", "Try adjusting your search or filters.") : A("channel.createFirstChannel", "Create your first communication channel to start sending messages across Email, SMS, Push, Slack and more.")
424
- }),
425
- _ && !(U.search || U.platform || U.status) && /* @__PURE__ */ T("button", {
426
- type: "button",
427
- onClick: () => m("/channels/create"),
428
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg hover:bg-action-primary-bg-hover rounded-lg transition-colors",
429
- children: [/* @__PURE__ */ w(y, { size: 14 }), A("channel.createChannel", "Create Channel")]
430
- })
431
- ]
421
+ !B && !V && z.length === 0 && /* @__PURE__ */ w(ye, {
422
+ illustration: U.search || U.platform || U.status ? "empty-search" : "onboarding",
423
+ title: U.search || U.platform || U.status ? j("channel.noChannelsMatchFilter", "No channels match your filters") : j("channel.noChannels", "No channels yet"),
424
+ description: U.search || U.platform || U.status ? j("channel.adjustFilters", "Try adjusting your search or filters.") : j("channel.createFirstChannel", "Create your first communication channel to start sending messages across Email, SMS, Push, Slack and more."),
425
+ action: _ && !(U.search || U.platform || U.status) ? /* @__PURE__ */ T("button", {
426
+ type: "button",
427
+ onClick: () => m("/channels/create"),
428
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg hover:bg-action-primary-bg-hover rounded-lg transition-colors",
429
+ children: [/* @__PURE__ */ w(y, { size: 14 }), j("channel.createChannel", "Create Channel")]
430
+ }) : void 0
432
431
  }),
433
- z.length > 0 && /* @__PURE__ */ T("div", {
434
- className: "border border-border-subtle rounded-lg overflow-hidden",
432
+ z.length > 0 && /* @__PURE__ */ T(E, {
433
+ treatment: "plain",
434
+ className: "border-border-seam rounded-lg overflow-hidden p-0",
435
435
  "data-tour": "channels-dashboard-table",
436
436
  children: [/* @__PURE__ */ w("div", {
437
437
  className: "overflow-x-auto min-w-full",
@@ -442,41 +442,41 @@ function A() {
442
442
  children: [
443
443
  /* @__PURE__ */ w("th", {
444
444
  className: "text-left px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
445
- children: A("channel.channel", "Channel")
445
+ children: j("channel.channel", "Channel")
446
446
  }),
447
447
  /* @__PURE__ */ w("th", {
448
448
  className: "text-left px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
449
- children: A("channel.platform", "Platform")
449
+ children: j("channel.platform", "Platform")
450
450
  }),
451
451
  /* @__PURE__ */ w("th", {
452
452
  className: "text-left px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
453
- children: A("channel.status", "Status")
453
+ children: j("channel.status", "Status")
454
454
  }),
455
455
  /* @__PURE__ */ w("th", {
456
456
  className: "text-left px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
457
- children: A("channel.health", "Health")
457
+ children: j("channel.health", "Health")
458
458
  }),
459
459
  /* @__PURE__ */ w("th", {
460
460
  className: "text-left px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
461
- children: A("channel.connection", "Connection")
461
+ children: j("channel.connection", "Connection")
462
462
  }),
463
463
  /* @__PURE__ */ w("th", {
464
464
  className: "text-right px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
465
- children: A("channel.msgs24h", "Msgs 24h")
465
+ children: j("channel.msgs24h", "Msgs 24h")
466
466
  }),
467
467
  /* @__PURE__ */ w("th", {
468
468
  className: "text-right px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
469
- children: A("channel.updated", "Updated")
469
+ children: j("channel.updated", "Updated")
470
470
  }),
471
471
  /* @__PURE__ */ w("th", {
472
472
  className: "text-right px-4 py-3 text-xs font-medium text-text-secondary uppercase tracking-wider",
473
- children: A("channel.actions", "Actions")
473
+ children: j("channel.actions", "Actions")
474
474
  })
475
475
  ]
476
476
  }) }), /* @__PURE__ */ w("tbody", {
477
477
  className: "divide-y divide-border",
478
478
  children: z.map((e) => {
479
- let t = _e === e.id;
479
+ let t = Se === e.id;
480
480
  return /* @__PURE__ */ T("tr", {
481
481
  className: "bg-surface hover:bg-action-primary-bg/60 transition-colors group",
482
482
  children: [
@@ -509,7 +509,7 @@ function A() {
509
509
  className: "px-4 py-3",
510
510
  children: /* @__PURE__ */ T("span", {
511
511
  className: "inline-flex items-center gap-1.5",
512
- children: [/* @__PURE__ */ w("span", { className: `w-1.5 h-1.5 rounded-full ${L(e.status).dotColor}` }), /* @__PURE__ */ w("span", {
512
+ children: [/* @__PURE__ */ w("span", { className: `w-1.5 h-1.5 rounded-full ${L(e.status).dotColor} ${e.status === "ACTIVE" ? "motion-safe:animate-vc-glow-pulse" : ""}` }), /* @__PURE__ */ w("span", {
513
513
  className: `text-xs ${L(e.status).textColor}`,
514
514
  children: L(e.status).label
515
515
  })]
@@ -529,7 +529,7 @@ function A() {
529
529
  className: "px-4 py-3",
530
530
  children: /* @__PURE__ */ w("span", {
531
531
  className: `text-xs ${e.isConnected ? "text-status-success-text" : "text-text-secondary"}`,
532
- children: e.isConnected ? A("channel.connected", "Connected") : A("channel.disconnected", "Disconnected")
532
+ children: e.isConnected ? j("channel.connected", "Connected") : j("channel.disconnected", "Disconnected")
533
533
  })
534
534
  }),
535
535
  /* @__PURE__ */ w("td", {
@@ -543,7 +543,7 @@ function A() {
543
543
  className: "px-4 py-3 text-right",
544
544
  children: /* @__PURE__ */ w("span", {
545
545
  className: "text-xs text-text-secondary whitespace-nowrap",
546
- children: ge(e.updatedAt)
546
+ children: be(e.updatedAt)
547
547
  })
548
548
  }),
549
549
  /* @__PURE__ */ w("td", {
@@ -555,17 +555,17 @@ function A() {
555
555
  type: "button",
556
556
  onClick: () => m(`/channels/${e.id}`),
557
557
  className: "p-1.5 text-text-secondary hover:text-accent-primary hover:bg-accent-primary/10 rounded transition-colors",
558
- title: A("channel.view", "View"),
558
+ title: j("channel.view", "View"),
559
559
  children: /* @__PURE__ */ w(se, { size: 14 })
560
560
  }),
561
561
  /* @__PURE__ */ w(s, {
562
562
  permission: c.CHANNEL_EXECUTE,
563
563
  children: /* @__PURE__ */ w("button", {
564
564
  type: "button",
565
- onClick: () => be(e.id),
565
+ onClick: () => Te(e.id),
566
566
  disabled: t,
567
567
  className: "p-1.5 text-text-secondary hover:text-accent-blue hover:bg-accent-blue-subtle rounded transition-colors disabled:opacity-40",
568
- title: A("channel.healthCheck", "Health Check"),
568
+ title: j("channel.healthCheck", "Health Check"),
569
569
  children: t ? /* @__PURE__ */ w(v, {
570
570
  size: 14,
571
571
  className: "animate-spin"
@@ -576,26 +576,26 @@ function A() {
576
576
  permission: c.CHANNEL_UPDATE,
577
577
  children: /* @__PURE__ */ w("button", {
578
578
  type: "button",
579
- onClick: () => ye(e),
579
+ onClick: () => we(e),
580
580
  disabled: t,
581
581
  className: `p-1.5 rounded transition-colors disabled:opacity-40 ${e.status === "ACTIVE" ? "text-text-secondary hover:text-status-warning-text hover:bg-status-warning-bg-subtle" : "text-text-secondary hover:text-status-success-text hover:bg-status-success-bg-subtle"}`,
582
- title: e.status === "ACTIVE" ? A("channel.deactivate", "Deactivate") : A("channel.activate", "Activate"),
582
+ title: e.status === "ACTIVE" ? j("channel.deactivate", "Deactivate") : j("channel.activate", "Activate"),
583
583
  children: e.status === "ACTIVE" ? /* @__PURE__ */ w(b, { size: 14 }) : /* @__PURE__ */ w(ue, { size: 14 })
584
584
  })
585
585
  }),
586
- j === e.id ? /* @__PURE__ */ T("span", {
586
+ xe === e.id ? /* @__PURE__ */ T("span", {
587
587
  className: "inline-flex items-center gap-1 ml-1",
588
588
  children: [/* @__PURE__ */ w("button", {
589
589
  type: "button",
590
- onClick: () => ve(e.id),
590
+ onClick: () => Ce(e.id),
591
591
  disabled: t,
592
592
  className: "px-1.5 py-0.5 text-[11px] font-medium text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
593
- children: t ? "..." : A("channel.yes", "Yes")
593
+ children: t ? "..." : j("channel.yes", "Yes")
594
594
  }), /* @__PURE__ */ w("button", {
595
595
  type: "button",
596
596
  onClick: () => M(null),
597
597
  className: "px-1.5 py-0.5 text-[11px] text-text-secondary hover:bg-action-primary-bg/10 rounded transition-colors",
598
- children: A("channel.no", "No")
598
+ children: j("channel.no", "No")
599
599
  })]
600
600
  }) : /* @__PURE__ */ w(s, {
601
601
  permission: c.CHANNEL_DELETE,
@@ -603,7 +603,7 @@ function A() {
603
603
  type: "button",
604
604
  onClick: () => M(e.id),
605
605
  className: "p-1.5 text-text-secondary hover:text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
606
- title: A("channel.delete", "Delete"),
606
+ title: j("channel.delete", "Delete"),
607
607
  children: /* @__PURE__ */ w(pe, { size: 14 })
608
608
  })
609
609
  })
@@ -620,7 +620,7 @@ function A() {
620
620
  children: [/* @__PURE__ */ T("p", {
621
621
  className: "text-xs text-text-secondary",
622
622
  children: [
623
- A("channel.showing", "Showing"),
623
+ j("channel.showing", "Showing"),
624
624
  " ",
625
625
  /* @__PURE__ */ T("span", {
626
626
  className: "font-medium text-text-primary",
@@ -631,14 +631,14 @@ function A() {
631
631
  ]
632
632
  }),
633
633
  " ",
634
- A("channel.of", "of"),
634
+ j("channel.of", "of"),
635
635
  " ",
636
636
  /* @__PURE__ */ w("span", {
637
637
  className: "font-medium text-text-primary",
638
638
  children: H
639
639
  }),
640
640
  " ",
641
- A("channel.channelsLower", "channels")
641
+ j("channel.channelsLower", "channels")
642
642
  ]
643
643
  }), /* @__PURE__ */ T("div", {
644
644
  className: "flex items-center gap-2",
@@ -648,7 +648,7 @@ function A() {
648
648
  onClick: () => F((e) => Math.max(0, e - 1)),
649
649
  disabled: P === 0,
650
650
  className: "px-2.5 py-1 text-xs border border-border-subtle rounded hover:bg-bg-sunken transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
651
- children: A("channel.previous", "Prev")
651
+ children: j("channel.previous", "Prev")
652
652
  }),
653
653
  /* @__PURE__ */ T("span", {
654
654
  className: "text-xs text-text-secondary",
@@ -663,7 +663,7 @@ function A() {
663
663
  onClick: () => F((e) => Math.min(X - 1, e + 1)),
664
664
  disabled: P >= X - 1,
665
665
  className: "px-2.5 py-1 text-xs border border-border-subtle rounded hover:bg-bg-sunken transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
666
- children: A("channel.next", "Next")
666
+ children: j("channel.next", "Next")
667
667
  })
668
668
  ]
669
669
  })]
@@ -676,7 +676,7 @@ function A() {
676
676
  /* @__PURE__ */ T("button", {
677
677
  type: "button",
678
678
  onClick: () => m("/channels/?tab=all"),
679
- className: "flex items-center gap-3 p-3 bg-surface border border-border-subtle rounded-lg hover:bg-action-primary-bg/10 transition-colors text-left",
679
+ className: "flex items-center gap-3 p-3 bg-gloss-card border border-border-seam rounded-lg shadow-[var(--shadow-pop)] hover:bg-action-primary-bg/10 transition-colors text-left",
680
680
  children: [/* @__PURE__ */ w(x, {
681
681
  size: 16,
682
682
  className: "text-accent-primary shrink-0"
@@ -684,17 +684,17 @@ function A() {
684
684
  className: "min-w-0",
685
685
  children: [/* @__PURE__ */ w("p", {
686
686
  className: "text-sm font-medium text-text-primary",
687
- children: A("channel.allChannels", "All Channels")
687
+ children: j("channel.allChannels", "All Channels")
688
688
  }), /* @__PURE__ */ w("p", {
689
689
  className: "text-xs text-text-secondary truncate",
690
- children: A("channel.browseChannels", "Browse and manage channel cards")
690
+ children: j("channel.browseChannels", "Browse and manage channel cards")
691
691
  })]
692
692
  })]
693
693
  }),
694
694
  /* @__PURE__ */ T("button", {
695
695
  type: "button",
696
696
  onClick: () => m("/channels/?tab=connections"),
697
- className: "flex items-center gap-3 p-3 bg-surface border border-border-subtle rounded-lg hover:bg-action-primary-bg/10 transition-colors text-left",
697
+ className: "flex items-center gap-3 p-3 bg-gloss-card border border-border-seam rounded-lg shadow-[var(--shadow-pop)] hover:bg-action-primary-bg/10 transition-colors text-left",
698
698
  children: [/* @__PURE__ */ w(h, {
699
699
  size: 16,
700
700
  className: "text-accent-blue shrink-0"
@@ -702,17 +702,17 @@ function A() {
702
702
  className: "min-w-0",
703
703
  children: [/* @__PURE__ */ w("p", {
704
704
  className: "text-sm font-medium text-text-primary",
705
- children: A("channel.connections", "Connections")
705
+ children: j("channel.connections", "Connections")
706
706
  }), /* @__PURE__ */ w("p", {
707
707
  className: "text-xs text-text-secondary truncate",
708
- children: A("channel.connectionsSubtitle", "OAuth, API keys & credentials")
708
+ children: j("channel.connectionsSubtitle", "OAuth, API keys & credentials")
709
709
  })]
710
710
  })]
711
711
  }),
712
712
  /* @__PURE__ */ T("button", {
713
713
  type: "button",
714
714
  onClick: () => m("/channels/?tab=send"),
715
- className: "flex items-center gap-3 p-3 bg-surface border border-border-subtle rounded-lg hover:bg-action-primary-bg/10 transition-colors text-left",
715
+ className: "flex items-center gap-3 p-3 bg-gloss-card border border-border-seam rounded-lg shadow-[var(--shadow-pop)] hover:bg-action-primary-bg/10 transition-colors text-left",
716
716
  children: [/* @__PURE__ */ w(oe, {
717
717
  size: 16,
718
718
  className: "text-accent-violet shrink-0"
@@ -720,10 +720,10 @@ function A() {
720
720
  className: "min-w-0",
721
721
  children: [/* @__PURE__ */ w("p", {
722
722
  className: "text-sm font-medium text-text-primary",
723
- children: A("channel.sendMessage", "Send Message")
723
+ children: j("channel.sendMessage", "Send Message")
724
724
  }), /* @__PURE__ */ w("p", {
725
725
  className: "text-xs text-text-secondary truncate",
726
- children: A("channel.sendMessageSubtitle", "Send a test or one-off notification")
726
+ children: j("channel.sendMessageSubtitle", "Send a test or one-off notification")
727
727
  })]
728
728
  })]
729
729
  })
@@ -734,6 +734,6 @@ function A() {
734
734
  });
735
735
  }
736
736
  //#endregion
737
- export { A as ChannelDashboardPage };
737
+ export { j as ChannelDashboardPage };
738
738
 
739
739
  //# sourceMappingURL=ChannelDashboardPage.js.map