@replicated/portal-components 0.0.19 → 0.0.21
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.js +66 -7
- package/dist/actions/change-team.js.map +1 -1
- package/dist/actions/index.d.mts +3 -1
- package/dist/actions/index.d.ts +3 -1
- package/dist/actions/index.js +182 -465
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/install-actions.d.mts +3 -1
- package/dist/actions/install-actions.d.ts +3 -1
- package/dist/actions/install-actions.js +58 -5
- package/dist/actions/install-actions.js.map +1 -1
- package/dist/actions/service-account.d.mts +3 -1
- package/dist/actions/service-account.d.ts +3 -1
- package/dist/actions/service-account.js +58 -5
- package/dist/actions/service-account.js.map +1 -1
- package/dist/actions/support-bundles.d.mts +3 -1
- package/dist/actions/support-bundles.d.ts +3 -1
- package/dist/actions/support-bundles.js +58 -5
- package/dist/actions/support-bundles.js.map +1 -1
- package/dist/actions/team-settings.d.mts +3 -1
- package/dist/actions/team-settings.d.ts +3 -1
- package/dist/actions/team-settings.js +91 -27
- package/dist/actions/team-settings.js.map +1 -1
- 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 +3 -1
- package/dist/actions/user-settings.d.ts +3 -1
- package/dist/actions/user-settings.js +58 -5
- package/dist/actions/user-settings.js.map +1 -1
- package/dist/airgap-instances.d.mts +3 -1
- package/dist/airgap-instances.d.ts +3 -1
- package/dist/airgap-instances.js +41 -112
- 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 +66 -7
- package/dist/esm/actions/change-team.js.map +1 -1
- package/dist/esm/actions/index.js +181 -462
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/actions/install-actions.js +58 -5
- package/dist/esm/actions/install-actions.js.map +1 -1
- package/dist/esm/actions/service-account.js +58 -5
- package/dist/esm/actions/service-account.js.map +1 -1
- package/dist/esm/actions/support-bundles.js +58 -5
- package/dist/esm/actions/support-bundles.js.map +1 -1
- package/dist/esm/actions/team-settings.js +91 -27
- package/dist/esm/actions/team-settings.js.map +1 -1
- 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 +58 -5
- package/dist/esm/actions/user-settings.js.map +1 -1
- package/dist/esm/airgap-instances.js +40 -112
- 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 +118 -79
- 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 +39 -111
- 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 +95 -41
- 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 +40 -112
- package/dist/esm/online-instance-list.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 +48 -24
- 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 +11 -3
- package/dist/helm-install-wizard.d.ts +11 -3
- package/dist/helm-install-wizard.js +118 -79
- package/dist/helm-install-wizard.js.map +1 -1
- package/dist/{index-BAiVrSSR.d.mts → index-DyzJ0yKD.d.mts} +48 -50
- package/dist/{index-DWt-N5od.d.ts → index-sMbq94M7.d.ts} +48 -50
- package/dist/index.d.mts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +726 -438
- package/dist/index.js.map +1 -1
- package/dist/install-actions.d.mts +4 -2
- package/dist/install-actions.d.ts +4 -2
- package/dist/install-actions.js +40 -5
- package/dist/install-actions.js.map +1 -1
- package/dist/install-card.d.mts +2 -3
- package/dist/install-card.d.ts +2 -3
- 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 +3 -1
- package/dist/instance-card.d.ts +3 -1
- package/dist/instance-card.js +40 -111
- 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 -3
- package/dist/license-card.d.ts +2 -3
- 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 +9 -3
- package/dist/linux-install-wizard.d.ts +9 -3
- package/dist/linux-install-wizard.js +95 -41
- 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 +3 -1
- package/dist/online-instance-list.d.ts +3 -1
- package/dist/online-instance-list.js +41 -112
- package/dist/online-instance-list.js.map +1 -1
- package/dist/pending-installations.d.mts +3 -1
- package/dist/pending-installations.d.ts +3 -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 +3 -1
- package/dist/security-card.d.ts +3 -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 +375 -127
- 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 +47 -23
- package/dist/support-bundle-collection-card.js.map +1 -1
- package/dist/support-bundles-card.d.mts +4 -2
- package/dist/support-bundles-card.d.ts +4 -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 +37 -2
|
@@ -8,7 +8,40 @@ var buffer = require('buffer');
|
|
|
8
8
|
* Enterprise Portal Components
|
|
9
9
|
* This file is generated by tsup. Do not edit manually.
|
|
10
10
|
*/
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// datadog/tracer.ts
|
|
18
|
+
var tracer_exports = {};
|
|
19
|
+
__export(tracer_exports, {
|
|
20
|
+
default: () => tracer_default
|
|
21
|
+
});
|
|
22
|
+
var tracer_default;
|
|
11
23
|
|
|
24
|
+
// src/utils/constants.ts
|
|
25
|
+
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
26
|
+
function useCopyToClipboard(resetDelay = 2e3) {
|
|
27
|
+
const [copied, setCopied] = react.useState(false);
|
|
28
|
+
const copy = react.useCallback(async (text) => {
|
|
29
|
+
if (!navigator.clipboard) {
|
|
30
|
+
console.warn("[useCopyToClipboard] Clipboard API not available");
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
await navigator.clipboard.writeText(text);
|
|
35
|
+
setCopied(true);
|
|
36
|
+
setTimeout(() => setCopied(false), resetDelay);
|
|
37
|
+
return true;
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error("[useCopyToClipboard] Failed to copy:", error);
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}, [resetDelay]);
|
|
43
|
+
return { copy, copied };
|
|
44
|
+
}
|
|
12
45
|
var navigateTo = (href) => {
|
|
13
46
|
if (typeof window !== "undefined") {
|
|
14
47
|
window.location.assign(href);
|
|
@@ -24,26 +57,12 @@ var K8S_DISTRIBUTIONS = [
|
|
|
24
57
|
{ value: "eks", label: "Amazon EKS" },
|
|
25
58
|
{ value: "gke", label: "Google GKE" }
|
|
26
59
|
];
|
|
27
|
-
var copyToClipboard = async (text) => {
|
|
28
|
-
try {
|
|
29
|
-
await navigator.clipboard.writeText(text);
|
|
30
|
-
return true;
|
|
31
|
-
} catch {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
60
|
var CodeBlock = ({
|
|
36
61
|
command,
|
|
37
62
|
className = ""
|
|
38
63
|
}) => {
|
|
39
|
-
const
|
|
40
|
-
const handleCopy =
|
|
41
|
-
const success = await copyToClipboard(command);
|
|
42
|
-
if (success) {
|
|
43
|
-
setCopied(true);
|
|
44
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
64
|
+
const { copy, copied } = useCopyToClipboard();
|
|
65
|
+
const handleCopy = () => copy(command);
|
|
47
66
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `group relative min-w-0 ${className}`, children: [
|
|
48
67
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "overflow-x-auto rounded-lg bg-gray-900 p-4 text-sm text-gray-100", children: /* @__PURE__ */ jsxRuntime.jsx("code", { className: "block", children: command }) }),
|
|
49
68
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -58,11 +77,12 @@ var CodeBlock = ({
|
|
|
58
77
|
)
|
|
59
78
|
] });
|
|
60
79
|
};
|
|
61
|
-
var StepIndicator = ({ step }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-3", children: [
|
|
80
|
+
var StepIndicator = ({ step, primaryColor = DEFAULT_SECONDARY_COLOR }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-3", children: [
|
|
62
81
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
63
82
|
"div",
|
|
64
83
|
{
|
|
65
|
-
className: `flex h-10 w-10 items-center justify-center rounded-full border-2 ${step > 1 ? "border-gray-900 bg-gray-900 text-white" : "
|
|
84
|
+
className: `flex h-10 w-10 items-center justify-center rounded-full border-2 ${step > 1 ? "border-gray-900 bg-gray-900 text-white" : ""}`,
|
|
85
|
+
style: step === 1 ? { borderColor: primaryColor } : void 0,
|
|
66
86
|
children: step > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
67
87
|
"svg",
|
|
68
88
|
{
|
|
@@ -74,7 +94,7 @@ var StepIndicator = ({ step }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { class
|
|
|
74
94
|
strokeWidth: "2",
|
|
75
95
|
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m3.5 8 3 3 6-6" })
|
|
76
96
|
}
|
|
77
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-2.5 w-2.5 rounded-full
|
|
97
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-2.5 w-2.5 rounded-full", style: { backgroundColor: primaryColor } })
|
|
78
98
|
}
|
|
79
99
|
),
|
|
80
100
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-0.5 w-12 ${step > 1 ? "bg-gray-900" : "bg-gray-200"}` }),
|
|
@@ -92,11 +112,12 @@ var VersionDropdown = ({
|
|
|
92
112
|
onSelect,
|
|
93
113
|
isLoading,
|
|
94
114
|
isLoadingInstructions,
|
|
95
|
-
error
|
|
115
|
+
error,
|
|
116
|
+
primaryColor = DEFAULT_SECONDARY_COLOR
|
|
96
117
|
}) => {
|
|
97
118
|
if (isLoading) {
|
|
98
119
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-8 flex items-center gap-2 text-sm text-gray-500", children: [
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300", style: { borderTopColor: primaryColor } }),
|
|
100
121
|
"Loading versions..."
|
|
101
122
|
] });
|
|
102
123
|
}
|
|
@@ -112,7 +133,7 @@ var VersionDropdown = ({
|
|
|
112
133
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-8 space-y-2", children: [
|
|
113
134
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-600", children: [
|
|
114
135
|
"App Version",
|
|
115
|
-
isLoadingInstructions && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300
|
|
136
|
+
isLoadingInstructions && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300", style: { borderTopColor: primaryColor } })
|
|
116
137
|
] }),
|
|
117
138
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
118
139
|
"select",
|
|
@@ -165,11 +186,12 @@ var InstallationInstructions = ({
|
|
|
165
186
|
isLoading,
|
|
166
187
|
completedSteps = {},
|
|
167
188
|
registryAccess = "online",
|
|
168
|
-
networkAvailability = "online"
|
|
189
|
+
networkAvailability = "online",
|
|
190
|
+
primaryColor = DEFAULT_SECONDARY_COLOR
|
|
169
191
|
}) => {
|
|
170
192
|
if (isLoading && !instructions?.steps?.length) {
|
|
171
193
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500", children: [
|
|
172
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300
|
|
194
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-2 border-gray-300", style: { borderTopColor: primaryColor } }),
|
|
173
195
|
"Loading instructions..."
|
|
174
196
|
] }) });
|
|
175
197
|
}
|
|
@@ -178,13 +200,13 @@ var InstallationInstructions = ({
|
|
|
178
200
|
}
|
|
179
201
|
const completableStepNames = ["export_credentials", "install_chart"];
|
|
180
202
|
const stepOffset = networkAvailability === "airgap" ? 3 : 2;
|
|
181
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `min-w-0 space-y-4 transition-opacity duration-
|
|
203
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `min-w-0 space-y-4 transition-opacity duration-200 ${isLoading ? "opacity-60" : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "min-w-0 space-y-6 text-sm text-gray-700", children: instructions.steps.map((step, index) => {
|
|
182
204
|
const canComplete = step.maybe_completed || completableStepNames.includes(step.step_name);
|
|
183
205
|
const isCompleted = canComplete && completedSteps[step.step_name];
|
|
184
206
|
const isPartialInstallChart = registryAccess === "partial" && step.step_name === "install_chart";
|
|
185
207
|
return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "space-y-2", children: [
|
|
186
208
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
187
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
209
|
+
/* @__PURE__ */ jsxRuntime.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 }),
|
|
188
210
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-gray-900", children: step.title }),
|
|
189
211
|
canComplete && /* @__PURE__ */ jsxRuntime.jsx(
|
|
190
212
|
"span",
|
|
@@ -218,6 +240,8 @@ var InstallationInstructions = ({
|
|
|
218
240
|
};
|
|
219
241
|
var HelmInstallWizard = ({
|
|
220
242
|
token,
|
|
243
|
+
primaryColor = DEFAULT_SECONDARY_COLOR,
|
|
244
|
+
secondaryColor = DEFAULT_SECONDARY_COLOR,
|
|
221
245
|
createServiceAccountAction,
|
|
222
246
|
fetchChannelReleasesAction,
|
|
223
247
|
createInstallOptionsAction,
|
|
@@ -229,7 +253,8 @@ var HelmInstallWizard = ({
|
|
|
229
253
|
initialInstallOptionsId,
|
|
230
254
|
initialInstallOptionsData,
|
|
231
255
|
initialChannelReleases,
|
|
232
|
-
supportPortalLink
|
|
256
|
+
supportPortalLink,
|
|
257
|
+
isHelmAirgapEnabled = false
|
|
233
258
|
}) => {
|
|
234
259
|
const [step, setStep] = react.useState(initialStep ?? 1);
|
|
235
260
|
const [instanceName, setInstanceName] = react.useState(initialInstallOptionsData?.instance_name ?? "");
|
|
@@ -263,7 +288,6 @@ var HelmInstallWizard = ({
|
|
|
263
288
|
const [isLoadingInstructions, setIsLoadingInstructions] = react.useState(false);
|
|
264
289
|
const [inputRegistryHostname, setInputRegistryHostname] = react.useState("");
|
|
265
290
|
const [privateRegistryHostname, setPrivateRegistryHostname] = react.useState("");
|
|
266
|
-
const registryDebounceRef = react.useRef(null);
|
|
267
291
|
const [completedSteps, setCompletedSteps] = react.useState({});
|
|
268
292
|
const hasInitializedFromProps = react.useRef(!!initialInstallOptionsData);
|
|
269
293
|
react.useEffect(() => {
|
|
@@ -293,6 +317,7 @@ var HelmInstallWizard = ({
|
|
|
293
317
|
}, [initialInstallOptionsData]);
|
|
294
318
|
const hasLoadedReleases = react.useRef(!!initialChannelReleases?.length);
|
|
295
319
|
const hasResumedInstallation = react.useRef(!!initialInstallOptionsData);
|
|
320
|
+
const selectedReleaseRef = react.useRef(selectedRelease);
|
|
296
321
|
const helmReleases = react.useMemo(() => {
|
|
297
322
|
return releases.filter((r) => r.helmCharts && r.helmCharts.length > 0);
|
|
298
323
|
}, [releases]);
|
|
@@ -318,6 +343,9 @@ var HelmInstallWizard = ({
|
|
|
318
343
|
prevInstallOptionsIdRef.current = installOptionsId;
|
|
319
344
|
}
|
|
320
345
|
}, [installOptionsId, onInstallOptionsIdChange]);
|
|
346
|
+
react.useEffect(() => {
|
|
347
|
+
selectedReleaseRef.current = selectedRelease;
|
|
348
|
+
}, [selectedRelease]);
|
|
321
349
|
react.useEffect(() => {
|
|
322
350
|
if (step !== 2 || !fetchChannelReleasesAction || hasLoadedReleases.current) {
|
|
323
351
|
return;
|
|
@@ -394,37 +422,35 @@ var HelmInstallWizard = ({
|
|
|
394
422
|
}
|
|
395
423
|
};
|
|
396
424
|
updateOptions();
|
|
397
|
-
}, [selectedRelease, installOptionsId, token, updateInstallOptionsAction, networkAvailability, registryAccess
|
|
398
|
-
const lastPrivateRegistryRef = react.useRef("");
|
|
425
|
+
}, [selectedRelease, installOptionsId, token, updateInstallOptionsAction, networkAvailability, registryAccess]);
|
|
399
426
|
react.useEffect(() => {
|
|
400
|
-
if (networkAvailability !== "airgap" || !installOptionsId || !
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
const currentValue = privateRegistryHostname || "";
|
|
404
|
-
if (lastPrivateRegistryRef.current === currentValue) {
|
|
427
|
+
if (networkAvailability !== "airgap" || !installOptionsId || !updateInstallOptionsAction || !selectedRelease) {
|
|
405
428
|
return;
|
|
406
429
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
430
|
+
const timeoutId = setTimeout(async () => {
|
|
431
|
+
const currentRelease = selectedReleaseRef.current;
|
|
432
|
+
if (!currentRelease) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
410
435
|
try {
|
|
411
|
-
const result = await
|
|
436
|
+
const result = await updateInstallOptionsAction({
|
|
412
437
|
token,
|
|
413
438
|
installOptionsId,
|
|
439
|
+
channelId: currentRelease.channelId,
|
|
440
|
+
channelReleaseSequence: currentRelease.channelSequence,
|
|
441
|
+
registryAvailability: registryAccess,
|
|
414
442
|
includeInstructions: true,
|
|
415
|
-
privateRegistryHostname:
|
|
443
|
+
privateRegistryHostname: privateRegistryHostname || void 0
|
|
416
444
|
});
|
|
417
445
|
if (result.instructions) {
|
|
418
446
|
setInstructions(result.instructions);
|
|
419
447
|
}
|
|
420
448
|
} catch (error) {
|
|
421
|
-
console.error("[helm-install-wizard] Failed to
|
|
422
|
-
} finally {
|
|
423
|
-
setIsLoadingInstructions(false);
|
|
449
|
+
console.error("[helm-install-wizard] Failed to update private registry hostname", error);
|
|
424
450
|
}
|
|
425
|
-
};
|
|
426
|
-
|
|
427
|
-
}, [privateRegistryHostname, networkAvailability, installOptionsId, token,
|
|
451
|
+
}, 500);
|
|
452
|
+
return () => clearTimeout(timeoutId);
|
|
453
|
+
}, [privateRegistryHostname, networkAvailability, installOptionsId, updateInstallOptionsAction, token, registryAccess]);
|
|
428
454
|
react.useEffect(() => {
|
|
429
455
|
if (hasResumedInstallation.current) {
|
|
430
456
|
return;
|
|
@@ -527,7 +553,6 @@ var HelmInstallWizard = ({
|
|
|
527
553
|
if (networkAvailability !== "airgap") {
|
|
528
554
|
setInputRegistryHostname("");
|
|
529
555
|
setPrivateRegistryHostname("");
|
|
530
|
-
lastPrivateRegistryRef.current = "";
|
|
531
556
|
}
|
|
532
557
|
setInstructions(null);
|
|
533
558
|
await updateInstallOptionsAction({
|
|
@@ -635,7 +660,7 @@ var HelmInstallWizard = ({
|
|
|
635
660
|
onStepChange?.(1);
|
|
636
661
|
};
|
|
637
662
|
const handleFinish = react.useCallback(async () => {
|
|
638
|
-
navigateTo("/
|
|
663
|
+
navigateTo("/updates/checking");
|
|
639
664
|
}, []);
|
|
640
665
|
const handleReleaseSelect = react.useCallback((release) => {
|
|
641
666
|
setSelectedRelease(release);
|
|
@@ -643,30 +668,18 @@ var HelmInstallWizard = ({
|
|
|
643
668
|
const handlePrivateRegistryHostnameChange = react.useCallback((e) => {
|
|
644
669
|
const value = e.target.value;
|
|
645
670
|
setInputRegistryHostname(value);
|
|
646
|
-
|
|
647
|
-
clearTimeout(registryDebounceRef.current);
|
|
648
|
-
}
|
|
649
|
-
registryDebounceRef.current = setTimeout(() => {
|
|
650
|
-
setPrivateRegistryHostname(value);
|
|
651
|
-
}, 1e3);
|
|
652
|
-
}, []);
|
|
653
|
-
react.useEffect(() => {
|
|
654
|
-
return () => {
|
|
655
|
-
if (registryDebounceRef.current) {
|
|
656
|
-
clearTimeout(registryDebounceRef.current);
|
|
657
|
-
}
|
|
658
|
-
};
|
|
671
|
+
setPrivateRegistryHostname(value);
|
|
659
672
|
}, []);
|
|
660
673
|
if (step === 2) {
|
|
661
674
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
662
|
-
/* @__PURE__ */ jsxRuntime.jsx(StepIndicator, { step: 2 }),
|
|
675
|
+
/* @__PURE__ */ jsxRuntime.jsx(StepIndicator, { step: 2, primaryColor }),
|
|
663
676
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-2xl border border-gray-100 bg-gray-50 p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-6", children: [
|
|
664
677
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
665
678
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-semibold text-gray-900", children: networkAvailability === "proxy" ? "Helm Proxy Install" : networkAvailability === "airgap" ? "Helm Air Gap Install" : "Helm Online Install" }),
|
|
666
679
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 space-y-6", children: [
|
|
667
680
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
668
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2
|
|
669
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
681
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", style: { color: primaryColor }, children: [
|
|
682
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full font-semibold", style: { backgroundColor: `${primaryColor}20`, color: primaryColor }, children: "1" }),
|
|
670
683
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-gray-900", children: "Select a version" })
|
|
671
684
|
] }),
|
|
672
685
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -677,13 +690,14 @@ var HelmInstallWizard = ({
|
|
|
677
690
|
onSelect: handleReleaseSelect,
|
|
678
691
|
isLoading: isLoadingReleases,
|
|
679
692
|
isLoadingInstructions,
|
|
680
|
-
error: releasesError
|
|
693
|
+
error: releasesError,
|
|
694
|
+
primaryColor
|
|
681
695
|
}
|
|
682
696
|
)
|
|
683
697
|
] }),
|
|
684
698
|
networkAvailability === "airgap" && selectedRelease && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
685
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2
|
|
686
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full
|
|
699
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", style: { color: primaryColor }, children: [
|
|
700
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full font-semibold", style: { backgroundColor: `${primaryColor}20`, color: primaryColor }, children: "2" }),
|
|
687
701
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-gray-900", children: "(Optional) Specify registry URI" })
|
|
688
702
|
] }),
|
|
689
703
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-8", children: [
|
|
@@ -711,7 +725,8 @@ var HelmInstallWizard = ({
|
|
|
711
725
|
isLoading: isLoadingInstructions,
|
|
712
726
|
completedSteps,
|
|
713
727
|
registryAccess,
|
|
714
|
-
networkAvailability
|
|
728
|
+
networkAvailability,
|
|
729
|
+
primaryColor
|
|
715
730
|
}
|
|
716
731
|
)
|
|
717
732
|
] })
|
|
@@ -732,7 +747,8 @@ var HelmInstallWizard = ({
|
|
|
732
747
|
{
|
|
733
748
|
type: "button",
|
|
734
749
|
onClick: handleFinish,
|
|
735
|
-
className: "rounded-xl
|
|
750
|
+
className: "rounded-xl px-4 py-2 font-medium text-white transition-opacity duration-200 hover:opacity-90",
|
|
751
|
+
style: { backgroundColor: primaryColor },
|
|
736
752
|
children: "Finish"
|
|
737
753
|
}
|
|
738
754
|
)
|
|
@@ -743,7 +759,8 @@ var HelmInstallWizard = ({
|
|
|
743
759
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
744
760
|
"a",
|
|
745
761
|
{
|
|
746
|
-
className: "
|
|
762
|
+
className: "hover:opacity-80",
|
|
763
|
+
style: { color: secondaryColor },
|
|
747
764
|
href: supportPortalLink,
|
|
748
765
|
target: "_blank",
|
|
749
766
|
rel: "noopener noreferrer",
|
|
@@ -755,7 +772,7 @@ var HelmInstallWizard = ({
|
|
|
755
772
|
] });
|
|
756
773
|
}
|
|
757
774
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
758
|
-
/* @__PURE__ */ jsxRuntime.jsx(StepIndicator, { step }),
|
|
775
|
+
/* @__PURE__ */ jsxRuntime.jsx(StepIndicator, { step, primaryColor }),
|
|
759
776
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-gray-100 bg-gray-50 p-6", children: [
|
|
760
777
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
761
778
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -823,7 +840,7 @@ var HelmInstallWizard = ({
|
|
|
823
840
|
),
|
|
824
841
|
"Outbound requests require HTTPS Proxy"
|
|
825
842
|
] }),
|
|
826
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-3 text-sm text-gray-600", hidden:
|
|
843
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-3 text-sm text-gray-600", hidden: !isHelmAirgapEnabled, children: [
|
|
827
844
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
828
845
|
"input",
|
|
829
846
|
{
|
|
@@ -865,7 +882,7 @@ var HelmInstallWizard = ({
|
|
|
865
882
|
),
|
|
866
883
|
"My workstation can only access the internet AND the registry (NOT the cluster)"
|
|
867
884
|
] }),
|
|
868
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-3 text-sm text-gray-600", hidden:
|
|
885
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-3 text-sm text-gray-600", hidden: !isHelmAirgapEnabled, children: [
|
|
869
886
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
870
887
|
"input",
|
|
871
888
|
{
|
|
@@ -888,7 +905,8 @@ var HelmInstallWizard = ({
|
|
|
888
905
|
type: "button",
|
|
889
906
|
onClick: handleContinue,
|
|
890
907
|
disabled: isCreatingServiceAccount,
|
|
891
|
-
className: "rounded-xl
|
|
908
|
+
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",
|
|
909
|
+
style: { backgroundColor: primaryColor },
|
|
892
910
|
children: isCreatingServiceAccount ? "Creating..." : "Continue"
|
|
893
911
|
}
|
|
894
912
|
)
|
|
@@ -921,8 +939,17 @@ async function handle401() {
|
|
|
921
939
|
const { redirect } = await import('next/navigation');
|
|
922
940
|
return redirect("/?expired=1");
|
|
923
941
|
}
|
|
942
|
+
function isErrorPage(url) {
|
|
943
|
+
try {
|
|
944
|
+
const urlObj = new URL(url);
|
|
945
|
+
return urlObj.pathname === "/error";
|
|
946
|
+
} catch {
|
|
947
|
+
return url === "/error" || url.startsWith("/error?");
|
|
948
|
+
}
|
|
949
|
+
}
|
|
924
950
|
async function handleServerError(statusCode) {
|
|
925
951
|
const { redirect } = await import('next/navigation');
|
|
952
|
+
const { cookies } = await import('next/headers');
|
|
926
953
|
let sourceUrl;
|
|
927
954
|
try {
|
|
928
955
|
const { headers } = await import('next/headers');
|
|
@@ -930,12 +957,20 @@ async function handleServerError(statusCode) {
|
|
|
930
957
|
const referer = headersList.get("referer");
|
|
931
958
|
const host = headersList.get("host");
|
|
932
959
|
const pathname = headersList.get("x-invoke-path") || headersList.get("x-forwarded-path");
|
|
933
|
-
if (referer) {
|
|
960
|
+
if (referer && !isErrorPage(referer)) {
|
|
934
961
|
sourceUrl = referer;
|
|
935
962
|
} else if (host && pathname) {
|
|
936
963
|
const protocol = headersList.get("x-forwarded-proto") || "https";
|
|
937
964
|
sourceUrl = `${protocol}://${host}${pathname}`;
|
|
938
965
|
}
|
|
966
|
+
if (!sourceUrl || isErrorPage(sourceUrl)) {
|
|
967
|
+
const cookieStore = await cookies();
|
|
968
|
+
const preservedSource = cookieStore.get("portal_error_source");
|
|
969
|
+
if (preservedSource?.value) {
|
|
970
|
+
sourceUrl = decodeURIComponent(preservedSource.value);
|
|
971
|
+
cookieStore.delete("portal_error_source");
|
|
972
|
+
}
|
|
973
|
+
}
|
|
939
974
|
} catch (error) {
|
|
940
975
|
console.debug("[portal-components] Could not determine source URL", error);
|
|
941
976
|
}
|
|
@@ -1015,11 +1050,15 @@ var fetchCustomBrandingImpl = async () => {
|
|
|
1015
1050
|
const payload = await response.json();
|
|
1016
1051
|
const brandingObject = {
|
|
1017
1052
|
logo: payload.logoUrl,
|
|
1018
|
-
title: payload.
|
|
1019
|
-
|
|
1020
|
-
|
|
1053
|
+
title: payload.title,
|
|
1054
|
+
primaryColor: payload.primaryColor,
|
|
1055
|
+
secondaryColor: payload.secondaryColor,
|
|
1021
1056
|
favicon: payload.faviconUrl,
|
|
1022
|
-
supportPortalLink: payload.supportPortalLink || ""
|
|
1057
|
+
supportPortalLink: payload.supportPortalLink || "",
|
|
1058
|
+
background: payload.background,
|
|
1059
|
+
backgroundImage: payload.backgroundImage,
|
|
1060
|
+
customColor1: payload.customColor1,
|
|
1061
|
+
customColor2: payload.customColor2
|
|
1023
1062
|
};
|
|
1024
1063
|
const brandingData = buffer.Buffer.from(JSON.stringify(brandingObject)).toString("base64");
|
|
1025
1064
|
return {
|