@burdenoff/microfe-channel 2026.526.1 → 2026.530.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 (47) hide show
  1. package/dist/channel/ChannelRoutes.js +5 -6
  2. package/dist/channel/ChannelRoutes.js.map +1 -1
  3. package/dist/channel/components/AdapterCredentialsForm.js +14 -2
  4. package/dist/channel/components/AdapterCredentialsForm.js.map +1 -1
  5. package/dist/channel/components/FeatureNotEnabled.js +1 -1
  6. package/dist/channel/components/FeatureNotEnabled.js.map +1 -1
  7. package/dist/channel/components/PermissionGuard.js +1 -1
  8. package/dist/channel/components/PermissionGuard.js.map +1 -1
  9. package/dist/channel/config/adapterCredentials.js +19 -11
  10. package/dist/channel/config/adapterCredentials.js.map +1 -1
  11. package/dist/channel/constants/permissions.js +3 -0
  12. package/dist/channel/constants/permissions.js.map +1 -1
  13. package/dist/channel/hooks/useChannelSubscription.js.map +1 -1
  14. package/dist/channel/modules/channels/pages/ChannelDashboardPage.js +244 -220
  15. package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
  16. package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +416 -390
  17. package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -1
  18. package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +30 -15
  19. package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -1
  20. package/dist/channel/modules/channels/pages/ChannelUsersPage.js +8 -2
  21. package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
  22. package/dist/channel/modules/channels/pages/ChannelsListPage.js +241 -213
  23. package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -1
  24. package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +107 -98
  25. package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -1
  26. package/dist/channel/modules/channels/pages/ConnectionsListPage.js +160 -140
  27. package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -1
  28. package/dist/channel/modules/channels/pages/CreateChannelPage.js +47 -50
  29. package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -1
  30. package/dist/channel/modules/channels/pages/CreateConnectionPage.js +16 -5
  31. package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -1
  32. package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +11 -4
  33. package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -1
  34. package/dist/channel/modules/channels/pages/EditChannelPage.js +17 -8
  35. package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -1
  36. package/dist/channel/modules/channels/pages/EditConnectionPage.js +11 -6
  37. package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -1
  38. package/dist/channel/modules/channels/pages/SendMessagePage.js +21 -9
  39. package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -1
  40. package/dist/channel/modules/channels/pages/WebhookEventsPage.js +8 -1
  41. package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
  42. package/dist/channel/pages/ChannelLandingPage.js +50 -35
  43. package/dist/channel/pages/ChannelLandingPage.js.map +1 -1
  44. package/dist/channel/providers/ChannelProvider.js +1 -1
  45. package/dist/channel/providers/ChannelProvider.js.map +1 -1
  46. package/package.json +2 -2
  47. package/dist/channel/modules/channels/pages/index.js +0 -14
@@ -8,11 +8,12 @@ import { CHANNEL_PERMISSIONS as c } from "../../../constants/permissions.js";
8
8
  import { HEALTH_I18N as ee, PLATFORM_I18N as te, STATUS_I18N as ne, translateLabel as l } from "../i18n.js";
9
9
  import { useCallback as u, useEffect as d, useMemo as re, useRef as ie, useState as f } from "react";
10
10
  import { useI18n as ae } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
11
- import { Activity as p, AlertCircle as m, AlertTriangle as h, Cable as g, CheckCircle2 as _, Eye as oe, HelpCircle as v, LayoutDashboard as se, Loader2 as y, MessageSquare as b, Plus as x, Power as ce, PowerOff as S, Radio as C, RefreshCw as w, Search as le, ShieldCheck as ue, Trash2 as de, XCircle as T } from "lucide-react";
12
- import { useNavigate as fe } from "react-router-dom";
13
- import { jsx as E, jsxs as D } from "react/jsx-runtime";
11
+ import { Activity as oe, AlertCircle as p, AlertTriangle as m, Cable as h, CheckCircle2 as g, Eye as se, HelpCircle as _, LayoutDashboard as ce, Loader2 as v, MessageSquare as le, Plus as y, Power as ue, PowerOff as b, Radio as x, RefreshCw as S, Search as de, ShieldCheck as fe, Trash2 as pe, XCircle as C } from "lucide-react";
12
+ import { useNavigate as me } from "react-router-dom";
13
+ import { usePermissions as he } from "@burdenoff/fe-libs/shared/providers/shell";
14
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
14
15
  //#region src/channel/modules/channels/pages/ChannelDashboardPage.tsx
