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