@replicated/portal-components 0.0.10 → 0.0.12
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/datadog/tracer.d.ts +3 -0
- package/datadog/tracer.js +82 -0
- package/datadog/tracer.ts +101 -0
- package/dist/esm/index.js +93 -66
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install-card.js +8 -21
- package/dist/esm/install-card.js.map +1 -1
- package/dist/esm/license-card.js +8 -12
- package/dist/esm/license-card.js.map +1 -1
- package/dist/esm/license-details.js +1 -1
- package/dist/esm/license-details.js.map +1 -1
- package/dist/esm/support-card.js +4 -6
- package/dist/esm/support-card.js.map +1 -1
- package/dist/esm/team-settings-card.js +8 -13
- package/dist/esm/team-settings-card.js.map +1 -1
- package/dist/esm/top-nav.js +71 -31
- package/dist/esm/top-nav.js.map +1 -1
- package/dist/esm/update-layout.js +71 -31
- package/dist/esm/update-layout.js.map +1 -1
- package/dist/esm/updates-card.js +8 -14
- package/dist/esm/updates-card.js.map +1 -1
- package/dist/esm/utils/observability/index.js +193 -0
- package/dist/esm/utils/observability/index.js.map +1 -0
- package/dist/index.js +93 -66
- package/dist/index.js.map +1 -1
- package/dist/install-card.js +8 -21
- package/dist/install-card.js.map +1 -1
- package/dist/license-card.js +8 -12
- package/dist/license-card.js.map +1 -1
- package/dist/license-details.js +1 -1
- package/dist/license-details.js.map +1 -1
- package/dist/styles.css +2 -2
- package/dist/support-card.js +4 -6
- package/dist/support-card.js.map +1 -1
- package/dist/team-settings-card.js +8 -13
- package/dist/team-settings-card.js.map +1 -1
- package/dist/top-nav.js +71 -31
- package/dist/top-nav.js.map +1 -1
- package/dist/update-layout.js +71 -31
- package/dist/update-layout.js.map +1 -1
- package/dist/updates-card.js +8 -14
- package/dist/updates-card.js.map +1 -1
- package/dist/utils/observability/index.d.mts +13 -0
- package/dist/utils/observability/index.d.ts +13 -0
- package/dist/utils/observability/index.js +198 -0
- package/dist/utils/observability/index.js.map +1 -0
- package/instrumentation.d.ts +8 -0
- package/instrumentation.js +22 -0
- package/package.json +16 -3
package/dist/esm/updates-card.js
CHANGED
|
@@ -6,7 +6,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
6
6
|
* This file is generated by tsup. Do not edit manually.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
var GlobeIcon = (props) => /* @__PURE__ */
|
|
9
|
+
var GlobeIcon = (props) => /* @__PURE__ */ jsx(
|
|
10
10
|
"svg",
|
|
11
11
|
{
|
|
12
12
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -14,16 +14,14 @@ var GlobeIcon = (props) => /* @__PURE__ */ jsxs(
|
|
|
14
14
|
fill: "none",
|
|
15
15
|
stroke: "currentColor",
|
|
16
16
|
strokeWidth: 1.5,
|
|
17
|
+
strokeLinecap: "round",
|
|
18
|
+
strokeLinejoin: "round",
|
|
17
19
|
"aria-hidden": "true",
|
|
18
20
|
...props,
|
|
19
|
-
children:
|
|
20
|
-
/* @__PURE__ */ jsx("circle", { cx: 12, cy: 12, r: 10 }),
|
|
21
|
-
/* @__PURE__ */ jsx("path", { d: "M2 12h20" }),
|
|
22
|
-
/* @__PURE__ */ jsx("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z" })
|
|
23
|
-
]
|
|
21
|
+
children: /* @__PURE__ */ jsx("path", { d: "M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418" })
|
|
24
22
|
}
|
|
25
23
|
);
|
|
26
|
-
var AirGapIcon = (props) => /* @__PURE__ */
|
|
24
|
+
var AirGapIcon = (props) => /* @__PURE__ */ jsx(
|
|
27
25
|
"svg",
|
|
28
26
|
{
|
|
29
27
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -31,15 +29,11 @@ var AirGapIcon = (props) => /* @__PURE__ */ jsxs(
|
|
|
31
29
|
fill: "none",
|
|
32
30
|
stroke: "currentColor",
|
|
33
31
|
strokeWidth: 1.5,
|
|
32
|
+
strokeLinecap: "round",
|
|
33
|
+
strokeLinejoin: "round",
|
|
34
34
|
"aria-hidden": "true",
|
|
35
35
|
...props,
|
|
36
|
-
children:
|
|
37
|
-
/* @__PURE__ */ jsx("path", { d: "m4 4 16 16" }),
|
|
38
|
-
/* @__PURE__ */ jsx("path", { d: "M7.5 4.5a8 8 0 0 1 9 0" }),
|
|
39
|
-
/* @__PURE__ */ jsx("path", { d: "M4.5 7.5a8 8 0 0 0 0 9" }),
|
|
40
|
-
/* @__PURE__ */ jsx("path", { d: "M16.5 19.5a8 8 0 0 0 0-9" }),
|
|
41
|
-
/* @__PURE__ */ jsx("path", { d: "M7 12a5 5 0 0 0 5 5" })
|
|
42
|
-
]
|
|
36
|
+
children: /* @__PURE__ */ jsx("path", { d: "M13.181 8.68a4.503 4.503 0 0 1 1.903 6.405m-9.768-2.782L3.56 14.06a4.5 4.5 0 0 0 6.364 6.365l3.129-3.129m5.614-5.615 1.757-1.757a4.5 4.5 0 0 0-6.364-6.365l-4.5 4.5c-.258.26-.479.541-.661.84m1.903 6.405a4.495 4.495 0 0 1-1.242-.88 4.483 4.483 0 0 1-1.062-1.683m6.587 2.345 5.907 5.907m-5.907-5.907L8.898 8.898M2.991 2.99 8.898 8.9" })
|
|
43
37
|
}
|
|
44
38
|
);
|
|
45
39
|
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/updates-card.tsx"],"names":[],"mappings":";;;;;;;;AAGA,IAAM,SAAA,GAAY,CAAC,KAAA,qBACjB,
|
|
1
|
+
{"version":3,"sources":["../../src/components/updates-card.tsx"],"names":[],"mappings":"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","file":"updates-card.js","sourcesContent":["import type { SVGProps } from \"react\";\nimport Link from \"next/link\";\n\nconst GlobeIcon = (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=\"M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418\" />\n </svg>\n);\n\nconst AirGapIcon = (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=\"M13.181 8.68a4.503 4.503 0 0 1 1.903 6.405m-9.768-2.782L3.56 14.06a4.5 4.5 0 0 0 6.364 6.365l3.129-3.129m5.614-5.615 1.757-1.757a4.5 4.5 0 0 0-6.364-6.365l-4.5 4.5c-.258.26-.479.541-.661.84m1.903 6.405a4.495 4.495 0 0 1-1.242-.88 4.483 4.483 0 0 1-1.062-1.683m6.587 2.345 5.907 5.907m-5.907-5.907L8.898 8.898M2.991 2.99 8.898 8.9\" />\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\";\nconst badgeClass =\n \"ml-2 inline-flex h-5 min-w-[20px] items-center justify-center rounded-full bg-blue-500 px-1.5 text-xs font-medium text-white\";\n\nexport interface UpdatesCardProps {\n /** Number of active online instances (checked in within 24 hours) */\n onlineActiveCount?: number;\n /** Number of air gap instances */\n airgapCount?: number;\n /** Number of updates available for online instances */\n onlineUpdates?: number;\n /** Number of updates available for airgap instances */\n airgapUpdates?: number;\n}\n\nconst Badge = ({ count }: { count: number }) => (\n <span className={badgeClass} aria-label={`${count} updates available`}>\n {count}\n </span>\n);\n\nexport const UpdatesCard = ({\n onlineActiveCount = 0,\n airgapCount = 0,\n onlineUpdates = 0,\n airgapUpdates = 0\n}: UpdatesCardProps) => (\n <section className={baseCardClass} aria-labelledby=\"updates-card-heading\">\n <header>\n <h2 id=\"updates-card-heading\" className={headingClass}>\n Updates\n </h2>\n </header>\n <div className={contentClass}>\n <div className={itemClass}>\n <GlobeIcon className={iconClass} />\n <span>\n {onlineActiveCount} Active Online {onlineActiveCount === 1 ? \"instance\" : \"instances\"}\n </span>\n {onlineUpdates > 0 && <Badge count={onlineUpdates} />}\n </div>\n <div className={itemClass}>\n <AirGapIcon className={iconClass} />\n <span>\n {airgapCount} Air gap {airgapCount === 1 ? \"instance\" : \"instances\"}\n </span>\n {airgapUpdates > 0 && <Badge count={airgapUpdates} />}\n </div>\n </div>\n <footer className={footerClass}>\n <Link href=\"/update\">View updates →</Link>\n </footer>\n </section>\n);\n\nUpdatesCard.displayName = \"UpdatesCard\";\n"]}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise Portal Components
|
|
3
|
+
* This file is generated by tsup. Do not edit manually.
|
|
4
|
+
*/
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
10
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
11
|
+
}) : x)(function(x) {
|
|
12
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
13
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
14
|
+
});
|
|
15
|
+
var __esm = (fn, res) => function __init() {
|
|
16
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
17
|
+
};
|
|
18
|
+
var __export = (target, all) => {
|
|
19
|
+
for (var name in all)
|
|
20
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
21
|
+
};
|
|
22
|
+
var __copyProps = (to, from, except, desc) => {
|
|
23
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(from))
|
|
25
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
26
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
+
}
|
|
28
|
+
return to;
|
|
29
|
+
};
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// datadog/tracer.ts
|
|
33
|
+
var tracer_exports = {};
|
|
34
|
+
__export(tracer_exports, {
|
|
35
|
+
default: () => tracer_default
|
|
36
|
+
});
|
|
37
|
+
var rawFlag, isEnabled, tracer, getRoutePattern, tracer_default;
|
|
38
|
+
var init_tracer = __esm({
|
|
39
|
+
"datadog/tracer.ts"() {
|
|
40
|
+
rawFlag = String(process.env.USE_DATADOG_APM || "").toLowerCase();
|
|
41
|
+
isEnabled = rawFlag === "true";
|
|
42
|
+
process.env.DD_TRACE_ENABLED = isEnabled ? "1" : "0";
|
|
43
|
+
tracer = null;
|
|
44
|
+
if (isEnabled) {
|
|
45
|
+
const serviceName = process.env.DD_SERVICE || "enterprise-portal";
|
|
46
|
+
const environment = process.env.DD_ENV || process.env.NODE_ENV || "development";
|
|
47
|
+
const version = process.env.DD_VERSION || process.env.NEXT_PUBLIC_VERSION || "0.0.0-dev";
|
|
48
|
+
const agentHost = process.env.DD_AGENT_HOST || process.env.DATADOG_AGENT_HOST || "127.0.0.1";
|
|
49
|
+
const agentPort = process.env.DD_TRACE_AGENT_PORT || "8126";
|
|
50
|
+
process.env.DD_SERVICE = serviceName;
|
|
51
|
+
process.env.DD_ENV = environment;
|
|
52
|
+
{
|
|
53
|
+
process.env.DD_VERSION = version;
|
|
54
|
+
}
|
|
55
|
+
process.env.DD_AGENT_HOST = agentHost;
|
|
56
|
+
process.env.DD_TRACE_AGENT_PORT = agentPort;
|
|
57
|
+
const dbmPropagationMode = process.env.DD_DBM_PROPAGATION_MODE || "full";
|
|
58
|
+
process.env.DD_DBM_PROPAGATION_MODE = dbmPropagationMode;
|
|
59
|
+
try {
|
|
60
|
+
const ddTrace = __require("dd-trace");
|
|
61
|
+
tracer = ddTrace.init({
|
|
62
|
+
service: serviceName,
|
|
63
|
+
env: environment,
|
|
64
|
+
version,
|
|
65
|
+
logInjection: true,
|
|
66
|
+
runtimeMetrics: true,
|
|
67
|
+
appsec: false,
|
|
68
|
+
profiling: false,
|
|
69
|
+
startupLogs: true
|
|
70
|
+
// Enable for debugging
|
|
71
|
+
});
|
|
72
|
+
console.log(`[datadog] Tracer initialized: service=${serviceName}, env=${environment}, version=${version}, agent=${agentHost}:${agentPort}`);
|
|
73
|
+
tracer.use("dns", false);
|
|
74
|
+
tracer.use("net", false);
|
|
75
|
+
tracer.use("http", {
|
|
76
|
+
server: {
|
|
77
|
+
hooks: {
|
|
78
|
+
request: (span, req) => {
|
|
79
|
+
if (!span) return;
|
|
80
|
+
const url = req?.url || "";
|
|
81
|
+
const method = req?.method || "GET";
|
|
82
|
+
const path = url.split("?")[0];
|
|
83
|
+
if (path.startsWith("/_next/")) {
|
|
84
|
+
span.context()._trace.isRecording = false;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const routePattern = getRoutePattern(path);
|
|
88
|
+
span.setTag("resource.name", `${method} ${routePattern}`);
|
|
89
|
+
span.setTag("http.route", routePattern);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
} catch (err) {
|
|
95
|
+
console.error("[datadog] failed to initialize tracing", err);
|
|
96
|
+
tracer = null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getRoutePattern = (path) => {
|
|
100
|
+
const routePatterns = [
|
|
101
|
+
// Update instance routes - normalize dynamic segments (capture suffix to preserve sub-routes)
|
|
102
|
+
{ pattern: /^\/update\/instance\/[^/]+(.*)$/, replacement: "/update/instance/[instanceId]$1" }
|
|
103
|
+
];
|
|
104
|
+
for (const { pattern, replacement } of routePatterns) {
|
|
105
|
+
if (pattern.test(path)) {
|
|
106
|
+
return path.replace(pattern, replacement);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return path;
|
|
110
|
+
};
|
|
111
|
+
tracer_default = tracer;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// src/utils/observability/tracing.ts
|
|
116
|
+
var tracerCache = void 0;
|
|
117
|
+
function getTracer() {
|
|
118
|
+
if (tracerCache !== void 0) {
|
|
119
|
+
return tracerCache;
|
|
120
|
+
}
|
|
121
|
+
const rawFlag2 = String(process.env.USE_DATADOG_APM || "").toLowerCase();
|
|
122
|
+
const isEnabled2 = rawFlag2 === "true";
|
|
123
|
+
if (!isEnabled2) {
|
|
124
|
+
tracerCache = null;
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const tracerModule = (init_tracer(), __toCommonJS(tracer_exports));
|
|
129
|
+
const tracer2 = tracerModule.default || tracerModule;
|
|
130
|
+
if (tracer2 && typeof tracer2.trace === "function") {
|
|
131
|
+
tracerCache = tracer2;
|
|
132
|
+
return tracerCache;
|
|
133
|
+
}
|
|
134
|
+
} catch (err) {
|
|
135
|
+
console.warn("Failed to load tracer:", err);
|
|
136
|
+
}
|
|
137
|
+
tracerCache = null;
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
function getActiveSpan() {
|
|
141
|
+
const activeTracer = getTracer();
|
|
142
|
+
if (!activeTracer || !activeTracer.scope) {
|
|
143
|
+
return void 0;
|
|
144
|
+
}
|
|
145
|
+
const active = activeTracer.scope().active();
|
|
146
|
+
return active || void 0;
|
|
147
|
+
}
|
|
148
|
+
async function withTrace(name, fn) {
|
|
149
|
+
const activeTracer = getTracer();
|
|
150
|
+
if (!activeTracer) {
|
|
151
|
+
return fn(void 0);
|
|
152
|
+
}
|
|
153
|
+
return activeTracer.trace(name, async (span) => {
|
|
154
|
+
if (span) {
|
|
155
|
+
span.setTag("component", "application");
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const result = await fn(span);
|
|
159
|
+
return result;
|
|
160
|
+
} catch (error) {
|
|
161
|
+
if (span) {
|
|
162
|
+
span.setTag("error", error);
|
|
163
|
+
}
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function traceServerAction(name, fn) {
|
|
169
|
+
const spanName = name.startsWith("server.action.") ? name : `server.action.${name}`;
|
|
170
|
+
const traced = async (...args) => {
|
|
171
|
+
return withTrace(spanName, async (span) => {
|
|
172
|
+
if (span) {
|
|
173
|
+
span.setTag("component", "server-action");
|
|
174
|
+
}
|
|
175
|
+
const result = await fn(...args);
|
|
176
|
+
return result;
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
return traced;
|
|
180
|
+
}
|
|
181
|
+
function traceFunction(name, fn) {
|
|
182
|
+
const traced = async (...args) => {
|
|
183
|
+
return withTrace(name, async () => {
|
|
184
|
+
const result = await fn(...args);
|
|
185
|
+
return result;
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
return traced;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export { getActiveSpan, traceFunction, traceServerAction, withTrace };
|
|
192
|
+
//# sourceMappingURL=index.js.map
|
|
193
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../datadog/tracer.ts","../../../../src/utils/observability/tracing.ts"],"names":["rawFlag","isEnabled","tracer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,cAAA,GAAA,EAAA;AAAA,QAAA,CAAA,cAAA,EAAA;AAAA,EAAA,OAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAGM,OAAA,EACA,SAAA,EAIF,MAAA,EA2EE,eAAA,EAiBC,cAAA;AApGP,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAGA,IAAM,UAAU,MAAA,CAAO,OAAA,CAAQ,IAAI,eAAA,IAAmB,EAAE,EAAE,WAAA,EAAY;AACtE,IAAM,YAAY,OAAA,KAAY,MAAA;AAE9B,IAAA,OAAA,CAAQ,GAAA,CAAI,gBAAA,GAAmB,SAAA,GAAY,GAAA,GAAM,GAAA;AAEjD,IAAI,MAAA,GAAwB,IAAA;AAE5B,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,CAAI,UAAA,IAAc,mBAAA;AAC9C,MAAA,MAAM,cAAc,OAAA,CAAQ,GAAA,CAAI,MAAA,IAAU,OAAA,CAAQ,IAAI,QAAA,IAAY,aAAA;AAClE,MAAA,MAAM,UAAU,OAAA,CAAQ,GAAA,CAAI,UAAA,IAAc,OAAA,CAAQ,IAAI,mBAAA,IAAuB,WAAA;AAE7E,MAAA,MAAM,YAAY,OAAA,CAAQ,GAAA,CAAI,aAAA,IAAiB,OAAA,CAAQ,IAAI,kBAAA,IAAsB,WAAA;AACjF,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,GAAA,CAAI,mBAAA,IAAuB,MAAA;AAErD,MAAA,OAAA,CAAQ,IAAI,UAAA,GAAa,WAAA;AACzB,MAAA,OAAA,CAAQ,IAAI,MAAA,GAAS,WAAA;AACrB,MAAa;AACX,QAAA,OAAA,CAAQ,IAAI,UAAA,GAAa,OAAA;AAAA,MAC3B;AACA,MAAA,OAAA,CAAQ,IAAI,aAAA,GAAgB,SAAA;AAC5B,MAAA,OAAA,CAAQ,IAAI,mBAAA,GAAsB,SAAA;AAElC,MAAA,MAAM,kBAAA,GAAsB,OAAA,CAAQ,GAAA,CAAI,uBAAA,IAA2B,MAAA;AAEnE,MAAA,OAAA,CAAQ,IAAI,uBAAA,GAA0B,kBAAA;AAEtC,MAAA,IAAI;AAEF,QAAA,MAAM,OAAA,GAAU,UAAQ,UAAU,CAAA;AAClC,QAAA,MAAA,GAAU,QAAQ,IAAA,CAA4B;AAAA,UAC5C,OAAA,EAAS,WAAA;AAAA,UACT,GAAA,EAAK,WAAA;AAAA,UACL,OAAA;AAAA,UACA,YAAA,EAAc,IAAA;AAAA,UACd,cAAA,EAAgB,IAAA;AAAA,UAChB,MAAA,EAAQ,KAAA;AAAA,UACR,SAAA,EAAW,KAAA;AAAA,UACX,WAAA,EAAa;AAAA;AAAA,SACd,CAAA;AAED,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,sCAAA,EAAyC,WAAW,CAAA,MAAA,EAAS,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,QAAA,EAAW,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAA;AAG3I,QAAA,MAAA,CAAO,GAAA,CAAI,OAAO,KAAK,CAAA;AACvB,QAAA,MAAA,CAAO,GAAA,CAAI,OAAO,KAAK,CAAA;AAEvB,QAAA,MAAA,CAAO,IAAI,MAAA,EAAQ;AAAA,UACjB,MAAA,EAAQ;AAAA,YACN,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,CAAC,IAAA,EAAa,GAAA,KAA0B;AAC/C,gBAAA,IAAI,CAAC,IAAA,EAAM;AAEX,gBAAA,MAAM,GAAA,GAAM,KAAK,GAAA,IAAO,EAAA;AACxB,gBAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,KAAA;AAC9B,gBAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAG7B,gBAAA,IAAI,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,EAAG;AAE9B,kBAAA,IAAA,CAAK,OAAA,EAAQ,CAAE,MAAA,CAAO,WAAA,GAAc,KAAA;AACpC,kBAAA;AAAA,gBACF;AAEA,gBAAA,MAAM,YAAA,GAAe,gBAAgB,IAAI,CAAA;AAEzC,gBAAA,IAAA,CAAK,OAAO,eAAA,EAAiB,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAA;AACxD,gBAAA,IAAA,CAAK,MAAA,CAAO,cAAc,YAAY,CAAA;AAAA,cACxC;AAAA;AACF;AACF,SACD,CAAA;AAAA,MACH,SAAS,GAAA,EAAK;AAEZ,QAAA,OAAA,CAAQ,KAAA,CAAM,0CAA0C,GAAG,CAAA;AAC3D,QAAA,MAAA,GAAS,IAAA;AAAA,MACX;AAAA,IACF;AAGA,IAAM,eAAA,GAAkB,CAAC,IAAA,KAAyB;AAEhD,MAAA,MAAM,aAAA,GAAgB;AAAA;AAAA,QAEpB,EAAE,OAAA,EAAS,iCAAA,EAAmC,WAAA,EAAa,iCAAA;AAAkC,OAC/F;AAEA,MAAA,KAAA,MAAW,EAAE,OAAA,EAAS,WAAA,EAAY,IAAK,aAAA,EAAe;AACpD,QAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AACtB,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,WAAW,CAAA;AAAA,QAC1C;AAAA,MACF;AAGA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAO,cAAA,GAAQ,MAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3Ff,IAAI,WAAA,GAAyC,MAAA;AAE7C,SAAS,SAAA,GAA2B;AAElC,EAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,IAAA,OAAO,WAAA;AAAA,EACT;AAGA,EAAA,MAAMA,WAAU,MAAA,CAAO,OAAA,CAAQ,IAAI,eAAA,IAAmB,EAAE,EAAE,WAAA,EAAY;AACtE,EAAA,MAAMC,aAAYD,QAAAA,KAAY,MAAA;AAE9B,EAAA,IAAI,CAACC,UAAAA,EAAW;AACd,IAAA,WAAA,GAAc,IAAA;AACd,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI;AAEF,IAAA,MAAM,YAAA,IAAe,WAAA,EAAA,EAAA,YAAA,CAAA,cAAA,CAAA,CAAA;AACrB,IAAA,MAAMC,OAAAA,GAAS,aAAa,OAAA,IAAW,YAAA;AAEvC,IAAA,IAAIA,OAAAA,IAAU,OAAQA,OAAAA,CAAe,KAAA,KAAU,UAAA,EAAY;AACzD,MAAA,WAAA,GAAcA,OAAAA;AACd,MAAA,OAAO,WAAA;AAAA,IACT;AAAA,EACF,SAAS,GAAA,EAAK;AACZ,IAAA,OAAA,CAAQ,IAAA,CAAK,0BAA0B,GAAG,CAAA;AAAA,EAC5C;AAEA,EAAA,WAAA,GAAc,IAAA;AACd,EAAA,OAAO,IAAA;AACT;AAMO,SAAS,aAAA,GAAkC;AAChD,EAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,EAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,YAAA,CAAa,KAAA,EAAO;AACxC,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,KAAA,EAAM,CAAE,MAAA,EAAO;AAC3C,EAAA,OAAO,MAAA,IAAU,MAAA;AACnB;AAEA,eAAsB,SAAA,CACpB,MACA,EAAA,EACY;AACZ,EAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,OAAO,GAAG,MAAS,CAAA;AAAA,EACrB;AAEA,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,OAAO,IAAA,KAAgB;AACrD,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,IACxC;AACA,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,IAAI,CAAA;AAC5B,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAA,CAAK,MAAA,CAAO,SAAS,KAAY,CAAA;AAAA,MACnC;AACA,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAC,CAAA;AACH;AAEO,SAAS,iBAAA,CACd,MACA,EAAA,EACmB;AACnB,EAAA,MAAM,WAAW,IAAA,CAAK,UAAA,CAAW,gBAAgB,CAAA,GAAI,IAAA,GAAO,iBAAiB,IAAI,CAAA,CAAA;AAEjF,EAAA,MAAM,MAAA,GAA4B,UAAU,IAAA,KAAwB;AAClE,IAAA,OAAO,SAAA,CAAU,QAAA,EAAU,OAAO,IAAA,KAAS;AACzC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAA,CAAK,MAAA,CAAO,aAAa,eAAe,CAAA;AAAA,MAC1C;AACA,MAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,GAAG,IAAI,CAAA;AAC/B,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,aAAA,CACd,MACA,EAAA,EACmB;AACnB,EAAA,MAAM,MAAA,GAA4B,UAAU,IAAA,KAAwB;AAClE,IAAA,OAAO,SAAA,CAAU,MAAM,YAAY;AACjC,MAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,GAAG,IAAI,CAAA;AAC/B,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,OAAO,MAAA;AACT","file":"index.js","sourcesContent":["import type { Tracer, Span, init as ddTraceInit } from 'dd-trace';\nimport type { IncomingMessage } from 'http';\n\nconst rawFlag = String(process.env.USE_DATADOG_APM || '').toLowerCase();\nconst isEnabled = rawFlag === 'true';\n\nprocess.env.DD_TRACE_ENABLED = isEnabled ? '1' : '0';\n\nlet tracer: Tracer | null = null;\n\nif (isEnabled) {\n const serviceName = process.env.DD_SERVICE || 'enterprise-portal';\n const environment = process.env.DD_ENV || process.env.NODE_ENV || 'development';\n const version = process.env.DD_VERSION || process.env.NEXT_PUBLIC_VERSION || '0.0.0-dev';\n\n const agentHost = process.env.DD_AGENT_HOST || process.env.DATADOG_AGENT_HOST || '127.0.0.1';\n const agentPort = process.env.DD_TRACE_AGENT_PORT || '8126';\n\n process.env.DD_SERVICE = serviceName;\n process.env.DD_ENV = environment;\n if (version) {\n process.env.DD_VERSION = version;\n }\n process.env.DD_AGENT_HOST = agentHost;\n process.env.DD_TRACE_AGENT_PORT = agentPort;\n\n const dbmPropagationMode = (process.env.DD_DBM_PROPAGATION_MODE || 'full') as 'disabled' | 'service' | 'full';\n\n process.env.DD_DBM_PROPAGATION_MODE = dbmPropagationMode;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const ddTrace = require('dd-trace');\n tracer = (ddTrace.init as typeof ddTraceInit)({\n service: serviceName,\n env: environment,\n version,\n logInjection: true,\n runtimeMetrics: true,\n appsec: false,\n profiling: false,\n startupLogs: true, // Enable for debugging\n }) as Tracer;\n \n console.log(`[datadog] Tracer initialized: service=${serviceName}, env=${environment}, version=${version}, agent=${agentHost}:${agentPort}`);\n\n // Disable low-level network instrumentation for localhost connections\n tracer.use('dns', false);\n tracer.use('net', false);\n // Configure http plugin to normalize route patterns\n tracer.use('http', {\n server: {\n hooks: {\n request: (span?: Span, req?: IncomingMessage) => {\n if (!span) return;\n\n const url = req?.url || '';\n const method = req?.method || 'GET';\n const path = url.split('?')[0];\n\n // Drop Next.js internal requests\n if (path.startsWith('/_next/')) {\n // @ts-expect-error - using internal property to drop the trace\n span.context()._trace.isRecording = false;\n return;\n }\n\n const routePattern = getRoutePattern(path);\n\n span.setTag('resource.name', `${method} ${routePattern}`);\n span.setTag('http.route', routePattern);\n }\n }\n }\n });\n } catch (err) {\n // Do not crash the app if tracing fails to initialize\n console.error('[datadog] failed to initialize tracing', err);\n tracer = null;\n }\n}\n\n// Function to convert actual paths to route patterns\nconst getRoutePattern = (path: string): string => {\n // Define route patterns for dynamic routes in enterprise portal\n const routePatterns = [\n // Update instance routes - normalize dynamic segments (capture suffix to preserve sub-routes)\n { pattern: /^\\/update\\/instance\\/[^/]+(.*)$/, replacement: '/update/instance/[instanceId]$1' },\n ];\n\n for (const { pattern, replacement } of routePatterns) {\n if (pattern.test(path)) {\n return path.replace(pattern, replacement);\n }\n }\n\n // Return original path if no pattern matches\n return path;\n}\n\nexport default tracer;\n","import type { Span, Tracer } from 'dd-trace';\n\n// Type for a function that has been wrapped with tracing (always returns a Promise)\ntype TracedFunction<T extends (...args: any[]) => any> = (\n ...args: Parameters<T>\n) => Promise<Awaited<ReturnType<T>>>;\n\n// Lazy-load tracer only when tracing is enabled\n// Using undefined to distinguish between \"not loaded yet\" and \"loaded but null\"\nlet tracerCache: Tracer | null | undefined = undefined;\n\nfunction getTracer(): Tracer | null {\n // Return cached result if already loaded (prevents race conditions and multiple initializations)\n if (tracerCache !== undefined) {\n return tracerCache;\n }\n\n // Check if tracing is enabled at runtime (consistent with datadog/tracer.ts and instrumentation.ts)\n const rawFlag = String(process.env.USE_DATADOG_APM || '').toLowerCase();\n const isEnabled = rawFlag === 'true';\n\n if (!isEnabled) {\n tracerCache = null;\n return null;\n }\n\n // Lazy load the tracer module only when needed\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const tracerModule = require('../../../datadog/tracer');\n const tracer = tracerModule.default || tracerModule;\n\n if (tracer && typeof (tracer as any).trace === 'function') {\n tracerCache = tracer as Tracer;\n return tracerCache;\n }\n } catch (err) {\n console.warn('Failed to load tracer:', err);\n }\n\n tracerCache = null;\n return null;\n}\n\n/**\n * Get the currently active span from the tracer's scope.\n * This can be used to pass span context to database calls.\n */\nexport function getActiveSpan(): Span | undefined {\n const activeTracer = getTracer();\n if (!activeTracer || !activeTracer.scope) {\n return undefined;\n }\n const active = activeTracer.scope().active();\n return active || undefined;\n}\n\nexport async function withTrace<T>(\n name: string,\n fn: (span?: Span) => Promise<T> | T,\n): Promise<T> {\n const activeTracer = getTracer();\n if (!activeTracer) {\n return fn(undefined);\n }\n\n return activeTracer.trace(name, async (span?: Span) => {\n if (span) {\n span.setTag('component', 'application');\n }\n try {\n const result = await fn(span);\n return result;\n } catch (error) {\n if (span) {\n span.setTag('error', error as any);\n }\n throw error;\n }\n });\n}\n\nexport function traceServerAction<T extends (...args: any[]) => any>(\n name: string,\n fn: T,\n): TracedFunction<T> {\n const spanName = name.startsWith('server.action.') ? name : `server.action.${name}`;\n\n const traced: TracedFunction<T> = async (...args: Parameters<T>) => {\n return withTrace(spanName, async (span) => {\n if (span) {\n span.setTag('component', 'server-action');\n }\n const result = await fn(...args);\n return result;\n });\n };\n\n return traced;\n}\n\nexport function traceFunction<T extends (...args: any[]) => any>(\n name: string,\n fn: T,\n): TracedFunction<T> {\n const traced: TracedFunction<T> = async (...args: Parameters<T>) => {\n return withTrace(name, async () => {\n const result = await fn(...args);\n return result;\n });\n };\n\n return traced;\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var Link__default = /*#__PURE__*/_interopDefault(Link);
|
|
|
16
16
|
|
|
17
17
|
// package.json
|
|
18
18
|
var package_default = {
|
|
19
|
-
version: "0.0.
|
|
19
|
+
version: "0.0.12"};
|
|
20
20
|
|
|
21
21
|
// src/tokens/index.ts
|
|
22
22
|
var baseTokens = {
|
|
@@ -1453,7 +1453,7 @@ var LicenseDetails = async ({
|
|
|
1453
1453
|
console.debug("[portal-components] license response", response.raw);
|
|
1454
1454
|
const { license } = response;
|
|
1455
1455
|
const rows = buildPrimaryRows(license);
|
|
1456
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded
|
|
1456
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded border border-gray-100 bg-white p-8 shadow-[0_18px_45px_rgba(17,24,39,0.08)]", children: [
|
|
1457
1457
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex flex-col border-b border-gray-100 pb-6", children: [
|
|
1458
1458
|
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold text-gray-900", children: title }),
|
|
1459
1459
|
description ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-600", children: description }) : null
|
|
@@ -1480,10 +1480,14 @@ var defaultTopNavLinks = [
|
|
|
1480
1480
|
className: "h-4 w-4",
|
|
1481
1481
|
fill: "none",
|
|
1482
1482
|
stroke: "currentColor",
|
|
1483
|
-
strokeWidth: "
|
|
1483
|
+
strokeWidth: "2",
|
|
1484
|
+
strokeLinecap: "round",
|
|
1485
|
+
strokeLinejoin: "round",
|
|
1484
1486
|
children: [
|
|
1485
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1486
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1487
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "9", x: "3", y: "3", rx: "1" }),
|
|
1488
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "5", x: "14", y: "3", rx: "1" }),
|
|
1489
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "9", x: "14", y: "12", rx: "1" }),
|
|
1490
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "7", height: "5", x: "3", y: "16", rx: "1" })
|
|
1487
1491
|
]
|
|
1488
1492
|
}
|
|
1489
1493
|
)
|
|
@@ -1498,11 +1502,13 @@ var defaultTopNavLinks = [
|
|
|
1498
1502
|
className: "h-4 w-4",
|
|
1499
1503
|
fill: "none",
|
|
1500
1504
|
stroke: "currentColor",
|
|
1501
|
-
strokeWidth: "
|
|
1505
|
+
strokeWidth: "2",
|
|
1506
|
+
strokeLinecap: "round",
|
|
1507
|
+
strokeLinejoin: "round",
|
|
1502
1508
|
children: [
|
|
1503
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "
|
|
1504
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1505
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1509
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
1510
|
+
/* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "7 10 12 15 17 10" }),
|
|
1511
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
|
|
1506
1512
|
]
|
|
1507
1513
|
}
|
|
1508
1514
|
)
|
|
@@ -1518,10 +1524,13 @@ var defaultTopNavLinks = [
|
|
|
1518
1524
|
className: "h-4 w-4",
|
|
1519
1525
|
fill: "none",
|
|
1520
1526
|
stroke: "currentColor",
|
|
1521
|
-
strokeWidth: "
|
|
1527
|
+
strokeWidth: "2",
|
|
1528
|
+
strokeLinecap: "round",
|
|
1529
|
+
strokeLinejoin: "round",
|
|
1522
1530
|
children: [
|
|
1523
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "
|
|
1524
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1531
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
1532
|
+
/* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "7 10 12 15 17 10" }),
|
|
1533
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
|
|
1525
1534
|
]
|
|
1526
1535
|
}
|
|
1527
1536
|
)
|
|
@@ -1537,15 +1546,34 @@ var defaultTopNavLinks = [
|
|
|
1537
1546
|
className: "h-4 w-4",
|
|
1538
1547
|
fill: "none",
|
|
1539
1548
|
stroke: "currentColor",
|
|
1540
|
-
strokeWidth: "
|
|
1549
|
+
strokeWidth: "2",
|
|
1550
|
+
strokeLinecap: "round",
|
|
1551
|
+
strokeLinejoin: "round",
|
|
1541
1552
|
children: [
|
|
1542
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "
|
|
1543
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "
|
|
1544
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10c1.5-4 6-6 10-4m6 4c-1.5 4-6 6-10 4" })
|
|
1553
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8" }),
|
|
1554
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 3v5h-5" })
|
|
1545
1555
|
]
|
|
1546
1556
|
}
|
|
1547
1557
|
)
|
|
1548
1558
|
},
|
|
1559
|
+
{
|
|
1560
|
+
label: "Security",
|
|
1561
|
+
href: "/security",
|
|
1562
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1563
|
+
"svg",
|
|
1564
|
+
{
|
|
1565
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1566
|
+
viewBox: "0 0 24 24",
|
|
1567
|
+
className: "h-4 w-4",
|
|
1568
|
+
fill: "none",
|
|
1569
|
+
stroke: "currentColor",
|
|
1570
|
+
strokeWidth: "2",
|
|
1571
|
+
strokeLinecap: "round",
|
|
1572
|
+
strokeLinejoin: "round",
|
|
1573
|
+
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" })
|
|
1574
|
+
}
|
|
1575
|
+
)
|
|
1576
|
+
},
|
|
1549
1577
|
{
|
|
1550
1578
|
label: "Release History",
|
|
1551
1579
|
href: "/release-history",
|
|
@@ -1557,10 +1585,15 @@ var defaultTopNavLinks = [
|
|
|
1557
1585
|
className: "h-4 w-4",
|
|
1558
1586
|
fill: "none",
|
|
1559
1587
|
stroke: "currentColor",
|
|
1560
|
-
strokeWidth: "
|
|
1588
|
+
strokeWidth: "2",
|
|
1589
|
+
strokeLinecap: "round",
|
|
1590
|
+
strokeLinejoin: "round",
|
|
1561
1591
|
children: [
|
|
1562
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "
|
|
1563
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1592
|
+
/* @__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" }),
|
|
1593
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" }),
|
|
1594
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 9H8" }),
|
|
1595
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 13H8" }),
|
|
1596
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 17H8" })
|
|
1564
1597
|
]
|
|
1565
1598
|
}
|
|
1566
1599
|
)
|
|
@@ -1576,12 +1609,13 @@ var defaultTopNavLinks = [
|
|
|
1576
1609
|
className: "h-4 w-4",
|
|
1577
1610
|
fill: "none",
|
|
1578
1611
|
stroke: "currentColor",
|
|
1579
|
-
strokeWidth: "
|
|
1612
|
+
strokeWidth: "2",
|
|
1613
|
+
strokeLinecap: "round",
|
|
1614
|
+
strokeLinejoin: "round",
|
|
1580
1615
|
children: [
|
|
1581
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1582
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "
|
|
1583
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1584
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 15h6" })
|
|
1616
|
+
/* @__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" }),
|
|
1617
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m21 2-9.6 9.6" }),
|
|
1618
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "7.5", cy: "15.5", r: "5.5" })
|
|
1585
1619
|
]
|
|
1586
1620
|
}
|
|
1587
1621
|
)
|
|
@@ -1597,10 +1631,16 @@ var defaultTopNavLinks = [
|
|
|
1597
1631
|
className: "h-4 w-4",
|
|
1598
1632
|
fill: "none",
|
|
1599
1633
|
stroke: "currentColor",
|
|
1600
|
-
strokeWidth: "
|
|
1634
|
+
strokeWidth: "2",
|
|
1635
|
+
strokeLinecap: "round",
|
|
1636
|
+
strokeLinejoin: "round",
|
|
1601
1637
|
children: [
|
|
1602
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1603
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
1638
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
1639
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m4.93 4.93 4.24 4.24" }),
|
|
1640
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m14.83 9.17 4.24-4.24" }),
|
|
1641
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m14.83 14.83 4.24 4.24" }),
|
|
1642
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9.17 14.83-4.24 4.24" }),
|
|
1643
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4" })
|
|
1604
1644
|
]
|
|
1605
1645
|
}
|
|
1606
1646
|
)
|
|
@@ -1700,7 +1740,7 @@ var TopNav = async ({
|
|
|
1700
1740
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1701
1741
|
"div",
|
|
1702
1742
|
{
|
|
1703
|
-
className: "relative flex h-[
|
|
1743
|
+
className: "relative flex h-[280px] w-full items-start justify-center",
|
|
1704
1744
|
style: {
|
|
1705
1745
|
backgroundImage: `linear-gradient(to top, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0) 33%), linear-gradient(${gradientStart}, ${gradientEnd})`,
|
|
1706
1746
|
backgroundRepeat: "no-repeat",
|
|
@@ -1727,7 +1767,7 @@ var TopNav = async ({
|
|
|
1727
1767
|
brandTitle ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-semibold text-gray-900", children: brandTitle }) : null
|
|
1728
1768
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
1729
1769
|
/* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group relative", children: [
|
|
1730
|
-
/* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex cursor-pointer items-center gap-2
|
|
1770
|
+
/* @__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: [
|
|
1731
1771
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1732
1772
|
"svg",
|
|
1733
1773
|
{
|
|
@@ -1784,9 +1824,9 @@ var TopNav = async ({
|
|
|
1784
1824
|
),
|
|
1785
1825
|
userMenuChildren,
|
|
1786
1826
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1787
|
-
|
|
1827
|
+
"a",
|
|
1788
1828
|
{
|
|
1789
|
-
href: "/?expired=1
|
|
1829
|
+
href: `${process.env.NEXT_PUBLIC_BASE_PATH || ""}/?expired=1`,
|
|
1790
1830
|
className: "block w-full px-4 py-2 text-left hover:bg-gray-100",
|
|
1791
1831
|
children: "Logout"
|
|
1792
1832
|
}
|
|
@@ -1799,12 +1839,12 @@ var TopNav = async ({
|
|
|
1799
1839
|
const className = `flex items-center gap-2 px-4 py-1 transition text-gray-500 ${isActive ? "underline underline-offset-8 decoration-2" : ""}`;
|
|
1800
1840
|
if (href) {
|
|
1801
1841
|
return /* @__PURE__ */ jsxRuntime.jsxs(Link__default.default, { href, className, children: [
|
|
1802
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-
|
|
1842
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-gray-900" : "text-gray-500", children: icon }),
|
|
1803
1843
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
|
|
1804
1844
|
] }, label);
|
|
1805
1845
|
}
|
|
1806
1846
|
return /* @__PURE__ */ jsxRuntime.jsxs("button", { className, type: "button", children: [
|
|
1807
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-
|
|
1847
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: isActive ? "text-gray-900" : "text-gray-500", children: icon }),
|
|
1808
1848
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
|
|
1809
1849
|
] }, label);
|
|
1810
1850
|
}) })
|
|
@@ -1812,7 +1852,7 @@ var TopNav = async ({
|
|
|
1812
1852
|
}
|
|
1813
1853
|
);
|
|
1814
1854
|
};
|
|
1815
|
-
var GlobeIcon = (props) => /* @__PURE__ */ jsxRuntime.
|
|
1855
|
+
var GlobeIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1816
1856
|
"svg",
|
|
1817
1857
|
{
|
|
1818
1858
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1820,16 +1860,14 @@ var GlobeIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1820
1860
|
fill: "none",
|
|
1821
1861
|
stroke: "currentColor",
|
|
1822
1862
|
strokeWidth: 1.5,
|
|
1863
|
+
strokeLinecap: "round",
|
|
1864
|
+
strokeLinejoin: "round",
|
|
1823
1865
|
"aria-hidden": "true",
|
|
1824
1866
|
...props,
|
|
1825
|
-
children:
|
|
1826
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 12, cy: 12, r: 10 }),
|
|
1827
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 12h20" }),
|
|
1828
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z" })
|
|
1829
|
-
]
|
|
1867
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418" })
|
|
1830
1868
|
}
|
|
1831
1869
|
);
|
|
1832
|
-
var AirGapIcon = (props) => /* @__PURE__ */ jsxRuntime.
|
|
1870
|
+
var AirGapIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1833
1871
|
"svg",
|
|
1834
1872
|
{
|
|
1835
1873
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1837,15 +1875,11 @@ var AirGapIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1837
1875
|
fill: "none",
|
|
1838
1876
|
stroke: "currentColor",
|
|
1839
1877
|
strokeWidth: 1.5,
|
|
1878
|
+
strokeLinecap: "round",
|
|
1879
|
+
strokeLinejoin: "round",
|
|
1840
1880
|
"aria-hidden": "true",
|
|
1841
1881
|
...props,
|
|
1842
|
-
children:
|
|
1843
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m4 4 16 16" }),
|
|
1844
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 4.5a8 8 0 0 1 9 0" }),
|
|
1845
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4.5 7.5a8 8 0 0 0 0 9" }),
|
|
1846
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16.5 19.5a8 8 0 0 0 0-9" }),
|
|
1847
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 12a5 5 0 0 0 5 5" })
|
|
1848
|
-
]
|
|
1882
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M13.181 8.68a4.503 4.503 0 0 1 1.903 6.405m-9.768-2.782L3.56 14.06a4.5 4.5 0 0 0 6.364 6.365l3.129-3.129m5.614-5.615 1.757-1.757a4.5 4.5 0 0 0-6.364-6.365l-4.5 4.5c-.258.26-.479.541-.661.84m1.903 6.405a4.495 4.495 0 0 1-1.242-.88 4.483 4.483 0 0 1-1.062-1.683m6.587 2.345 5.907 5.907m-5.907-5.907L8.898 8.898M2.991 2.99 8.898 8.9" })
|
|
1849
1883
|
}
|
|
1850
1884
|
);
|
|
1851
1885
|
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)]";
|
|
@@ -1886,7 +1920,7 @@ var UpdatesCard = ({
|
|
|
1886
1920
|
/* @__PURE__ */ jsxRuntime.jsx("footer", { className: footerClass, children: /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: "/update", children: "View updates \u2192" }) })
|
|
1887
1921
|
] });
|
|
1888
1922
|
UpdatesCard.displayName = "UpdatesCard";
|
|
1889
|
-
var UploadIcon = (props) => /* @__PURE__ */ jsxRuntime.
|
|
1923
|
+
var UploadIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1890
1924
|
"svg",
|
|
1891
1925
|
{
|
|
1892
1926
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1894,13 +1928,11 @@ var UploadIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1894
1928
|
fill: "none",
|
|
1895
1929
|
stroke: "currentColor",
|
|
1896
1930
|
strokeWidth: 1.5,
|
|
1931
|
+
strokeLinecap: "round",
|
|
1932
|
+
strokeLinejoin: "round",
|
|
1897
1933
|
"aria-hidden": "true",
|
|
1898
1934
|
...props,
|
|
1899
|
-
children:
|
|
1900
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 16V3" }),
|
|
1901
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 7l4-4 4 4" }),
|
|
1902
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 21h14" })
|
|
1903
|
-
]
|
|
1935
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5" })
|
|
1904
1936
|
}
|
|
1905
1937
|
);
|
|
1906
1938
|
var baseCardClass2 = "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)]";
|
|
@@ -2307,7 +2339,7 @@ var UserSettingsCard = () => /* @__PURE__ */ jsxRuntime.jsxs("section", { classN
|
|
|
2307
2339
|
/* @__PURE__ */ jsxRuntime.jsx("footer", { className: footerClass3, children: /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: "/user-settings", children: "View user settings \u2192" }) })
|
|
2308
2340
|
] });
|
|
2309
2341
|
UserSettingsCard.displayName = "UserSettingsCard";
|
|
2310
|
-
var UsersIcon = (props) => /* @__PURE__ */ jsxRuntime.
|
|
2342
|
+
var UsersIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2311
2343
|
"svg",
|
|
2312
2344
|
{
|
|
2313
2345
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2315,17 +2347,14 @@ var UsersIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
2315
2347
|
fill: "none",
|
|
2316
2348
|
stroke: "currentColor",
|
|
2317
2349
|
strokeWidth: 1.5,
|
|
2350
|
+
strokeLinecap: "round",
|
|
2351
|
+
strokeLinejoin: "round",
|
|
2318
2352
|
"aria-hidden": "true",
|
|
2319
2353
|
...props,
|
|
2320
|
-
children:
|
|
2321
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
|
|
2322
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 10, cy: 8, r: 4 }),
|
|
2323
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 21v-2a4 4 0 0 0-3-3.87" }),
|
|
2324
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17 3a4 4 0 0 1 0 8" })
|
|
2325
|
-
]
|
|
2354
|
+
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" })
|
|
2326
2355
|
}
|
|
2327
2356
|
);
|
|
2328
|
-
var KeyIcon = (props) => /* @__PURE__ */ jsxRuntime.
|
|
2357
|
+
var KeyIcon = (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2329
2358
|
"svg",
|
|
2330
2359
|
{
|
|
2331
2360
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2333,13 +2362,11 @@ var KeyIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
2333
2362
|
fill: "none",
|
|
2334
2363
|
stroke: "currentColor",
|
|
2335
2364
|
strokeWidth: 1.5,
|
|
2365
|
+
strokeLinecap: "round",
|
|
2366
|
+
strokeLinejoin: "round",
|
|
2336
2367
|
"aria-hidden": "true",
|
|
2337
2368
|
...props,
|
|
2338
|
-
children:
|
|
2339
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 7, cy: 15, r: 4 }),
|
|
2340
|
-
/* @__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" }),
|
|
2341
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 11l1.5 1.5" })
|
|
2342
|
-
]
|
|
2369
|
+
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" })
|
|
2343
2370
|
}
|
|
2344
2371
|
);
|
|
2345
2372
|
var baseCardClass4 = "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)]";
|