@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
package/dist/update-layout.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var buffer = require('buffer');
|
|
4
3
|
var Link = require('next/link');
|
|
4
|
+
var buffer = require('buffer');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
@@ -13,7 +13,97 @@ var Link__default = /*#__PURE__*/_interopDefault(Link);
|
|
|
13
13
|
* Enterprise Portal Components
|
|
14
14
|
* This file is generated by tsup. Do not edit manually.
|
|
15
15
|
*/
|
|
16
|
+
var __defProp = Object.defineProperty;
|
|
17
|
+
var __export = (target, all) => {
|
|
18
|
+
for (var name in all)
|
|
19
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// datadog/tracer.ts
|
|
23
|
+
var tracer_exports = {};
|
|
24
|
+
__export(tracer_exports, {
|
|
25
|
+
default: () => tracer_default
|
|
26
|
+
});
|
|
27
|
+
var tracer_default;
|
|
16
28
|
|
|
29
|
+
// src/utils/constants.ts
|
|
30
|
+
var DEFAULT_PRIMARY_COLOR = "#4f46e5";
|
|
31
|
+
var DEFAULT_SECONDARY_COLOR = "#6366f1";
|
|
32
|
+
|
|
33
|
+
// src/utils/branding.ts
|
|
34
|
+
var normalizeColor = (color) => {
|
|
35
|
+
if (!color || typeof color !== "string") {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
const trimmed = color.trim();
|
|
39
|
+
if (/^#?[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(trimmed)) {
|
|
40
|
+
return trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
|
|
41
|
+
}
|
|
42
|
+
console.debug("[portal-components] Invalid color format rejected (only hex supported):", trimmed);
|
|
43
|
+
return void 0;
|
|
44
|
+
};
|
|
45
|
+
var sanitizeUrlForCss = (url) => {
|
|
46
|
+
if (!url || typeof url !== "string") {
|
|
47
|
+
return void 0;
|
|
48
|
+
}
|
|
49
|
+
const trimmed = url.trim();
|
|
50
|
+
try {
|
|
51
|
+
const urlObj = new URL(trimmed);
|
|
52
|
+
if (!["http:", "https:", "data:"].includes(urlObj.protocol)) {
|
|
53
|
+
console.debug("[portal-components] Invalid URL protocol for background image:", urlObj.protocol);
|
|
54
|
+
return void 0;
|
|
55
|
+
}
|
|
56
|
+
} catch {
|
|
57
|
+
console.debug("[portal-components] Invalid URL format for background image:", trimmed);
|
|
58
|
+
return void 0;
|
|
59
|
+
}
|
|
60
|
+
const escaped = trimmed.replace(/\\/g, "\\\\").replace(/\)/g, "\\)").replace(/"/g, '\\"').replace(/'/g, "\\'").replace(/[\x00-\x1F\x7F]/g, "");
|
|
61
|
+
return escaped;
|
|
62
|
+
};
|
|
63
|
+
var decodeBranding = ({ brandingData }) => {
|
|
64
|
+
if (!brandingData || typeof brandingData !== "string") {
|
|
65
|
+
return {
|
|
66
|
+
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
67
|
+
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const decoded = buffer.Buffer.from(brandingData, "base64").toString("utf-8");
|
|
72
|
+
const parsed = JSON.parse(decoded);
|
|
73
|
+
const logo = typeof parsed.logo === "string" ? parsed.logo : void 0;
|
|
74
|
+
const titleRaw = typeof parsed.title === "string" ? parsed.title.trim() : "";
|
|
75
|
+
const title = titleRaw ? titleRaw : void 0;
|
|
76
|
+
const favicon = typeof parsed.favicon === "string" ? parsed.favicon : void 0;
|
|
77
|
+
const primaryColorRaw = parsed.primaryColor ?? parsed.primary_color;
|
|
78
|
+
const secondaryColorRaw = parsed.secondaryColor ?? parsed.secondary_color;
|
|
79
|
+
const primaryColor = normalizeColor(primaryColorRaw);
|
|
80
|
+
const secondaryColor = normalizeColor(secondaryColorRaw);
|
|
81
|
+
const supportPortalLink = typeof parsed.supportPortalLink === "string" ? parsed.supportPortalLink : void 0;
|
|
82
|
+
const backgroundRaw = parsed.background;
|
|
83
|
+
const background = backgroundRaw === "minimal" || backgroundRaw === "custom" || backgroundRaw === "image" ? backgroundRaw : void 0;
|
|
84
|
+
const backgroundImage = sanitizeUrlForCss(parsed.backgroundImage);
|
|
85
|
+
const backgroundGradientStart = normalizeColor(parsed.customColor1);
|
|
86
|
+
const backgroundGradientEnd = normalizeColor(parsed.customColor2);
|
|
87
|
+
return {
|
|
88
|
+
logo,
|
|
89
|
+
title,
|
|
90
|
+
favicon,
|
|
91
|
+
primaryColor: primaryColor || DEFAULT_PRIMARY_COLOR,
|
|
92
|
+
secondaryColor: secondaryColor || DEFAULT_SECONDARY_COLOR,
|
|
93
|
+
supportPortalLink,
|
|
94
|
+
background,
|
|
95
|
+
backgroundImage,
|
|
96
|
+
backgroundGradientStart,
|
|
97
|
+
backgroundGradientEnd
|
|
98
|
+
};
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.debug("[portal-components] unable to parse branding JSON", error);
|
|
101
|
+
return {
|
|
102
|
+
primaryColor: DEFAULT_PRIMARY_COLOR,
|
|
103
|
+
secondaryColor: DEFAULT_SECONDARY_COLOR
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
};
|
|
17
107
|
|
|
18
108
|
// src/actions/index.ts
|
|
19
109
|
var getApiOrigin = () => {
|
|
@@ -46,11 +136,15 @@ var fetchCustomBrandingImpl = async () => {
|
|
|
46
136
|
const payload = await response.json();
|
|
47
137
|
const brandingObject = {
|
|
48
138
|
logo: payload.logoUrl,
|
|
49
|
-
title: payload.
|
|
50
|
-
|
|
51
|
-
|
|
139
|
+
title: payload.title,
|
|
140
|
+
primaryColor: payload.primaryColor,
|
|
141
|
+
secondaryColor: payload.secondaryColor,
|
|
52
142
|
favicon: payload.faviconUrl,
|
|
53
|
-
supportPortalLink: payload.supportPortalLink || ""
|
|
143
|
+
supportPortalLink: payload.supportPortalLink || "",
|
|
144
|
+
background: payload.background,
|
|
145
|
+
backgroundImage: payload.backgroundImage,
|
|
146
|
+
customColor1: payload.customColor1,
|
|
147
|
+
customColor2: payload.customColor2
|
|
54
148
|
};
|
|
55
149
|
const brandingData = buffer.Buffer.from(JSON.stringify(brandingObject)).toString("base64");
|
|
56
150
|
return {
|
|
@@ -245,57 +339,49 @@ var TopNav = async ({
|
|
|
245
339
|
currentCustomerId,
|
|
246
340
|
onChangeTeam,
|
|
247
341
|
userMenuChildren,
|
|
248
|
-
logoutButton
|
|
342
|
+
logoutButton,
|
|
343
|
+
branding: brandingProp
|
|
249
344
|
}) => {
|
|
250
345
|
const displayLabel = userMenuLabel || (customerName ? `Team: ${customerName}` : "Team: Example");
|
|
251
346
|
let logo;
|
|
252
347
|
let brandTitle;
|
|
253
|
-
let
|
|
254
|
-
let
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
if (
|
|
261
|
-
|
|
348
|
+
let primaryColor;
|
|
349
|
+
let secondaryColor;
|
|
350
|
+
let background;
|
|
351
|
+
let backgroundImageUrl;
|
|
352
|
+
let backgroundGradientStart;
|
|
353
|
+
let backgroundGradientEnd;
|
|
354
|
+
if (brandingProp) {
|
|
355
|
+
if (brandingProp.logo && typeof brandingProp.logo === "string") {
|
|
356
|
+
logo = brandingProp.logo;
|
|
262
357
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
if (branding.brandingData) {
|
|
268
|
-
const decoded = buffer.Buffer.from(branding.brandingData, "base64").toString(
|
|
269
|
-
"utf-8"
|
|
270
|
-
);
|
|
271
|
-
try {
|
|
272
|
-
const parsed = JSON.parse(decoded);
|
|
273
|
-
if (parsed?.logo && typeof parsed.logo === "string") {
|
|
274
|
-
logo = parsed.logo;
|
|
275
|
-
}
|
|
276
|
-
if (parsed?.title && typeof parsed.title === "string") {
|
|
277
|
-
const normalizedTitle = parsed.title.trim();
|
|
278
|
-
if (normalizedTitle) {
|
|
279
|
-
brandTitle = normalizedTitle;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
if (parsed?.customColor1 && typeof parsed.customColor1 === "string") {
|
|
283
|
-
customColor1 = normalizeColor(parsed.customColor1);
|
|
284
|
-
}
|
|
285
|
-
if (parsed?.customColor2 && typeof parsed.customColor2 === "string") {
|
|
286
|
-
customColor2 = normalizeColor(parsed.customColor2);
|
|
287
|
-
}
|
|
288
|
-
} catch (error) {
|
|
289
|
-
console.debug(
|
|
290
|
-
"[portal-components] unable to parse branding JSON",
|
|
291
|
-
error
|
|
292
|
-
);
|
|
358
|
+
if (brandingProp.title && typeof brandingProp.title === "string") {
|
|
359
|
+
const normalizedTitle = brandingProp.title.trim();
|
|
360
|
+
if (normalizedTitle) {
|
|
361
|
+
brandTitle = normalizedTitle;
|
|
293
362
|
}
|
|
294
|
-
} else {
|
|
295
|
-
console.debug("[portal-components] branding", branding);
|
|
296
363
|
}
|
|
297
|
-
|
|
298
|
-
|
|
364
|
+
primaryColor = normalizeColor(brandingProp.primaryColor);
|
|
365
|
+
secondaryColor = normalizeColor(brandingProp.secondaryColor);
|
|
366
|
+
background = brandingProp.background;
|
|
367
|
+
backgroundImageUrl = brandingProp.backgroundImage;
|
|
368
|
+
backgroundGradientStart = normalizeColor(brandingProp.backgroundGradientStart);
|
|
369
|
+
backgroundGradientEnd = normalizeColor(brandingProp.backgroundGradientEnd);
|
|
370
|
+
} else {
|
|
371
|
+
try {
|
|
372
|
+
const brandingResponse = await fetchCustomBranding();
|
|
373
|
+
const branding = decodeBranding({ brandingData: brandingResponse.brandingData });
|
|
374
|
+
logo = branding.logo;
|
|
375
|
+
brandTitle = branding.title;
|
|
376
|
+
primaryColor = branding.primaryColor;
|
|
377
|
+
secondaryColor = branding.secondaryColor;
|
|
378
|
+
background = branding.background;
|
|
379
|
+
backgroundImageUrl = branding.backgroundImage;
|
|
380
|
+
backgroundGradientStart = branding.backgroundGradientStart;
|
|
381
|
+
backgroundGradientEnd = branding.backgroundGradientEnd;
|
|
382
|
+
} catch (error) {
|
|
383
|
+
console.debug("[portal-components] branding fetch failed", error);
|
|
384
|
+
}
|
|
299
385
|
}
|
|
300
386
|
const baseLinks = links ?? defaultTopNavLinks;
|
|
301
387
|
const hiddenSet = hiddenLabels ? new Set(hiddenLabels) : null;
|
|
@@ -306,20 +392,32 @@ var TopNav = async ({
|
|
|
306
392
|
resolvedLinks = [...resolvedLinks, ...additionalLinks];
|
|
307
393
|
}
|
|
308
394
|
resolvedLinks = orderLinks(resolvedLinks, order);
|
|
309
|
-
const
|
|
310
|
-
|
|
395
|
+
const getHeaderBackgroundStyle = () => {
|
|
396
|
+
if (background === "image" && backgroundImageUrl) {
|
|
397
|
+
return {
|
|
398
|
+
background: `url(${backgroundImageUrl})`,
|
|
399
|
+
backgroundImage: `linear-gradient(to top, rgba(255, 255, 255, 0.3) 30%, rgba(255, 255, 255, 0)), url(${backgroundImageUrl})`,
|
|
400
|
+
backgroundSize: "cover",
|
|
401
|
+
backgroundPosition: "center",
|
|
402
|
+
backgroundRepeat: "no-repeat"
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
const gradientStart = background === "custom" && backgroundGradientStart ? backgroundGradientStart : primaryColor;
|
|
406
|
+
const gradientEnd = background === "custom" && backgroundGradientEnd ? backgroundGradientEnd : secondaryColor;
|
|
407
|
+
return {
|
|
408
|
+
backgroundImage: `linear-gradient(to top, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0) 33%), linear-gradient(${gradientStart}, ${gradientEnd})`,
|
|
409
|
+
backgroundRepeat: "no-repeat",
|
|
410
|
+
backgroundSize: "100% 100%"
|
|
411
|
+
};
|
|
412
|
+
};
|
|
311
413
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
312
414
|
"div",
|
|
313
415
|
{
|
|
314
416
|
className: "relative flex h-[280px] w-full items-start justify-center",
|
|
315
|
-
style:
|
|
316
|
-
|
|
317
|
-
backgroundRepeat: "no-repeat",
|
|
318
|
-
backgroundSize: "100% 100%"
|
|
319
|
-
},
|
|
320
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto mt-[30px] w-full max-w-[1248px] px-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[135px] flex-col justify-between space-y-4 rounded bg-[#ffffffe6] px-6 pt-6 pb-4 shadow-[0_10px_60px_rgba(16,16,16,0.35)]", children: [
|
|
417
|
+
style: getHeaderBackgroundStyle(),
|
|
418
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto mt-[30px] w-full max-w-[1248px] px-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[142px] flex-col justify-between space-y-4 rounded bg-[#ffffffe6] px-6 pt-6 pb-4 shadow-[0_10px_60px_rgba(16,16,16,0.35)]", children: [
|
|
321
419
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
322
|
-
|
|
420
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
323
421
|
logo ? (
|
|
324
422
|
// eslint-disable-next-line @next/next/no-img-element
|
|
325
423
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -334,9 +432,24 @@ var TopNav = async ({
|
|
|
334
432
|
}
|
|
335
433
|
}
|
|
336
434
|
)
|
|
337
|
-
) :
|
|
338
|
-
|
|
339
|
-
|
|
435
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
436
|
+
"svg",
|
|
437
|
+
{
|
|
438
|
+
className: "h-8 w-8 text-gray-400",
|
|
439
|
+
viewBox: "0 0 24 24",
|
|
440
|
+
fill: "none",
|
|
441
|
+
stroke: "currentColor",
|
|
442
|
+
strokeWidth: "1.5",
|
|
443
|
+
"aria-hidden": "true",
|
|
444
|
+
children: [
|
|
445
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
446
|
+
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "12", cy: "12", rx: "4", ry: "10" }),
|
|
447
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 12h20" })
|
|
448
|
+
]
|
|
449
|
+
}
|
|
450
|
+
),
|
|
451
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-bold text-gray-900", children: brandTitle || "Enterprise Portal" })
|
|
452
|
+
] }),
|
|
340
453
|
/* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group relative", children: [
|
|
341
454
|
/* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex cursor-pointer items-center gap-2 text-sm font-medium text-gray-600 hover:text-gray-900 list-none", children: [
|
|
342
455
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -398,7 +511,7 @@ var TopNav = async ({
|
|
|
398
511
|
] })
|
|
399
512
|
] })
|
|
400
513
|
] }),
|
|
401
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-3
|
|
514
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-3 pb-2 text-sm font-medium text-gray-500", children: resolvedLinks.map(({ label, icon, href }) => {
|
|
402
515
|
const isActive = activeLabel === label;
|
|
403
516
|
const className = `flex items-center gap-2 px-4 py-1 transition text-gray-500 ${isActive ? "underline underline-offset-8 decoration-2" : ""}`;
|
|
404
517
|
if (href) {
|