@burdenoff/microfe-channel 2026.624.2 → 2026.625.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/modules/channels/pages/ChannelDashboardPage.js +108 -98
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +289 -279
- 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 +170 -173
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelsListPage.js +127 -120
- 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 +70 -68
- 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 +179 -182
- 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 +193 -194
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,15 +2,16 @@ 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 _, Loader2 as v, RefreshCw as te, User as ne, UserCheck as re, XCircle as y } from "lucide-react";
|
|
9
|
+
import { useNavigate as b, useParams as ie } from "react-router-dom";
|
|
10
|
+
import { usePermissions as ae } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
11
|
+
import { Fragment as oe, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
12
|
+
import { CTAOverflowMenu as C, GlassCard as w, ResponsiveTable as T } from "@burdenoff/fe-libs/ui";
|
|
12
13
|
//#region src/channel/modules/channels/pages/ChannelUsersPage.tsx
|
|
13
|
-
var
|
|
14
|
+
var E = {
|
|
14
15
|
ONLINE: {
|
|
15
16
|
label: "Online",
|
|
16
17
|
color: "text-status-success-text"
|
|
@@ -27,76 +28,76 @@ var D = {
|
|
|
27
28
|
label: "Do Not Disturb",
|
|
28
29
|
color: "text-status-error-text"
|
|
29
30
|
}
|
|
30
|
-
},
|
|
31
|
+
}, 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
|
-
function
|
|
48
|
-
let { channelId:
|
|
49
|
-
let n =
|
|
48
|
+
function O() {
|
|
49
|
+
let { channelId: p } = ie(), g = b(), { hasPermission: O } = ae(), k = O(r.CHANNEL_USER_EXPORT), { t: A } = c(), j = (e, t) => {
|
|
50
|
+
let n = A(e);
|
|
50
51
|
return n === e ? t : n;
|
|
51
|
-
}, { organizationId:
|
|
52
|
-
if (
|
|
53
|
-
|
|
52
|
+
}, { organizationId: M } = e(), { triggerExport: N, isExporting: P, exportError: F } = ee(M ?? void 0, p), [I, L] = s(!0), [R, z] = s([]), [B, V] = s(25), [H, U] = s(0), [W, G] = s(0), { channel: K, isLoading: se, error: q, fetchUserPlatformConnections: J } = t(p), Y = i(async (e = 0) => {
|
|
53
|
+
if (p) {
|
|
54
|
+
L(!0);
|
|
54
55
|
try {
|
|
55
|
-
let t = await
|
|
56
|
-
|
|
56
|
+
let t = await J(B, e * B);
|
|
57
|
+
z(t.items), U(t.total);
|
|
57
58
|
} finally {
|
|
58
|
-
|
|
59
|
+
L(!1);
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
}, [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]),
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
p,
|
|
64
|
+
J,
|
|
65
|
+
B
|
|
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
|
+
}, [B]), 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(H / B)), ce = W > 0, le = W < $ - 1, ue = (e) => E[e] || E.OFFLINE, de = (e) => D[e] || D.EXPIRED, fe = [
|
|
84
85
|
{
|
|
85
86
|
key: "user",
|
|
86
|
-
header:
|
|
87
|
+
header: j("channel.user", "User"),
|
|
87
88
|
priority: "primary",
|
|
88
|
-
cell: (e) => /* @__PURE__ */
|
|
89
|
+
cell: (e) => /* @__PURE__ */ S("div", {
|
|
89
90
|
className: "flex items-center gap-3",
|
|
90
|
-
children: [/* @__PURE__ */
|
|
91
|
+
children: [/* @__PURE__ */ x("div", {
|
|
91
92
|
className: "size-8 bg-accent-primary/10 rounded-full flex items-center justify-center",
|
|
92
|
-
children: /* @__PURE__ */
|
|
93
|
+
children: /* @__PURE__ */ x(ne, {
|
|
93
94
|
size: 16,
|
|
94
95
|
className: "text-accent-primary"
|
|
95
96
|
})
|
|
96
|
-
}), /* @__PURE__ */
|
|
97
|
+
}), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("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__ */ x("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: j("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: j("channel.source", "Source"),
|
|
115
116
|
priority: "secondary",
|
|
116
|
-
cell: (e) => /* @__PURE__ */
|
|
117
|
+
cell: (e) => /* @__PURE__ */ x("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: j("channel.status", "Status"),
|
|
124
125
|
priority: "primary",
|
|
125
126
|
cell: (e) => {
|
|
126
|
-
let t =
|
|
127
|
-
return /* @__PURE__ */
|
|
127
|
+
let t = ue(e.presenceStatus);
|
|
128
|
+
return /* @__PURE__ */ S("div", {
|
|
128
129
|
className: "flex items-center gap-2",
|
|
129
|
-
children: [/* @__PURE__ */
|
|
130
|
+
children: [/* @__PURE__ */ x("span", { className: `w-2 h-2 rounded-full ${t.color.replace("text-", "bg-")}` }), /* @__PURE__ */ x("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: j("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 ? de(e.pairingStatus) : null, n = t?.icon ?? y;
|
|
143
|
+
return e.pairingStatus && t ? /* @__PURE__ */ S("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__ */ x(n, { size: 12 }), t.label]
|
|
146
|
+
}) : /* @__PURE__ */ x("span", {
|
|
146
147
|
className: "text-xs text-text-secondary",
|
|
147
148
|
children: "-"
|
|
148
149
|
});
|
|
@@ -150,219 +151,215 @@ function k() {
|
|
|
150
151
|
},
|
|
151
152
|
{
|
|
152
153
|
key: "notifications",
|
|
153
|
-
header:
|
|
154
|
+
header: j("channel.notifications", "Notifications"),
|
|
154
155
|
priority: "secondary",
|
|
155
|
-
cell: (e) => e.notificationsEnabled ? /* @__PURE__ */
|
|
156
|
+
cell: (e) => e.notificationsEnabled ? /* @__PURE__ */ S("span", {
|
|
156
157
|
className: "inline-flex items-center gap-1",
|
|
157
|
-
children: [/* @__PURE__ */
|
|
158
|
+
children: [/* @__PURE__ */ x(d, {
|
|
158
159
|
size: 16,
|
|
159
160
|
className: "text-status-success-text",
|
|
160
161
|
"aria-hidden": "true"
|
|
161
|
-
}), /* @__PURE__ */
|
|
162
|
+
}), /* @__PURE__ */ x("span", {
|
|
162
163
|
className: "sr-only",
|
|
163
|
-
children:
|
|
164
|
+
children: j("channel.enabled", "Enabled")
|
|
164
165
|
})]
|
|
165
|
-
}) : /* @__PURE__ */
|
|
166
|
+
}) : /* @__PURE__ */ S("span", {
|
|
166
167
|
className: "inline-flex items-center gap-1",
|
|
167
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ x(f, {
|
|
168
169
|
size: 16,
|
|
169
170
|
className: "text-text-secondary",
|
|
170
171
|
"aria-hidden": "true"
|
|
171
|
-
}), /* @__PURE__ */
|
|
172
|
+
}), /* @__PURE__ */ x("span", {
|
|
172
173
|
className: "sr-only",
|
|
173
|
-
children:
|
|
174
|
+
children: j("channel.disabled", "Disabled")
|
|
174
175
|
})]
|
|
175
176
|
})
|
|
176
177
|
},
|
|
177
178
|
{
|
|
178
179
|
key: "dmAllowed",
|
|
179
|
-
header:
|
|
180
|
+
header: j("channel.dmAllowed", "DM Allowed"),
|
|
180
181
|
priority: "secondary",
|
|
181
|
-
cell: (e) => e.dmAllowed ? /* @__PURE__ */
|
|
182
|
+
cell: (e) => e.dmAllowed ? /* @__PURE__ */ S("span", {
|
|
182
183
|
className: "inline-flex items-center gap-1 text-sm text-status-success-text",
|
|
183
|
-
children: [/* @__PURE__ */
|
|
184
|
-
}) : /* @__PURE__ */
|
|
184
|
+
children: [/* @__PURE__ */ x(re, { size: 16 }), j("channel.allowed", "Allowed")]
|
|
185
|
+
}) : /* @__PURE__ */ S("span", {
|
|
185
186
|
className: "inline-flex items-center gap-1 text-sm text-text-secondary",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
187
|
+
children: [/* @__PURE__ */ x(y, { size: 16 }), j("channel.blocked", "Blocked")]
|
|
187
188
|
})
|
|
188
189
|
}
|
|
189
190
|
];
|
|
190
|
-
return
|
|
191
|
+
return se ? /* @__PURE__ */ x("div", {
|
|
191
192
|
className: "flex items-center justify-center min-h-screen",
|
|
192
|
-
children: /* @__PURE__ */
|
|
193
|
+
children: /* @__PURE__ */ x(v, {
|
|
193
194
|
size: 32,
|
|
194
195
|
className: "animate-spin text-accent-primary"
|
|
195
196
|
})
|
|
196
|
-
}) :
|
|
197
|
+
}) : q || !K ? /* @__PURE__ */ x("div", {
|
|
197
198
|
className: "p-6",
|
|
198
|
-
children: /* @__PURE__ */
|
|
199
|
+
children: /* @__PURE__ */ S("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__ */ x(l, {
|
|
202
203
|
size: 20,
|
|
203
204
|
className: "text-status-error-text"
|
|
204
205
|
}),
|
|
205
|
-
/* @__PURE__ */
|
|
206
|
+
/* @__PURE__ */ x("div", { children: /* @__PURE__ */ x("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__ */ x("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__ */ x(n, {
|
|
218
219
|
permission: r.USER_PLATFORM_CONNECTION_READ,
|
|
219
|
-
children: /* @__PURE__ */
|
|
220
|
+
children: /* @__PURE__ */ S("div", {
|
|
220
221
|
className: "space-y-6 p-3 sm:p-6",
|
|
221
222
|
children: [
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
+
/* @__PURE__ */ S("div", {
|
|
223
224
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
225
|
+
children: [/* @__PURE__ */ S("div", {
|
|
225
226
|
className: "flex items-center gap-3",
|
|
226
|
-
children: [/* @__PURE__ */
|
|
227
|
+
children: [/* @__PURE__ */ x("button", {
|
|
227
228
|
type: "button",
|
|
228
|
-
onClick: () =>
|
|
229
|
-
"aria-label":
|
|
229
|
+
onClick: () => g(`/channels/${p}`),
|
|
230
|
+
"aria-label": j("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__ */ x(u, {
|
|
232
233
|
size: 20,
|
|
233
234
|
"aria-hidden": "true"
|
|
234
235
|
})
|
|
235
|
-
}), /* @__PURE__ */
|
|
236
|
+
}), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h1", {
|
|
236
237
|
className: "text-xl sm:text-2xl font-bold text-text-primary",
|
|
237
|
-
children:
|
|
238
|
-
}), /* @__PURE__ */
|
|
238
|
+
children: j("channel.channelUsers", "Channel Users")
|
|
239
|
+
}), /* @__PURE__ */ S("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__ */ S("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__ */ S("select", {
|
|
246
|
+
value: B,
|
|
247
|
+
onChange: (e) => V(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__ */ x("option", {
|
|
251
|
+
value: 10,
|
|
252
|
+
children: "10 results"
|
|
253
|
+
}),
|
|
254
|
+
/* @__PURE__ */ x("option", {
|
|
255
|
+
value: 25,
|
|
256
|
+
children: "25 results"
|
|
257
|
+
}),
|
|
258
|
+
/* @__PURE__ */ x("option", {
|
|
259
|
+
value: 50,
|
|
260
|
+
children: "50 results"
|
|
261
|
+
}),
|
|
262
|
+
/* @__PURE__ */ x("option", {
|
|
263
|
+
value: 100,
|
|
264
|
+
children: "100 results"
|
|
265
|
+
})
|
|
266
|
+
]
|
|
267
|
+
}), /* @__PURE__ */ x(C, { actions: [{
|
|
268
|
+
label: j("channel.refresh", "Refresh"),
|
|
269
|
+
icon: /* @__PURE__ */ x(te, {
|
|
270
|
+
size: 16,
|
|
271
|
+
className: I ? "animate-spin" : "",
|
|
272
|
+
"aria-hidden": "true"
|
|
267
273
|
}),
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
274
|
+
disabled: I,
|
|
275
|
+
onSelect: () => void Y(W)
|
|
276
|
+
}, ...k ? [{
|
|
277
|
+
label: j("channel.export", "Export"),
|
|
278
|
+
icon: P ? /* @__PURE__ */ x(v, {
|
|
279
|
+
size: 16,
|
|
280
|
+
className: "animate-spin",
|
|
281
|
+
"aria-hidden": "true"
|
|
282
|
+
}) : /* @__PURE__ */ x(_, {
|
|
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: P,
|
|
287
|
+
onSelect: () => void N()
|
|
288
|
+
}] : []] })]
|
|
293
289
|
})]
|
|
294
290
|
}),
|
|
295
|
-
|
|
291
|
+
F && /* @__PURE__ */ S("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__ */ x(l, {
|
|
298
294
|
size: 20,
|
|
299
295
|
className: "text-status-error-text"
|
|
300
|
-
}), /* @__PURE__ */
|
|
296
|
+
}), /* @__PURE__ */ x("p", {
|
|
301
297
|
className: "text-sm text-status-error-text flex-1",
|
|
302
|
-
children:
|
|
298
|
+
children: F
|
|
303
299
|
})]
|
|
304
300
|
}),
|
|
305
|
-
/* @__PURE__ */ w
|
|
306
|
-
|
|
307
|
-
|
|
301
|
+
/* @__PURE__ */ x(w, {
|
|
302
|
+
treatment: "insight",
|
|
303
|
+
className: "p-4 border-border-seam",
|
|
304
|
+
children: /* @__PURE__ */ x("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__ */ x(T, {
|
|
310
|
+
columns: fe,
|
|
311
|
+
data: R,
|
|
315
312
|
rowKey: (e) => e.id,
|
|
316
|
-
emptyState:
|
|
317
|
-
className: "bg-surface border border-border-
|
|
313
|
+
emptyState: j("channel.noUsersConnected", "No users connected to this channel"),
|
|
314
|
+
className: "bg-surface border border-border-seam rounded-lg"
|
|
318
315
|
}),
|
|
319
|
-
/* @__PURE__ */
|
|
316
|
+
/* @__PURE__ */ S("div", {
|
|
320
317
|
className: "flex items-center justify-between",
|
|
321
|
-
children: [/* @__PURE__ */
|
|
318
|
+
children: [/* @__PURE__ */ x("p", {
|
|
322
319
|
className: "text-sm text-text-secondary",
|
|
323
|
-
children:
|
|
324
|
-
|
|
320
|
+
children: H > 0 && /* @__PURE__ */ S(oe, { children: [
|
|
321
|
+
j("channel.showing", "Showing"),
|
|
325
322
|
" ",
|
|
326
|
-
/* @__PURE__ */
|
|
323
|
+
/* @__PURE__ */ S("span", {
|
|
327
324
|
className: "font-medium",
|
|
328
325
|
children: [
|
|
329
|
-
|
|
326
|
+
W * B + 1,
|
|
330
327
|
"–",
|
|
331
|
-
Math.min((
|
|
328
|
+
Math.min((W + 1) * B, H)
|
|
332
329
|
]
|
|
333
330
|
}),
|
|
334
331
|
" ",
|
|
335
|
-
|
|
332
|
+
j("channel.of", "of"),
|
|
336
333
|
" ",
|
|
337
|
-
/* @__PURE__ */
|
|
334
|
+
/* @__PURE__ */ x("span", {
|
|
338
335
|
className: "font-medium",
|
|
339
|
-
children:
|
|
336
|
+
children: H
|
|
340
337
|
})
|
|
341
338
|
] })
|
|
342
|
-
}), /* @__PURE__ */
|
|
339
|
+
}), /* @__PURE__ */ S("div", {
|
|
343
340
|
className: "flex items-center gap-2",
|
|
344
341
|
children: [
|
|
345
|
-
/* @__PURE__ */
|
|
342
|
+
/* @__PURE__ */ S("button", {
|
|
346
343
|
type: "button",
|
|
347
|
-
onClick: () =>
|
|
348
|
-
disabled:
|
|
344
|
+
onClick: () => G((e) => Math.max(0, e - 1)),
|
|
345
|
+
disabled: !ce || I,
|
|
349
346
|
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__ */
|
|
347
|
+
children: [/* @__PURE__ */ x(m, { size: 16 }), j("channel.previous", "Previous")]
|
|
351
348
|
}),
|
|
352
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ S("span", {
|
|
353
350
|
className: "text-sm text-text-secondary",
|
|
354
351
|
children: [
|
|
355
|
-
|
|
352
|
+
W + 1,
|
|
356
353
|
" / ",
|
|
357
|
-
|
|
354
|
+
$
|
|
358
355
|
]
|
|
359
356
|
}),
|
|
360
|
-
/* @__PURE__ */
|
|
357
|
+
/* @__PURE__ */ S("button", {
|
|
361
358
|
type: "button",
|
|
362
|
-
onClick: () =>
|
|
363
|
-
disabled: !
|
|
359
|
+
onClick: () => G((e) => Math.min($ - 1, e + 1)),
|
|
360
|
+
disabled: !le || I,
|
|
364
361
|
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: [
|
|
362
|
+
children: [j("channel.next", "Next"), /* @__PURE__ */ x(h, { size: 16 })]
|
|
366
363
|
})
|
|
367
364
|
]
|
|
368
365
|
})]
|
|
@@ -372,6 +369,6 @@ function k() {
|
|
|
372
369
|
});
|
|
373
370
|
}
|
|
374
371
|
//#endregion
|
|
375
|
-
export {
|
|
372
|
+
export { O as ChannelUsersPage };
|
|
376
373
|
|
|
377
374
|
//# sourceMappingURL=ChannelUsersPage.js.map
|