@flytedan/flytebot-design-system 0.12.13 → 0.12.14

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.cjs CHANGED
@@ -405,14 +405,48 @@ var portal = (node) => {
405
405
  };
406
406
  var ROOT_LAYER = 0;
407
407
  var LAYER_STEP = 10;
408
+ var ROOT_STEP = 100;
409
+ var OVERLAY_CEILING = 1e4;
408
410
  var LayerContext = React2.createContext(ROOT_LAYER);
411
+ var openRootIds = [];
412
+ var rootListeners = /* @__PURE__ */ new Set();
413
+ var notifyRootListeners = () => {
414
+ rootListeners.forEach((listener) => listener());
415
+ };
416
+ var subscribeRootOverlays = (listener) => {
417
+ rootListeners.add(listener);
418
+ return () => {
419
+ rootListeners.delete(listener);
420
+ };
421
+ };
422
+ var getRootOverlaysSnapshot = () => openRootIds;
423
+ var registerRootOverlay = (id) => {
424
+ if (openRootIds.includes(id)) return;
425
+ openRootIds = [...openRootIds, id];
426
+ notifyRootListeners();
427
+ };
428
+ var unregisterRootOverlay = (id) => {
429
+ if (!openRootIds.includes(id)) return;
430
+ openRootIds = openRootIds.filter((existing) => existing !== id);
431
+ notifyRootListeners();
432
+ };
409
433
  var useLayer = () => React2.useContext(LayerContext);
