@replicated/portal-components 0.0.11 → 0.0.13

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 (81) hide show
  1. package/components/metadata/registry.json +2 -2
  2. package/components/metadata/registry.md +2 -2
  3. package/datadog/tracer.d.ts +3 -0
  4. package/datadog/tracer.js +82 -0
  5. package/datadog/tracer.ts +101 -0
  6. package/dist/actions/index.d.mts +26 -4
  7. package/dist/actions/index.d.ts +26 -4
  8. package/dist/actions/index.js +171 -124
  9. package/dist/actions/index.js.map +1 -1
  10. package/dist/airgap-instances.js.map +1 -1
  11. package/dist/esm/actions/index.js +170 -124
  12. package/dist/esm/actions/index.js.map +1 -1
  13. package/dist/esm/airgap-instances.js.map +1 -1
  14. package/dist/esm/helm-install-wizard.js +15 -9
  15. package/dist/esm/helm-install-wizard.js.map +1 -1
  16. package/dist/esm/index.js +204 -158
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/install-actions.js +42 -47
  19. package/dist/esm/install-actions.js.map +1 -1
  20. package/dist/esm/install-card.js +8 -21
  21. package/dist/esm/install-card.js.map +1 -1
  22. package/dist/esm/instance-card.js.map +1 -1
  23. package/dist/esm/license-card.js +8 -12
  24. package/dist/esm/license-card.js.map +1 -1
  25. package/dist/esm/license-details.js +21 -11
  26. package/dist/esm/license-details.js.map +1 -1
  27. package/dist/esm/linux-install-wizard.js +26 -47
  28. package/dist/esm/linux-install-wizard.js.map +1 -1
  29. package/dist/esm/online-instance-list.js.map +1 -1
  30. package/dist/esm/support-card.js +22 -55
  31. package/dist/esm/support-card.js.map +1 -1
  32. package/dist/esm/team-settings-card.js +8 -13
  33. package/dist/esm/team-settings-card.js.map +1 -1
  34. package/dist/esm/top-nav.js +69 -47
  35. package/dist/esm/top-nav.js.map +1 -1
  36. package/dist/esm/update-layout.js +69 -47
  37. package/dist/esm/update-layout.js.map +1 -1
  38. package/dist/esm/updates-card.js +8 -14
  39. package/dist/esm/updates-card.js.map +1 -1
  40. package/dist/esm/utils/index.js +14 -10
  41. package/dist/esm/utils/index.js.map +1 -1
  42. package/dist/esm/utils/observability/index.js +193 -0
  43. package/dist/esm/utils/observability/index.js.map +1 -0
  44. package/dist/helm-install-wizard.js +15 -9
  45. package/dist/helm-install-wizard.js.map +1 -1
  46. package/dist/index.d.mts +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.js +203 -156
  49. package/dist/index.js.map +1 -1
  50. package/dist/install-actions.js +43 -48
  51. package/dist/install-actions.js.map +1 -1
  52. package/dist/install-card.js +8 -21
  53. package/dist/install-card.js.map +1 -1
  54. package/dist/instance-card.js.map +1 -1
  55. package/dist/license-card.js +8 -12
  56. package/dist/license-card.js.map +1 -1
  57. package/dist/license-details.js +21 -11
  58. package/dist/license-details.js.map +1 -1
  59. package/dist/linux-install-wizard.js +26 -47
  60. package/dist/linux-install-wizard.js.map +1 -1
  61. package/dist/online-instance-list.js.map +1 -1
  62. package/dist/styles.css +2 -2
  63. package/dist/support-card.js +22 -55
  64. package/dist/support-card.js.map +1 -1
  65. package/dist/team-settings-card.js +8 -13
  66. package/dist/team-settings-card.js.map +1 -1
  67. package/dist/top-nav.js +69 -47
  68. package/dist/top-nav.js.map +1 -1
  69. package/dist/update-layout.js +69 -47
  70. package/dist/update-layout.js.map +1 -1
  71. package/dist/updates-card.js +8 -14
  72. package/dist/updates-card.js.map +1 -1
  73. package/dist/utils/index.js +14 -10
  74. package/dist/utils/index.js.map +1 -1
  75. package/dist/utils/observability/index.d.mts +13 -0
  76. package/dist/utils/observability/index.d.ts +13 -0
  77. package/dist/utils/observability/index.js +198 -0
  78. package/dist/utils/observability/index.js.map +1 -0
  79. package/instrumentation.d.ts +8 -0
  80. package/instrumentation.js +22 -0
  81. package/package.json +16 -3
