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