410
- var useOverlayLayer = (base) => {
434
+ var useOverlayLayer = (isOpen) => {
411
435
  const parent = useLayer();
412
- return parent === ROOT_LAYER ? base : parent + LAYER_STEP;
436
+ const isRoot = parent === ROOT_LAYER;
437
+ const id = React2.useId();
438
+ const openIds = React2.useSyncExternalStore(subscribeRootOverlays, getRootOverlaysSnapshot, getRootOverlaysSnapshot);
439
+ React2.useLayoutEffect(() => {
440
+ if (!isRoot || !isOpen) return;
441
+ registerRootOverlay(id);
442
+ return () => unregisterRootOverlay(id);
443
+ }, [isRoot, isOpen, id]);
444
+ if (!isRoot) return parent + LAYER_STEP;
445
+ if (!isOpen) return ROOT_LAYER;
446
+ const index = openIds.indexOf(id);
447
+ return index === -1 ? ROOT_LAYER : (index + 1) * ROOT_STEP;
413
448
  };
414
449
  var LayerProvider = ({ zIndex, children }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(LayerContext.Provider, { value: zIndex, children });
415
- var POPOVER_BASE = 140;
416
450
  function Popover({
417
451
  open,
418
452
  anchorRef,
@@ -449,7 +483,7 @@ function Popover({
449
483
  layerRef: ref
450
484
  });
451
485
  const restore = React2.useRef(null);
452
- const zIndex = useOverlayLayer(POPOVER_BASE);
486
+ const zIndex = useOverlayLayer(!!open);
453
487
  React2.useEffect(() => {
454
488
  if (!open) return;
455
489
  restore.current = typeof document !== "undefined" ? document.activeElement : null;
@@ -778,7 +812,9 @@ function SegmentedControl({ options = [], value, onChange, className = "", ...re
778
812
 
779
813
  // src/components/textExposure.ts
780
814
  function truncationTitle(content) {
781
- return typeof content === "string" || typeof content === "number" ? String(content) : void 0;
815
+ if (typeof content !== "string" && typeof content !== "number") return void 0;
816
+ const text = String(content);
817
+ return text === "" ? void 0 : text;
782
818
  }
783
819
 
784
820
  // src/components/surfaces/Card.tsx
@@ -855,9 +891,8 @@ function Collapsible({
855
891
  var React4 = __toESM(require("react"), 1);
856
892
  var import_react_dom2 = require("react-dom");
857
893
  var import_jsx_runtime7 = require("react/jsx-runtime");
858
- var DRAWER_BASE = 90;
859
894
  function Drawer({ open = true, title, onClose, footer, children, className = "", ...rest }) {
860
- const zIndex = useOverlayLayer(DRAWER_BASE);
895
+ const zIndex = useOverlayLayer(open);
861
896
  const [closing, setClosing] = React4.useState(false);
862
897
  const close = React4.useCallback(() => {
863
898
  if (!onClose) return;
@@ -895,6 +930,7 @@ var import_react_dom3 = require("react-dom");
895
930
  var import_jsx_runtime8 = require("react/jsx-runtime");
896
931
  function Modal({ open = true, title, description, onClose, footer, wide = false, children, className = "", ...rest }) {
897
932
  const [closing, setClosing] = React5.useState(false);
933
+ const zIndex = useOverlayLayer(!!open);
898
934
  const close = React5.useCallback(() => {
899
935
  if (!onClose) return;
900
936
  setClosing(true);
@@ -910,10 +946,11 @@ function Modal({ open = true, title, description, onClose, footer, wide = false,
910
946
  }, [open, onClose, close]);
911
947
  if (!open) return null;
912
948
  return (0, import_react_dom3.createPortal)(
913
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
949
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LayerProvider, { zIndex, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
914
950
  "div",
915
951
  {
916
952
  className: "fd-scrim" + (closing ? " is-closing" : ""),
953
+ style: { zIndex: zIndex - LAYER_STEP },
917
954
  onClick: onClose ? (e) => {
918
955
  if (e.target === e.currentTarget) close();
919
956
  } : void 0,
@@ -939,7 +976,7 @@ function Modal({ open = true, title, description, onClose, footer, wide = false,
939
976
  }
940
977
  )
941
978
  }
942
- ),
979
+ ) }),
943
980
  document.body
944
981
  );
945
982
  }
@@ -1074,7 +1111,7 @@ function SidebarNav({ brand, groups = [], current: current2, onNavigate, footer,
1074
1111
  onClick: onNavigate ? () => onNavigate(it.value) : void 0,
1075
1112
  children: [
1076
1113
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "fd-side-item-icon", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("i", { className: "ph ph-" + it.icon, "aria-hidden": "true" }) }),
1077
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: { flex: 1, minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: it.label }),
1114
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: { flex: 1, minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, title: truncationTitle(it.label), children: it.label }),
1078
1115
  it.preview ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tip, { label: "Designed, backend not wired yet", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("i", { className: "ph ph-traffic-cone", style: { fontSize: 13, color: "var(--warn-solid)", flex: "none" } }) }) : null,
1079
1116
  it.locked ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tip, { label: "You do not have permission for this", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("i", { className: "ph ph-lock-simple", style: { fontSize: 13, color: "var(--text-muted)", flex: "none" } }) }) : null,
1080
1117
  it.count !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "fd-side-item-count", children: it.count }) : null,
@@ -1370,7 +1407,6 @@ function Toast({ title, children, tone = "success", onUndo, onDismiss, className
1370
1407
  // src/components/feedback/Tooltip.tsx
1371
1408
  var React7 = __toESM(require("react"), 1);
1372
1409
  var import_jsx_runtime24 = require("react/jsx-runtime");
1373
- var TOOLTIP_BASE = 150;
1374
1410
  var CLOSE_DELAY_MS = 120;
1375
1411
  function Tooltip({ label, placement = "top", children, className = "" }) {
1376
1412
  const anchorRef = React7.useRef(null);
@@ -1414,7 +1450,7 @@ function Tooltip({ label, placement = "top", children, className = "" }) {
1414
1450
  layerRef: bubbleRef,
1415
1451
  onDetach: hide
1416
1452
  });
1417
- const zIndex = useOverlayLayer(TOOLTIP_BASE);
1453
+ const zIndex = useOverlayLayer(open);
1418
1454
  React7.useEffect(() => {
1419
1455
  if (!open) return;
1420
1456
  const key = (e) => {
@@ -1657,11 +1693,10 @@ function DataTable({
1657
1693
  // src/components/data/FilterBar.tsx
1658
1694
  var React9 = __toESM(require("react"), 1);
1659
1695
  var import_jsx_runtime28 = require("react/jsx-runtime");
1660
- var FILTER_BAR_BASE = 120;
1661
1696
  var isSet = (v) => !(v == null || v === "" || v === false);
1662
1697
  function FilterBar({ fields = [], filters, onFilterChange, onFilterRemove, align = "left", className = "", ...rest }) {
1663
1698
  const [panel, setPanel] = React9.useState(null);
1664
- const zIndex = useOverlayLayer(FILTER_BAR_BASE);
1699
+ const zIndex = useOverlayLayer(!!panel);
1665
1700
  const rootRef = React9.useRef(null);
1666
1701
  const textInputRef = React9.useRef(null);
1667
1702
  const optionsRef = React9.useRef(null);
@@ -2857,10 +2892,9 @@ function ScoreMeter({
2857
2892
  // src/components/data/SortMenu.tsx
2858
2893
  var React15 = __toESM(require("react"), 1);
2859
2894
  var import_jsx_runtime37 = require("react/jsx-runtime");
2860
- var SORT_MENU_BASE = 120;
2861
2895
  function SortMenu({ fields = [], sort, onSort, align = "right", size = "md", className = "", ...rest }) {
2862
2896
  const [open, setOpen] = React15.useState(false);
2863
- const zIndex = useOverlayLayer(SORT_MENU_BASE);
2897
+ const zIndex = useOverlayLayer(open);
2864
2898
  const ref = React15.useRef(null);
2865
2899
  React15.useEffect(() => {
2866
2900
  if (!open) return;
@@ -2954,7 +2988,7 @@ function StepList({
2954
2988
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: ["fd-steps", dense ? "is-dense" : "", open ? "is-open" : "", className].filter(Boolean).join(" "), children: [
2955
2989
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("button", { type: "button", className: "fd-steps-head", onClick: toggle, "aria-expanded": open, children: [
2956
2990
  running ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-steps-spin", "aria-hidden": "true" }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("i", { className: "ph ph-" + (failed ? "warning-circle" : "check-circle"), "aria-hidden": "true" }),
2957
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-steps-title", children: summary }),
2991
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-steps-title", title: truncationTitle(summary), children: summary }),
2958
2992
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "fd-steps-count fd-tabular", children: [
2959
2993
  steps.length,
2960
2994
  " step",
@@ -2982,11 +3016,11 @@ function StepList({
2982
3016
  "aria-expanded": isOpen,
2983
3017
  onClick: () => setExpanded((m) => Object.assign({}, m, { [id]: !isOpen })),
2984
3018
  children: [
2985
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: s.label }),
3019
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { title: truncationTitle(s.label), children: s.label }),
2986
3020
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("i", { className: "ph ph-caret-" + (isOpen ? "up" : "down"), "aria-hidden": "true" })
2987
3021
  ]
2988
3022
  }
2989
- ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-label is-static", children: s.label }),
3023
+ ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-label is-static", title: truncationTitle(s.label), children: s.label }),
2990
3024
  s.status === "error" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-badge is-error", children: "failed" }) : null,
2991
3025
  showDurations && s.durationMs ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-dur fd-tabular", children: formatDuration(s.durationMs) }) : null
2992
3026
  ] }),
@@ -3212,7 +3246,7 @@ function EntityRow({
3212
3246
  // `title` is the exposure mechanism, same rule as every other identifier.
3213
3247
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "fd-erow-title fd-body-sm", title: truncationTitle(title), children: title })
3214
3248
  ),
3215
- meta ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "fd-erow-meta", children: meta }) : null
3249
+ meta ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "fd-erow-meta", title: truncationTitle(meta), children: meta }) : null
3216
3250
  ] }),
3217
3251
  hasStrip ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("span", { className: "fd-erow-strip", children: [
3218
3252
  metrics && metrics.length ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(EntityRowMetrics, { metrics }) : null,
@@ -3548,7 +3582,7 @@ function TransferList({
3548
3582
  height: drag.height,
3549
3583
  transform: `translate(${drag.x - drag.offsetX}px, ${drag.y - drag.offsetY}px) rotate(-3deg)`,
3550
3584
  pointerEvents: "none",
3551
- zIndex: 1e3
3585
+ zIndex: OVERLAY_CEILING
3552
3586
  },
3553
3587
  children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(EntityRow, { ...renderRow(drag.item), draggable: true, className: "fd-erow-dragging" })
3554
3588
  }
@@ -3893,7 +3927,7 @@ function Select({
3893
3927
  style: { all: "unset", flex: 1, minWidth: 0, display: "flex", alignItems: "center", gap: 8, cursor: "inherit", overflow: "hidden" },
3894
3928
  children: [
3895
3929
  selected && selected.icon ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("i", { className: "ph ph-" + selected.icon, style: { flex: "none", color: "var(--text-2)" } }) : null,
3896
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: (multiple ? chosen.length : selected) ? "var(--text)" : "var(--text-muted)" }, children: boxText }),
3930
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { title: truncationTitle(boxText), style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: (multiple ? chosen.length : selected) ? "var(--text)" : "var(--text-muted)" }, children: boxText }),
3897
3931
  multiple && chosen.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "fd-mono", style: { flex: "none", fontSize: 11, fontWeight: 700, padding: "1px 6px", borderRadius: 99, background: "var(--brand)", color: "#fff" }, children: chosen.length }) : null
3898
3932
  ]
3899
3933
  }
@@ -4165,6 +4199,7 @@ function DatePicker({ label, help, error, required = false, disabled = false, ra
4165
4199
  type: "button",
4166
4200
  id: fieldId,
4167
4201
  "aria-labelledby": ariaLabelledBy,
4202
+ title: truncationTitle(display),
4168
4203
  disabled,
4169
4204
  onKeyDown: (e) => {
4170
4205
  if (e.key === "Enter" || e.key === " ") {
@@ -6989,7 +7024,7 @@ function AccountMenu({
6989
7024
  /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Avatar, { name: user.name }),
6990
7025
  /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: "fd-stack", style: { gap: 1, minWidth: 0, flex: 1 }, children: [
6991
7026
  /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "fd-body-sm", style: { fontWeight: 700 }, children: user.name }),
6992
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "fd-body-sm fd-muted fd-table-trunc", children: user.email })
7027
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "fd-body-sm fd-muted fd-table-trunc", title: truncationTitle(user.email), children: user.email })
6993
7028
  ] })
6994
7029
  ] }),
6995
7030
  showRoles && session.roles.length ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "fd-row", style: { gap: 6, padding: "10px 14px", flexWrap: "wrap", borderBottom: "1px solid var(--border)" }, children: session.roles.map((r) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge, { tone: r.id === "owner" ? "success" : "neutral", children: r.name }, r.id)) }) : null,
@@ -7804,7 +7839,6 @@ function RoadmapTimeline({ onOpenFlag, title = "Roadmap", lede }) {
7804
7839
  var React36 = __toESM(require("react"), 1);
7805
7840
  var import_react_dom5 = require("react-dom");
7806
7841
  var import_jsx_runtime62 = require("react/jsx-runtime");
7807
- var SOON_HOVERCARD_BASE = 220;
7808
7842
  var BYPASS_STORE = "fd.soon.bypass.v1";
7809
7843
  function readBypassed() {
7810
7844
  try {
@@ -7999,7 +8033,7 @@ function ComingSoon({
7999
8033
  function InlineSoon({ label, detail, backend, eta, effort, onRoadmap, allowed, onBypass, blur, tip, className, rest, children }) {
8000
8034
  const [open, setOpen] = React36.useState(false);
8001
8035
  const [anchor, pos] = useHoverCard(open);
8002
- const zIndex = useOverlayLayer(SOON_HOVERCARD_BASE);
8036
+ const zIndex = useOverlayLayer(open);
8003
8037
  const close = React36.useRef(null);
8004
8038
  const show = () => {
8005
8039
  if (close.current) {
@@ -8188,11 +8222,10 @@ function PermissionHint({ perm, children }) {
8188
8222
  // src/components/platform/ModeSwitch.tsx
8189
8223
  var React37 = __toESM(require("react"), 1);
8190
8224
  var import_jsx_runtime64 = require("react/jsx-runtime");
8191
- var MODE_SWITCH_BASE = 140;
8192
8225
  function ModeSwitch({ canToggle = false, requestCount = 0, onClearLog, renderLog, onOpenSpec, summary }) {
8193
8226
  const mode2 = useRuntimeMode();
8194
8227
  const [open, setOpen] = React37.useState(false);
8195
- const zIndex = useOverlayLayer(MODE_SWITCH_BASE);
8228
+ const zIndex = useOverlayLayer(open);
8196
8229
  const ref = React37.useRef(null);
8197
8230
  React37.useEffect(() => {
8198
8231
  if (!open) return;
@@ -9299,7 +9332,7 @@ function PacketCard({ packet, schema, render, onApply, applied }) {
9299
9332
  return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("section", { className: "fdc-packet" + (invalid ? " is-invalid" : ""), "aria-label": title, children: [
9300
9333
  /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("header", { className: "fdc-packet-head", children: [
9301
9334
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("i", { className: "ph ph-" + (s.icon || "package"), "aria-hidden": "true" }),
9302
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-title", children: title }),
9335
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-title", title: truncationTitle(title), children: title }),
9303
9336
  packet.repaired ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-badge", children: "Repaired" }) : null,
9304
9337
  invalid ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-badge is-danger", children: "Invalid" }) : null
9305
9338
  ] }),
@@ -9804,7 +9837,7 @@ function ChatComposer({
9804
9837
  return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "fdc-composer" + (disabled ? " is-disabled" : "") + (narrow ? " is-narrow" : ""), children: [
9805
9838
  queue.length ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "fdc-queue", "aria-label": "Queued messages", children: queue.map((q) => /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "fdc-queue-row", children: [
9806
9839
  /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("i", { className: "ph ph-clock-countdown", "aria-hidden": "true" }),
9807
- /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "fdc-queue-text", children: q.text || (q.attachments ? q.attachments.length + " file(s)" : "") }),
9840
+ /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "fdc-queue-text", title: truncationTitle(q.text || (q.attachments ? q.attachments.length + " file(s)" : "")), children: q.text || (q.attachments ? q.attachments.length + " file(s)" : "") }),
9808
9841
  onRemoveQueued ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("button", { type: "button", className: "fdc-queue-x", onClick: () => onRemoveQueued(q.id), "aria-label": "Remove queued message", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("i", { className: "ph ph-x", "aria-hidden": "true" }) }) : null
9809
9842
  ] }, q.id)) }) : null,
9810
9843
  sessionBar,
@@ -9932,7 +9965,7 @@ function ChatSessionBar({ sessionStats, contextUsage, usageLimits, onClear, extr
9932
9965
  "aria-label": expandable ? "Usage details" : void 0,
9933
9966
  children: [
9934
9967
  cu ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "fdc-bar-mini", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(SegmentedMeter, { total, segments: cu.segments, height: 4, showTotal: false }) }) : null,
9935
- /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "fdc-bar-text", children: bits.join(" \xB7 ") }),
9968
+ /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "fdc-bar-text", title: truncationTitle(bits.join(" \xB7 ")), children: bits.join(" \xB7 ") }),
9936
9969
  expandable ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("i", { className: "ph ph-caret-right fdc-bar-caret", "aria-hidden": "true" }) : null
9937
9970
  ]
9938
9971
  }
@@ -10326,8 +10359,8 @@ function AgentChatPanel({
10326
10359
  showHeader ? /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("header", { className: "fdc-head", children: [
10327
10360
  /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-mark", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("i", { className: "ph ph-" + assistantIcon }) }),
10328
10361
  /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("span", { className: "fdc-head-titles", children: [
10329
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-title", children: title }),
10330
- subtitle ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-sub", children: subtitle }) : null
10362
+ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-title", title: truncationTitle(title), children: title }),
10363
+ subtitle ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-sub", title: truncationTitle(subtitle), children: subtitle }) : null
10331
10364
  ] }),
10332
10365
  /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("span", { className: "fdc-head-acts", children: [
10333
10366
  headerActions,