@@ -12,7 +12,7 @@ var Link__default = /*#__PURE__*/_interopDefault(Link);
12
12
  * This file is generated by tsup. Do not edit manually.
13
13
  */
14
14
 
15
- var UsersIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
15
+ var UsersIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
16
16
  "svg",
17
17
  {
18
18
  xmlns: "http://www.w3.org/2000/svg",
@@ -20,17 +20,14 @@ var UsersIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
20
20
  fill: "none",
21
21
  stroke: "currentColor",
22
22
  strokeWidth: 1.5,
23
+ strokeLinecap: "round",
24
+ strokeLinejoin: "round",
23
25
  "aria-hidden": "true",
24
26
  ...props,
25
- children: [
26
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
27
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 10, cy: 8, r: 4 }),
28
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 21v-2a4 4 0 0 0-3-3.87" }),
29
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17 3a4 4 0 0 1 0 8" })
30
- ]
27
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" })
31
28
  }
32
29
  );
33
- var KeyIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
30
+ var KeyIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
34
31
  "svg",
35
32
  {
36
33
  xmlns: "http://www.w3.org/2000/svg",
@@ -38,13 +35,11 @@ var KeyIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
38
35
  fill: "none",
39
36
  stroke: "currentColor",
40
37
  strokeWidth: 1.5,
38
+ strokeLinecap: "round",
39
+ strokeLinejoin: "round",
41
40
  "aria-hidden": "true",
42
41
  ...props,
43
- children: [
44
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 7, cy: 15, r: 4 }),
45
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m10.85 12.15 4.3-4.3a2 2 0 0 1 2.83 0l.47.47a2 2 0 0 1 0 2.83l-4.3 4.3" }),
46
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 11l1.5 1.5" })
47
- ]
42
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z" })
48
43
  }
49
44
  );
50
45
  var baseCardClass = "flex h-full flex-col rounded-xl border border-gray-200 bg-white p-6 shadow-[0_16px_32px_rgba(15,23,42,0.05)]";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/team-settings-card.tsx"],"names":["jsxs","jsx","Link"],"mappings":"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","file":"team-settings-card.js","sourcesContent":["import type { SVGProps } from \"react\";\nimport Link from \"next/link\";\n\nconst UsersIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx={10} cy={8} r={4} />\n <path d=\"M20 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M17 3a4 4 0 0 1 0 8\" />\n </svg>\n);\n\nconst KeyIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx={7} cy={15} r={4} />\n <path d=\"m10.85 12.15 4.3-4.3a2 2 0 0 1 2.83 0l.47.47a2 2 0 0 1 0 2.83l-4.3 4.3\" />\n <path d=\"M16 11l1.5 1.5\" />\n </svg>\n);\n\nconst baseCardClass =\n \"flex h-full flex-col rounded-xl border border-gray-200 bg-white p-6 shadow-[0_16px_32px_rgba(15,23,42,0.05)]\";\nconst headingClass = \"text-lg font-semibold text-gray-900\";\nconst contentClass = \"mt-4 flex-1 space-y-3\";\nconst itemClass = \"flex items-center gap-3 text-sm text-gray-600\";\nconst iconClass = \"h-5 w-5 text-gray-500\";\nconst footerClass =\n \"mt-6 flex justify-end text-sm font-semibold text-primary hover:text-primary/80\";\n\nexport interface TeamSettingsCardProps {\n /** Number of team members */\n userCount?: number;\n /** Number of service accounts */\n serviceAccountCount?: number;\n}\n\nexport const TeamSettingsCard = ({\n userCount = 0,\n serviceAccountCount = 0\n}: TeamSettingsCardProps) => (\n <section className={baseCardClass} aria-labelledby=\"team-settings-card-heading\">\n <header>\n <h2 id=\"team-settings-card-heading\" className={headingClass}>\n Team Settings\n </h2>\n </header>\n <div className={contentClass}>\n <div className={itemClass}>\n <UsersIcon className={iconClass} />\n <span>\n {userCount} Team {userCount === 1 ? \"Member\" : \"Members\"}\n </span>\n </div>\n <div className={itemClass}>\n <KeyIcon className={iconClass} />\n <span>\n {serviceAccountCount} Service {serviceAccountCount === 1 ? \"Account\" : \"Accounts\"}\n </span>\n </div>\n </div>\n <footer className={footerClass}>\n <Link href=\"/team-settings\">View team settings →</Link>\n </footer>\n </section>\n);\n\nTeamSettingsCard.displayName = \"TeamSettingsCard\";\n"]}
