@localstack/appinspector-ui 1.0.114 → 1.0.116

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/dist/index.js CHANGED
@@ -2413,7 +2413,7 @@ var init_event_streams = __esm({
2413
2413
  });
2414
2414
 
2415
2415
  // src/pages/spans-list-page.tsx
2416
- import { Box as Box20 } from "@mui/material";
2416
+ import { Box as Box21 } from "@mui/material";
2417
2417
  import { useCallback as useCallback12, useState as useState18 } from "react";
2418
2418
 
2419
2419
  // src/api/errors.ts
@@ -2572,12 +2572,12 @@ var EmulatorVersionBanner = ({
2572
2572
  };
2573
2573
 
2574
2574
  // src/components/spans-list/spans-list.tsx
2575
- import { Alert as Alert2, Box as Box5, Button as Button3 } from "@mui/material";
2575
+ import { Alert as Alert2, Box as Box6, Button as Button3 } from "@mui/material";
2576
2576
 
2577
2577
  // src/components/spans-list/spans-data-grid.tsx
2578
2578
  import { DeleteForeverOutlined, PauseOutlined, PlayArrowOutlined } from "@mui/icons-material";
2579
2579
  import {
2580
- Box as Box4,
2580
+ Box as Box5,
2581
2581
  Button as Button2,
2582
2582
  CircularProgress,
2583
2583
  FormControlLabel,
@@ -2590,8 +2590,8 @@ import {
2590
2590
  TableHead,
2591
2591
  TableRow,
2592
2592
  TableSortLabel,
2593
- Tooltip as Tooltip3,
2594
- Typography as Typography3,
2593
+ Tooltip as Tooltip4,
2594
+ Typography as Typography4,
2595
2595
  useTheme as useTheme2
2596
2596
  } from "@mui/material";
2597
2597
 
@@ -14881,11 +14881,182 @@ var ServiceCell = memo7(({
14881
14881
  });
14882
14882
  ServiceCell.displayName = "ServiceCell";
14883
14883
 
14884
+ // src/components/cells/status-cell.tsx
14885
+ import { Cancel, Error as Error2, GppBad } from "@mui/icons-material";
14886
+ import { Box as Box3, Divider as Divider2, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
14887
+
14888
+ // src/types/error-levels.ts
14889
+ var ErrorLevel = {
14890
+ ERROR: 3,
14891
+ // General error
14892
+ IAM_PERMISSION: 5,
14893
+ // IAM permission issues
14894
+ OK: 2,
14895
+ // OK
14896
+ // Standard OTEL status codes
14897
+ UNSET: 1,
14898
+ // Unset
14899
+ // Extended custom levels
14900
+ WARNING: 4
14901
+ // Warning
14902
+ };
14903
+
14904
+ // src/utils/iam-utils.ts
14905
+ function determinePermissionStatus(payload) {
14906
+ if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {
14907
+ return "explicitly_denied";
14908
+ }
14909
+ if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {
14910
+ return "explicitly_allowed";
14911
+ }
14912
+ if (payload.is_allowed) {
14913
+ return "implicitly_allowed";
14914
+ }
14915
+ return "implicitly_denied";
14916
+ }
14917
+ function formatPermissionStatus(status) {
14918
+ switch (status) {
14919
+ case "explicitly_allowed": {
14920
+ return "Explicitly Allowed";
14921
+ }
14922
+ case "explicitly_denied": {
14923
+ return "Explicitly Denied";
14924
+ }
14925
+ case "implicitly_allowed": {
14926
+ return "Implicitly Allowed";
14927
+ }
14928
+ case "implicitly_denied": {
14929
+ return "Implicitly Denied";
14930
+ }
14931
+ }
14932
+ }
14933
+ function getPermissionStatusColor(status) {
14934
+ switch (status) {
14935
+ case "explicitly_allowed":
14936
+ case "implicitly_allowed": {
14937
+ return "success.main";
14938
+ }
14939
+ case "explicitly_denied": {
14940
+ return "error.main";
14941
+ }
14942
+ case "implicitly_denied": {
14943
+ return "warning.main";
14944
+ }
14945
+ }
14946
+ }
14947
+ function parseIAMEvent(payloadString) {
14948
+ try {
14949
+ const payload = JSON.parse(payloadString);
14950
+ const permission = determinePermissionStatus(payload);
14951
+ const actions = [];
14952
+ const resources = [];
14953
+ if (payload.explicit_allows) {
14954
+ for (const allow of payload.explicit_allows) {
14955
+ if (!actions.includes(allow.action)) actions.push(allow.action);
14956
+ if (!resources.includes(allow.resource)) resources.push(allow.resource);
14957
+ }
14958
+ }
14959
+ if (payload.explicit_denies) {
14960
+ for (const deny of payload.explicit_denies) {
14961
+ if (!actions.includes(deny.action)) actions.push(deny.action);
14962
+ if (!resources.includes(deny.resource)) resources.push(deny.resource);
14963
+ }
14964
+ }
14965
+ if (payload.implicit_denies) {
14966
+ for (const deny of payload.implicit_denies) {
14967
+ if (!actions.includes(deny.action)) actions.push(deny.action);
14968
+ if (!resources.includes(deny.resource)) resources.push(deny.resource);
14969
+ }
14970
+ }
14971
+ return {
14972
+ details: {
14973
+ actions,
14974
+ explicitAllows: payload.explicit_allow_count,
14975
+ explicitDenies: payload.explicit_deny_count,
14976
+ implicitDenies: payload.implicit_deny_count,
14977
+ resources
14978
+ },
14979
+ operation: payload.operation,
14980
+ permission,
14981
+ principal: payload.principal_arn,
14982
+ service: payload.service
14983
+ };
14984
+ } catch (error) {
14985
+ console.error("Error parsing IAM event payload:", error);
14986
+ return void 0;
14987
+ }
14988
+ }
14989
+
14990
+ // src/components/cells/status-cell.tsx
14991
+ import { Fragment as Fragment4, jsx as jsx126, jsxs as jsxs120 } from "react/jsx-runtime";
14992
+ var StatusIcon = ({ errorLevel, spanStatusCode }) => {
14993
+ switch (errorLevel) {
14994
+ case ErrorLevel.ERROR: {
14995
+ return /* @__PURE__ */ jsx126(Cancel, { sx: { color: "red" } });
14996
+ }
14997
+ case ErrorLevel.IAM_PERMISSION: {
14998
+ return /* @__PURE__ */ jsx126(GppBad, { sx: { color: spanStatusCode === 2 ? "red" : "warning.main" } });
14999
+ }
15000
+ case ErrorLevel.WARNING: {
15001
+ return /* @__PURE__ */ jsx126(Error2, { sx: { color: "orange" } });
15002
+ }
15003
+ default: {
15004
+ return /* @__PURE__ */ jsx126(Fragment4, {});
15005
+ }
15006
+ }
15007
+ };
15008
+ var calculateHighestErrorLevel = (span) => {
15009
+ const hasIamDenial = span.events.some((event) => {
15010
+ if (!event.event_type?.toLowerCase().includes("iam")) return false;
15011
+ if (typeof event.attributes?.payload !== "string") return false;
15012
+ const parsed = parseIAMEvent(event.attributes.payload);
15013
+ return parsed?.permission === "explicitly_denied" || parsed?.permission === "implicitly_denied";
15014
+ });
15015
+ if (hasIamDenial) return ErrorLevel.IAM_PERMISSION;
15016
+ if (span.status_code === 2) return ErrorLevel.ERROR;
15017
+ const hasErrorInErrors = span.errors?.some((error) => error.level === "error");
15018
+ if (hasErrorInErrors) return ErrorLevel.ERROR;
15019
+ const hasWarning = span.errors?.some((error) => error.level === "warning");
15020
+ if (hasWarning) return ErrorLevel.WARNING;
15021
+ return span.status_code || ErrorLevel.UNSET;
15022
+ };
15023
+ var SPAN_STATUS_LABELS = {
15024
+ 0: "Unset",
15025
+ 1: "OK",
15026
+ 2: "Error"
15027
+ };
15028
+ var buildTooltipContent = (span) => {
15029
+ const messages = [];
15030
+ if (span.status_message) messages.push(span.status_message);
15031
+ for (const error of span.errors ?? []) {
15032
+ if (error.message) messages.push(error.message);
15033
+ }
15034
+ const spanStatusLabel = SPAN_STATUS_LABELS[span.status_code] ?? `Unknown (${span.status_code.toString()})`;
15035
+ const iamDenials = span.events.filter((event) => event.event_type?.toLowerCase().includes("iam") && typeof event.attributes?.payload === "string").map((event) => parseIAMEvent(event.attributes.payload)).filter((parsed) => parsed?.permission === "explicitly_denied" || parsed?.permission === "implicitly_denied").filter(Boolean);
15036
+ return /* @__PURE__ */ jsxs120(Box3, { children: [
15037
+ /* @__PURE__ */ jsxs120(Typography2, { color: "inherit", display: "block", fontWeight: "bold", variant: "caption", children: [
15038
+ "Status: ",
15039
+ spanStatusLabel
15040
+ ] }),
15041
+ messages.map((message, index) => /* @__PURE__ */ jsx126(Typography2, { color: "inherit", display: "block", variant: "caption", children: message }, index)),
15042
+ iamDenials.length > 0 && /* @__PURE__ */ jsxs120(Fragment4, { children: [
15043
+ /* @__PURE__ */ jsx126(Divider2, { sx: { borderColor: "rgba(255,255,255,0.2)", my: 0.5 } }),
15044
+ /* @__PURE__ */ jsx126(Typography2, { color: "inherit", display: "block", fontWeight: "bold", variant: "caption", children: "Permissions" }),
15045
+ iamDenials.map((denial, index) => denial !== void 0 && /* @__PURE__ */ jsx126(Typography2, { color: "inherit", display: "block", variant: "caption", children: `${formatPermissionStatus(denial.permission)}: ${denial.service}.${denial.operation}` }, index))
15046
+ ] })
15047
+ ] });
15048
+ };
15049
+ var StatusIconWithTooltip = ({ span }) => {
15050
+ const errorLevel = calculateHighestErrorLevel(span);
15051
+ if (errorLevel !== ErrorLevel.ERROR && errorLevel !== ErrorLevel.IAM_PERMISSION) return /* @__PURE__ */ jsx126(Fragment4, {});
15052
+ return /* @__PURE__ */ jsx126(Tooltip2, { title: buildTooltipContent(span), children: /* @__PURE__ */ jsx126(Box3, { sx: { alignItems: "center", cursor: "default", display: "flex" }, children: /* @__PURE__ */ jsx126(StatusIcon, { errorLevel, spanStatusCode: span.status_code }) }) });
15053
+ };
15054
+
14884
15055
  // src/components/spans-list/span-count-badge.tsx
14885
15056
  import { InfoOutlined, WarningAmberOutlined } from "@mui/icons-material";
14886
- import { Box as Box3, Button, Divider as Divider2, IconButton, Popover, Skeleton, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
15057
+ import { Box as Box4, Button, Divider as Divider3, IconButton, Popover, Skeleton, Tooltip as Tooltip3, Typography as Typography3 } from "@mui/material";
14887
15058
  import { useState as useState4 } from "react";
14888
- import { Fragment as Fragment4, jsx as jsx126, jsxs as jsxs120 } from "react/jsx-runtime";
15059
+ import { Fragment as Fragment5, jsx as jsx127, jsxs as jsxs121 } from "react/jsx-runtime";
14889
15060
  var resolveBindingLimit = (systemLimit, licenseLimit) => {
14890
15061
  const numericLimits = [systemLimit, licenseLimit].filter((l2) => typeof l2 === "number");
14891
15062
  if (numericLimits.length > 0) return Math.min(...numericLimits);
@@ -14898,28 +15069,28 @@ var fmtLimit = (value) => {
14898
15069
  if (value === "unlimited") return "Unlimited";
14899
15070
  return fmt(value);
14900
15071
  };
14901
- var StatRow = ({ label, value }) => /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
14902
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
14903
- /* @__PURE__ */ jsx126(Typography2, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
15072
+ var StatRow = ({ label, value }) => /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
15073
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
15074
+ /* @__PURE__ */ jsx127(Typography3, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
14904
15075
  ] });
14905
15076
  var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) => {
14906
15077
  const [anchorElement, setAnchorElement] = useState4();
14907
15078
  const bindingLimit = resolveBindingLimit(systemLimit, licenseLimit);
14908
15079
  if (totalCount === void 0 && bindingLimit === void 0) {
14909
- return /* @__PURE__ */ jsx126(Fragment4, {});
15080
+ return /* @__PURE__ */ jsx127(Fragment5, {});
14910
15081
  }
14911
15082
  if (visibleCount !== void 0) totalCount = Math.max(totalCount ?? 0, visibleCount);
14912
15083
  const isLoading = totalCount === void 0;
14913
15084
  const isOpen = anchorElement !== void 0;
14914
15085
  const systemLimitReached = typeof systemLimit === "number" && totalCount !== void 0 && totalCount >= systemLimit;
14915
15086
  const licenseLimitReached = typeof licenseLimit === "number" && totalCount !== void 0 && totalCount >= licenseLimit;
14916
- return /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
14917
- isLoading ? /* @__PURE__ */ jsx126(Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
14918
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", variant: "caption", children: "Showing" }),
14919
- /* @__PURE__ */ jsx126(Typography2, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
14920
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
15087
+ return /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
15088
+ isLoading ? /* @__PURE__ */ jsx127(Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
15089
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", variant: "caption", children: "Showing" }),
15090
+ /* @__PURE__ */ jsx127(Typography3, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
15091
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
14921
15092
  ] }),
14922
- /* @__PURE__ */ jsx126(Tooltip2, { title: "Operation count details", children: /* @__PURE__ */ jsx126(
15093
+ /* @__PURE__ */ jsx127(Tooltip3, { title: "Operation count details", children: /* @__PURE__ */ jsx127(
14923
15094
  IconButton,
14924
15095
  {
14925
15096
  "aria-describedby": isOpen ? "operation-count-popover" : void 0,
@@ -14928,10 +15099,10 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14928
15099
  },
14929
15100
  size: "small",
14930
15101
  sx: { color: systemLimitReached || licenseLimitReached ? "warning.main" : "text.disabled" },
14931
- children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ jsx126(WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ jsx126(InfoOutlined, { sx: { fontSize: 14 } })
15102
+ children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ jsx127(WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ jsx127(InfoOutlined, { sx: { fontSize: 14 } })
14932
15103
  }
14933
15104
  ) }),
14934
- /* @__PURE__ */ jsx126(
15105
+ /* @__PURE__ */ jsx127(
14935
15106
  Popover,
14936
15107
  {
14937
15108
  anchorEl: anchorElement,
@@ -14942,54 +15113,54 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14942
15113
  },
14943
15114
  open: isOpen,
14944
15115
  transformOrigin: { horizontal: "right", vertical: "top" },
14945
- children: /* @__PURE__ */ jsxs120(Box3, { sx: { minWidth: 240, p: 2 }, children: [
14946
- /* @__PURE__ */ jsx126(Typography2, { fontWeight: 700, variant: "body2", children: "Storage" }),
14947
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
14948
- /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
14949
- /* @__PURE__ */ jsx126(
15116
+ children: /* @__PURE__ */ jsxs121(Box4, { sx: { minWidth: 240, p: 2 }, children: [
15117
+ /* @__PURE__ */ jsx127(Typography3, { fontWeight: 700, variant: "body2", children: "Storage" }),
15118
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
15119
+ /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
15120
+ /* @__PURE__ */ jsx127(
14950
15121
  StatRow,
14951
15122
  {
14952
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
15123
+ label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
14953
15124
  value: visibleCount
14954
15125
  }
14955
15126
  ),
14956
- /* @__PURE__ */ jsx126(
15127
+ /* @__PURE__ */ jsx127(
14957
15128
  StatRow,
14958
15129
  {
14959
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
15130
+ label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
14960
15131
  value: totalCount
14961
15132
  }
14962
15133
  )
14963
15134
  ] }),
14964
- (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ jsxs120(Fragment4, { children: [
14965
- /* @__PURE__ */ jsx126(Divider2, { sx: { my: 1.5 } }),
14966
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
14967
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", sx: { display: "block", mb: 1.5, mt: 0.25 }, variant: "caption", children: "Limits restrict the total number of operations that can be stored." }),
14968
- /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
14969
- licenseLimit !== void 0 && /* @__PURE__ */ jsx126(
15135
+ (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15136
+ /* @__PURE__ */ jsx127(Divider3, { sx: { my: 1.5 } }),
15137
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
15138
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", sx: { display: "block", mb: 1.5, mt: 0.25 }, variant: "caption", children: "Limits restrict the total number of operations that can be stored." }),
15139
+ /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
15140
+ licenseLimit !== void 0 && /* @__PURE__ */ jsx127(
14970
15141
  StatRow,
14971
15142
  {
14972
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
15143
+ label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
14973
15144
  value: licenseLimit
14974
15145
  }
14975
15146
  ),
14976
- systemLimit !== void 0 && /* @__PURE__ */ jsx126(
15147
+ systemLimit !== void 0 && /* @__PURE__ */ jsx127(
14977
15148
  StatRow,
14978
15149
  {
14979
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
15150
+ label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
14980
15151
  value: systemLimit
14981
15152
  }
14982
15153
  )
14983
15154
  ] })
14984
15155
  ] }),
14985
- (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
14986
- licenseLimitReached && /* @__PURE__ */ jsxs120(Box3, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
14987
- /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
14988
- /* @__PURE__ */ jsx126(WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
14989
- /* @__PURE__ */ jsx126(Typography2, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
15156
+ (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
15157
+ licenseLimitReached && /* @__PURE__ */ jsxs121(Box4, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
15158
+ /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
15159
+ /* @__PURE__ */ jsx127(WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
15160
+ /* @__PURE__ */ jsx127(Typography3, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
14990
15161
  ] }),
14991
- /* @__PURE__ */ jsx126(Typography2, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
14992
- /* @__PURE__ */ jsx126(
15162
+ /* @__PURE__ */ jsx127(Typography3, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
15163
+ /* @__PURE__ */ jsx127(
14993
15164
  Button,
14994
15165
  {
14995
15166
  color: "inherit",
@@ -15002,9 +15173,9 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
15002
15173
  }
15003
15174
  )
15004
15175
  ] }),
15005
- systemLimitReached && !licenseLimitReached && /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
15006
- /* @__PURE__ */ jsx126(WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
15007
- /* @__PURE__ */ jsx126(Typography2, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
15176
+ systemLimitReached && !licenseLimitReached && /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
15177
+ /* @__PURE__ */ jsx127(WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
15178
+ /* @__PURE__ */ jsx127(Typography3, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
15008
15179
  ] })
15009
15180
  ] })
15010
15181
  ] })
@@ -15014,7 +15185,7 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
15014
15185
  };
15015
15186
 
15016
15187
  // src/components/spans-list/spans-data-grid.tsx
15017
- import { Fragment as Fragment5, jsx as jsx127, jsxs as jsxs121 } from "react/jsx-runtime";
15188
+ import { Fragment as Fragment6, jsx as jsx128, jsxs as jsxs122 } from "react/jsx-runtime";
15018
15189
  var columnHelper = createColumnHelper();
15019
15190
  var newSpanBackgroundColor = {
15020
15191
  dark: { from: "rgba(136, 123, 2, 1)", to: "rgba(136, 123, 2, 0)" },
@@ -15026,15 +15197,15 @@ var LABEL_NO_SPANS = "There are no operations";
15026
15197
  var LABEL_LOAD_OLDER = "Load older operations";
15027
15198
  var LABEL_LOAD_NEWER = "Load newer operations";
15028
15199
  var STICK_TO_EDGE_THRESHOLD_PX = 4;
15029
- var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ jsx127(TableRow, { children: /* @__PURE__ */ jsx127(TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx127("span", { children: label }) }) });
15030
- var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ jsx127(TableRow, { children: /* @__PURE__ */ jsxs121(TableCell, { colSpan, sx: { textAlign: "center" }, children: [
15031
- !fetching && /* @__PURE__ */ jsx127(Button2, { onClick: onFetch, sx: { my: 1 }, children: label }),
15032
- fetching && /* @__PURE__ */ jsx127(CircularProgress, { size: 24, sx: { m: 2 } })
15200
+ var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ jsx128(TableRow, { children: /* @__PURE__ */ jsx128(TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx128("span", { children: label }) }) });
15201
+ var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ jsx128(TableRow, { children: /* @__PURE__ */ jsxs122(TableCell, { colSpan, sx: { textAlign: "center" }, children: [
15202
+ !fetching && /* @__PURE__ */ jsx128(Button2, { onClick: onFetch, sx: { my: 1 }, children: label }),
15203
+ fetching && /* @__PURE__ */ jsx128(CircularProgress, { size: 24, sx: { m: 2 } })
15033
15204
  ] }) });
15034
15205
  var SpansDataGridRow = memo8(
15035
15206
  ({ onSpanClick, row }) => {
15036
15207
  const theme = useTheme2();
15037
- return /* @__PURE__ */ jsx127(
15208
+ return /* @__PURE__ */ jsx128(
15038
15209
  TableRow,
15039
15210
  {
15040
15211
  animate: {
@@ -15053,7 +15224,7 @@ var SpansDataGridRow = memo8(
15053
15224
  transition: "background-color 1200ms ease-in"
15054
15225
  },
15055
15226
  children: row.getVisibleCells().map((cell) => {
15056
- return /* @__PURE__ */ jsx127(
15227
+ return /* @__PURE__ */ jsx128(
15057
15228
  TableCell,
15058
15229
  {
15059
15230
  sx: {
@@ -15061,8 +15232,8 @@ var SpansDataGridRow = memo8(
15061
15232
  maxWidth: `${cell.column.getSize().toString()}px`,
15062
15233
  minWidth: `${cell.column.getSize().toString()}px`
15063
15234
  },
15064
- children: /* @__PURE__ */ jsx127(
15065
- Box4,
15235
+ children: /* @__PURE__ */ jsx128(
15236
+ Box5,
15066
15237
  {
15067
15238
  sx: {
15068
15239
  "alignItems": "center",
@@ -15074,7 +15245,7 @@ var SpansDataGridRow = memo8(
15074
15245
  },
15075
15246
  "width": "100%"
15076
15247
  },
15077
- children: /* @__PURE__ */ jsx127(Box4, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
15248
+ children: /* @__PURE__ */ jsx128(Box5, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
15078
15249
  }
15079
15250
  )
15080
15251
  },
@@ -15111,8 +15282,8 @@ var SpansDataGrid = ({
15111
15282
  }) => {
15112
15283
  const columns = useMemo5(() => [
15113
15284
  columnHelper.accessor("startTime", {
15114
- cell: (props) => /* @__PURE__ */ jsx127(ResponsiveTimestampCell, { date: props.getValue() }),
15115
- header: () => /* @__PURE__ */ jsx127(
15285
+ cell: (props) => /* @__PURE__ */ jsx128(ResponsiveTimestampCell, { date: props.getValue() }),
15286
+ header: () => /* @__PURE__ */ jsx128(
15116
15287
  TableSortLabel,
15117
15288
  {
15118
15289
  active: true,
@@ -15129,23 +15300,23 @@ var SpansDataGrid = ({
15129
15300
  columnHelper.display({
15130
15301
  cell: (props) => {
15131
15302
  if (!props.row.original.parent_service_name || !props.row.original.parent_resource_name) {
15132
- return /* @__PURE__ */ jsx127(Typography3, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
15303
+ return /* @__PURE__ */ jsx128(Typography4, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
15133
15304
  }
15134
- return /* @__PURE__ */ jsx127(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
15305
+ return /* @__PURE__ */ jsx128(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
15135
15306
  },
15136
15307
  header: "Producer",
15137
15308
  id: "producer",
15138
15309
  size: 180
15139
15310
  }),
15140
15311
  columnHelper.accessor("operation_name", {
15141
- cell: (props) => /* @__PURE__ */ jsx127(
15142
- Box4,
15312
+ cell: (props) => /* @__PURE__ */ jsx128(
15313
+ Box5,
15143
15314
  {
15144
15315
  sx: {
15145
15316
  overflow: "hidden",
15146
15317
  textOverflow: "ellipsis"
15147
15318
  },
15148
- children: /* @__PURE__ */ jsx127("span", { title: props.getValue(), children: props.getValue() })
15319
+ children: /* @__PURE__ */ jsx128("span", { title: props.getValue(), children: props.getValue() })
15149
15320
  }
15150
15321
  ),
15151
15322
  header: "Action",
@@ -15154,7 +15325,7 @@ var SpansDataGrid = ({
15154
15325
  }),
15155
15326
  columnHelper.display({
15156
15327
  cell: (props) => {
15157
- return /* @__PURE__ */ jsx127(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
15328
+ return /* @__PURE__ */ jsx128(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
15158
15329
  },
15159
15330
  header: "Consumer",
15160
15331
  id: "consumer",
@@ -15162,24 +15333,26 @@ var SpansDataGrid = ({
15162
15333
  }),
15163
15334
  columnHelper.display({
15164
15335
  cell: (props) => {
15165
- return /* @__PURE__ */ jsx127(Box4, { sx: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx127(
15166
- Button2,
15167
- {
15168
- "data-testid": VIEW_SPAN_DETAILS_TEST_ID,
15169
- onClick: (event) => {
15170
- event.stopPropagation();
15171
- onSpanClick(props.row.original);
15172
- },
15173
- size: "small",
15174
- sx: { px: 1 },
15175
- variant: "text",
15176
- children: "View Details"
15177
- }
15178
- ) });
15336
+ return /* @__PURE__ */ jsxs122(Box5, { sx: { alignItems: "center", display: "flex", gap: 0.5, justifyContent: "flex-end" }, children: [
15337
+ /* @__PURE__ */ jsx128(StatusIconWithTooltip, { span: props.row.original }),
15338
+ /* @__PURE__ */ jsx128(
15339
+ Button2,
15340
+ {
15341
+ "data-testid": VIEW_SPAN_DETAILS_TEST_ID,
15342
+ onClick: (event) => {
15343
+ event.stopPropagation();
15344
+ onSpanClick(props.row.original);
15345
+ },
15346
+ size: "small",
15347
+ sx: { px: 1 },
15348
+ variant: "text",
15349
+ children: "View Details"
15350
+ }
15351
+ )
15352
+ ] });
15179
15353
  },
15180
15354
  id: "actions",
15181
- // The actions column doesn't need more space
15182
- size: 96
15355
+ size: 128
15183
15356
  })
15184
15357
  ], [onSpanClick, onOrderChange, order2]);
15185
15358
  const table = useReactTable({
@@ -15212,46 +15385,46 @@ var SpansDataGrid = ({
15212
15385
  if (!element || !isAtLiveEdgeRef.current) return;
15213
15386
  element.scrollTop = element.scrollHeight;
15214
15387
  }, [order2, spans?.length, lastSpanId]);
15215
- return /* @__PURE__ */ jsxs121(Fragment5, { children: [
15216
- /* @__PURE__ */ jsx127(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
15217
- /* @__PURE__ */ jsx127(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
15218
- errorCount !== void 0 && errorCount > 0 && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15219
- /* @__PURE__ */ jsx127(Typography3, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15220
- /* @__PURE__ */ jsx127(Tooltip3, { title: "Number of errors detected across all operations", children: /* @__PURE__ */ jsxs121(
15221
- Box4,
15388
+ return /* @__PURE__ */ jsxs122(Fragment6, { children: [
15389
+ /* @__PURE__ */ jsx128(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs122(Box5, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
15390
+ /* @__PURE__ */ jsx128(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
15391
+ errorCount !== void 0 && errorCount > 0 && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15392
+ /* @__PURE__ */ jsx128(Typography4, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15393
+ /* @__PURE__ */ jsx128(Tooltip4, { title: "Number of errors detected across all operations", children: /* @__PURE__ */ jsxs122(
15394
+ Box5,
15222
15395
  {
15223
15396
  "data-testid": ERROR_COUNT_TEST_ID,
15224
15397
  sx: { alignItems: "center", borderBottom: "1px dotted", borderColor: "error.main", cursor: "default", display: "flex", gap: 0.5, mb: "-1px" },
15225
15398
  children: [
15226
- /* @__PURE__ */ jsx127(Typography3, { color: "error", variant: "body2", children: errorCount.toLocaleString() }),
15227
- /* @__PURE__ */ jsx127(Typography3, { color: "error", variant: "caption", children: errorCount === 1 ? "error" : "errors" })
15399
+ /* @__PURE__ */ jsx128(Typography4, { color: "error", variant: "body2", children: errorCount.toLocaleString() }),
15400
+ /* @__PURE__ */ jsx128(Typography4, { color: "error", variant: "caption", children: errorCount === 1 ? "error" : "errors" })
15228
15401
  ]
15229
15402
  }
15230
15403
  ) })
15231
15404
  ] }),
15232
- warningCount !== void 0 && warningCount > 0 && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15233
- /* @__PURE__ */ jsx127(Typography3, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15234
- /* @__PURE__ */ jsx127(Tooltip3, { title: "Number of warnings detected across all operations", children: /* @__PURE__ */ jsxs121(
15235
- Box4,
15405
+ warningCount !== void 0 && warningCount > 0 && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15406
+ /* @__PURE__ */ jsx128(Typography4, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15407
+ /* @__PURE__ */ jsx128(Tooltip4, { title: "Number of warnings detected across all operations", children: /* @__PURE__ */ jsxs122(
15408
+ Box5,
15236
15409
  {
15237
15410
  "data-testid": WARNING_COUNT_TEST_ID,
15238
15411
  sx: { alignItems: "center", borderBottom: "1px dotted", borderColor: "warning.main", cursor: "default", display: "flex", gap: 0.5, mb: "-1px" },
15239
15412
  children: [
15240
- /* @__PURE__ */ jsx127(Typography3, { color: "warning.main", variant: "body2", children: warningCount.toLocaleString() }),
15241
- /* @__PURE__ */ jsx127(Typography3, { color: "warning.main", variant: "caption", children: warningCount === 1 ? "warning" : "warnings" })
15413
+ /* @__PURE__ */ jsx128(Typography4, { color: "warning.main", variant: "body2", children: warningCount.toLocaleString() }),
15414
+ /* @__PURE__ */ jsx128(Typography4, { color: "warning.main", variant: "caption", children: warningCount === 1 ? "warning" : "warnings" })
15242
15415
  ]
15243
15416
  }
15244
15417
  ) })
15245
15418
  ] }),
15246
- /* @__PURE__ */ jsx127(Box4, { sx: { flexGrow: 1 } }),
15247
- /* @__PURE__ */ jsx127(
15419
+ /* @__PURE__ */ jsx128(Box5, { sx: { flexGrow: 1 } }),
15420
+ /* @__PURE__ */ jsx128(
15248
15421
  FormControlLabel,
15249
15422
  {
15250
- control: /* @__PURE__ */ jsx127(
15423
+ control: /* @__PURE__ */ jsx128(
15251
15424
  Button2,
15252
15425
  {
15253
15426
  onClick: onToggleStream,
15254
- startIcon: streamPaused ? /* @__PURE__ */ jsx127(PlayArrowOutlined, {}) : /* @__PURE__ */ jsx127(PauseOutlined, {}),
15427
+ startIcon: streamPaused ? /* @__PURE__ */ jsx128(PlayArrowOutlined, {}) : /* @__PURE__ */ jsx128(PauseOutlined, {}),
15255
15428
  variant: "text",
15256
15429
  children: streamPaused ? "Resume Stream" : "Pause Stream"
15257
15430
  }
@@ -15259,15 +15432,15 @@ var SpansDataGrid = ({
15259
15432
  label: ""
15260
15433
  }
15261
15434
  ),
15262
- /* @__PURE__ */ jsx127(
15435
+ /* @__PURE__ */ jsx128(
15263
15436
  FormControlLabel,
15264
15437
  {
15265
- control: /* @__PURE__ */ jsx127(
15438
+ control: /* @__PURE__ */ jsx128(
15266
15439
  Button2,
15267
15440
  {
15268
15441
  "data-testid": CLEAR_SPANS_TEST_ID,
15269
15442
  onClick: onClearSpans,
15270
- startIcon: /* @__PURE__ */ jsx127(DeleteForeverOutlined, {}),
15443
+ startIcon: /* @__PURE__ */ jsx128(DeleteForeverOutlined, {}),
15271
15444
  children: "Clear Operations"
15272
15445
  }
15273
15446
  ),
@@ -15276,7 +15449,7 @@ var SpansDataGrid = ({
15276
15449
  }
15277
15450
  )
15278
15451
  ] }) }),
15279
- /* @__PURE__ */ jsx127(Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ jsx127(
15452
+ /* @__PURE__ */ jsx128(Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ jsx128(
15280
15453
  TableContainer,
15281
15454
  {
15282
15455
  onScroll: handleScroll,
@@ -15289,7 +15462,7 @@ var SpansDataGrid = ({
15289
15462
  right: 0,
15290
15463
  top: 0
15291
15464
  },
15292
- children: /* @__PURE__ */ jsxs121(
15465
+ children: /* @__PURE__ */ jsxs122(
15293
15466
  Table,
15294
15467
  {
15295
15468
  stickyHeader: true,
@@ -15301,8 +15474,8 @@ var SpansDataGrid = ({
15301
15474
  "th+th": { pl: "8px !important" }
15302
15475
  },
15303
15476
  children: [
15304
- /* @__PURE__ */ jsx127(TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
15305
- return /* @__PURE__ */ jsx127(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx127(
15477
+ /* @__PURE__ */ jsx128(TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
15478
+ return /* @__PURE__ */ jsx128(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx128(
15306
15479
  TableCell,
15307
15480
  {
15308
15481
  colSpan: header.colSpan,
@@ -15317,31 +15490,31 @@ var SpansDataGrid = ({
15317
15490
  header.id
15318
15491
  )) }, headerGroup.id);
15319
15492
  }) }),
15320
- /* @__PURE__ */ jsxs121(TableBody, { children: [
15321
- (spans === void 0 || clearingSpans) && /* @__PURE__ */ jsx127(TableRow, { children: /* @__PURE__ */ jsx127(TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx127(CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
15322
- !clearingSpans && spans?.length === 0 && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
15323
- !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15324
- hasRows && hasMoreForward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15325
- hasRows && !hasMoreForward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
15326
- hasRows && /* @__PURE__ */ jsx127(AnimatePresence, { initial: false, children: (() => {
15493
+ /* @__PURE__ */ jsxs122(TableBody, { children: [
15494
+ (spans === void 0 || clearingSpans) && /* @__PURE__ */ jsx128(TableRow, { children: /* @__PURE__ */ jsx128(TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx128(CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
15495
+ !clearingSpans && spans?.length === 0 && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
15496
+ !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15497
+ hasRows && hasMoreForward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15498
+ hasRows && !hasMoreForward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
15499
+ hasRows && /* @__PURE__ */ jsx128(AnimatePresence, { initial: false, children: (() => {
15327
15500
  const reversed = [];
15328
15501
  for (let index = rows.length - 1; index >= 0; index--) {
15329
15502
  const row = rows.at(index);
15330
15503
  reversed.push(
15331
- /* @__PURE__ */ jsx127(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)
15504
+ /* @__PURE__ */ jsx128(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)
15332
15505
  );
15333
15506
  }
15334
15507
  return reversed;
15335
15508
  })() }),
15336
- hasRows && hasMoreBackward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15337
- hasRows && !hasMoreBackward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
15509
+ hasRows && hasMoreBackward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15510
+ hasRows && !hasMoreBackward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
15338
15511
  ] }),
15339
- !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15340
- hasRows && !hasMoreBackward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
15341
- hasRows && hasMoreBackward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15342
- hasRows && /* @__PURE__ */ jsx127(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ jsx127(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)) }),
15343
- hasRows && hasMoreForward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15344
- hasRows && !hasMoreForward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
15512
+ !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15513
+ hasRows && !hasMoreBackward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
15514
+ hasRows && hasMoreBackward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15515
+ hasRows && /* @__PURE__ */ jsx128(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ jsx128(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)) }),
15516
+ hasRows && hasMoreForward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15517
+ hasRows && !hasMoreForward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
15345
15518
  ] })
15346
15519
  ] })
15347
15520
  ]
@@ -15353,13 +15526,13 @@ var SpansDataGrid = ({
15353
15526
  };
15354
15527
 
15355
15528
  // src/components/spans-list/spans-list.tsx
15356
- import { jsx as jsx128, jsxs as jsxs122 } from "react/jsx-runtime";
15529
+ import { jsx as jsx129, jsxs as jsxs123 } from "react/jsx-runtime";
15357
15530
  var SpansList = (props) => {
15358
- return /* @__PURE__ */ jsxs122(Box5, { "data-testid": SPANS_DATA_GRID_TEST_ID, sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
15359
- props.fetchError && /* @__PURE__ */ jsxs122(
15531
+ return /* @__PURE__ */ jsxs123(Box6, { "data-testid": SPANS_DATA_GRID_TEST_ID, sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
15532
+ props.fetchError && /* @__PURE__ */ jsxs123(
15360
15533
  Alert2,
15361
15534
  {
15362
- action: /* @__PURE__ */ jsx128(Button3, { onClick: props.onFetchForward, children: "Retry" }),
15535
+ action: /* @__PURE__ */ jsx129(Button3, { onClick: props.onFetchForward, children: "Retry" }),
15363
15536
  severity: "error",
15364
15537
  children: [
15365
15538
  "Unexpected error:",
@@ -15368,7 +15541,7 @@ var SpansList = (props) => {
15368
15541
  ]
15369
15542
  }
15370
15543
  ),
15371
- /* @__PURE__ */ jsx128(
15544
+ /* @__PURE__ */ jsx129(
15372
15545
  SpansDataGrid,
15373
15546
  {
15374
15547
  clearingSpans: props.clearingSpans,
@@ -15397,9 +15570,9 @@ var SpansList = (props) => {
15397
15570
 
15398
15571
  // src/components/status-message/status-message.tsx
15399
15572
  import { ErrorOutline, InfoOutlined as InfoOutlined2 } from "@mui/icons-material";
15400
- import { Alert as Alert3, AlertTitle, Box as Box6, Button as Button4, CircularProgress as CircularProgress2, Link, Typography as Typography4 } from "@mui/material";
15573
+ import { Alert as Alert3, AlertTitle, Box as Box7, Button as Button4, CircularProgress as CircularProgress2, Link, Typography as Typography5 } from "@mui/material";
15401
15574
  import { useState as useState5 } from "react";
15402
- import { Fragment as Fragment6, jsx as jsx129, jsxs as jsxs123 } from "react/jsx-runtime";
15575
+ import { Fragment as Fragment7, jsx as jsx130, jsxs as jsxs124 } from "react/jsx-runtime";
15403
15576
  var StatusMessage = ({
15404
15577
  error,
15405
15578
  localstackVersion,
@@ -15423,8 +15596,8 @@ var StatusMessage = ({
15423
15596
  };
15424
15597
  if (error instanceof AppInspectorNotFoundError) {
15425
15598
  const isBelowMinimum = localstackVersion !== void 0 && checkEmulatorVersion(localstackVersion) === "below-minimum";
15426
- return /* @__PURE__ */ jsx129(
15427
- Box6,
15599
+ return /* @__PURE__ */ jsx130(
15600
+ Box7,
15428
15601
  {
15429
15602
  sx: {
15430
15603
  alignItems: "center",
@@ -15434,18 +15607,18 @@ var StatusMessage = ({
15434
15607
  justifyContent: "center",
15435
15608
  p: 4
15436
15609
  },
15437
- children: /* @__PURE__ */ jsxs123(
15610
+ children: /* @__PURE__ */ jsxs124(
15438
15611
  Alert3,
15439
15612
  {
15440
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15613
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15441
15614
  severity: "error",
15442
15615
  sx: { maxWidth: 600, width: "100%" },
15443
15616
  children: [
15444
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
15445
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 2 }, variant: "body2", children: isBelowMinimum ? `App Inspector requires LocalStack ${MINIMUM_EMULATOR_VERSION} or later. You are running version ${localstackVersion}. Please update LocalStack.` : "App Inspector is not available in LocalStack. Ensure LocalStack is up-to-date." }),
15446
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx129("strong", { children: "Update LocalStack:" }) }),
15447
- /* @__PURE__ */ jsx129(
15448
- Box6,
15617
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
15618
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: isBelowMinimum ? `App Inspector requires LocalStack ${MINIMUM_EMULATOR_VERSION} or later. You are running version ${localstackVersion}. Please update LocalStack.` : "App Inspector is not available in LocalStack. Ensure LocalStack is up-to-date." }),
15619
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx130("strong", { children: "Update LocalStack:" }) }),
15620
+ /* @__PURE__ */ jsx130(
15621
+ Box7,
15449
15622
  {
15450
15623
  component: "pre",
15451
15624
  sx: {
@@ -15457,7 +15630,7 @@ var StatusMessage = ({
15457
15630
  children: "localstack update docker-images"
15458
15631
  }
15459
15632
  ),
15460
- /* @__PURE__ */ jsx129(Box6, { sx: { display: "flex", gap: 1, mt: 2 }, children: onRetry && /* @__PURE__ */ jsx129(
15633
+ /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", gap: 1, mt: 2 }, children: onRetry && /* @__PURE__ */ jsx130(
15461
15634
  Button4,
15462
15635
  {
15463
15636
  "aria-label": "Check App Inspector status again",
@@ -15474,8 +15647,8 @@ var StatusMessage = ({
15474
15647
  );
15475
15648
  }
15476
15649
  if (error instanceof ConnectionError) {
15477
- return /* @__PURE__ */ jsx129(
15478
- Box6,
15650
+ return /* @__PURE__ */ jsx130(
15651
+ Box7,
15479
15652
  {
15480
15653
  sx: {
15481
15654
  alignItems: "center",
@@ -15485,17 +15658,17 @@ var StatusMessage = ({
15485
15658
  justifyContent: "center",
15486
15659
  p: 4
15487
15660
  },
15488
- children: /* @__PURE__ */ jsxs123(
15661
+ children: /* @__PURE__ */ jsxs124(
15489
15662
  Alert3,
15490
15663
  {
15491
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15664
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15492
15665
  severity: "error",
15493
15666
  sx: { maxWidth: 600, width: "100%" },
15494
15667
  children: [
15495
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
15496
- /* @__PURE__ */ jsxs123(Typography4, { sx: { mb: 2 }, variant: "body2", children: [
15668
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
15669
+ /* @__PURE__ */ jsxs124(Typography5, { sx: { mb: 2 }, variant: "body2", children: [
15497
15670
  "Failed to connect to LocalStack. Ensure ",
15498
- /* @__PURE__ */ jsx129(
15671
+ /* @__PURE__ */ jsx130(
15499
15672
  Link,
15500
15673
  {
15501
15674
  href: "https://docs.localstack.cloud/aws/getting-started/installation/",
@@ -15506,9 +15679,9 @@ var StatusMessage = ({
15506
15679
  ),
15507
15680
  " is running and accessible."
15508
15681
  ] }),
15509
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx129("strong", { children: "Start LocalStack:" }) }),
15510
- /* @__PURE__ */ jsx129(
15511
- Box6,
15682
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx130("strong", { children: "Start LocalStack:" }) }),
15683
+ /* @__PURE__ */ jsx130(
15684
+ Box7,
15512
15685
  {
15513
15686
  component: "pre",
15514
15687
  sx: {
@@ -15520,7 +15693,7 @@ var StatusMessage = ({
15520
15693
  children: "localstack start"
15521
15694
  }
15522
15695
  ),
15523
- onRetry && /* @__PURE__ */ jsx129(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx129(
15696
+ onRetry && /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx130(
15524
15697
  Button4,
15525
15698
  {
15526
15699
  "aria-label": "Retry connection to LocalStack",
@@ -15536,8 +15709,8 @@ var StatusMessage = ({
15536
15709
  );
15537
15710
  }
15538
15711
  if (error instanceof AppInspectorDisabledError || status?.status === "DISABLED") {
15539
- return /* @__PURE__ */ jsx129(
15540
- Box6,
15712
+ return /* @__PURE__ */ jsx130(
15713
+ Box7,
15541
15714
  {
15542
15715
  sx: {
15543
15716
  alignItems: "center",
@@ -15547,43 +15720,31 @@ var StatusMessage = ({
15547
15720
  justifyContent: "center",
15548
15721
  p: 4
15549
15722
  },
15550
- children: /* @__PURE__ */ jsxs123(
15723
+ children: /* @__PURE__ */ jsxs124(
15551
15724
  Alert3,
15552
15725
  {
15553
- icon: /* @__PURE__ */ jsx129(InfoOutlined2, { fontSize: "large" }),
15726
+ icon: /* @__PURE__ */ jsx130(InfoOutlined2, { fontSize: "large" }),
15554
15727
  severity: "warning",
15555
15728
  sx: { maxWidth: 600, width: "100%" },
15556
15729
  children: [
15557
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Is Not Enabled" }),
15558
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is not currently enabled in LocalStack. You can enable it now, or at startup." }),
15559
- /* @__PURE__ */ jsxs123(Box6, { sx: { display: "flex", gap: 1, mb: 2 }, children: [
15560
- onEnable && /* @__PURE__ */ jsx129(
15561
- Button4,
15562
- {
15563
- "aria-label": "Enable App Inspector Now",
15564
- disabled: enabling,
15565
- onClick: () => {
15566
- void handleEnable();
15567
- },
15568
- startIcon: enabling ? /* @__PURE__ */ jsx129(CircularProgress2, { size: 16 }) : void 0,
15569
- variant: "contained",
15570
- children: "Enable App Inspector Now"
15571
- }
15572
- ),
15573
- onRetry && /* @__PURE__ */ jsx129(
15574
- Button4,
15575
- {
15576
- "aria-label": "Check if App Inspector is enabled",
15577
- disabled: enabling,
15578
- onClick: onRetry,
15579
- variant: "outlined",
15580
- children: "Check Again"
15581
- }
15582
- )
15583
- ] }),
15584
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15585
- /* @__PURE__ */ jsx129(
15586
- Box6,
15730
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Is Not Enabled" }),
15731
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is not currently enabled in LocalStack. You can enable it now, or at startup." }),
15732
+ /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", gap: 1, mb: 2 }, children: onEnable && /* @__PURE__ */ jsx130(
15733
+ Button4,
15734
+ {
15735
+ "aria-label": "Enable App Inspector Now",
15736
+ disabled: enabling,
15737
+ onClick: () => {
15738
+ void handleEnable();
15739
+ },
15740
+ startIcon: enabling ? /* @__PURE__ */ jsx130(CircularProgress2, { size: 16 }) : void 0,
15741
+ variant: "contained",
15742
+ children: "Enable App Inspector Now"
15743
+ }
15744
+ ) }),
15745
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15746
+ /* @__PURE__ */ jsx130(
15747
+ Box7,
15587
15748
  {
15588
15749
  component: "pre",
15589
15750
  sx: {
@@ -15595,7 +15756,7 @@ var StatusMessage = ({
15595
15756
  children: "LOCALSTACK_APP_INSPECTOR=1 localstack start"
15596
15757
  }
15597
15758
  ),
15598
- Boolean(enableError) && /* @__PURE__ */ jsx129(Typography4, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15759
+ Boolean(enableError) && /* @__PURE__ */ jsx130(Typography5, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15599
15760
  ]
15600
15761
  }
15601
15762
  )
@@ -15603,8 +15764,8 @@ var StatusMessage = ({
15603
15764
  );
15604
15765
  }
15605
15766
  if (error) {
15606
- return /* @__PURE__ */ jsx129(
15607
- Box6,
15767
+ return /* @__PURE__ */ jsx130(
15768
+ Box7,
15608
15769
  {
15609
15770
  sx: {
15610
15771
  alignItems: "center",
@@ -15614,16 +15775,16 @@ var StatusMessage = ({
15614
15775
  justifyContent: "center",
15615
15776
  p: 4
15616
15777
  },
15617
- children: /* @__PURE__ */ jsxs123(
15778
+ children: /* @__PURE__ */ jsxs124(
15618
15779
  Alert3,
15619
15780
  {
15620
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15781
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15621
15782
  severity: "error",
15622
15783
  sx: { maxWidth: 600, width: "100%" },
15623
15784
  children: [
15624
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15625
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15626
- onRetry && /* @__PURE__ */ jsx129(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx129(
15785
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15786
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15787
+ onRetry && /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx130(
15627
15788
  Button4,
15628
15789
  {
15629
15790
  "aria-label": "Retry operation",
@@ -15638,7 +15799,7 @@ var StatusMessage = ({
15638
15799
  }
15639
15800
  );
15640
15801
  }
15641
- return /* @__PURE__ */ jsx129(Fragment6, {});
15802
+ return /* @__PURE__ */ jsx130(Fragment7, {});
15642
15803
  };
15643
15804
 
15644
15805
  // src/hooks/status-provider.tsx
@@ -15687,7 +15848,7 @@ var useStatus = () => {
15687
15848
  };
15688
15849
 
15689
15850
  // src/hooks/status-provider.tsx
15690
- import { jsx as jsx130 } from "react/jsx-runtime";
15851
+ import { jsx as jsx131 } from "react/jsx-runtime";
15691
15852
  var AppInspectorStatusContext = createContext8(void 0);
15692
15853
  var StatusProvider = ({ children }) => {
15693
15854
  const { checking, checkStatus, error, status } = useStatus();
@@ -15698,7 +15859,7 @@ var StatusProvider = ({ children }) => {
15698
15859
  () => ({ checking, checkStatus, reportDisabled, status, statusError: error }),
15699
15860
  [checking, checkStatus, reportDisabled, status, error]
15700
15861
  );
15701
- return /* @__PURE__ */ jsx130(AppInspectorStatusContext.Provider, { value, children });
15862
+ return /* @__PURE__ */ jsx131(AppInspectorStatusContext.Provider, { value, children });
15702
15863
  };
15703
15864
  var useAppInspectorStatus = () => {
15704
15865
  const value = useContext15(AppInspectorStatusContext);
@@ -18117,7 +18278,7 @@ var useAppInspectorOpenAnalytics = () => {
18117
18278
  };
18118
18279
 
18119
18280
  // src/context.tsx
18120
- import { Fragment as Fragment7, jsx as jsx131 } from "react/jsx-runtime";
18281
+ import { Fragment as Fragment8, jsx as jsx132 } from "react/jsx-runtime";
18121
18282
  var AppInspectorContext = createContext9(void 0);
18122
18283
  var useAppInspector = () => {
18123
18284
  const context = useContext16(AppInspectorContext);
@@ -18128,7 +18289,7 @@ var useAppInspector = () => {
18128
18289
  };
18129
18290
  var AppInspectorAnalyticsBoundary = ({ children }) => {
18130
18291
  useAppInspectorOpenAnalytics();
18131
- return /* @__PURE__ */ jsx131(Fragment7, { children });
18292
+ return /* @__PURE__ */ jsx132(Fragment8, { children });
18132
18293
  };
18133
18294
  var AppInspectorContextProvider = (props) => {
18134
18295
  const api = useMemo7(
@@ -18160,7 +18321,7 @@ var AppInspectorContextProvider = (props) => {
18160
18321
  }),
18161
18322
  [deploymentContainer, props.linkComponent, props.localstackEndpoint, resolveLink]
18162
18323
  );
18163
- return /* @__PURE__ */ jsx131(ApiProvider, { api, children: /* @__PURE__ */ jsx131(StatusProvider, { children: /* @__PURE__ */ jsx131(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx131(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18324
+ return /* @__PURE__ */ jsx132(ApiProvider, { api, children: /* @__PURE__ */ jsx132(StatusProvider, { children: /* @__PURE__ */ jsx132(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx132(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18164
18325
  };
18165
18326
 
18166
18327
  // src/hooks/use-spans-ws.tsx
@@ -18447,102 +18608,16 @@ var useSpans = () => {
18447
18608
 
18448
18609
  // src/pages/trace-graph-page.tsx
18449
18610
  import { ArrowBack } from "@mui/icons-material";
18450
- import { Box as Box19, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18611
+ import { Box as Box20, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18451
18612
  import { styled } from "@mui/material/styles";
18452
18613
  import { ReactFlowProvider } from "@xyflow/react";
18453
18614
  import { useCallback as useCallback11, useEffect as useEffect21, useRef as useRef17, useState as useState17 } from "react";
18454
18615
 
18455
18616
  // src/components/event-details/event-details.tsx
18456
18617
  import { Close as Close2 } from "@mui/icons-material";
18457
- import { Alert as Alert4, Box as Box15, Chip as Chip3, Divider as Divider3, FormControlLabel as FormControlLabel2, IconButton as IconButton4, Stack as Stack2, Switch, Typography as Typography10 } from "@mui/material";
18618
+ import { Alert as Alert4, Box as Box16, Chip as Chip3, Divider as Divider4, FormControlLabel as FormControlLabel2, IconButton as IconButton4, Stack as Stack2, Switch, Typography as Typography11 } from "@mui/material";
18458
18619
  import { useMemo as useMemo12, useState as useState16 } from "react";
18459
18620
 
18460
- // src/utils/iam-utils.ts
18461
- function determinePermissionStatus(payload) {
18462
- if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {
18463
- return "explicitly_denied";
18464
- }
18465
- if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {
18466
- return "explicitly_allowed";
18467
- }
18468
- if (payload.is_allowed) {
18469
- return "implicitly_allowed";
18470
- }
18471
- return "implicitly_denied";
18472
- }
18473
- function formatPermissionStatus(status) {
18474
- switch (status) {
18475
- case "explicitly_allowed": {
18476
- return "Explicitly Allowed";
18477
- }
18478
- case "explicitly_denied": {
18479
- return "Explicitly Denied";
18480
- }
18481
- case "implicitly_allowed": {
18482
- return "Implicitly Allowed";
18483
- }
18484
- case "implicitly_denied": {
18485
- return "Implicitly Denied";
18486
- }
18487
- }
18488
- }
18489
- function getPermissionStatusColor(status) {
18490
- switch (status) {
18491
- case "explicitly_allowed":
18492
- case "implicitly_allowed": {
18493
- return "success.main";
18494
- }
18495
- case "explicitly_denied": {
18496
- return "error.main";
18497
- }
18498
- case "implicitly_denied": {
18499
- return "warning.main";
18500
- }
18501
- }
18502
- }
18503
- function parseIAMEvent(payloadString) {
18504
- try {
18505
- const payload = JSON.parse(payloadString);
18506
- const permission = determinePermissionStatus(payload);
18507
- const actions = [];
18508
- const resources = [];
18509
- if (payload.explicit_allows) {
18510
- for (const allow of payload.explicit_allows) {
18511
- if (!actions.includes(allow.action)) actions.push(allow.action);
18512
- if (!resources.includes(allow.resource)) resources.push(allow.resource);
18513
- }
18514
- }
18515
- if (payload.explicit_denies) {
18516
- for (const deny of payload.explicit_denies) {
18517
- if (!actions.includes(deny.action)) actions.push(deny.action);
18518
- if (!resources.includes(deny.resource)) resources.push(deny.resource);
18519
- }
18520
- }
18521
- if (payload.implicit_denies) {
18522
- for (const deny of payload.implicit_denies) {
18523
- if (!actions.includes(deny.action)) actions.push(deny.action);
18524
- if (!resources.includes(deny.resource)) resources.push(deny.resource);
18525
- }
18526
- }
18527
- return {
18528
- details: {
18529
- actions,
18530
- explicitAllows: payload.explicit_allow_count,
18531
- explicitDenies: payload.explicit_deny_count,
18532
- implicitDenies: payload.implicit_deny_count,
18533
- resources
18534
- },
18535
- operation: payload.operation,
18536
- permission,
18537
- principal: payload.principal_arn,
18538
- service: payload.service
18539
- };
18540
- } catch (error) {
18541
- console.error("Error parsing IAM event payload:", error);
18542
- return void 0;
18543
- }
18544
- }
18545
-
18546
18621
  // src/utils/event-utils.ts
18547
18622
  var iamEventParser = (eventName, attributes) => {
18548
18623
  if (attributes?.payload && typeof attributes.payload === "string") {
@@ -18653,69 +18728,69 @@ var getEventGroupsByType = (events) => {
18653
18728
 
18654
18729
  // src/components/event-details/event-detail.tsx
18655
18730
  import { KeyboardArrowDown as KeyboardArrowDown2, KeyboardArrowRight as KeyboardArrowRight2 } from "@mui/icons-material";
18656
- import { Box as Box12, IconButton as IconButton3, Typography as Typography7 } from "@mui/material";
18731
+ import { Box as Box13, IconButton as IconButton3, Typography as Typography8 } from "@mui/material";
18657
18732
  import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef15, useState as useState13 } from "react";
18658
18733
 
18659
18734
  // src/components/status-icon.tsx
18660
- import { Cancel, CheckCircle, Error as Error2, Info, RemoveCircle } from "@mui/icons-material";
18661
- import { Box as Box7 } from "@mui/material";
18662
- import { jsx as jsx132 } from "react/jsx-runtime";
18663
- var StatusIcon = ({ errorLevel }) => {
18735
+ import { Cancel as Cancel2, CheckCircle, Error as Error3, Info, RemoveCircle } from "@mui/icons-material";
18736
+ import { Box as Box8 } from "@mui/material";
18737
+ import { jsx as jsx133 } from "react/jsx-runtime";
18738
+ var StatusIcon2 = ({ errorLevel }) => {
18664
18739
  switch (errorLevel) {
18665
18740
  case EventLevel.LevelError: {
18666
- return /* @__PURE__ */ jsx132(Cancel, { sx: { color: "red" } });
18741
+ return /* @__PURE__ */ jsx133(Cancel2, { sx: { color: "red" } });
18667
18742
  }
18668
18743
  case EventLevel.LevelInfo: {
18669
- return /* @__PURE__ */ jsx132(Info, { sx: { color: "gray" } });
18744
+ return /* @__PURE__ */ jsx133(Info, { sx: { color: "gray" } });
18670
18745
  }
18671
18746
  case EventLevel.LevelPermission: {
18672
- return /* @__PURE__ */ jsx132(RemoveCircle, { sx: { color: "blue" } });
18747
+ return /* @__PURE__ */ jsx133(RemoveCircle, { sx: { color: "blue" } });
18673
18748
  }
18674
18749
  case EventLevel.LevelWarning: {
18675
- return /* @__PURE__ */ jsx132(Error2, { sx: { color: "orange" } });
18750
+ return /* @__PURE__ */ jsx133(Error3, { sx: { color: "orange" } });
18676
18751
  }
18677
18752
  default: {
18678
- return /* @__PURE__ */ jsx132(CheckCircle, { sx: { color: "lightgray" } });
18753
+ return /* @__PURE__ */ jsx133(CheckCircle, { sx: { color: "lightgray" } });
18679
18754
  }
18680
18755
  }
18681
18756
  };
18682
18757
 
18683
18758
  // src/components/event-details/iam-event-detail.tsx
18684
18759
  import { CheckCircle as CheckCircle2, Error as ErrorIcon, Warning } from "@mui/icons-material";
18685
- import { Box as Box8, Chip, Typography as Typography5 } from "@mui/material";
18686
- import { jsx as jsx133, jsxs as jsxs124 } from "react/jsx-runtime";
18687
- var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs124(Box8, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18688
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18689
- /* @__PURE__ */ jsx133(Box8, { children: typeof content === "string" ? /* @__PURE__ */ jsx133(Typography5, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18760
+ import { Box as Box9, Chip, Typography as Typography6 } from "@mui/material";
18761
+ import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18762
+ var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18763
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18764
+ /* @__PURE__ */ jsx134(Box9, { children: typeof content === "string" ? /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18690
18765
  ] });
18691
18766
  var PermissionIcon = ({ status }) => {
18692
18767
  switch (status) {
18693
18768
  case "explicitly_allowed":
18694
18769
  case "implicitly_allowed": {
18695
- return /* @__PURE__ */ jsx133(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18770
+ return /* @__PURE__ */ jsx134(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18696
18771
  }
18697
18772
  case "explicitly_denied": {
18698
- return /* @__PURE__ */ jsx133(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18773
+ return /* @__PURE__ */ jsx134(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18699
18774
  }
18700
18775
  case "implicitly_denied": {
18701
- return /* @__PURE__ */ jsx133(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18776
+ return /* @__PURE__ */ jsx134(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18702
18777
  }
18703
18778
  }
18704
18779
  };
18705
18780
  var IAMEventDetail = ({ event }) => {
18706
18781
  const payloadString = event.attributes?.payload;
18707
18782
  if (!payloadString) {
18708
- return /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18783
+ return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18709
18784
  }
18710
18785
  const parsedIAM = parseIAMEvent(payloadString);
18711
18786
  if (!parsedIAM) {
18712
- return /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18787
+ return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18713
18788
  }
18714
- return /* @__PURE__ */ jsxs124(Box8, { children: [
18715
- /* @__PURE__ */ jsx133(Box8, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx133(
18789
+ return /* @__PURE__ */ jsxs125(Box9, { children: [
18790
+ /* @__PURE__ */ jsx134(Box9, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx134(
18716
18791
  Chip,
18717
18792
  {
18718
- icon: /* @__PURE__ */ jsx133(PermissionIcon, { status: parsedIAM.permission }),
18793
+ icon: /* @__PURE__ */ jsx134(PermissionIcon, { status: parsedIAM.permission }),
18719
18794
  label: formatPermissionStatus(parsedIAM.permission),
18720
18795
  size: "small",
18721
18796
  sx: {
@@ -18725,36 +18800,36 @@ var IAMEventDetail = ({ event }) => {
18725
18800
  variant: "outlined"
18726
18801
  }
18727
18802
  ) }),
18728
- /* @__PURE__ */ jsx133(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18729
- /* @__PURE__ */ jsx133(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18730
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx133(
18803
+ /* @__PURE__ */ jsx134(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18804
+ /* @__PURE__ */ jsx134(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18805
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx134(
18731
18806
  DetailRow,
18732
18807
  {
18733
- content: /* @__PURE__ */ jsx133(Box8, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx133(Typography5, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18808
+ content: /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18734
18809
  label: "Actions"
18735
18810
  }
18736
18811
  ),
18737
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx133(
18812
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx134(
18738
18813
  DetailRow,
18739
18814
  {
18740
- content: /* @__PURE__ */ jsx133(Box8, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx133(Typography5, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18815
+ content: /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18741
18816
  label: "Resources"
18742
18817
  }
18743
18818
  ),
18744
- (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ jsxs124(Box8, { sx: { mt: 1.5 }, children: [
18745
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18746
- /* @__PURE__ */ jsxs124(Box8, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18747
- parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
18748
- /* @__PURE__ */ jsx133(Typography5, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18749
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18819
+ (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ jsxs125(Box9, { sx: { mt: 1.5 }, children: [
18820
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18821
+ /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18822
+ parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18823
+ /* @__PURE__ */ jsx134(Typography6, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18824
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18750
18825
  ] }),
18751
- parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
18752
- /* @__PURE__ */ jsx133(Typography5, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18753
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18826
+ parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18827
+ /* @__PURE__ */ jsx134(Typography6, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18828
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18754
18829
  ] }),
18755
- parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
18756
- /* @__PURE__ */ jsx133(Typography5, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18757
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18830
+ parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18831
+ /* @__PURE__ */ jsx134(Typography6, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18832
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18758
18833
  ] })
18759
18834
  ] })
18760
18835
  ] })
@@ -18763,16 +18838,16 @@ var IAMEventDetail = ({ event }) => {
18763
18838
 
18764
18839
  // src/components/event-details/iam-permission-detail.tsx
18765
18840
  import { KeyboardArrowDown, KeyboardArrowRight } from "@mui/icons-material";
18766
- import { Box as Box9, Chip as Chip2, IconButton as IconButton2, Typography as Typography6 } from "@mui/material";
18841
+ import { Box as Box10, Chip as Chip2, IconButton as IconButton2, Typography as Typography7 } from "@mui/material";
18767
18842
  import { useMemo as useMemo8, useState as useState11 } from "react";
18768
- import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18843
+ import { jsx as jsx135, jsxs as jsxs126 } from "react/jsx-runtime";
18769
18844
  var getChipColors = (status) => ({
18770
18845
  backgroundColor: getPermissionStatusColor(status),
18771
18846
  color: "white"
18772
18847
  });
18773
- var LabelValue = ({ label, value }) => /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18774
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18775
- /* @__PURE__ */ jsx134(Typography6, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18848
+ var LabelValue = ({ label, value }) => /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18849
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18850
+ /* @__PURE__ */ jsx135(Typography7, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18776
18851
  ] });
18777
18852
  var IAMPermissionItem = ({ event }) => {
18778
18853
  const [isOpen, setIsOpen] = useState11(false);
@@ -18787,40 +18862,40 @@ var IAMPermissionItem = ({ event }) => {
18787
18862
  return null;
18788
18863
  }
18789
18864
  const { chipColors, parsedIAM } = parsedData;
18790
- return /* @__PURE__ */ jsxs125(Box9, { sx: { mb: 0.5 }, children: [
18791
- /* @__PURE__ */ jsxs125(Box9, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18792
- /* @__PURE__ */ jsx134(IconButton2, { onClick: () => {
18865
+ return /* @__PURE__ */ jsxs126(Box10, { sx: { mb: 0.5 }, children: [
18866
+ /* @__PURE__ */ jsxs126(Box10, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18867
+ /* @__PURE__ */ jsx135(IconButton2, { onClick: () => {
18793
18868
  setIsOpen(!isOpen);
18794
- }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ jsx134(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx134(KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18795
- /* @__PURE__ */ jsx134(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18796
- /* @__PURE__ */ jsxs125(Typography6, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18869
+ }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ jsx135(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx135(KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18870
+ /* @__PURE__ */ jsx135(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18871
+ /* @__PURE__ */ jsxs126(Typography7, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18797
18872
  parsedIAM.service,
18798
18873
  ":",
18799
18874
  parsedIAM.operation
18800
18875
  ] })
18801
18876
  ] }),
18802
- isOpen && /* @__PURE__ */ jsxs125(Box9, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18803
- /* @__PURE__ */ jsx134(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18804
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18805
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18806
- /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx134(Typography6, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18877
+ isOpen && /* @__PURE__ */ jsxs126(Box10, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18878
+ /* @__PURE__ */ jsx135(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18879
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18880
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18881
+ /* @__PURE__ */ jsx135(Box10, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18807
18882
  ] }),
18808
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18809
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18810
- /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx134(Typography6, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18883
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18884
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18885
+ /* @__PURE__ */ jsx135(Box10, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18811
18886
  ] })
18812
18887
  ] })
18813
18888
  ] });
18814
18889
  };
18815
- var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx134(Box9, { children: events.map((event) => /* @__PURE__ */ jsx134(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18890
+ var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx135(Box10, { children: events.map((event) => /* @__PURE__ */ jsx135(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18816
18891
 
18817
18892
  // src/components/event-details/payload-viewer.tsx
18818
- import { Box as Box11, useTheme as useTheme3 } from "@mui/material";
18893
+ import { Box as Box12, useTheme as useTheme3 } from "@mui/material";
18819
18894
 
18820
18895
  // node_modules/@textea/json-viewer/dist/index.mjs
18821
18896
  var import_copy_to_clipboard = __toESM(require_copy_to_clipboard(), 1);
18822
- import { jsx as jsx135, jsxs as jsxs126, Fragment as Fragment8 } from "react/jsx-runtime";
18823
- import { Box as Box10, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
18897
+ import { jsx as jsx136, jsxs as jsxs127, Fragment as Fragment9 } from "react/jsx-runtime";
18898
+ import { Box as Box11, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
18824
18899
  import { createContext as createContext10, useContext as useContext17, useState as useState12, useRef as useRef14, useCallback as useCallback10, useMemo as useMemo9, useEffect as useEffect17, memo as memo9 } from "react";
18825
18900
  import { create, useStore, createStore } from "zustand";
18826
18901
  function r(e2) {
@@ -19174,7 +19249,7 @@ function useInspect(path, value, nestedIndex) {
19174
19249
  setInspect
19175
19250
  ];
19176
19251
  }
19177
- var DataBox = (props) => /* @__PURE__ */ jsx135(Box10, {
19252
+ var DataBox = (props) => /* @__PURE__ */ jsx136(Box11, {
19178
19253
  component: "div",
19179
19254
  ...props,
19180
19255
  sx: {
@@ -19185,7 +19260,7 @@ var DataBox = (props) => /* @__PURE__ */ jsx135(Box10, {
19185
19260
  var DataTypeLabel = (param) => {
19186
19261
  let { dataType, enable = true } = param;
19187
19262
  if (!enable) return null;
19188
- return /* @__PURE__ */ jsx135(DataBox, {
19263
+ return /* @__PURE__ */ jsx136(DataBox, {
19189
19264
  className: "data-type-label",
19190
19265
  sx: {
19191
19266
  mx: 0.5,
@@ -19203,18 +19278,18 @@ function defineEasyType(param) {
19203
19278
  const storeDisplayDataTypes = useJsonViewerStore((store) => store.displayDataTypes);
19204
19279
  const color2 = useJsonViewerStore((store) => store.colorspace[colorKey]);
19205
19280
  const onSelect = useJsonViewerStore((store) => store.onSelect);
19206
- return /* @__PURE__ */ jsxs126(DataBox, {
19281
+ return /* @__PURE__ */ jsxs127(DataBox, {
19207
19282
  onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(props.path, props.value),
19208
19283
  sx: {
19209
19284
  color: color2
19210
19285
  },
19211
19286
  children: [
19212
- displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx135(DataTypeLabel, {
19287
+ displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx136(DataTypeLabel, {
19213
19288
  dataType: type
19214
19289
  }),
19215
- /* @__PURE__ */ jsx135(DataBox, {
19290
+ /* @__PURE__ */ jsx136(DataBox, {
19216
19291
  className: "".concat(type, "-value"),
19217
- children: /* @__PURE__ */ jsx135(Render, {
19292
+ children: /* @__PURE__ */ jsx136(Render, {
19218
19293
  path: props.path,
19219
19294
  inspect: props.inspect,
19220
19295
  setInspect: props.setInspect,
@@ -19254,7 +19329,7 @@ function defineEasyType(param) {
19254
19329
  }, [
19255
19330
  setValue
19256
19331
  ]);
19257
- return /* @__PURE__ */ jsx135(InputBase, {
19332
+ return /* @__PURE__ */ jsx136(InputBase, {
19258
19333
  autoFocus: true,
19259
19334
  value,
19260
19335
  onChange: handleChange,
@@ -19294,7 +19369,7 @@ var booleanType = defineEasyType({
19294
19369
  },
19295
19370
  Renderer: (param) => {
19296
19371
  let { value } = param;
19297
- return /* @__PURE__ */ jsx135(Fragment8, {
19372
+ return /* @__PURE__ */ jsx136(Fragment9, {
19298
19373
  children: value ? "true" : "false"
19299
19374
  });
19300
19375
  }
@@ -19313,7 +19388,7 @@ var dateType = defineEasyType({
19313
19388
  colorKey: "base0D",
19314
19389
  Renderer: (param) => {
19315
19390
  let { value } = param;
19316
- return /* @__PURE__ */ jsx135(Fragment8, {
19391
+ return /* @__PURE__ */ jsx136(Fragment9, {
19317
19392
  children: value.toLocaleTimeString("en-us", displayOptions)
19318
19393
  });
19319
19394
  }
@@ -19342,12 +19417,12 @@ var functionName = (func) => {
19342
19417
  var lb = "{";
19343
19418
  var rb = "}";
19344
19419
  var PreFunctionType = (props) => {
19345
- return /* @__PURE__ */ jsxs126(NoSsr, {
19420
+ return /* @__PURE__ */ jsxs127(NoSsr, {
19346
19421
  children: [
19347
- /* @__PURE__ */ jsx135(DataTypeLabel, {
19422
+ /* @__PURE__ */ jsx136(DataTypeLabel, {
19348
19423
  dataType: "function"
19349
19424
  }),
19350
- /* @__PURE__ */ jsxs126(Box10, {
19425
+ /* @__PURE__ */ jsxs127(Box11, {
19351
19426
  component: "span",
19352
19427
  className: "data-function-start",
19353
19428
  sx: {
@@ -19363,8 +19438,8 @@ var PreFunctionType = (props) => {
19363
19438
  });
19364
19439
  };
19365
19440
  var PostFunctionType = () => {
19366
- return /* @__PURE__ */ jsx135(NoSsr, {
19367
- children: /* @__PURE__ */ jsx135(Box10, {
19441
+ return /* @__PURE__ */ jsx136(NoSsr, {
19442
+ children: /* @__PURE__ */ jsx136(Box11, {
19368
19443
  component: "span",
19369
19444
  className: "data-function-end",
19370
19445
  children: rb
@@ -19373,15 +19448,15 @@ var PostFunctionType = () => {
19373
19448
  };
19374
19449
  var FunctionType = (props) => {
19375
19450
  const functionColor = useJsonViewerStore((store) => store.colorspace.base05);
19376
- return /* @__PURE__ */ jsx135(NoSsr, {
19377
- children: /* @__PURE__ */ jsx135(Box10, {
19451
+ return /* @__PURE__ */ jsx136(NoSsr, {
19452
+ children: /* @__PURE__ */ jsx136(Box11, {
19378
19453
  className: "data-function",
19379
19454
  sx: {
19380
19455
  display: props.inspect ? "block" : "inline-block",
19381
19456
  pl: props.inspect ? 2 : 0,
19382
19457
  color: functionColor
19383
19458
  },
19384
- children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx135(Box10, {
19459
+ children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx136(Box11, {
19385
19460
  component: "span",
19386
19461
  className: "data-function-body",
19387
19462
  onClick: () => props.setInspect(true),
@@ -19409,7 +19484,7 @@ var nullType = defineEasyType({
19409
19484
  displayTypeLabel: false,
19410
19485
  Renderer: () => {
19411
19486
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19412
- return /* @__PURE__ */ jsx135(Box10, {
19487
+ return /* @__PURE__ */ jsx136(Box11, {
19413
19488
  sx: {
19414
19489
  fontSize: "0.8rem",
19415
19490
  backgroundColor,
@@ -19432,7 +19507,7 @@ var nanType = defineEasyType({
19432
19507
  deserialize: (value) => parseFloat(value),
19433
19508
  Renderer: () => {
19434
19509
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19435
- return /* @__PURE__ */ jsx135(Box10, {
19510
+ return /* @__PURE__ */ jsx136(Box11, {
19436
19511
  sx: {
19437
19512
  backgroundColor,
19438
19513
  fontSize: "0.8rem",
@@ -19452,7 +19527,7 @@ var floatType = defineEasyType({
19452
19527
  deserialize: (value) => parseFloat(value),
19453
19528
  Renderer: (param) => {
19454
19529
  let { value } = param;
19455
- return /* @__PURE__ */ jsx135(Fragment8, {
19530
+ return /* @__PURE__ */ jsx136(Fragment9, {
19456
19531
  children: value
19457
19532
  });
19458
19533
  }
@@ -19466,7 +19541,7 @@ var intType = defineEasyType({
19466
19541
  deserialize: (value) => parseFloat(value),
19467
19542
  Renderer: (param) => {
19468
19543
  let { value } = param;
19469
- return /* @__PURE__ */ jsx135(Fragment8, {
19544
+ return /* @__PURE__ */ jsx136(Fragment9, {
19470
19545
  children: value
19471
19546
  });
19472
19547
  }
@@ -19479,16 +19554,16 @@ var bigIntType = defineEasyType({
19479
19554
  deserialize: (value) => BigInt(value.replace(/\D/g, "")),
19480
19555
  Renderer: (param) => {
19481
19556
  let { value } = param;
19482
- return /* @__PURE__ */ jsx135(Fragment8, {
19557
+ return /* @__PURE__ */ jsx136(Fragment9, {
19483
19558
  children: "".concat(value, "n")
19484
19559
  });
19485
19560
  }
19486
19561
  });
19487
19562
  var BaseIcon = (param) => {
19488
19563
  let { d: d2, ...props } = param;
19489
- return /* @__PURE__ */ jsx135(SvgIcon, {
19564
+ return /* @__PURE__ */ jsx136(SvgIcon, {
19490
19565
  ...props,
19491
- children: /* @__PURE__ */ jsx135("path", {
19566
+ children: /* @__PURE__ */ jsx136("path", {
19492
19567
  d: d2
19493
19568
  })
19494
19569
  });
@@ -19503,55 +19578,55 @@ var Edit = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.3
19503
19578
  var ExpandMore = "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z";
19504
19579
  var Delete = "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5l-1-1h-5l-1 1H5v2h14V4z";
19505
19580
  var AddBoxIcon = (props) => {
19506
- return /* @__PURE__ */ jsx135(BaseIcon, {
19581
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19507
19582
  d: AddBox,
19508
19583
  ...props
19509
19584
  });
19510
19585
  };
19511
19586
  var CheckIcon = (props) => {
19512
- return /* @__PURE__ */ jsx135(BaseIcon, {
19587
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19513
19588
  d: Check,
19514
19589
  ...props
19515
19590
  });
19516
19591
  };
19517
19592
  var ChevronRightIcon = (props) => {
19518
- return /* @__PURE__ */ jsx135(BaseIcon, {
19593
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19519
19594
  d: ChevronRight,
19520
19595
  ...props
19521
19596
  });
19522
19597
  };
19523
19598
  var CircularArrowsIcon = (props) => {
19524
- return /* @__PURE__ */ jsx135(BaseIcon, {
19599
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19525
19600
  d: CircularArrows,
19526
19601
  ...props
19527
19602
  });
19528
19603
  };
19529
19604
  var CloseIcon = (props) => {
19530
- return /* @__PURE__ */ jsx135(BaseIcon, {
19605
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19531
19606
  d: Close,
19532
19607
  ...props
19533
19608
  });
19534
19609
  };
19535
19610
  var ContentCopyIcon = (props) => {
19536
- return /* @__PURE__ */ jsx135(BaseIcon, {
19611
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19537
19612
  d: ContentCopy,
19538
19613
  ...props
19539
19614
  });
19540
19615
  };
19541
19616
  var EditIcon = (props) => {
19542
- return /* @__PURE__ */ jsx135(BaseIcon, {
19617
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19543
19618
  d: Edit,
19544
19619
  ...props
19545
19620
  });
19546
19621
  };
19547
19622
  var ExpandMoreIcon = (props) => {
19548
- return /* @__PURE__ */ jsx135(BaseIcon, {
19623
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19549
19624
  d: ExpandMore,
19550
19625
  ...props
19551
19626
  });
19552
19627
  };
19553
19628
  var DeleteIcon = (props) => {
19554
- return /* @__PURE__ */ jsx135(BaseIcon, {
19629
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19555
19630
  d: Delete,
19556
19631
  ...props
19557
19632
  });
@@ -19590,7 +19665,7 @@ var PreObjectType = (props) => {
19590
19665
  props.value
19591
19666
  ]);
19592
19667
  const isTrap = useIsCycleReference(props.path, props.value);
19593
- return /* @__PURE__ */ jsxs126(Box10, {
19668
+ return /* @__PURE__ */ jsxs127(Box11, {
19594
19669
  component: "span",
19595
19670
  className: "data-object-start",
19596
19671
  sx: {
@@ -19598,7 +19673,7 @@ var PreObjectType = (props) => {
19598
19673
  },
19599
19674
  children: [
19600
19675
  isArrayLike ? arrayLb : objectLb,
19601
- shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx135(Box10, {
19676
+ shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx136(Box11, {
19602
19677
  component: "span",
19603
19678
  sx: {
19604
19679
  pl: 0.5,
@@ -19608,16 +19683,16 @@ var PreObjectType = (props) => {
19608
19683
  },
19609
19684
  children: sizeOfValue
19610
19685
  }),
19611
- isTrap && !props.inspect && /* @__PURE__ */ jsxs126(Fragment8, {
19686
+ isTrap && !props.inspect && /* @__PURE__ */ jsxs127(Fragment9, {
19612
19687
  children: [
19613
- /* @__PURE__ */ jsx135(CircularArrowsIcon, {
19688
+ /* @__PURE__ */ jsx136(CircularArrowsIcon, {
19614
19689
  sx: {
19615
19690
  fontSize: 12,
19616
19691
  color: textColor,
19617
19692
  mx: 0.5
19618
19693
  }
19619
19694
  }),
19620
- /* @__PURE__ */ jsx135(DataBox, {
19695
+ /* @__PURE__ */ jsx136(DataBox, {
19621
19696
  sx: {
19622
19697
  cursor: "pointer",
19623
19698
  userSelect: "none"
@@ -19647,7 +19722,7 @@ var PostObjectType = (props) => {
19647
19722
  props.path,
19648
19723
  props.value
19649
19724
  ]);
19650
- return /* @__PURE__ */ jsxs126(Box10, {
19725
+ return /* @__PURE__ */ jsxs127(Box11, {
19651
19726
  component: "span",
19652
19727
  className: "data-object-end",
19653
19728
  sx: {
@@ -19658,7 +19733,7 @@ var PostObjectType = (props) => {
19658
19733
  },
19659
19734
  children: [
19660
19735
  isArrayLike ? arrayRb : objectRb,
19661
- shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx135(Box10, {
19736
+ shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx136(Box11, {
19662
19737
  component: "span",
19663
19738
  sx: {
19664
19739
  pl: 0.5,
@@ -19698,7 +19773,7 @@ var ObjectType = (props) => {
19698
19773
  ...props.path,
19699
19774
  key
19700
19775
  ];
19701
- elements3.push(/* @__PURE__ */ jsx135(DataKeyPair, {
19776
+ elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19702
19777
  path,
19703
19778
  value: value2,
19704
19779
  prevValue: props.prevValue instanceof Map ? props.prevValue.get(k2) : void 0,
@@ -19714,7 +19789,7 @@ var ObjectType = (props) => {
19714
19789
  while (true) {
19715
19790
  const nextResult = iterator2.next();
19716
19791
  var _nextResult_done;
19717
- elements3.push(/* @__PURE__ */ jsx135(DataKeyPair, {
19792
+ elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19718
19793
  path: [
19719
19794
  ...props.path,
19720
19795
  "iterator:".concat(count2)
@@ -19742,7 +19817,7 @@ var ObjectType = (props) => {
19742
19817
  ...props.path,
19743
19818
  index
19744
19819
  ];
19745
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19820
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19746
19821
  path,
19747
19822
  value: value2,
19748
19823
  prevValue: Array.isArray(props.prevValue) ? props.prevValue[index] : void 0,
@@ -19751,7 +19826,7 @@ var ObjectType = (props) => {
19751
19826
  });
19752
19827
  if (value.length > displayLength) {
19753
19828
  const rest = value.length - displayLength;
19754
- elements4.push(/* @__PURE__ */ jsxs126(DataBox, {
19829
+ elements4.push(/* @__PURE__ */ jsxs127(DataBox, {
19755
19830
  sx: {
19756
19831
  cursor: "pointer",
19757
19832
  lineHeight: 1.5,
@@ -19774,7 +19849,7 @@ var ObjectType = (props) => {
19774
19849
  const prevElements = Array.isArray(props.prevValue) ? segmentArray(props.prevValue, groupArraysAfterLength) : void 0;
19775
19850
  const elementsLastIndex = elements3.length - 1;
19776
19851
  return elements3.map((list, index) => {
19777
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19852
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19778
19853
  path: props.path,
19779
19854
  value: list,
19780
19855
  nestedIndex: index,
@@ -19801,7 +19876,7 @@ var ObjectType = (props) => {
19801
19876
  ...props.path,
19802
19877
  key
19803
19878
  ];
19804
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19879
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19805
19880
  path,
19806
19881
  value: value2,
19807
19882
  prevValue: (_props_prevValue = props.prevValue) === null || _props_prevValue === void 0 ? void 0 : _props_prevValue[key],
@@ -19810,7 +19885,7 @@ var ObjectType = (props) => {
19810
19885
  });
19811
19886
  if (entries.length > displayLength) {
19812
19887
  const rest = entries.length - displayLength;
19813
- elements2.push(/* @__PURE__ */ jsxs126(DataBox, {
19888
+ elements2.push(/* @__PURE__ */ jsxs127(DataBox, {
19814
19889
  sx: {
19815
19890
  cursor: "pointer",
19816
19891
  lineHeight: 1.5,
@@ -19848,7 +19923,7 @@ var ObjectType = (props) => {
19848
19923
  if (isEmptyValue) {
19849
19924
  return null;
19850
19925
  }
19851
- return /* @__PURE__ */ jsx135(Box10, {
19926
+ return /* @__PURE__ */ jsx136(Box11, {
19852
19927
  className: "data-object",
19853
19928
  sx: {
19854
19929
  display: props.inspect ? "block" : "inline-block",
@@ -19857,7 +19932,7 @@ var ObjectType = (props) => {
19857
19932
  color: keyColor,
19858
19933
  borderLeft: props.inspect ? "1px solid ".concat(borderColor) : "none"
19859
19934
  },
19860
- children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx135(Box10, {
19935
+ children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx136(Box11, {
19861
19936
  component: "span",
19862
19937
  className: "data-object-body",
19863
19938
  onClick: () => props.setInspect(true),
@@ -19889,7 +19964,7 @@ var stringType = defineEasyType({
19889
19964
  const collapseStringsAfterLength = useJsonViewerStore((store) => store.collapseStringsAfterLength);
19890
19965
  const value = showRest ? props.value : props.value.slice(0, collapseStringsAfterLength);
19891
19966
  const hasRest = props.value.length > collapseStringsAfterLength;
19892
- return /* @__PURE__ */ jsxs126(Box10, {
19967
+ return /* @__PURE__ */ jsxs127(Box11, {
19893
19968
  component: "span",
19894
19969
  sx: {
19895
19970
  overflowWrap: "anywhere",
@@ -19907,7 +19982,7 @@ var stringType = defineEasyType({
19907
19982
  children: [
19908
19983
  '"',
19909
19984
  value,
19910
- hasRest && !showRest && /* @__PURE__ */ jsx135(Box10, {
19985
+ hasRest && !showRest && /* @__PURE__ */ jsx136(Box11, {
19911
19986
  component: "span",
19912
19987
  sx: {
19913
19988
  padding: 0.5
@@ -19926,7 +20001,7 @@ var undefinedType = defineEasyType({
19926
20001
  displayTypeLabel: false,
19927
20002
  Renderer: () => {
19928
20003
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19929
- return /* @__PURE__ */ jsx135(Box10, {
20004
+ return /* @__PURE__ */ jsx136(Box11, {
19930
20005
  sx: {
19931
20006
  fontSize: "0.7rem",
19932
20007
  backgroundColor,
@@ -20007,7 +20082,7 @@ function useTypeComponents(value, path) {
20007
20082
  registry
20008
20083
  ]);
20009
20084
  }
20010
- var IconBox = (props) => /* @__PURE__ */ jsx135(Box10, {
20085
+ var IconBox = (props) => /* @__PURE__ */ jsx136(Box11, {
20011
20086
  component: "span",
20012
20087
  ...props,
20013
20088
  sx: {
@@ -20193,18 +20268,18 @@ var DataKeyPair = (props) => {
20193
20268
  ]);
20194
20269
  const actionIcons = useMemo9(() => {
20195
20270
  if (editing) {
20196
- return /* @__PURE__ */ jsxs126(Fragment8, {
20271
+ return /* @__PURE__ */ jsxs127(Fragment9, {
20197
20272
  children: [
20198
- /* @__PURE__ */ jsx135(IconBox, {
20199
- children: /* @__PURE__ */ jsx135(CloseIcon, {
20273
+ /* @__PURE__ */ jsx136(IconBox, {
20274
+ children: /* @__PURE__ */ jsx136(CloseIcon, {
20200
20275
  sx: {
20201
20276
  fontSize: ".8rem"
20202
20277
  },
20203
20278
  onClick: abortEditing
20204
20279
  })
20205
20280
  }),
20206
- /* @__PURE__ */ jsx135(IconBox, {
20207
- children: /* @__PURE__ */ jsx135(CheckIcon, {
20281
+ /* @__PURE__ */ jsx136(IconBox, {
20282
+ children: /* @__PURE__ */ jsx136(CheckIcon, {
20208
20283
  sx: {
20209
20284
  fontSize: ".8rem"
20210
20285
  },
@@ -20214,9 +20289,9 @@ var DataKeyPair = (props) => {
20214
20289
  ]
20215
20290
  });
20216
20291
  }
20217
- return /* @__PURE__ */ jsxs126(Fragment8, {
20292
+ return /* @__PURE__ */ jsxs127(Fragment9, {
20218
20293
  children: [
20219
- enableClipboard && /* @__PURE__ */ jsx135(IconBox, {
20294
+ enableClipboard && /* @__PURE__ */ jsx136(IconBox, {
20220
20295
  onClick: (event) => {
20221
20296
  event.preventDefault();
20222
20297
  try {
@@ -20225,41 +20300,41 @@ var DataKeyPair = (props) => {
20225
20300
  console.error(e2);
20226
20301
  }
20227
20302
  },
20228
- children: copied ? /* @__PURE__ */ jsx135(CheckIcon, {
20303
+ children: copied ? /* @__PURE__ */ jsx136(CheckIcon, {
20229
20304
  sx: {
20230
20305
  fontSize: ".8rem"
20231
20306
  }
20232
- }) : /* @__PURE__ */ jsx135(ContentCopyIcon, {
20307
+ }) : /* @__PURE__ */ jsx136(ContentCopyIcon, {
20233
20308
  sx: {
20234
20309
  fontSize: ".8rem"
20235
20310
  }
20236
20311
  })
20237
20312
  }),
20238
- Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx135(IconBox, {
20313
+ Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx136(IconBox, {
20239
20314
  onClick: startEditing,
20240
- children: /* @__PURE__ */ jsx135(EditIcon, {
20315
+ children: /* @__PURE__ */ jsx136(EditIcon, {
20241
20316
  sx: {
20242
20317
  fontSize: ".8rem"
20243
20318
  }
20244
20319
  })
20245
20320
  }),
20246
- enableAdd && /* @__PURE__ */ jsx135(IconBox, {
20321
+ enableAdd && /* @__PURE__ */ jsx136(IconBox, {
20247
20322
  onClick: (event) => {
20248
20323
  event.preventDefault();
20249
20324
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(path);
20250
20325
  },
20251
- children: /* @__PURE__ */ jsx135(AddBoxIcon, {
20326
+ children: /* @__PURE__ */ jsx136(AddBoxIcon, {
20252
20327
  sx: {
20253
20328
  fontSize: ".8rem"
20254
20329
  }
20255
20330
  })
20256
20331
  }),
20257
- enableDelete && /* @__PURE__ */ jsx135(IconBox, {
20332
+ enableDelete && /* @__PURE__ */ jsx136(IconBox, {
20258
20333
  onClick: (event) => {
20259
20334
  event.preventDefault();
20260
20335
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(path, value);
20261
20336
  },
20262
- children: /* @__PURE__ */ jsx135(DeleteIcon, {
20337
+ children: /* @__PURE__ */ jsx136(DeleteIcon, {
20263
20338
  sx: {
20264
20339
  fontSize: ".9rem"
20265
20340
  }
@@ -20307,7 +20382,7 @@ var DataKeyPair = (props) => {
20307
20382
  prevValue,
20308
20383
  nestedIndex
20309
20384
  ]);
20310
- return /* @__PURE__ */ jsxs126(Box10, {
20385
+ return /* @__PURE__ */ jsxs127(Box11, {
20311
20386
  className: "data-key-pair",
20312
20387
  "data-testid": "data-key-pair" + path.join("."),
20313
20388
  sx: {
@@ -20319,7 +20394,7 @@ var DataKeyPair = (props) => {
20319
20394
  nestedIndex
20320
20395
  ]),
20321
20396
  children: [
20322
- /* @__PURE__ */ jsxs126(DataBox, {
20397
+ /* @__PURE__ */ jsxs127(DataBox, {
20323
20398
  component: "span",
20324
20399
  className: "data-key",
20325
20400
  sx: {
@@ -20340,7 +20415,7 @@ var DataKeyPair = (props) => {
20340
20415
  setInspect
20341
20416
  ]),
20342
20417
  children: [
20343
- expandable ? inspect ? /* @__PURE__ */ jsx135(ExpandMoreIcon, {
20418
+ expandable ? inspect ? /* @__PURE__ */ jsx136(ExpandMoreIcon, {
20344
20419
  className: "data-key-toggle-expanded",
20345
20420
  sx: {
20346
20421
  fontSize: ".8rem",
@@ -20348,7 +20423,7 @@ var DataKeyPair = (props) => {
20348
20423
  cursor: "pointer"
20349
20424
  }
20350
20425
  }
20351
- }) : /* @__PURE__ */ jsx135(ChevronRightIcon, {
20426
+ }) : /* @__PURE__ */ jsx136(ChevronRightIcon, {
20352
20427
  className: "data-key-toggle-collapsed",
20353
20428
  sx: {
20354
20429
  fontSize: ".8rem",
@@ -20357,44 +20432,44 @@ var DataKeyPair = (props) => {
20357
20432
  }
20358
20433
  }
20359
20434
  }) : null,
20360
- /* @__PURE__ */ jsx135(Box10, {
20435
+ /* @__PURE__ */ jsx136(Box11, {
20361
20436
  ref: highlightContainer,
20362
20437
  className: "data-key-key",
20363
20438
  component: "span",
20364
- children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs126(Fragment8, {
20439
+ children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs127(Fragment9, {
20365
20440
  children: [
20366
20441
  '"',
20367
20442
  rootName,
20368
20443
  '"'
20369
20444
  ]
20370
- }) : /* @__PURE__ */ jsx135(Fragment8, {
20445
+ }) : /* @__PURE__ */ jsx136(Fragment9, {
20371
20446
  children: rootName
20372
- }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx135(KeyRenderer, {
20447
+ }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx136(KeyRenderer, {
20373
20448
  ...downstreamProps
20374
- }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx135(Box10, {
20449
+ }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx136(Box11, {
20375
20450
  component: "span",
20376
20451
  style: {
20377
20452
  color: numberKeyColor,
20378
20453
  userSelect: isNumberKey ? "none" : "auto"
20379
20454
  },
20380
20455
  children: key
20381
- }) : quotesOnKeys ? /* @__PURE__ */ jsxs126(Fragment8, {
20456
+ }) : quotesOnKeys ? /* @__PURE__ */ jsxs127(Fragment9, {
20382
20457
  children: [
20383
20458
  '"',
20384
20459
  key,
20385
20460
  '"'
20386
20461
  ]
20387
- }) : /* @__PURE__ */ jsx135(Fragment8, {
20462
+ }) : /* @__PURE__ */ jsx136(Fragment9, {
20388
20463
  children: key
20389
20464
  }))
20390
20465
  }),
20391
- isRoot ? rootName !== false && /* @__PURE__ */ jsx135(DataBox, {
20466
+ isRoot ? rootName !== false && /* @__PURE__ */ jsx136(DataBox, {
20392
20467
  className: "data-key-colon",
20393
20468
  sx: {
20394
20469
  mr: 0.5
20395
20470
  },
20396
20471
  children: ":"
20397
- }) : nestedIndex === void 0 && /* @__PURE__ */ jsx135(DataBox, {
20472
+ }) : nestedIndex === void 0 && /* @__PURE__ */ jsx136(DataBox, {
20398
20473
  className: "data-key-colon",
20399
20474
  sx: {
20400
20475
  mr: 0.5,
@@ -20405,29 +20480,29 @@ var DataKeyPair = (props) => {
20405
20480
  },
20406
20481
  children: ":"
20407
20482
  }),
20408
- PreComponent && /* @__PURE__ */ jsx135(PreComponent, {
20483
+ PreComponent && /* @__PURE__ */ jsx136(PreComponent, {
20409
20484
  ...downstreamProps
20410
20485
  }),
20411
20486
  isHover && expandable && inspect && actionIcons
20412
20487
  ]
20413
20488
  }),
20414
- editing && editable ? Editor && /* @__PURE__ */ jsx135(Editor, {
20489
+ editing && editable ? Editor && /* @__PURE__ */ jsx136(Editor, {
20415
20490
  path,
20416
20491
  value: tempValue,
20417
20492
  setValue: setTempValue,
20418
20493
  abortEditing,
20419
20494
  commitEditing
20420
- }) : Component ? /* @__PURE__ */ jsx135(Component, {
20495
+ }) : Component ? /* @__PURE__ */ jsx136(Component, {
20421
20496
  ...downstreamProps
20422
- }) : /* @__PURE__ */ jsx135(Box10, {
20497
+ }) : /* @__PURE__ */ jsx136(Box11, {
20423
20498
  component: "span",
20424
20499
  className: "data-value-fallback",
20425
20500
  children: "fallback: ".concat(value)
20426
20501
  }),
20427
- PostComponent && /* @__PURE__ */ jsx135(PostComponent, {
20502
+ PostComponent && /* @__PURE__ */ jsx136(PostComponent, {
20428
20503
  ...downstreamProps
20429
20504
  }),
20430
- !last && displayComma && /* @__PURE__ */ jsx135(DataBox, {
20505
+ !last && displayComma && /* @__PURE__ */ jsx136(DataBox, {
20431
20506
  children: ","
20432
20507
  }),
20433
20508
  isHover && expandable && !inspect && actionIcons,
@@ -20547,7 +20622,7 @@ var JsonViewerInner = (props) => {
20547
20622
  const onMouseLeave = useCallback10(() => setHover(null), [
20548
20623
  setHover
20549
20624
  ]);
20550
- return /* @__PURE__ */ jsx135(Paper2, {
20625
+ return /* @__PURE__ */ jsx136(Paper2, {
20551
20626
  elevation: 0,
20552
20627
  className: clsx(themeCls, props.className),
20553
20628
  style: props.style,
@@ -20558,7 +20633,7 @@ var JsonViewerInner = (props) => {
20558
20633
  ...props.sx
20559
20634
  },
20560
20635
  onMouseLeave,
20561
- children: /* @__PURE__ */ jsx135(DataKeyPair, {
20636
+ children: /* @__PURE__ */ jsx136(DataKeyPair, {
20562
20637
  value,
20563
20638
  prevValue,
20564
20639
  path: emptyPath,
@@ -20610,13 +20685,13 @@ var JsonViewer = function JsonViewer2(props) {
20610
20685
  };
20611
20686
  const jsonViewerStore = useMemo9(() => createJsonViewerStore(props), []);
20612
20687
  const typeRegistryStore = useMemo9(() => createTypeRegistryStore(), []);
20613
- return /* @__PURE__ */ jsx135(ThemeProvider, {
20688
+ return /* @__PURE__ */ jsx136(ThemeProvider, {
20614
20689
  theme,
20615
- children: /* @__PURE__ */ jsx135(TypeRegistryStoreContext.Provider, {
20690
+ children: /* @__PURE__ */ jsx136(TypeRegistryStoreContext.Provider, {
20616
20691
  value: typeRegistryStore,
20617
- children: /* @__PURE__ */ jsx135(JsonViewerStoreContext.Provider, {
20692
+ children: /* @__PURE__ */ jsx136(JsonViewerStoreContext.Provider, {
20618
20693
  value: jsonViewerStore,
20619
- children: /* @__PURE__ */ jsx135(JsonViewerInner, {
20694
+ children: /* @__PURE__ */ jsx136(JsonViewerInner, {
20620
20695
  ...mixedProps
20621
20696
  })
20622
20697
  })
@@ -20626,7 +20701,7 @@ var JsonViewer = function JsonViewer2(props) {
20626
20701
 
20627
20702
  // src/components/event-details/payload-viewer.tsx
20628
20703
  import { memo as memo10 } from "react";
20629
- import { jsx as jsx136 } from "react/jsx-runtime";
20704
+ import { jsx as jsx137 } from "react/jsx-runtime";
20630
20705
  function tryParseJson(value) {
20631
20706
  if (typeof value !== "string") {
20632
20707
  return value;
@@ -20639,7 +20714,7 @@ function tryParseJson(value) {
20639
20714
  }
20640
20715
  var PayloadViewer = memo10(({ sx, testId, value }) => {
20641
20716
  const theme = useTheme3();
20642
- return /* @__PURE__ */ jsx136(Box11, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx136(
20717
+ return /* @__PURE__ */ jsx137(Box12, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx137(
20643
20718
  JsonViewer,
20644
20719
  {
20645
20720
  displayDataTypes: false,
@@ -20653,10 +20728,10 @@ var PayloadViewer = memo10(({ sx, testId, value }) => {
20653
20728
  });
20654
20729
 
20655
20730
  // src/components/event-details/event-detail.tsx
20656
- import { Fragment as Fragment9, jsx as jsx137, jsxs as jsxs127 } from "react/jsx-runtime";
20657
- var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs127(Box12, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20658
- /* @__PURE__ */ jsx137(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20659
- /* @__PURE__ */ jsx137(Box12, { children: typeof content === "string" ? /* @__PURE__ */ jsx137(Typography7, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20731
+ import { Fragment as Fragment10, jsx as jsx138, jsxs as jsxs128 } from "react/jsx-runtime";
20732
+ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs128(Box13, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20733
+ /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20734
+ /* @__PURE__ */ jsx138(Box13, { children: typeof content === "string" ? /* @__PURE__ */ jsx138(Typography8, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20660
20735
  ] });
20661
20736
  var EventMessage = ({ event }) => {
20662
20737
  const [isOpen, setIsOpen] = useState13(false);
@@ -20688,9 +20763,9 @@ var EventMessage = ({ event }) => {
20688
20763
  () => isOverflowing || hasAdditionalContent,
20689
20764
  [isOverflowing, hasAdditionalContent]
20690
20765
  );
20691
- return /* @__PURE__ */ jsxs127(Box12, { sx: { display: "flex", flexDirection: "column" }, children: [
20692
- /* @__PURE__ */ jsxs127(Box12, { sx: { alignItems: "center", display: "flex" }, children: [
20693
- Boolean(shouldShowToggle) && /* @__PURE__ */ jsx137(
20766
+ return /* @__PURE__ */ jsxs128(Box13, { sx: { display: "flex", flexDirection: "column" }, children: [
20767
+ /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex" }, children: [
20768
+ Boolean(shouldShowToggle) && /* @__PURE__ */ jsx138(
20694
20769
  IconButton3,
20695
20770
  {
20696
20771
  onClick: () => {
@@ -20698,11 +20773,11 @@ var EventMessage = ({ event }) => {
20698
20773
  },
20699
20774
  size: "small",
20700
20775
  sx: { mr: 1, p: 0 },
20701
- children: isOpen ? /* @__PURE__ */ jsx137(KeyboardArrowDown2, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx137(KeyboardArrowRight2, { sx: { fontSize: 16 } })
20776
+ children: isOpen ? /* @__PURE__ */ jsx138(KeyboardArrowDown2, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx138(KeyboardArrowRight2, { sx: { fontSize: 16 } })
20702
20777
  }
20703
20778
  ),
20704
- /* @__PURE__ */ jsx137(
20705
- Typography7,
20779
+ /* @__PURE__ */ jsx138(
20780
+ Typography8,
20706
20781
  {
20707
20782
  ref: textReference,
20708
20783
  sx: {
@@ -20719,12 +20794,12 @@ var EventMessage = ({ event }) => {
20719
20794
  }
20720
20795
  )
20721
20796
  ] }),
20722
- isOpen && /* @__PURE__ */ jsx137(Box12, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx137(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs127(Fragment9, { children: [
20723
- Boolean(parsedMessage.message) && /* @__PURE__ */ jsx137(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20724
- Boolean(parsedMessage.details) && /* @__PURE__ */ jsx137(
20797
+ isOpen && /* @__PURE__ */ jsx138(Box13, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx138(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs128(Fragment10, { children: [
20798
+ Boolean(parsedMessage.message) && /* @__PURE__ */ jsx138(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20799
+ Boolean(parsedMessage.details) && /* @__PURE__ */ jsx138(
20725
20800
  DetailRow2,
20726
20801
  {
20727
- content: /* @__PURE__ */ jsx137(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20802
+ content: /* @__PURE__ */ jsx138(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20728
20803
  label: "Details"
20729
20804
  }
20730
20805
  )
@@ -20756,15 +20831,15 @@ var EventDetail = ({
20756
20831
  type
20757
20832
  }) => {
20758
20833
  if (type === "permission") {
20759
- return /* @__PURE__ */ jsx137(IAMPermissionDetail, { events });
20834
+ return /* @__PURE__ */ jsx138(IAMPermissionDetail, { events });
20760
20835
  }
20761
20836
  const eventLevel = getEventLevelFromGroup(type);
20762
- return /* @__PURE__ */ jsxs127(Box12, { children: [
20763
- /* @__PURE__ */ jsxs127(Box12, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20764
- /* @__PURE__ */ jsx137(StatusIcon, { errorLevel: eventLevel }),
20765
- /* @__PURE__ */ jsx137(Typography7, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20837
+ return /* @__PURE__ */ jsxs128(Box13, { children: [
20838
+ /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20839
+ /* @__PURE__ */ jsx138(StatusIcon2, { errorLevel: eventLevel }),
20840
+ /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20766
20841
  ] }),
20767
- /* @__PURE__ */ jsx137(Box12, { children: events.map((event) => /* @__PURE__ */ jsx137(Box12, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ jsx137(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20842
+ /* @__PURE__ */ jsx138(Box13, { children: events.map((event) => /* @__PURE__ */ jsx138(Box13, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ jsx138(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20768
20843
  ] });
20769
20844
  };
20770
20845
 
@@ -25146,16 +25221,16 @@ var ProtocolLib = class {
25146
25221
  if (output !== void 0 && queryErrorHeader != null) {
25147
25222
  const [Code, Type] = queryErrorHeader.split(";");
25148
25223
  const entries = Object.entries(output);
25149
- const Error3 = {
25224
+ const Error4 = {
25150
25225
  Code,
25151
25226
  Type
25152
25227
  };
25153
- Object.assign(output, Error3);
25228
+ Object.assign(output, Error4);
25154
25229
  for (const [k2, v2] of entries) {
25155
- Error3[k2 === "message" ? "Message" : k2] = v2;
25230
+ Error4[k2 === "message" ? "Message" : k2] = v2;
25156
25231
  }
25157
- delete Error3.__type;
25158
- output.Error = Error3;
25232
+ delete Error4.__type;
25233
+ output.Error = Error4;
25159
25234
  }
25160
25235
  }
25161
25236
  queryCompatOutput(queryCompatErrorData, errorData) {
@@ -30455,9 +30530,9 @@ var QueryStatus = {
30455
30530
  };
30456
30531
 
30457
30532
  // src/components/event-details/lambda-invoke-logs-section.tsx
30458
- import { Box as Box13, CircularProgress as CircularProgress3, Stack, Typography as Typography8 } from "@mui/material";
30533
+ import { Box as Box14, CircularProgress as CircularProgress3, Stack, Typography as Typography9 } from "@mui/material";
30459
30534
  import { useEffect as useEffect19, useMemo as useMemo11, useRef as useRef16, useState as useState14 } from "react";
30460
- import { jsx as jsx138, jsxs as jsxs128 } from "react/jsx-runtime";
30535
+ import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30461
30536
  var POLL_INTERVAL_MS = 1e3;
30462
30537
  async function pollQueryResults(client, queryId) {
30463
30538
  return client.send(new GetQueryResultsCommand({ queryId }));
@@ -30547,30 +30622,30 @@ function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, en
30547
30622
  var LambdaInvokeLogsSection = ({ endTimeNano, functionName: functionName2, region, requestId, startTimeNano }) => {
30548
30623
  const { error, loading, logs } = useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano);
30549
30624
  if (loading) {
30550
- return /* @__PURE__ */ jsxs128(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30551
- /* @__PURE__ */ jsx138(CircularProgress3, { size: 14 }),
30552
- /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30625
+ return /* @__PURE__ */ jsxs129(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30626
+ /* @__PURE__ */ jsx139(CircularProgress3, { size: 14 }),
30627
+ /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30553
30628
  ] });
30554
30629
  }
30555
30630
  if (error !== void 0) {
30556
- return /* @__PURE__ */ jsx138(Typography8, { color: "error", variant: "body2", children: error.message });
30631
+ return /* @__PURE__ */ jsx139(Typography9, { color: "error", variant: "body2", children: error.message });
30557
30632
  }
30558
30633
  if (logs.length === 0) {
30559
- return /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30634
+ return /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30560
30635
  }
30561
- return /* @__PURE__ */ jsx138(Box13, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx138("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx138(Typography8, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30636
+ return /* @__PURE__ */ jsx139(Box14, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx139("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx139(Typography9, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30562
30637
  };
30563
30638
 
30564
30639
  // src/components/event-details/toggle-section.tsx
30565
30640
  import { KeyboardArrowDown as KeyboardArrowDown3, KeyboardArrowRight as KeyboardArrowRight3 } from "@mui/icons-material";
30566
- import { Box as Box14, Typography as Typography9 } from "@mui/material";
30641
+ import { Box as Box15, Typography as Typography10 } from "@mui/material";
30567
30642
  import { useState as useState15 } from "react";
30568
- import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30643
+ import { jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30569
30644
  var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30570
30645
  const [isOpen, setIsOpen] = useState15(initialOpen);
30571
- return /* @__PURE__ */ jsxs129(Box14, { sx: { mt: 4 }, children: [
30572
- /* @__PURE__ */ jsxs129(
30573
- Box14,
30646
+ return /* @__PURE__ */ jsxs130(Box15, { sx: { mt: 4 }, children: [
30647
+ /* @__PURE__ */ jsxs130(
30648
+ Box15,
30574
30649
  {
30575
30650
  onClick: () => {
30576
30651
  setIsOpen(!isOpen);
@@ -30583,8 +30658,8 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30583
30658
  mb: 1
30584
30659
  },
30585
30660
  children: [
30586
- /* @__PURE__ */ jsxs129(
30587
- Box14,
30661
+ /* @__PURE__ */ jsxs130(
30662
+ Box15,
30588
30663
  {
30589
30664
  role: "button",
30590
30665
  sx: {
@@ -30593,23 +30668,23 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30593
30668
  gap: 1
30594
30669
  },
30595
30670
  children: [
30596
- /* @__PURE__ */ jsx139(Typography9, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30597
- isOpen ? /* @__PURE__ */ jsx139(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx139(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
30671
+ /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30672
+ isOpen ? /* @__PURE__ */ jsx140(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx140(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
30598
30673
  ]
30599
30674
  }
30600
30675
  ),
30601
- action !== false && /* @__PURE__ */ jsx139(Box14, { onClick: (event) => {
30676
+ action !== false && /* @__PURE__ */ jsx140(Box15, { onClick: (event) => {
30602
30677
  event.stopPropagation();
30603
30678
  }, children: action })
30604
30679
  ]
30605
30680
  }
30606
30681
  ),
30607
- isOpen && /* @__PURE__ */ jsx139(Box14, { children })
30682
+ isOpen && /* @__PURE__ */ jsx140(Box15, { children })
30608
30683
  ] });
30609
30684
  };
30610
30685
 
30611
30686
  // src/components/event-details/event-details.tsx
30612
- import { Fragment as Fragment10, jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30687
+ import { Fragment as Fragment11, jsx as jsx141, jsxs as jsxs131 } from "react/jsx-runtime";
30613
30688
  var checkIsLambdaInvoke = (span) => {
30614
30689
  if (span.service_name !== "lambda") {
30615
30690
  return false;
@@ -30630,7 +30705,7 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30630
30705
  );
30631
30706
  const [parseNestedJson, setParseNestedJson] = useState16(true);
30632
30707
  if (!selectedEvent) {
30633
- return /* @__PURE__ */ jsx140(Box15, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx140(Typography10, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
30708
+ return /* @__PURE__ */ jsx141(Box16, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx141(Typography11, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
30634
30709
  }
30635
30710
  const isLambdaInvoke = checkIsLambdaInvoke(selectedEvent);
30636
30711
  const isSqsSendMessage = checkIsSqsSendMessage(selectedEvent);
@@ -30653,9 +30728,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30653
30728
  const exceptionPayload = tryParseJson(selectedEvent.attributes?.["localstack.aws.service.exception"]);
30654
30729
  const hasPayloads = requestPayload !== void 0 || responsePayload !== void 0 || exceptionPayload !== void 0 || isResponseSuppressed;
30655
30730
  const duration = selectedEvent.end_time_unix_nano ? ((BigInt(selectedEvent.end_time_unix_nano) - BigInt(selectedEvent.start_time_unix_nano)) / BigInt("1000000")).toString() : void 0;
30656
- return /* @__PURE__ */ jsxs130(Box15, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30657
- /* @__PURE__ */ jsxs130(
30658
- Box15,
30731
+ return /* @__PURE__ */ jsxs131(Box16, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30732
+ /* @__PURE__ */ jsxs131(
30733
+ Box16,
30659
30734
  {
30660
30735
  sx: {
30661
30736
  alignItems: "center",
@@ -30667,63 +30742,63 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30667
30742
  py: 1
30668
30743
  },
30669
30744
  children: [
30670
- /* @__PURE__ */ jsx140(Box15, { children: /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30671
- onClose && /* @__PURE__ */ jsx140(IconButton4, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx140(Close2, {}) })
30745
+ /* @__PURE__ */ jsx141(Box16, { children: /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30746
+ onClose && /* @__PURE__ */ jsx141(IconButton4, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx141(Close2, {}) })
30672
30747
  ]
30673
30748
  }
30674
30749
  ),
30675
- /* @__PURE__ */ jsx140(Box15, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 2, children: [
30676
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs130(Stack2, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30677
- /* @__PURE__ */ jsxs130(Box15, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30678
- /* @__PURE__ */ jsxs130(Box15, { children: [
30679
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30680
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30750
+ /* @__PURE__ */ jsx141(Box16, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 2, children: [
30751
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs131(Stack2, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30752
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30753
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30754
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30755
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30681
30756
  ] }),
30682
- /* @__PURE__ */ jsxs130(Box15, { children: [
30683
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30684
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30757
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30758
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30759
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30685
30760
  ] })
30686
30761
  ] }),
30687
- /* @__PURE__ */ jsxs130(Box15, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30688
- /* @__PURE__ */ jsxs130(Box15, { children: [
30689
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30690
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30762
+ /* @__PURE__ */ jsxs131(Box16, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30763
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30764
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30765
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30691
30766
  ] }),
30692
- Boolean(cfnResourceType) && /* @__PURE__ */ jsxs130(Box15, { children: [
30693
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30694
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30767
+ Boolean(cfnResourceType) && /* @__PURE__ */ jsxs131(Box16, { children: [
30768
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30769
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30695
30770
  ] })
30696
30771
  ] }),
30697
- Boolean(resourceArn) && /* @__PURE__ */ jsxs130(Box15, { children: [
30698
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30699
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30772
+ Boolean(resourceArn) && /* @__PURE__ */ jsxs131(Box16, { children: [
30773
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30774
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30700
30775
  ] }),
30701
- /* @__PURE__ */ jsxs130(Box15, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30702
- /* @__PURE__ */ jsxs130(Box15, { children: [
30703
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30704
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30776
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30777
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30778
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30779
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30705
30780
  ] }),
30706
- /* @__PURE__ */ jsxs130(Box15, { children: [
30707
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30708
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30781
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30782
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30783
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30709
30784
  ] })
30710
30785
  ] }),
30711
- /* @__PURE__ */ jsxs130(Box15, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30712
- /* @__PURE__ */ jsxs130(Box15, { children: [
30713
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30714
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30786
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30787
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30788
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30789
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30715
30790
  ] }),
30716
- duration !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30717
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30718
- /* @__PURE__ */ jsxs130(Typography10, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30791
+ duration !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30792
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30793
+ /* @__PURE__ */ jsxs131(Typography11, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30719
30794
  duration,
30720
30795
  "ms"
30721
30796
  ] })
30722
30797
  ] })
30723
30798
  ] }),
30724
- /* @__PURE__ */ jsxs130(Box15, { children: [
30725
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30726
- /* @__PURE__ */ jsx140(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx140(
30799
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30800
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30801
+ /* @__PURE__ */ jsx141(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx141(
30727
30802
  Chip3,
30728
30803
  {
30729
30804
  color: selectedEvent.status_code === 2 ? "error" : selectedEvent.status_code === 1 ? "success" : "default",
@@ -30734,50 +30809,50 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30734
30809
  ) })
30735
30810
  ] })
30736
30811
  ] }) }),
30737
- /* @__PURE__ */ jsx140(Divider3, {}),
30738
- /* @__PURE__ */ jsxs130(ToggleSection, { headline: "Permissions", children: [
30739
- selectedEvent.iam_errors_suppressed && /* @__PURE__ */ jsx140(Alert4, { "data-testid": EVENT_DETAILS_IAM_ERRORS_SUPPRESSED_TEST_ID, severity: "warning", sx: { mb: 1 }, children: "IAM errors are suppressed \u2014 upgrade your license to view" }),
30740
- !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx140(Typography10, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30741
- eventGroups.permissions && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30742
- eventGroups.errors && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30743
- eventGroups.warnings && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30812
+ /* @__PURE__ */ jsx141(Divider4, {}),
30813
+ /* @__PURE__ */ jsxs131(ToggleSection, { headline: "Permissions", children: [
30814
+ selectedEvent.iam_errors_suppressed && /* @__PURE__ */ jsx141(Alert4, { "data-testid": EVENT_DETAILS_IAM_ERRORS_SUPPRESSED_TEST_ID, severity: "warning", sx: { mb: 1 }, children: "IAM errors are suppressed \u2014 upgrade your license to view" }),
30815
+ !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx141(Typography11, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30816
+ eventGroups.permissions && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30817
+ eventGroups.errors && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30818
+ eventGroups.warnings && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30744
30819
  ] }),
30745
- hasPayloads && /* @__PURE__ */ jsxs130(Fragment10, { children: [
30746
- /* @__PURE__ */ jsx140(Divider3, {}),
30747
- /* @__PURE__ */ jsx140(
30820
+ hasPayloads && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30821
+ /* @__PURE__ */ jsx141(Divider4, {}),
30822
+ /* @__PURE__ */ jsx141(
30748
30823
  ToggleSection,
30749
30824
  {
30750
- action: /* @__PURE__ */ jsx140(
30825
+ action: /* @__PURE__ */ jsx141(
30751
30826
  FormControlLabel2,
30752
30827
  {
30753
- control: /* @__PURE__ */ jsx140(Switch, { checked: !parseNestedJson, onChange: (event) => {
30828
+ control: /* @__PURE__ */ jsx141(Switch, { checked: !parseNestedJson, onChange: (event) => {
30754
30829
  setParseNestedJson(!event.target.checked);
30755
30830
  }, size: "small" }),
30756
- label: /* @__PURE__ */ jsx140(Typography10, { variant: "caption", children: "View raw data" }),
30831
+ label: /* @__PURE__ */ jsx141(Typography11, { variant: "caption", children: "View raw data" }),
30757
30832
  sx: { mr: 0 }
30758
30833
  }
30759
30834
  ),
30760
30835
  headline: "Payloads",
30761
- children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 2, children: [
30762
- requestPayload !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30763
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30764
- /* @__PURE__ */ jsx140(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30836
+ children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 2, children: [
30837
+ requestPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30838
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30839
+ /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30765
30840
  ] }),
30766
- (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ jsxs130(Box15, { children: [
30767
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30768
- isResponseSuppressed ? /* @__PURE__ */ jsx140(Box15, { sx: { py: 1 }, children: /* @__PURE__ */ jsx140(Alert4, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ jsx140(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30841
+ (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ jsxs131(Box16, { children: [
30842
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30843
+ isResponseSuppressed ? /* @__PURE__ */ jsx141(Box16, { sx: { py: 1 }, children: /* @__PURE__ */ jsx141(Alert4, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30769
30844
  ] }),
30770
- exceptionPayload !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30771
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30772
- /* @__PURE__ */ jsx140(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30845
+ exceptionPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30846
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30847
+ /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30773
30848
  ] })
30774
30849
  ] })
30775
30850
  }
30776
30851
  )
30777
30852
  ] }),
30778
- isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs130(Fragment10, { children: [
30779
- /* @__PURE__ */ jsx140(Divider3, {}),
30780
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx140(
30853
+ isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30854
+ /* @__PURE__ */ jsx141(Divider4, {}),
30855
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx141(
30781
30856
  LambdaInvokeLogsSection,
30782
30857
  {
30783
30858
  endTimeNano: selectedEvent.end_time_unix_nano ?? selectedEvent.start_time_unix_nano,
@@ -30788,21 +30863,21 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30788
30863
  }
30789
30864
  ) })
30790
30865
  ] }),
30791
- /* @__PURE__ */ jsx140(Divider3, {}),
30792
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 1, children: [
30793
- /* @__PURE__ */ jsxs130(Box15, { children: [
30794
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30795
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30866
+ /* @__PURE__ */ jsx141(Divider4, {}),
30867
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 1, children: [
30868
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30869
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30870
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30796
30871
  ] }),
30797
- /* @__PURE__ */ jsxs130(Box15, { children: [
30798
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30799
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30872
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30873
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30874
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30800
30875
  ] }),
30801
- requestId !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30802
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30803
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30876
+ requestId !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30877
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30878
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30804
30879
  ] }),
30805
- eventGroups.info && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30880
+ eventGroups.info && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30806
30881
  ] }) })
30807
30882
  ] }) })
30808
30883
  ] });
@@ -30815,27 +30890,27 @@ import { Background, MarkerType, Position as Position2, ReactFlow, useEdgesState
30815
30890
  import { useEffect as useEffect20 } from "react";
30816
30891
 
30817
30892
  // src/components/trace-graph/service-node.tsx
30818
- import { Box as Box17, Divider as Divider4, Stack as Stack3, Typography as Typography11, useTheme as useTheme4 } from "@mui/material";
30893
+ import { Box as Box18, Divider as Divider5, Stack as Stack3, Typography as Typography12, useTheme as useTheme4 } from "@mui/material";
30819
30894
  import "@xyflow/react/dist/style.css";
30820
30895
  import { Handle, Position } from "@xyflow/react";
30821
30896
  import { memo as memo11 } from "react";
30822
30897
 
30823
30898
  // src/components/trace-graph/problem-indicator.tsx
30824
30899
  import { Error as ErrorIcon2, Info as Info2, Warning as Warning2 } from "@mui/icons-material";
30825
- import { Box as Box16, Tooltip as Tooltip4 } from "@mui/material";
30900
+ import { Box as Box17, Tooltip as Tooltip5 } from "@mui/material";
30826
30901
  import { useMemo as useMemo13 } from "react";
30827
- import { jsx as jsx141 } from "react/jsx-runtime";
30902
+ import { jsx as jsx142 } from "react/jsx-runtime";
30828
30903
  var ProblemIndicator = ({ error }) => {
30829
30904
  const icon = useMemo13(() => {
30830
30905
  switch (error.level) {
30831
30906
  case "error": {
30832
- return /* @__PURE__ */ jsx141(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
30907
+ return /* @__PURE__ */ jsx142(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
30833
30908
  }
30834
30909
  case "warning": {
30835
- return /* @__PURE__ */ jsx141(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
30910
+ return /* @__PURE__ */ jsx142(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
30836
30911
  }
30837
30912
  default: {
30838
- return /* @__PURE__ */ jsx141(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
30913
+ return /* @__PURE__ */ jsx142(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
30839
30914
  }
30840
30915
  }
30841
30916
  }, [error.level]);
@@ -30852,8 +30927,8 @@ var ProblemIndicator = ({ error }) => {
30852
30927
  }
30853
30928
  }
30854
30929
  }, [error.level]);
30855
- return /* @__PURE__ */ jsx141(Tooltip4, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx141(
30856
- Box16,
30930
+ return /* @__PURE__ */ jsx142(Tooltip5, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx142(
30931
+ Box17,
30857
30932
  {
30858
30933
  sx: {
30859
30934
  alignItems: "center",
@@ -30872,7 +30947,7 @@ var ProblemIndicator = ({ error }) => {
30872
30947
  };
30873
30948
 
30874
30949
  // src/components/trace-graph/service-node.tsx
30875
- import { jsx as jsx142, jsxs as jsxs131 } from "react/jsx-runtime";
30950
+ import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
30876
30951
  var handleStyle = {
30877
30952
  backgroundColor: "white",
30878
30953
  borderColor: "lightgray",
@@ -30881,8 +30956,8 @@ var handleStyle = {
30881
30956
  var ServiceNode = memo11(({ data, selected }) => {
30882
30957
  const theme = useTheme4();
30883
30958
  const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false;
30884
- return /* @__PURE__ */ jsxs131(
30885
- Box17,
30959
+ return /* @__PURE__ */ jsxs132(
30960
+ Box18,
30886
30961
  {
30887
30962
  "data-testid": SERVICE_NODE_TEST_ID,
30888
30963
  role: "button",
@@ -30904,19 +30979,19 @@ var ServiceNode = memo11(({ data, selected }) => {
30904
30979
  },
30905
30980
  tabIndex: 0,
30906
30981
  children: [
30907
- /* @__PURE__ */ jsx142(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
30908
- /* @__PURE__ */ jsx142(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
30909
- /* @__PURE__ */ jsxs131(
30982
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
30983
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
30984
+ /* @__PURE__ */ jsxs132(
30910
30985
  Stack3,
30911
30986
  {
30912
30987
  alignItems: "center",
30913
30988
  direction: "row",
30914
30989
  sx: { gap: "8px", pb: "2px", pt: "6px", px: "8px" },
30915
30990
  children: [
30916
- /* @__PURE__ */ jsx142(Box17, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ jsx142(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
30917
- /* @__PURE__ */ jsxs131(Stack3, { sx: { minWidth: 0 }, children: [
30918
- /* @__PURE__ */ jsx142(
30919
- Typography11,
30991
+ /* @__PURE__ */ jsx143(Box18, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ jsx143(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
30992
+ /* @__PURE__ */ jsxs132(Stack3, { sx: { minWidth: 0 }, children: [
30993
+ /* @__PURE__ */ jsx143(
30994
+ Typography12,
30920
30995
  {
30921
30996
  noWrap: true,
30922
30997
  sx: { fontWeight: 700, lineHeight: 1.25 },
@@ -30924,8 +30999,8 @@ var ServiceNode = memo11(({ data, selected }) => {
30924
30999
  children: getServiceDisplayName(data.event.service_name)
30925
31000
  }
30926
31001
  ),
30927
- data.event.resource_name != "" && /* @__PURE__ */ jsx142(
30928
- Typography11,
31002
+ data.event.resource_name != "" && /* @__PURE__ */ jsx143(
31003
+ Typography12,
30929
31004
  {
30930
31005
  color: "text.secondary",
30931
31006
  noWrap: true,
@@ -30938,16 +31013,16 @@ var ServiceNode = memo11(({ data, selected }) => {
30938
31013
  ]
30939
31014
  }
30940
31015
  ),
30941
- /* @__PURE__ */ jsx142(Divider4, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
30942
- /* @__PURE__ */ jsxs131(
31016
+ /* @__PURE__ */ jsx143(Divider5, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
31017
+ /* @__PURE__ */ jsxs132(
30943
31018
  Stack3,
30944
31019
  {
30945
31020
  alignItems: "center",
30946
31021
  direction: "row",
30947
31022
  sx: { minWidth: 0, pb: "5px", pr: "8px", pt: "1px" },
30948
31023
  children: [
30949
- /* @__PURE__ */ jsx142(
30950
- Box17,
31024
+ /* @__PURE__ */ jsx143(
31025
+ Box18,
30951
31026
  {
30952
31027
  sx: {
30953
31028
  alignItems: "center",
@@ -30956,11 +31031,11 @@ var ServiceNode = memo11(({ data, selected }) => {
30956
31031
  justifyContent: "center",
30957
31032
  width: "38px"
30958
31033
  },
30959
- children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ jsx142(ProblemIndicator, { error }, error.span_id))
31034
+ children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ jsx143(ProblemIndicator, { error }, error.span_id))
30960
31035
  }
30961
31036
  ),
30962
- /* @__PURE__ */ jsx142(
30963
- Typography11,
31037
+ /* @__PURE__ */ jsx143(
31038
+ Typography12,
30964
31039
  {
30965
31040
  "data-testid": SERVICE_NODE_OPERATION_NAME_TEST_ID,
30966
31041
  noWrap: true,
@@ -31033,11 +31108,11 @@ var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
31033
31108
 
31034
31109
  // src/components/trace-graph/xyflow/controls.tsx
31035
31110
  import { Add, FitScreen, Remove } from "@mui/icons-material";
31036
- import { Box as Box18, IconButton as IconButton5 } from "@mui/material";
31111
+ import { Box as Box19, IconButton as IconButton5 } from "@mui/material";
31037
31112
  import { useReactFlow, useStore as useStore2 } from "@xyflow/react";
31038
31113
  import { memo as memo12 } from "react";
31039
31114
  import { shallow } from "zustand/shallow";
31040
- import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
31115
+ import { jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31041
31116
  var selector = (s2) => ({
31042
31117
  isInteractive: s2.nodesDraggable || s2.nodesConnectable || s2.elementsSelectable,
31043
31118
  maxZoomReached: s2.transform[2] >= s2.maxZoom,
@@ -31055,8 +31130,8 @@ var Controls = memo12(() => {
31055
31130
  const onFitViewHandler = () => {
31056
31131
  void fitView();
31057
31132
  };
31058
- return /* @__PURE__ */ jsxs132(
31059
- Box18,
31133
+ return /* @__PURE__ */ jsxs133(
31134
+ Box19,
31060
31135
  {
31061
31136
  sx: {
31062
31137
  bottom: 0,
@@ -31069,33 +31144,33 @@ var Controls = memo12(() => {
31069
31144
  zIndex: 5
31070
31145
  },
31071
31146
  children: [
31072
- /* @__PURE__ */ jsx143(
31147
+ /* @__PURE__ */ jsx144(
31073
31148
  IconButton5,
31074
31149
  {
31075
31150
  className: "react-flow__controls-zoomin",
31076
31151
  disabled: maxZoomReached,
31077
31152
  onClick: onZoomInHandler,
31078
31153
  size: "small",
31079
- children: /* @__PURE__ */ jsx143(Add, {})
31154
+ children: /* @__PURE__ */ jsx144(Add, {})
31080
31155
  }
31081
31156
  ),
31082
- /* @__PURE__ */ jsx143(
31157
+ /* @__PURE__ */ jsx144(
31083
31158
  IconButton5,
31084
31159
  {
31085
31160
  className: "react-flow__controls-zoomout",
31086
31161
  disabled: minZoomReached,
31087
31162
  onClick: onZoomOutHandler,
31088
31163
  size: "small",
31089
- children: /* @__PURE__ */ jsx143(Remove, {})
31164
+ children: /* @__PURE__ */ jsx144(Remove, {})
31090
31165
  }
31091
31166
  ),
31092
- /* @__PURE__ */ jsx143(
31167
+ /* @__PURE__ */ jsx144(
31093
31168
  IconButton5,
31094
31169
  {
31095
31170
  className: "react-flow__controls-fitview",
31096
31171
  onClick: onFitViewHandler,
31097
31172
  size: "small",
31098
- children: /* @__PURE__ */ jsx143(FitScreen, {})
31173
+ children: /* @__PURE__ */ jsx144(FitScreen, {})
31099
31174
  }
31100
31175
  )
31101
31176
  ]
@@ -31104,7 +31179,7 @@ var Controls = memo12(() => {
31104
31179
  });
31105
31180
 
31106
31181
  // src/components/trace-graph/trace-graph.tsx
31107
- import { Fragment as Fragment11, jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31182
+ import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31108
31183
  var nodeTypes = {
31109
31184
  service: ServiceNode
31110
31185
  };
@@ -31167,11 +31242,11 @@ var TraceGraph = ({
31167
31242
  setEdges(layoutedEdges);
31168
31243
  }, [spans.data, initialFocusEventId, setNodes, setEdges]);
31169
31244
  const theme = useTheme5();
31170
- return /* @__PURE__ */ jsxs133(Fragment11, { children: [
31171
- spans.error && /* @__PURE__ */ jsxs133(
31245
+ return /* @__PURE__ */ jsxs134(Fragment12, { children: [
31246
+ spans.error && /* @__PURE__ */ jsxs134(
31172
31247
  Alert5,
31173
31248
  {
31174
- action: /* @__PURE__ */ jsx144(Button5, { onClick: () => {
31249
+ action: /* @__PURE__ */ jsx145(Button5, { onClick: () => {
31175
31250
  onRefresh();
31176
31251
  }, children: "Retry" }),
31177
31252
  severity: "error",
@@ -31182,7 +31257,7 @@ var TraceGraph = ({
31182
31257
  ]
31183
31258
  }
31184
31259
  ),
31185
- /* @__PURE__ */ jsxs133(
31260
+ /* @__PURE__ */ jsxs134(
31186
31261
  ReactFlow,
31187
31262
  {
31188
31263
  "data-testid": TRACE_GRAPH_TEST_ID,
@@ -31200,8 +31275,8 @@ var TraceGraph = ({
31200
31275
  onNodesChange,
31201
31276
  selectNodesOnDrag: false,
31202
31277
  children: [
31203
- /* @__PURE__ */ jsx144(Controls, {}),
31204
- /* @__PURE__ */ jsx144(
31278
+ /* @__PURE__ */ jsx145(Controls, {}),
31279
+ /* @__PURE__ */ jsx145(
31205
31280
  Background,
31206
31281
  {
31207
31282
  bgColor: theme.palette.background.default,
@@ -31215,7 +31290,7 @@ var TraceGraph = ({
31215
31290
  };
31216
31291
 
31217
31292
  // src/pages/trace-graph-page.tsx
31218
- import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31293
+ import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31219
31294
  var HEADER_HEIGHT = 56;
31220
31295
  var DRAWER_WIDTH = "35%";
31221
31296
  var Main = styled("main", { shouldForwardProp: (property) => property !== "open" })(({ open, theme }) => ({
@@ -31264,8 +31339,8 @@ var TraceGraphView = ({
31264
31339
  traceId
31265
31340
  }) => {
31266
31341
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31267
- return /* @__PURE__ */ jsxs134(
31268
- Box19,
31342
+ return /* @__PURE__ */ jsxs135(
31343
+ Box20,
31269
31344
  {
31270
31345
  "data-testid": TRACE_GRAPH_PAGE_TEST_ID,
31271
31346
  sx: {
@@ -31277,13 +31352,13 @@ var TraceGraphView = ({
31277
31352
  overflow: "hidden"
31278
31353
  },
31279
31354
  children: [
31280
- /* @__PURE__ */ jsxs134(Box19, { sx: { display: "flex", width: "100%" }, children: [
31281
- /* @__PURE__ */ jsx145(Button6, { onClick: () => {
31355
+ /* @__PURE__ */ jsxs135(Box20, { sx: { display: "flex", width: "100%" }, children: [
31356
+ /* @__PURE__ */ jsx146(Button6, { onClick: () => {
31282
31357
  navigateToSpansList();
31283
- }, startIcon: /* @__PURE__ */ jsx145(ArrowBack, {}), children: "Go back" }),
31284
- /* @__PURE__ */ jsx145(Box19, { sx: { flexGrow: 1 } })
31358
+ }, startIcon: /* @__PURE__ */ jsx146(ArrowBack, {}), children: "Go back" }),
31359
+ /* @__PURE__ */ jsx146(Box20, { sx: { flexGrow: 1 } })
31285
31360
  ] }),
31286
- /* @__PURE__ */ jsx145(
31361
+ /* @__PURE__ */ jsx146(
31287
31362
  Paper3,
31288
31363
  {
31289
31364
  sx: {
@@ -31293,7 +31368,7 @@ var TraceGraphView = ({
31293
31368
  position: "relative",
31294
31369
  width: "100%"
31295
31370
  },
31296
- children: shouldShowStatusMessage ? /* @__PURE__ */ jsx145(
31371
+ children: shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31297
31372
  StatusMessage,
31298
31373
  {
31299
31374
  error: statusError,
@@ -31301,15 +31376,15 @@ var TraceGraphView = ({
31301
31376
  onRetry: handleRetry,
31302
31377
  status
31303
31378
  }
31304
- ) : /* @__PURE__ */ jsxs134(Fragment12, { children: [
31305
- /* @__PURE__ */ jsx145(Main, { open, children: /* @__PURE__ */ jsx145(
31306
- Box19,
31379
+ ) : /* @__PURE__ */ jsxs135(Fragment13, { children: [
31380
+ /* @__PURE__ */ jsx146(Main, { open, children: /* @__PURE__ */ jsx146(
31381
+ Box20,
31307
31382
  {
31308
31383
  sx: {
31309
31384
  height: "100%",
31310
31385
  overflow: "auto"
31311
31386
  },
31312
- children: traceId !== void 0 && /* @__PURE__ */ jsx145(ReactFlowProvider, { children: /* @__PURE__ */ jsx145(
31387
+ children: traceId !== void 0 && /* @__PURE__ */ jsx146(ReactFlowProvider, { children: /* @__PURE__ */ jsx146(
31313
31388
  TraceGraph,
31314
31389
  {
31315
31390
  initialFocusEventId: spanId,
@@ -31326,7 +31401,7 @@ var TraceGraphView = ({
31326
31401
  ) })
31327
31402
  }
31328
31403
  ) }),
31329
- /* @__PURE__ */ jsx145(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx145(EventDetails, { onClose: handleClose, selectedEvent }) })
31404
+ /* @__PURE__ */ jsx146(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx146(EventDetails, { onClose: handleClose, selectedEvent }) })
31330
31405
  ] })
31331
31406
  }
31332
31407
  )
@@ -31419,7 +31494,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31419
31494
  const navigateToSpansList = useCallback11(() => {
31420
31495
  onClose?.();
31421
31496
  }, [onClose]);
31422
- return /* @__PURE__ */ jsx145(
31497
+ return /* @__PURE__ */ jsx146(
31423
31498
  TraceGraphView,
31424
31499
  {
31425
31500
  fetchError,
@@ -31444,7 +31519,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31444
31519
  };
31445
31520
 
31446
31521
  // src/pages/spans-list-page.tsx
31447
- import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31522
+ import { Fragment as Fragment14, jsx as jsx147, jsxs as jsxs136 } from "react/jsx-runtime";
31448
31523
  var SpansListPage = () => {
31449
31524
  const api = useAppInspectorApi();
31450
31525
  const {
@@ -31491,9 +31566,9 @@ var SpansListPage = () => {
31491
31566
  void checkStatus();
31492
31567
  }, [api, checkStatus, clearFetchError]);
31493
31568
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31494
- return /* @__PURE__ */ jsxs135(Fragment13, { children: [
31495
- /* @__PURE__ */ jsxs135(
31496
- Box20,
31569
+ return /* @__PURE__ */ jsxs136(Fragment14, { children: [
31570
+ /* @__PURE__ */ jsxs136(
31571
+ Box21,
31497
31572
  {
31498
31573
  "data-testid": SPANS_LIST_PAGE_TEST_ID,
31499
31574
  sx: {
@@ -31508,7 +31583,7 @@ var SpansListPage = () => {
31508
31583
  width: "100%"
31509
31584
  },
31510
31585
  children: [
31511
- !checking && !shouldShowStatusMessage && /* @__PURE__ */ jsx146(
31586
+ !checking && !shouldShowStatusMessage && /* @__PURE__ */ jsx147(
31512
31587
  EmulatorVersionBanner,
31513
31588
  {
31514
31589
  compatibility: bannerDismissed && versionCompatibility === "warning" ? "ok" : versionCompatibility,
@@ -31518,7 +31593,7 @@ var SpansListPage = () => {
31518
31593
  } : void 0
31519
31594
  }
31520
31595
  ),
31521
- shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31596
+ shouldShowStatusMessage ? /* @__PURE__ */ jsx147(
31522
31597
  StatusMessage,
31523
31598
  {
31524
31599
  error: statusError,
@@ -31527,7 +31602,7 @@ var SpansListPage = () => {
31527
31602
  onRetry: handleRetry,
31528
31603
  status
31529
31604
  }
31530
- ) : /* @__PURE__ */ jsx146(
31605
+ ) : /* @__PURE__ */ jsx147(
31531
31606
  SpansList,
31532
31607
  {
31533
31608
  clearingSpans,
@@ -31555,7 +31630,7 @@ var SpansListPage = () => {
31555
31630
  ]
31556
31631
  }
31557
31632
  ),
31558
- selectedTraceId !== void 0 && /* @__PURE__ */ jsx146(TraceGraphPage, { onClose: () => {
31633
+ selectedTraceId !== void 0 && /* @__PURE__ */ jsx147(TraceGraphPage, { onClose: () => {
31559
31634
  setSelectedTraceId(void 0);
31560
31635
  }, spanId: selectedSpanId, traceId: selectedTraceId })
31561
31636
  ] });