@replicated/portal-components 0.0.25 → 0.0.26
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/branding-actions.js +6 -4
- package/dist/actions/branding-actions.js.map +1 -1
- package/dist/actions/change-team.js +1 -0
- package/dist/actions/change-team.js.map +1 -1
- package/dist/actions/index.d.mts +1 -1
- package/dist/actions/index.d.ts +1 -1
- package/dist/actions/index.js +1 -50
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/install-actions.d.mts +1 -1
- package/dist/actions/install-actions.d.ts +1 -1
- package/dist/actions/install-actions.js +1 -0
- package/dist/actions/install-actions.js.map +1 -1
- package/dist/actions/invite-actions.js +6 -5
- package/dist/actions/invite-actions.js.map +1 -1
- package/dist/actions/magic-link-actions.js +6 -5
- package/dist/actions/magic-link-actions.js.map +1 -1
- package/dist/actions/service-account.d.mts +1 -1
- package/dist/actions/service-account.d.ts +1 -1
- package/dist/actions/service-account.js +1 -0
- package/dist/actions/service-account.js.map +1 -1
- package/dist/actions/support-bundles.d.mts +1 -1
- package/dist/actions/support-bundles.d.ts +1 -1
- package/dist/actions/support-bundles.js +1 -50
- package/dist/actions/support-bundles.js.map +1 -1
- package/dist/actions/team-settings.d.mts +1 -1
- package/dist/actions/team-settings.d.ts +1 -1
- package/dist/actions/team-settings.js +1 -0
- package/dist/actions/team-settings.js.map +1 -1
- package/dist/actions/trial-signup-actions.js +6 -5
- package/dist/actions/trial-signup-actions.js.map +1 -1
- package/dist/actions/trial-signup.js +6 -5
- package/dist/actions/trial-signup.js.map +1 -1
- package/dist/actions/user-settings.d.mts +1 -1
- package/dist/actions/user-settings.d.ts +1 -1
- package/dist/actions/user-settings.js +1 -0
- package/dist/actions/user-settings.js.map +1 -1
- package/dist/airgap-instances.d.mts +1 -1
- package/dist/airgap-instances.d.ts +1 -1
- package/dist/airgap-instances.js +25 -25
- package/dist/airgap-instances.js.map +1 -1
- package/dist/{saml-handlers.d.mts → api/saml.d.mts} +2 -2
- package/dist/{saml-handlers.d.ts → api/saml.d.ts} +2 -2
- package/dist/{saml-handlers.js → api/saml.js} +4 -3
- package/dist/api/saml.js.map +1 -0
- package/dist/api/support-bundles.d.mts +22 -0
- package/dist/api/support-bundles.d.ts +22 -0
- package/dist/api/support-bundles.js +245 -0
- package/dist/api/support-bundles.js.map +1 -0
- package/dist/{branding-BsMSywts.d.mts → branding-DmsrDTNE.d.mts} +2 -1
- package/dist/{branding-BsMSywts.d.ts → branding-DmsrDTNE.d.ts} +2 -1
- package/dist/esm/actions/branding-actions.js +6 -4
- package/dist/esm/actions/branding-actions.js.map +1 -1
- package/dist/esm/actions/change-team.js +1 -0
- package/dist/esm/actions/change-team.js.map +1 -1
- package/dist/esm/actions/index.js +2 -50
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/actions/install-actions.js +1 -0
- package/dist/esm/actions/install-actions.js.map +1 -1
- package/dist/esm/actions/invite-actions.js +6 -5
- package/dist/esm/actions/invite-actions.js.map +1 -1
- package/dist/esm/actions/magic-link-actions.js +6 -5
- package/dist/esm/actions/magic-link-actions.js.map +1 -1
- package/dist/esm/actions/service-account.js +1 -0
- package/dist/esm/actions/service-account.js.map +1 -1
- package/dist/esm/actions/support-bundles.js +2 -50
- package/dist/esm/actions/support-bundles.js.map +1 -1
- package/dist/esm/actions/team-settings.js +1 -0
- package/dist/esm/actions/team-settings.js.map +1 -1
- package/dist/esm/actions/trial-signup-actions.js +6 -5
- package/dist/esm/actions/trial-signup-actions.js.map +1 -1
- package/dist/esm/actions/trial-signup.js +6 -5
- package/dist/esm/actions/trial-signup.js.map +1 -1
- package/dist/esm/actions/user-settings.js +1 -0
- package/dist/esm/actions/user-settings.js.map +1 -1
- package/dist/esm/airgap-instances.js +25 -25
- package/dist/esm/airgap-instances.js.map +1 -1
- package/dist/esm/{saml-handlers.js → api/saml.js} +4 -3
- package/dist/esm/api/saml.js.map +1 -0
- package/dist/esm/api/support-bundles.js +243 -0
- package/dist/esm/api/support-bundles.js.map +1 -0
- package/dist/esm/helm-install-wizard.js +1 -0
- package/dist/esm/helm-install-wizard.js.map +1 -1
- package/dist/esm/index.js +262 -215
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install-actions.js +1 -0
- package/dist/esm/install-actions.js.map +1 -1
- package/dist/esm/instance-card.js +25 -25
- package/dist/esm/instance-card.js.map +1 -1
- package/dist/esm/license-details.js +1 -0
- package/dist/esm/license-details.js.map +1 -1
- package/dist/esm/linux-install-wizard.js +1 -0
- package/dist/esm/linux-install-wizard.js.map +1 -1
- package/dist/esm/online-instance-list.js +25 -25
- package/dist/esm/online-instance-list.js.map +1 -1
- package/dist/esm/saml-callback-client.js.map +1 -1
- package/dist/esm/support-card.js +1 -0
- package/dist/esm/support-card.js.map +1 -1
- package/dist/esm/top-nav.js +82 -79
- package/dist/esm/top-nav.js.map +1 -1
- package/dist/esm/update-layout.js +82 -79
- package/dist/esm/update-layout.js.map +1 -1
- package/dist/esm/upload-support-bundle-modal.js +46 -16
- package/dist/esm/upload-support-bundle-modal.js.map +1 -1
- package/dist/esm/utils/index.js +48 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/helm-install-wizard.d.mts +2 -2
- package/dist/helm-install-wizard.d.ts +2 -2
- package/dist/helm-install-wizard.js +1 -0
- package/dist/helm-install-wizard.js.map +1 -1
- package/dist/{index-DXy7RxOX.d.ts → index-Bcp17Mf3.d.ts} +1 -16
- package/dist/{index-JX9-CIMA.d.mts → index-DaH1bSuO.d.mts} +1 -16
- package/dist/index.d.mts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +262 -214
- package/dist/index.js.map +1 -1
- package/dist/install-actions.d.mts +2 -2
- package/dist/install-actions.d.ts +2 -2
- package/dist/install-actions.js +1 -0
- package/dist/install-actions.js.map +1 -1
- package/dist/instance-card.d.mts +1 -1
- package/dist/instance-card.d.ts +1 -1
- package/dist/instance-card.js +25 -25
- package/dist/instance-card.js.map +1 -1
- package/dist/license-details.js +1 -0
- package/dist/license-details.js.map +1 -1
- package/dist/linux-install-wizard.d.mts +2 -2
- package/dist/linux-install-wizard.d.ts +2 -2
- package/dist/linux-install-wizard.js +1 -0
- package/dist/linux-install-wizard.js.map +1 -1
- package/dist/online-instance-list.d.mts +1 -1
- package/dist/online-instance-list.d.ts +1 -1
- package/dist/online-instance-list.js +25 -25
- package/dist/online-instance-list.js.map +1 -1
- package/dist/pending-installations.d.mts +1 -1
- package/dist/pending-installations.d.ts +1 -1
- package/dist/saml-callback-client.d.mts +1 -1
- package/dist/saml-callback-client.d.ts +1 -1
- package/dist/saml-callback-client.js.map +1 -1
- package/dist/security-card.d.mts +1 -1
- package/dist/security-card.d.ts +1 -1
- package/dist/styles.css +4 -0
- package/dist/support-bundles-card.d.mts +1 -1
- package/dist/support-bundles-card.d.ts +1 -1
- package/dist/support-card.js +1 -0
- package/dist/support-card.js.map +1 -1
- package/dist/{top-nav-CEqw0KpO.d.ts → top-nav-8f2U69MF.d.ts} +1 -1
- package/dist/{top-nav-BUQAGoG1.d.mts → top-nav-B2yA3PC7.d.mts} +1 -1
- package/dist/top-nav.d.mts +2 -2
- package/dist/top-nav.d.ts +2 -2
- package/dist/top-nav.js +82 -79
- package/dist/top-nav.js.map +1 -1
- package/dist/update-layout.js +82 -79
- package/dist/update-layout.js.map +1 -1
- package/dist/upload-support-bundle-modal.d.mts +9 -9
- package/dist/upload-support-bundle-modal.d.ts +9 -9
- package/dist/upload-support-bundle-modal.js +46 -16
- package/dist/upload-support-bundle-modal.js.map +1 -1
- package/dist/upload-with-progress-D760HthX.d.mts +35 -0
- package/dist/upload-with-progress-D760HthX.d.ts +35 -0
- package/dist/utils/index.d.mts +3 -2
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.js +48 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +10 -5
- package/dist/esm/saml-handlers.js.map +0 -1
- package/dist/saml-handlers.js.map +0 -1
|
@@ -86,85 +86,6 @@ async function handleServerError(statusCode) {
|
|
|
86
86
|
return redirect(`/error?${params.toString()}`);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
// src/utils/constants.ts
|
|
90
|
-
var DEFAULT_PRIMARY_COLOR = "#4f46e5";
|
|
91
|
-
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
92
|
-
|
|
93
|
-
// src/utils/branding.ts
|
|
94
|
-
var normalizeColor = (color) => {
|
|
95
|
-
if (!color || typeof color !== "string") {
|
|
96
|
-
return void 0;
|
|
97
|
-
}
|
|
98
|
-
const trimmed = color.trim();
|
|
99
|
-
if (/^#?[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(trimmed)) {
|
|
100
|
-
return trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
|
|
101
|
-
}
|
|
102
|
-
console.debug("[portal-components] Invalid color format rejected (only hex supported):", trimmed);
|
|
103
|
-
return void 0;
|
|
104
|
-
};
|
|
105
|
-
var sanitizeUrlForCss = (url) => {
|
|
106
|
-
if (!url || typeof url !== "string") {
|
|
107
|
-
return void 0;
|
|
108
|
-
}
|
|
109
|
-
const trimmed = url.trim();
|
|
110
|
-
try {
|
|
111
|
-
const urlObj = new URL(trimmed);
|
|
112
|
-
if (!["http:", "https:", "data:"].includes(urlObj.protocol)) {
|
|
113
|
-
console.debug("[portal-components] Invalid URL protocol for background image:", urlObj.protocol);
|
|
114
|
-
return void 0;
|
|
115
|
-
}
|
|
116
|
-
} catch {
|
|
117
|
-
console.debug("[portal-components] Invalid URL format for background image:", trimmed);
|
|
118
|
-
return void 0;
|
|
119
|
-
}
|
|
120
|
-
const escaped = trimmed.replace(/\\/g, "\\\\").replace(/\)/g, "\\)").replace(/"/g, '\\"').replace(/'/g, "\\'").replace(/[\x00-\x1F\x7F]/g, "");
|
|
121
|
-
return escaped;
|
|
122
|
-
};
|
|
123
|
-
var decodeBranding = ({ brandingData }) => {
|
|
124
|
-
if (!brandingData || typeof brandingData !== "string") {
|
|
125
|
-
return {
|
|
126
|
-
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
127
|
-
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
const decoded = Buffer.from(brandingData, "base64").toString("utf-8");
|
|
132
|
-
const parsed = JSON.parse(decoded);
|
|
133
|
-
const logo = typeof parsed.logo === "string" ? parsed.logo : void 0;
|
|
134
|
-
const titleRaw = typeof parsed.title === "string" ? parsed.title.trim() : "";
|
|
135
|
-
const title = titleRaw ? titleRaw : void 0;
|
|
136
|
-
const favicon = typeof parsed.favicon === "string" ? parsed.favicon : void 0;
|
|
137
|
-
const primaryColorRaw = parsed.primaryColor ?? parsed.primary_color;
|
|
138
|
-
const secondaryColorRaw = parsed.secondaryColor ?? parsed.secondary_color;
|
|
139
|
-
const primaryColor = normalizeColor(primaryColorRaw);
|
|
140
|
-
const secondaryColor = normalizeColor(secondaryColorRaw);
|
|
141
|
-
const supportPortalLink = typeof parsed.supportPortalLink === "string" ? parsed.supportPortalLink : void 0;
|
|
142
|
-
const backgroundRaw = parsed.background;
|
|
143
|
-
const background = backgroundRaw === "minimal" || backgroundRaw === "custom" || backgroundRaw === "image" ? backgroundRaw : void 0;
|
|
144
|
-
const backgroundImage = sanitizeUrlForCss(parsed.backgroundImage);
|
|
145
|
-
const backgroundGradientStart = normalizeColor(parsed.customColor1);
|
|
146
|
-
const backgroundGradientEnd = normalizeColor(parsed.customColor2);
|
|
147
|
-
return {
|
|
148
|
-
logo,
|
|
149
|
-
title,
|
|
150
|
-
favicon,
|
|
151
|
-
primaryColor: primaryColor || DEFAULT_PRIMARY_COLOR,
|
|
152
|
-
secondaryColor: secondaryColor || DEFAULT_SECONDARY_COLOR,
|
|
153
|
-
supportPortalLink,
|
|
154
|
-
background,
|
|
155
|
-
backgroundImage,
|
|
156
|
-
backgroundGradientStart,
|
|
157
|
-
backgroundGradientEnd
|
|
158
|
-
};
|
|
159
|
-
} catch (error) {
|
|
160
|
-
console.debug("[portal-components] unable to parse branding JSON", error);
|
|
161
|
-
return {
|
|
162
|
-
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
163
|
-
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
|
|
168
89
|
// src/actions/index.ts
|
|
169
90
|
var getApiOrigin = () => {
|
|
170
91
|
return (process.env.REPLICATED_APP_ORIGIN || "https://replicated.app").replace(/\/+$/, "");
|
|
@@ -199,6 +120,7 @@ var fetchCustomBrandingImpl = async () => {
|
|
|
199
120
|
title: payload.title,
|
|
200
121
|
primaryColor: payload.primaryColor,
|
|
201
122
|
secondaryColor: payload.secondaryColor,
|
|
123
|
+
contact: payload.contact,
|
|
202
124
|
favicon: payload.faviconUrl,
|
|
203
125
|
supportPortalLink: payload.supportPortalLink || "",
|
|
204
126
|
background: payload.background,
|
|
@@ -253,6 +175,87 @@ var fetchDocumentationImpl = async () => {
|
|
|
253
175
|
};
|
|
254
176
|
};
|
|
255
177
|
cache(fetchDocumentationImpl);
|
|
178
|
+
|
|
179
|
+
// src/utils/constants.ts
|
|
180
|
+
var DEFAULT_PRIMARY_COLOR = "#4f46e5";
|
|
181
|
+
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
182
|
+
|
|
183
|
+
// src/utils/branding.ts
|
|
184
|
+
var normalizeColor = (color) => {
|
|
185
|
+
if (!color || typeof color !== "string") {
|
|
186
|
+
return void 0;
|
|
187
|
+
}
|
|
188
|
+
const trimmed = color.trim();
|
|
189
|
+
if (/^#?[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(trimmed)) {
|
|
190
|
+
return trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
|
|
191
|
+
}
|
|
192
|
+
console.debug("[portal-components] Invalid color format rejected (only hex supported):", trimmed);
|
|
193
|
+
return void 0;
|
|
194
|
+
};
|
|
195
|
+
var sanitizeUrlForCss = (url) => {
|
|
196
|
+
if (!url || typeof url !== "string") {
|
|
197
|
+
return void 0;
|
|
198
|
+
}
|
|
199
|
+
const trimmed = url.trim();
|
|
200
|
+
try {
|
|
201
|
+
const urlObj = new URL(trimmed);
|
|
202
|
+
if (!["http:", "https:", "data:"].includes(urlObj.protocol)) {
|
|
203
|
+
console.debug("[portal-components] Invalid URL protocol for background image:", urlObj.protocol);
|
|
204
|
+
return void 0;
|
|
205
|
+
}
|
|
206
|
+
} catch {
|
|
207
|
+
console.debug("[portal-components] Invalid URL format for background image:", trimmed);
|
|
208
|
+
return void 0;
|
|
209
|
+
}
|
|
210
|
+
const escaped = trimmed.replace(/\\/g, "\\\\").replace(/\)/g, "\\)").replace(/"/g, '\\"').replace(/'/g, "\\'").replace(/[\x00-\x1F\x7F]/g, "");
|
|
211
|
+
return escaped;
|
|
212
|
+
};
|
|
213
|
+
var decodeBranding = ({ brandingData }) => {
|
|
214
|
+
if (!brandingData || typeof brandingData !== "string") {
|
|
215
|
+
return {
|
|
216
|
+
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
217
|
+
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
const decoded = Buffer.from(brandingData, "base64").toString("utf-8");
|
|
222
|
+
const parsed = JSON.parse(decoded);
|
|
223
|
+
const logo = typeof parsed.logo === "string" ? parsed.logo : void 0;
|
|
224
|
+
const titleRaw = typeof parsed.title === "string" ? parsed.title.trim() : "";
|
|
225
|
+
const title = titleRaw ? titleRaw : void 0;
|
|
226
|
+
const favicon = typeof parsed.favicon === "string" ? parsed.favicon : void 0;
|
|
227
|
+
const primaryColorRaw = parsed.primaryColor ?? parsed.primary_color;
|
|
228
|
+
const secondaryColorRaw = parsed.secondaryColor ?? parsed.secondary_color;
|
|
229
|
+
const primaryColor = normalizeColor(primaryColorRaw);
|
|
230
|
+
const secondaryColor = normalizeColor(secondaryColorRaw);
|
|
231
|
+
const contact = typeof parsed.contact === "string" ? parsed.contact : void 0;
|
|
232
|
+
const supportPortalLink = typeof parsed.supportPortalLink === "string" ? parsed.supportPortalLink : void 0;
|
|
233
|
+
const backgroundRaw = parsed.background;
|
|
234
|
+
const background = backgroundRaw === "minimal" || backgroundRaw === "custom" || backgroundRaw === "image" ? backgroundRaw : void 0;
|
|
235
|
+
const backgroundImage = sanitizeUrlForCss(parsed.backgroundImage);
|
|
236
|
+
const backgroundGradientStart = normalizeColor(parsed.customColor1);
|
|
237
|
+
const backgroundGradientEnd = normalizeColor(parsed.customColor2);
|
|
238
|
+
return {
|
|
239
|
+
logo,
|
|
240
|
+
title,
|
|
241
|
+
favicon,
|
|
242
|
+
primaryColor: primaryColor || DEFAULT_PRIMARY_COLOR,
|
|
243
|
+
secondaryColor: secondaryColor || DEFAULT_SECONDARY_COLOR,
|
|
244
|
+
contact,
|
|
245
|
+
supportPortalLink,
|
|
246
|
+
background,
|
|
247
|
+
backgroundImage,
|
|
248
|
+
backgroundGradientStart,
|
|
249
|
+
backgroundGradientEnd
|
|
250
|
+
};
|
|
251
|
+
} catch (error) {
|
|
252
|
+
console.debug("[portal-components] unable to parse branding JSON", error);
|
|
253
|
+
return {
|
|
254
|
+
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
255
|
+
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
};
|
|
256
259
|
function UserMenuDropdown({
|
|
257
260
|
displayLabel,
|
|
258
261
|
children,
|