@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.
Files changed (168) hide show
  1. package/components/metadata/registry.json +2 -2
  2. package/components/metadata/registry.md +2 -2
  3. package/dist/actions/branding-actions.js +6 -4
  4. package/dist/actions/branding-actions.js.map +1 -1
  5. package/dist/actions/change-team.js +1 -0
  6. package/dist/actions/change-team.js.map +1 -1
  7. package/dist/actions/index.d.mts +1 -1
  8. package/dist/actions/index.d.ts +1 -1
  9. package/dist/actions/index.js +1 -50
  10. package/dist/actions/index.js.map +1 -1
  11. package/dist/actions/install-actions.d.mts +1 -1
  12. package/dist/actions/install-actions.d.ts +1 -1
  13. package/dist/actions/install-actions.js +1 -0
  14. package/dist/actions/install-actions.js.map +1 -1
  15. package/dist/actions/invite-actions.js +6 -5
  16. package/dist/actions/invite-actions.js.map +1 -1
  17. package/dist/actions/magic-link-actions.js +6 -5
  18. package/dist/actions/magic-link-actions.js.map +1 -1
  19. package/dist/actions/service-account.d.mts +1 -1
  20. package/dist/actions/service-account.d.ts +1 -1
  21. package/dist/actions/service-account.js +1 -0
  22. package/dist/actions/service-account.js.map +1 -1
  23. package/dist/actions/support-bundles.d.mts +1 -1
  24. package/dist/actions/support-bundles.d.ts +1 -1
  25. package/dist/actions/support-bundles.js +1 -50
  26. package/dist/actions/support-bundles.js.map +1 -1
  27. package/dist/actions/team-settings.d.mts +1 -1
  28. package/dist/actions/team-settings.d.ts +1 -1
  29. package/dist/actions/team-settings.js +1 -0
  30. package/dist/actions/team-settings.js.map +1 -1
  31. package/dist/actions/trial-signup-actions.js +6 -5
  32. package/dist/actions/trial-signup-actions.js.map +1 -1
  33. package/dist/actions/trial-signup.js +6 -5
  34. package/dist/actions/trial-signup.js.map +1 -1
  35. package/dist/actions/user-settings.d.mts +1 -1
  36. package/dist/actions/user-settings.d.ts +1 -1
  37. package/dist/actions/user-settings.js +1 -0
  38. package/dist/actions/user-settings.js.map +1 -1
  39. package/dist/airgap-instances.d.mts +1 -1
  40. package/dist/airgap-instances.d.ts +1 -1
  41. package/dist/airgap-instances.js +25 -25
  42. package/dist/airgap-instances.js.map +1 -1
  43. package/dist/{saml-handlers.d.mts → api/saml.d.mts} +2 -2
  44. package/dist/{saml-handlers.d.ts → api/saml.d.ts} +2 -2
  45. package/dist/{saml-handlers.js → api/saml.js} +4 -3
  46. package/dist/api/saml.js.map +1 -0
  47. package/dist/api/support-bundles.d.mts +22 -0
  48. package/dist/api/support-bundles.d.ts +22 -0
  49. package/dist/api/support-bundles.js +245 -0
  50. package/dist/api/support-bundles.js.map +1 -0
  51. package/dist/{branding-BsMSywts.d.mts → branding-DmsrDTNE.d.mts} +2 -1
  52. package/dist/{branding-BsMSywts.d.ts → branding-DmsrDTNE.d.ts} +2 -1
  53. package/dist/esm/actions/branding-actions.js +6 -4
  54. package/dist/esm/actions/branding-actions.js.map +1 -1
  55. package/dist/esm/actions/change-team.js +1 -0
  56. package/dist/esm/actions/change-team.js.map +1 -1
  57. package/dist/esm/actions/index.js +2 -50
  58. package/dist/esm/actions/index.js.map +1 -1
  59. package/dist/esm/actions/install-actions.js +1 -0
  60. package/dist/esm/actions/install-actions.js.map +1 -1
  61. package/dist/esm/actions/invite-actions.js +6 -5
  62. package/dist/esm/actions/invite-actions.js.map +1 -1
  63. package/dist/esm/actions/magic-link-actions.js +6 -5
  64. package/dist/esm/actions/magic-link-actions.js.map +1 -1
  65. package/dist/esm/actions/service-account.js +1 -0
  66. package/dist/esm/actions/service-account.js.map +1 -1
  67. package/dist/esm/actions/support-bundles.js +2 -50
  68. package/dist/esm/actions/support-bundles.js.map +1 -1
  69. package/dist/esm/actions/team-settings.js +1 -0
  70. package/dist/esm/actions/team-settings.js.map +1 -1
  71. package/dist/esm/actions/trial-signup-actions.js +6 -5
  72. package/dist/esm/actions/trial-signup-actions.js.map +1 -1
  73. package/dist/esm/actions/trial-signup.js +6 -5
  74. package/dist/esm/actions/trial-signup.js.map +1 -1
  75. package/dist/esm/actions/user-settings.js +1 -0
  76. package/dist/esm/actions/user-settings.js.map +1 -1
  77. package/dist/esm/airgap-instances.js +25 -25
  78. package/dist/esm/airgap-instances.js.map +1 -1
  79. package/dist/esm/{saml-handlers.js → api/saml.js} +4 -3
  80. package/dist/esm/api/saml.js.map +1 -0
  81. package/dist/esm/api/support-bundles.js +243 -0
  82. package/dist/esm/api/support-bundles.js.map +1 -0
  83. package/dist/esm/helm-install-wizard.js +1 -0
  84. package/dist/esm/helm-install-wizard.js.map +1 -1
  85. package/dist/esm/index.js +262 -215
  86. package/dist/esm/index.js.map +1 -1
  87. package/dist/esm/install-actions.js +1 -0
  88. package/dist/esm/install-actions.js.map +1 -1
  89. package/dist/esm/instance-card.js +25 -25
  90. package/dist/esm/instance-card.js.map +1 -1
  91. package/dist/esm/license-details.js +1 -0
  92. package/dist/esm/license-details.js.map +1 -1
  93. package/dist/esm/linux-install-wizard.js +1 -0
  94. package/dist/esm/linux-install-wizard.js.map +1 -1
  95. package/dist/esm/online-instance-list.js +25 -25
  96. package/dist/esm/online-instance-list.js.map +1 -1
  97. package/dist/esm/saml-callback-client.js.map +1 -1
  98. package/dist/esm/support-card.js +1 -0
  99. package/dist/esm/support-card.js.map +1 -1
  100. package/dist/esm/top-nav.js +82 -79
  101. package/dist/esm/top-nav.js.map +1 -1
  102. package/dist/esm/update-layout.js +82 -79
  103. package/dist/esm/update-layout.js.map +1 -1
  104. package/dist/esm/upload-support-bundle-modal.js +46 -16
  105. package/dist/esm/upload-support-bundle-modal.js.map +1 -1
  106. package/dist/esm/utils/index.js +48 -1
  107. package/dist/esm/utils/index.js.map +1 -1
  108. package/dist/helm-install-wizard.d.mts +2 -2
  109. package/dist/helm-install-wizard.d.ts +2 -2
  110. package/dist/helm-install-wizard.js +1 -0
  111. package/dist/helm-install-wizard.js.map +1 -1
  112. package/dist/{index-DXy7RxOX.d.ts → index-Bcp17Mf3.d.ts} +1 -16
  113. package/dist/{index-JX9-CIMA.d.mts → index-DaH1bSuO.d.mts} +1 -16
  114. package/dist/index.d.mts +5 -4
  115. package/dist/index.d.ts +5 -4
  116. package/dist/index.js +262 -214
  117. package/dist/index.js.map +1 -1
  118. package/dist/install-actions.d.mts +2 -2
  119. package/dist/install-actions.d.ts +2 -2
  120. package/dist/install-actions.js +1 -0
  121. package/dist/install-actions.js.map +1 -1
  122. package/dist/instance-card.d.mts +1 -1
  123. package/dist/instance-card.d.ts +1 -1
  124. package/dist/instance-card.js +25 -25
  125. package/dist/instance-card.js.map +1 -1
  126. package/dist/license-details.js +1 -0
  127. package/dist/license-details.js.map +1 -1
  128. package/dist/linux-install-wizard.d.mts +2 -2
  129. package/dist/linux-install-wizard.d.ts +2 -2
  130. package/dist/linux-install-wizard.js +1 -0
  131. package/dist/linux-install-wizard.js.map +1 -1
  132. package/dist/online-instance-list.d.mts +1 -1
  133. package/dist/online-instance-list.d.ts +1 -1
  134. package/dist/online-instance-list.js +25 -25
  135. package/dist/online-instance-list.js.map +1 -1
  136. package/dist/pending-installations.d.mts +1 -1
  137. package/dist/pending-installations.d.ts +1 -1
  138. package/dist/saml-callback-client.d.mts +1 -1
  139. package/dist/saml-callback-client.d.ts +1 -1
  140. package/dist/saml-callback-client.js.map +1 -1
  141. package/dist/security-card.d.mts +1 -1
  142. package/dist/security-card.d.ts +1 -1
  143. package/dist/styles.css +4 -0
  144. package/dist/support-bundles-card.d.mts +1 -1
  145. package/dist/support-bundles-card.d.ts +1 -1
  146. package/dist/support-card.js +1 -0
  147. package/dist/support-card.js.map +1 -1
  148. package/dist/{top-nav-CEqw0KpO.d.ts → top-nav-8f2U69MF.d.ts} +1 -1
  149. package/dist/{top-nav-BUQAGoG1.d.mts → top-nav-B2yA3PC7.d.mts} +1 -1
  150. package/dist/top-nav.d.mts +2 -2
  151. package/dist/top-nav.d.ts +2 -2
  152. package/dist/top-nav.js +82 -79
  153. package/dist/top-nav.js.map +1 -1
  154. package/dist/update-layout.js +82 -79
  155. package/dist/update-layout.js.map +1 -1
  156. package/dist/upload-support-bundle-modal.d.mts +9 -9
  157. package/dist/upload-support-bundle-modal.d.ts +9 -9
  158. package/dist/upload-support-bundle-modal.js +46 -16
  159. package/dist/upload-support-bundle-modal.js.map +1 -1
  160. package/dist/upload-with-progress-D760HthX.d.mts +35 -0
  161. package/dist/upload-with-progress-D760HthX.d.ts +35 -0
  162. package/dist/utils/index.d.mts +3 -2
  163. package/dist/utils/index.d.ts +3 -2
  164. package/dist/utils/index.js +48 -0
  165. package/dist/utils/index.js.map +1 -1
  166. package/package.json +10 -5
  167. package/dist/esm/saml-handlers.js.map +0 -1
  168. package/dist/saml-handlers.js.map +0 -1
@@ -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,