@localstack/appinspector-ui 1.0.114 → 1.0.115

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,17 +15720,17 @@ 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(
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__ */ jsxs124(Box7, { sx: { display: "flex", gap: 1, mb: 2 }, children: [
15733
+ onEnable && /* @__PURE__ */ jsx130(
15561
15734
  Button4,
15562
15735
  {
15563
15736
  "aria-label": "Enable App Inspector Now",
@@ -15565,12 +15738,12 @@ var StatusMessage = ({
15565
15738
  onClick: () => {
15566
15739
  void handleEnable();
15567
15740
  },
15568
- startIcon: enabling ? /* @__PURE__ */ jsx129(CircularProgress2, { size: 16 }) : void 0,
15741
+ startIcon: enabling ? /* @__PURE__ */ jsx130(CircularProgress2, { size: 16 }) : void 0,
15569
15742
  variant: "contained",
15570
15743
  children: "Enable App Inspector Now"
15571
15744
  }
15572
15745
  ),
15573
- onRetry && /* @__PURE__ */ jsx129(
15746
+ onRetry && /* @__PURE__ */ jsx130(
15574
15747
  Button4,
15575
15748
  {
15576
15749
  "aria-label": "Check if App Inspector is enabled",
@@ -15581,9 +15754,9 @@ var StatusMessage = ({
15581
15754
  }
15582
15755
  )
15583
15756
  ] }),
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,
15757
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15758
+ /* @__PURE__ */ jsx130(
15759
+ Box7,
15587
15760
  {
15588
15761
  component: "pre",
15589
15762
  sx: {
@@ -15595,7 +15768,7 @@ var StatusMessage = ({
15595
15768
  children: "LOCALSTACK_APP_INSPECTOR=1 localstack start"
15596
15769
  }
15597
15770
  ),
15598
- Boolean(enableError) && /* @__PURE__ */ jsx129(Typography4, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15771
+ Boolean(enableError) && /* @__PURE__ */ jsx130(Typography5, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15599
15772
  ]
15600
15773
  }
15601
15774
  )
@@ -15603,8 +15776,8 @@ var StatusMessage = ({
15603
15776
  );
15604
15777
  }
15605
15778
  if (error) {
15606
- return /* @__PURE__ */ jsx129(
15607
- Box6,
15779
+ return /* @__PURE__ */ jsx130(
15780
+ Box7,
15608
15781
  {
15609
15782
  sx: {
15610
15783
  alignItems: "center",
@@ -15614,16 +15787,16 @@ var StatusMessage = ({
15614
15787
  justifyContent: "center",
15615
15788
  p: 4
15616
15789
  },
15617
- children: /* @__PURE__ */ jsxs123(
15790
+ children: /* @__PURE__ */ jsxs124(
15618
15791
  Alert3,
15619
15792
  {
15620
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15793
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15621
15794
  severity: "error",
15622
15795
  sx: { maxWidth: 600, width: "100%" },
15623
15796
  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(
15797
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15798
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15799
+ onRetry && /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx130(
15627
15800
  Button4,
15628
15801
  {
15629
15802
  "aria-label": "Retry operation",
@@ -15638,7 +15811,7 @@ var StatusMessage = ({
15638
15811
  }
15639
15812
  );
15640
15813
  }
15641
- return /* @__PURE__ */ jsx129(Fragment6, {});
15814
+ return /* @__PURE__ */ jsx130(Fragment7, {});
15642
15815
  };
15643
15816
 
15644
15817
  // src/hooks/status-provider.tsx
@@ -15687,7 +15860,7 @@ var useStatus = () => {
15687
15860
  };
15688
15861
 
15689
15862
  // src/hooks/status-provider.tsx
15690
- import { jsx as jsx130 } from "react/jsx-runtime";
15863
+ import { jsx as jsx131 } from "react/jsx-runtime";
15691
15864
  var AppInspectorStatusContext = createContext8(void 0);
15692
15865
  var StatusProvider = ({ children }) => {
15693
15866
  const { checking, checkStatus, error, status } = useStatus();
@@ -15698,7 +15871,7 @@ var StatusProvider = ({ children }) => {
15698
15871
  () => ({ checking, checkStatus, reportDisabled, status, statusError: error }),
15699
15872
  [checking, checkStatus, reportDisabled, status, error]
15700
15873
  );
15701
- return /* @__PURE__ */ jsx130(AppInspectorStatusContext.Provider, { value, children });
15874
+ return /* @__PURE__ */ jsx131(AppInspectorStatusContext.Provider, { value, children });
15702
15875
  };
15703
15876
  var useAppInspectorStatus = () => {
15704
15877
  const value = useContext15(AppInspectorStatusContext);
@@ -18117,7 +18290,7 @@ var useAppInspectorOpenAnalytics = () => {
18117
18290
  };
18118
18291
 
18119
18292
  // src/context.tsx
18120
- import { Fragment as Fragment7, jsx as jsx131 } from "react/jsx-runtime";
18293
+ import { Fragment as Fragment8, jsx as jsx132 } from "react/jsx-runtime";
18121
18294
  var AppInspectorContext = createContext9(void 0);
18122
18295
  var useAppInspector = () => {
18123
18296
  const context = useContext16(AppInspectorContext);
@@ -18128,7 +18301,7 @@ var useAppInspector = () => {
18128
18301
  };
18129
18302
  var AppInspectorAnalyticsBoundary = ({ children }) => {
18130
18303
  useAppInspectorOpenAnalytics();
18131
- return /* @__PURE__ */ jsx131(Fragment7, { children });
18304
+ return /* @__PURE__ */ jsx132(Fragment8, { children });
18132
18305
  };
18133
18306
  var AppInspectorContextProvider = (props) => {
18134
18307
  const api = useMemo7(
@@ -18160,7 +18333,7 @@ var AppInspectorContextProvider = (props) => {
18160
18333
  }),
18161
18334
  [deploymentContainer, props.linkComponent, props.localstackEndpoint, resolveLink]
18162
18335
  );
18163
- return /* @__PURE__ */ jsx131(ApiProvider, { api, children: /* @__PURE__ */ jsx131(StatusProvider, { children: /* @__PURE__ */ jsx131(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx131(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18336
+ return /* @__PURE__ */ jsx132(ApiProvider, { api, children: /* @__PURE__ */ jsx132(StatusProvider, { children: /* @__PURE__ */ jsx132(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx132(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18164
18337
  };
18165
18338
 
18166
18339
  // src/hooks/use-spans-ws.tsx
@@ -18447,102 +18620,16 @@ var useSpans = () => {
18447
18620
 
18448
18621
  // src/pages/trace-graph-page.tsx
18449
18622
  import { ArrowBack } from "@mui/icons-material";
18450
- import { Box as Box19, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18623
+ import { Box as Box20, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18451
18624
  import { styled } from "@mui/material/styles";
18452
18625
  import { ReactFlowProvider } from "@xyflow/react";
18453
18626
  import { useCallback as useCallback11, useEffect as useEffect21, useRef as useRef17, useState as useState17 } from "react";
18454
18627
 
18455
18628
  // src/components/event-details/event-details.tsx
18456
18629
  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";
18630
+ 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
18631
  import { useMemo as useMemo12, useState as useState16 } from "react";
18459
18632
 
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
18633
  // src/utils/event-utils.ts
18547
18634
  var iamEventParser = (eventName, attributes) => {
18548
18635
  if (attributes?.payload && typeof attributes.payload === "string") {
@@ -18653,69 +18740,69 @@ var getEventGroupsByType = (events) => {
18653
18740
 
18654
18741
  // src/components/event-details/event-detail.tsx
18655
18742
  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";
18743
+ import { Box as Box13, IconButton as IconButton3, Typography as Typography8 } from "@mui/material";
18657
18744
  import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef15, useState as useState13 } from "react";
18658
18745
 
18659
18746
  // 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 }) => {
18747
+ import { Cancel as Cancel2, CheckCircle, Error as Error3, Info, RemoveCircle } from "@mui/icons-material";
18748
+ import { Box as Box8 } from "@mui/material";
18749
+ import { jsx as jsx133 } from "react/jsx-runtime";
18750
+ var StatusIcon2 = ({ errorLevel }) => {
18664
18751
  switch (errorLevel) {
18665
18752
  case EventLevel.LevelError: {
18666
- return /* @__PURE__ */ jsx132(Cancel, { sx: { color: "red" } });
18753
+ return /* @__PURE__ */ jsx133(Cancel2, { sx: { color: "red" } });
18667
18754
  }
18668
18755
  case EventLevel.LevelInfo: {
18669
- return /* @__PURE__ */ jsx132(Info, { sx: { color: "gray" } });
18756
+ return /* @__PURE__ */ jsx133(Info, { sx: { color: "gray" } });
18670
18757
  }
18671
18758
  case EventLevel.LevelPermission: {
18672
- return /* @__PURE__ */ jsx132(RemoveCircle, { sx: { color: "blue" } });
18759
+ return /* @__PURE__ */ jsx133(RemoveCircle, { sx: { color: "blue" } });
18673
18760
  }
18674
18761
  case EventLevel.LevelWarning: {
18675
- return /* @__PURE__ */ jsx132(Error2, { sx: { color: "orange" } });
18762
+ return /* @__PURE__ */ jsx133(Error3, { sx: { color: "orange" } });
18676
18763
  }
18677
18764
  default: {
18678
- return /* @__PURE__ */ jsx132(CheckCircle, { sx: { color: "lightgray" } });
18765
+ return /* @__PURE__ */ jsx133(CheckCircle, { sx: { color: "lightgray" } });
18679
18766
  }
18680
18767
  }
18681
18768
  };
18682
18769
 
18683
18770
  // src/components/event-details/iam-event-detail.tsx
18684
18771
  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 })
18772
+ import { Box as Box9, Chip, Typography as Typography6 } from "@mui/material";
18773
+ import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18774
+ var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18775
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18776
+ /* @__PURE__ */ jsx134(Box9, { children: typeof content === "string" ? /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18690
18777
  ] });
18691
18778
  var PermissionIcon = ({ status }) => {
18692
18779
  switch (status) {
18693
18780
  case "explicitly_allowed":
18694
18781
  case "implicitly_allowed": {
18695
- return /* @__PURE__ */ jsx133(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18782
+ return /* @__PURE__ */ jsx134(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18696
18783
  }
18697
18784
  case "explicitly_denied": {
18698
- return /* @__PURE__ */ jsx133(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18785
+ return /* @__PURE__ */ jsx134(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18699
18786
  }
18700
18787
  case "implicitly_denied": {
18701
- return /* @__PURE__ */ jsx133(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18788
+ return /* @__PURE__ */ jsx134(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18702
18789
  }
18703
18790
  }
18704
18791
  };
18705
18792
  var IAMEventDetail = ({ event }) => {
18706
18793
  const payloadString = event.attributes?.payload;
18707
18794
  if (!payloadString) {
18708
- return /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18795
+ return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18709
18796
  }
18710
18797
  const parsedIAM = parseIAMEvent(payloadString);
18711
18798
  if (!parsedIAM) {
18712
- return /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18799
+ return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18713
18800
  }
18714
- return /* @__PURE__ */ jsxs124(Box8, { children: [
18715
- /* @__PURE__ */ jsx133(Box8, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx133(
18801
+ return /* @__PURE__ */ jsxs125(Box9, { children: [
18802
+ /* @__PURE__ */ jsx134(Box9, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx134(
18716
18803
  Chip,
18717
18804
  {
18718
- icon: /* @__PURE__ */ jsx133(PermissionIcon, { status: parsedIAM.permission }),
18805
+ icon: /* @__PURE__ */ jsx134(PermissionIcon, { status: parsedIAM.permission }),
18719
18806
  label: formatPermissionStatus(parsedIAM.permission),
18720
18807
  size: "small",
18721
18808
  sx: {
@@ -18725,36 +18812,36 @@ var IAMEventDetail = ({ event }) => {
18725
18812
  variant: "outlined"
18726
18813
  }
18727
18814
  ) }),
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(
18815
+ /* @__PURE__ */ jsx134(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18816
+ /* @__PURE__ */ jsx134(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18817
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx134(
18731
18818
  DetailRow,
18732
18819
  {
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)) }),
18820
+ 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
18821
  label: "Actions"
18735
18822
  }
18736
18823
  ),
18737
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx133(
18824
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx134(
18738
18825
  DetailRow,
18739
18826
  {
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)) }),
18827
+ 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
18828
  label: "Resources"
18742
18829
  }
18743
18830
  ),
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" })
18831
+ (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ jsxs125(Box9, { sx: { mt: 1.5 }, children: [
18832
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18833
+ /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18834
+ parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18835
+ /* @__PURE__ */ jsx134(Typography6, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18836
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18750
18837
  ] }),
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" })
18838
+ parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18839
+ /* @__PURE__ */ jsx134(Typography6, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18840
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18754
18841
  ] }),
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" })
18842
+ parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18843
+ /* @__PURE__ */ jsx134(Typography6, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18844
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18758
18845
  ] })
18759
18846
  ] })
18760
18847
  ] })
@@ -18763,16 +18850,16 @@ var IAMEventDetail = ({ event }) => {
18763
18850
 
18764
18851
  // src/components/event-details/iam-permission-detail.tsx
18765
18852
  import { KeyboardArrowDown, KeyboardArrowRight } from "@mui/icons-material";
18766
- import { Box as Box9, Chip as Chip2, IconButton as IconButton2, Typography as Typography6 } from "@mui/material";
18853
+ import { Box as Box10, Chip as Chip2, IconButton as IconButton2, Typography as Typography7 } from "@mui/material";
18767
18854
  import { useMemo as useMemo8, useState as useState11 } from "react";
18768
- import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18855
+ import { jsx as jsx135, jsxs as jsxs126 } from "react/jsx-runtime";
18769
18856
  var getChipColors = (status) => ({
18770
18857
  backgroundColor: getPermissionStatusColor(status),
18771
18858
  color: "white"
18772
18859
  });
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 })
18860
+ var LabelValue = ({ label, value }) => /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18861
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18862
+ /* @__PURE__ */ jsx135(Typography7, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18776
18863
  ] });
18777
18864
  var IAMPermissionItem = ({ event }) => {
18778
18865
  const [isOpen, setIsOpen] = useState11(false);
@@ -18787,40 +18874,40 @@ var IAMPermissionItem = ({ event }) => {
18787
18874
  return null;
18788
18875
  }
18789
18876
  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: () => {
18877
+ return /* @__PURE__ */ jsxs126(Box10, { sx: { mb: 0.5 }, children: [
18878
+ /* @__PURE__ */ jsxs126(Box10, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18879
+ /* @__PURE__ */ jsx135(IconButton2, { onClick: () => {
18793
18880
  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: [
18881
+ }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ jsx135(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx135(KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18882
+ /* @__PURE__ */ jsx135(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18883
+ /* @__PURE__ */ jsxs126(Typography7, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18797
18884
  parsedIAM.service,
18798
18885
  ":",
18799
18886
  parsedIAM.operation
18800
18887
  ] })
18801
18888
  ] }),
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)) })
18889
+ isOpen && /* @__PURE__ */ jsxs126(Box10, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18890
+ /* @__PURE__ */ jsx135(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18891
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18892
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18893
+ /* @__PURE__ */ jsx135(Box10, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18807
18894
  ] }),
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)) })
18895
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18896
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18897
+ /* @__PURE__ */ jsx135(Box10, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18811
18898
  ] })
18812
18899
  ] })
18813
18900
  ] });
18814
18901
  };
18815
- var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx134(Box9, { children: events.map((event) => /* @__PURE__ */ jsx134(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18902
+ var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx135(Box10, { children: events.map((event) => /* @__PURE__ */ jsx135(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18816
18903
 
18817
18904
  // src/components/event-details/payload-viewer.tsx
18818
- import { Box as Box11, useTheme as useTheme3 } from "@mui/material";
18905
+ import { Box as Box12, useTheme as useTheme3 } from "@mui/material";
18819
18906
 
18820
18907
  // node_modules/@textea/json-viewer/dist/index.mjs
18821
18908
  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";
18909
+ import { jsx as jsx136, jsxs as jsxs127, Fragment as Fragment9 } from "react/jsx-runtime";
18910
+ import { Box as Box11, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
18824
18911
  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
18912
  import { create, useStore, createStore } from "zustand";
18826
18913
  function r(e2) {
@@ -19174,7 +19261,7 @@ function useInspect(path, value, nestedIndex) {
19174
19261
  setInspect
19175
19262
  ];
19176
19263
  }
19177
- var DataBox = (props) => /* @__PURE__ */ jsx135(Box10, {
19264
+ var DataBox = (props) => /* @__PURE__ */ jsx136(Box11, {
19178
19265
  component: "div",
19179
19266
  ...props,
19180
19267
  sx: {
@@ -19185,7 +19272,7 @@ var DataBox = (props) => /* @__PURE__ */ jsx135(Box10, {
19185
19272
  var DataTypeLabel = (param) => {
19186
19273
  let { dataType, enable = true } = param;
19187
19274
  if (!enable) return null;
19188
- return /* @__PURE__ */ jsx135(DataBox, {
19275
+ return /* @__PURE__ */ jsx136(DataBox, {
19189
19276
  className: "data-type-label",
19190
19277
  sx: {
19191
19278
  mx: 0.5,
@@ -19203,18 +19290,18 @@ function defineEasyType(param) {
19203
19290
  const storeDisplayDataTypes = useJsonViewerStore((store) => store.displayDataTypes);
19204
19291
  const color2 = useJsonViewerStore((store) => store.colorspace[colorKey]);
19205
19292
  const onSelect = useJsonViewerStore((store) => store.onSelect);
19206
- return /* @__PURE__ */ jsxs126(DataBox, {
19293
+ return /* @__PURE__ */ jsxs127(DataBox, {
19207
19294
  onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(props.path, props.value),
19208
19295
  sx: {
19209
19296
  color: color2
19210
19297
  },
19211
19298
  children: [
19212
- displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx135(DataTypeLabel, {
19299
+ displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx136(DataTypeLabel, {
19213
19300
  dataType: type
19214
19301
  }),
19215
- /* @__PURE__ */ jsx135(DataBox, {
19302
+ /* @__PURE__ */ jsx136(DataBox, {
19216
19303
  className: "".concat(type, "-value"),
19217
- children: /* @__PURE__ */ jsx135(Render, {
19304
+ children: /* @__PURE__ */ jsx136(Render, {
19218
19305
  path: props.path,
19219
19306
  inspect: props.inspect,
19220
19307
  setInspect: props.setInspect,
@@ -19254,7 +19341,7 @@ function defineEasyType(param) {
19254
19341
  }, [
19255
19342
  setValue
19256
19343
  ]);
19257
- return /* @__PURE__ */ jsx135(InputBase, {
19344
+ return /* @__PURE__ */ jsx136(InputBase, {
19258
19345
  autoFocus: true,
19259
19346
  value,
19260
19347
  onChange: handleChange,
@@ -19294,7 +19381,7 @@ var booleanType = defineEasyType({
19294
19381
  },
19295
19382
  Renderer: (param) => {
19296
19383
  let { value } = param;
19297
- return /* @__PURE__ */ jsx135(Fragment8, {
19384
+ return /* @__PURE__ */ jsx136(Fragment9, {
19298
19385
  children: value ? "true" : "false"
19299
19386
  });
19300
19387
  }
@@ -19313,7 +19400,7 @@ var dateType = defineEasyType({
19313
19400
  colorKey: "base0D",
19314
19401
  Renderer: (param) => {
19315
19402
  let { value } = param;
19316
- return /* @__PURE__ */ jsx135(Fragment8, {
19403
+ return /* @__PURE__ */ jsx136(Fragment9, {
19317
19404
  children: value.toLocaleTimeString("en-us", displayOptions)
19318
19405
  });
19319
19406
  }
@@ -19342,12 +19429,12 @@ var functionName = (func) => {
19342
19429
  var lb = "{";
19343
19430
  var rb = "}";
19344
19431
  var PreFunctionType = (props) => {
19345
- return /* @__PURE__ */ jsxs126(NoSsr, {
19432
+ return /* @__PURE__ */ jsxs127(NoSsr, {
19346
19433
  children: [
19347
- /* @__PURE__ */ jsx135(DataTypeLabel, {
19434
+ /* @__PURE__ */ jsx136(DataTypeLabel, {
19348
19435
  dataType: "function"
19349
19436
  }),
19350
- /* @__PURE__ */ jsxs126(Box10, {
19437
+ /* @__PURE__ */ jsxs127(Box11, {
19351
19438
  component: "span",
19352
19439
  className: "data-function-start",
19353
19440
  sx: {
@@ -19363,8 +19450,8 @@ var PreFunctionType = (props) => {
19363
19450
  });
19364
19451
  };
19365
19452
  var PostFunctionType = () => {
19366
- return /* @__PURE__ */ jsx135(NoSsr, {
19367
- children: /* @__PURE__ */ jsx135(Box10, {
19453
+ return /* @__PURE__ */ jsx136(NoSsr, {
19454
+ children: /* @__PURE__ */ jsx136(Box11, {
19368
19455
  component: "span",
19369
19456
  className: "data-function-end",
19370
19457
  children: rb
@@ -19373,15 +19460,15 @@ var PostFunctionType = () => {
19373
19460
  };
19374
19461
  var FunctionType = (props) => {
19375
19462
  const functionColor = useJsonViewerStore((store) => store.colorspace.base05);
19376
- return /* @__PURE__ */ jsx135(NoSsr, {
19377
- children: /* @__PURE__ */ jsx135(Box10, {
19463
+ return /* @__PURE__ */ jsx136(NoSsr, {
19464
+ children: /* @__PURE__ */ jsx136(Box11, {
19378
19465
  className: "data-function",
19379
19466
  sx: {
19380
19467
  display: props.inspect ? "block" : "inline-block",
19381
19468
  pl: props.inspect ? 2 : 0,
19382
19469
  color: functionColor
19383
19470
  },
19384
- children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx135(Box10, {
19471
+ children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx136(Box11, {
19385
19472
  component: "span",
19386
19473
  className: "data-function-body",
19387
19474
  onClick: () => props.setInspect(true),
@@ -19409,7 +19496,7 @@ var nullType = defineEasyType({
19409
19496
  displayTypeLabel: false,
19410
19497
  Renderer: () => {
19411
19498
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19412
- return /* @__PURE__ */ jsx135(Box10, {
19499
+ return /* @__PURE__ */ jsx136(Box11, {
19413
19500
  sx: {
19414
19501
  fontSize: "0.8rem",
19415
19502
  backgroundColor,
@@ -19432,7 +19519,7 @@ var nanType = defineEasyType({
19432
19519
  deserialize: (value) => parseFloat(value),
19433
19520
  Renderer: () => {
19434
19521
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19435
- return /* @__PURE__ */ jsx135(Box10, {
19522
+ return /* @__PURE__ */ jsx136(Box11, {
19436
19523
  sx: {
19437
19524
  backgroundColor,
19438
19525
  fontSize: "0.8rem",
@@ -19452,7 +19539,7 @@ var floatType = defineEasyType({
19452
19539
  deserialize: (value) => parseFloat(value),
19453
19540
  Renderer: (param) => {
19454
19541
  let { value } = param;
19455
- return /* @__PURE__ */ jsx135(Fragment8, {
19542
+ return /* @__PURE__ */ jsx136(Fragment9, {
19456
19543
  children: value
19457
19544
  });
19458
19545
  }
@@ -19466,7 +19553,7 @@ var intType = defineEasyType({
19466
19553
  deserialize: (value) => parseFloat(value),
19467
19554
  Renderer: (param) => {
19468
19555
  let { value } = param;
19469
- return /* @__PURE__ */ jsx135(Fragment8, {
19556
+ return /* @__PURE__ */ jsx136(Fragment9, {
19470
19557
  children: value
19471
19558
  });
19472
19559
  }
@@ -19479,16 +19566,16 @@ var bigIntType = defineEasyType({
19479
19566
  deserialize: (value) => BigInt(value.replace(/\D/g, "")),
19480
19567
  Renderer: (param) => {
19481
19568
  let { value } = param;
19482
- return /* @__PURE__ */ jsx135(Fragment8, {
19569
+ return /* @__PURE__ */ jsx136(Fragment9, {
19483
19570
  children: "".concat(value, "n")
19484
19571
  });
19485
19572
  }
19486
19573
  });
19487
19574
  var BaseIcon = (param) => {
19488
19575
  let { d: d2, ...props } = param;
19489
- return /* @__PURE__ */ jsx135(SvgIcon, {
19576
+ return /* @__PURE__ */ jsx136(SvgIcon, {
19490
19577
  ...props,
19491
- children: /* @__PURE__ */ jsx135("path", {
19578
+ children: /* @__PURE__ */ jsx136("path", {
19492
19579
  d: d2
19493
19580
  })
19494
19581
  });
@@ -19503,55 +19590,55 @@ var Edit = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.3
19503
19590
  var ExpandMore = "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z";
19504
19591
  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
19592
  var AddBoxIcon = (props) => {
19506
- return /* @__PURE__ */ jsx135(BaseIcon, {
19593
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19507
19594
  d: AddBox,
19508
19595
  ...props
19509
19596
  });
19510
19597
  };
19511
19598
  var CheckIcon = (props) => {
19512
- return /* @__PURE__ */ jsx135(BaseIcon, {
19599
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19513
19600
  d: Check,
19514
19601
  ...props
19515
19602
  });
19516
19603
  };
19517
19604
  var ChevronRightIcon = (props) => {
19518
- return /* @__PURE__ */ jsx135(BaseIcon, {
19605
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19519
19606
  d: ChevronRight,
19520
19607
  ...props
19521
19608
  });
19522
19609
  };
19523
19610
  var CircularArrowsIcon = (props) => {
19524
- return /* @__PURE__ */ jsx135(BaseIcon, {
19611
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19525
19612
  d: CircularArrows,
19526
19613
  ...props
19527
19614
  });
19528
19615
  };
19529
19616
  var CloseIcon = (props) => {
19530
- return /* @__PURE__ */ jsx135(BaseIcon, {
19617
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19531
19618
  d: Close,
19532
19619
  ...props
19533
19620
  });
19534
19621
  };
19535
19622
  var ContentCopyIcon = (props) => {
19536
- return /* @__PURE__ */ jsx135(BaseIcon, {
19623
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19537
19624
  d: ContentCopy,
19538
19625
  ...props
19539
19626
  });
19540
19627
  };
19541
19628
  var EditIcon = (props) => {
19542
- return /* @__PURE__ */ jsx135(BaseIcon, {
19629
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19543
19630
  d: Edit,
19544
19631
  ...props
19545
19632
  });
19546
19633
  };
19547
19634
  var ExpandMoreIcon = (props) => {
19548
- return /* @__PURE__ */ jsx135(BaseIcon, {
19635
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19549
19636
  d: ExpandMore,
19550
19637
  ...props
19551
19638
  });
19552
19639
  };
19553
19640
  var DeleteIcon = (props) => {
19554
- return /* @__PURE__ */ jsx135(BaseIcon, {
19641
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19555
19642
  d: Delete,
19556
19643
  ...props
19557
19644
  });
@@ -19590,7 +19677,7 @@ var PreObjectType = (props) => {
19590
19677
  props.value
19591
19678
  ]);
19592
19679
  const isTrap = useIsCycleReference(props.path, props.value);
19593
- return /* @__PURE__ */ jsxs126(Box10, {
19680
+ return /* @__PURE__ */ jsxs127(Box11, {
19594
19681
  component: "span",
19595
19682
  className: "data-object-start",
19596
19683
  sx: {
@@ -19598,7 +19685,7 @@ var PreObjectType = (props) => {
19598
19685
  },
19599
19686
  children: [
19600
19687
  isArrayLike ? arrayLb : objectLb,
19601
- shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx135(Box10, {
19688
+ shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx136(Box11, {
19602
19689
  component: "span",
19603
19690
  sx: {
19604
19691
  pl: 0.5,
@@ -19608,16 +19695,16 @@ var PreObjectType = (props) => {
19608
19695
  },
19609
19696
  children: sizeOfValue
19610
19697
  }),
19611
- isTrap && !props.inspect && /* @__PURE__ */ jsxs126(Fragment8, {
19698
+ isTrap && !props.inspect && /* @__PURE__ */ jsxs127(Fragment9, {
19612
19699
  children: [
19613
- /* @__PURE__ */ jsx135(CircularArrowsIcon, {
19700
+ /* @__PURE__ */ jsx136(CircularArrowsIcon, {
19614
19701
  sx: {
19615
19702
  fontSize: 12,
19616
19703
  color: textColor,
19617
19704
  mx: 0.5
19618
19705
  }
19619
19706
  }),
19620
- /* @__PURE__ */ jsx135(DataBox, {
19707
+ /* @__PURE__ */ jsx136(DataBox, {
19621
19708
  sx: {
19622
19709
  cursor: "pointer",
19623
19710
  userSelect: "none"
@@ -19647,7 +19734,7 @@ var PostObjectType = (props) => {
19647
19734
  props.path,
19648
19735
  props.value
19649
19736
  ]);
19650
- return /* @__PURE__ */ jsxs126(Box10, {
19737
+ return /* @__PURE__ */ jsxs127(Box11, {
19651
19738
  component: "span",
19652
19739
  className: "data-object-end",
19653
19740
  sx: {
@@ -19658,7 +19745,7 @@ var PostObjectType = (props) => {
19658
19745
  },
19659
19746
  children: [
19660
19747
  isArrayLike ? arrayRb : objectRb,
19661
- shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx135(Box10, {
19748
+ shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx136(Box11, {
19662
19749
  component: "span",
19663
19750
  sx: {
19664
19751
  pl: 0.5,
@@ -19698,7 +19785,7 @@ var ObjectType = (props) => {
19698
19785
  ...props.path,
19699
19786
  key
19700
19787
  ];
19701
- elements3.push(/* @__PURE__ */ jsx135(DataKeyPair, {
19788
+ elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19702
19789
  path,
19703
19790
  value: value2,
19704
19791
  prevValue: props.prevValue instanceof Map ? props.prevValue.get(k2) : void 0,
@@ -19714,7 +19801,7 @@ var ObjectType = (props) => {
19714
19801
  while (true) {
19715
19802
  const nextResult = iterator2.next();
19716
19803
  var _nextResult_done;
19717
- elements3.push(/* @__PURE__ */ jsx135(DataKeyPair, {
19804
+ elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19718
19805
  path: [
19719
19806
  ...props.path,
19720
19807
  "iterator:".concat(count2)
@@ -19742,7 +19829,7 @@ var ObjectType = (props) => {
19742
19829
  ...props.path,
19743
19830
  index
19744
19831
  ];
19745
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19832
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19746
19833
  path,
19747
19834
  value: value2,
19748
19835
  prevValue: Array.isArray(props.prevValue) ? props.prevValue[index] : void 0,
@@ -19751,7 +19838,7 @@ var ObjectType = (props) => {
19751
19838
  });
19752
19839
  if (value.length > displayLength) {
19753
19840
  const rest = value.length - displayLength;
19754
- elements4.push(/* @__PURE__ */ jsxs126(DataBox, {
19841
+ elements4.push(/* @__PURE__ */ jsxs127(DataBox, {
19755
19842
  sx: {
19756
19843
  cursor: "pointer",
19757
19844
  lineHeight: 1.5,
@@ -19774,7 +19861,7 @@ var ObjectType = (props) => {
19774
19861
  const prevElements = Array.isArray(props.prevValue) ? segmentArray(props.prevValue, groupArraysAfterLength) : void 0;
19775
19862
  const elementsLastIndex = elements3.length - 1;
19776
19863
  return elements3.map((list, index) => {
19777
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19864
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19778
19865
  path: props.path,
19779
19866
  value: list,
19780
19867
  nestedIndex: index,
@@ -19801,7 +19888,7 @@ var ObjectType = (props) => {
19801
19888
  ...props.path,
19802
19889
  key
19803
19890
  ];
19804
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19891
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19805
19892
  path,
19806
19893
  value: value2,
19807
19894
  prevValue: (_props_prevValue = props.prevValue) === null || _props_prevValue === void 0 ? void 0 : _props_prevValue[key],
@@ -19810,7 +19897,7 @@ var ObjectType = (props) => {
19810
19897
  });
19811
19898
  if (entries.length > displayLength) {
19812
19899
  const rest = entries.length - displayLength;
19813
- elements2.push(/* @__PURE__ */ jsxs126(DataBox, {
19900
+ elements2.push(/* @__PURE__ */ jsxs127(DataBox, {
19814
19901
  sx: {
19815
19902
  cursor: "pointer",
19816
19903
  lineHeight: 1.5,
@@ -19848,7 +19935,7 @@ var ObjectType = (props) => {
19848
19935
  if (isEmptyValue) {
19849
19936
  return null;
19850
19937
  }
19851
- return /* @__PURE__ */ jsx135(Box10, {
19938
+ return /* @__PURE__ */ jsx136(Box11, {
19852
19939
  className: "data-object",
19853
19940
  sx: {
19854
19941
  display: props.inspect ? "block" : "inline-block",
@@ -19857,7 +19944,7 @@ var ObjectType = (props) => {
19857
19944
  color: keyColor,
19858
19945
  borderLeft: props.inspect ? "1px solid ".concat(borderColor) : "none"
19859
19946
  },
19860
- children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx135(Box10, {
19947
+ children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx136(Box11, {
19861
19948
  component: "span",
19862
19949
  className: "data-object-body",
19863
19950
  onClick: () => props.setInspect(true),
@@ -19889,7 +19976,7 @@ var stringType = defineEasyType({
19889
19976
  const collapseStringsAfterLength = useJsonViewerStore((store) => store.collapseStringsAfterLength);
19890
19977
  const value = showRest ? props.value : props.value.slice(0, collapseStringsAfterLength);
19891
19978
  const hasRest = props.value.length > collapseStringsAfterLength;
19892
- return /* @__PURE__ */ jsxs126(Box10, {
19979
+ return /* @__PURE__ */ jsxs127(Box11, {
19893
19980
  component: "span",
19894
19981
  sx: {
19895
19982
  overflowWrap: "anywhere",
@@ -19907,7 +19994,7 @@ var stringType = defineEasyType({
19907
19994
  children: [
19908
19995
  '"',
19909
19996
  value,
19910
- hasRest && !showRest && /* @__PURE__ */ jsx135(Box10, {
19997
+ hasRest && !showRest && /* @__PURE__ */ jsx136(Box11, {
19911
19998
  component: "span",
19912
19999
  sx: {
19913
20000
  padding: 0.5
@@ -19926,7 +20013,7 @@ var undefinedType = defineEasyType({
19926
20013
  displayTypeLabel: false,
19927
20014
  Renderer: () => {
19928
20015
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19929
- return /* @__PURE__ */ jsx135(Box10, {
20016
+ return /* @__PURE__ */ jsx136(Box11, {
19930
20017
  sx: {
19931
20018
  fontSize: "0.7rem",
19932
20019
  backgroundColor,
@@ -20007,7 +20094,7 @@ function useTypeComponents(value, path) {
20007
20094
  registry
20008
20095
  ]);
20009
20096
  }
20010
- var IconBox = (props) => /* @__PURE__ */ jsx135(Box10, {
20097
+ var IconBox = (props) => /* @__PURE__ */ jsx136(Box11, {
20011
20098
  component: "span",
20012
20099
  ...props,
20013
20100
  sx: {
@@ -20193,18 +20280,18 @@ var DataKeyPair = (props) => {
20193
20280
  ]);
20194
20281
  const actionIcons = useMemo9(() => {
20195
20282
  if (editing) {
20196
- return /* @__PURE__ */ jsxs126(Fragment8, {
20283
+ return /* @__PURE__ */ jsxs127(Fragment9, {
20197
20284
  children: [
20198
- /* @__PURE__ */ jsx135(IconBox, {
20199
- children: /* @__PURE__ */ jsx135(CloseIcon, {
20285
+ /* @__PURE__ */ jsx136(IconBox, {
20286
+ children: /* @__PURE__ */ jsx136(CloseIcon, {
20200
20287
  sx: {
20201
20288
  fontSize: ".8rem"
20202
20289
  },
20203
20290
  onClick: abortEditing
20204
20291
  })
20205
20292
  }),
20206
- /* @__PURE__ */ jsx135(IconBox, {
20207
- children: /* @__PURE__ */ jsx135(CheckIcon, {
20293
+ /* @__PURE__ */ jsx136(IconBox, {
20294
+ children: /* @__PURE__ */ jsx136(CheckIcon, {
20208
20295
  sx: {
20209
20296
  fontSize: ".8rem"
20210
20297
  },
@@ -20214,9 +20301,9 @@ var DataKeyPair = (props) => {
20214
20301
  ]
20215
20302
  });
20216
20303
  }
20217
- return /* @__PURE__ */ jsxs126(Fragment8, {
20304
+ return /* @__PURE__ */ jsxs127(Fragment9, {
20218
20305
  children: [
20219
- enableClipboard && /* @__PURE__ */ jsx135(IconBox, {
20306
+ enableClipboard && /* @__PURE__ */ jsx136(IconBox, {
20220
20307
  onClick: (event) => {
20221
20308
  event.preventDefault();
20222
20309
  try {
@@ -20225,41 +20312,41 @@ var DataKeyPair = (props) => {
20225
20312
  console.error(e2);
20226
20313
  }
20227
20314
  },
20228
- children: copied ? /* @__PURE__ */ jsx135(CheckIcon, {
20315
+ children: copied ? /* @__PURE__ */ jsx136(CheckIcon, {
20229
20316
  sx: {
20230
20317
  fontSize: ".8rem"
20231
20318
  }
20232
- }) : /* @__PURE__ */ jsx135(ContentCopyIcon, {
20319
+ }) : /* @__PURE__ */ jsx136(ContentCopyIcon, {
20233
20320
  sx: {
20234
20321
  fontSize: ".8rem"
20235
20322
  }
20236
20323
  })
20237
20324
  }),
20238
- Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx135(IconBox, {
20325
+ Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx136(IconBox, {
20239
20326
  onClick: startEditing,
20240
- children: /* @__PURE__ */ jsx135(EditIcon, {
20327
+ children: /* @__PURE__ */ jsx136(EditIcon, {
20241
20328
  sx: {
20242
20329
  fontSize: ".8rem"
20243
20330
  }
20244
20331
  })
20245
20332
  }),
20246
- enableAdd && /* @__PURE__ */ jsx135(IconBox, {
20333
+ enableAdd && /* @__PURE__ */ jsx136(IconBox, {
20247
20334
  onClick: (event) => {
20248
20335
  event.preventDefault();
20249
20336
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(path);
20250
20337
  },
20251
- children: /* @__PURE__ */ jsx135(AddBoxIcon, {
20338
+ children: /* @__PURE__ */ jsx136(AddBoxIcon, {
20252
20339
  sx: {
20253
20340
  fontSize: ".8rem"
20254
20341
  }
20255
20342
  })
20256
20343
  }),
20257
- enableDelete && /* @__PURE__ */ jsx135(IconBox, {
20344
+ enableDelete && /* @__PURE__ */ jsx136(IconBox, {
20258
20345
  onClick: (event) => {
20259
20346
  event.preventDefault();
20260
20347
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(path, value);
20261
20348
  },
20262
- children: /* @__PURE__ */ jsx135(DeleteIcon, {
20349
+ children: /* @__PURE__ */ jsx136(DeleteIcon, {
20263
20350
  sx: {
20264
20351
  fontSize: ".9rem"
20265
20352
  }
@@ -20307,7 +20394,7 @@ var DataKeyPair = (props) => {
20307
20394
  prevValue,
20308
20395
  nestedIndex
20309
20396
  ]);
20310
- return /* @__PURE__ */ jsxs126(Box10, {
20397
+ return /* @__PURE__ */ jsxs127(Box11, {
20311
20398
  className: "data-key-pair",
20312
20399
  "data-testid": "data-key-pair" + path.join("."),
20313
20400
  sx: {
@@ -20319,7 +20406,7 @@ var DataKeyPair = (props) => {
20319
20406
  nestedIndex
20320
20407
  ]),
20321
20408
  children: [
20322
- /* @__PURE__ */ jsxs126(DataBox, {
20409
+ /* @__PURE__ */ jsxs127(DataBox, {
20323
20410
  component: "span",
20324
20411
  className: "data-key",
20325
20412
  sx: {
@@ -20340,7 +20427,7 @@ var DataKeyPair = (props) => {
20340
20427
  setInspect
20341
20428
  ]),
20342
20429
  children: [
20343
- expandable ? inspect ? /* @__PURE__ */ jsx135(ExpandMoreIcon, {
20430
+ expandable ? inspect ? /* @__PURE__ */ jsx136(ExpandMoreIcon, {
20344
20431
  className: "data-key-toggle-expanded",
20345
20432
  sx: {
20346
20433
  fontSize: ".8rem",
@@ -20348,7 +20435,7 @@ var DataKeyPair = (props) => {
20348
20435
  cursor: "pointer"
20349
20436
  }
20350
20437
  }
20351
- }) : /* @__PURE__ */ jsx135(ChevronRightIcon, {
20438
+ }) : /* @__PURE__ */ jsx136(ChevronRightIcon, {
20352
20439
  className: "data-key-toggle-collapsed",
20353
20440
  sx: {
20354
20441
  fontSize: ".8rem",
@@ -20357,44 +20444,44 @@ var DataKeyPair = (props) => {
20357
20444
  }
20358
20445
  }
20359
20446
  }) : null,
20360
- /* @__PURE__ */ jsx135(Box10, {
20447
+ /* @__PURE__ */ jsx136(Box11, {
20361
20448
  ref: highlightContainer,
20362
20449
  className: "data-key-key",
20363
20450
  component: "span",
20364
- children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs126(Fragment8, {
20451
+ children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs127(Fragment9, {
20365
20452
  children: [
20366
20453
  '"',
20367
20454
  rootName,
20368
20455
  '"'
20369
20456
  ]
20370
- }) : /* @__PURE__ */ jsx135(Fragment8, {
20457
+ }) : /* @__PURE__ */ jsx136(Fragment9, {
20371
20458
  children: rootName
20372
- }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx135(KeyRenderer, {
20459
+ }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx136(KeyRenderer, {
20373
20460
  ...downstreamProps
20374
- }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx135(Box10, {
20461
+ }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx136(Box11, {
20375
20462
  component: "span",
20376
20463
  style: {
20377
20464
  color: numberKeyColor,
20378
20465
  userSelect: isNumberKey ? "none" : "auto"
20379
20466
  },
20380
20467
  children: key
20381
- }) : quotesOnKeys ? /* @__PURE__ */ jsxs126(Fragment8, {
20468
+ }) : quotesOnKeys ? /* @__PURE__ */ jsxs127(Fragment9, {
20382
20469
  children: [
20383
20470
  '"',
20384
20471
  key,
20385
20472
  '"'
20386
20473
  ]
20387
- }) : /* @__PURE__ */ jsx135(Fragment8, {
20474
+ }) : /* @__PURE__ */ jsx136(Fragment9, {
20388
20475
  children: key
20389
20476
  }))
20390
20477
  }),
20391
- isRoot ? rootName !== false && /* @__PURE__ */ jsx135(DataBox, {
20478
+ isRoot ? rootName !== false && /* @__PURE__ */ jsx136(DataBox, {
20392
20479
  className: "data-key-colon",
20393
20480
  sx: {
20394
20481
  mr: 0.5
20395
20482
  },
20396
20483
  children: ":"
20397
- }) : nestedIndex === void 0 && /* @__PURE__ */ jsx135(DataBox, {
20484
+ }) : nestedIndex === void 0 && /* @__PURE__ */ jsx136(DataBox, {
20398
20485
  className: "data-key-colon",
20399
20486
  sx: {
20400
20487
  mr: 0.5,
@@ -20405,29 +20492,29 @@ var DataKeyPair = (props) => {
20405
20492
  },
20406
20493
  children: ":"
20407
20494
  }),
20408
- PreComponent && /* @__PURE__ */ jsx135(PreComponent, {
20495
+ PreComponent && /* @__PURE__ */ jsx136(PreComponent, {
20409
20496
  ...downstreamProps
20410
20497
  }),
20411
20498
  isHover && expandable && inspect && actionIcons
20412
20499
  ]
20413
20500
  }),
20414
- editing && editable ? Editor && /* @__PURE__ */ jsx135(Editor, {
20501
+ editing && editable ? Editor && /* @__PURE__ */ jsx136(Editor, {
20415
20502
  path,
20416
20503
  value: tempValue,
20417
20504
  setValue: setTempValue,
20418
20505
  abortEditing,
20419
20506
  commitEditing
20420
- }) : Component ? /* @__PURE__ */ jsx135(Component, {
20507
+ }) : Component ? /* @__PURE__ */ jsx136(Component, {
20421
20508
  ...downstreamProps
20422
- }) : /* @__PURE__ */ jsx135(Box10, {
20509
+ }) : /* @__PURE__ */ jsx136(Box11, {
20423
20510
  component: "span",
20424
20511
  className: "data-value-fallback",
20425
20512
  children: "fallback: ".concat(value)
20426
20513
  }),
20427
- PostComponent && /* @__PURE__ */ jsx135(PostComponent, {
20514
+ PostComponent && /* @__PURE__ */ jsx136(PostComponent, {
20428
20515
  ...downstreamProps
20429
20516
  }),
20430
- !last && displayComma && /* @__PURE__ */ jsx135(DataBox, {
20517
+ !last && displayComma && /* @__PURE__ */ jsx136(DataBox, {
20431
20518
  children: ","
20432
20519
  }),
20433
20520
  isHover && expandable && !inspect && actionIcons,
@@ -20547,7 +20634,7 @@ var JsonViewerInner = (props) => {
20547
20634
  const onMouseLeave = useCallback10(() => setHover(null), [
20548
20635
  setHover
20549
20636
  ]);
20550
- return /* @__PURE__ */ jsx135(Paper2, {
20637
+ return /* @__PURE__ */ jsx136(Paper2, {
20551
20638
  elevation: 0,
20552
20639
  className: clsx(themeCls, props.className),
20553
20640
  style: props.style,
@@ -20558,7 +20645,7 @@ var JsonViewerInner = (props) => {
20558
20645
  ...props.sx
20559
20646
  },
20560
20647
  onMouseLeave,
20561
- children: /* @__PURE__ */ jsx135(DataKeyPair, {
20648
+ children: /* @__PURE__ */ jsx136(DataKeyPair, {
20562
20649
  value,
20563
20650
  prevValue,
20564
20651
  path: emptyPath,
@@ -20610,13 +20697,13 @@ var JsonViewer = function JsonViewer2(props) {
20610
20697
  };
20611
20698
  const jsonViewerStore = useMemo9(() => createJsonViewerStore(props), []);
20612
20699
  const typeRegistryStore = useMemo9(() => createTypeRegistryStore(), []);
20613
- return /* @__PURE__ */ jsx135(ThemeProvider, {
20700
+ return /* @__PURE__ */ jsx136(ThemeProvider, {
20614
20701
  theme,
20615
- children: /* @__PURE__ */ jsx135(TypeRegistryStoreContext.Provider, {
20702
+ children: /* @__PURE__ */ jsx136(TypeRegistryStoreContext.Provider, {
20616
20703
  value: typeRegistryStore,
20617
- children: /* @__PURE__ */ jsx135(JsonViewerStoreContext.Provider, {
20704
+ children: /* @__PURE__ */ jsx136(JsonViewerStoreContext.Provider, {
20618
20705
  value: jsonViewerStore,
20619
- children: /* @__PURE__ */ jsx135(JsonViewerInner, {
20706
+ children: /* @__PURE__ */ jsx136(JsonViewerInner, {
20620
20707
  ...mixedProps
20621
20708
  })
20622
20709
  })
@@ -20626,7 +20713,7 @@ var JsonViewer = function JsonViewer2(props) {
20626
20713
 
20627
20714
  // src/components/event-details/payload-viewer.tsx
20628
20715
  import { memo as memo10 } from "react";
20629
- import { jsx as jsx136 } from "react/jsx-runtime";
20716
+ import { jsx as jsx137 } from "react/jsx-runtime";
20630
20717
  function tryParseJson(value) {
20631
20718
  if (typeof value !== "string") {
20632
20719
  return value;
@@ -20639,7 +20726,7 @@ function tryParseJson(value) {
20639
20726
  }
20640
20727
  var PayloadViewer = memo10(({ sx, testId, value }) => {
20641
20728
  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(
20729
+ return /* @__PURE__ */ jsx137(Box12, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx137(
20643
20730
  JsonViewer,
20644
20731
  {
20645
20732
  displayDataTypes: false,
@@ -20653,10 +20740,10 @@ var PayloadViewer = memo10(({ sx, testId, value }) => {
20653
20740
  });
20654
20741
 
20655
20742
  // 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 })
20743
+ import { Fragment as Fragment10, jsx as jsx138, jsxs as jsxs128 } from "react/jsx-runtime";
20744
+ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs128(Box13, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20745
+ /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20746
+ /* @__PURE__ */ jsx138(Box13, { children: typeof content === "string" ? /* @__PURE__ */ jsx138(Typography8, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20660
20747
  ] });
20661
20748
  var EventMessage = ({ event }) => {
20662
20749
  const [isOpen, setIsOpen] = useState13(false);
@@ -20688,9 +20775,9 @@ var EventMessage = ({ event }) => {
20688
20775
  () => isOverflowing || hasAdditionalContent,
20689
20776
  [isOverflowing, hasAdditionalContent]
20690
20777
  );
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(
20778
+ return /* @__PURE__ */ jsxs128(Box13, { sx: { display: "flex", flexDirection: "column" }, children: [
20779
+ /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex" }, children: [
20780
+ Boolean(shouldShowToggle) && /* @__PURE__ */ jsx138(
20694
20781
  IconButton3,
20695
20782
  {
20696
20783
  onClick: () => {
@@ -20698,11 +20785,11 @@ var EventMessage = ({ event }) => {
20698
20785
  },
20699
20786
  size: "small",
20700
20787
  sx: { mr: 1, p: 0 },
20701
- children: isOpen ? /* @__PURE__ */ jsx137(KeyboardArrowDown2, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx137(KeyboardArrowRight2, { sx: { fontSize: 16 } })
20788
+ children: isOpen ? /* @__PURE__ */ jsx138(KeyboardArrowDown2, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx138(KeyboardArrowRight2, { sx: { fontSize: 16 } })
20702
20789
  }
20703
20790
  ),
20704
- /* @__PURE__ */ jsx137(
20705
- Typography7,
20791
+ /* @__PURE__ */ jsx138(
20792
+ Typography8,
20706
20793
  {
20707
20794
  ref: textReference,
20708
20795
  sx: {
@@ -20719,12 +20806,12 @@ var EventMessage = ({ event }) => {
20719
20806
  }
20720
20807
  )
20721
20808
  ] }),
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(
20809
+ 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: [
20810
+ Boolean(parsedMessage.message) && /* @__PURE__ */ jsx138(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20811
+ Boolean(parsedMessage.details) && /* @__PURE__ */ jsx138(
20725
20812
  DetailRow2,
20726
20813
  {
20727
- content: /* @__PURE__ */ jsx137(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20814
+ content: /* @__PURE__ */ jsx138(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20728
20815
  label: "Details"
20729
20816
  }
20730
20817
  )
@@ -20756,15 +20843,15 @@ var EventDetail = ({
20756
20843
  type
20757
20844
  }) => {
20758
20845
  if (type === "permission") {
20759
- return /* @__PURE__ */ jsx137(IAMPermissionDetail, { events });
20846
+ return /* @__PURE__ */ jsx138(IAMPermissionDetail, { events });
20760
20847
  }
20761
20848
  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 })
20849
+ return /* @__PURE__ */ jsxs128(Box13, { children: [
20850
+ /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20851
+ /* @__PURE__ */ jsx138(StatusIcon2, { errorLevel: eventLevel }),
20852
+ /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20766
20853
  ] }),
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}`)) })
20854
+ /* @__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
20855
  ] });
20769
20856
  };
20770
20857
 
@@ -25146,16 +25233,16 @@ var ProtocolLib = class {
25146
25233
  if (output !== void 0 && queryErrorHeader != null) {
25147
25234
  const [Code, Type] = queryErrorHeader.split(";");
25148
25235
  const entries = Object.entries(output);
25149
- const Error3 = {
25236
+ const Error4 = {
25150
25237
  Code,
25151
25238
  Type
25152
25239
  };
25153
- Object.assign(output, Error3);
25240
+ Object.assign(output, Error4);
25154
25241
  for (const [k2, v2] of entries) {
25155
- Error3[k2 === "message" ? "Message" : k2] = v2;
25242
+ Error4[k2 === "message" ? "Message" : k2] = v2;
25156
25243
  }
25157
- delete Error3.__type;
25158
- output.Error = Error3;
25244
+ delete Error4.__type;
25245
+ output.Error = Error4;
25159
25246
  }
25160
25247
  }
25161
25248
  queryCompatOutput(queryCompatErrorData, errorData) {
@@ -30455,9 +30542,9 @@ var QueryStatus = {
30455
30542
  };
30456
30543
 
30457
30544
  // src/components/event-details/lambda-invoke-logs-section.tsx
30458
- import { Box as Box13, CircularProgress as CircularProgress3, Stack, Typography as Typography8 } from "@mui/material";
30545
+ import { Box as Box14, CircularProgress as CircularProgress3, Stack, Typography as Typography9 } from "@mui/material";
30459
30546
  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";
30547
+ import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30461
30548
  var POLL_INTERVAL_MS = 1e3;
30462
30549
  async function pollQueryResults(client, queryId) {
30463
30550
  return client.send(new GetQueryResultsCommand({ queryId }));
@@ -30547,30 +30634,30 @@ function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, en
30547
30634
  var LambdaInvokeLogsSection = ({ endTimeNano, functionName: functionName2, region, requestId, startTimeNano }) => {
30548
30635
  const { error, loading, logs } = useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano);
30549
30636
  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" })
30637
+ return /* @__PURE__ */ jsxs129(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30638
+ /* @__PURE__ */ jsx139(CircularProgress3, { size: 14 }),
30639
+ /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30553
30640
  ] });
30554
30641
  }
30555
30642
  if (error !== void 0) {
30556
- return /* @__PURE__ */ jsx138(Typography8, { color: "error", variant: "body2", children: error.message });
30643
+ return /* @__PURE__ */ jsx139(Typography9, { color: "error", variant: "body2", children: error.message });
30557
30644
  }
30558
30645
  if (logs.length === 0) {
30559
- return /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30646
+ return /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30560
30647
  }
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)) }) });
30648
+ 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
30649
  };
30563
30650
 
30564
30651
  // src/components/event-details/toggle-section.tsx
30565
30652
  import { KeyboardArrowDown as KeyboardArrowDown3, KeyboardArrowRight as KeyboardArrowRight3 } from "@mui/icons-material";
30566
- import { Box as Box14, Typography as Typography9 } from "@mui/material";
30653
+ import { Box as Box15, Typography as Typography10 } from "@mui/material";
30567
30654
  import { useState as useState15 } from "react";
30568
- import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30655
+ import { jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30569
30656
  var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30570
30657
  const [isOpen, setIsOpen] = useState15(initialOpen);
30571
- return /* @__PURE__ */ jsxs129(Box14, { sx: { mt: 4 }, children: [
30572
- /* @__PURE__ */ jsxs129(
30573
- Box14,
30658
+ return /* @__PURE__ */ jsxs130(Box15, { sx: { mt: 4 }, children: [
30659
+ /* @__PURE__ */ jsxs130(
30660
+ Box15,
30574
30661
  {
30575
30662
  onClick: () => {
30576
30663
  setIsOpen(!isOpen);
@@ -30583,8 +30670,8 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30583
30670
  mb: 1
30584
30671
  },
30585
30672
  children: [
30586
- /* @__PURE__ */ jsxs129(
30587
- Box14,
30673
+ /* @__PURE__ */ jsxs130(
30674
+ Box15,
30588
30675
  {
30589
30676
  role: "button",
30590
30677
  sx: {
@@ -30593,23 +30680,23 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30593
30680
  gap: 1
30594
30681
  },
30595
30682
  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 } })
30683
+ /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30684
+ isOpen ? /* @__PURE__ */ jsx140(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx140(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
30598
30685
  ]
30599
30686
  }
30600
30687
  ),
30601
- action !== false && /* @__PURE__ */ jsx139(Box14, { onClick: (event) => {
30688
+ action !== false && /* @__PURE__ */ jsx140(Box15, { onClick: (event) => {
30602
30689
  event.stopPropagation();
30603
30690
  }, children: action })
30604
30691
  ]
30605
30692
  }
30606
30693
  ),
30607
- isOpen && /* @__PURE__ */ jsx139(Box14, { children })
30694
+ isOpen && /* @__PURE__ */ jsx140(Box15, { children })
30608
30695
  ] });
30609
30696
  };
30610
30697
 
30611
30698
  // src/components/event-details/event-details.tsx
30612
- import { Fragment as Fragment10, jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30699
+ import { Fragment as Fragment11, jsx as jsx141, jsxs as jsxs131 } from "react/jsx-runtime";
30613
30700
  var checkIsLambdaInvoke = (span) => {
30614
30701
  if (span.service_name !== "lambda") {
30615
30702
  return false;
@@ -30630,7 +30717,7 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30630
30717
  );
30631
30718
  const [parseNestedJson, setParseNestedJson] = useState16(true);
30632
30719
  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" }) });
30720
+ 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
30721
  }
30635
30722
  const isLambdaInvoke = checkIsLambdaInvoke(selectedEvent);
30636
30723
  const isSqsSendMessage = checkIsSqsSendMessage(selectedEvent);
@@ -30653,9 +30740,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30653
30740
  const exceptionPayload = tryParseJson(selectedEvent.attributes?.["localstack.aws.service.exception"]);
30654
30741
  const hasPayloads = requestPayload !== void 0 || responsePayload !== void 0 || exceptionPayload !== void 0 || isResponseSuppressed;
30655
30742
  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,
30743
+ return /* @__PURE__ */ jsxs131(Box16, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30744
+ /* @__PURE__ */ jsxs131(
30745
+ Box16,
30659
30746
  {
30660
30747
  sx: {
30661
30748
  alignItems: "center",
@@ -30667,63 +30754,63 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30667
30754
  py: 1
30668
30755
  },
30669
30756
  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, {}) })
30757
+ /* @__PURE__ */ jsx141(Box16, { children: /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30758
+ onClose && /* @__PURE__ */ jsx141(IconButton4, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx141(Close2, {}) })
30672
30759
  ]
30673
30760
  }
30674
30761
  ),
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) })
30762
+ /* @__PURE__ */ jsx141(Box16, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 2, children: [
30763
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs131(Stack2, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30764
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30765
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30766
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30767
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30681
30768
  ] }),
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 })
30769
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30770
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30771
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30685
30772
  ] })
30686
30773
  ] }),
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 })
30774
+ /* @__PURE__ */ jsxs131(Box16, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30775
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30776
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30777
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30691
30778
  ] }),
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 })
30779
+ Boolean(cfnResourceType) && /* @__PURE__ */ jsxs131(Box16, { children: [
30780
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30781
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30695
30782
  ] })
30696
30783
  ] }),
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 })
30784
+ Boolean(resourceArn) && /* @__PURE__ */ jsxs131(Box16, { children: [
30785
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30786
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30700
30787
  ] }),
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 })
30788
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30789
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30790
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30791
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30705
30792
  ] }),
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 })
30793
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30794
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30795
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30709
30796
  ] })
30710
30797
  ] }),
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() })
30798
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30799
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30800
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30801
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30715
30802
  ] }),
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: [
30803
+ duration !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30804
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30805
+ /* @__PURE__ */ jsxs131(Typography11, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30719
30806
  duration,
30720
30807
  "ms"
30721
30808
  ] })
30722
30809
  ] })
30723
30810
  ] }),
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(
30811
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30812
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30813
+ /* @__PURE__ */ jsx141(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx141(
30727
30814
  Chip3,
30728
30815
  {
30729
30816
  color: selectedEvent.status_code === 2 ? "error" : selectedEvent.status_code === 1 ? "success" : "default",
@@ -30734,50 +30821,50 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30734
30821
  ) })
30735
30822
  ] })
30736
30823
  ] }) }),
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" })
30824
+ /* @__PURE__ */ jsx141(Divider4, {}),
30825
+ /* @__PURE__ */ jsxs131(ToggleSection, { headline: "Permissions", children: [
30826
+ 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" }),
30827
+ !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." }),
30828
+ eventGroups.permissions && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30829
+ eventGroups.errors && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30830
+ eventGroups.warnings && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30744
30831
  ] }),
30745
- hasPayloads && /* @__PURE__ */ jsxs130(Fragment10, { children: [
30746
- /* @__PURE__ */ jsx140(Divider3, {}),
30747
- /* @__PURE__ */ jsx140(
30832
+ hasPayloads && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30833
+ /* @__PURE__ */ jsx141(Divider4, {}),
30834
+ /* @__PURE__ */ jsx141(
30748
30835
  ToggleSection,
30749
30836
  {
30750
- action: /* @__PURE__ */ jsx140(
30837
+ action: /* @__PURE__ */ jsx141(
30751
30838
  FormControlLabel2,
30752
30839
  {
30753
- control: /* @__PURE__ */ jsx140(Switch, { checked: !parseNestedJson, onChange: (event) => {
30840
+ control: /* @__PURE__ */ jsx141(Switch, { checked: !parseNestedJson, onChange: (event) => {
30754
30841
  setParseNestedJson(!event.target.checked);
30755
30842
  }, size: "small" }),
30756
- label: /* @__PURE__ */ jsx140(Typography10, { variant: "caption", children: "View raw data" }),
30843
+ label: /* @__PURE__ */ jsx141(Typography11, { variant: "caption", children: "View raw data" }),
30757
30844
  sx: { mr: 0 }
30758
30845
  }
30759
30846
  ),
30760
30847
  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 })
30848
+ children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 2, children: [
30849
+ requestPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30850
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30851
+ /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30765
30852
  ] }),
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 })
30853
+ (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ jsxs131(Box16, { children: [
30854
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30855
+ 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
30856
  ] }),
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 })
30857
+ exceptionPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30858
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30859
+ /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30773
30860
  ] })
30774
30861
  ] })
30775
30862
  }
30776
30863
  )
30777
30864
  ] }),
30778
- isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs130(Fragment10, { children: [
30779
- /* @__PURE__ */ jsx140(Divider3, {}),
30780
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx140(
30865
+ isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30866
+ /* @__PURE__ */ jsx141(Divider4, {}),
30867
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx141(
30781
30868
  LambdaInvokeLogsSection,
30782
30869
  {
30783
30870
  endTimeNano: selectedEvent.end_time_unix_nano ?? selectedEvent.start_time_unix_nano,
@@ -30788,21 +30875,21 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30788
30875
  }
30789
30876
  ) })
30790
30877
  ] }),
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 })
30878
+ /* @__PURE__ */ jsx141(Divider4, {}),
30879
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 1, children: [
30880
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30881
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30882
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30796
30883
  ] }),
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 })
30884
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30885
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30886
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30800
30887
  ] }),
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 })
30888
+ requestId !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30889
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30890
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30804
30891
  ] }),
30805
- eventGroups.info && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30892
+ eventGroups.info && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30806
30893
  ] }) })
30807
30894
  ] }) })
30808
30895
  ] });
@@ -30815,27 +30902,27 @@ import { Background, MarkerType, Position as Position2, ReactFlow, useEdgesState
30815
30902
  import { useEffect as useEffect20 } from "react";
30816
30903
 
30817
30904
  // 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";
30905
+ import { Box as Box18, Divider as Divider5, Stack as Stack3, Typography as Typography12, useTheme as useTheme4 } from "@mui/material";
30819
30906
  import "@xyflow/react/dist/style.css";
30820
30907
  import { Handle, Position } from "@xyflow/react";
30821
30908
  import { memo as memo11 } from "react";
30822
30909
 
30823
30910
  // src/components/trace-graph/problem-indicator.tsx
30824
30911
  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";
30912
+ import { Box as Box17, Tooltip as Tooltip5 } from "@mui/material";
30826
30913
  import { useMemo as useMemo13 } from "react";
30827
- import { jsx as jsx141 } from "react/jsx-runtime";
30914
+ import { jsx as jsx142 } from "react/jsx-runtime";
30828
30915
  var ProblemIndicator = ({ error }) => {
30829
30916
  const icon = useMemo13(() => {
30830
30917
  switch (error.level) {
30831
30918
  case "error": {
30832
- return /* @__PURE__ */ jsx141(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
30919
+ return /* @__PURE__ */ jsx142(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
30833
30920
  }
30834
30921
  case "warning": {
30835
- return /* @__PURE__ */ jsx141(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
30922
+ return /* @__PURE__ */ jsx142(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
30836
30923
  }
30837
30924
  default: {
30838
- return /* @__PURE__ */ jsx141(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
30925
+ return /* @__PURE__ */ jsx142(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
30839
30926
  }
30840
30927
  }
30841
30928
  }, [error.level]);
@@ -30852,8 +30939,8 @@ var ProblemIndicator = ({ error }) => {
30852
30939
  }
30853
30940
  }
30854
30941
  }, [error.level]);
30855
- return /* @__PURE__ */ jsx141(Tooltip4, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx141(
30856
- Box16,
30942
+ return /* @__PURE__ */ jsx142(Tooltip5, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx142(
30943
+ Box17,
30857
30944
  {
30858
30945
  sx: {
30859
30946
  alignItems: "center",
@@ -30872,7 +30959,7 @@ var ProblemIndicator = ({ error }) => {
30872
30959
  };
30873
30960
 
30874
30961
  // src/components/trace-graph/service-node.tsx
30875
- import { jsx as jsx142, jsxs as jsxs131 } from "react/jsx-runtime";
30962
+ import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
30876
30963
  var handleStyle = {
30877
30964
  backgroundColor: "white",
30878
30965
  borderColor: "lightgray",
@@ -30881,8 +30968,8 @@ var handleStyle = {
30881
30968
  var ServiceNode = memo11(({ data, selected }) => {
30882
30969
  const theme = useTheme4();
30883
30970
  const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false;
30884
- return /* @__PURE__ */ jsxs131(
30885
- Box17,
30971
+ return /* @__PURE__ */ jsxs132(
30972
+ Box18,
30886
30973
  {
30887
30974
  "data-testid": SERVICE_NODE_TEST_ID,
30888
30975
  role: "button",
@@ -30904,19 +30991,19 @@ var ServiceNode = memo11(({ data, selected }) => {
30904
30991
  },
30905
30992
  tabIndex: 0,
30906
30993
  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(
30994
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
30995
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
30996
+ /* @__PURE__ */ jsxs132(
30910
30997
  Stack3,
30911
30998
  {
30912
30999
  alignItems: "center",
30913
31000
  direction: "row",
30914
31001
  sx: { gap: "8px", pb: "2px", pt: "6px", px: "8px" },
30915
31002
  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,
31003
+ /* @__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" }) }),
31004
+ /* @__PURE__ */ jsxs132(Stack3, { sx: { minWidth: 0 }, children: [
31005
+ /* @__PURE__ */ jsx143(
31006
+ Typography12,
30920
31007
  {
30921
31008
  noWrap: true,
30922
31009
  sx: { fontWeight: 700, lineHeight: 1.25 },
@@ -30924,8 +31011,8 @@ var ServiceNode = memo11(({ data, selected }) => {
30924
31011
  children: getServiceDisplayName(data.event.service_name)
30925
31012
  }
30926
31013
  ),
30927
- data.event.resource_name != "" && /* @__PURE__ */ jsx142(
30928
- Typography11,
31014
+ data.event.resource_name != "" && /* @__PURE__ */ jsx143(
31015
+ Typography12,
30929
31016
  {
30930
31017
  color: "text.secondary",
30931
31018
  noWrap: true,
@@ -30938,16 +31025,16 @@ var ServiceNode = memo11(({ data, selected }) => {
30938
31025
  ]
30939
31026
  }
30940
31027
  ),
30941
- /* @__PURE__ */ jsx142(Divider4, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
30942
- /* @__PURE__ */ jsxs131(
31028
+ /* @__PURE__ */ jsx143(Divider5, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
31029
+ /* @__PURE__ */ jsxs132(
30943
31030
  Stack3,
30944
31031
  {
30945
31032
  alignItems: "center",
30946
31033
  direction: "row",
30947
31034
  sx: { minWidth: 0, pb: "5px", pr: "8px", pt: "1px" },
30948
31035
  children: [
30949
- /* @__PURE__ */ jsx142(
30950
- Box17,
31036
+ /* @__PURE__ */ jsx143(
31037
+ Box18,
30951
31038
  {
30952
31039
  sx: {
30953
31040
  alignItems: "center",
@@ -30956,11 +31043,11 @@ var ServiceNode = memo11(({ data, selected }) => {
30956
31043
  justifyContent: "center",
30957
31044
  width: "38px"
30958
31045
  },
30959
- children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ jsx142(ProblemIndicator, { error }, error.span_id))
31046
+ children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ jsx143(ProblemIndicator, { error }, error.span_id))
30960
31047
  }
30961
31048
  ),
30962
- /* @__PURE__ */ jsx142(
30963
- Typography11,
31049
+ /* @__PURE__ */ jsx143(
31050
+ Typography12,
30964
31051
  {
30965
31052
  "data-testid": SERVICE_NODE_OPERATION_NAME_TEST_ID,
30966
31053
  noWrap: true,
@@ -31033,11 +31120,11 @@ var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
31033
31120
 
31034
31121
  // src/components/trace-graph/xyflow/controls.tsx
31035
31122
  import { Add, FitScreen, Remove } from "@mui/icons-material";
31036
- import { Box as Box18, IconButton as IconButton5 } from "@mui/material";
31123
+ import { Box as Box19, IconButton as IconButton5 } from "@mui/material";
31037
31124
  import { useReactFlow, useStore as useStore2 } from "@xyflow/react";
31038
31125
  import { memo as memo12 } from "react";
31039
31126
  import { shallow } from "zustand/shallow";
31040
- import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
31127
+ import { jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31041
31128
  var selector = (s2) => ({
31042
31129
  isInteractive: s2.nodesDraggable || s2.nodesConnectable || s2.elementsSelectable,
31043
31130
  maxZoomReached: s2.transform[2] >= s2.maxZoom,
@@ -31055,8 +31142,8 @@ var Controls = memo12(() => {
31055
31142
  const onFitViewHandler = () => {
31056
31143
  void fitView();
31057
31144
  };
31058
- return /* @__PURE__ */ jsxs132(
31059
- Box18,
31145
+ return /* @__PURE__ */ jsxs133(
31146
+ Box19,
31060
31147
  {
31061
31148
  sx: {
31062
31149
  bottom: 0,
@@ -31069,33 +31156,33 @@ var Controls = memo12(() => {
31069
31156
  zIndex: 5
31070
31157
  },
31071
31158
  children: [
31072
- /* @__PURE__ */ jsx143(
31159
+ /* @__PURE__ */ jsx144(
31073
31160
  IconButton5,
31074
31161
  {
31075
31162
  className: "react-flow__controls-zoomin",
31076
31163
  disabled: maxZoomReached,
31077
31164
  onClick: onZoomInHandler,
31078
31165
  size: "small",
31079
- children: /* @__PURE__ */ jsx143(Add, {})
31166
+ children: /* @__PURE__ */ jsx144(Add, {})
31080
31167
  }
31081
31168
  ),
31082
- /* @__PURE__ */ jsx143(
31169
+ /* @__PURE__ */ jsx144(
31083
31170
  IconButton5,
31084
31171
  {
31085
31172
  className: "react-flow__controls-zoomout",
31086
31173
  disabled: minZoomReached,
31087
31174
  onClick: onZoomOutHandler,
31088
31175
  size: "small",
31089
- children: /* @__PURE__ */ jsx143(Remove, {})
31176
+ children: /* @__PURE__ */ jsx144(Remove, {})
31090
31177
  }
31091
31178
  ),
31092
- /* @__PURE__ */ jsx143(
31179
+ /* @__PURE__ */ jsx144(
31093
31180
  IconButton5,
31094
31181
  {
31095
31182
  className: "react-flow__controls-fitview",
31096
31183
  onClick: onFitViewHandler,
31097
31184
  size: "small",
31098
- children: /* @__PURE__ */ jsx143(FitScreen, {})
31185
+ children: /* @__PURE__ */ jsx144(FitScreen, {})
31099
31186
  }
31100
31187
  )
31101
31188
  ]
@@ -31104,7 +31191,7 @@ var Controls = memo12(() => {
31104
31191
  });
31105
31192
 
31106
31193
  // src/components/trace-graph/trace-graph.tsx
31107
- import { Fragment as Fragment11, jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31194
+ import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31108
31195
  var nodeTypes = {
31109
31196
  service: ServiceNode
31110
31197
  };
@@ -31167,11 +31254,11 @@ var TraceGraph = ({
31167
31254
  setEdges(layoutedEdges);
31168
31255
  }, [spans.data, initialFocusEventId, setNodes, setEdges]);
31169
31256
  const theme = useTheme5();
31170
- return /* @__PURE__ */ jsxs133(Fragment11, { children: [
31171
- spans.error && /* @__PURE__ */ jsxs133(
31257
+ return /* @__PURE__ */ jsxs134(Fragment12, { children: [
31258
+ spans.error && /* @__PURE__ */ jsxs134(
31172
31259
  Alert5,
31173
31260
  {
31174
- action: /* @__PURE__ */ jsx144(Button5, { onClick: () => {
31261
+ action: /* @__PURE__ */ jsx145(Button5, { onClick: () => {
31175
31262
  onRefresh();
31176
31263
  }, children: "Retry" }),
31177
31264
  severity: "error",
@@ -31182,7 +31269,7 @@ var TraceGraph = ({
31182
31269
  ]
31183
31270
  }
31184
31271
  ),
31185
- /* @__PURE__ */ jsxs133(
31272
+ /* @__PURE__ */ jsxs134(
31186
31273
  ReactFlow,
31187
31274
  {
31188
31275
  "data-testid": TRACE_GRAPH_TEST_ID,
@@ -31200,8 +31287,8 @@ var TraceGraph = ({
31200
31287
  onNodesChange,
31201
31288
  selectNodesOnDrag: false,
31202
31289
  children: [
31203
- /* @__PURE__ */ jsx144(Controls, {}),
31204
- /* @__PURE__ */ jsx144(
31290
+ /* @__PURE__ */ jsx145(Controls, {}),
31291
+ /* @__PURE__ */ jsx145(
31205
31292
  Background,
31206
31293
  {
31207
31294
  bgColor: theme.palette.background.default,
@@ -31215,7 +31302,7 @@ var TraceGraph = ({
31215
31302
  };
31216
31303
 
31217
31304
  // src/pages/trace-graph-page.tsx
31218
- import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31305
+ import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31219
31306
  var HEADER_HEIGHT = 56;
31220
31307
  var DRAWER_WIDTH = "35%";
31221
31308
  var Main = styled("main", { shouldForwardProp: (property) => property !== "open" })(({ open, theme }) => ({
@@ -31264,8 +31351,8 @@ var TraceGraphView = ({
31264
31351
  traceId
31265
31352
  }) => {
31266
31353
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31267
- return /* @__PURE__ */ jsxs134(
31268
- Box19,
31354
+ return /* @__PURE__ */ jsxs135(
31355
+ Box20,
31269
31356
  {
31270
31357
  "data-testid": TRACE_GRAPH_PAGE_TEST_ID,
31271
31358
  sx: {
@@ -31277,13 +31364,13 @@ var TraceGraphView = ({
31277
31364
  overflow: "hidden"
31278
31365
  },
31279
31366
  children: [
31280
- /* @__PURE__ */ jsxs134(Box19, { sx: { display: "flex", width: "100%" }, children: [
31281
- /* @__PURE__ */ jsx145(Button6, { onClick: () => {
31367
+ /* @__PURE__ */ jsxs135(Box20, { sx: { display: "flex", width: "100%" }, children: [
31368
+ /* @__PURE__ */ jsx146(Button6, { onClick: () => {
31282
31369
  navigateToSpansList();
31283
- }, startIcon: /* @__PURE__ */ jsx145(ArrowBack, {}), children: "Go back" }),
31284
- /* @__PURE__ */ jsx145(Box19, { sx: { flexGrow: 1 } })
31370
+ }, startIcon: /* @__PURE__ */ jsx146(ArrowBack, {}), children: "Go back" }),
31371
+ /* @__PURE__ */ jsx146(Box20, { sx: { flexGrow: 1 } })
31285
31372
  ] }),
31286
- /* @__PURE__ */ jsx145(
31373
+ /* @__PURE__ */ jsx146(
31287
31374
  Paper3,
31288
31375
  {
31289
31376
  sx: {
@@ -31293,7 +31380,7 @@ var TraceGraphView = ({
31293
31380
  position: "relative",
31294
31381
  width: "100%"
31295
31382
  },
31296
- children: shouldShowStatusMessage ? /* @__PURE__ */ jsx145(
31383
+ children: shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31297
31384
  StatusMessage,
31298
31385
  {
31299
31386
  error: statusError,
@@ -31301,15 +31388,15 @@ var TraceGraphView = ({
31301
31388
  onRetry: handleRetry,
31302
31389
  status
31303
31390
  }
31304
- ) : /* @__PURE__ */ jsxs134(Fragment12, { children: [
31305
- /* @__PURE__ */ jsx145(Main, { open, children: /* @__PURE__ */ jsx145(
31306
- Box19,
31391
+ ) : /* @__PURE__ */ jsxs135(Fragment13, { children: [
31392
+ /* @__PURE__ */ jsx146(Main, { open, children: /* @__PURE__ */ jsx146(
31393
+ Box20,
31307
31394
  {
31308
31395
  sx: {
31309
31396
  height: "100%",
31310
31397
  overflow: "auto"
31311
31398
  },
31312
- children: traceId !== void 0 && /* @__PURE__ */ jsx145(ReactFlowProvider, { children: /* @__PURE__ */ jsx145(
31399
+ children: traceId !== void 0 && /* @__PURE__ */ jsx146(ReactFlowProvider, { children: /* @__PURE__ */ jsx146(
31313
31400
  TraceGraph,
31314
31401
  {
31315
31402
  initialFocusEventId: spanId,
@@ -31326,7 +31413,7 @@ var TraceGraphView = ({
31326
31413
  ) })
31327
31414
  }
31328
31415
  ) }),
31329
- /* @__PURE__ */ jsx145(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx145(EventDetails, { onClose: handleClose, selectedEvent }) })
31416
+ /* @__PURE__ */ jsx146(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx146(EventDetails, { onClose: handleClose, selectedEvent }) })
31330
31417
  ] })
31331
31418
  }
31332
31419
  )
@@ -31419,7 +31506,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31419
31506
  const navigateToSpansList = useCallback11(() => {
31420
31507
  onClose?.();
31421
31508
  }, [onClose]);
31422
- return /* @__PURE__ */ jsx145(
31509
+ return /* @__PURE__ */ jsx146(
31423
31510
  TraceGraphView,
31424
31511
  {
31425
31512
  fetchError,
@@ -31444,7 +31531,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31444
31531
  };
31445
31532
 
31446
31533
  // src/pages/spans-list-page.tsx
31447
- import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31534
+ import { Fragment as Fragment14, jsx as jsx147, jsxs as jsxs136 } from "react/jsx-runtime";
31448
31535
  var SpansListPage = () => {
31449
31536
  const api = useAppInspectorApi();
31450
31537
  const {
@@ -31491,9 +31578,9 @@ var SpansListPage = () => {
31491
31578
  void checkStatus();
31492
31579
  }, [api, checkStatus, clearFetchError]);
31493
31580
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31494
- return /* @__PURE__ */ jsxs135(Fragment13, { children: [
31495
- /* @__PURE__ */ jsxs135(
31496
- Box20,
31581
+ return /* @__PURE__ */ jsxs136(Fragment14, { children: [
31582
+ /* @__PURE__ */ jsxs136(
31583
+ Box21,
31497
31584
  {
31498
31585
  "data-testid": SPANS_LIST_PAGE_TEST_ID,
31499
31586
  sx: {
@@ -31508,7 +31595,7 @@ var SpansListPage = () => {
31508
31595
  width: "100%"
31509
31596
  },
31510
31597
  children: [
31511
- !checking && !shouldShowStatusMessage && /* @__PURE__ */ jsx146(
31598
+ !checking && !shouldShowStatusMessage && /* @__PURE__ */ jsx147(
31512
31599
  EmulatorVersionBanner,
31513
31600
  {
31514
31601
  compatibility: bannerDismissed && versionCompatibility === "warning" ? "ok" : versionCompatibility,
@@ -31518,7 +31605,7 @@ var SpansListPage = () => {
31518
31605
  } : void 0
31519
31606
  }
31520
31607
  ),
31521
- shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31608
+ shouldShowStatusMessage ? /* @__PURE__ */ jsx147(
31522
31609
  StatusMessage,
31523
31610
  {
31524
31611
  error: statusError,
@@ -31527,7 +31614,7 @@ var SpansListPage = () => {
31527
31614
  onRetry: handleRetry,
31528
31615
  status
31529
31616
  }
31530
- ) : /* @__PURE__ */ jsx146(
31617
+ ) : /* @__PURE__ */ jsx147(
31531
31618
  SpansList,
31532
31619
  {
31533
31620
  clearingSpans,
@@ -31555,7 +31642,7 @@ var SpansListPage = () => {
31555
31642
  ]
31556
31643
  }
31557
31644
  ),
31558
- selectedTraceId !== void 0 && /* @__PURE__ */ jsx146(TraceGraphPage, { onClose: () => {
31645
+ selectedTraceId !== void 0 && /* @__PURE__ */ jsx147(TraceGraphPage, { onClose: () => {
31559
31646
  setSelectedTraceId(void 0);
31560
31647
  }, spanId: selectedSpanId, traceId: selectedTraceId })
31561
31648
  ] });