@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 +65 -32
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +65 -32
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/styles/components.css +6 -54
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 = (
|
|
434
|
+
var useOverlayLayer = (isOpen) => {
|
|
411
435
|
const parent = useLayer();
|
|
412
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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:
|
|
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(
|
|
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(
|
|
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,
|