@replicated/portal-components 0.0.24 → 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 -53
- 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 -53
- 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 -220
- 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/logout-action.js +1 -1
- package/dist/esm/logout-action.js.map +1 -1
- package/dist/esm/logout-button.js +5 -7
- package/dist/esm/logout-button.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 -6
- 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 +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +262 -220
- 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/logout-action.d.mts +1 -1
- package/dist/logout-action.d.ts +1 -1
- package/dist/logout-action.js +1 -1
- package/dist/logout-action.js.map +1 -1
- package/dist/logout-button.d.mts +1 -1
- package/dist/logout-button.d.ts +1 -1
- package/dist/logout-button.js +5 -7
- package/dist/logout-button.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 +4 -18
- package/dist/utils/index.d.ts +4 -18
- package/dist/utils/index.js +48 -6
- package/dist/utils/index.js.map +1 -1
- package/package.json +16 -6
- package/dist/esm/saml-handlers.js.map +0 -1
- package/dist/saml-handlers.js.map +0 -1
package/dist/update-layout.js
CHANGED
|
@@ -92,85 +92,6 @@ async function handleServerError(statusCode) {
|
|
|
92
92
|
return redirect(`/error?${params.toString()}`);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
// src/utils/constants.ts
|
|
96
|
-
var DEFAULT_PRIMARY_COLOR = "#4f46e5";
|
|
97
|
-
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
98
|
-
|
|
99
|
-
// src/utils/branding.ts
|
|
100
|
-
var normalizeColor = (color) => {
|
|
101
|
-
if (!color || typeof color !== "string") {
|
|
102
|
-
return void 0;
|
|
103
|
-
}
|
|
104
|
-
const trimmed = color.trim();
|
|
105
|
-
if (/^#?[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(trimmed)) {
|
|
106
|
-
return trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
|
|
107
|
-
}
|
|
108
|
-
console.debug("[portal-components] Invalid color format rejected (only hex supported):", trimmed);
|
|
109
|
-
return void 0;
|
|
110
|
-
};
|
|
111
|
-
var sanitizeUrlForCss = (url) => {
|
|
112
|
-
if (!url || typeof url !== "string") {
|
|
113
|
-
return void 0;
|
|
114
|
-
}
|
|
115
|
-
const trimmed = url.trim();
|
|
116
|
-
try {
|
|
117
|
-
const urlObj = new URL(trimmed);
|
|
118
|
-
if (!["http:", "https:", "data:"].includes(urlObj.protocol)) {
|
|
119
|
-
console.debug("[portal-components] Invalid URL protocol for background image:", urlObj.protocol);
|
|
120
|
-
return void 0;
|
|
121
|
-
}
|
|
122
|
-
} catch {
|
|
123
|
-
console.debug("[portal-components] Invalid URL format for background image:", trimmed);
|
|
124
|
-
return void 0;
|
|
125
|
-
}
|
|
126
|
-
const escaped = trimmed.replace(/\\/g, "\\\\").replace(/\)/g, "\\)").replace(/"/g, '\\"').replace(/'/g, "\\'").replace(/[\x00-\x1F\x7F]/g, "");
|
|
127
|
-
return escaped;
|
|
128
|
-
};
|
|
129
|
-
var decodeBranding = ({ brandingData }) => {
|
|
130
|
-
if (!brandingData || typeof brandingData !== "string") {
|
|
131
|
-
return {
|
|
132
|
-
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
133
|
-
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
const decoded = buffer.Buffer.from(brandingData, "base64").toString("utf-8");
|
|
138
|
-
const parsed = JSON.parse(decoded);
|
|
139
|
-
const logo = typeof parsed.logo === "string" ? parsed.logo : void 0;
|
|
140
|
-
const titleRaw = typeof parsed.title === "string" ? parsed.title.trim() : "";
|
|
141
|
-
const title = titleRaw ? titleRaw : void 0;
|
|
142
|
-
const favicon = typeof parsed.favicon === "string" ? parsed.favicon : void 0;
|
|
143
|
-
const primaryColorRaw = parsed.primaryColor ?? parsed.primary_color;
|
|
144
|
-
const secondaryColorRaw = parsed.secondaryColor ?? parsed.secondary_color;
|
|
145
|
-
const primaryColor = normalizeColor(primaryColorRaw);
|
|
146
|
-
const secondaryColor = normalizeColor(secondaryColorRaw);
|
|
147
|
-
const supportPortalLink = typeof parsed.supportPortalLink === "string" ? parsed.supportPortalLink : void 0;
|
|
148
|
-
const backgroundRaw = parsed.background;
|
|
149
|
-
const background = backgroundRaw === "minimal" || backgroundRaw === "custom" || backgroundRaw === "image" ? backgroundRaw : void 0;
|
|
150
|
-
const backgroundImage = sanitizeUrlForCss(parsed.backgroundImage);
|
|
151
|
-
const backgroundGradientStart = normalizeColor(parsed.customColor1);
|
|
152
|
-
const backgroundGradientEnd = normalizeColor(parsed.customColor2);
|
|
153
|
-
return {
|
|
154
|
-
logo,
|
|
155
|
-
title,
|
|
156
|
-
favicon,
|
|
157
|
-
primaryColor: primaryColor || DEFAULT_PRIMARY_COLOR,
|
|
158
|
-
secondaryColor: secondaryColor || DEFAULT_SECONDARY_COLOR,
|
|
159
|
-
supportPortalLink,
|
|
160
|
-
background,
|
|
161
|
-
backgroundImage,
|
|
162
|
-
backgroundGradientStart,
|
|
163
|
-
backgroundGradientEnd
|
|
164
|
-
};
|
|
165
|
-
} catch (error) {
|
|
166
|
-
console.debug("[portal-components] unable to parse branding JSON", error);
|
|
167
|
-
return {
|
|
168
|
-
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
169
|
-
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
|
|
174
95
|
// src/actions/index.ts
|
|
175
96
|
var getApiOrigin = () => {
|
|
176
97
|
return (process.env.REPLICATED_APP_ORIGIN || "https://replicated.app").replace(/\/+$/, "");
|
|
@@ -205,6 +126,7 @@ var fetchCustomBrandingImpl = async () => {
|
|
|
205
126
|
title: payload.title,
|
|
206
127
|
primaryColor: payload.primaryColor,
|
|
207
128
|
secondaryColor: payload.secondaryColor,
|
|
129
|
+
contact: payload.contact,
|
|
208
130
|
favicon: payload.faviconUrl,
|
|
209
131
|
supportPortalLink: payload.supportPortalLink || "",
|
|
210
132
|
background: payload.background,
|
|
@@ -259,6 +181,87 @@ var fetchDocumentationImpl = async () => {
|
|
|
259
181
|
};
|
|
260
182
|
};
|
|
261
183
|
react.cache(fetchDocumentationImpl);
|
|
184
|
+
|
|
185
|
+
// src/utils/constants.ts
|
|
186
|
+
var DEFAULT_PRIMARY_COLOR = "#4f46e5";
|
|
187
|
+
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
188
|
+
|
|
189
|
+
// src/utils/branding.ts
|
|
190
|
+
var normalizeColor = (color) => {
|
|
191
|
+
if (!color || typeof color !== "string") {
|
|
192
|
+
return void 0;
|
|
193
|
+
}
|
|
194
|
+
const trimmed = color.trim();
|
|
195
|
+
if (/^#?[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(trimmed)) {
|
|
196
|
+
return trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
|
|
197
|
+
}
|
|
198
|
+
console.debug("[portal-components] Invalid color format rejected (only hex supported):", trimmed);
|
|
199
|
+
return void 0;
|
|
200
|
+
};
|
|
201
|
+
var sanitizeUrlForCss = (url) => {
|
|
202
|
+
if (!url || typeof url !== "string") {
|
|
203
|
+
return void 0;
|
|
204
|
+
}
|
|
205
|
+
const trimmed = url.trim();
|
|
206
|
+
try {
|
|
207
|
+
const urlObj = new URL(trimmed);
|
|
208
|
+
if (!["http:", "https:", "data:"].includes(urlObj.protocol)) {
|
|
209
|
+
console.debug("[portal-components] Invalid URL protocol for background image:", urlObj.protocol);
|
|
210
|
+
return void 0;
|
|
211
|
+
}
|
|
212
|
+
} catch {
|
|
213
|
+
console.debug("[portal-components] Invalid URL format for background image:", trimmed);
|
|
214
|
+
return void 0;
|
|
215
|
+
}
|
|
216
|
+
const escaped = trimmed.replace(/\\/g, "\\\\").replace(/\)/g, "\\)").replace(/"/g, '\\"').replace(/'/g, "\\'").replace(/[\x00-\x1F\x7F]/g, "");
|
|
217
|
+
return escaped;
|
|
218
|
+
};
|
|
219
|
+
var decodeBranding = ({ brandingData }) => {
|
|
220
|
+
if (!brandingData || typeof brandingData !== "string") {
|
|
221
|
+
return {
|
|
222
|
+
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
223
|
+
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
const decoded = buffer.Buffer.from(brandingData, "base64").toString("utf-8");
|
|
228
|
+
const parsed = JSON.parse(decoded);
|
|
229
|
+
const logo = typeof parsed.logo === "string" ? parsed.logo : void 0;
|
|
230
|
+
const titleRaw = typeof parsed.title === "string" ? parsed.title.trim() : "";
|
|
231
|
+
const title = titleRaw ? titleRaw : void 0;
|
|
232
|
+
const favicon = typeof parsed.favicon === "string" ? parsed.favicon : void 0;
|
|
233
|
+
const primaryColorRaw = parsed.primaryColor ?? parsed.primary_color;
|
|
234
|
+
const secondaryColorRaw = parsed.secondaryColor ?? parsed.secondary_color;
|
|
235
|
+
const primaryColor = normalizeColor(primaryColorRaw);
|
|
236
|
+
const secondaryColor = normalizeColor(secondaryColorRaw);
|
|
237
|
+
const contact = typeof parsed.contact === "string" ? parsed.contact : void 0;
|
|
238
|
+
const supportPortalLink = typeof parsed.supportPortalLink === "string" ? parsed.supportPortalLink : void 0;
|
|
239
|
+
const backgroundRaw = parsed.background;
|
|
240
|
+
const background = backgroundRaw === "minimal" || backgroundRaw === "custom" || backgroundRaw === "image" ? backgroundRaw : void 0;
|
|
241
|
+
const backgroundImage = sanitizeUrlForCss(parsed.backgroundImage);
|
|
242
|
+
const backgroundGradientStart = normalizeColor(parsed.customColor1);
|
|
243
|
+
const backgroundGradientEnd = normalizeColor(parsed.customColor2);
|
|
244
|
+
return {
|
|
245
|
+
logo,
|
|
246
|
+
title,
|
|
247
|
+
favicon,
|
|
248
|
+
primaryColor: primaryColor || DEFAULT_PRIMARY_COLOR,
|
|
249
|
+
secondaryColor: secondaryColor || DEFAULT_SECONDARY_COLOR,
|
|
250
|
+
contact,
|
|
251
|
+
supportPortalLink,
|
|
252
|
+
background,
|
|
253
|
+
backgroundImage,
|
|
254
|
+
backgroundGradientStart,
|
|
255
|
+
backgroundGradientEnd
|
|
256
|
+
};
|
|
257
|
+
} catch (error) {
|
|
258
|
+
console.debug("[portal-components] unable to parse branding JSON", error);
|
|
259
|
+
return {
|
|
260
|
+
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
261
|
+
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
};
|
|
262
265
|
function UserMenuDropdown({
|
|
263
266
|
displayLabel,
|
|
264
267
|
children,
|