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