15
- var O = {
16
+ var E = {
16
17
  EMAIL: {
17
18
  label: "Email",
18
19
  color: "bg-accent-blue-subtle text-accent-blue"
@@ -53,60 +54,60 @@ var O = {
53
54
  label: "Webchat",
54
55
  color: "bg-accent-teal-subtle text-accent-teal"
55
56
  }
56
- }, k = {
57
+ }, D = {
57
58
  ACTIVE: {
58
59
  label: "Active",
59
60
  dotColor: "bg-status-success-bg",
60
61
  textColor: "text-status-success-text",
61
- icon: _
62
+ icon: g
62
63
  },
63
64
  INACTIVE: {
64
65
  label: "Inactive",
65
66
  dotColor: "bg-text-tertiary",
66
67
  textColor: "text-muted-foreground",
67
- icon: S
68
+ icon: b
68
69
  },
69
70
  ERROR: {
70
71
  label: "Error",
71
72
  dotColor: "bg-status-error-bg-subtle",
72
73
  textColor: "text-status-error-text",
73
- icon: T
74
+ icon: C
74
75
  },
75
76
  SUSPENDED: {
76
77
  label: "Suspended",
77
78
  dotColor: "bg-status-warning-bg",
78
79
  textColor: "text-status-warning-text",
79
- icon: h
80
+ icon: m
80
81
  },
81
82
  ARCHIVED: {
82
83
  label: "Archived",
83
84
  dotColor: "bg-text-tertiary",
84
85
  textColor: "text-muted-foreground",
85
- icon: S
86
+ icon: b
86
87
  }
87
- }, A = {
88
+ }, O = {
88
89
  HEALTHY: {
89
90
  label: "Healthy",
90
91
  color: "text-status-success-text",
91
- icon: _
92
+ icon: g
92
93
  },
93
94
  DEGRADED: {
94
95
  label: "Degraded",
95
96
  color: "text-status-warning-text",
96
- icon: h
97
+ icon: m
97
98
  },
98
99
  UNHEALTHY: {
99
100
  label: "Unhealthy",
100
101
  color: "text-status-error-text",
101
- icon: T
102
+ icon: C
102
103
  },
103
104
  UNKNOWN: {
104
105
  label: "Unknown",
105
106
  color: "text-muted-foreground",
106
- icon: v
107
+ icon: _
107
108
  }
108
109
  };
109
- function pe(e) {
110
+ function ge(e) {
110
111
  let t = Date.now() - new Date(e).getTime();
111
112
  if (Number.isNaN(t) || t < 0) return "just now";
112
113
  let n = Math.floor(t / 1e3);
@@ -118,46 +119,46 @@ function pe(e) {
118
119
  let a = Math.floor(i / 24);
119
120
  return a < 7 ? `${a}d ago` : a < 30 ? `${Math.floor(a / 7)}w ago` : `${Math.floor(a / 30)}mo ago`;
120
121
  }
121
- function j({ icon: e, iconClass: t, value: n, label: r, sub: i }) {
122
- return /* @__PURE__ */ D("div", {
122
+ function k({ icon: e, iconClass: t, value: n, label: r, sub: i }) {
123
+ return /* @__PURE__ */ T("div", {
123
124
  className: "p-4 bg-surface border border-border rounded-lg",
124
- children: [/* @__PURE__ */ D("div", {
125
+ children: [/* @__PURE__ */ T("div", {
125
126
  className: "flex items-center gap-3",
126
- children: [/* @__PURE__ */ E("div", {
127
+ children: [/* @__PURE__ */ w("div", {
127
128
  className: "p-2 rounded-lg hover:bg-action-primary-bg/10",
128
- children: /* @__PURE__ */ E(e, {
129
+ children: /* @__PURE__ */ w(e, {
129
130
  size: 18,
130
131
  className: t
131
132
  })
132
- }), /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
133
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
133
134
  className: "text-2xl font-bold text-foreground leading-tight",
134
135
  children: n
135
- }), /* @__PURE__ */ E("p", {
136
+ }), /* @__PURE__ */ w("p", {
136
137
  className: "text-xs text-muted-foreground",
137
138
  children: r
138
139
  })] })]
139
- }), i && /* @__PURE__ */ E("p", {
140
+ }), i && /* @__PURE__ */ w("p", {
140
141
  className: "text-[11px] text-muted-foreground mt-2 pl-11",
141
142
  children: i
142
143
  })]
143
144
  });
144
145
  }
145
- function M() {
146
- let h = fe(), { t: _ } = ae(), v = (e, t) => {
147
- let n = _(e);
146
+ function A() {
147
+ let m = me(), { hasPermission: g } = he(), _ = g(c.CHANNEL_CREATE), { t: C } = ae(), A = (e, t) => {
148
+ let n = C(e);
148
149
  return n === e ? t : n;
149
- }, [T, M] = f(null), [me, N] = f(null), [P, F] = f(0), I = (e) => ({
150
- ...O[e] ?? {
150
+ }, [j, M] = f(null), [_e, N] = f(null), [P, F] = f(0), I = (e) => ({
151
+ ...E[e] ?? {
151
152
  label: e,
152
153
  color: "bg-bg-sunken text-text-tertiary"
153
154
  },
154
- label: l(e, te, v)
155
+ label: l(e, te, A)
155
156
  }), L = (e) => ({
156
- ...k[e] ?? k.INACTIVE,
157
- label: l(e, ne, v)
157
+ ...D[e] ?? D.INACTIVE,
158
+ label: l(e, ne, A)
158
159
  }), R = (e) => ({
159
- ...A[e] ?? A.UNKNOWN,
160
- label: l(e, ee, v)
160
+ ...O[e] ?? O.UNKNOWN,
161
+ label: l(e, ee, A)
161
162
  }), { 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);
162
163
  d(() => {
163
164
  Z.current = Y;
@@ -206,7 +207,7 @@ function M() {
206
207
  errored: i,
207
208
  unhealthy: a
208
209
  };
209
- }, [z]), he = u(async (e) => {
210
+ }, [z]), ve = u(async (e) => {
210
211
  t("medium"), N(e);
211
212
  try {
212
213
  await G(e), n("success"), M(null);
@@ -215,14 +216,14 @@ function M() {
215
216
  } finally {
216
217
  N(null);
217
218
  }
218
- }, [G]), ge = u(async (e) => {
219
+ }, [G]), ye = u(async (e) => {
219
220
  N(e.id);
220
221
  try {
221
222
  e.status === "ACTIVE" ? await q(e.id) : await K(e.id);
222
223
  } finally {
223
224
  N(null);
224
225
  }
225
- }, [K, q]), _e = u(async (e) => {
226
+ }, [K, q]), be = u(async (e) => {
226
227
  N(e);
227
228
  try {
228
229
  await J(e);
@@ -230,363 +231,380 @@ function M() {
230
231
  N(null);
231
232
  }
232
233
  }, [J]);
233
- return /* @__PURE__ */ E(s, {
234
+ return /* @__PURE__ */ w(s, {
234
235
  permission: c.CHANNEL_READ,
235
- children: /* @__PURE__ */ D("div", {
236
+ children: /* @__PURE__ */ T("div", {
236
237
  className: "space-y-5 p-3 sm:p-6",
237
238
  children: [
238
- /* @__PURE__ */ D("div", {
239
+ /* @__PURE__ */ T("div", {
239
240
  className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
240
- children: [/* @__PURE__ */ D("div", {
241
+ children: [/* @__PURE__ */ T("div", {
241
242
  className: "flex items-center gap-3",
242
- children: [/* @__PURE__ */ E("div", {
243
+ children: [/* @__PURE__ */ w("div", {
243
244
  className: "p-2 rounded-lg bg-accent-primary/10",
244
- children: /* @__PURE__ */ E(se, {
245
+ children: /* @__PURE__ */ w(ce, {
245
246
  size: 20,
246
247
  className: "text-accent-primary"
247
248
  })
248
- }), /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("h1", {
249
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
249
250
  className: "text-xl font-bold text-foreground",
250
- children: v("channel.channelDashboard", "Channel Dashboard")
251
- }), /* @__PURE__ */ E("p", {
251
+ children: A("channel.channelDashboard", "Channel Dashboard")
252
+ }), /* @__PURE__ */ w("p", {
252
253
  className: "text-sm text-muted-foreground",
253
- children: v("channel.dashboardSubtitle", "Manage and monitor your communication channels")
254
+ children: A("channel.dashboardSubtitle", "Manage and monitor your communication channels")
254
255
  })] })]
255
- }), /* @__PURE__ */ D("div", {
256
+ }), /* @__PURE__ */ T("div", {
256
257
  className: "flex items-center gap-2",
257
- children: [/* @__PURE__ */ D("button", {
258
+ children: [/* @__PURE__ */ T("button", {
259
+ type: "button",
258
260
  onClick: () => Y(),
259
261
  className: "inline-flex items-center gap-1.5 px-3 py-2 text-sm text-muted-foreground hover:text-foreground border border-border rounded-lg hover:hover:bg-action-primary-bg/10 transition-colors",
260
- children: [/* @__PURE__ */ E(w, { size: 14 }), v("channel.refresh", "Refresh")]
261
- }), /* @__PURE__ */ D("button", {
262
- onClick: () => h("/channels/create"),
262
+ children: [/* @__PURE__ */ w(S, { size: 14 }), A("channel.refresh", "Refresh")]
263
+ }), _ && /* @__PURE__ */ T("button", {
264
+ type: "button",
265
+ onClick: () => m("/channels/create"),
263
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",
264
- children: [/* @__PURE__ */ E(x, { size: 14 }), v("channel.createChannel", "Create Channel")]
267
+ "data-tour": "channels-dashboard-create-button",
268
+ children: [/* @__PURE__ */ w(y, { size: 14 }), A("channel.createChannel", "Create Channel")]
265
269
  })]
266
270
  })]
267
271
  }),
268
- /* @__PURE__ */ D("div", {
272
+ /* @__PURE__ */ T("div", {
273
+ "data-tour": "channels-dashboard-kpi-section",
269
274
  className: "grid gap-3 grid-cols-2 md:grid-cols-3 lg:grid-cols-4",
270
275
  children: [
271
- /* @__PURE__ */ E(j, {
272
- icon: C,
276
+ /* @__PURE__ */ w(k, {
277
+ icon: x,
273
278
  iconClass: "text-accent-primary",
274
279
  value: H,
275
- label: v("channel.totalChannels", "Total Channels"),
276
- sub: $.active > 0 ? `${$.active} ${v("channel.status.active", "Active").toLowerCase()}, ${H - $.active} ${v("channel.status.inactive", "Inactive").toLowerCase()}` : void 0
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
277
282
  }),
278
- /* @__PURE__ */ E(j, {
279
- icon: ue,
283
+ /* @__PURE__ */ w(k, {
284
+ icon: fe,
280
285
  iconClass: "text-status-success-text",
281
286
  value: $.healthy,
282
- label: v("channel.healthy", "Healthy"),
283
- sub: $.unhealthy > 0 ? `${$.unhealthy} ${v("channel.health.unhealthy", "Unhealthy").toLowerCase()}` : H > 0 ? v("channel.allSystemsNominal", "All systems nominal") : void 0
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
284
289
  }),
285
- /* @__PURE__ */ E(j, {
286
- icon: g,
290
+ /* @__PURE__ */ w(k, {
291
+ icon: h,
287
292
  iconClass: "text-accent-blue",
288
293
  value: $.connected,
289
- label: v("channel.connected", "Connected"),
290
- sub: H > 0 ? `${H - $.connected} ${v("channel.disconnected", "Disconnected").toLowerCase()}` : void 0
294
+ label: A("channel.connected", "Connected"),
295
+ sub: H > 0 ? `${H - $.connected} ${A("channel.disconnected", "Disconnected").toLowerCase()}` : void 0
291
296
  }),
292
- /* @__PURE__ */ E(j, {
293
- icon: b,
297
+ /* @__PURE__ */ w(k, {
298
+ icon: le,
294
299
  iconClass: "text-accent-violet",
295
300
  value: $.messages24h.toLocaleString(),
296
- label: v("channel.messages24h", "Messages (24h)")
301
+ label: A("channel.messages24h", "Messages (24h)")
297
302
  })
298
303
  ]
299
304
  }),
300
- $.errored > 0 && /* @__PURE__ */ D("div", {
305
+ $.errored > 0 && /* @__PURE__ */ T("div", {
301
306
  className: "flex items-center gap-3 p-3 border border-status-error-border/30 bg-status-error-bg-subtle rounded-lg",
302
307
  children: [
303
- /* @__PURE__ */ E(m, {
308
+ /* @__PURE__ */ w(p, {
304
309
  size: 16,
305
310
  className: "text-status-error-text shrink-0"
306
311
  }),
307
- /* @__PURE__ */ D("p", {
312
+ /* @__PURE__ */ T("p", {
308
313
  className: "text-sm text-status-error-text",
309
314
  children: [
310
- /* @__PURE__ */ E("span", {
315
+ /* @__PURE__ */ w("span", {
311
316
  className: "font-semibold",
312
317
  children: $.errored
313
318
  }),
314
319
  " ",
315
- v($.errored === 1 ? "channel.errorStateSummarySingle" : "channel.errorStateSummaryMultiple", $.errored === 1 ? "channel in error state" : "channels in error state")
320
+ A($.errored === 1 ? "channel.errorStateSummarySingle" : "channel.errorStateSummaryMultiple", $.errored === 1 ? "channel in error state" : "channels in error state")
316
321
  ]
317
322
  }),
318
- /* @__PURE__ */ E("button", {
323
+ /* @__PURE__ */ w("button", {
324
+ type: "button",
319
325
  onClick: () => W({ status: "ERROR" }),
320
326
  className: "ml-auto text-xs font-medium text-status-error-text hover:text-status-error-text/80 transition-colors",
321
- children: v("channel.showErrors", "Show errors")
327
+ children: A("channel.showErrors", "Show errors")
322
328
  })
323
329
  ]
324
330
  }),
325
- /* @__PURE__ */ D("div", {
331
+ /* @__PURE__ */ T("div", {
326
332
  className: "flex flex-col gap-3 sm:flex-row sm:items-center",
333
+ "data-tour": "channels-dashboard-search-filters",
327
334
  children: [
328
- /* @__PURE__ */ D("div", {
335
+ /* @__PURE__ */ T("div", {
329
336
  className: "relative flex-1",
330
- children: [/* @__PURE__ */ E(le, {
337
+ children: [/* @__PURE__ */ w(de, {
331
338
  size: 14,
332
339
  className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"
333
- }), /* @__PURE__ */ E("input", {
340
+ }), /* @__PURE__ */ w("input", {
334
341
  type: "text",
335
- placeholder: v("channel.searchChannels", "Search channels..."),
342
+ "aria-label": A("channel.searchChannels", "Search channels..."),
343
+ placeholder: A("channel.searchChannels", "Search channels..."),
336
344
  value: U.search || "",
337
345
  onChange: (e) => W({ search: e.target.value }),
338
346
  className: "w-full pl-9 pr-4 py-2 text-sm bg-surface border border-border rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500/50 placeholder:text-muted-foreground"
339
347
  })]
340
348
  }),
341
- /* @__PURE__ */ D("select", {
349
+ /* @__PURE__ */ T("select", {
342
350
  value: U.platform || "",
343
351
  onChange: (e) => W({ platform: e.target.value || void 0 }),
344
352
  className: "px-3 py-2 text-sm bg-surface border border-border rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500/50 text-foreground",
345
- children: [/* @__PURE__ */ E("option", {
353
+ children: [/* @__PURE__ */ w("option", {
346
354
  value: "",
347
- children: v("channel.allPlatforms", "All Platforms")
348
- }), Object.entries(O).map(([e, t]) => /* @__PURE__ */ E("option", {
355
+ children: A("channel.allPlatforms", "All Platforms")
356
+ }), Object.entries(E).map(([e, t]) => /* @__PURE__ */ w("option", {
349
357
  value: e,
350
358
  children: t.label
351
359
  }, e))]
352
360
  }),
353
- /* @__PURE__ */ D("select", {
361
+ /* @__PURE__ */ T("select", {
354
362
  value: U.status || "",
355
363
  onChange: (e) => W({ status: e.target.value || void 0 }),
356
364
  className: "px-3 py-2 text-sm bg-surface border border-border rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500/50 text-foreground",
357
- children: [/* @__PURE__ */ E("option", {
365
+ children: [/* @__PURE__ */ w("option", {
358
366
  value: "",
359
- children: v("channel.allStatus", "All Status")
360
- }), Object.entries(k).map(([e, t]) => /* @__PURE__ */ E("option", {
367
+ children: A("channel.allStatus", "All Status")
368
+ }), Object.entries(D).map(([e, t]) => /* @__PURE__ */ w("option", {
361
369
  value: e,
362
370
  children: t.label
363
371
  }, e))]
364
372
  })
365
373
  ]
366
374
  }),
367
- V && /* @__PURE__ */ D("div", {
375
+ V && /* @__PURE__ */ T("div", {
368
376
  className: "flex items-center gap-3 p-4 bg-status-error-bg-subtle border border-status-error-border/30 rounded-lg",
369
377
  children: [
370
- /* @__PURE__ */ E(m, {
378
+ /* @__PURE__ */ w(p, {
371
379
  size: 18,
372
380
  className: "text-status-error-text shrink-0"
373
381
  }),
374
- /* @__PURE__ */ D("div", {
382
+ /* @__PURE__ */ T("div", {
375
383
  className: "flex-1 min-w-0",
376
- children: [/* @__PURE__ */ E("p", {
384
+ children: [/* @__PURE__ */ w("p", {
377
385
  className: "text-sm font-medium text-status-error-text",
378
- children: v("channel.loadFailed", "Failed to load channels")
379
- }), /* @__PURE__ */ E("p", {
386
+ children: A("channel.loadFailed", "Failed to load channels")
387
+ }), /* @__PURE__ */ w("p", {
380
388
  className: "text-xs text-status-error-text/70 truncate",
381
389
  children: V
382
390
  })]
383
391
  }),
384
- /* @__PURE__ */ E("button", {
392
+ /* @__PURE__ */ w("button", {
393
+ type: "button",
385
394
  onClick: () => Y(),
386
395
  className: "shrink-0 px-3 py-1 text-sm text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
387
- children: v("channel.retry", "Retry")
396
+ children: A("channel.retry", "Retry")
388
397
  })
389
398
  ]
390
399
  }),
391
- B && z.length === 0 && /* @__PURE__ */ E("div", {
400
+ B && z.length === 0 && /* @__PURE__ */ w("div", {
392
401
  className: "flex items-center justify-center py-16",
393
- children: /* @__PURE__ */ E(y, {
402
+ children: /* @__PURE__ */ w(v, {
394
403
  size: 28,
395
404
  className: "animate-spin text-accent-primary"
396
405
  })
397
406
  }),
398
- !B && !V && z.length === 0 && /* @__PURE__ */ D("div", {
407
+ !B && !V && z.length === 0 && /* @__PURE__ */ T("div", {
399
408
  className: "flex flex-col items-center justify-center py-16 text-center",
400
409
  children: [
401
- /* @__PURE__ */ E("div", {
410
+ /* @__PURE__ */ w("div", {
402
411
  className: "p-3 rounded-full bg-accent-primary/10 mb-4",
403
- children: /* @__PURE__ */ E(C, {
412
+ children: /* @__PURE__ */ w(x, {
404
413
  size: 36,
405
414
  className: "text-accent-primary"
406
415
  })
407
416
  }),
408
- /* @__PURE__ */ E("h3", {
417
+ /* @__PURE__ */ w("h3", {
409
418
  className: "text-lg font-semibold text-foreground mb-1",
410
- children: U.search || U.platform || U.status ? v("channel.noChannelsMatchFilter", "No channels match your filters") : v("channel.noChannels", "No channels yet")
419
+ children: U.search || U.platform || U.status ? A("channel.noChannelsMatchFilter", "No channels match your filters") : A("channel.noChannels", "No channels yet")
411
420
  }),
412
- /* @__PURE__ */ E("p", {
421
+ /* @__PURE__ */ w("p", {
413
422
  className: "text-sm text-muted-foreground max-w-sm mb-5",
414
- children: U.search || U.platform || U.status ? v("channel.adjustFilters", "Try adjusting your search or filters.") : v("channel.createFirstChannel", "Create your first communication channel to start sending messages across Email, SMS, Push, Slack and more.")
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.")
415
424
  }),
416
- !(U.search || U.platform || U.status) && /* @__PURE__ */ D("button", {
417
- onClick: () => h("/channels/create"),
425
+ _ && !(U.search || U.platform || U.status) && /* @__PURE__ */ T("button", {
426
+ type: "button",
427
+ onClick: () => m("/channels/create"),
418
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",
419
- children: [/* @__PURE__ */ E(x, { size: 14 }), v("channel.createChannel", "Create Channel")]
429
+ children: [/* @__PURE__ */ w(y, { size: 14 }), A("channel.createChannel", "Create Channel")]
420
430
  })
421
431
  ]
422
432
  }),
423
- z.length > 0 && /* @__PURE__ */ D("div", {
433
+ z.length > 0 && /* @__PURE__ */ T("div", {
424
434
  className: "border border-border rounded-lg overflow-hidden",
425
- children: [/* @__PURE__ */ E("div", {
435
+ "data-tour": "channels-dashboard-table",
436
+ children: [/* @__PURE__ */ w("div", {
426
437
  className: "overflow-x-auto min-w-full",
427
- children: /* @__PURE__ */ D("table", {
438
+ children: /* @__PURE__ */ T("table", {
428
439
  className: "w-full text-sm min-w-[800px]",
429
- children: [/* @__PURE__ */ E("thead", { children: /* @__PURE__ */ D("tr", {
440
+ children: [/* @__PURE__ */ w("thead", { children: /* @__PURE__ */ T("tr", {
430
441
  className: "hover:bg-action-primary-bg/10/50 border-b border-border",
431
442
  children: [
432
- /* @__PURE__ */ E("th", {
443
+ /* @__PURE__ */ w("th", {
433
444
  className: "text-left px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
434
- children: v("channel.channel", "Channel")
445
+ children: A("channel.channel", "Channel")
435
446
  }),
436
- /* @__PURE__ */ E("th", {
447
+ /* @__PURE__ */ w("th", {
437
448
  className: "text-left px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
438
- children: v("channel.platform", "Platform")
449
+ children: A("channel.platform", "Platform")
439
450
  }),
440
- /* @__PURE__ */ E("th", {
451
+ /* @__PURE__ */ w("th", {
441
452
  className: "text-left px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
442
- children: v("channel.status", "Status")
453
+ children: A("channel.status", "Status")
443
454
  }),
444
- /* @__PURE__ */ E("th", {
455
+ /* @__PURE__ */ w("th", {
445
456
  className: "text-left px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
446
- children: v("channel.health", "Health")
457
+ children: A("channel.health", "Health")
447
458
  }),
448
- /* @__PURE__ */ E("th", {
459
+ /* @__PURE__ */ w("th", {
449
460
  className: "text-left px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
450
- children: v("channel.connection", "Connection")
461
+ children: A("channel.connection", "Connection")
451
462
  }),
452
- /* @__PURE__ */ E("th", {
463
+ /* @__PURE__ */ w("th", {
453
464
  className: "text-right px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
454
- children: v("channel.msgs24h", "Msgs 24h")
465
+ children: A("channel.msgs24h", "Msgs 24h")
455
466
  }),
456
- /* @__PURE__ */ E("th", {
467
+ /* @__PURE__ */ w("th", {
457
468
  className: "text-right px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
458
- children: v("channel.updated", "Updated")
469
+ children: A("channel.updated", "Updated")
459
470
  }),
460
- /* @__PURE__ */ E("th", {
471
+ /* @__PURE__ */ w("th", {
461
472
  className: "text-right px-4 py-3 text-xs font-medium text-muted-foreground uppercase tracking-wider",
462
- children: v("channel.actions", "Actions")
473
+ children: A("channel.actions", "Actions")
463
474
  })
464
475
  ]
465
- }) }), /* @__PURE__ */ E("tbody", {
476
+ }) }), /* @__PURE__ */ w("tbody", {
466
477
  className: "divide-y divide-border",
467
478
  children: z.map((e) => {
468
- let t = me === e.id;
469
- return /* @__PURE__ */ D("tr", {
479
+ let t = _e === e.id;
480
+ return /* @__PURE__ */ T("tr", {
470
481
  className: "bg-surface hover:hover:bg-action-primary-bg/10/60 transition-colors group",
471
482
  children: [
472
- /* @__PURE__ */ E("td", {
483
+ /* @__PURE__ */ w("td", {
473
484
  className: "px-4 py-3",
474
- children: /* @__PURE__ */ D("button", {
475
- onClick: () => h(`/channels/${e.id}`),
485
+ children: /* @__PURE__ */ T("button", {
486
+ type: "button",
487
+ onClick: () => m(`/channels/${e.id}`),
476
488
  className: "text-left group/name",
477
- children: [/* @__PURE__ */ E("p", {
489
+ children: [/* @__PURE__ */ w("p", {
478
490
  className: "font-medium text-foreground group-hover/name:text-accent-primary transition-colors truncate max-w-[200px]",
479
491
  children: e.name
480
- }), e.description && /* @__PURE__ */ E("p", {
492
+ }), e.description && /* @__PURE__ */ w("p", {
481
493
  className: "text-xs text-muted-foreground truncate max-w-[200px]",
482
494
  children: e.description
483
495
  })]
484
496
  })
485
497
  }),
486
- /* @__PURE__ */ D("td", {
498
+ /* @__PURE__ */ T("td", {
487
499
  className: "px-4 py-3",
488
- children: [/* @__PURE__ */ E("span", {
500
+ children: [/* @__PURE__ */ w("span", {
489
501
  className: `inline-flex items-center px-2 py-0.5 text-[11px] font-semibold rounded-full ${I(e.platform).color}`,
490
502
  children: I(e.platform).label
491
- }), e.adapterType && /* @__PURE__ */ E("p", {
503
+ }), e.adapterType && /* @__PURE__ */ w("p", {
492
504
  className: "text-[10px] text-muted-foreground mt-0.5 font-mono",
493
505
  children: e.adapterType.replace(/_/g, " ")
494
506
  })]
495
507
  }),
496
- /* @__PURE__ */ E("td", {
508
+ /* @__PURE__ */ w("td", {
497
509
  className: "px-4 py-3",
498
- children: /* @__PURE__ */ D("span", {
510
+ children: /* @__PURE__ */ T("span", {
499
511
  className: "inline-flex items-center gap-1.5",
500
- children: [/* @__PURE__ */ E("span", { className: `w-1.5 h-1.5 rounded-full ${L(e.status).dotColor}` }), /* @__PURE__ */ E("span", {
512
+ children: [/* @__PURE__ */ w("span", { className: `w-1.5 h-1.5 rounded-full ${L(e.status).dotColor}` }), /* @__PURE__ */ w("span", {
501
513
  className: `text-xs ${L(e.status).textColor}`,
502
514
  children: L(e.status).label
503
515
  })]
504
516
  })
505
517
  }),
506
- /* @__PURE__ */ E("td", {
518
+ /* @__PURE__ */ w("td", {
507
519
  className: "px-4 py-3",
508
- children: /* @__PURE__ */ D("span", {
520
+ children: /* @__PURE__ */ T("span", {
509
521
  className: `inline-flex items-center gap-1 text-xs ${R(e.connectionHealth).color}`,
510
522
  children: [(() => {
511
523
  let t = R(e.connectionHealth).icon;
512
- return /* @__PURE__ */ E(t, { size: 12 });
524
+ return /* @__PURE__ */ w(t, { size: 12 });
513
525
  })(), R(e.connectionHealth).label]
514
526
  })
515
527
  }),
516
- /* @__PURE__ */ E("td", {
528
+ /* @__PURE__ */ w("td", {
517
529
  className: "px-4 py-3",
518
- children: /* @__PURE__ */ E("span", {
530
+ children: /* @__PURE__ */ w("span", {
519
531
  className: `text-xs ${e.isConnected ? "text-status-success-text" : "text-muted-foreground"}`,
520
- children: e.isConnected ? v("channel.connected", "Connected") : v("channel.disconnected", "Disconnected")
532
+ children: e.isConnected ? A("channel.connected", "Connected") : A("channel.disconnected", "Disconnected")
521
533
  })
522
534
  }),
523
- /* @__PURE__ */ E("td", {
535
+ /* @__PURE__ */ w("td", {
524
536
  className: "px-4 py-3 text-right",
525
- children: /* @__PURE__ */ E("span", {
537
+ children: /* @__PURE__ */ w("span", {
526
538
  className: "text-xs text-foreground tabular-nums",
527
539
  children: (e.messageCount24h ?? 0).toLocaleString()
528
540
  })
529
541
  }),
530
- /* @__PURE__ */ E("td", {
542
+ /* @__PURE__ */ w("td", {
531
543
  className: "px-4 py-3 text-right",
532
- children: /* @__PURE__ */ E("span", {
544
+ children: /* @__PURE__ */ w("span", {
533
545
  className: "text-xs text-muted-foreground whitespace-nowrap",
534
- children: pe(e.updatedAt)
546
+ children: ge(e.updatedAt)
535
547
  })
536
548
  }),
537
- /* @__PURE__ */ E("td", {
549
+ /* @__PURE__ */ w("td", {
538
550
  className: "px-4 py-3",
539
- children: /* @__PURE__ */ D("div", {
551
+ children: /* @__PURE__ */ T("div", {
540
552
  className: "flex items-center justify-end gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",
541
553
  children: [
542
- /* @__PURE__ */ E("button", {
543
- onClick: () => h(`/channels/${e.id}`),
554
+ /* @__PURE__ */ w("button", {
555
+ type: "button",
556
+ onClick: () => m(`/channels/${e.id}`),
544
557
  className: "p-1.5 text-muted-foreground hover:text-accent-primary hover:bg-accent-primary/10 rounded transition-colors",
545
- title: v("channel.view", "View"),
546
- children: /* @__PURE__ */ E(oe, { size: 14 })
558
+ title: A("channel.view", "View"),
559
+ children: /* @__PURE__ */ w(se, { size: 14 })
547
560
  }),
548
- /* @__PURE__ */ E(s, {
561
+ /* @__PURE__ */ w(s, {
549
562
  permission: c.CHANNEL_EXECUTE,
550
- children: /* @__PURE__ */ E("button", {
551
- onClick: () => _e(e.id),
563
+ children: /* @__PURE__ */ w("button", {
564
+ type: "button",
565
+ onClick: () => be(e.id),
552
566
  disabled: t,
553
567
  className: "p-1.5 text-muted-foreground hover:text-accent-blue hover:bg-accent-blue-subtle rounded transition-colors disabled:opacity-40",
554
- title: v("channel.healthCheck", "Health Check"),
555
- children: t ? /* @__PURE__ */ E(y, {
568
+ title: A("channel.healthCheck", "Health Check"),
569
+ children: t ? /* @__PURE__ */ w(v, {
556
570
  size: 14,
557
571
  className: "animate-spin"
558
- }) : /* @__PURE__ */ E(w, { size: 14 })
572
+ }) : /* @__PURE__ */ w(S, { size: 14 })
559
573
  })
560
574
  }),
561
- /* @__PURE__ */ E(s, {
575
+ /* @__PURE__ */ w(s, {
562
576
  permission: c.CHANNEL_UPDATE,
563
- children: /* @__PURE__ */ E("button", {
564
- onClick: () => ge(e),
577
+ children: /* @__PURE__ */ w("button", {
578
+ type: "button",
579
+ onClick: () => ye(e),
565
580
  disabled: t,
566
581
  className: `p-1.5 rounded transition-colors disabled:opacity-40 ${e.status === "ACTIVE" ? "text-muted-foreground hover:text-status-warning-text hover:bg-status-warning-bg-subtle" : "text-muted-foreground hover:text-status-success-text hover:bg-status-success-bg-subtle"}`,
567
- title: e.status === "ACTIVE" ? v("channel.deactivate", "Deactivate") : v("channel.activate", "Activate"),
568
- children: e.status === "ACTIVE" ? /* @__PURE__ */ E(S, { size: 14 }) : /* @__PURE__ */ E(ce, { size: 14 })
582
+ title: e.status === "ACTIVE" ? A("channel.deactivate", "Deactivate") : A("channel.activate", "Activate"),
583
+ children: e.status === "ACTIVE" ? /* @__PURE__ */ w(b, { size: 14 }) : /* @__PURE__ */ w(ue, { size: 14 })
569
584
  })
570
585
  }),
571
- T === e.id ? /* @__PURE__ */ D("span", {
586
+ j === e.id ? /* @__PURE__ */ T("span", {
572
587
  className: "inline-flex items-center gap-1 ml-1",
573
- children: [/* @__PURE__ */ E("button", {
574
- onClick: () => he(e.id),
588
+ children: [/* @__PURE__ */ w("button", {
589
+ type: "button",
590
+ onClick: () => ve(e.id),
575
591
  disabled: t,
576
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",
577
- children: t ? "..." : v("channel.yes", "Yes")
578
- }), /* @__PURE__ */ E("button", {
593
+ children: t ? "..." : A("channel.yes", "Yes")
594
+ }), /* @__PURE__ */ w("button", {
595
+ type: "button",
579
596
  onClick: () => M(null),
580
597
  className: "px-1.5 py-0.5 text-[11px] text-muted-foreground hover:hover:bg-action-primary-bg/10 rounded transition-colors",
581
- children: v("channel.no", "No")
598
+ children: A("channel.no", "No")
582
599
  })]
583
- }) : /* @__PURE__ */ E(s, {
600
+ }) : /* @__PURE__ */ w(s, {
584
601
  permission: c.CHANNEL_DELETE,
585
- children: /* @__PURE__ */ E("button", {
602
+ children: /* @__PURE__ */ w("button", {
603
+ type: "button",
586
604
  onClick: () => M(e.id),
587
605
  className: "p-1.5 text-muted-foreground hover:text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
588
- title: v("channel.delete", "Delete"),
589
- children: /* @__PURE__ */ E(de, { size: 14 })
606
+ title: A("channel.delete", "Delete"),
607
+ children: /* @__PURE__ */ w(pe, { size: 14 })
590
608
  })
591
609
  })
592
610
  ]
@@ -597,14 +615,14 @@ function M() {
597
615
  })
598
616
  })]
599
617
  })
600
- }), /* @__PURE__ */ D("div", {
618
+ }), /* @__PURE__ */ T("div", {
601
619
  className: "px-4 py-2.5 border-t border-border flex items-center justify-between",
602
- children: [/* @__PURE__ */ D("p", {
620
+ children: [/* @__PURE__ */ T("p", {
603
621
  className: "text-xs text-muted-foreground",
604
622
  children: [
605
- v("channel.showing", "Showing"),
623
+ A("channel.showing", "Showing"),
606
624
  " ",
607
- /* @__PURE__ */ D("span", {
625
+ /* @__PURE__ */ T("span", {
608
626
  className: "font-medium text-foreground",
609
627
  children: [
610
628
  H === 0 ? 0 : P * 10 + 1,
@@ -613,25 +631,26 @@ function M() {
613
631
  ]
614
632
  }),
615
633
  " ",
616
- v("channel.of", "of"),
634
+ A("channel.of", "of"),
617
635
  " ",
618
- /* @__PURE__ */ E("span", {
636
+ /* @__PURE__ */ w("span", {
619
637
  className: "font-medium text-foreground",
620
638
  children: H
621
639
  }),
622
640
  " ",
623
- v("channel.channelsLower", "channels")
641
+ A("channel.channelsLower", "channels")
624
642
  ]
625
- }), /* @__PURE__ */ D("div", {
643
+ }), /* @__PURE__ */ T("div", {
626
644
  className: "flex items-center gap-2",
627
645
  children: [
628
- /* @__PURE__ */ E("button", {
646
+ /* @__PURE__ */ w("button", {
647
+ type: "button",
629
648
  onClick: () => F((e) => Math.max(0, e - 1)),
630
649
  disabled: P === 0,
631
650
  className: "px-2.5 py-1 text-xs border border-border rounded hover:bg-muted transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
632
- children: v("channel.previous", "Prev")
651
+ children: A("channel.previous", "Prev")
633
652
  }),
634
- /* @__PURE__ */ D("span", {
653
+ /* @__PURE__ */ T("span", {
635
654
  className: "text-xs text-muted-foreground",
636
655
  children: [
637
656
  P + 1,
@@ -639,67 +658,72 @@ function M() {
639
658
  X
640
659
  ]
641
660
  }),
642
- /* @__PURE__ */ E("button", {
661
+ /* @__PURE__ */ w("button", {
662
+ type: "button",
643
663
  onClick: () => F((e) => Math.min(X - 1, e + 1)),
644
664
  disabled: P >= X - 1,
645
665
  className: "px-2.5 py-1 text-xs border border-border rounded hover:bg-muted transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
646
- children: v("channel.next", "Next")
666
+ children: A("channel.next", "Next")
647
667
  })
648
668
  ]
649
669
  })]
650
670
  })]
651
671
  }),
652
- z.length > 0 && /* @__PURE__ */ D("div", {
672
+ z.length > 0 && /* @__PURE__ */ T("div", {
653
673
  className: "grid gap-3 sm:grid-cols-3",
674
+ "data-tour": "channels-dashboard-quick-links",
654
675
  children: [
655
- /* @__PURE__ */ D("button", {
656
- onClick: () => h("/channels/?tab=all"),
676
+ /* @__PURE__ */ T("button", {
677
+ type: "button",
678
+ onClick: () => m("/channels/?tab=all"),
657
679
  className: "flex items-center gap-3 p-3 bg-surface border border-border rounded-lg hover:hover:bg-action-primary-bg/10 transition-colors text-left",
658
- children: [/* @__PURE__ */ E(C, {
680
+ children: [/* @__PURE__ */ w(x, {
659
681
  size: 16,
660
682
  className: "text-accent-primary shrink-0"
661
- }), /* @__PURE__ */ D("div", {
683
+ }), /* @__PURE__ */ T("div", {
662
684
  className: "min-w-0",
663
- children: [/* @__PURE__ */ E("p", {
685
+ children: [/* @__PURE__ */ w("p", {
664
686
  className: "text-sm font-medium text-foreground",
665
- children: v("channel.allChannels", "All Channels")
666
- }), /* @__PURE__ */ E("p", {
687
+ children: A("channel.allChannels", "All Channels")
688
+ }), /* @__PURE__ */ w("p", {
667
689
  className: "text-xs text-muted-foreground truncate",
668
- children: v("channel.browseChannels", "Browse and manage channel cards")
690
+ children: A("channel.browseChannels", "Browse and manage channel cards")
669
691
  })]
670
692
  })]
671
693
  }),
672
- /* @__PURE__ */ D("button", {
673
- onClick: () => h("/channels/?tab=connections"),
694
+ /* @__PURE__ */ T("button", {
695
+ type: "button",
696
+ onClick: () => m("/channels/?tab=connections"),
674
697
  className: "flex items-center gap-3 p-3 bg-surface border border-border rounded-lg hover:hover:bg-action-primary-bg/10 transition-colors text-left",
675
- children: [/* @__PURE__ */ E(g, {
698
+ children: [/* @__PURE__ */ w(h, {
676
699
  size: 16,
677
700
  className: "text-accent-blue shrink-0"
678
- }), /* @__PURE__ */ D("div", {
701
+ }), /* @__PURE__ */ T("div", {
679
702
  className: "min-w-0",
680
- children: [/* @__PURE__ */ E("p", {
703
+ children: [/* @__PURE__ */ w("p", {
681
704
  className: "text-sm font-medium text-foreground",
682
- children: v("channel.connections", "Connections")
683
- }), /* @__PURE__ */ E("p", {
705
+ children: A("channel.connections", "Connections")
706
+ }), /* @__PURE__ */ w("p", {
684
707
  className: "text-xs text-muted-foreground truncate",
685
- children: v("channel.connectionsSubtitle", "OAuth, API keys & credentials")
708
+ children: A("channel.connectionsSubtitle", "OAuth, API keys & credentials")
686
709
  })]
687
710
  })]
688
711
  }),
689
- /* @__PURE__ */ D("button", {
690
- onClick: () => h("/channels/?tab=send"),
712
+ /* @__PURE__ */ T("button", {
713
+ type: "button",
714
+ onClick: () => m("/channels/?tab=send"),
691
715
  className: "flex items-center gap-3 p-3 bg-surface border border-border rounded-lg hover:hover:bg-action-primary-bg/10 transition-colors text-left",
692
- children: [/* @__PURE__ */ E(p, {
716
+ children: [/* @__PURE__ */ w(oe, {
693
717
  size: 16,
694
718
  className: "text-accent-violet shrink-0"
695
- }), /* @__PURE__ */ D("div", {
719
+ }), /* @__PURE__ */ T("div", {
696
720
  className: "min-w-0",
697
- children: [/* @__PURE__ */ E("p", {
721
+ children: [/* @__PURE__ */ w("p", {
698
722
  className: "text-sm font-medium text-foreground",
699
- children: v("channel.sendMessage", "Send Message")
700
- }), /* @__PURE__ */ E("p", {
723
+ children: A("channel.sendMessage", "Send Message")
724
+ }), /* @__PURE__ */ w("p", {
701
725
  className: "text-xs text-muted-foreground truncate",
702
- children: v("channel.sendMessageSubtitle", "Send a test or one-off notification")
726
+ children: A("channel.sendMessageSubtitle", "Send a test or one-off notification")
703
727
  })]
704
728
  })]
705
729
  })
@@ -710,6 +734,6 @@ function M() {
710
734
  });
711
735
  }
712
736
  //#endregion
713
- export { M as ChannelDashboardPage };
737
+ export { A as ChannelDashboardPage };
714
738
 
715
739
  //# sourceMappingURL=ChannelDashboardPage.js.map