@replicated/portal-components 0.0.18 → 0.0.20
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/components/metadata/registry.json +2 -2
- package/components/metadata/registry.md +2 -2
- package/dist/actions/change-team.d.mts +10 -0
- package/dist/actions/change-team.d.ts +10 -0
- package/dist/actions/change-team.js +458 -0
- package/dist/actions/change-team.js.map +1 -0
- package/dist/actions/index.d.mts +4 -1
- package/dist/actions/index.d.ts +4 -1
- package/dist/actions/index.js +1232 -430
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/install-actions.d.mts +4 -0
- package/dist/actions/install-actions.d.ts +4 -0
- package/dist/actions/install-actions.js +680 -0
- package/dist/actions/install-actions.js.map +1 -0
- package/dist/actions/service-account.d.mts +4 -0
- package/dist/actions/service-account.d.ts +4 -0
- package/dist/actions/service-account.js +373 -0
- package/dist/actions/service-account.js.map +1 -0
- package/dist/actions/support-bundles.d.mts +4 -0
- package/dist/actions/support-bundles.d.ts +4 -0
- package/dist/actions/support-bundles.js +659 -0
- package/dist/actions/support-bundles.js.map +1 -0
- package/dist/actions/team-settings.d.mts +4 -0
- package/dist/actions/team-settings.d.ts +4 -0
- package/dist/actions/team-settings.js +1040 -0
- package/dist/actions/team-settings.js.map +1 -0
- package/dist/actions/trial-signup.d.mts +24 -0
- package/dist/actions/trial-signup.d.ts +24 -0
- package/dist/actions/trial-signup.js +482 -0
- package/dist/actions/trial-signup.js.map +1 -0
- package/dist/actions/user-settings.d.mts +4 -0
- package/dist/actions/user-settings.d.ts +4 -0
- package/dist/actions/user-settings.js +621 -0
- package/dist/actions/user-settings.js.map +1 -0
- package/dist/airgap-instances.d.mts +4 -1
- package/dist/airgap-instances.d.ts +4 -1
- package/dist/airgap-instances.js +177 -32
- package/dist/airgap-instances.js.map +1 -1
- package/dist/branding-BsMSywts.d.mts +36 -0
- package/dist/branding-BsMSywts.d.ts +36 -0
- package/dist/error-page.js +10 -2
- package/dist/error-page.js.map +1 -1
- package/dist/error.js +10 -2
- package/dist/error.js.map +1 -1
- package/dist/esm/actions/change-team.js +455 -0
- package/dist/esm/actions/change-team.js.map +1 -0
- package/dist/esm/actions/index.js +1200 -428
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/actions/install-actions.js +673 -0
- package/dist/esm/actions/install-actions.js.map +1 -0
- package/dist/esm/actions/service-account.js +371 -0
- package/dist/esm/actions/service-account.js.map +1 -0
- package/dist/esm/actions/support-bundles.js +654 -0
- package/dist/esm/actions/support-bundles.js.map +1 -0
- package/dist/esm/actions/team-settings.js +1026 -0
- package/dist/esm/actions/team-settings.js.map +1 -0
- package/dist/esm/actions/trial-signup.js +478 -0
- package/dist/esm/actions/trial-signup.js.map +1 -0
- package/dist/esm/actions/user-settings.js +615 -0
- package/dist/esm/actions/user-settings.js.map +1 -0
- package/dist/esm/airgap-instances.js +176 -32
- package/dist/esm/airgap-instances.js.map +1 -1
- package/dist/esm/error-page.js +10 -2
- package/dist/esm/error-page.js.map +1 -1
- package/dist/esm/error.js +10 -2
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/helm-install-wizard.js +127 -81
- package/dist/esm/helm-install-wizard.js.map +1 -1
- package/dist/esm/index.js +706 -438
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install-actions.js +40 -5
- package/dist/esm/install-actions.js.map +1 -1
- package/dist/esm/install-card.js +9 -6
- package/dist/esm/install-card.js.map +1 -1
- package/dist/esm/install-targets.js +9 -2
- package/dist/esm/install-targets.js.map +1 -1
- package/dist/esm/instance-card.js +175 -31
- package/dist/esm/instance-card.js.map +1 -1
- package/dist/esm/join-team.js +9 -3
- package/dist/esm/join-team.js.map +1 -1
- package/dist/esm/license-card.js +24 -22
- package/dist/esm/license-card.js.map +1 -1
- package/dist/esm/license-details.js +128 -334
- package/dist/esm/license-details.js.map +1 -1
- package/dist/esm/linux-install-wizard.js +219 -133
- package/dist/esm/linux-install-wizard.js.map +1 -1
- package/dist/esm/login.js +20 -4
- package/dist/esm/login.js.map +1 -1
- package/dist/esm/middleware.js +33 -0
- package/dist/esm/middleware.js.map +1 -0
- package/dist/esm/online-instance-list.js +176 -32
- package/dist/esm/online-instance-list.js.map +1 -1
- package/dist/esm/pending-installations.js +4 -3
- package/dist/esm/pending-installations.js.map +1 -1
- package/dist/esm/release-history-panel.js +27 -14
- package/dist/esm/release-history-panel.js.map +1 -1
- package/dist/esm/saml-callback-client.js +82 -0
- package/dist/esm/saml-callback-client.js.map +1 -0
- package/dist/esm/saml-handlers.js +138 -0
- package/dist/esm/saml-handlers.js.map +1 -0
- package/dist/esm/security-card.js +53 -38
- package/dist/esm/security-card.js.map +1 -1
- package/dist/esm/service-accounts-tab.js +800 -0
- package/dist/esm/service-accounts-tab.js.map +1 -0
- package/dist/esm/support-bundle-collection-card.js +55 -25
- package/dist/esm/support-bundle-collection-card.js.map +1 -1
- package/dist/esm/support-bundles-card.js +10 -5
- package/dist/esm/support-bundles-card.js.map +1 -1
- package/dist/esm/support-card.js +37 -5
- package/dist/esm/support-card.js.map +1 -1
- package/dist/esm/team-selection.js +5 -1
- package/dist/esm/team-selection.js.map +1 -1
- package/dist/esm/team-settings-card.js +5 -2
- package/dist/esm/team-settings-card.js.map +1 -1
- package/dist/esm/team-settings.js +7 -2
- package/dist/esm/team-settings.js.map +1 -1
- package/dist/esm/top-nav-user-menu.js +5 -1
- package/dist/esm/top-nav-user-menu.js.map +1 -1
- package/dist/esm/top-nav.js +175 -62
- package/dist/esm/top-nav.js.map +1 -1
- package/dist/esm/trial-signup.js +256 -0
- package/dist/esm/trial-signup.js.map +1 -0
- package/dist/esm/update-layout.js +175 -62
- package/dist/esm/update-layout.js.map +1 -1
- package/dist/esm/updates-card.js +15 -4
- package/dist/esm/updates-card.js.map +1 -1
- package/dist/esm/upload-support-bundle-modal.js +9 -4
- package/dist/esm/upload-support-bundle-modal.js.map +1 -1
- package/dist/esm/user-settings-card.js +5 -2
- package/dist/esm/user-settings-card.js.map +1 -1
- package/dist/esm/user-settings.js +12 -6
- package/dist/esm/user-settings.js.map +1 -1
- package/dist/esm/utils/index.js +204 -13
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/fetch-license-iTyF7_GY.d.mts +81 -0
- package/dist/fetch-license-iTyF7_GY.d.ts +81 -0
- package/dist/helm-install-wizard.d.mts +12 -3
- package/dist/helm-install-wizard.d.ts +12 -3
- package/dist/helm-install-wizard.js +127 -81
- package/dist/helm-install-wizard.js.map +1 -1
- package/dist/{index-DkjaogsF.d.ts → index-DyzJ0yKD.d.mts} +194 -49
- package/dist/{index-DkjaogsF.d.mts → index-sMbq94M7.d.ts} +194 -49
- package/dist/index.d.mts +9 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.js +726 -438
- package/dist/index.js.map +1 -1
- package/dist/install-actions.d.mts +5 -2
- package/dist/install-actions.d.ts +5 -2
- package/dist/install-actions.js +40 -5
- package/dist/install-actions.js.map +1 -1
- package/dist/install-card.d.mts +2 -2
- package/dist/install-card.d.ts +2 -2
- package/dist/install-card.js +9 -6
- package/dist/install-card.js.map +1 -1
- package/dist/install-targets.js +9 -2
- package/dist/install-targets.js.map +1 -1
- package/dist/instance-card.d.mts +4 -1
- package/dist/instance-card.d.ts +4 -1
- package/dist/instance-card.js +176 -31
- package/dist/instance-card.js.map +1 -1
- package/dist/join-team.js +9 -3
- package/dist/join-team.js.map +1 -1
- package/dist/license-card.d.mts +2 -2
- package/dist/license-card.d.ts +2 -2
- package/dist/license-card.js +24 -22
- package/dist/license-card.js.map +1 -1
- package/dist/license-details.js +128 -334
- package/dist/license-details.js.map +1 -1
- package/dist/linux-install-wizard.d.mts +12 -6
- package/dist/linux-install-wizard.d.ts +12 -6
- package/dist/linux-install-wizard.js +219 -133
- package/dist/linux-install-wizard.js.map +1 -1
- package/dist/login.d.mts +4 -0
- package/dist/login.d.ts +4 -0
- package/dist/login.js +20 -4
- package/dist/login.js.map +1 -1
- package/dist/middleware.d.mts +13 -0
- package/dist/middleware.d.ts +13 -0
- package/dist/middleware.js +35 -0
- package/dist/middleware.js.map +1 -0
- package/dist/online-instance-list.d.mts +4 -1
- package/dist/online-instance-list.d.ts +4 -1
- package/dist/online-instance-list.js +177 -32
- package/dist/online-instance-list.js.map +1 -1
- package/dist/pending-installations.d.mts +8 -3
- package/dist/pending-installations.d.ts +8 -3
- package/dist/pending-installations.js +4 -3
- package/dist/pending-installations.js.map +1 -1
- package/dist/release-history-panel.js +27 -14
- package/dist/release-history-panel.js.map +1 -1
- package/dist/saml-callback-client.d.mts +36 -0
- package/dist/saml-callback-client.d.ts +36 -0
- package/dist/saml-callback-client.js +88 -0
- package/dist/saml-callback-client.js.map +1 -0
- package/dist/saml-handlers.d.mts +50 -0
- package/dist/saml-handlers.d.ts +50 -0
- package/dist/saml-handlers.js +141 -0
- package/dist/saml-handlers.js.map +1 -0
- package/dist/security-card.d.mts +4 -1
- package/dist/security-card.d.ts +4 -1
- package/dist/security-card.js +53 -38
- package/dist/security-card.js.map +1 -1
- package/dist/service-accounts-tab.d.mts +51 -0
- package/dist/service-accounts-tab.d.ts +51 -0
- package/dist/service-accounts-tab.js +802 -0
- package/dist/service-accounts-tab.js.map +1 -0
- package/dist/styles.css +380 -143
- package/dist/support-bundle-collection-card.d.mts +1 -1
- package/dist/support-bundle-collection-card.d.ts +1 -1
- package/dist/support-bundle-collection-card.js +54 -24
- package/dist/support-bundle-collection-card.js.map +1 -1
- package/dist/support-bundles-card.d.mts +5 -2
- package/dist/support-bundles-card.d.ts +5 -2
- package/dist/support-bundles-card.js +10 -5
- package/dist/support-bundles-card.js.map +1 -1
- package/dist/support-card.js +37 -5
- package/dist/support-card.js.map +1 -1
- package/dist/team-selection.js +5 -1
- package/dist/team-selection.js.map +1 -1
- package/dist/team-settings-card.js +5 -2
- package/dist/team-settings-card.js.map +1 -1
- package/dist/team-settings.js +7 -2
- package/dist/team-settings.js.map +1 -1
- package/dist/{top-nav-IRIn66wS.d.ts → top-nav-BUQAGoG1.d.mts} +14 -2
- package/dist/{top-nav-IRIn66wS.d.mts → top-nav-CEqw0KpO.d.ts} +14 -2
- package/dist/top-nav-user-menu.js +5 -1
- package/dist/top-nav-user-menu.js.map +1 -1
- package/dist/top-nav.d.mts +2 -1
- package/dist/top-nav.d.ts +2 -1
- package/dist/top-nav.js +175 -62
- package/dist/top-nav.js.map +1 -1
- package/dist/trial-signup.d.mts +31 -0
- package/dist/trial-signup.d.ts +31 -0
- package/dist/trial-signup.js +258 -0
- package/dist/trial-signup.js.map +1 -0
- package/dist/update-layout.js +175 -62
- package/dist/update-layout.js.map +1 -1
- package/dist/updates-card.js +15 -4
- package/dist/updates-card.js.map +1 -1
- package/dist/upload-support-bundle-modal.js +9 -4
- package/dist/upload-support-bundle-modal.js.map +1 -1
- package/dist/user-settings-card.js +5 -2
- package/dist/user-settings-card.js.map +1 -1
- package/dist/user-settings.js +12 -6
- package/dist/user-settings.js.map +1 -1
- package/dist/utils/index.d.mts +74 -16
- package/dist/utils/index.d.ts +74 -16
- package/dist/utils/index.js +215 -12
- package/dist/utils/index.js.map +1 -1
- package/package.json +67 -1
|
@@ -6,7 +6,40 @@ import { Buffer } from 'buffer';
|
|
|
6
6
|
* Enterprise Portal Components
|
|
7
7
|
* This file is generated by tsup. Do not edit manually.
|
|
8
8
|
*/
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// datadog/tracer.ts
|
|
16
|
+
var tracer_exports = {};
|
|
17
|
+
__export(tracer_exports, {
|
|
18
|
+
default: () => tracer_default
|
|
19
|
+
});
|
|
20
|
+
var tracer_default;
|
|
9
21
|
|
|
22
|
+
// src/utils/constants.ts
|
|
23
|
+
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
24
|
+
function useCopyToClipboard(resetDelay = 2e3) {
|
|
25
|
+
const [copied, setCopied] = useState(false);
|
|
26
|
+
const copy = useCallback(async (text) => {
|
|
27
|
+
if (!navigator.clipboard) {
|
|
28
|
+
console.warn("[useCopyToClipboard] Clipboard API not available");
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
await navigator.clipboard.writeText(text);
|
|
33
|
+
setCopied(true);
|
|
34
|
+
setTimeout(() => setCopied(false), resetDelay);
|
|
35
|
+
return true;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error("[useCopyToClipboard] Failed to copy:", error);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}, [resetDelay]);
|
|
41
|
+
return { copy, copied };
|
|
42
|
+
}
|
|
10
43
|
var LINUX_INSTALL_SERVICE_ACCOUNT_KEY = "linux_install_service_account";
|
|
11
44
|
var LINUX_INSTALL_OPTIONS_KEY = "linux_install_options";
|
|
12
45
|
var navigateTo = (href) => {
|
|
@@ -19,19 +52,12 @@ var navigateTo = (href) => {
|
|
|
19
52
|
console.error("[linux-install-wizard] navigation failed", error);
|
|
20
53
|
}
|
|
21
54
|
};
|
|
22
|
-
var
|
|
23
|
-
try {
|
|
24
|
-
await navigator.clipboard.writeText(text);
|
|
25
|
-
return true;
|
|
26
|
-
} catch {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
var StepIndicator = ({ step }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-3", children: [
|
|
55
|
+
var StepIndicator = ({ step, primaryColor = DEFAULT_SECONDARY_COLOR }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-3", children: [
|
|
31
56
|
/* @__PURE__ */ jsx(
|
|
32
57
|
"div",
|
|
33
58
|
{
|
|
34
|
-
className: `flex h-10 w-10 items-center justify-center rounded-full border-2 ${step > 1 ? "border-gray-900 bg-gray-900 text-white" : "
|
|
59
|
+
className: `flex h-10 w-10 items-center justify-center rounded-full border-2 ${step > 1 ? "border-gray-900 bg-gray-900 text-white" : ""}`,
|
|
60
|
+
style: step === 1 ? { borderColor: primaryColor } : void 0,
|
|
35
61
|
children: step > 1 ? /* @__PURE__ */ jsx(
|
|
36
62
|
"svg",
|
|
37
63
|
{
|
|
@@ -43,7 +69,7 @@ var StepIndicator = ({ step }) => /* @__PURE__ */ jsxs("div", { className: "flex
|
|
|
43
69
|
strokeWidth: "2",
|
|
44
70
|
children: /* @__PURE__ */ jsx("path", { d: "m3.5 8 3 3 6-6" })
|
|
45
71
|
}
|
|
46
|
-
) : /* @__PURE__ */ jsx("span", { className: "h-2.5 w-2.5 rounded-full
|
|
72
|
+
) : /* @__PURE__ */ jsx("span", { className: "h-2.5 w-2.5 rounded-full", style: { backgroundColor: primaryColor } })
|
|
47
73
|
}
|
|
48
74
|
),
|
|
49
75
|
/* @__PURE__ */ jsx("div", { className: `h-0.5 w-12 ${step > 1 ? "bg-gray-900" : "bg-gray-200"}` }),
|
|
@@ -59,13 +85,11 @@ var CodeBlock = ({
|
|
|
59
85
|
command,
|
|
60
86
|
onCopy
|
|
61
87
|
}) => {
|
|
62
|
-
const
|
|
88
|
+
const { copy, copied } = useCopyToClipboard();
|
|
63
89
|
const handleCopy = async () => {
|
|
64
|
-
const success = await
|
|
90
|
+
const success = await copy(command);
|
|
65
91
|
if (success) {
|
|
66
|
-
setCopied(true);
|
|
67
92
|
onCopy?.();
|
|
68
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
69
93
|
}
|
|
70
94
|
};
|
|
71
95
|
return /* @__PURE__ */ jsxs("div", { className: "group relative ml-8 mt-2 min-w-0", children: [
|
|
@@ -87,11 +111,12 @@ var VersionDropdown = ({
|
|
|
87
111
|
selectedRelease,
|
|
88
112
|
onSelect,
|
|
89
113
|
isLoading,
|
|
90
|
-
error
|
|
114
|
+
error,
|
|
115
|
+
primaryColor = DEFAULT_SECONDARY_COLOR
|
|
91
116
|
}) => {
|
|
92
117
|
if (isLoading) {
|
|
93
118
|
return /* @__PURE__ */ jsxs("div", { className: "ml-8 flex items-center gap-2 text-sm text-gray-500", children: [
|
|
94
|
-
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300
|
|
119
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300", style: { borderTopColor: primaryColor } }),
|
|
95
120
|
"Loading versions..."
|
|
96
121
|
] });
|
|
97
122
|
}
|
|
@@ -131,13 +156,14 @@ var InstallationInstructions = ({
|
|
|
131
156
|
instructions,
|
|
132
157
|
isLoading,
|
|
133
158
|
completedSteps = {},
|
|
134
|
-
isProxy = false
|
|
159
|
+
isProxy = false,
|
|
160
|
+
primaryColor = DEFAULT_SECONDARY_COLOR
|
|
135
161
|
}) => {
|
|
136
162
|
if (isLoading && !instructions?.steps?.length) {
|
|
137
163
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
138
164
|
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Installation Instructions" }),
|
|
139
165
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500", children: [
|
|
140
|
-
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300
|
|
166
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300", style: { borderTopColor: primaryColor } }),
|
|
141
167
|
"Loading instructions..."
|
|
142
168
|
] })
|
|
143
169
|
] });
|
|
@@ -147,10 +173,10 @@ var InstallationInstructions = ({
|
|
|
147
173
|
}
|
|
148
174
|
const stepOffset = isProxy ? 3 : 2;
|
|
149
175
|
console.debug("[InstallationInstructions] Rendering with stepOffset", { isProxy, stepOffset, stepsCount: instructions?.steps?.length });
|
|
150
|
-
return /* @__PURE__ */ jsxs("div", { className: `min-w-0 space-y-4 transition-opacity duration-
|
|
176
|
+
return /* @__PURE__ */ jsxs("div", { className: `min-w-0 space-y-4 transition-opacity duration-200 ${isLoading ? "opacity-60" : ""}`, children: [
|
|
151
177
|
/* @__PURE__ */ jsxs("h3", { className: "text-lg font-semibold text-gray-900", children: [
|
|
152
178
|
"Installation Instructions",
|
|
153
|
-
isLoading && /* @__PURE__ */ jsx("span", { className: "ml-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300
|
|
179
|
+
isLoading && /* @__PURE__ */ jsx("span", { className: "ml-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300", style: { borderTopColor: primaryColor } })
|
|
154
180
|
] }),
|
|
155
181
|
/* @__PURE__ */ jsx("ol", { className: "min-w-0 space-y-6 text-sm text-gray-700", children: instructions.steps.map((step, index) => {
|
|
156
182
|
const completableStepNames = ["download_assets", "install"];
|
|
@@ -158,7 +184,7 @@ var InstallationInstructions = ({
|
|
|
158
184
|
const isCompleted = canComplete && completedSteps[step.step_name];
|
|
159
185
|
return /* @__PURE__ */ jsxs("li", { className: "space-y-2", children: [
|
|
160
186
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
161
|
-
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
187
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full font-semibold", style: { backgroundColor: `${primaryColor}20`, color: primaryColor }, children: index + stepOffset }),
|
|
162
188
|
/* @__PURE__ */ jsx("span", { className: "font-medium text-gray-900", children: step.title }),
|
|
163
189
|
canComplete && /* @__PURE__ */ jsx(
|
|
164
190
|
"span",
|
|
@@ -177,13 +203,14 @@ var InstallationInstructions = ({
|
|
|
177
203
|
};
|
|
178
204
|
var LinuxInstallWizard = ({
|
|
179
205
|
token,
|
|
206
|
+
primaryColor = DEFAULT_SECONDARY_COLOR,
|
|
207
|
+
secondaryColor = DEFAULT_SECONDARY_COLOR,
|
|
180
208
|
createServiceAccountAction,
|
|
181
209
|
fetchChannelReleasesAction,
|
|
182
210
|
createInstallOptionsAction,
|
|
183
211
|
getInstallOptionsAction,
|
|
184
212
|
updateInstallOptionsAction,
|
|
185
213
|
onStepChange,
|
|
186
|
-
onNetworkChange,
|
|
187
214
|
onInstallOptionsIdChange,
|
|
188
215
|
initialStep,
|
|
189
216
|
initialNetwork,
|
|
@@ -233,20 +260,39 @@ var LinuxInstallWizard = ({
|
|
|
233
260
|
}
|
|
234
261
|
prevInitialStepRef.current = initialStep;
|
|
235
262
|
}, [initialStep]);
|
|
263
|
+
const hasHydratedNetworkRef = useRef(false);
|
|
236
264
|
useEffect(() => {
|
|
237
|
-
if (initialNetwork !== void 0
|
|
265
|
+
if (!hasHydratedNetworkRef.current && initialNetwork !== void 0) {
|
|
238
266
|
setNetworkAvailability(initialNetwork);
|
|
267
|
+
hasHydratedNetworkRef.current = true;
|
|
239
268
|
}
|
|
240
|
-
}, [initialNetwork
|
|
269
|
+
}, [initialNetwork]);
|
|
270
|
+
const hasMountedRef = useRef(false);
|
|
271
|
+
const prevStepRef = useRef(step);
|
|
272
|
+
const prevInstallOptionsIdRef = useRef(installOptionsId);
|
|
241
273
|
useEffect(() => {
|
|
242
|
-
|
|
243
|
-
}, [
|
|
274
|
+
hasMountedRef.current = true;
|
|
275
|
+
}, []);
|
|
244
276
|
useEffect(() => {
|
|
245
|
-
|
|
246
|
-
|
|
277
|
+
if (!hasMountedRef.current) {
|
|
278
|
+
prevStepRef.current = step;
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
if (step !== prevStepRef.current) {
|
|
282
|
+
onStepChange?.(step);
|
|
283
|
+
prevStepRef.current = step;
|
|
284
|
+
}
|
|
285
|
+
}, [step, onStepChange]);
|
|
247
286
|
useEffect(() => {
|
|
248
|
-
|
|
249
|
-
|
|
287
|
+
if (!hasMountedRef.current) {
|
|
288
|
+
prevInstallOptionsIdRef.current = installOptionsId;
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
if (installOptionsId !== prevInstallOptionsIdRef.current) {
|
|
292
|
+
onInstallOptionsIdChange?.(installOptionsId, "linux");
|
|
293
|
+
prevInstallOptionsIdRef.current = installOptionsId;
|
|
294
|
+
}
|
|
295
|
+
}, [installOptionsId, onInstallOptionsIdChange]);
|
|
250
296
|
useEffect(() => {
|
|
251
297
|
selectedReleaseRef.current = selectedRelease;
|
|
252
298
|
}, [selectedRelease]);
|
|
@@ -292,6 +338,9 @@ var LinuxInstallWizard = ({
|
|
|
292
338
|
if (!selectedRelease || !installOptionsId || !updateInstallOptionsAction) {
|
|
293
339
|
return;
|
|
294
340
|
}
|
|
341
|
+
if (!hasResumedInstallation.current) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
295
344
|
const channelId = selectedRelease.channelId;
|
|
296
345
|
const sequence = selectedRelease.channelSequence;
|
|
297
346
|
if (lastUpdateRef.current.channelId === channelId && lastUpdateRef.current.sequence === sequence) {
|
|
@@ -341,6 +390,9 @@ var LinuxInstallWizard = ({
|
|
|
341
390
|
});
|
|
342
391
|
return;
|
|
343
392
|
}
|
|
393
|
+
if (!hasResumedInstallation.current) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
344
396
|
console.debug("[linux-install-wizard] Proxy URL changed, will regenerate instructions after 500ms", { proxyUrl });
|
|
345
397
|
const timeoutId = setTimeout(async () => {
|
|
346
398
|
const currentRelease = selectedReleaseRef.current;
|
|
@@ -393,6 +445,7 @@ var LinuxInstallWizard = ({
|
|
|
393
445
|
});
|
|
394
446
|
if (result.instance_name) {
|
|
395
447
|
setInstanceName(result.instance_name);
|
|
448
|
+
setOriginalInstanceName(result.instance_name);
|
|
396
449
|
}
|
|
397
450
|
if (result.service_account_id) {
|
|
398
451
|
setServiceAccountId(result.service_account_id);
|
|
@@ -474,6 +527,13 @@ var LinuxInstallWizard = ({
|
|
|
474
527
|
setIsCreatingServiceAccount(true);
|
|
475
528
|
try {
|
|
476
529
|
const trimmedInstanceName = instanceName.trim();
|
|
530
|
+
console.debug("[linux-install-wizard] handleContinue - checking conditions", {
|
|
531
|
+
serviceAccountId: !!serviceAccountId,
|
|
532
|
+
originalInstanceName,
|
|
533
|
+
trimmedInstanceName,
|
|
534
|
+
networkAvailability,
|
|
535
|
+
installOptionsId: !!installOptionsId
|
|
536
|
+
});
|
|
477
537
|
if (serviceAccountId && originalInstanceName === trimmedInstanceName && installOptionsId && updateInstallOptionsAction) {
|
|
478
538
|
console.debug("[linux-install-wizard] Reusing existing service account, updating install options...");
|
|
479
539
|
const firstRelease = embeddedClusterReleases[0];
|
|
@@ -482,6 +542,8 @@ var LinuxInstallWizard = ({
|
|
|
482
542
|
installOptionsId,
|
|
483
543
|
channelId: firstRelease?.channelId,
|
|
484
544
|
channelReleaseSequence: firstRelease?.channelSequence,
|
|
545
|
+
networkAvailability,
|
|
546
|
+
// Pass current network availability
|
|
485
547
|
includeInstructions: true
|
|
486
548
|
});
|
|
487
549
|
if (firstRelease) {
|
|
@@ -494,7 +556,7 @@ var LinuxInstallWizard = ({
|
|
|
494
556
|
if (result.instructions) {
|
|
495
557
|
setInstructions(result.instructions);
|
|
496
558
|
}
|
|
497
|
-
console.debug("[linux-install-wizard] Transitioning to step 2 (
|
|
559
|
+
console.debug("[linux-install-wizard] Transitioning to step 2 (updated install options)");
|
|
498
560
|
setStep(2);
|
|
499
561
|
onStepChange?.(2);
|
|
500
562
|
return;
|
|
@@ -541,11 +603,9 @@ var LinuxInstallWizard = ({
|
|
|
541
603
|
if (installOptionsResult.instructions) {
|
|
542
604
|
setInstructions(installOptionsResult.instructions);
|
|
543
605
|
}
|
|
544
|
-
onInstallOptionsIdChange?.(optionsId, networkAvailability, "linux");
|
|
545
606
|
}
|
|
546
607
|
console.debug("[linux-install-wizard] Transitioning to step 2");
|
|
547
608
|
setStep(2);
|
|
548
|
-
onStepChange?.(2);
|
|
549
609
|
} catch (error) {
|
|
550
610
|
console.error("[linux-install-wizard] Failed to continue", error);
|
|
551
611
|
const errorMessage = error instanceof Error ? error.message : "Failed to continue";
|
|
@@ -576,7 +636,7 @@ var LinuxInstallWizard = ({
|
|
|
576
636
|
console.error("[linux-install-wizard] Failed to save admin console URL", error);
|
|
577
637
|
}
|
|
578
638
|
}
|
|
579
|
-
navigateTo("/
|
|
639
|
+
navigateTo("/updates/checking");
|
|
580
640
|
}, [installOptionsId, updateInstallOptionsAction, adminConsoleUrl, token]);
|
|
581
641
|
const handleReleaseSelect = useCallback((release) => {
|
|
582
642
|
setSelectedRelease(release);
|
|
@@ -584,14 +644,14 @@ var LinuxInstallWizard = ({
|
|
|
584
644
|
const isProxy = networkAvailability === "proxy";
|
|
585
645
|
if (step === 2) {
|
|
586
646
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
|
|
587
|
-
/* @__PURE__ */ jsx(StepIndicator, { step: 2 }),
|
|
647
|
+
/* @__PURE__ */ jsx(StepIndicator, { step: 2, primaryColor }),
|
|
588
648
|
/* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-2xl border border-gray-100 bg-gray-50 p-6", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-6", children: [
|
|
589
649
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
590
650
|
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-gray-900", children: isProxy ? "Linux Single Node Proxy Install" : "Linux Single Node Online Install" }),
|
|
591
651
|
/* @__PURE__ */ jsxs("div", { className: "mt-6 space-y-6", children: [
|
|
592
652
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
593
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2
|
|
594
|
-
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
653
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", style: { color: primaryColor }, children: [
|
|
654
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full font-semibold", style: { backgroundColor: `${primaryColor}20` }, children: "1" }),
|
|
595
655
|
/* @__PURE__ */ jsx("span", { className: "font-medium text-gray-900", children: "Select a version" })
|
|
596
656
|
] }),
|
|
597
657
|
/* @__PURE__ */ jsx(
|
|
@@ -601,13 +661,14 @@ var LinuxInstallWizard = ({
|
|
|
601
661
|
selectedRelease,
|
|
602
662
|
onSelect: handleReleaseSelect,
|
|
603
663
|
isLoading: isLoadingReleases,
|
|
604
|
-
error: releasesError
|
|
664
|
+
error: releasesError,
|
|
665
|
+
primaryColor
|
|
605
666
|
}
|
|
606
667
|
)
|
|
607
668
|
] }),
|
|
608
669
|
isProxy && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
609
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2
|
|
610
|
-
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
670
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", style: { color: primaryColor }, children: [
|
|
671
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full font-semibold", style: { backgroundColor: `${primaryColor}20` }, children: "2" }),
|
|
611
672
|
/* @__PURE__ */ jsx("span", { className: "font-medium text-gray-900", children: "Configure proxy URL" })
|
|
612
673
|
] }),
|
|
613
674
|
/* @__PURE__ */ jsx(
|
|
@@ -626,12 +687,13 @@ var LinuxInstallWizard = ({
|
|
|
626
687
|
instructions,
|
|
627
688
|
isLoading: isLoadingInstructions,
|
|
628
689
|
completedSteps,
|
|
629
|
-
isProxy
|
|
690
|
+
isProxy,
|
|
691
|
+
primaryColor
|
|
630
692
|
}
|
|
631
693
|
),
|
|
632
694
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
633
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2
|
|
634
|
-
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
695
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", style: { color: primaryColor }, children: [
|
|
696
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full font-semibold", style: { backgroundColor: `${primaryColor}20` }, children: (instructions?.steps?.length ?? 0) + (isProxy ? 3 : 2) }),
|
|
635
697
|
/* @__PURE__ */ jsx("span", { className: "font-medium text-gray-900", children: "(Optional) Add the Admin Console URL" })
|
|
636
698
|
] }),
|
|
637
699
|
/* @__PURE__ */ jsx(
|
|
@@ -663,7 +725,8 @@ var LinuxInstallWizard = ({
|
|
|
663
725
|
{
|
|
664
726
|
type: "button",
|
|
665
727
|
onClick: handleFinish,
|
|
666
|
-
className: "rounded-xl
|
|
728
|
+
className: "rounded-xl px-4 py-2 font-medium text-white transition hover:brightness-90",
|
|
729
|
+
style: { backgroundColor: primaryColor },
|
|
667
730
|
children: "Finish"
|
|
668
731
|
}
|
|
669
732
|
)
|
|
@@ -674,7 +737,8 @@ var LinuxInstallWizard = ({
|
|
|
674
737
|
/* @__PURE__ */ jsx(
|
|
675
738
|
"a",
|
|
676
739
|
{
|
|
677
|
-
className: "
|
|
740
|
+
className: "hover:opacity-80",
|
|
741
|
+
style: { color: secondaryColor },
|
|
678
742
|
href: supportPortalLink,
|
|
679
743
|
target: "_blank",
|
|
680
744
|
rel: "noopener noreferrer",
|
|
@@ -686,7 +750,7 @@ var LinuxInstallWizard = ({
|
|
|
686
750
|
] });
|
|
687
751
|
}
|
|
688
752
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
|
|
689
|
-
/* @__PURE__ */ jsx(StepIndicator, { step: 1 }),
|
|
753
|
+
/* @__PURE__ */ jsx(StepIndicator, { step: 1, primaryColor }),
|
|
690
754
|
/* @__PURE__ */ jsxs("div", { className: "rounded-2xl border border-gray-100 bg-gray-50 p-6", children: [
|
|
691
755
|
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
692
756
|
/* @__PURE__ */ jsxs("label", { className: "block text-sm font-medium text-gray-700", children: [
|
|
@@ -755,7 +819,8 @@ var LinuxInstallWizard = ({
|
|
|
755
819
|
type: "button",
|
|
756
820
|
onClick: handleContinue,
|
|
757
821
|
disabled: isCreatingServiceAccount,
|
|
758
|
-
className: "rounded-xl
|
|
822
|
+
className: "rounded-xl px-4 py-2 font-medium text-white transition-opacity duration-200 hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50",
|
|
823
|
+
style: { backgroundColor: primaryColor },
|
|
759
824
|
children: isCreatingServiceAccount ? "Creating..." : "Continue"
|
|
760
825
|
}
|
|
761
826
|
)
|
|
@@ -788,8 +853,17 @@ async function handle401() {
|
|
|
788
853
|
const { redirect } = await import('next/navigation');
|
|
789
854
|
return redirect("/?expired=1");
|
|
790
855
|
}
|
|
856
|
+
function isErrorPage(url) {
|
|
857
|
+
try {
|
|
858
|
+
const urlObj = new URL(url);
|
|
859
|
+
return urlObj.pathname === "/error";
|
|
860
|
+
} catch {
|
|
861
|
+
return url === "/error" || url.startsWith("/error?");
|
|
862
|
+
}
|
|
863
|
+
}
|
|
791
864
|
async function handleServerError(statusCode) {
|
|
792
865
|
const { redirect } = await import('next/navigation');
|
|
866
|
+
const { cookies } = await import('next/headers');
|
|
793
867
|
let sourceUrl;
|
|
794
868
|
try {
|
|
795
869
|
const { headers } = await import('next/headers');
|
|
@@ -797,12 +871,20 @@ async function handleServerError(statusCode) {
|
|
|
797
871
|
const referer = headersList.get("referer");
|
|
798
872
|
const host = headersList.get("host");
|
|
799
873
|
const pathname = headersList.get("x-invoke-path") || headersList.get("x-forwarded-path");
|
|
800
|
-
if (referer) {
|
|
874
|
+
if (referer && !isErrorPage(referer)) {
|
|
801
875
|
sourceUrl = referer;
|
|
802
876
|
} else if (host && pathname) {
|
|
803
877
|
const protocol = headersList.get("x-forwarded-proto") || "https";
|
|
804
878
|
sourceUrl = `${protocol}://${host}${pathname}`;
|
|
805
879
|
}
|
|
880
|
+
if (!sourceUrl || isErrorPage(sourceUrl)) {
|
|
881
|
+
const cookieStore = await cookies();
|
|
882
|
+
const preservedSource = cookieStore.get("portal_error_source");
|
|
883
|
+
if (preservedSource?.value) {
|
|
884
|
+
sourceUrl = decodeURIComponent(preservedSource.value);
|
|
885
|
+
cookieStore.delete("portal_error_source");
|
|
886
|
+
}
|
|
887
|
+
}
|
|
806
888
|
} catch (error) {
|
|
807
889
|
console.debug("[portal-components] Could not determine source URL", error);
|
|
808
890
|
}
|
|
@@ -813,90 +895,6 @@ async function handleServerError(statusCode) {
|
|
|
813
895
|
return redirect(`/error?${params.toString()}`);
|
|
814
896
|
}
|
|
815
897
|
|
|
816
|
-
// src/actions/index.ts
|
|
817
|
-
var getApiOrigin = () => {
|
|
818
|
-
return (process.env.REPLICATED_APP_ORIGIN || "https://replicated.app").replace(/\/+$/, "");
|
|
819
|
-
};
|
|
820
|
-
var defineServerAction = (definition) => definition;
|
|
821
|
-
var createServiceAccount = defineServerAction({
|
|
822
|
-
id: "service-account/create",
|
|
823
|
-
description: "Creates a service account for installing applications",
|
|
824
|
-
visibility: "customer",
|
|
825
|
-
tags: ["service-account", "install"],
|
|
826
|
-
async run({ token, name }) {
|
|
827
|
-
if (!token || typeof token !== "string") {
|
|
828
|
-
throw new Error("Service account creation requires a session token");
|
|
829
|
-
}
|
|
830
|
-
if (!name || typeof name !== "string" || !name.trim()) {
|
|
831
|
-
throw new Error("Service account name is required");
|
|
832
|
-
}
|
|
833
|
-
const endpoint = `${getApiOrigin()}/enterprise-portal/team/service-accounts`;
|
|
834
|
-
if (process.env.NODE_ENV !== "production") {
|
|
835
|
-
console.debug(
|
|
836
|
-
"[portal-components] creating service account via %s (Enterprise Portal API)",
|
|
837
|
-
endpoint
|
|
838
|
-
);
|
|
839
|
-
}
|
|
840
|
-
const response = await authenticatedFetch(endpoint, {
|
|
841
|
-
method: "POST",
|
|
842
|
-
token,
|
|
843
|
-
headers: {
|
|
844
|
-
"content-type": "application/json"
|
|
845
|
-
},
|
|
846
|
-
body: JSON.stringify({ account_name: name.trim() })
|
|
847
|
-
});
|
|
848
|
-
if (!response.ok) {
|
|
849
|
-
const errorText = await response.text();
|
|
850
|
-
throw new Error(
|
|
851
|
-
`Service account creation failed (${response.status} ${response.statusText}): ${errorText}`
|
|
852
|
-
);
|
|
853
|
-
}
|
|
854
|
-
const data = await response.json();
|
|
855
|
-
return data;
|
|
856
|
-
}
|
|
857
|
-
});
|
|
858
|
-
var fetchCustomBrandingImpl = async () => {
|
|
859
|
-
const appSlug = process.env.PORTAL_APP_SLUG;
|
|
860
|
-
if (!appSlug) {
|
|
861
|
-
throw new Error("PORTAL_APP_SLUG is not configured");
|
|
862
|
-
}
|
|
863
|
-
const url = `${getApiOrigin()}/enterprise-portal/public/branding?app_slug=${encodeURIComponent(
|
|
864
|
-
appSlug
|
|
865
|
-
)}`;
|
|
866
|
-
if (process.env.NODE_ENV !== "production") {
|
|
867
|
-
console.debug(
|
|
868
|
-
"[portal-components] fetching custom branding via %s (Enterprise Portal API)",
|
|
869
|
-
url
|
|
870
|
-
);
|
|
871
|
-
}
|
|
872
|
-
const response = await fetch(url, {
|
|
873
|
-
headers: {
|
|
874
|
-
accept: "application/json"
|
|
875
|
-
}
|
|
876
|
-
});
|
|
877
|
-
if (!response.ok) {
|
|
878
|
-
throw new Error(
|
|
879
|
-
`Custom branding request failed (${response.status} ${response.statusText})`
|
|
880
|
-
);
|
|
881
|
-
}
|
|
882
|
-
const payload = await response.json();
|
|
883
|
-
const brandingObject = {
|
|
884
|
-
logo: payload.logoUrl,
|
|
885
|
-
title: payload.appName,
|
|
886
|
-
customColor1: payload.primaryColor,
|
|
887
|
-
customColor2: payload.secondaryColor,
|
|
888
|
-
favicon: payload.faviconUrl,
|
|
889
|
-
supportPortalLink: payload.supportPortalLink || ""
|
|
890
|
-
};
|
|
891
|
-
const brandingData = Buffer.from(JSON.stringify(brandingObject)).toString("base64");
|
|
892
|
-
return {
|
|
893
|
-
brandingData,
|
|
894
|
-
documentation: null
|
|
895
|
-
// Documentation not included in new API's public endpoint
|
|
896
|
-
};
|
|
897
|
-
};
|
|
898
|
-
cache(fetchCustomBrandingImpl);
|
|
899
|
-
|
|
900
898
|
// src/actions/install.ts
|
|
901
899
|
async function fetchChannelReleases(input, context) {
|
|
902
900
|
const { token, channelId } = input;
|
|
@@ -1133,6 +1131,94 @@ function filterEmbeddedClusterReleases(releases) {
|
|
|
1133
1131
|
);
|
|
1134
1132
|
}
|
|
1135
1133
|
|
|
1134
|
+
// src/actions/index.ts
|
|
1135
|
+
var getApiOrigin = () => {
|
|
1136
|
+
return (process.env.REPLICATED_APP_ORIGIN || "https://replicated.app").replace(/\/+$/, "");
|
|
1137
|
+
};
|
|
1138
|
+
var defineServerAction = (definition) => definition;
|
|
1139
|
+
var createServiceAccount = defineServerAction({
|
|
1140
|
+
id: "service-account/create",
|
|
1141
|
+
description: "Creates a service account for installing applications",
|
|
1142
|
+
visibility: "customer",
|
|
1143
|
+
tags: ["service-account", "install"],
|
|
1144
|
+
async run({ token, name }) {
|
|
1145
|
+
if (!token || typeof token !== "string") {
|
|
1146
|
+
throw new Error("Service account creation requires a session token");
|
|
1147
|
+
}
|
|
1148
|
+
if (!name || typeof name !== "string" || !name.trim()) {
|
|
1149
|
+
throw new Error("Service account name is required");
|
|
1150
|
+
}
|
|
1151
|
+
const endpoint = `${getApiOrigin()}/enterprise-portal/team/service-accounts`;
|
|
1152
|
+
if (process.env.NODE_ENV !== "production") {
|
|
1153
|
+
console.debug(
|
|
1154
|
+
"[portal-components] creating service account via %s (Enterprise Portal API)",
|
|
1155
|
+
endpoint
|
|
1156
|
+
);
|
|
1157
|
+
}
|
|
1158
|
+
const response = await authenticatedFetch(endpoint, {
|
|
1159
|
+
method: "POST",
|
|
1160
|
+
token,
|
|
1161
|
+
headers: {
|
|
1162
|
+
"content-type": "application/json"
|
|
1163
|
+
},
|
|
1164
|
+
body: JSON.stringify({ account_name: name.trim() })
|
|
1165
|
+
});
|
|
1166
|
+
if (!response.ok) {
|
|
1167
|
+
const errorText = await response.text();
|
|
1168
|
+
throw new Error(
|
|
1169
|
+
`Service account creation failed (${response.status} ${response.statusText}): ${errorText}`
|
|
1170
|
+
);
|
|
1171
|
+
}
|
|
1172
|
+
const data = await response.json();
|
|
1173
|
+
return data;
|
|
1174
|
+
}
|
|
1175
|
+
});
|
|
1176
|
+
var fetchCustomBrandingImpl = async () => {
|
|
1177
|
+
const appSlug = process.env.PORTAL_APP_SLUG;
|
|
1178
|
+
if (!appSlug) {
|
|
1179
|
+
throw new Error("PORTAL_APP_SLUG is not configured");
|
|
1180
|
+
}
|
|
1181
|
+
const url = `${getApiOrigin()}/enterprise-portal/public/branding?app_slug=${encodeURIComponent(
|
|
1182
|
+
appSlug
|
|
1183
|
+
)}`;
|
|
1184
|
+
if (process.env.NODE_ENV !== "production") {
|
|
1185
|
+
console.debug(
|
|
1186
|
+
"[portal-components] fetching custom branding via %s (Enterprise Portal API)",
|
|
1187
|
+
url
|
|
1188
|
+
);
|
|
1189
|
+
}
|
|
1190
|
+
const response = await fetch(url, {
|
|
1191
|
+
headers: {
|
|
1192
|
+
accept: "application/json"
|
|
1193
|
+
}
|
|
1194
|
+
});
|
|
1195
|
+
if (!response.ok) {
|
|
1196
|
+
throw new Error(
|
|
1197
|
+
`Custom branding request failed (${response.status} ${response.statusText})`
|
|
1198
|
+
);
|
|
1199
|
+
}
|
|
1200
|
+
const payload = await response.json();
|
|
1201
|
+
const brandingObject = {
|
|
1202
|
+
logo: payload.logoUrl,
|
|
1203
|
+
title: payload.title,
|
|
1204
|
+
primaryColor: payload.primaryColor,
|
|
1205
|
+
secondaryColor: payload.secondaryColor,
|
|
1206
|
+
favicon: payload.faviconUrl,
|
|
1207
|
+
supportPortalLink: payload.supportPortalLink || "",
|
|
1208
|
+
background: payload.background,
|
|
1209
|
+
backgroundImage: payload.backgroundImage,
|
|
1210
|
+
customColor1: payload.customColor1,
|
|
1211
|
+
customColor2: payload.customColor2
|
|
1212
|
+
};
|
|
1213
|
+
const brandingData = Buffer.from(JSON.stringify(brandingObject)).toString("base64");
|
|
1214
|
+
return {
|
|
1215
|
+
brandingData,
|
|
1216
|
+
documentation: null
|
|
1217
|
+
// Documentation not included in new API's public endpoint
|
|
1218
|
+
};
|
|
1219
|
+
};
|
|
1220
|
+
cache(fetchCustomBrandingImpl);
|
|
1221
|
+
|
|
1136
1222
|
export { LINUX_INSTALL_OPTIONS_KEY, LINUX_INSTALL_SERVICE_ACCOUNT_KEY, LinuxInstallWizard, createInstallOptions, createServiceAccount, fetchChannelReleases, filterEmbeddedClusterReleases, getInstallOptions, updateInstallOptions };
|
|
1137
1223
|
//# sourceMappingURL=linux-install-wizard.js.map
|
|
1138
1224
|
//# sourceMappingURL=linux-install-wizard.js.map
|