1
+ {"version":3,"sources":["../src/components/team-settings-card.tsx"],"names":["jsx","jsxs","Link"],"mappings":";;;;;;;;;;;;;;AAGA,IAAM,SAAA,GAAY,CAAC,KAAA,qBACjBA,cAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,GAAA;AAAA,IACb,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,4WAAA,EAA6W;AAAA;AACvX,CAAA;AAGF,IAAM,OAAA,GAAU,CAAC,KAAA,qBACfA,cAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,GAAA;AAAA,IACb,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,4MAAA,EAA6M;AAAA;AACvN,CAAA;AAGF,IAAM,aAAA,GACJ,8GAAA;AACF,IAAM,YAAA,GAAe,qCAAA;AACrB,IAAM,YAAA,GAAe,uBAAA;AACrB,IAAM,SAAA,GAAY,+CAAA;AAClB,IAAM,SAAA,GAAY,uBAAA;AAClB,IAAM,WAAA,GACJ,gFAAA;AASK,IAAM,mBAAmB,CAAC;AAAA,EAC/B,SAAA,GAAY,CAAA;AAAA,EACZ,mBAAA,GAAsB;AACxB,CAAA,qBACEC,eAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,aAAA,EAAe,mBAAgB,4BAAA,EACjD,QAAA,EAAA;AAAA,kBAAAD,cAAA,CAAC,QAAA,EAAA,EACC,yCAAC,IAAA,EAAA,EAAG,EAAA,EAAG,8BAA6B,SAAA,EAAW,YAAA,EAAc,2BAE7D,CAAA,EACF,CAAA;AAAA,kBACAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,EACd,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAW,SAAA,EACd,QAAA,EAAA;AAAA,sBAAAD,cAAA,CAAC,SAAA,EAAA,EAAU,WAAW,SAAA,EAAW,CAAA;AAAA,sCAChC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAAU,QAAA;AAAA,QAAO,SAAA,KAAc,IAAI,QAAA,GAAW;AAAA,OAAA,EACjD;AAAA,KAAA,EACF,CAAA;AAAA,oBACAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAA,EACd,QAAA,EAAA;AAAA,sBAAAD,cAAA,CAAC,OAAA,EAAA,EAAQ,WAAW,SAAA,EAAW,CAAA;AAAA,sCAC9B,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,mBAAA;AAAA,QAAoB,WAAA;AAAA,QAAU,mBAAA,KAAwB,IAAI,SAAA,GAAY;AAAA,OAAA,EACzE;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAAA,kBACAA,cAAA,CAAC,YAAO,SAAA,EAAW,WAAA,EACjB,yCAACE,qBAAA,EAAA,EAAK,IAAA,EAAK,gBAAA,EAAiB,QAAA,EAAA,2BAAA,EAAoB,CAAA,EAClD;AAAA,CAAA,EACF;AAGF,gBAAA,CAAiB,WAAA,GAAc,kBAAA","file":"team-settings-card.js","sourcesContent":["import type { SVGProps } from \"react\";\nimport Link from \"next/link\";\n\nconst UsersIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z\" />\n </svg>\n);\n\nconst KeyIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z\" />\n </svg>\n);\n\nconst baseCardClass =\n \"flex h-full flex-col rounded-xl border border-gray-200 bg-white p-6 shadow-[0_16px_32px_rgba(15,23,42,0.05)]\";\nconst headingClass = \"text-lg font-semibold text-gray-900\";\nconst contentClass = \"mt-4 flex-1 space-y-3\";\nconst itemClass = \"flex items-center gap-3 text-sm text-gray-600\";\nconst iconClass = \"h-5 w-5 text-gray-500\";\nconst footerClass =\n \"mt-6 flex justify-end text-sm font-semibold text-primary hover:text-primary/80\";\n\nexport interface TeamSettingsCardProps {\n /** Number of team members */\n userCount?: number;\n /** Number of service accounts */\n serviceAccountCount?: number;\n}\n\nexport const TeamSettingsCard = ({\n userCount = 0,\n serviceAccountCount = 0\n}: TeamSettingsCardProps) => (\n <section className={baseCardClass} aria-labelledby=\"team-settings-card-heading\">\n <header>\n <h2 id=\"team-settings-card-heading\" className={headingClass}>\n Team Settings\n </h2>\n </header>\n <div className={contentClass}>\n <div className={itemClass}>\n <UsersIcon className={iconClass} />\n <span>\n {userCount} Team {userCount === 1 ? \"Member\" : \"Members\"}\n </span>\n </div>\n <div className={itemClass}>\n <KeyIcon className={iconClass} />\n <span>\n {serviceAccountCount} Service {serviceAccountCount === 1 ? \"Account\" : \"Accounts\"}\n </span>\n </div>\n </div>\n <footer className={footerClass}>\n <Link href=\"/team-settings\">View team settings →</Link>\n </footer>\n </section>\n);\n\nTeamSettingsCard.displayName = \"TeamSettingsCard\";\n"]}
package/dist/top-nav.js CHANGED
@@ -24,12 +24,12 @@ var fetchCustomBrandingImpl = async () => {
24
24
  if (!appSlug) {
25
25
  throw new Error("PORTAL_APP_SLUG is not configured");
26
26
  }
27
- const url = `${getApiOrigin()}/v3/custom-branding?app_slug=${encodeURIComponent(
27
+ const url = `${getApiOrigin()}/enterprise-portal/public/branding?app_slug=${encodeURIComponent(
28
28
  appSlug
29
29
  )}`;
30
30
  if (process.env.NODE_ENV !== "production") {
31
31
  console.debug(
32
- "[portal-components] fetching custom branding via %s",
32
+ "[portal-components] fetching custom branding via %s (Enterprise Portal API)",
33
33
  url
34
34
  );
35
35
  }
@@ -44,17 +44,21 @@ var fetchCustomBrandingImpl = async () => {
44
44
  );
45
45
  }
46
46
  const payload = await response.json();
47
- const brandingData = payload?.branding_data;
48
- if (typeof brandingData !== "string") {
49
- throw new Error("Custom branding response missing branding_data string");
50
- }
47
+ const brandingObject = {
48
+ logo: payload.logoUrl,
49
+ title: payload.appName,
50
+ customColor1: payload.primaryColor,
51
+ customColor2: payload.secondaryColor,
52
+ favicon: payload.faviconUrl
53
+ };
54
+ const brandingData = buffer.Buffer.from(JSON.stringify(brandingObject)).toString("base64");
51
55
  return {
52
56
  brandingData,
53
- documentation: payload?.documentation ?? null
57
+ documentation: null
58
+ // Documentation not included in new API's public endpoint
54
59
  };
55
60
  };
56
61
  var fetchCustomBranding = react.cache(fetchCustomBrandingImpl);
57
- var defaultHiddenLabels = ["Download"];
58
62
  var defaultTopNavLinks = [
59
63
  {
60
64
  label: "Dashboard",
@@ -67,16 +71,21 @@ var defaultTopNavLinks = [
67
71
  className: "h-4 w-4",
68
72
  fill: "none",
69
73
  stroke: "currentColor",
70
- strokeWidth: "1.5",
74
+ strokeWidth: "2",
75
+ strokeLinecap: "round",
76
+ strokeLinejoin: "round",
71
77
  children: [
72
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 13h6V3H4z" }),
73
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 21h6V3h-6z" })
78
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "9", x: "3", y: "3", rx: "1" }),
79
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "5", x: "14", y: "3", rx: "1" }),
80
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "9", x: "14", y: "12", rx: "1" }),
81
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "5", x: "3", y: "16", rx: "1" })
74
82
  ]
75
83
  }
76
84
  )
77
85
  },
78
86
  {
79
- label: "Download",
87
+ label: "Install",
88
+ href: "/install",
80
89
  icon: /* @__PURE__ */ jsxRuntime.jsxs(
81
90
  "svg",
82
91
  {
@@ -85,18 +94,20 @@ var defaultTopNavLinks = [
85
94
  className: "h-4 w-4",
86
95
  fill: "none",
87
96
  stroke: "currentColor",
88
- strokeWidth: "1.5",
97
+ strokeWidth: "2",
98
+ strokeLinecap: "round",
99
+ strokeLinejoin: "round",
89
100
  children: [
90
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 3v12" }),
91
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m7 11 5 5 5-5" }),
92
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 21h14" })
101
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
102
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "7 10 12 15 17 10" }),
103
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
93
104
  ]
94
105
  }
95
106
  )
96
107
  },
97
108
  {
98
- label: "Install",
99
- href: "/install",
109
+ label: "Update",
110
+ href: "/update",
100
111
  icon: /* @__PURE__ */ jsxRuntime.jsxs(
101
112
  "svg",
102
113
  {
@@ -105,18 +116,20 @@ var defaultTopNavLinks = [
105
116
  className: "h-4 w-4",
106
117
  fill: "none",
107
118
  stroke: "currentColor",
108
- strokeWidth: "1.5",
119
+ strokeWidth: "2",
120
+ strokeLinecap: "round",
121
+ strokeLinejoin: "round",
109
122
  children: [
110
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5v14" }),
111
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 12h14" })
123
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8" }),
124
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 3v5h-5" })
112
125
  ]
113
126
  }
114
127
  )
115
128
  },
116
129
  {
117
- label: "Update",
118
- href: "/update",
119
- icon: /* @__PURE__ */ jsxRuntime.jsxs(
130
+ label: "Security",
131
+ href: "/security",
132
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
120
133
  "svg",
121
134
  {
122
135
  xmlns: "http://www.w3.org/2000/svg",
@@ -124,12 +137,10 @@ var defaultTopNavLinks = [
124
137
  className: "h-4 w-4",
125
138
  fill: "none",
126
139
  stroke: "currentColor",
127
- strokeWidth: "1.5",
128
- children: [
129
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 4v6h6" }),
130
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 20v-6h-6" }),
131
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10c1.5-4 6-6 10-4m6 4c-1.5 4-6 6-10 4" })
132
- ]
140
+ strokeWidth: "2",
141
+ strokeLinecap: "round",
142
+ strokeLinejoin: "round",
143
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" })
133
144
  }
134
145
  )
135
146
  },
@@ -144,10 +155,15 @@ var defaultTopNavLinks = [
144
155
  className: "h-4 w-4",
145
156
  fill: "none",
146
157
  stroke: "currentColor",
147
- strokeWidth: "1.5",
158
+ strokeWidth: "2",
159
+ strokeLinecap: "round",
160
+ strokeLinejoin: "round",
148
161
  children: [
149
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 8v4l3 2" }),
150
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9" })
162
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
163
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" }),
164
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 9H8" }),
165
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 13H8" }),
166
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 17H8" })
151
167
  ]
152
168
  }
153
169
  )
@@ -163,12 +179,13 @@ var defaultTopNavLinks = [
163
179
  className: "h-4 w-4",
164
180
  fill: "none",
165
181
  stroke: "currentColor",
166
- strokeWidth: "1.5",
182
+ strokeWidth: "2",
183
+ strokeLinecap: "round",
184
+ strokeLinejoin: "round",
167
185
  children: [
168
- /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "14", height: "18", x: "5", y: "3", rx: "2" }),
169
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 7h6" }),
170
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 11h6" }),
171
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 15h6" })
186
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4" }),
187
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m21 2-9.6 9.6" }),
188
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "7.5", cy: "15.5", r: "5.5" })
172
189
  ]
173
190
  }
174
191
  )
@@ -184,10 +201,16 @@ var defaultTopNavLinks = [
184
201
  className: "h-4 w-4",
185
202
  fill: "none",
186
203
  stroke: "currentColor",
187
- strokeWidth: "1.5",
204
+ strokeWidth: "2",
205
+ strokeLinecap: "round",
206
+ strokeLinejoin: "round",
188
207
  children: [
189
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 16a6 6 0 1 0-12 0v2h12Z" }),
190
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "7", r: "4" })
208
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
209
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m4.93 4.93 4.24 4.24" }),
210
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m14.83 9.17 4.24-4.24" }),
211
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m14.83 14.83 4.24 4.24" }),
212
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9.17 14.83-4.24 4.24" }),
213
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4" })
191
214
  ]
192
215
  }
193
216
  )
@@ -273,8 +296,7 @@ var TopNav = async ({
273
296
  console.debug("[portal-components] branding fetch failed", error);
274
297
  }
275
298
  const baseLinks = links ?? defaultTopNavLinks;
276
- const computedHiddenLabels = hiddenLabels ? hiddenLabels : links ? void 0 : defaultHiddenLabels;
277
- const hiddenSet = computedHiddenLabels ? new Set(computedHiddenLabels) : null;
299
+ const hiddenSet = hiddenLabels ? new Set(hiddenLabels) : null;
278
300
  let resolvedLinks = baseLinks.filter(
279
301
  (link) => !hiddenSet?.has(link.label)
280
302
  );
@@ -287,7 +309,7 @@ var TopNav = async ({
287
309
  return /* @__PURE__ */ jsxRuntime.jsx(
288
310
  "div",
289
311
  {
290
- className: "relative flex h-[165px] w-full items-start justify-center",
312
+ className: "relative flex h-[280px] w-full items-start justify-center",
291
313
  style: {
292
314
  backgroundImage: `linear-gradient(to top, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0) 33%), linear-gradient(${gradientStart}, ${gradientEnd})`,
293
315
  backgroundRepeat: "no-repeat",
@@ -314,7 +336,7 @@ var TopNav = async ({
314
336
  brandTitle ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold text-gray-900", children: brandTitle }) : null
315
337
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
316
338
  /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group relative", children: [
317
- /* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex cursor-pointer items-center gap-2 rounded-lg bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 list-none", children: [
339
+ /* @__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: [
318
340
  /* @__PURE__ */ jsxRuntime.jsxs(
319
341
  "svg",
320
342
  {
@@ -386,12 +408,12 @@ var TopNav = async ({
386
408
  const className = `flex items-center gap-2 px-4 py-1 transition text-gray-500 ${isActive ? "underline underline-offset-8 decoration-2" : ""}`;
387
409
  if (href) {
388
410
  return /* @__PURE__ */ jsxRuntime.jsxs(Link__default.default, { href, className, children: [
389
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-rose-600" : "text-gray-500", children: icon }),
411
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-gray-900" : "text-gray-500", children: icon }),
390
412
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
391
413
  ] }, label);
392
414
  }
393
415
  return /* @__PURE__ */ jsxRuntime.jsxs("button", { className, type: "button", children: [
394
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-rose-600" : "text-gray-500", children: icon }),
416
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-gray-900" : "text-gray-500", children: icon }),
395
417
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
396
418
  ] }, label);
397
419
  }) })