@burdenoff/microfe-channel 2026.624.3 → 2026.625.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js +134 -134
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +287 -277
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +140 -131
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js +169 -169
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelsListPage.js +204 -209
- package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +161 -155
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js +141 -148
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/CreateChannelPage.js +27 -24
- package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js +161 -156
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +177 -192
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/EditChannelPage.js +130 -122
- package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/EditConnectionPage.js +137 -132
- package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/SendMessagePage.js +87 -84
- package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -1
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js +185 -183
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,13 +2,14 @@ import { useChannel as e } from "../../../providers/ChannelProvider.js";
|
|
|
2
2
|
import { useChannel as t } from "../../../hooks/useChannels.js";
|
|
3
3
|
import { PermissionGuard as n } from "../../../components/PermissionGuard.js";
|
|
4
4
|
import { CHANNEL_PERMISSIONS as r } from "../../../constants/permissions.js";
|
|
5
|
-
import { useExportChannelUsers as
|
|
6
|
-
import { useCallback as
|
|
7
|
-
import { useI18n as
|
|
8
|
-
import { AlertCircle as
|
|
9
|
-
import { useNavigate as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
5
|
+
import { useExportChannelUsers as ee } from "../hooks/useExport.js";
|
|
6
|
+
import { useCallback as i, useEffect as a, useRef as o, useState as s } from "react";
|
|
7
|
+
import { useI18n as c } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { AlertCircle as l, ArrowLeft as u, Bell as d, BellOff as f, CheckCircle2 as p, ChevronLeft as m, ChevronRight as h, Clock as g, Download as te, Loader2 as _, RefreshCw as ne, User as re, UserCheck as v, XCircle as y } from "lucide-react";
|
|
9
|
+
import { useNavigate as b, useParams as ie } from "react-router-dom";
|
|
10
|
+
import { usePermissions as x } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
11
|
+
import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
12
|
+
import { CTAOverflowMenu as T, GlassCard as E, IllustratedEmptyState as ae, ResponsiveTable as oe } from "@burdenoff/fe-libs/ui";
|
|
12
13
|
//#region src/channel/modules/channels/pages/ChannelUsersPage.tsx
|
|
13
14
|
var D = {
|
|
14
15
|
ONLINE: {
|
|
@@ -31,72 +32,72 @@ var D = {
|
|
|
31
32
|
PENDING: {
|
|
32
33
|
label: "Pending",
|
|
33
34
|
color: "text-status-warning-text bg-status-warning-bg-subtle",
|
|
34
|
-
icon:
|
|
35
|
+
icon: g
|
|
35
36
|
},
|
|
36
37
|
APPROVED: {
|
|
37
38
|
label: "Approved",
|
|
38
39
|
color: "text-status-success-text bg-status-success-bg-subtle",
|
|
39
|
-
icon:
|
|
40
|
+
icon: p
|
|
40
41
|
},
|
|
41
42
|
EXPIRED: {
|
|
42
43
|
label: "Expired",
|
|
43
44
|
color: "text-text-secondary bg-bg-sunken",
|
|
44
|
-
icon:
|
|
45
|
+
icon: y
|
|
45
46
|
}
|
|
46
47
|
};
|
|
47
48
|
function k() {
|
|
48
|
-
let { channelId:
|
|
49
|
-
let n =
|
|
49
|
+
let { channelId: p } = ie(), g = b(), { hasPermission: k } = x(), A = k(r.CHANNEL_USER_EXPORT), { t: j } = c(), M = (e, t) => {
|
|
50
|
+
let n = j(e);
|
|
50
51
|
return n === e ? t : n;
|
|
51
|
-
}, { organizationId:
|
|
52
|
-
if (
|
|
53
|
-
|
|
52
|
+
}, { organizationId: N } = e(), { triggerExport: P, isExporting: F, exportError: I } = ee(N ?? void 0, p), [L, R] = s(!0), [z, B] = s([]), [V, H] = s(25), [U, se] = s(0), [W, G] = s(0), { channel: K, isLoading: ce, error: q, fetchUserPlatformConnections: J } = t(p), Y = i(async (e = 0) => {
|
|
53
|
+
if (p) {
|
|
54
|
+
R(!0);
|
|
54
55
|
try {
|
|
55
|
-
let t = await
|
|
56
|
-
|
|
56
|
+
let t = await J(V, e * V);
|
|
57
|
+
B(t.items), se(t.total);
|
|
57
58
|
} finally {
|
|
58
|
-
|
|
59
|
+
R(!1);
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
}, [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]),
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
p,
|
|
64
|
+
J,
|
|
65
|
+
V
|
|
66
|
+
]), X = o(Y);
|
|
67
|
+
a(() => {
|
|
68
|
+
X.current = Y;
|
|
68
69
|
});
|
|
69
|
-
let
|
|
70
|
-
|
|
70
|
+
let Z = o(!0), Q = o(!1);
|
|
71
|
+
a(() => {
|
|
71
72
|
Promise.resolve().then(() => {
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
Q.current = !0, G(0), X.current(0).finally(() => {
|
|
74
|
+
Q.current = !1;
|
|
74
75
|
});
|
|
75
76
|
});
|
|
76
|
-
}, [
|
|
77
|
-
if (
|
|
78
|
-
|
|
77
|
+
}, [V]), a(() => {
|
|
78
|
+
if (Z.current) {
|
|
79
|
+
Z.current = !1;
|
|
79
80
|
return;
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
-
}, [
|
|
83
|
-
let
|
|
82
|
+
Q.current || Promise.resolve().then(() => X.current(W));
|
|
83
|
+
}, [W]);
|
|
84
|
+
let $ = Math.max(1, Math.ceil(U / V)), le = W > 0, ue = W < $ - 1, de = (e) => D[e] || D.OFFLINE, fe = (e) => O[e] || O.EXPIRED, pe = [
|
|
84
85
|
{
|
|
85
86
|
key: "user",
|
|
86
|
-
header:
|
|
87
|
+
header: M("channel.user", "User"),
|
|
87
88
|
priority: "primary",
|
|
88
|
-
cell: (e) => /* @__PURE__ */
|
|
89
|
+
cell: (e) => /* @__PURE__ */ w("div", {
|
|
89
90
|
className: "flex items-center gap-3",
|
|
90
|
-
children: [/* @__PURE__ */
|
|
91
|
+
children: [/* @__PURE__ */ C("div", {
|
|
91
92
|
className: "size-8 bg-accent-primary/10 rounded-full flex items-center justify-center",
|
|
92
|
-
children: /* @__PURE__ */
|
|
93
|
+
children: /* @__PURE__ */ C(re, {
|
|
93
94
|
size: 16,
|
|
94
95
|
className: "text-accent-primary"
|
|
95
96
|
})
|
|
96
|
-
}), /* @__PURE__ */
|
|
97
|
+
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
|
|
97
98
|
className: "text-sm font-medium text-text-primary",
|
|
98
99
|
children: e.externalDisplayName || "Unknown"
|
|
99
|
-
}), e.externalUsername && /* @__PURE__ */
|
|
100
|
+
}), e.externalUsername && /* @__PURE__ */ C("p", {
|
|
100
101
|
className: "text-xs text-text-secondary",
|
|
101
102
|
children: e.externalUsername
|
|
102
103
|
})] })]
|
|
@@ -104,29 +105,29 @@ function k() {
|
|
|
104
105
|
},
|
|
105
106
|
{
|
|
106
107
|
key: "platformId",
|
|
107
|
-
header:
|
|
108
|
+
header: M("channel.platformId", "Platform ID"),
|
|
108
109
|
priority: "secondary",
|
|
109
110
|
cellClassName: "text-sm font-mono text-text-secondary",
|
|
110
111
|
cell: (e) => e.externalUserId
|
|
111
112
|
},
|
|
112
113
|
{
|
|
113
114
|
key: "source",
|
|
114
|
-
header:
|
|
115
|
+
header: M("channel.source", "Source"),
|
|
115
116
|
priority: "secondary",
|
|
116
|
-
cell: (e) => /* @__PURE__ */
|
|
117
|
+
cell: (e) => /* @__PURE__ */ C("span", {
|
|
117
118
|
className: "text-xs text-text-secondary bg-bg-sunken px-2 py-1 rounded",
|
|
118
119
|
children: e.source
|
|
119
120
|
})
|
|
120
121
|
},
|
|
121
122
|
{
|
|
122
123
|
key: "status",
|
|
123
|
-
header:
|
|
124
|
+
header: M("channel.status", "Status"),
|
|
124
125
|
priority: "primary",
|
|
125
126
|
cell: (e) => {
|
|
126
|
-
let t =
|
|
127
|
-
return /* @__PURE__ */
|
|
127
|
+
let t = de(e.presenceStatus);
|
|
128
|
+
return /* @__PURE__ */ w("div", {
|
|
128
129
|
className: "flex items-center gap-2",
|
|
129
|
-
children: [/* @__PURE__ */
|
|
130
|
+
children: [/* @__PURE__ */ C("span", { className: `w-2 h-2 rounded-full ${t.color.replace("text-", "bg-")}` }), /* @__PURE__ */ C("span", {
|
|
130
131
|
className: `text-sm ${t.color}`,
|
|
131
132
|
children: t.label
|
|
132
133
|
})]
|
|
@@ -135,14 +136,14 @@ function k() {
|
|
|
135
136
|
},
|
|
136
137
|
{
|
|
137
138
|
key: "pairing",
|
|
138
|
-
header:
|
|
139
|
+
header: M("channel.pairing", "Pairing"),
|
|
139
140
|
priority: "secondary",
|
|
140
141
|
cell: (e) => {
|
|
141
|
-
let t = e.pairingStatus ?
|
|
142
|
-
return e.pairingStatus && t ? /* @__PURE__ */
|
|
142
|
+
let t = e.pairingStatus ? fe(e.pairingStatus) : null, n = t?.icon ?? y;
|
|
143
|
+
return e.pairingStatus && t ? /* @__PURE__ */ w("span", {
|
|
143
144
|
className: `inline-flex items-center gap-1 text-xs px-2 py-1 rounded ${t.color}`,
|
|
144
|
-
children: [/* @__PURE__ */
|
|
145
|
-
}) : /* @__PURE__ */
|
|
145
|
+
children: [/* @__PURE__ */ C(n, { size: 12 }), t.label]
|
|
146
|
+
}) : /* @__PURE__ */ C("span", {
|
|
146
147
|
className: "text-xs text-text-secondary",
|
|
147
148
|
children: "-"
|
|
148
149
|
});
|
|
@@ -150,219 +151,218 @@ function k() {
|
|
|
150
151
|
},
|
|
151
152
|
{
|
|
152
153
|
key: "notifications",
|
|
153
|
-
header:
|
|
154
|
+
header: M("channel.notifications", "Notifications"),
|
|
154
155
|
priority: "secondary",
|
|
155
|
-
cell: (e) => e.notificationsEnabled ? /* @__PURE__ */
|
|
156
|
+
cell: (e) => e.notificationsEnabled ? /* @__PURE__ */ w("span", {
|
|
156
157
|
className: "inline-flex items-center gap-1",
|
|
157
|
-
children: [/* @__PURE__ */
|
|
158
|
+
children: [/* @__PURE__ */ C(d, {
|
|
158
159
|
size: 16,
|
|
159
160
|
className: "text-status-success-text",
|
|
160
161
|
"aria-hidden": "true"
|
|
161
|
-
}), /* @__PURE__ */
|
|
162
|
+
}), /* @__PURE__ */ C("span", {
|
|
162
163
|
className: "sr-only",
|
|
163
|
-
children:
|
|
164
|
+
children: M("channel.enabled", "Enabled")
|
|
164
165
|
})]
|
|
165
|
-
}) : /* @__PURE__ */
|
|
166
|
+
}) : /* @__PURE__ */ w("span", {
|
|
166
167
|
className: "inline-flex items-center gap-1",
|
|
167
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ C(f, {
|
|
168
169
|
size: 16,
|
|
169
170
|
className: "text-text-secondary",
|
|
170
171
|
"aria-hidden": "true"
|
|
171
|
-
}), /* @__PURE__ */
|
|
172
|
+
}), /* @__PURE__ */ C("span", {
|
|
172
173
|
className: "sr-only",
|
|
173
|
-
children:
|
|
174
|
+
children: M("channel.disabled", "Disabled")
|
|
174
175
|
})]
|
|
175
176
|
})
|
|
176
177
|
},
|
|
177
178
|
{
|
|
178
179
|
key: "dmAllowed",
|
|
179
|
-
header:
|
|
180
|
+
header: M("channel.dmAllowed", "DM Allowed"),
|
|
180
181
|
priority: "secondary",
|
|
181
|
-
cell: (e) => e.dmAllowed ? /* @__PURE__ */
|
|
182
|
+
cell: (e) => e.dmAllowed ? /* @__PURE__ */ w("span", {
|
|
182
183
|
className: "inline-flex items-center gap-1 text-sm text-status-success-text",
|
|
183
|
-
children: [/* @__PURE__ */
|
|
184
|
-
}) : /* @__PURE__ */
|
|
184
|
+
children: [/* @__PURE__ */ C(v, { size: 16 }), M("channel.allowed", "Allowed")]
|
|
185
|
+
}) : /* @__PURE__ */ w("span", {
|
|
185
186
|
className: "inline-flex items-center gap-1 text-sm text-text-secondary",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
187
|
+
children: [/* @__PURE__ */ C(y, { size: 16 }), M("channel.blocked", "Blocked")]
|
|
187
188
|
})
|
|
188
189
|
}
|
|
189
190
|
];
|
|
190
|
-
return
|
|
191
|
+
return ce ? /* @__PURE__ */ C("div", {
|
|
191
192
|
className: "flex items-center justify-center min-h-screen",
|
|
192
|
-
children: /* @__PURE__ */
|
|
193
|
+
children: /* @__PURE__ */ C(_, {
|
|
193
194
|
size: 32,
|
|
194
195
|
className: "animate-spin text-accent-primary"
|
|
195
196
|
})
|
|
196
|
-
}) :
|
|
197
|
+
}) : q || !K ? /* @__PURE__ */ C("div", {
|
|
197
198
|
className: "p-6",
|
|
198
|
-
children: /* @__PURE__ */
|
|
199
|
+
children: /* @__PURE__ */ w("div", {
|
|
199
200
|
className: "flex items-center gap-3 p-4 bg-status-error-bg-subtle border border-status-error-border rounded-lg",
|
|
200
201
|
children: [
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
+
/* @__PURE__ */ C(l, {
|
|
202
203
|
size: 20,
|
|
203
204
|
className: "text-status-error-text"
|
|
204
205
|
}),
|
|
205
|
-
/* @__PURE__ */
|
|
206
|
+
/* @__PURE__ */ C("div", { children: /* @__PURE__ */ C("p", {
|
|
206
207
|
className: "text-sm font-medium text-status-error-text",
|
|
207
|
-
children:
|
|
208
|
+
children: q || "Channel not found"
|
|
208
209
|
}) }),
|
|
209
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ C("button", {
|
|
210
211
|
type: "button",
|
|
211
|
-
onClick: () =>
|
|
212
|
+
onClick: () => g(`/channels/${p}`),
|
|
212
213
|
className: "ml-auto px-3 py-1 text-sm text-status-error-text hover:bg-status-error-bg-subtle rounded transition-colors",
|
|
213
214
|
children: "Go Back"
|
|
214
215
|
})
|
|
215
216
|
]
|
|
216
217
|
})
|
|
217
|
-
}) : /* @__PURE__ */
|
|
218
|
+
}) : /* @__PURE__ */ C(n, {
|
|
218
219
|
permission: r.USER_PLATFORM_CONNECTION_READ,
|
|
219
|
-
children: /* @__PURE__ */
|
|
220
|
+
children: /* @__PURE__ */ w("div", {
|
|
220
221
|
className: "space-y-6 p-3 sm:p-6",
|
|
221
222
|
children: [
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
+
/* @__PURE__ */ w("div", {
|
|
223
224
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
225
|
+
children: [/* @__PURE__ */ w("div", {
|
|
225
226
|
className: "flex items-center gap-3",
|
|
226
|
-
children: [/* @__PURE__ */
|
|
227
|
+
children: [/* @__PURE__ */ C("button", {
|
|
227
228
|
type: "button",
|
|
228
|
-
onClick: () =>
|
|
229
|
-
"aria-label":
|
|
229
|
+
onClick: () => g(`/channels/${p}`),
|
|
230
|
+
"aria-label": M("channel.backToChannel", "Back to channel"),
|
|
230
231
|
className: "p-2 text-text-secondary hover:text-text-primary hover:bg-bg-sunken rounded-lg transition-colors",
|
|
231
|
-
children: /* @__PURE__ */
|
|
232
|
+
children: /* @__PURE__ */ C(u, {
|
|
232
233
|
size: 20,
|
|
233
234
|
"aria-hidden": "true"
|
|
234
235
|
})
|
|
235
|
-
}), /* @__PURE__ */
|
|
236
|
+
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("h1", {
|
|
236
237
|
className: "text-xl sm:text-2xl font-bold text-text-primary",
|
|
237
|
-
children:
|
|
238
|
-
}), /* @__PURE__ */
|
|
238
|
+
children: M("channel.channelUsers", "Channel Users")
|
|
239
|
+
}), /* @__PURE__ */ w("p", {
|
|
239
240
|
className: "text-sm text-text-secondary mt-1",
|
|
240
|
-
children: [
|
|
241
|
+
children: [K.name, " - User connections"]
|
|
241
242
|
})] })]
|
|
242
|
-
}), /* @__PURE__ */
|
|
243
|
+
}), /* @__PURE__ */ w("div", {
|
|
243
244
|
className: "flex items-center gap-3",
|
|
244
|
-
children: [
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
245
|
+
children: [/* @__PURE__ */ w("select", {
|
|
246
|
+
value: V,
|
|
247
|
+
onChange: (e) => H(Number(e.target.value)),
|
|
248
|
+
className: "px-3 py-2 text-sm bg-surface border border-border-subtle rounded-lg focus:outline-none focus:ring-2 focus:ring-accent-primary/50 text-text-primary",
|
|
249
|
+
children: [
|
|
250
|
+
/* @__PURE__ */ C("option", {
|
|
251
|
+
value: 10,
|
|
252
|
+
children: "10 results"
|
|
253
|
+
}),
|
|
254
|
+
/* @__PURE__ */ C("option", {
|
|
255
|
+
value: 25,
|
|
256
|
+
children: "25 results"
|
|
257
|
+
}),
|
|
258
|
+
/* @__PURE__ */ C("option", {
|
|
259
|
+
value: 50,
|
|
260
|
+
children: "50 results"
|
|
261
|
+
}),
|
|
262
|
+
/* @__PURE__ */ C("option", {
|
|
263
|
+
value: 100,
|
|
264
|
+
children: "100 results"
|
|
265
|
+
})
|
|
266
|
+
]
|
|
267
|
+
}), /* @__PURE__ */ C(T, { actions: [{
|
|
268
|
+
label: M("channel.refresh", "Refresh"),
|
|
269
|
+
icon: /* @__PURE__ */ C(ne, {
|
|
270
|
+
size: 16,
|
|
271
|
+
className: L ? "animate-spin" : "",
|
|
272
|
+
"aria-hidden": "true"
|
|
267
273
|
}),
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
274
|
+
disabled: L,
|
|
275
|
+
onSelect: () => void Y(W)
|
|
276
|
+
}, ...A ? [{
|
|
277
|
+
label: M("channel.export", "Export"),
|
|
278
|
+
icon: F ? /* @__PURE__ */ C(_, {
|
|
279
|
+
size: 16,
|
|
280
|
+
className: "animate-spin",
|
|
281
|
+
"aria-hidden": "true"
|
|
282
|
+
}) : /* @__PURE__ */ C(te, {
|
|
283
|
+
size: 16,
|
|
284
|
+
"aria-hidden": "true"
|
|
277
285
|
}),
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
type: "button",
|
|
282
|
-
onClick: () => void re(),
|
|
283
|
-
disabled: M,
|
|
284
|
-
className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-fg border border-border-subtle hover:bg-bg-elevated rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
285
|
-
title: A("channel.exportCSV", "Export to CSV"),
|
|
286
|
-
children: [M ? /* @__PURE__ */ w(y, {
|
|
287
|
-
size: 16,
|
|
288
|
-
className: "animate-spin"
|
|
289
|
-
}) : /* @__PURE__ */ w(v, { size: 16 }), A("channel.export", "Export")]
|
|
290
|
-
})
|
|
291
|
-
})
|
|
292
|
-
]
|
|
286
|
+
disabled: F,
|
|
287
|
+
onSelect: () => void P()
|
|
288
|
+
}] : []] })]
|
|
293
289
|
})]
|
|
294
290
|
}),
|
|
295
|
-
|
|
291
|
+
I && /* @__PURE__ */ w("div", {
|
|
296
292
|
className: "p-4 bg-status-error-bg-subtle border border-status-error-border rounded-lg flex items-center gap-3",
|
|
297
|
-
children: [/* @__PURE__ */
|
|
293
|
+
children: [/* @__PURE__ */ C(l, {
|
|
298
294
|
size: 20,
|
|
299
295
|
className: "text-status-error-text"
|
|
300
|
-
}), /* @__PURE__ */
|
|
296
|
+
}), /* @__PURE__ */ C("p", {
|
|
301
297
|
className: "text-sm text-status-error-text flex-1",
|
|
302
|
-
children:
|
|
298
|
+
children: I
|
|
303
299
|
})]
|
|
304
300
|
}),
|
|
305
|
-
/* @__PURE__ */
|
|
306
|
-
|
|
307
|
-
|
|
301
|
+
/* @__PURE__ */ C(E, {
|
|
302
|
+
treatment: "insight",
|
|
303
|
+
className: "p-4 border-border-seam",
|
|
304
|
+
children: /* @__PURE__ */ C("p", {
|
|
308
305
|
className: "text-sm text-text-secondary",
|
|
309
306
|
children: "Users connected to this channel through OAuth or pairing. Manage notification preferences and DM authorization here."
|
|
310
307
|
})
|
|
311
308
|
}),
|
|
312
|
-
/* @__PURE__ */
|
|
313
|
-
columns:
|
|
314
|
-
data:
|
|
309
|
+
/* @__PURE__ */ C(oe, {
|
|
310
|
+
columns: pe,
|
|
311
|
+
data: z,
|
|
315
312
|
rowKey: (e) => e.id,
|
|
316
|
-
emptyState:
|
|
317
|
-
|
|
313
|
+
emptyState: /* @__PURE__ */ C(ae, {
|
|
314
|
+
illustration: "empty-people",
|
|
315
|
+
title: M("channel.noUsersConnected", "No users connected to this channel")
|
|
316
|
+
}),
|
|
317
|
+
className: "bg-surface border border-border-seam rounded-lg"
|
|
318
318
|
}),
|
|
319
|
-
/* @__PURE__ */
|
|
319
|
+
/* @__PURE__ */ w("div", {
|
|
320
320
|
className: "flex items-center justify-between",
|
|
321
|
-
children: [/* @__PURE__ */
|
|
321
|
+
children: [/* @__PURE__ */ C("p", {
|
|
322
322
|
className: "text-sm text-text-secondary",
|
|
323
|
-
children:
|
|
324
|
-
|
|
323
|
+
children: U > 0 && /* @__PURE__ */ w(S, { children: [
|
|
324
|
+
M("channel.showing", "Showing"),
|
|
325
325
|
" ",
|
|
326
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ w("span", {
|
|
327
327
|
className: "font-medium",
|
|
328
328
|
children: [
|
|
329
|
-
|
|
329
|
+
W * V + 1,
|
|
330
330
|
"–",
|
|
331
|
-
Math.min((
|
|
331
|
+
Math.min((W + 1) * V, U)
|
|
332
332
|
]
|
|
333
333
|
}),
|
|
334
334
|
" ",
|
|
335
|
-
|
|
335
|
+
M("channel.of", "of"),
|
|
336
336
|
" ",
|
|
337
|
-
/* @__PURE__ */
|
|
337
|
+
/* @__PURE__ */ C("span", {
|
|
338
338
|
className: "font-medium",
|
|
339
|
-
children:
|
|
339
|
+
children: U
|
|
340
340
|
})
|
|
341
341
|
] })
|
|
342
|
-
}), /* @__PURE__ */
|
|
342
|
+
}), /* @__PURE__ */ w("div", {
|
|
343
343
|
className: "flex items-center gap-2",
|
|
344
344
|
children: [
|
|
345
|
-
/* @__PURE__ */
|
|
345
|
+
/* @__PURE__ */ w("button", {
|
|
346
346
|
type: "button",
|
|
347
|
-
onClick: () =>
|
|
348
|
-
disabled:
|
|
347
|
+
onClick: () => G((e) => Math.max(0, e - 1)),
|
|
348
|
+
disabled: !le || L,
|
|
349
349
|
className: "flex items-center gap-1 px-3 py-1.5 text-sm border border-border-subtle rounded-lg hover:bg-bg-sunken transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
|
|
350
|
-
children: [/* @__PURE__ */
|
|
350
|
+
children: [/* @__PURE__ */ C(m, { size: 16 }), M("channel.previous", "Previous")]
|
|
351
351
|
}),
|
|
352
|
-
/* @__PURE__ */
|
|
352
|
+
/* @__PURE__ */ w("span", {
|
|
353
353
|
className: "text-sm text-text-secondary",
|
|
354
354
|
children: [
|
|
355
|
-
|
|
355
|
+
W + 1,
|
|
356
356
|
" / ",
|
|
357
|
-
|
|
357
|
+
$
|
|
358
358
|
]
|
|
359
359
|
}),
|
|
360
|
-
/* @__PURE__ */
|
|
360
|
+
/* @__PURE__ */ w("button", {
|
|
361
361
|
type: "button",
|
|
362
|
-
onClick: () =>
|
|
363
|
-
disabled: !
|
|
362
|
+
onClick: () => G((e) => Math.min($ - 1, e + 1)),
|
|
363
|
+
disabled: !ue || L,
|
|
364
364
|
className: "flex items-center gap-1 px-3 py-1.5 text-sm border border-border-subtle rounded-lg hover:bg-bg-sunken transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
|
|
365
|
-
children: [
|
|
365
|
+
children: [M("channel.next", "Next"), /* @__PURE__ */ C(h, { size: 16 })]
|
|
366
366
|
})
|
|
367
367
|
]
|
|
368
368
|
})]
|