@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.
- package/dist/channel/ChannelRoutes.js +5 -6
- package/dist/channel/ChannelRoutes.js.map +1 -1
- package/dist/channel/components/AdapterCredentialsForm.js +14 -2
- package/dist/channel/components/AdapterCredentialsForm.js.map +1 -1
- package/dist/channel/components/FeatureNotEnabled.js +1 -1
- package/dist/channel/components/FeatureNotEnabled.js.map +1 -1
- package/dist/channel/components/PermissionGuard.js +1 -1
- package/dist/channel/components/PermissionGuard.js.map +1 -1
- package/dist/channel/config/adapterCredentials.js +19 -11
- package/dist/channel/config/adapterCredentials.js.map +1 -1
- package/dist/channel/constants/permissions.js +3 -0
- package/dist/channel/constants/permissions.js.map +1 -1
- package/dist/channel/hooks/useChannelSubscription.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js +244 -220
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +416 -390
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +30 -15
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js +8 -2
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelsListPage.js +241 -213
- package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +107 -98
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js +160 -140
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/CreateChannelPage.js +47 -50
- package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js +16 -5
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +11 -4
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/EditChannelPage.js +17 -8
- package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/EditConnectionPage.js +11 -6
- package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/SendMessagePage.js +21 -9
- package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -1
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js +8 -1
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
- package/dist/channel/pages/ChannelLandingPage.js +50 -35
- package/dist/channel/pages/ChannelLandingPage.js.map +1 -1
- package/dist/channel/providers/ChannelProvider.js +1 -1
- package/dist/channel/providers/ChannelProvider.js.map +1 -1
- package/package.json +2 -2
- 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
|
|
12
|
-
import { useNavigate as
|
|
13
|
-
import {
|
|
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
|
|
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
|
-
},
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
86
|
+
icon: b
|
|
86
87
|
}
|
|
87
|
-
},
|
|
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:
|
|
97
|
+
icon: m
|
|
97
98
|
},
|
|
98
99
|
UNHEALTHY: {
|
|
99
100
|
label: "Unhealthy",
|
|
100
101
|
color: "text-status-error-text",
|
|
101
|
-
icon:
|
|
102
|
+
icon: C
|
|
102
103
|
},
|
|
103
104
|
UNKNOWN: {
|
|
104
105
|
label: "Unknown",
|
|
105
106
|
color: "text-muted-foreground",
|
|
106
|
-
icon:
|
|
107
|
+
icon: _
|
|
107
108
|
}
|
|
108
109
|
};
|
|
109
|
-
function
|
|
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
|
|
122
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
125
|
+
children: [/* @__PURE__ */ T("div", {
|
|
125
126
|
className: "flex items-center gap-3",
|
|
126
|
-
children: [/* @__PURE__ */
|
|
127
|
+
children: [/* @__PURE__ */ w("div", {
|
|
127
128
|
className: "p-2 rounded-lg hover:bg-action-primary-bg/10",
|
|
128
|
-
children: /* @__PURE__ */
|
|
129
|
+
children: /* @__PURE__ */ w(e, {
|
|
129
130
|
size: 18,
|
|
130
131
|
className: t
|
|
131
132
|
})
|
|
132
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
136
|
+
}), /* @__PURE__ */ w("p", {
|
|
136
137
|
className: "text-xs text-muted-foreground",
|
|
137
138
|
children: r
|
|
138
139
|
})] })]
|
|
139
|
-
}), i && /* @__PURE__ */
|
|
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
|
|
146
|
-
let
|
|
147
|
-
let n =
|
|
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
|
-
}, [
|
|
150
|
-
...
|
|
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,
|
|
155
|
+
label: l(e, te, A)
|
|
155
156
|
}), L = (e) => ({
|
|
156
|
-
...
|
|
157
|
-
label: l(e, ne,
|
|
157
|
+
...D[e] ?? D.INACTIVE,
|
|
158
|
+
label: l(e, ne, A)
|
|
158
159
|
}), R = (e) => ({
|
|
159
|
-
...
|
|
160
|
-
label: l(e, ee,
|
|
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]),
|
|
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]),
|
|
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]),
|
|
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__ */
|
|
234
|
+
return /* @__PURE__ */ w(s, {
|
|
234
235
|
permission: c.CHANNEL_READ,
|
|
235
|
-
children: /* @__PURE__ */
|
|
236
|
+
children: /* @__PURE__ */ T("div", {
|
|
236
237
|
className: "space-y-5 p-3 sm:p-6",
|
|
237
238
|
children: [
|
|
238
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ T("div", {
|
|
239
240
|
className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
|
|
240
|
-
children: [/* @__PURE__ */
|
|
241
|
+
children: [/* @__PURE__ */ T("div", {
|
|
241
242
|
className: "flex items-center gap-3",
|
|
242
|
-
children: [/* @__PURE__ */
|
|
243
|
+
children: [/* @__PURE__ */ w("div", {
|
|
243
244
|
className: "p-2 rounded-lg bg-accent-primary/10",
|
|
244
|
-
children: /* @__PURE__ */
|
|
245
|
+
children: /* @__PURE__ */ w(ce, {
|
|
245
246
|
size: 20,
|
|
246
247
|
className: "text-accent-primary"
|
|
247
248
|
})
|
|
248
|
-
}), /* @__PURE__ */
|
|
249
|
+
}), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
|
|
249
250
|
className: "text-xl font-bold text-foreground",
|
|
250
|
-
children:
|
|
251
|
-
}), /* @__PURE__ */
|
|
251
|
+
children: A("channel.channelDashboard", "Channel Dashboard")
|
|
252
|
+
}), /* @__PURE__ */ w("p", {
|
|
252
253
|
className: "text-sm text-muted-foreground",
|
|
253
|
-
children:
|
|
254
|
+
children: A("channel.dashboardSubtitle", "Manage and monitor your communication channels")
|
|
254
255
|
})] })]
|
|
255
|
-
}), /* @__PURE__ */
|
|
256
|
+
}), /* @__PURE__ */ T("div", {
|
|
256
257
|
className: "flex items-center gap-2",
|
|
257
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
261
|
-
}), /* @__PURE__ */
|
|
262
|
-
|
|
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
|
-
|
|
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__ */
|
|
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__ */
|
|
272
|
-
icon:
|
|
276
|
+
/* @__PURE__ */ w(k, {
|
|
277
|
+
icon: x,
|
|
273
278
|
iconClass: "text-accent-primary",
|
|
274
279
|
value: H,
|
|
275
|
-
label:
|
|
276
|
-
sub: $.active > 0 ? `${$.active} ${
|
|
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__ */
|
|
279
|
-
icon:
|
|
283
|
+
/* @__PURE__ */ w(k, {
|
|
284
|
+
icon: fe,
|
|
280
285
|
iconClass: "text-status-success-text",
|
|
281
286
|
value: $.healthy,
|
|
282
|
-
label:
|
|
283
|
-
sub: $.unhealthy > 0 ? `${$.unhealthy} ${
|
|
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__ */
|
|
286
|
-
icon:
|
|
290
|
+
/* @__PURE__ */ w(k, {
|
|
291
|
+
icon: h,
|
|
287
292
|
iconClass: "text-accent-blue",
|
|
288
293
|
value: $.connected,
|
|
289
|
-
label:
|
|
290
|
-
sub: H > 0 ? `${H - $.connected} ${
|
|
294
|
+
label: A("channel.connected", "Connected"),
|
|
295
|
+
sub: H > 0 ? `${H - $.connected} ${A("channel.disconnected", "Disconnected").toLowerCase()}` : void 0
|
|
291
296
|
}),
|
|
292
|
-
/* @__PURE__ */
|
|
293
|
-
icon:
|
|
297
|
+
/* @__PURE__ */ w(k, {
|
|
298
|
+
icon: le,
|
|
294
299
|
iconClass: "text-accent-violet",
|
|
295
300
|
value: $.messages24h.toLocaleString(),
|
|
296
|
-
label:
|
|
301
|
+
label: A("channel.messages24h", "Messages (24h)")
|
|
297
302
|
})
|
|
298
303
|
]
|
|
299
304
|
}),
|
|
300
|
-
$.errored > 0 && /* @__PURE__ */
|
|
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__ */
|
|
308
|
+
/* @__PURE__ */ w(p, {
|
|
304
309
|
size: 16,
|
|
305
310
|
className: "text-status-error-text shrink-0"
|
|
306
311
|
}),
|
|
307
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ T("p", {
|
|
308
313
|
className: "text-sm text-status-error-text",
|
|
309
314
|
children: [
|
|
310
|
-
/* @__PURE__ */
|
|
315
|
+
/* @__PURE__ */ w("span", {
|
|
311
316
|
className: "font-semibold",
|
|
312
317
|
children: $.errored
|
|
313
318
|
}),
|
|
314
319
|
" ",
|
|
315
|
-
|
|
320
|
+
A($.errored === 1 ? "channel.errorStateSummarySingle" : "channel.errorStateSummaryMultiple", $.errored === 1 ? "channel in error state" : "channels in error state")
|
|
316
321
|
]
|
|
317
322
|
}),
|
|
318
|
-
/* @__PURE__ */
|
|
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:
|
|
327
|
+
children: A("channel.showErrors", "Show errors")
|
|
322
328
|
})
|
|
323
329
|
]
|
|
324
330
|
}),
|
|
325
|
-
/* @__PURE__ */
|
|
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__ */
|
|
335
|
+
/* @__PURE__ */ T("div", {
|
|
329
336
|
className: "relative flex-1",
|
|
330
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
340
|
+
}), /* @__PURE__ */ w("input", {
|
|
334
341
|
type: "text",
|
|
335
|
-
|
|
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__ */
|
|
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__ */
|
|
353
|
+
children: [/* @__PURE__ */ w("option", {
|
|
346
354
|
value: "",
|
|
347
|
-
children:
|
|
348
|
-
}), Object.entries(
|
|
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__ */
|
|
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__ */
|
|
365
|
+
children: [/* @__PURE__ */ w("option", {
|
|
358
366
|
value: "",
|
|
359
|
-
children:
|
|
360
|
-
}), Object.entries(
|
|
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__ */
|
|
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__ */
|
|
378
|
+
/* @__PURE__ */ w(p, {
|
|
371
379
|
size: 18,
|
|
372
380
|
className: "text-status-error-text shrink-0"
|
|
373
381
|
}),
|
|
374
|
-
/* @__PURE__ */
|
|
382
|
+
/* @__PURE__ */ T("div", {
|
|
375
383
|
className: "flex-1 min-w-0",
|
|
376
|
-
children: [/* @__PURE__ */
|
|
384
|
+
children: [/* @__PURE__ */ w("p", {
|
|
377
385
|
className: "text-sm font-medium text-status-error-text",
|
|
378
|
-
children:
|
|
379
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
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:
|
|
396
|
+
children: A("channel.retry", "Retry")
|
|
388
397
|
})
|
|
389
398
|
]
|
|
390
399
|
}),
|
|
391
|
-
B && z.length === 0 && /* @__PURE__ */
|
|
400
|
+
B && z.length === 0 && /* @__PURE__ */ w("div", {
|
|
392
401
|
className: "flex items-center justify-center py-16",
|
|
393
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
410
|
+
/* @__PURE__ */ w("div", {
|
|
402
411
|
className: "p-3 rounded-full bg-accent-primary/10 mb-4",
|
|
403
|
-
children: /* @__PURE__ */
|
|
412
|
+
children: /* @__PURE__ */ w(x, {
|
|
404
413
|
size: 36,
|
|
405
414
|
className: "text-accent-primary"
|
|
406
415
|
})
|
|
407
416
|
}),
|
|
408
|
-
/* @__PURE__ */
|
|
417
|
+
/* @__PURE__ */ w("h3", {
|
|
409
418
|
className: "text-lg font-semibold text-foreground mb-1",
|
|
410
|
-
children: U.search || U.platform || U.status ?
|
|
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__ */
|
|
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 ?
|
|
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__ */
|
|
417
|
-
|
|
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__ */
|
|
429
|
+
children: [/* @__PURE__ */ w(y, { size: 14 }), A("channel.createChannel", "Create Channel")]
|
|
420
430
|
})
|
|
421
431
|
]
|
|
422
432
|
}),
|
|
423
|
-
z.length > 0 && /* @__PURE__ */
|
|
433
|
+
z.length > 0 && /* @__PURE__ */ T("div", {
|
|
424
434
|
className: "border border-border rounded-lg overflow-hidden",
|
|
425
|
-
|
|
435
|
+
"data-tour": "channels-dashboard-table",
|
|
436
|
+
children: [/* @__PURE__ */ w("div", {
|
|
426
437
|
className: "overflow-x-auto min-w-full",
|
|
427
|
-
children: /* @__PURE__ */
|
|
438
|
+
children: /* @__PURE__ */ T("table", {
|
|
428
439
|
className: "w-full text-sm min-w-[800px]",
|
|
429
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
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:
|
|
445
|
+
children: A("channel.channel", "Channel")
|
|
435
446
|
}),
|
|
436
|
-
/* @__PURE__ */
|
|
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:
|
|
449
|
+
children: A("channel.platform", "Platform")
|
|
439
450
|
}),
|
|
440
|
-
/* @__PURE__ */
|
|
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:
|
|
453
|
+
children: A("channel.status", "Status")
|
|
443
454
|
}),
|
|
444
|
-
/* @__PURE__ */
|
|
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:
|
|
457
|
+
children: A("channel.health", "Health")
|
|
447
458
|
}),
|
|
448
|
-
/* @__PURE__ */
|
|
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:
|
|
461
|
+
children: A("channel.connection", "Connection")
|
|
451
462
|
}),
|
|
452
|
-
/* @__PURE__ */
|
|
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:
|
|
465
|
+
children: A("channel.msgs24h", "Msgs 24h")
|
|
455
466
|
}),
|
|
456
|
-
/* @__PURE__ */
|
|
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:
|
|
469
|
+
children: A("channel.updated", "Updated")
|
|
459
470
|
}),
|
|
460
|
-
/* @__PURE__ */
|
|
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:
|
|
473
|
+
children: A("channel.actions", "Actions")
|
|
463
474
|
})
|
|
464
475
|
]
|
|
465
|
-
}) }), /* @__PURE__ */
|
|
476
|
+
}) }), /* @__PURE__ */ w("tbody", {
|
|
466
477
|
className: "divide-y divide-border",
|
|
467
478
|
children: z.map((e) => {
|
|
468
|
-
let t =
|
|
469
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
483
|
+
/* @__PURE__ */ w("td", {
|
|
473
484
|
className: "px-4 py-3",
|
|
474
|
-
children: /* @__PURE__ */
|
|
475
|
-
|
|
485
|
+
children: /* @__PURE__ */ T("button", {
|
|
486
|
+
type: "button",
|
|
487
|
+
onClick: () => m(`/channels/${e.id}`),
|
|
476
488
|
className: "text-left group/name",
|
|
477
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
498
|
+
/* @__PURE__ */ T("td", {
|
|
487
499
|
className: "px-4 py-3",
|
|
488
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
508
|
+
/* @__PURE__ */ w("td", {
|
|
497
509
|
className: "px-4 py-3",
|
|
498
|
-
children: /* @__PURE__ */
|
|
510
|
+
children: /* @__PURE__ */ T("span", {
|
|
499
511
|
className: "inline-flex items-center gap-1.5",
|
|
500
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
518
|
+
/* @__PURE__ */ w("td", {
|
|
507
519
|
className: "px-4 py-3",
|
|
508
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
524
|
+
return /* @__PURE__ */ w(t, { size: 12 });
|
|
513
525
|
})(), R(e.connectionHealth).label]
|
|
514
526
|
})
|
|
515
527
|
}),
|
|
516
|
-
/* @__PURE__ */
|
|
528
|
+
/* @__PURE__ */ w("td", {
|
|
517
529
|
className: "px-4 py-3",
|
|
518
|
-
children: /* @__PURE__ */
|
|
530
|
+
children: /* @__PURE__ */ w("span", {
|
|
519
531
|
className: `text-xs ${e.isConnected ? "text-status-success-text" : "text-muted-foreground"}`,
|
|
520
|
-
children: e.isConnected ?
|
|
532
|
+
children: e.isConnected ? A("channel.connected", "Connected") : A("channel.disconnected", "Disconnected")
|
|
521
533
|
})
|
|
522
534
|
}),
|
|
523
|
-
/* @__PURE__ */
|
|
535
|
+
/* @__PURE__ */ w("td", {
|
|
524
536
|
className: "px-4 py-3 text-right",
|
|
525
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
542
|
+
/* @__PURE__ */ w("td", {
|
|
531
543
|
className: "px-4 py-3 text-right",
|
|
532
|
-
children: /* @__PURE__ */
|
|
544
|
+
children: /* @__PURE__ */ w("span", {
|
|
533
545
|
className: "text-xs text-muted-foreground whitespace-nowrap",
|
|
534
|
-
children:
|
|
546
|
+
children: ge(e.updatedAt)
|
|
535
547
|
})
|
|
536
548
|
}),
|
|
537
|
-
/* @__PURE__ */
|
|
549
|
+
/* @__PURE__ */ w("td", {
|
|
538
550
|
className: "px-4 py-3",
|
|
539
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
543
|
-
|
|
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:
|
|
546
|
-
children: /* @__PURE__ */
|
|
558
|
+
title: A("channel.view", "View"),
|
|
559
|
+
children: /* @__PURE__ */ w(se, { size: 14 })
|
|
547
560
|
}),
|
|
548
|
-
/* @__PURE__ */
|
|
561
|
+
/* @__PURE__ */ w(s, {
|
|
549
562
|
permission: c.CHANNEL_EXECUTE,
|
|
550
|
-
children: /* @__PURE__ */
|
|
551
|
-
|
|
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:
|
|
555
|
-
children: t ? /* @__PURE__ */
|
|
568
|
+
title: A("channel.healthCheck", "Health Check"),
|
|
569
|
+
children: t ? /* @__PURE__ */ w(v, {
|
|
556
570
|
size: 14,
|
|
557
571
|
className: "animate-spin"
|
|
558
|
-
}) : /* @__PURE__ */
|
|
572
|
+
}) : /* @__PURE__ */ w(S, { size: 14 })
|
|
559
573
|
})
|
|
560
574
|
}),
|
|
561
|
-
/* @__PURE__ */
|
|
575
|
+
/* @__PURE__ */ w(s, {
|
|
562
576
|
permission: c.CHANNEL_UPDATE,
|
|
563
|
-
children: /* @__PURE__ */
|
|
564
|
-
|
|
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" ?
|
|
568
|
-
children: e.status === "ACTIVE" ? /* @__PURE__ */
|
|
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
|
-
|
|
586
|
+
j === e.id ? /* @__PURE__ */ T("span", {
|
|
572
587
|
className: "inline-flex items-center gap-1 ml-1",
|
|
573
|
-
children: [/* @__PURE__ */
|
|
574
|
-
|
|
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 ? "..." :
|
|
578
|
-
}), /* @__PURE__ */
|
|
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:
|
|
598
|
+
children: A("channel.no", "No")
|
|
582
599
|
})]
|
|
583
|
-
}) : /* @__PURE__ */
|
|
600
|
+
}) : /* @__PURE__ */ w(s, {
|
|
584
601
|
permission: c.CHANNEL_DELETE,
|
|
585
|
-
children: /* @__PURE__ */
|
|
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:
|
|
589
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
618
|
+
}), /* @__PURE__ */ T("div", {
|
|
601
619
|
className: "px-4 py-2.5 border-t border-border flex items-center justify-between",
|
|
602
|
-
children: [/* @__PURE__ */
|
|
620
|
+
children: [/* @__PURE__ */ T("p", {
|
|
603
621
|
className: "text-xs text-muted-foreground",
|
|
604
622
|
children: [
|
|
605
|
-
|
|
623
|
+
A("channel.showing", "Showing"),
|
|
606
624
|
" ",
|
|
607
|
-
/* @__PURE__ */
|
|
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
|
-
|
|
634
|
+
A("channel.of", "of"),
|
|
617
635
|
" ",
|
|
618
|
-
/* @__PURE__ */
|
|
636
|
+
/* @__PURE__ */ w("span", {
|
|
619
637
|
className: "font-medium text-foreground",
|
|
620
638
|
children: H
|
|
621
639
|
}),
|
|
622
640
|
" ",
|
|
623
|
-
|
|
641
|
+
A("channel.channelsLower", "channels")
|
|
624
642
|
]
|
|
625
|
-
}), /* @__PURE__ */
|
|
643
|
+
}), /* @__PURE__ */ T("div", {
|
|
626
644
|
className: "flex items-center gap-2",
|
|
627
645
|
children: [
|
|
628
|
-
/* @__PURE__ */
|
|
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:
|
|
651
|
+
children: A("channel.previous", "Prev")
|
|
633
652
|
}),
|
|
634
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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:
|
|
666
|
+
children: A("channel.next", "Next")
|
|
647
667
|
})
|
|
648
668
|
]
|
|
649
669
|
})]
|
|
650
670
|
})]
|
|
651
671
|
}),
|
|
652
|
-
z.length > 0 && /* @__PURE__ */
|
|
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__ */
|
|
656
|
-
|
|
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__ */
|
|
680
|
+
children: [/* @__PURE__ */ w(x, {
|
|
659
681
|
size: 16,
|
|
660
682
|
className: "text-accent-primary shrink-0"
|
|
661
|
-
}), /* @__PURE__ */
|
|
683
|
+
}), /* @__PURE__ */ T("div", {
|
|
662
684
|
className: "min-w-0",
|
|
663
|
-
children: [/* @__PURE__ */
|
|
685
|
+
children: [/* @__PURE__ */ w("p", {
|
|
664
686
|
className: "text-sm font-medium text-foreground",
|
|
665
|
-
children:
|
|
666
|
-
}), /* @__PURE__ */
|
|
687
|
+
children: A("channel.allChannels", "All Channels")
|
|
688
|
+
}), /* @__PURE__ */ w("p", {
|
|
667
689
|
className: "text-xs text-muted-foreground truncate",
|
|
668
|
-
children:
|
|
690
|
+
children: A("channel.browseChannels", "Browse and manage channel cards")
|
|
669
691
|
})]
|
|
670
692
|
})]
|
|
671
693
|
}),
|
|
672
|
-
/* @__PURE__ */
|
|
673
|
-
|
|
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__ */
|
|
698
|
+
children: [/* @__PURE__ */ w(h, {
|
|
676
699
|
size: 16,
|
|
677
700
|
className: "text-accent-blue shrink-0"
|
|
678
|
-
}), /* @__PURE__ */
|
|
701
|
+
}), /* @__PURE__ */ T("div", {
|
|
679
702
|
className: "min-w-0",
|
|
680
|
-
children: [/* @__PURE__ */
|
|
703
|
+
children: [/* @__PURE__ */ w("p", {
|
|
681
704
|
className: "text-sm font-medium text-foreground",
|
|
682
|
-
children:
|
|
683
|
-
}), /* @__PURE__ */
|
|
705
|
+
children: A("channel.connections", "Connections")
|
|
706
|
+
}), /* @__PURE__ */ w("p", {
|
|
684
707
|
className: "text-xs text-muted-foreground truncate",
|
|
685
|
-
children:
|
|
708
|
+
children: A("channel.connectionsSubtitle", "OAuth, API keys & credentials")
|
|
686
709
|
})]
|
|
687
710
|
})]
|
|
688
711
|
}),
|
|
689
|
-
/* @__PURE__ */
|
|
690
|
-
|
|
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__ */
|
|
716
|
+
children: [/* @__PURE__ */ w(oe, {
|
|
693
717
|
size: 16,
|
|
694
718
|
className: "text-accent-violet shrink-0"
|
|
695
|
-
}), /* @__PURE__ */
|
|
719
|
+
}), /* @__PURE__ */ T("div", {
|
|
696
720
|
className: "min-w-0",
|
|
697
|
-
children: [/* @__PURE__ */
|
|
721
|
+
children: [/* @__PURE__ */ w("p", {
|
|
698
722
|
className: "text-sm font-medium text-foreground",
|
|
699
|
-
children:
|
|
700
|
-
}), /* @__PURE__ */
|
|
723
|
+
children: A("channel.sendMessage", "Send Message")
|
|
724
|
+
}), /* @__PURE__ */ w("p", {
|
|
701
725
|
className: "text-xs text-muted-foreground truncate",
|
|
702
|
-
children:
|
|
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 {
|
|
737
|
+
export { A as ChannelDashboardPage };
|
|
714
738
|
|
|
715
739
|
//# sourceMappingURL=ChannelDashboardPage.js.map
|