@flytedan/flytebot-design-system 0.12.13 → 0.12.15
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 -33
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +65 -33
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/styles/components.css +26 -68
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,
|
|
@@ -1177,7 +1214,6 @@ function Topbar({
|
|
|
1177
1214
|
}
|
|
1178
1215
|
)
|
|
1179
1216
|
] }, i)) }),
|
|
1180
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { flex: 1 } }),
|
|
1181
1217
|
overflowActions != null ? narrow ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
1182
1218
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1183
1219
|
"button",
|
|
@@ -1370,7 +1406,6 @@ function Toast({ title, children, tone = "success", onUndo, onDismiss, className
|
|
|
1370
1406
|
// src/components/feedback/Tooltip.tsx
|
|
1371
1407
|
var React7 = __toESM(require("react"), 1);
|
|
1372
1408
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1373
|
-
var TOOLTIP_BASE = 150;
|
|
1374
1409
|
var CLOSE_DELAY_MS = 120;
|
|
1375
1410
|
function Tooltip({ label, placement = "top", children, className = "" }) {
|
|
1376
1411
|
const anchorRef = React7.useRef(null);
|
|
@@ -1414,7 +1449,7 @@ function Tooltip({ label, placement = "top", children, className = "" }) {
|
|
|
1414
1449
|
layerRef: bubbleRef,
|
|
1415
1450
|
onDetach: hide
|
|
1416
1451
|
});
|
|
1417
|
-
const zIndex = useOverlayLayer(
|
|
1452
|
+
const zIndex = useOverlayLayer(open);
|
|
1418
1453
|
React7.useEffect(() => {
|
|
1419
1454
|
if (!open) return;
|
|
1420
1455
|
const key = (e) => {
|
|
@@ -1657,11 +1692,10 @@ function DataTable({
|
|
|
1657
1692
|
// src/components/data/FilterBar.tsx
|
|
1658
1693
|
var React9 = __toESM(require("react"), 1);
|
|
1659
1694
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1660
|
-
var FILTER_BAR_BASE = 120;
|
|
1661
1695
|
var isSet = (v) => !(v == null || v === "" || v === false);
|
|
1662
1696
|
function FilterBar({ fields = [], filters, onFilterChange, onFilterRemove, align = "left", className = "", ...rest }) {
|
|
1663
1697
|
const [panel, setPanel] = React9.useState(null);
|
|
1664
|
-
const zIndex = useOverlayLayer(
|
|
1698
|
+
const zIndex = useOverlayLayer(!!panel);
|
|
1665
1699
|
const rootRef = React9.useRef(null);
|
|
1666
1700
|
const textInputRef = React9.useRef(null);
|
|
1667
1701
|
const optionsRef = React9.useRef(null);
|
|
@@ -2857,10 +2891,9 @@ function ScoreMeter({
|
|
|
2857
2891
|
// src/components/data/SortMenu.tsx
|
|
2858
2892
|
var React15 = __toESM(require("react"), 1);
|
|
2859
2893
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2860
|
-
var SORT_MENU_BASE = 120;
|
|
2861
2894
|
function SortMenu({ fields = [], sort, onSort, align = "right", size = "md", className = "", ...rest }) {
|
|
2862
2895
|
const [open, setOpen] = React15.useState(false);
|
|
2863
|
-
const zIndex = useOverlayLayer(
|
|
2896
|
+
const zIndex = useOverlayLayer(open);
|
|
2864
2897
|
const ref = React15.useRef(null);
|
|
2865
2898
|
React15.useEffect(() => {
|
|
2866
2899
|
if (!open) return;
|
|
@@ -2954,7 +2987,7 @@ function StepList({
|
|
|
2954
2987
|
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: ["fd-steps", dense ? "is-dense" : "", open ? "is-open" : "", className].filter(Boolean).join(" "), children: [
|
|
2955
2988
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("button", { type: "button", className: "fd-steps-head", onClick: toggle, "aria-expanded": open, children: [
|
|
2956
2989
|
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 }),
|
|
2990
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-steps-title", title: truncationTitle(summary), children: summary }),
|
|
2958
2991
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "fd-steps-count fd-tabular", children: [
|
|
2959
2992
|
steps.length,
|
|
2960
2993
|
" step",
|
|
@@ -2982,11 +3015,11 @@ function StepList({
|
|
|
2982
3015
|
"aria-expanded": isOpen,
|
|
2983
3016
|
onClick: () => setExpanded((m) => Object.assign({}, m, { [id]: !isOpen })),
|
|
2984
3017
|
children: [
|
|
2985
|
-
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: s.label }),
|
|
3018
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { title: truncationTitle(s.label), children: s.label }),
|
|
2986
3019
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("i", { className: "ph ph-caret-" + (isOpen ? "up" : "down"), "aria-hidden": "true" })
|
|
2987
3020
|
]
|
|
2988
3021
|
}
|
|
2989
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-label is-static", children: s.label }),
|
|
3022
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-label is-static", title: truncationTitle(s.label), children: s.label }),
|
|
2990
3023
|
s.status === "error" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-badge is-error", children: "failed" }) : null,
|
|
2991
3024
|
showDurations && s.durationMs ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "fd-step-dur fd-tabular", children: formatDuration(s.durationMs) }) : null
|
|
2992
3025
|
] }),
|
|
@@ -3212,7 +3245,7 @@ function EntityRow({
|
|
|
3212
3245
|
// `title` is the exposure mechanism, same rule as every other identifier.
|
|
3213
3246
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "fd-erow-title fd-body-sm", title: truncationTitle(title), children: title })
|
|
3214
3247
|
),
|
|
3215
|
-
meta ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "fd-erow-meta", children: meta }) : null
|
|
3248
|
+
meta ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "fd-erow-meta", title: truncationTitle(meta), children: meta }) : null
|
|
3216
3249
|
] }),
|
|
3217
3250
|
hasStrip ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("span", { className: "fd-erow-strip", children: [
|
|
3218
3251
|
metrics && metrics.length ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(EntityRowMetrics, { metrics }) : null,
|
|
@@ -3548,7 +3581,7 @@ function TransferList({
|
|
|
3548
3581
|
height: drag.height,
|
|
3549
3582
|
transform: `translate(${drag.x - drag.offsetX}px, ${drag.y - drag.offsetY}px) rotate(-3deg)`,
|
|
3550
3583
|
pointerEvents: "none",
|
|
3551
|
-
zIndex:
|
|
3584
|
+
zIndex: OVERLAY_CEILING
|
|
3552
3585
|
},
|
|
3553
3586
|
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(EntityRow, { ...renderRow(drag.item), draggable: true, className: "fd-erow-dragging" })
|
|
3554
3587
|
}
|
|
@@ -3893,7 +3926,7 @@ function Select({
|
|
|
3893
3926
|
style: { all: "unset", flex: 1, minWidth: 0, display: "flex", alignItems: "center", gap: 8, cursor: "inherit", overflow: "hidden" },
|
|
3894
3927
|
children: [
|
|
3895
3928
|
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 }),
|
|
3929
|
+
/* @__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
3930
|
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
3931
|
]
|
|
3899
3932
|
}
|
|
@@ -4165,6 +4198,7 @@ function DatePicker({ label, help, error, required = false, disabled = false, ra
|
|
|
4165
4198
|
type: "button",
|
|
4166
4199
|
id: fieldId,
|
|
4167
4200
|
"aria-labelledby": ariaLabelledBy,
|
|
4201
|
+
title: truncationTitle(display),
|
|
4168
4202
|
disabled,
|
|
4169
4203
|
onKeyDown: (e) => {
|
|
4170
4204
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -6989,7 +7023,7 @@ function AccountMenu({
|
|
|
6989
7023
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Avatar, { name: user.name }),
|
|
6990
7024
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: "fd-stack", style: { gap: 1, minWidth: 0, flex: 1 }, children: [
|
|
6991
7025
|
/* @__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 })
|
|
7026
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "fd-body-sm fd-muted fd-table-trunc", title: truncationTitle(user.email), children: user.email })
|
|
6993
7027
|
] })
|
|
6994
7028
|
] }),
|
|
6995
7029
|
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 +7838,6 @@ function RoadmapTimeline({ onOpenFlag, title = "Roadmap", lede }) {
|
|
|
7804
7838
|
var React36 = __toESM(require("react"), 1);
|
|
7805
7839
|
var import_react_dom5 = require("react-dom");
|
|
7806
7840
|
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
7807
|
-
var SOON_HOVERCARD_BASE = 220;
|
|
7808
7841
|
var BYPASS_STORE = "fd.soon.bypass.v1";
|
|
7809
7842
|
function readBypassed() {
|
|
7810
7843
|
try {
|
|
@@ -7999,7 +8032,7 @@ function ComingSoon({
|
|
|
7999
8032
|
function InlineSoon({ label, detail, backend, eta, effort, onRoadmap, allowed, onBypass, blur, tip, className, rest, children }) {
|
|
8000
8033
|
const [open, setOpen] = React36.useState(false);
|
|
8001
8034
|
const [anchor, pos] = useHoverCard(open);
|
|
8002
|
-
const zIndex = useOverlayLayer(
|
|
8035
|
+
const zIndex = useOverlayLayer(open);
|
|
8003
8036
|
const close = React36.useRef(null);
|
|
8004
8037
|
const show = () => {
|
|
8005
8038
|
if (close.current) {
|
|
@@ -8188,11 +8221,10 @@ function PermissionHint({ perm, children }) {
|
|
|
8188
8221
|
// src/components/platform/ModeSwitch.tsx
|
|
8189
8222
|
var React37 = __toESM(require("react"), 1);
|
|
8190
8223
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
8191
|
-
var MODE_SWITCH_BASE = 140;
|
|
8192
8224
|
function ModeSwitch({ canToggle = false, requestCount = 0, onClearLog, renderLog, onOpenSpec, summary }) {
|
|
8193
8225
|
const mode2 = useRuntimeMode();
|
|
8194
8226
|
const [open, setOpen] = React37.useState(false);
|
|
8195
|
-
const zIndex = useOverlayLayer(
|
|
8227
|
+
const zIndex = useOverlayLayer(open);
|
|
8196
8228
|
const ref = React37.useRef(null);
|
|
8197
8229
|
React37.useEffect(() => {
|
|
8198
8230
|
if (!open) return;
|
|
@@ -9299,7 +9331,7 @@ function PacketCard({ packet, schema, render, onApply, applied }) {
|
|
|
9299
9331
|
return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("section", { className: "fdc-packet" + (invalid ? " is-invalid" : ""), "aria-label": title, children: [
|
|
9300
9332
|
/* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("header", { className: "fdc-packet-head", children: [
|
|
9301
9333
|
/* @__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 }),
|
|
9334
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-title", title: truncationTitle(title), children: title }),
|
|
9303
9335
|
packet.repaired ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-badge", children: "Repaired" }) : null,
|
|
9304
9336
|
invalid ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "fdc-packet-badge is-danger", children: "Invalid" }) : null
|
|
9305
9337
|
] }),
|
|
@@ -9804,7 +9836,7 @@ function ChatComposer({
|
|
|
9804
9836
|
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "fdc-composer" + (disabled ? " is-disabled" : "") + (narrow ? " is-narrow" : ""), children: [
|
|
9805
9837
|
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
9838
|
/* @__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)" : "") }),
|
|
9839
|
+
/* @__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
9840
|
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
9841
|
] }, q.id)) }) : null,
|
|
9810
9842
|
sessionBar,
|
|
@@ -9932,7 +9964,7 @@ function ChatSessionBar({ sessionStats, contextUsage, usageLimits, onClear, extr
|
|
|
9932
9964
|
"aria-label": expandable ? "Usage details" : void 0,
|
|
9933
9965
|
children: [
|
|
9934
9966
|
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 ") }),
|
|
9967
|
+
/* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "fdc-bar-text", title: truncationTitle(bits.join(" \xB7 ")), children: bits.join(" \xB7 ") }),
|
|
9936
9968
|
expandable ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("i", { className: "ph ph-caret-right fdc-bar-caret", "aria-hidden": "true" }) : null
|
|
9937
9969
|
]
|
|
9938
9970
|
}
|
|
@@ -10326,8 +10358,8 @@ function AgentChatPanel({
|
|
|
10326
10358
|
showHeader ? /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("header", { className: "fdc-head", children: [
|
|
10327
10359
|
/* @__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
10360
|
/* @__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
|
|
10361
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-title", title: truncationTitle(title), children: title }),
|
|
10362
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fdc-head-sub", title: truncationTitle(subtitle), children: subtitle }) : null
|
|
10331
10363
|
] }),
|
|
10332
10364
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("span", { className: "fdc-head-acts", children: [
|
|
10333
10365
|
headerActions,
|