@burdenoff/microfe-channel 2026.510.112
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/README.md +147 -0
- package/dist/channel/ChannelRoot.d.ts +32 -0
- package/dist/channel/ChannelRoot.d.ts.map +1 -0
- package/dist/channel/ChannelRoot.js +81 -0
- package/dist/channel/ChannelRoot.js.map +1 -0
- package/dist/channel/ChannelRoutes.d.ts +10 -0
- package/dist/channel/ChannelRoutes.d.ts.map +1 -0
- package/dist/channel/ChannelRoutes.js +104 -0
- package/dist/channel/ChannelRoutes.js.map +1 -0
- package/dist/channel/components/AdapterCredentialsForm.d.ts +20 -0
- package/dist/channel/components/AdapterCredentialsForm.d.ts.map +1 -0
- package/dist/channel/components/AdapterCredentialsForm.js +230 -0
- package/dist/channel/components/AdapterCredentialsForm.js.map +1 -0
- package/dist/channel/components/FeatureNotEnabled.d.ts +10 -0
- package/dist/channel/components/FeatureNotEnabled.d.ts.map +1 -0
- package/dist/channel/components/FeatureNotEnabled.js +32 -0
- package/dist/channel/components/FeatureNotEnabled.js.map +1 -0
- package/dist/channel/components/PermissionGuard.d.ts +15 -0
- package/dist/channel/components/PermissionGuard.d.ts.map +1 -0
- package/dist/channel/components/PermissionGuard.js +23 -0
- package/dist/channel/components/PermissionGuard.js.map +1 -0
- package/dist/channel/config/adapterCredentials.d.ts +44 -0
- package/dist/channel/config/adapterCredentials.d.ts.map +1 -0
- package/dist/channel/config/adapterCredentials.js +946 -0
- package/dist/channel/config/adapterCredentials.js.map +1 -0
- package/dist/channel/constants/permissions.d.ts +32 -0
- package/dist/channel/constants/permissions.d.ts.map +1 -0
- package/dist/channel/constants/permissions.js +30 -0
- package/dist/channel/constants/permissions.js.map +1 -0
- package/dist/channel/graphql/global-client.d.ts +11 -0
- package/dist/channel/graphql/global-client.d.ts.map +1 -0
- package/dist/channel/graphql/global-client.js +56 -0
- package/dist/channel/graphql/global-client.js.map +1 -0
- package/dist/channel/hooks/useChannelOrgSettings.d.ts +22 -0
- package/dist/channel/hooks/useChannelOrgSettings.d.ts.map +1 -0
- package/dist/channel/hooks/useChannelOrgSettings.js +61 -0
- package/dist/channel/hooks/useChannelOrgSettings.js.map +1 -0
- package/dist/channel/hooks/useChannelSubscription.d.ts +36 -0
- package/dist/channel/hooks/useChannelSubscription.d.ts.map +1 -0
- package/dist/channel/hooks/useChannelSubscription.js +111 -0
- package/dist/channel/hooks/useChannelSubscription.js.map +1 -0
- package/dist/channel/hooks/useChannels.d.ts +214 -0
- package/dist/channel/hooks/useChannels.d.ts.map +1 -0
- package/dist/channel/hooks/useChannels.js +416 -0
- package/dist/channel/hooks/useChannels.js.map +1 -0
- package/dist/channel/index.d.ts +12 -0
- package/dist/channel/index.d.ts.map +1 -0
- package/dist/channel/index.js +2 -0
- package/dist/channel/modules/channels/hooks/useExport.d.ts +45 -0
- package/dist/channel/modules/channels/hooks/useExport.d.ts.map +1 -0
- package/dist/channel/modules/channels/hooks/useExport.js +195 -0
- package/dist/channel/modules/channels/hooks/useExport.js.map +1 -0
- package/dist/channel/modules/channels/i18n.d.ts +14 -0
- package/dist/channel/modules/channels/i18n.d.ts.map +1 -0
- package/dist/channel/modules/channels/i18n.js +110 -0
- package/dist/channel/modules/channels/i18n.js.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.d.ts +14 -0
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js +680 -0
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +949 -0
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +404 -0
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelUsersPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/ChannelUsersPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js +315 -0
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelsListPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/ChannelsListPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ChannelsListPage.js +604 -0
- package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +323 -0
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/ConnectionsListPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/ConnectionsListPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js +276 -0
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/CreateChannelPage.d.ts +12 -0
- package/dist/channel/modules/channels/pages/CreateChannelPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/CreateChannelPage.js +456 -0
- package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/CreateConnectionPage.d.ts +11 -0
- package/dist/channel/modules/channels/pages/CreateConnectionPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js +219 -0
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +375 -0
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/EditChannelPage.d.ts +8 -0
- package/dist/channel/modules/channels/pages/EditChannelPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/EditChannelPage.js +459 -0
- package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/EditConnectionPage.d.ts +10 -0
- package/dist/channel/modules/channels/pages/EditConnectionPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/EditConnectionPage.js +199 -0
- package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/SendMessagePage.d.ts +8 -0
- package/dist/channel/modules/channels/pages/SendMessagePage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/SendMessagePage.js +403 -0
- package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -0
- package/dist/channel/modules/channels/pages/WebhookEventsPage.d.ts +7 -0
- package/dist/channel/modules/channels/pages/WebhookEventsPage.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js +303 -0
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -0
- package/dist/channel/modules/channels/pages/index.d.ts +18 -0
- package/dist/channel/modules/channels/pages/index.d.ts.map +1 -0
- package/dist/channel/modules/channels/pages/index.js +14 -0
- package/dist/channel/pages/ChannelLandingPage.d.ts +9 -0
- package/dist/channel/pages/ChannelLandingPage.d.ts.map +1 -0
- package/dist/channel/pages/ChannelLandingPage.js +72 -0
- package/dist/channel/pages/ChannelLandingPage.js.map +1 -0
- package/dist/channel/providers/ChannelProvider.d.ts +16 -0
- package/dist/channel/providers/ChannelProvider.d.ts.map +1 -0
- package/dist/channel/providers/ChannelProvider.js +35 -0
- package/dist/channel/providers/ChannelProvider.js.map +1 -0
- package/dist/channel/types/index.d.ts +89 -0
- package/dist/channel/types/index.d.ts.map +1 -0
- package/dist/channel/utils/shellBridge.d.ts +59 -0
- package/dist/channel/utils/shellBridge.d.ts.map +1 -0
- package/dist/channel/utils/shellBridge.js +36 -0
- package/dist/channel/utils/shellBridge.js.map +1 -0
- package/dist/dev/App.d.ts +6 -0
- package/dist/dev/App.d.ts.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +1547 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-operations.js +466 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/global-types.d.ts +21289 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/global-types.js +14 -0
- package/dist/generated/global-types.js.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +55214 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +24 -0
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -0
- package/dist/node_modules/@apollo/client/errors/utils.js +16 -0
- package/dist/node_modules/@apollo/client/errors/utils.js.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/package.json +116 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { useChannel as e } from "../../../providers/ChannelProvider.js";
|
|
2
|
+
import { CONNECTION_STATUS_CHANGED_SUBSCRIPTION as t, useChannelSubscription as n } from "../../../hooks/useChannelSubscription.js";
|
|
3
|
+
import { useChannels as r } from "../../../hooks/useChannels.js";
|
|
4
|
+
import { PermissionGuard as i } from "../../../components/PermissionGuard.js";
|
|
5
|
+
import { CHANNEL_PERMISSIONS as a } from "../../../constants/permissions.js";
|
|
6
|
+
import { useState as o } from "react";
|
|
7
|
+
import { useI18n as s } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
|
+
import { AlertCircle as c, ArrowLeft as l, CheckCircle2 as u, Link as d, Loader2 as f, Plus as p, RefreshCw as m, Settings as h, XCircle as g } from "lucide-react";
|
|
9
|
+
import { useNavigate as _ } from "react-router-dom";
|
|
10
|
+
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
11
|
+
import { TagBadge as b } from "@burdenoff/fe-libs/tag";
|
|
12
|
+
//#region src/channel/modules/channels/pages/ConnectionsListPage.tsx
|
|
13
|
+
var x = {
|
|
14
|
+
true: {
|
|
15
|
+
icon: u,
|
|
16
|
+
color: "text-green-500",
|
|
17
|
+
label: "Healthy"
|
|
18
|
+
},
|
|
19
|
+
false: {
|
|
20
|
+
icon: g,
|
|
21
|
+
color: "text-red-500",
|
|
22
|
+
label: "Unhealthy"
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
function S() {
|
|
26
|
+
let u = _(), { channels: g, isLoading: S, error: C, refetch: w } = r(), { organizationId: T } = e();
|
|
27
|
+
n({
|
|
28
|
+
query: t,
|
|
29
|
+
variables: { organizationId: T },
|
|
30
|
+
operationName: "ConnectionStatusChanged",
|
|
31
|
+
enabled: !!T,
|
|
32
|
+
onData: () => void w(),
|
|
33
|
+
pollFn: w,
|
|
34
|
+
pollIntervalMs: 6e4
|
|
35
|
+
});
|
|
36
|
+
let { t: E } = s(), D = (e, t) => {
|
|
37
|
+
let n = E(e);
|
|
38
|
+
return n === e ? t : n;
|
|
39
|
+
}, [O, k] = o("all"), [A, j] = o("all"), M = g.filter((e) => e.connection).map((e) => ({
|
|
40
|
+
channelId: e.id,
|
|
41
|
+
channelName: e.name,
|
|
42
|
+
platform: e.platform,
|
|
43
|
+
adapterType: e.adapterType,
|
|
44
|
+
channelStatus: e.status,
|
|
45
|
+
connectionId: e.connection.id,
|
|
46
|
+
isActive: e.connection.isActive,
|
|
47
|
+
isHealthy: e.connection.isHealthy,
|
|
48
|
+
needsTokenRefresh: e.connection.needsTokenRefresh,
|
|
49
|
+
lastTestedAt: e.connection.lastTestedAt,
|
|
50
|
+
authType: e.connection.authType,
|
|
51
|
+
tagAssignments: e.connection.tagAssignments ?? []
|
|
52
|
+
})), N = [...new Set(M.map((e) => e.platform))], P = M.filter((e) => !(O === "healthy" && !e.isHealthy || O === "unhealthy" && e.isHealthy || A !== "all" && e.platform !== A));
|
|
53
|
+
return S ? /* @__PURE__ */ v("div", {
|
|
54
|
+
className: "flex items-center justify-center min-h-screen",
|
|
55
|
+
children: /* @__PURE__ */ v(f, { className: "w-8 h-8 animate-spin text-muted-foreground" })
|
|
56
|
+
}) : C ? /* @__PURE__ */ y("div", {
|
|
57
|
+
className: "flex flex-col items-center justify-center min-h-screen gap-4",
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ v(c, { className: "w-12 h-12 text-destructive" }),
|
|
60
|
+
/* @__PURE__ */ v("h1", {
|
|
61
|
+
className: "text-xl font-semibold",
|
|
62
|
+
children: D("channel.loadConnectionsFailed", "Failed to load connections")
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ v("p", {
|
|
65
|
+
className: "text-sm text-muted-foreground",
|
|
66
|
+
children: C
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ v("button", {
|
|
69
|
+
onClick: () => w(),
|
|
70
|
+
className: "px-4 py-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90",
|
|
71
|
+
children: D("channel.retry", "Retry")
|
|
72
|
+
})
|
|
73
|
+
]
|
|
74
|
+
}) : /* @__PURE__ */ v(i, {
|
|
75
|
+
permission: a.CHANNEL_CONNECTION_READ,
|
|
76
|
+
children: /* @__PURE__ */ y("div", {
|
|
77
|
+
className: "min-h-screen bg-background",
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ v("div", {
|
|
80
|
+
className: "border-b bg-card",
|
|
81
|
+
children: /* @__PURE__ */ v("div", {
|
|
82
|
+
className: "container mx-auto px-6 py-4",
|
|
83
|
+
children: /* @__PURE__ */ y("div", {
|
|
84
|
+
className: "flex items-center justify-between",
|
|
85
|
+
children: [/* @__PURE__ */ y("div", {
|
|
86
|
+
className: "flex items-center gap-4",
|
|
87
|
+
children: [/* @__PURE__ */ v("button", {
|
|
88
|
+
onClick: () => u("./list"),
|
|
89
|
+
className: "p-2 hover:bg-muted rounded-lg transition-colors",
|
|
90
|
+
children: /* @__PURE__ */ v(l, { className: "w-5 h-5" })
|
|
91
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
|
|
92
|
+
className: "text-2xl font-bold",
|
|
93
|
+
children: D("channel.connections", "Connections")
|
|
94
|
+
}), /* @__PURE__ */ y("p", {
|
|
95
|
+
className: "text-sm text-muted-foreground",
|
|
96
|
+
children: [
|
|
97
|
+
P.length,
|
|
98
|
+
" connection",
|
|
99
|
+
P.length === 1 ? "" : "s"
|
|
100
|
+
]
|
|
101
|
+
})] })]
|
|
102
|
+
}), /* @__PURE__ */ y("button", {
|
|
103
|
+
onClick: () => u("./create"),
|
|
104
|
+
className: "px-4 py-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90 transition-colors flex items-center gap-2",
|
|
105
|
+
children: [/* @__PURE__ */ v(p, { className: "w-4 h-4" }), D("channel.newChannel", "New Channel")]
|
|
106
|
+
})]
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
}),
|
|
110
|
+
/* @__PURE__ */ v("div", {
|
|
111
|
+
className: "container mx-auto px-6 py-4",
|
|
112
|
+
children: /* @__PURE__ */ y("div", {
|
|
113
|
+
className: "flex items-center gap-4",
|
|
114
|
+
children: [
|
|
115
|
+
/* @__PURE__ */ y("select", {
|
|
116
|
+
value: A,
|
|
117
|
+
onChange: (e) => j(e.target.value),
|
|
118
|
+
className: "px-4 py-2 rounded-lg border bg-background focus:outline-none focus:ring-2 focus:ring-primary",
|
|
119
|
+
children: [/* @__PURE__ */ v("option", {
|
|
120
|
+
value: "all",
|
|
121
|
+
children: D("channel.allPlatforms", "All Platforms")
|
|
122
|
+
}), N.map((e) => /* @__PURE__ */ v("option", {
|
|
123
|
+
value: e,
|
|
124
|
+
children: e
|
|
125
|
+
}, e))]
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ y("select", {
|
|
128
|
+
value: O,
|
|
129
|
+
onChange: (e) => k(e.target.value),
|
|
130
|
+
className: "px-4 py-2 rounded-lg border bg-background focus:outline-none focus:ring-2 focus:ring-primary",
|
|
131
|
+
children: [
|
|
132
|
+
/* @__PURE__ */ v("option", {
|
|
133
|
+
value: "all",
|
|
134
|
+
children: D("channel.allStatus", "All Status")
|
|
135
|
+
}),
|
|
136
|
+
/* @__PURE__ */ v("option", {
|
|
137
|
+
value: "healthy",
|
|
138
|
+
children: D("channel.healthy", "Healthy")
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ v("option", {
|
|
141
|
+
value: "unhealthy",
|
|
142
|
+
children: D("channel.unhealthy", "Unhealthy")
|
|
143
|
+
})
|
|
144
|
+
]
|
|
145
|
+
}),
|
|
146
|
+
/* @__PURE__ */ v("button", {
|
|
147
|
+
onClick: () => w(),
|
|
148
|
+
className: "p-2 hover:bg-muted rounded-lg transition-colors",
|
|
149
|
+
title: D("channel.refresh", "Refresh"),
|
|
150
|
+
children: /* @__PURE__ */ v(m, { className: "w-5 h-5" })
|
|
151
|
+
})
|
|
152
|
+
]
|
|
153
|
+
})
|
|
154
|
+
}),
|
|
155
|
+
/* @__PURE__ */ v("div", {
|
|
156
|
+
className: "container mx-auto px-6 pb-8",
|
|
157
|
+
children: P.length === 0 ? /* @__PURE__ */ y("div", {
|
|
158
|
+
className: "text-center py-12",
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ v(d, { className: "w-12 h-12 mx-auto text-muted-foreground mb-4" }),
|
|
161
|
+
/* @__PURE__ */ v("h2", {
|
|
162
|
+
className: "text-lg font-semibold mb-2",
|
|
163
|
+
children: D("channel.noConnectionsFound", "No connections found")
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ v("p", {
|
|
166
|
+
className: "text-sm text-muted-foreground mb-4",
|
|
167
|
+
children: g.length === 0 ? D("channel.createChannelFirst", "Create a channel first to add connections") : D("channel.noConnectionsMatchFilter", "No connections match your filters")
|
|
168
|
+
}),
|
|
169
|
+
g.length === 0 ? /* @__PURE__ */ v("button", {
|
|
170
|
+
onClick: () => u("./create"),
|
|
171
|
+
className: "px-4 py-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90",
|
|
172
|
+
children: D("channel.createChannel", "Create Channel")
|
|
173
|
+
}) : /* @__PURE__ */ v("button", {
|
|
174
|
+
onClick: () => {
|
|
175
|
+
k("all"), j("all");
|
|
176
|
+
},
|
|
177
|
+
className: "px-4 py-2 rounded-lg border hover:bg-muted",
|
|
178
|
+
children: D("channel.clearFilters", "Clear Filters")
|
|
179
|
+
})
|
|
180
|
+
]
|
|
181
|
+
}) : /* @__PURE__ */ v("div", {
|
|
182
|
+
className: "border rounded-lg divide-y",
|
|
183
|
+
children: P.map((e) => {
|
|
184
|
+
let t = x[String(e.isHealthy)] || x.false, n = t.icon;
|
|
185
|
+
return /* @__PURE__ */ v("div", {
|
|
186
|
+
className: "p-4 hover:bg-muted/50 transition-colors cursor-pointer",
|
|
187
|
+
onClick: () => u(`./${e.channelId}`),
|
|
188
|
+
children: /* @__PURE__ */ y("div", {
|
|
189
|
+
className: "flex items-center justify-between",
|
|
190
|
+
children: [/* @__PURE__ */ y("div", {
|
|
191
|
+
className: "flex items-center gap-4",
|
|
192
|
+
children: [/* @__PURE__ */ v("div", {
|
|
193
|
+
className: t.color,
|
|
194
|
+
children: /* @__PURE__ */ v(n, { className: "w-5 h-5" })
|
|
195
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
|
|
196
|
+
className: "font-medium",
|
|
197
|
+
children: e.channelName
|
|
198
|
+
}), /* @__PURE__ */ y("p", {
|
|
199
|
+
className: "text-sm text-muted-foreground",
|
|
200
|
+
children: [
|
|
201
|
+
e.platform,
|
|
202
|
+
" • ",
|
|
203
|
+
e.adapterType,
|
|
204
|
+
" • ",
|
|
205
|
+
e.authType
|
|
206
|
+
]
|
|
207
|
+
})] })]
|
|
208
|
+
}), /* @__PURE__ */ y("div", {
|
|
209
|
+
className: "flex items-center gap-4",
|
|
210
|
+
children: [
|
|
211
|
+
/* @__PURE__ */ y("div", {
|
|
212
|
+
className: "text-right",
|
|
213
|
+
children: [/* @__PURE__ */ v("p", {
|
|
214
|
+
className: "text-sm",
|
|
215
|
+
children: e.channelStatus === "ACTIVE" ? /* @__PURE__ */ v("span", {
|
|
216
|
+
className: "text-green-500",
|
|
217
|
+
children: D("channel.activeStatus", "Active")
|
|
218
|
+
}) : e.channelStatus === "INACTIVE" ? /* @__PURE__ */ v("span", {
|
|
219
|
+
className: "text-muted-foreground",
|
|
220
|
+
children: D("channel.inactiveStatus", "Inactive")
|
|
221
|
+
}) : e.channelStatus === "ERROR" ? /* @__PURE__ */ v("span", {
|
|
222
|
+
className: "text-red-500",
|
|
223
|
+
children: D("channel.errorStatus", "Error")
|
|
224
|
+
}) : e.channelStatus === "SUSPENDED" ? /* @__PURE__ */ v("span", {
|
|
225
|
+
className: "text-yellow-500",
|
|
226
|
+
children: D("channel.suspendedStatus", "Suspended")
|
|
227
|
+
}) : e.channelStatus === "ARCHIVED" ? /* @__PURE__ */ v("span", {
|
|
228
|
+
className: "text-muted-foreground",
|
|
229
|
+
children: D("channel.archivedStatus", "Archived")
|
|
230
|
+
}) : /* @__PURE__ */ v("span", {
|
|
231
|
+
className: "text-muted-foreground",
|
|
232
|
+
children: D("channel.inactiveStatus", "Inactive")
|
|
233
|
+
})
|
|
234
|
+
}), e.lastTestedAt && /* @__PURE__ */ y("p", {
|
|
235
|
+
className: "text-xs text-muted-foreground",
|
|
236
|
+
children: ["Last tested: ", new Date(e.lastTestedAt).toLocaleDateString()]
|
|
237
|
+
})]
|
|
238
|
+
}),
|
|
239
|
+
e.needsTokenRefresh && /* @__PURE__ */ v("span", {
|
|
240
|
+
className: "px-2 py-1 text-xs bg-yellow-500/10 text-yellow-500 rounded",
|
|
241
|
+
children: "Token Expires"
|
|
242
|
+
}),
|
|
243
|
+
e.tagAssignments.length > 0 && /* @__PURE__ */ y("div", {
|
|
244
|
+
className: "flex flex-wrap gap-1",
|
|
245
|
+
"aria-label": "Connection tags",
|
|
246
|
+
children: [e.tagAssignments.slice(0, 3).map((e) => /* @__PURE__ */ v(b, {
|
|
247
|
+
id: e.tagId,
|
|
248
|
+
label: e.tagId,
|
|
249
|
+
size: "sm"
|
|
250
|
+
}, e.id)), e.tagAssignments.length > 3 && /* @__PURE__ */ y("span", {
|
|
251
|
+
className: "text-xs text-muted-foreground",
|
|
252
|
+
children: ["+", e.tagAssignments.length - 3]
|
|
253
|
+
})]
|
|
254
|
+
}),
|
|
255
|
+
/* @__PURE__ */ v("button", {
|
|
256
|
+
onClick: (t) => {
|
|
257
|
+
t.stopPropagation(), u(`/channels/${e.channelId}`);
|
|
258
|
+
},
|
|
259
|
+
className: "p-2 hover:bg-muted rounded-lg transition-colors",
|
|
260
|
+
children: /* @__PURE__ */ v(h, { className: "w-4 h-4" })
|
|
261
|
+
})
|
|
262
|
+
]
|
|
263
|
+
})]
|
|
264
|
+
})
|
|
265
|
+
}, e.connectionId);
|
|
266
|
+
})
|
|
267
|
+
})
|
|
268
|
+
})
|
|
269
|
+
]
|
|
270
|
+
})
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
//#endregion
|
|
274
|
+
export { S as ConnectionsListPage };
|
|
275
|
+
|
|
276
|
+
//# sourceMappingURL=ConnectionsListPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionsListPage.js","names":[],"sources":["../../../../../src/channel/modules/channels/pages/ConnectionsListPage.tsx"],"sourcesContent":["/**\n * Connections List Page\n *\n * Displays all connections across channels with their status.\n */\n\nimport { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { TagBadge } from '@burdenoff/fe-libs/tag';\nimport {\n ArrowLeft,\n Plus,\n Loader2,\n AlertCircle,\n CheckCircle2,\n XCircle,\n RefreshCw,\n Settings,\n Link,\n} from 'lucide-react';\nimport { useChannels } from '../../../hooks/useChannels';\nimport { useChannel as useChannelContext } from '../../../providers/ChannelProvider';\nimport { PermissionGuard } from '../../../components/PermissionGuard';\nimport { CHANNEL_PERMISSIONS } from '../../../constants/permissions';\nimport {\n CONNECTION_STATUS_CHANGED_SUBSCRIPTION,\n useChannelSubscription,\n} from '../../../hooks/useChannelSubscription';\n\nconst HEALTH_CONFIG: Record<string, { icon: typeof CheckCircle2; color: string; label: string }> = {\n true: { icon: CheckCircle2, color: 'text-green-500', label: 'Healthy' },\n false: { icon: XCircle, color: 'text-red-500', label: 'Unhealthy' },\n};\n\nexport function ConnectionsListPage() {\n const navigate = useNavigate();\n const { channels, isLoading, error, refetch } = useChannels();\n const { organizationId } = useChannelContext();\n\n // Real-time connection status. Subscribes to `connectionStatusChanged`\n // when the gateway exposes it; otherwise polls every 60s as a\n // conservative fallback when subs are unavailable.\n useChannelSubscription({\n query: CONNECTION_STATUS_CHANGED_SUBSCRIPTION,\n variables: { organizationId },\n operationName: 'ConnectionStatusChanged',\n enabled: Boolean(organizationId),\n onData: () => void refetch(),\n pollFn: refetch,\n pollIntervalMs: 60_000,\n });\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n // Filter state\n const [healthFilter, setHealthFilter] = useState<string>('all');\n const [platformFilter, setPlatformFilter] = useState<string>('all');\n\n // Get all connections from channels\n const connections = channels\n .filter((ch) => ch.connection)\n .map((ch) => ({\n channelId: ch.id,\n channelName: ch.name,\n platform: ch.platform,\n adapterType: ch.adapterType,\n channelStatus: ch.status,\n connectionId: ch.connection!.id,\n isActive: ch.connection!.isActive,\n isHealthy: ch.connection!.isHealthy,\n needsTokenRefresh: ch.connection!.needsTokenRefresh,\n lastTestedAt: ch.connection!.lastTestedAt,\n authType: ch.connection!.authType,\n tagAssignments: ch.connection!.tagAssignments ?? [],\n }));\n\n // Get unique platforms\n const platforms = [...new Set(connections.map((c) => c.platform))];\n\n // Apply filters\n const filteredConnections = connections.filter((conn) => {\n if (healthFilter === 'healthy' && !conn.isHealthy) return false;\n if (healthFilter === 'unhealthy' && conn.isHealthy) return false;\n if (platformFilter !== 'all' && conn.platform !== platformFilter) return false;\n return true;\n });\n\n if (isLoading) {\n return (\n <div className=\"flex items-center justify-center min-h-screen\">\n <Loader2 className=\"w-8 h-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-screen gap-4\">\n <AlertCircle className=\"w-12 h-12 text-destructive\" />\n <h1 className=\"text-xl font-semibold\">\n {tr('channel.loadConnectionsFailed', 'Failed to load connections')}\n </h1>\n <p className=\"text-sm text-muted-foreground\">{error}</p>\n <button\n onClick={() => refetch()}\n className=\"px-4 py-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90\"\n >\n {tr('channel.retry', 'Retry')}\n </button>\n </div>\n );\n }\n\n return (\n <PermissionGuard permission={CHANNEL_PERMISSIONS.CHANNEL_CONNECTION_READ}>\n <div className=\"min-h-screen bg-background\">\n {/* Header */}\n <div className=\"border-b bg-card\">\n <div className=\"container mx-auto px-6 py-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <button\n onClick={() => navigate('./list')}\n className=\"p-2 hover:bg-muted rounded-lg transition-colors\"\n >\n <ArrowLeft className=\"w-5 h-5\" />\n </button>\n <div>\n <h1 className=\"text-2xl font-bold\">{tr('channel.connections', 'Connections')}</h1>\n <p className=\"text-sm text-muted-foreground\">\n {filteredConnections.length} connection\n {filteredConnections.length !== 1 ? 's' : ''}\n </p>\n </div>\n </div>\n <button\n onClick={() => navigate('./create')}\n className=\"px-4 py-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90 transition-colors flex items-center gap-2\"\n >\n <Plus className=\"w-4 h-4\" />\n {tr('channel.newChannel', 'New Channel')}\n </button>\n </div>\n </div>\n </div>\n\n {/* Filters */}\n <div className=\"container mx-auto px-6 py-4\">\n <div className=\"flex items-center gap-4\">\n <select\n value={platformFilter}\n onChange={(e) => setPlatformFilter(e.target.value)}\n className=\"px-4 py-2 rounded-lg border bg-background focus:outline-none focus:ring-2 focus:ring-primary\"\n >\n <option value=\"all\">{tr('channel.allPlatforms', 'All Platforms')}</option>\n {platforms.map((p) => (\n <option key={p} value={p}>\n {p}\n </option>\n ))}\n </select>\n\n <select\n value={healthFilter}\n onChange={(e) => setHealthFilter(e.target.value)}\n className=\"px-4 py-2 rounded-lg border bg-background focus:outline-none focus:ring-2 focus:ring-primary\"\n >\n <option value=\"all\">{tr('channel.allStatus', 'All Status')}</option>\n <option value=\"healthy\">{tr('channel.healthy', 'Healthy')}</option>\n <option value=\"unhealthy\">{tr('channel.unhealthy', 'Unhealthy')}</option>\n </select>\n\n <button\n onClick={() => refetch()}\n className=\"p-2 hover:bg-muted rounded-lg transition-colors\"\n title={tr('channel.refresh', 'Refresh')}\n >\n <RefreshCw className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n\n {/* Connections List */}\n <div className=\"container mx-auto px-6 pb-8\">\n {filteredConnections.length === 0 ? (\n <div className=\"text-center py-12\">\n <Link className=\"w-12 h-12 mx-auto text-muted-foreground mb-4\" />\n <h2 className=\"text-lg font-semibold mb-2\">\n {tr('channel.noConnectionsFound', 'No connections found')}\n </h2>\n <p className=\"text-sm text-muted-foreground mb-4\">\n {channels.length === 0\n ? tr('channel.createChannelFirst', 'Create a channel first to add connections')\n : tr('channel.noConnectionsMatchFilter', 'No connections match your filters')}\n </p>\n {channels.length === 0 ? (\n <button\n onClick={() => navigate('./create')}\n className=\"px-4 py-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90\"\n >\n {tr('channel.createChannel', 'Create Channel')}\n </button>\n ) : (\n <button\n onClick={() => {\n setHealthFilter('all');\n setPlatformFilter('all');\n }}\n className=\"px-4 py-2 rounded-lg border hover:bg-muted\"\n >\n {tr('channel.clearFilters', 'Clear Filters')}\n </button>\n )}\n </div>\n ) : (\n <div className=\"border rounded-lg divide-y\">\n {filteredConnections.map((conn) => {\n const health = HEALTH_CONFIG[String(conn.isHealthy)] || HEALTH_CONFIG.false;\n const HealthIcon = health.icon;\n\n return (\n <div\n key={conn.connectionId}\n className=\"p-4 hover:bg-muted/50 transition-colors cursor-pointer\"\n onClick={() => navigate(`./${conn.channelId}`)}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <div className={health.color}>\n <HealthIcon className=\"w-5 h-5\" />\n </div>\n <div>\n <p className=\"font-medium\">{conn.channelName}</p>\n <p className=\"text-sm text-muted-foreground\">\n {conn.platform} • {conn.adapterType} • {conn.authType}\n </p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <div className=\"text-right\">\n <p className=\"text-sm\">\n {conn.channelStatus === 'ACTIVE' ? (\n <span className=\"text-green-500\">\n {tr('channel.activeStatus', 'Active')}\n </span>\n ) : conn.channelStatus === 'INACTIVE' ? (\n <span className=\"text-muted-foreground\">\n {tr('channel.inactiveStatus', 'Inactive')}\n </span>\n ) : conn.channelStatus === 'ERROR' ? (\n <span className=\"text-red-500\">\n {tr('channel.errorStatus', 'Error')}\n </span>\n ) : conn.channelStatus === 'SUSPENDED' ? (\n <span className=\"text-yellow-500\">\n {tr('channel.suspendedStatus', 'Suspended')}\n </span>\n ) : conn.channelStatus === 'ARCHIVED' ? (\n <span className=\"text-muted-foreground\">\n {tr('channel.archivedStatus', 'Archived')}\n </span>\n ) : (\n <span className=\"text-muted-foreground\">\n {tr('channel.inactiveStatus', 'Inactive')}\n </span>\n )}\n </p>\n {conn.lastTestedAt && (\n <p className=\"text-xs text-muted-foreground\">\n Last tested: {new Date(conn.lastTestedAt).toLocaleDateString()}\n </p>\n )}\n </div>\n\n {conn.needsTokenRefresh && (\n <span className=\"px-2 py-1 text-xs bg-yellow-500/10 text-yellow-500 rounded\">\n Token Expires\n </span>\n )}\n\n {conn.tagAssignments.length > 0 && (\n <div className=\"flex flex-wrap gap-1\" aria-label=\"Connection tags\">\n {conn.tagAssignments.slice(0, 3).map((a) => (\n <TagBadge key={a.id} id={a.tagId} label={a.tagId} size=\"sm\" />\n ))}\n {conn.tagAssignments.length > 3 && (\n <span className=\"text-xs text-muted-foreground\">\n +{conn.tagAssignments.length - 3}\n </span>\n )}\n </div>\n )}\n\n <button\n onClick={(e) => {\n e.stopPropagation();\n navigate(`/channels/${conn.channelId}`);\n }}\n className=\"p-2 hover:bg-muted rounded-lg transition-colors\"\n >\n <Settings className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </PermissionGuard>\n );\n}\n"],"mappings":";;;;;;;;;;;;AA8BA,IAAM,IAA6F;CACjG,MAAM;EAAE,MAAM;EAAc,OAAO;EAAkB,OAAO;EAAW;CACvE,OAAO;EAAE,MAAM;EAAS,OAAO;EAAgB,OAAO;EAAa;CACpE;AAED,SAAgB,IAAsB;CACpC,IAAM,IAAW,GAAa,EACxB,EAAE,aAAU,cAAW,UAAO,eAAY,GAAa,EACvD,EAAE,sBAAmB,GAAmB;AAK9C,GAAuB;EACrB,OAAO;EACP,WAAW,EAAE,mBAAgB;EAC7B,eAAe;EACf,SAAS,EAAQ;EACjB,cAAc,KAAK,GAAS;EAC5B,QAAQ;EACR,gBAAgB;EACjB,CAAC;CACF,IAAM,EAAE,SAAM,GAAS,EACjB,KAAM,GAAa,MAA6B;EACpD,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAI9B,CAAC,GAAc,KAAmB,EAAiB,MAAM,EACzD,CAAC,GAAgB,KAAqB,EAAiB,MAAM,EAG7D,IAAc,EACjB,QAAQ,MAAO,EAAG,WAAW,CAC7B,KAAK,OAAQ;EACZ,WAAW,EAAG;EACd,aAAa,EAAG;EAChB,UAAU,EAAG;EACb,aAAa,EAAG;EAChB,eAAe,EAAG;EAClB,cAAc,EAAG,WAAY;EAC7B,UAAU,EAAG,WAAY;EACzB,WAAW,EAAG,WAAY;EAC1B,mBAAmB,EAAG,WAAY;EAClC,cAAc,EAAG,WAAY;EAC7B,UAAU,EAAG,WAAY;EACzB,gBAAgB,EAAG,WAAY,kBAAkB,EAAE;EACpD,EAAE,EAGC,IAAY,CAAC,GAAG,IAAI,IAAI,EAAY,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC,EAG5D,IAAsB,EAAY,QAAQ,MAG9C,EAFI,MAAiB,aAAa,CAAC,EAAK,aACpC,MAAiB,eAAe,EAAK,aACrC,MAAmB,SAAS,EAAK,aAAa,GAElD;AA4BF,QA1BI,IAEA,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,WAAU,8CAA+C,CAAA;EAC9D,CAAA,GAIN,IAEA,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAa,WAAU,8BAA+B,CAAA;GACtD,kBAAC,MAAD;IAAI,WAAU;cACX,EAAG,iCAAiC,6BAA6B;IAC/D,CAAA;GACL,kBAAC,KAAD;IAAG,WAAU;cAAiC;IAAU,CAAA;GACxD,kBAAC,UAAD;IACE,eAAe,GAAS;IACxB,WAAU;cAET,EAAG,iBAAiB,QAAQ;IACtB,CAAA;GACL;MAKR,kBAAC,GAAD;EAAiB,YAAY,EAAoB;YAC/C,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,UAAD;SACE,eAAe,EAAS,SAAS;SACjC,WAAU;mBAEV,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA;SAC1B,CAAA,EACT,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAsB,EAAG,uBAAuB,cAAc;SAAM,CAAA,EAClF,kBAAC,KAAD;SAAG,WAAU;mBAAb;UACG,EAAoB;UAAO;UAC3B,EAAoB,WAAW,IAAU,KAAN;UAClC;WACA,EAAA,CAAA,CACF;WACN,kBAAC,UAAD;QACE,eAAe,EAAS,WAAW;QACnC,WAAU;kBAFZ,CAIE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,EAAG,sBAAsB,cAAc,CACjC;UACL;;MACF,CAAA;KACF,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,UAAD;QACE,OAAO;QACP,WAAW,MAAM,EAAkB,EAAE,OAAO,MAAM;QAClD,WAAU;kBAHZ,CAKE,kBAAC,UAAD;SAAQ,OAAM;mBAAO,EAAG,wBAAwB,gBAAgB;SAAU,CAAA,EACzE,EAAU,KAAK,MACd,kBAAC,UAAD;SAAgB,OAAO;mBACpB;SACM,EAFI,EAEJ,CACT,CACK;;OAET,kBAAC,UAAD;QACE,OAAO;QACP,WAAW,MAAM,EAAgB,EAAE,OAAO,MAAM;QAChD,WAAU;kBAHZ;SAKE,kBAAC,UAAD;UAAQ,OAAM;oBAAO,EAAG,qBAAqB,aAAa;UAAU,CAAA;SACpE,kBAAC,UAAD;UAAQ,OAAM;oBAAW,EAAG,mBAAmB,UAAU;UAAU,CAAA;SACnE,kBAAC,UAAD;UAAQ,OAAM;oBAAa,EAAG,qBAAqB,YAAY;UAAU,CAAA;SAClE;;OAET,kBAAC,UAAD;QACE,eAAe,GAAS;QACxB,WAAU;QACV,OAAO,EAAG,mBAAmB,UAAU;kBAEvC,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA;QAC1B,CAAA;OACL;;KACF,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAoB,WAAW,IAC9B,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,GAAD,EAAM,WAAU,gDAAiD,CAAA;OACjE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,8BAA8B,uBAAuB;QACtD,CAAA;OACL,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAS,WAAW,IACjB,EAAG,8BAA8B,4CAA4C,GAC7E,EAAG,oCAAoC,oCAAoC;QAC7E,CAAA;OACH,EAAS,WAAW,IACnB,kBAAC,UAAD;QACE,eAAe,EAAS,WAAW;QACnC,WAAU;kBAET,EAAG,yBAAyB,iBAAiB;QACvC,CAAA,GAET,kBAAC,UAAD;QACE,eAAe;AAEb,SADA,EAAgB,MAAM,EACtB,EAAkB,MAAM;;QAE1B,WAAU;kBAET,EAAG,wBAAwB,gBAAgB;QACrC,CAAA;OAEP;UAEN,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAoB,KAAK,MAAS;OACjC,IAAM,IAAS,EAAc,OAAO,EAAK,UAAU,KAAK,EAAc,OAChE,IAAa,EAAO;AAE1B,cACE,kBAAC,OAAD;QAEE,WAAU;QACV,eAAe,EAAS,KAAK,EAAK,YAAY;kBAE9C,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,OAAD;WAAK,WAAW,EAAO;qBACrB,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;WAC9B,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;WAAG,WAAU;qBAAe,EAAK;WAAgB,CAAA,EACjD,kBAAC,KAAD;WAAG,WAAU;qBAAb;YACG,EAAK;YAAS;YAAI,EAAK;YAAY;YAAI,EAAK;YAC3C;aACA,EAAA,CAAA,CACF;aAEN,kBAAC,OAAD;UAAK,WAAU;oBAAf;WACE,kBAAC,OAAD;YAAK,WAAU;sBAAf,CACE,kBAAC,KAAD;aAAG,WAAU;uBACV,EAAK,kBAAkB,WACtB,kBAAC,QAAD;cAAM,WAAU;wBACb,EAAG,wBAAwB,SAAS;cAChC,CAAA,GACL,EAAK,kBAAkB,aACzB,kBAAC,QAAD;cAAM,WAAU;wBACb,EAAG,0BAA0B,WAAW;cACpC,CAAA,GACL,EAAK,kBAAkB,UACzB,kBAAC,QAAD;cAAM,WAAU;wBACb,EAAG,uBAAuB,QAAQ;cAC9B,CAAA,GACL,EAAK,kBAAkB,cACzB,kBAAC,QAAD;cAAM,WAAU;wBACb,EAAG,2BAA2B,YAAY;cACtC,CAAA,GACL,EAAK,kBAAkB,aACzB,kBAAC,QAAD;cAAM,WAAU;wBACb,EAAG,0BAA0B,WAAW;cACpC,CAAA,GAEP,kBAAC,QAAD;cAAM,WAAU;wBACb,EAAG,0BAA0B,WAAW;cACpC,CAAA;aAEP,CAAA,EACH,EAAK,gBACJ,kBAAC,KAAD;aAAG,WAAU;uBAAb,CAA6C,iBAC7B,IAAI,KAAK,EAAK,aAAa,CAAC,oBAAoB,CAC5D;eAEF;;WAEL,EAAK,qBACJ,kBAAC,QAAD;YAAM,WAAU;sBAA6D;YAEtE,CAAA;WAGR,EAAK,eAAe,SAAS,KAC5B,kBAAC,OAAD;YAAK,WAAU;YAAuB,cAAW;sBAAjD,CACG,EAAK,eAAe,MAAM,GAAG,EAAE,CAAC,KAAK,MACpC,kBAAC,GAAD;aAAqB,IAAI,EAAE;aAAO,OAAO,EAAE;aAAO,MAAK;aAAO,EAA/C,EAAE,GAA6C,CAC9D,EACD,EAAK,eAAe,SAAS,KAC5B,kBAAC,QAAD;aAAM,WAAU;uBAAhB,CAAgD,KAC5C,EAAK,eAAe,SAAS,EAC1B;eAEL;;WAGR,kBAAC,UAAD;YACE,UAAU,MAAM;AAEd,aADA,EAAE,iBAAiB,EACnB,EAAS,aAAa,EAAK,YAAY;;YAEzC,WAAU;sBAEV,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;YACzB,CAAA;WACL;YACF;;QACF,EAnFC,EAAK,aAmFN;QAER;MACE,CAAA;KAEJ,CAAA;IACF;;EACU,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create Channel Page
|
|
3
|
+
*
|
|
4
|
+
* Form fields match the exact CreateChannelInput from global-channel-svc:
|
|
5
|
+
* name (required), platform (required), organizationId (auto), description,
|
|
6
|
+
* adapterType, status, priority, platformConfig
|
|
7
|
+
*
|
|
8
|
+
* organizationId is injected from shell context — not shown in form.
|
|
9
|
+
* Credentials belong to createConnection mutation — not part of channel creation.
|
|
10
|
+
*/
|
|
11
|
+
export declare function CreateChannelPage(): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=CreateChannelPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateChannelPage.d.ts","sourceRoot":"","sources":["../../../../../src/channel/modules/channels/pages/CreateChannelPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+IH,wBAAgB,iBAAiB,4CAuWhC"}
|