@corenel/web-ui 0.1.0
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/AskUser.d.ts +8 -0
- package/dist/AskUser.d.ts.map +1 -0
- package/dist/AskUser.js +94 -0
- package/dist/AskUser.js.map +1 -0
- package/dist/CommandPalette.d.ts +13 -0
- package/dist/CommandPalette.d.ts.map +1 -0
- package/dist/CommandPalette.js +54 -0
- package/dist/CommandPalette.js.map +1 -0
- package/dist/Composer.d.ts +51 -0
- package/dist/Composer.d.ts.map +1 -0
- package/dist/Composer.js +174 -0
- package/dist/Composer.js.map +1 -0
- package/dist/ContextBar.d.ts +9 -0
- package/dist/ContextBar.d.ts.map +1 -0
- package/dist/ContextBar.js +45 -0
- package/dist/ContextBar.js.map +1 -0
- package/dist/ContextManager.d.ts +33 -0
- package/dist/ContextManager.d.ts.map +1 -0
- package/dist/ContextManager.js +145 -0
- package/dist/ContextManager.js.map +1 -0
- package/dist/Lightbox.d.ts +6 -0
- package/dist/Lightbox.d.ts.map +1 -0
- package/dist/Lightbox.js +22 -0
- package/dist/Lightbox.js.map +1 -0
- package/dist/RichContent.d.ts +27 -0
- package/dist/RichContent.d.ts.map +1 -0
- package/dist/RichContent.js +267 -0
- package/dist/RichContent.js.map +1 -0
- package/dist/SummaryTranscript.d.ts +17 -0
- package/dist/SummaryTranscript.d.ts.map +1 -0
- package/dist/SummaryTranscript.js +23 -0
- package/dist/SummaryTranscript.js.map +1 -0
- package/dist/TodoPanel.d.ts +2 -0
- package/dist/TodoPanel.d.ts.map +1 -0
- package/dist/TodoPanel.js +173 -0
- package/dist/TodoPanel.js.map +1 -0
- package/dist/Transcript.d.ts +27 -0
- package/dist/Transcript.d.ts.map +1 -0
- package/dist/Transcript.js +179 -0
- package/dist/Transcript.js.map +1 -0
- package/dist/diff.d.ts +10 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +52 -0
- package/dist/diff.js.map +1 -0
- package/dist/editDecisions.d.ts +14 -0
- package/dist/editDecisions.d.ts.map +1 -0
- package/dist/editDecisions.js +77 -0
- package/dist/editDecisions.js.map +1 -0
- package/dist/liveEdit.d.ts +18 -0
- package/dist/liveEdit.d.ts.map +1 -0
- package/dist/liveEdit.js +71 -0
- package/dist/liveEdit.js.map +1 -0
- package/dist/toolRender.d.ts +31 -0
- package/dist/toolRender.d.ts.map +1 -0
- package/dist/toolRender.js +163 -0
- package/dist/toolRender.js.map +1 -0
- package/dist/transcriptView.d.ts +16 -0
- package/dist/transcriptView.d.ts.map +1 -0
- package/dist/transcriptView.js +69 -0
- package/dist/transcriptView.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ConversationTurn } from './Transcript';
|
|
3
|
+
import { type SystemParts } from '@corenel/harness/systemParts';
|
|
4
|
+
/**
|
|
5
|
+
* Live projected context composition: system prompt (base + enabled parts) + the
|
|
6
|
+
* INCLUDED warm turns, vs the model window. Subscribes to the conversation, so it
|
|
7
|
+
* updates as you chat and toggle turns/parts — used by BOTH the collapsed
|
|
8
|
+
* ContextBar and the expanded drawer so they always agree (the collapsed bar used
|
|
9
|
+
* to read the last run's tokens, which only changed after a completed run).
|
|
10
|
+
*/
|
|
11
|
+
export declare function useContextProjection(contextWindow: number, parts: SystemParts): {
|
|
12
|
+
turns: ConversationTurn[];
|
|
13
|
+
partTok: (key: keyof SystemParts) => number;
|
|
14
|
+
systemTok: number;
|
|
15
|
+
perTurn: {
|
|
16
|
+
t: ConversationTurn;
|
|
17
|
+
tok: number;
|
|
18
|
+
}[];
|
|
19
|
+
turnsTok: number;
|
|
20
|
+
projected: number;
|
|
21
|
+
pct: number;
|
|
22
|
+
over: boolean;
|
|
23
|
+
includedCount: number;
|
|
24
|
+
};
|
|
25
|
+
export declare function ContextManagerBody({ contextWindow, parts: partsProp, onToggle, systemSource }: {
|
|
26
|
+
contextWindow: number;
|
|
27
|
+
parts?: SystemParts;
|
|
28
|
+
onToggle?: (k: keyof SystemParts) => void;
|
|
29
|
+
/** Filename of the system prompt active for the next run (e.g. system-prmd-md.md),
|
|
30
|
+
* shown so the user can see which prompt the assistant is using. */
|
|
31
|
+
systemSource?: string;
|
|
32
|
+
}): React.JSX.Element;
|
|
33
|
+
//# sourceMappingURL=ContextManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextManager.d.ts","sourceRoot":"","sources":["../ContextManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKrD,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAoChG;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;;mBAGtD,MAAM,WAAW,KAAG,MAAM;;;;;;;;;;;EAYjD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,WAAW,KAAK,IAAI,CAAC;IAC1C;wEACoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,qBA0IA"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { useConversation } from '@corenel/harness/conversation';
|
|
4
|
+
import { listRecall, clearRecall } from '@corenel/tools-web/tools/result-store';
|
|
5
|
+
import { effectiveThreshold } from '@corenel/harness/compression';
|
|
6
|
+
import { getCompression, setCompression } from '@corenel/ui-kit/theme';
|
|
7
|
+
import { getSystemParts, setSystemParts } from '@corenel/harness/systemParts';
|
|
8
|
+
import { allTools } from '@corenel/harness/tools/builtins';
|
|
9
|
+
import { useUsage, fmtTok } from '@corenel/ui-kit/usage';
|
|
10
|
+
import { estimateTokens } from '@corenel/ui-kit/ui-helpers';
|
|
11
|
+
import { IcCheck, IcTrash, IcZap, IcChevron } from '@corenel/ui-kit/icons';
|
|
12
|
+
/* Context Manager (dock panel body, and the drawer under the Assistant header).
|
|
13
|
+
* Reframed around ONE question: what's in the model's window right now, and how do
|
|
14
|
+
* I trim it. Shows a PROJECTED composition (system prompt + included warm turns)
|
|
15
|
+
* that responds live to the toggles, plus offloaded/recoverable tool outputs and an
|
|
16
|
+
* inline compression control.
|
|
17
|
+
*
|
|
18
|
+
* `parts` / `onToggle` let a host (AgentPanel) own the system-prompt parts so the
|
|
19
|
+
* agent's next run stays in sync; without them the panel self-manages via
|
|
20
|
+
* get/setSystemParts (the standalone dock panel). */
|
|
21
|
+
const PARTS = [
|
|
22
|
+
{ key: 'persona', label: 'Persona', est: 300 },
|
|
23
|
+
{ key: 'mode', label: 'Mode', est: 200 },
|
|
24
|
+
{ key: 'toolGuidance', label: 'Guidance', est: 450 },
|
|
25
|
+
{ key: 'tools', label: 'Tools', est: 0 }, // measured from the live tool schemas
|
|
26
|
+
];
|
|
27
|
+
const SYS_BASE_EST = 600; // systems/system-base.md baseline (always included)
|
|
28
|
+
const PRESETS = ['off', 'conservative', 'balanced', 'aggressive'];
|
|
29
|
+
function turnTokens(t) {
|
|
30
|
+
let s = '';
|
|
31
|
+
for (const m of t.messages)
|
|
32
|
+
s += typeof m.content === 'string' ? m.content : JSON.stringify(m.content ?? '');
|
|
33
|
+
return estimateTokens(s);
|
|
34
|
+
}
|
|
35
|
+
function turnLabel(t) {
|
|
36
|
+
const u = t.messages.find((m) => m.role === 'user');
|
|
37
|
+
const text = u && typeof u.content === 'string' ? u.content : '';
|
|
38
|
+
return text.trim().slice(0, 80) || '(turn)';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Live projected context composition: system prompt (base + enabled parts) + the
|
|
42
|
+
* INCLUDED warm turns, vs the model window. Subscribes to the conversation, so it
|
|
43
|
+
* updates as you chat and toggle turns/parts — used by BOTH the collapsed
|
|
44
|
+
* ContextBar and the expanded drawer so they always agree (the collapsed bar used
|
|
45
|
+
* to read the last run's tokens, which only changed after a completed run).
|
|
46
|
+
*/
|
|
47
|
+
export function useContextProjection(contextWindow, parts) {
|
|
48
|
+
const { turns } = useConversation();
|
|
49
|
+
const toolsTok = useMemo(() => estimateTokens(JSON.stringify(allTools().map((t) => ({ name: t.name, description: t.description, parameters: t.parameters })))), []);
|
|
50
|
+
const partTok = (key) => (key === 'tools' ? toolsTok : (PARTS.find((p) => p.key === key)?.est ?? 0));
|
|
51
|
+
const systemTok = SYS_BASE_EST + PARTS.reduce((n, p) => n + (parts[p.key] ? partTok(p.key) : 0), 0);
|
|
52
|
+
const perTurn = useMemo(() => turns.map((t) => ({ t, tok: turnTokens(t) })), [turns]);
|
|
53
|
+
const turnsTok = perTurn.reduce((n, x) => n + (x.t.included ? x.tok : 0), 0);
|
|
54
|
+
const projected = systemTok + turnsTok;
|
|
55
|
+
const w = Math.max(1, contextWindow);
|
|
56
|
+
return {
|
|
57
|
+
turns, partTok, systemTok, perTurn, turnsTok, projected,
|
|
58
|
+
pct: Math.min(100, Math.round((projected / w) * 100)),
|
|
59
|
+
over: projected > contextWindow,
|
|
60
|
+
includedCount: perTurn.filter((x) => x.t.included).length,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function ContextManagerBody({ contextWindow, parts: partsProp, onToggle, systemSource }) {
|
|
64
|
+
const { records } = useUsage();
|
|
65
|
+
const { toggleInclude } = useConversation();
|
|
66
|
+
const [offloaded, setOffloaded] = useState([]);
|
|
67
|
+
const [expanded, setExpanded] = useState(null);
|
|
68
|
+
const [preset, setPresetState] = useState(getCompression);
|
|
69
|
+
const [localParts, setLocalParts] = useState(getSystemParts);
|
|
70
|
+
const parts = partsProp ?? localParts;
|
|
71
|
+
const togglePart = (k) => {
|
|
72
|
+
if (onToggle)
|
|
73
|
+
onToggle(k);
|
|
74
|
+
else
|
|
75
|
+
setLocalParts((p) => { const next = { ...p, [k]: !p[k] }; setSystemParts(next); return next; });
|
|
76
|
+
};
|
|
77
|
+
const refresh = () => { listRecall().then(setOffloaded).catch(() => setOffloaded([])); };
|
|
78
|
+
useEffect(refresh, []);
|
|
79
|
+
const lastAgent = records.find((r) => r.surface === 'agent');
|
|
80
|
+
// ---- projected composition (estimate) — shared with the collapsed ContextBar ----
|
|
81
|
+
const { turns, partTok, systemTok, perTurn, turnsTok, projected, pct, over, includedCount } = useContextProjection(contextWindow, parts);
|
|
82
|
+
const w = Math.max(1, contextWindow);
|
|
83
|
+
const sysPct = Math.min(100, (systemTok / w) * 100);
|
|
84
|
+
const turnPct = Math.min(100 - sysPct, (turnsTok / w) * 100);
|
|
85
|
+
const reclaimedBytes = offloaded.reduce((n, o) => n + o.bytes, 0);
|
|
86
|
+
const thr = effectiveThreshold(preset, projected / w);
|
|
87
|
+
const setAll = (inc) => perTurn.forEach((x) => { if (x.t.included !== inc)
|
|
88
|
+
toggleInclude(x.t.id); });
|
|
89
|
+
return (_jsx("div", { style: S.panel, children: _jsxs("div", { style: S.body, children: [_jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.budgetHead, children: [_jsxs("span", { style: S.bigNum, title: "Estimated tokens if you run now", children: [fmtTok(projected), _jsxs("span", { style: S.bigDim, children: [" / ", fmtTok(contextWindow)] })] }), _jsxs("span", { style: { ...S.pctChip, ...(over ? S.pctOver : null) }, children: [pct, "%"] })] }), _jsxs("div", { style: S.barStack, children: [_jsx("div", { style: { ...S.seg, width: `${sysPct}%`, background: 'var(--accent)' }, title: `System ${fmtTok(systemTok)}` }), _jsx("div", { style: { ...S.seg, width: `${turnPct}%`, background: 'var(--brand-cyan, #3fb6d4)' }, title: `Warm turns ${fmtTok(turnsTok)}` })] }), _jsxs("div", { style: S.legend, children: [_jsx(Legend, { c: "var(--accent)", k: "System", v: fmtTok(systemTok) }), _jsx(Legend, { c: "var(--brand-cyan, #3fb6d4)", k: "Turns", v: fmtTok(turnsTok) }), _jsx(Legend, { c: "var(--surface-3)", k: "Free", v: fmtTok(Math.max(0, contextWindow - projected)) }), _jsx("span", { style: S.lastRun, children: lastAgent ? `last run ${fmtTok(lastAgent.inTok)}` : 'no runs yet' })] }), _jsx("div", { style: S.estNote, children: "Projected estimate \u2014 system-prompt size is approximate." })] }), _jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsx("span", { style: S.secLabel, children: "System prompt" }), _jsxs("span", { style: S.secMeta, children: ["~", fmtTok(systemTok)] })] }), systemSource && (_jsxs("div", { style: S.sourceLine, title: "The system prompt file used for the next run", children: [_jsx("span", { style: S.sourceDim, children: "prompt:" }), " ", _jsx("code", { style: S.sourceCode, children: systemSource })] })), _jsxs("div", { style: S.chips, children: [PARTS.map(({ key, label }) => (_jsxs("button", { style: S.chip(parts[key]), onClick: () => togglePart(key), title: parts[key] ? `Including ${label.toLowerCase()} (~${fmtTok(partTok(key))})` : `Excluded — ${label.toLowerCase()} dropped`, children: [_jsx("span", { style: S.chipDot(parts[key]) }), label] }, key))), _jsxs("button", { style: S.chip(parts.baseSystem), onClick: () => togglePart('baseSystem'), title: parts.baseSystem
|
|
90
|
+
? 'Using the base system prompt — the file-type prompt (.prmd / .pdflow format docs) is ignored'
|
|
91
|
+
: 'Using the file-type system prompt when one matches the open file. Turn on to force the base prompt instead.', children: [_jsx("span", { style: S.chipDot(parts.baseSystem) }), "Use base prompt"] })] }), parts.baseSystem && _jsx("div", { style: S.estNote, children: "File-type prompt overridden \u2014 running on the base system prompt only." })] }), _jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsxs("span", { style: S.secLabel, children: ["Warm turns \u00B7 ", includedCount, "/", turns.length] }), _jsxs("span", { style: S.actions, children: [_jsx("span", { style: S.secMeta, children: fmtTok(turnsTok) }), turns.length > 0 && _jsxs(_Fragment, { children: [_jsx("button", { style: S.miniBtn, onClick: () => setAll(true), children: "All" }), _jsx("button", { style: S.miniBtn, onClick: () => setAll(false), children: "None" })] })] })] }), _jsxs("div", { style: S.list, children: [turns.length === 0 && _jsx("div", { style: S.empty, children: "No turns yet. As you chat, each exchange shows here \u2014 exclude old ones to free the window." }), perTurn.map(({ t, tok }) => (_jsxs("button", { style: S.turn(t.included), onClick: () => toggleInclude(t.id), title: t.included ? 'Excluded turns are not sent to the model' : 'Include this turn', children: [_jsx("span", { style: S.check(t.included), children: t.included && _jsx(IcCheck, { size: 11 }) }), _jsx("span", { style: S.turnText, children: turnLabel(t) }), _jsx("span", { style: S.turnMeta, children: fmtTok(tok) })] }, t.id)))] })] }), _jsxs("div", { style: S.section, children: [_jsxs("div", { style: S.rowHead, children: [_jsxs("span", { style: S.secLabel, children: ["Compressed \u00B7 ", offloaded.length] }), _jsxs("span", { style: S.actions, children: [_jsx("span", { style: S.secMeta, children: reclaimedBytes ? `${(reclaimedBytes / 1000).toFixed(1)} KB saved` : '—' }), offloaded.length > 0 && _jsxs("button", { style: S.miniBtn, onClick: () => { clearRecall().then(refresh); }, children: [_jsx(IcTrash, { size: 11 }), " Clear"] })] })] }), _jsxs("div", { style: S.list, children: [offloaded.length === 0 && _jsx("div", { style: S.empty, children: "Large tool outputs get offloaded here \u2014 frozen, and the assistant pulls them back on demand." }), offloaded.map((o) => (_jsxs("div", { style: S.frozenWrap, children: [_jsxs("button", { style: S.frozen, onClick: () => setExpanded((e) => (e === o.id ? null : o.id)), title: "Preview offloaded content", children: [_jsx("span", { style: { ...S.chev, transform: expanded === o.id ? 'rotate(90deg)' : 'none' }, children: _jsx(IcChevron, { size: 12 }) }), _jsx(IcZap, { size: 12 }), _jsx("span", { style: S.frozenName, children: o.toolName }), _jsxs("span", { style: S.frozenMeta, children: [(o.bytes / 1000).toFixed(1), " KB"] })] }), expanded === o.id && _jsxs("pre", { style: S.preview, children: [o.content.slice(0, 600), o.content.length > 600 ? '…' : ''] })] }, o.id)))] })] }), _jsxs("div", { style: S.section, children: [_jsx("div", { style: S.rowHead, children: _jsx("span", { style: S.secLabel, children: "Compression" }) }), _jsxs("div", { style: S.compRow, children: [_jsx("select", { style: S.select, value: preset, onChange: (e) => { const m = e.target.value; setCompression(m); setPresetState(m); }, children: PRESETS.map((m) => _jsx("option", { value: m, children: m }, m)) }), _jsx("span", { style: S.secMeta, children: preset === 'off' ? 'never offloads' : `offload > ${(thr / 1000).toFixed(1)} KB at this fill` })] })] })] }) }));
|
|
92
|
+
}
|
|
93
|
+
function Legend({ c, k, v }) {
|
|
94
|
+
return _jsxs("span", { style: S.legItem, children: [_jsx("span", { style: { ...S.legDot, background: c } }), k, " ", _jsx("span", { style: S.legVal, children: v })] });
|
|
95
|
+
}
|
|
96
|
+
const mono = 'var(--font-mono)';
|
|
97
|
+
const S = {
|
|
98
|
+
panel: { flex: 1, minHeight: 0, minWidth: 0, display: 'flex', flexDirection: 'column', background: 'var(--surface-1)' },
|
|
99
|
+
body: { flex: 1, minHeight: 0, padding: 16, overflowY: 'auto', display: 'flex', flexDirection: 'column', gap: 16 },
|
|
100
|
+
section: { display: 'flex', flexDirection: 'column', gap: 8 },
|
|
101
|
+
rowHead: { display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 10 },
|
|
102
|
+
secLabel: { fontSize: 'var(--fs-eyebrow)', fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.08em', color: 'var(--text-tertiary)' },
|
|
103
|
+
secMeta: { fontSize: 11.5, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
|
|
104
|
+
actions: { display: 'inline-flex', alignItems: 'center', gap: 8 },
|
|
105
|
+
// budget
|
|
106
|
+
budgetHead: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' },
|
|
107
|
+
bigNum: { fontSize: 22, fontWeight: 700, color: 'var(--text-primary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums', letterSpacing: '-0.01em' },
|
|
108
|
+
bigDim: { color: 'var(--text-tertiary)', fontWeight: 500, fontSize: 15 },
|
|
109
|
+
pctChip: { fontSize: 12, fontWeight: 700, fontFamily: mono, color: 'var(--text-secondary)', background: 'var(--surface-3, var(--surface-2))', borderRadius: 'var(--radius-pill, 999px)', padding: '2px 9px' },
|
|
110
|
+
pctOver: { color: 'var(--danger)', background: 'var(--danger-soft)' },
|
|
111
|
+
barStack: { display: 'flex', height: 10, borderRadius: 999, background: 'var(--surface-3)', overflow: 'hidden' },
|
|
112
|
+
seg: { height: '100%', transition: 'width var(--motion-fast)' },
|
|
113
|
+
legend: { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 12 },
|
|
114
|
+
legItem: { display: 'inline-flex', alignItems: 'center', gap: 5, fontSize: 11.5, color: 'var(--text-secondary)' },
|
|
115
|
+
legDot: { width: 8, height: 8, borderRadius: 2, flexShrink: 0 },
|
|
116
|
+
legVal: { color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
|
|
117
|
+
lastRun: { marginLeft: 'auto', fontSize: 11, color: 'var(--text-disabled)', fontFamily: mono },
|
|
118
|
+
estNote: { fontSize: 10.5, color: 'var(--text-disabled)' },
|
|
119
|
+
// system chips
|
|
120
|
+
sourceLine: { fontSize: 11.5, color: 'var(--text-secondary)' },
|
|
121
|
+
sourceDim: { color: 'var(--text-tertiary)' },
|
|
122
|
+
sourceCode: { fontFamily: mono, fontSize: 11, color: 'var(--text-primary)', background: 'var(--surface-3, var(--surface-2))', borderRadius: 'var(--radius-xs, 3px)', padding: '1px 5px' },
|
|
123
|
+
chips: { display: 'flex', flexWrap: 'wrap', gap: 7 },
|
|
124
|
+
chip: (on) => ({ display: 'inline-flex', alignItems: 'center', gap: 6, padding: '5px 10px', borderRadius: 'var(--radius-sm)', border: `1px solid ${on ? 'var(--border-accent, var(--accent))' : 'var(--border-subtle)'}`, background: on ? 'var(--accent-soft)' : 'transparent', color: on ? 'var(--text-primary)' : 'var(--text-tertiary)', fontSize: 12.5, fontWeight: 600, cursor: 'pointer' }),
|
|
125
|
+
chipDot: (on) => ({ width: 7, height: 7, borderRadius: 999, background: on ? 'var(--accent)' : 'var(--border-default)' }),
|
|
126
|
+
// turns
|
|
127
|
+
miniBtn: { display: 'inline-flex', alignItems: 'center', gap: 4, height: 22, padding: '0 8px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-secondary)', fontSize: 11, fontWeight: 600, cursor: 'pointer' },
|
|
128
|
+
list: { display: 'flex', flexDirection: 'column', gap: 4, maxHeight: 220, overflowY: 'auto' },
|
|
129
|
+
empty: { fontSize: 12.5, color: 'var(--text-tertiary)', lineHeight: 1.5, padding: '4px 2px' },
|
|
130
|
+
turn: (inc) => ({ display: 'flex', alignItems: 'center', gap: 9, textAlign: 'left', padding: '8px 10px', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: inc ? 'var(--surface-2)' : 'transparent', color: inc ? 'var(--text-primary)' : 'var(--text-disabled)', cursor: 'pointer', opacity: inc ? 1 : 0.65 }),
|
|
131
|
+
check: (inc) => ({ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 16, height: 16, flexShrink: 0, borderRadius: 'var(--radius-xs)', border: `1px solid ${inc ? 'var(--accent)' : 'var(--border-default)'}`, background: inc ? 'var(--accent-soft)' : 'transparent', color: 'var(--accent)' }),
|
|
132
|
+
turnText: { flex: 1, fontSize: 12.5, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
|
|
133
|
+
turnMeta: { fontSize: 11, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums', flexShrink: 0 },
|
|
134
|
+
// compressed
|
|
135
|
+
frozenWrap: { display: 'flex', flexDirection: 'column', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', overflow: 'hidden' },
|
|
136
|
+
frozen: { display: 'flex', alignItems: 'center', gap: 7, padding: '7px 10px', border: 0, background: 'transparent', color: 'var(--text-secondary)', cursor: 'pointer', width: '100%', textAlign: 'left' },
|
|
137
|
+
chev: { display: 'inline-flex', color: 'var(--text-tertiary)', transition: 'transform var(--motion-fast)', flexShrink: 0 },
|
|
138
|
+
frozenName: { fontSize: 12.5, fontWeight: 600, color: 'var(--text-primary)', fontFamily: mono },
|
|
139
|
+
frozenMeta: { marginLeft: 'auto', fontSize: 11, color: 'var(--text-tertiary)', fontFamily: mono, fontVariantNumeric: 'tabular-nums' },
|
|
140
|
+
preview: { margin: 0, padding: '8px 10px', borderTop: '1px solid var(--border-subtle)', background: 'var(--surface-1)', color: 'var(--text-secondary)', fontFamily: mono, fontSize: 11, lineHeight: 1.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 160, overflowY: 'auto' },
|
|
141
|
+
// compression
|
|
142
|
+
compRow: { display: 'flex', alignItems: 'center', gap: 10 },
|
|
143
|
+
select: { height: 30, padding: '0 8px', border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-2)', color: 'var(--text-primary)', fontSize: 12.5, fontFamily: 'inherit', fontWeight: 600, cursor: 'pointer', textTransform: 'capitalize' },
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=ContextManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../ContextManager.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAqB,MAAM,uCAAuC,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAwB,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAoB,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE3E;;;;;;;;qDAQqD;AAErD,MAAM,KAAK,GAA6D;IACtE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9C,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;IACxC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE;IACpD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,sCAAsC;CACjF,CAAC;AACF,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,oDAAoD;AAC9E,MAAM,OAAO,GAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAErF,SAAS,UAAU,CAAC,CAAmB;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;QAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7G,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AACD,SAAS,SAAS,CAAC,CAAmB;IACpC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAAqB,EAAE,KAAkB;IAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpK,MAAM,OAAO,GAAG,CAAC,GAAsB,EAAU,EAAE,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAChI,MAAM,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACrC,OAAO;QACL,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS;QACvD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACrD,IAAI,EAAE,SAAS,GAAG,aAAa;QAC/B,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAO3F;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkB,cAAc,CAAC,CAAC;IAC3E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAc,cAAc,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC;IACtC,MAAM,UAAU,GAAG,CAAC,CAAoB,EAAE,EAAE;QAC1C,IAAI,QAAQ;YAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;;YACrB,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAE7D,oFAAoF;IACpF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzI,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG;QAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9G,OAAO,CACL,cAAK,KAAK,EAAE,CAAC,CAAC,KAAK,YACjB,eAAK,KAAK,EAAE,CAAC,CAAC,IAAI,aAGhB,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,eAAK,KAAK,EAAE,CAAC,CAAC,UAAU,aACtB,gBAAM,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAC,iCAAiC,aAAE,MAAM,CAAC,SAAS,CAAC,EAAC,gBAAM,KAAK,EAAE,CAAC,CAAC,MAAM,oBAAM,MAAM,CAAC,aAAa,CAAC,IAAQ,IAAO,EACjJ,gBAAM,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,aAAG,GAAG,SAAS,IACtE,EACN,eAAK,KAAK,EAAE,CAAC,CAAC,QAAQ,aACpB,cAAK,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,UAAU,MAAM,CAAC,SAAS,CAAC,EAAE,GAAI,EACpH,cAAK,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,UAAU,EAAE,4BAA4B,EAAE,EAAE,KAAK,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAI,IACjI,EACN,eAAK,KAAK,EAAE,CAAC,CAAC,MAAM,aAClB,KAAC,MAAM,IAAC,CAAC,EAAC,eAAe,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,GAAI,EAC7D,KAAC,MAAM,IAAC,CAAC,EAAC,4BAA4B,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAI,EACxE,KAAC,MAAM,IAAC,CAAC,EAAC,kBAAkB,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC,GAAI,EAC3F,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,YAAG,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,GAAQ,IAC9F,EACN,cAAK,KAAK,EAAE,CAAC,CAAC,OAAO,6EAA+D,IAChF,EAGN,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aAAE,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,8BAAsB,EAAA,gBAAM,KAAK,EAAE,CAAC,CAAC,OAAO,kBAAI,MAAM,CAAC,SAAS,CAAC,IAAQ,IAAM,EAC5H,YAAY,IAAI,CACf,eAAK,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAC,8CAA8C,aAC5E,eAAM,KAAK,EAAE,CAAC,CAAC,SAAS,wBAAgB,OAAC,eAAM,KAAK,EAAE,CAAC,CAAC,UAAU,YAAG,YAAY,GAAQ,IACrF,CACP,EACD,eAAK,KAAK,EAAE,CAAC,CAAC,KAAK,aAChB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAC7B,kBAAkB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,WAAW,EAAE,UAAU,aAC1M,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAI,EAAC,KAAK,KADjC,GAAG,CAEP,CACV,CAAC,EACF,kBACE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EACvC,KAAK,EAAE,KAAK,CAAC,UAAU;wCACrB,CAAC,CAAC,8FAA8F;wCAChG,CAAC,CAAC,6GAA6G,aAEjH,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAI,uBACrC,IACL,EACL,KAAK,CAAC,UAAU,IAAI,cAAK,KAAK,EAAE,CAAC,CAAC,OAAO,2FAA6E,IACnH,EAGN,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,gBAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,mCAAgB,aAAa,OAAG,KAAK,CAAC,MAAM,IAAQ,EAC3E,gBAAM,KAAK,EAAE,CAAC,CAAC,OAAO,aACpB,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,YAAG,MAAM,CAAC,QAAQ,CAAC,GAAQ,EAChD,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,8BAAE,iBAAQ,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAc,EAAA,iBAAQ,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAe,IAAG,IAC7J,IACH,EACN,eAAK,KAAK,EAAE,CAAC,CAAC,IAAI,aACf,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,cAAK,KAAK,EAAE,CAAC,CAAC,KAAK,gHAAkG,EAC3I,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAC3B,kBAAmB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,mBAAmB,aACpK,eAAM,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAG,CAAC,CAAC,QAAQ,IAAI,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,GAAQ,EAC9E,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,SAAS,CAAC,CAAC,CAAC,GAAQ,EAC9C,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,MAAM,CAAC,GAAG,CAAC,GAAQ,KAHlC,CAAC,CAAC,EAAE,CAIR,CACV,CAAC,IACE,IACF,EAGN,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,gBAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,mCAAgB,SAAS,CAAC,MAAM,IAAQ,EAC/D,gBAAM,KAAK,EAAE,CAAC,CAAC,OAAO,aACpB,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,YAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAQ,EACvG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAQ,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAE,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,cAAe,IACnI,IACH,EACN,eAAK,KAAK,EAAE,CAAC,CAAC,IAAI,aACf,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,cAAK,KAAK,EAAE,CAAC,CAAC,KAAK,kHAAoG,EACjJ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,eAAgB,KAAK,EAAE,CAAC,CAAC,UAAU,aACjC,kBAAQ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAC,2BAA2B,aACvH,eAAM,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,YAAE,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,GAAO,EACnH,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,EACnB,eAAM,KAAK,EAAE,CAAC,CAAC,UAAU,YAAG,CAAC,CAAC,QAAQ,GAAQ,EAC9C,gBAAM,KAAK,EAAE,CAAC,CAAC,UAAU,aAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAC3D,EACR,QAAQ,KAAK,CAAC,CAAC,EAAE,IAAI,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAO,KAPvG,CAAC,CAAC,EAAE,CAQR,CACP,CAAC,IACE,IACF,EAGN,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,cAAK,KAAK,EAAE,CAAC,CAAC,OAAO,YAAE,eAAM,KAAK,EAAE,CAAC,CAAC,QAAQ,4BAAoB,GAAM,EACxE,eAAK,KAAK,EAAE,CAAC,CAAC,OAAO,aACnB,iBAAQ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAwB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAC5I,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAgB,KAAK,EAAE,CAAC,YAAG,CAAC,IAAf,CAAC,CAAwB,CAAC,GACpD,EACT,eAAM,KAAK,EAAE,CAAC,CAAC,OAAO,YAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,GAAQ,IACzH,IACF,IAEF,GACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAuC;IAC9D,OAAO,gBAAM,KAAK,EAAE,CAAC,CAAC,OAAO,aAAE,eAAM,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAI,EAAC,CAAC,OAAE,eAAM,KAAK,EAAE,CAAC,CAAC,MAAM,YAAG,CAAC,GAAQ,IAAO,CAAC;AAC7H,CAAC;AAED,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,CAAC,GAAwB;IAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE;IACvH,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;IAClH,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;IAC7D,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,EAAE,EAAE;IAC9F,QAAQ,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAChJ,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE;IAChH,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;IACjE,SAAS;IACT,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE;IACtF,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE;IACvJ,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,oCAAoC,EAAE,YAAY,EAAE,2BAA2B,EAAE,OAAO,EAAE,SAAS,EAAE;IAC7M,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACrE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChH,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAC/D,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;IAC5E,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE;IACjH,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;IAC/D,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE;IAC/F,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;IAC9F,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC1D,eAAe;IACf,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAC9D,SAAS,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC5C,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,oCAAoC,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAE,SAAS,EAAE;IACzL,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;IACpD,IAAI,EAAE,CAAC,EAAW,EAAuB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACha,OAAO,EAAE,CAAC,EAAW,EAAuB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IACvJ,QAAQ;IACR,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7R,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;IAC7F,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE;IAC7F,IAAI,EAAE,CAAC,GAAY,EAAuB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnX,KAAK,EAAE,CAAC,GAAY,EAAuB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC1V,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;IACzG,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE;IAC9H,aAAa;IACb,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,gCAAgC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxL,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;IACzM,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC,EAAE;IAC1H,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;IAC/F,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,cAAc,EAAE;IACrI,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;IAC7R,cAAc;IACd,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;IAC3D,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iCAAiC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE;CAC5R,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../Lightbox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBAa9E"}
|
package/dist/Lightbox.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* Full-screen image preview. Click a thumbnail anywhere in the chat (composer
|
|
3
|
+
* attachment or a sent message) to expand here; close with the ✕, Escape, or by
|
|
4
|
+
* clicking the backdrop. Overlay blur + fade per the design system. */
|
|
5
|
+
import { useEffect } from 'react';
|
|
6
|
+
import { IcX } from '@corenel/ui-kit/icons';
|
|
7
|
+
export function Lightbox({ src, onClose }) {
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const onKey = (e) => { if (e.key === 'Escape')
|
|
10
|
+
onClose(); };
|
|
11
|
+
document.addEventListener('keydown', onKey);
|
|
12
|
+
return () => document.removeEventListener('keydown', onKey);
|
|
13
|
+
}, [onClose]);
|
|
14
|
+
return (_jsxs("div", { style: S.backdrop, className: "lightbox", onMouseDown: (e) => { if (e.target === e.currentTarget)
|
|
15
|
+
onClose(); }, children: [_jsx("button", { style: S.close, onClick: onClose, "aria-label": "Close preview", children: _jsx(IcX, { size: 20 }) }), _jsx("img", { src: src, alt: "Preview", style: S.img })] }));
|
|
16
|
+
}
|
|
17
|
+
const S = {
|
|
18
|
+
backdrop: { position: 'fixed', inset: 0, zIndex: 1100, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 32, background: 'var(--surface-overlay, rgba(8,12,20,0.72))', backdropFilter: 'blur(4px)' },
|
|
19
|
+
close: { position: 'absolute', top: 16, right: 16, display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 36, height: 36, border: '1px solid var(--border-default)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', color: 'var(--text-primary)', cursor: 'pointer' },
|
|
20
|
+
img: { maxWidth: '92vw', maxHeight: '88vh', objectFit: 'contain', borderRadius: 'var(--radius-lg)', boxShadow: 'var(--shadow-5, 0 24px 64px rgba(0,0,0,0.5))' },
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=Lightbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../Lightbox.tsx"],"names":[],"mappings":";AAAA;;uEAEuE;AACvE,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAwC;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3E,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,eAAK,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAC,UAAU,EAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC,CAAC,CAAC,aAC/G,iBAAQ,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,gBAAa,eAAe,YAAC,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,EAC/F,cAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,SAAS,EAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAI,IACzC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,GAAwC;IAC7C,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,4CAA4C,EAAE,cAAc,EAAE,WAAW,EAAE;IAC5N,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE;IAChT,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,8CAA8C,EAAE;CAChK,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function CopyBtn({ text, title }: {
|
|
3
|
+
text: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
export declare function CodeBlock({ lang, code }: {
|
|
7
|
+
lang: string;
|
|
8
|
+
code: string;
|
|
9
|
+
}): React.JSX.Element;
|
|
10
|
+
export declare function Markdown({ text }: {
|
|
11
|
+
text: string;
|
|
12
|
+
}): React.JSX.Element;
|
|
13
|
+
/** Render a model's OUTPUT richly: a response that is ENTIRELY a JSON payload or a
|
|
14
|
+
* bare mermaid diagram (no ``` fence — the common case when a prompt's whole job is
|
|
15
|
+
* to emit one) renders as a pretty/highlighted block or a diagram; anything else
|
|
16
|
+
* (prose, or text with fenced blocks) goes through Markdown, which already turns
|
|
17
|
+
* ```json / ```mermaid fences into the same rich blocks. */
|
|
18
|
+
export declare function RichOutput({ text }: {
|
|
19
|
+
text: string;
|
|
20
|
+
}): React.JSX.Element | null;
|
|
21
|
+
/** Render a tool's result with the most useful view for its content/type. */
|
|
22
|
+
export declare function RichResult({ name, args, result }: {
|
|
23
|
+
name: string;
|
|
24
|
+
args: Record<string, unknown>;
|
|
25
|
+
result: string;
|
|
26
|
+
}): React.JSX.Element;
|
|
27
|
+
//# sourceMappingURL=RichContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RichContent.d.ts","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAuEpE,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAc,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,qBAUjF;AAyCD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,qBA2BvE;AAkBD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,qBASlD;AAaD;;;;4DAI4D;AAC5D,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,4BASpD;AAKD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,qBAkBjH"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* Rich rendering for chat content — markdown, fenced code (JSON / JS / YAML / …),
|
|
3
|
+
* and mermaid diagrams — so the transcript shows results instead of raw dumps.
|
|
4
|
+
*
|
|
5
|
+
* - Markdown: splits ``` fences out of the prose so each code block renders as a
|
|
6
|
+
* real CodeBlock (and ```mermaid as a diagram); the prose runs through mdToHtml.
|
|
7
|
+
* - CodeBlock: a titled, copyable block with lightweight, dependency-free syntax
|
|
8
|
+
* highlighting (JSON gets a dedicated tokenizer; everything else a conservative
|
|
9
|
+
* strings/comments/numbers/keywords pass) and reuses the editor's token palette.
|
|
10
|
+
* - DiagramBlock: lazy-loads mermaid (kept out of the main bundle) and renders the
|
|
11
|
+
* SVG, falling back to the source on a parse error.
|
|
12
|
+
* - RichResult: picks the right renderer for a tool result from the tool + path. */
|
|
13
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
14
|
+
import { mdToHtml, highlightPrmd } from '@corenel/ui-kit/ui-helpers';
|
|
15
|
+
import { getTheme } from '@corenel/ui-kit/theme';
|
|
16
|
+
import { colorizeToHtml } from '@corenel/ui-kit/monacoColorize';
|
|
17
|
+
import { IcCopy, IcCheck } from '@corenel/ui-kit/icons';
|
|
18
|
+
const esc = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
19
|
+
/** Mermaid graph headers — used to detect a diagram with no explicit ```mermaid fence. */
|
|
20
|
+
const MERMAID_RE = /^\s*(?:graph|flowchart|sequenceDiagram|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|gantt|pie|mindmap|timeline|gitGraph|quadrantChart|requirementDiagram|C4Context|sankey-beta|xychart-beta)\b/;
|
|
21
|
+
function looksJson(s) {
|
|
22
|
+
const t = s.trim();
|
|
23
|
+
if (!(t.startsWith('{') || t.startsWith('[')))
|
|
24
|
+
return false;
|
|
25
|
+
try {
|
|
26
|
+
JSON.parse(t);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function prettyJson(s) { try {
|
|
34
|
+
return JSON.stringify(JSON.parse(s), null, 2);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return s;
|
|
38
|
+
} }
|
|
39
|
+
/* ---- highlighters (HTML strings; classes reuse the editor token palette) ---- */
|
|
40
|
+
/** JSON: keys vs string values, numbers, and literals get distinct tokens. */
|
|
41
|
+
function highlightJson(src) {
|
|
42
|
+
const re = /"(?:\\.|[^"\\])*"(\s*:)?|-?\b\d+\.?\d*(?:[eE][+-]?\d+)?\b|\b(?:true|false|null)\b/g;
|
|
43
|
+
let out = '';
|
|
44
|
+
let last = 0;
|
|
45
|
+
let m;
|
|
46
|
+
while ((m = re.exec(src))) {
|
|
47
|
+
out += esc(src.slice(last, m.index));
|
|
48
|
+
const tok = m[0];
|
|
49
|
+
if (tok.startsWith('"')) {
|
|
50
|
+
if (m[1])
|
|
51
|
+
out += `<span class=k>${esc(tok.slice(0, tok.length - m[1].length))}</span>${esc(m[1])}`;
|
|
52
|
+
else
|
|
53
|
+
out += `<span class=s>${esc(tok)}</span>`;
|
|
54
|
+
}
|
|
55
|
+
else if (/^(?:true|false|null)$/.test(tok))
|
|
56
|
+
out += `<span class=k>${esc(tok)}</span>`;
|
|
57
|
+
else
|
|
58
|
+
out += `<span class=cn>${esc(tok)}</span>`;
|
|
59
|
+
last = re.lastIndex;
|
|
60
|
+
}
|
|
61
|
+
out += esc(src.slice(last));
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
const KEYWORDS = new Set('const let var function return if else for while do switch case break continue new class extends import from export default async await try catch finally throw typeof instanceof in of this super yield void delete public private protected static interface type enum namespace as def elif lambda print None True False and or not nil func package range select go defer map struct fn impl pub use mod match'.split(' '));
|
|
65
|
+
const HASH_COMMENT_LANGS = new Set(['yaml', 'yml', 'sh', 'bash', 'shell', 'py', 'python', 'rb', 'ruby', 'toml', 'ini', 'conf', 'r', 'pl']);
|
|
66
|
+
/** A conservative, language-agnostic pass: comments, strings, numbers, keywords.
|
|
67
|
+
* Single regex alternation in priority order so tokens never nest or double-escape. */
|
|
68
|
+
function highlightCode(src, lang) {
|
|
69
|
+
const hash = HASH_COMMENT_LANGS.has(lang) ? '|#[^\\n]*' : '';
|
|
70
|
+
const re = new RegExp(`(\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\/${hash})|("(?:\\\\.|[^"\\\\])*"|'(?:\\\\.|[^'\\\\])*'|\`(?:\\\\.|[^\`\\\\])*\`)|(\\b-?\\d+\\.?\\d*(?:[eE][+-]?\\d+)?\\b)|([A-Za-z_$][\\w$]*)`, 'g');
|
|
71
|
+
let out = '';
|
|
72
|
+
let last = 0;
|
|
73
|
+
let m;
|
|
74
|
+
while ((m = re.exec(src))) {
|
|
75
|
+
out += esc(src.slice(last, m.index));
|
|
76
|
+
if (m[1])
|
|
77
|
+
out += `<span class=cm>${esc(m[1])}</span>`;
|
|
78
|
+
else if (m[2])
|
|
79
|
+
out += `<span class=s>${esc(m[2])}</span>`;
|
|
80
|
+
else if (m[3])
|
|
81
|
+
out += `<span class=cn>${esc(m[3])}</span>`;
|
|
82
|
+
else if (m[4] && KEYWORDS.has(m[4]))
|
|
83
|
+
out += `<span class=k>${esc(m[4])}</span>`;
|
|
84
|
+
else
|
|
85
|
+
out += esc(m[0]);
|
|
86
|
+
last = re.lastIndex;
|
|
87
|
+
}
|
|
88
|
+
out += esc(src.slice(last));
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
function highlight(lang, code) {
|
|
92
|
+
if (lang === 'json' || (!lang && looksJson(code)))
|
|
93
|
+
return highlightJson(code);
|
|
94
|
+
if (lang === 'prmd' || lang === 'prompd')
|
|
95
|
+
return highlightPrmd(code);
|
|
96
|
+
return highlightCode(code, lang);
|
|
97
|
+
}
|
|
98
|
+
/* ---- copy button ---- */
|
|
99
|
+
export function CopyBtn({ text, title = 'Copy' }) {
|
|
100
|
+
const [done, setDone] = useState(false);
|
|
101
|
+
const copy = () => {
|
|
102
|
+
navigator.clipboard?.writeText(text).then(() => { setDone(true); setTimeout(() => setDone(false), 1200); }).catch(() => { });
|
|
103
|
+
};
|
|
104
|
+
return (_jsx("button", { style: S.copyBtn, onClick: copy, title: title, "aria-label": title, children: done ? _jsx(IcCheck, { size: 12 }) : _jsx(IcCopy, { size: 12 }) }));
|
|
105
|
+
}
|
|
106
|
+
let mermaidReady = null;
|
|
107
|
+
function loadMermaid() {
|
|
108
|
+
if (!mermaidReady) {
|
|
109
|
+
mermaidReady = import('mermaid').then((m) => {
|
|
110
|
+
const api = m.default;
|
|
111
|
+
api.initialize({ startOnLoad: false, securityLevel: 'strict', theme: getTheme() === 'light' ? 'default' : 'dark' });
|
|
112
|
+
return api;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return mermaidReady;
|
|
116
|
+
}
|
|
117
|
+
let mmdSeq = 0;
|
|
118
|
+
function DiagramBlock({ code }) {
|
|
119
|
+
const [svg, setSvg] = useState('');
|
|
120
|
+
const [err, setErr] = useState(false);
|
|
121
|
+
const idRef = useRef(`mmd-${++mmdSeq}`);
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
let alive = true;
|
|
124
|
+
setErr(false);
|
|
125
|
+
loadMermaid()
|
|
126
|
+
.then((m) => m.render(idRef.current, code))
|
|
127
|
+
.then(({ svg }) => { if (alive)
|
|
128
|
+
setSvg(svg); })
|
|
129
|
+
.catch(() => { if (alive)
|
|
130
|
+
setErr(true); });
|
|
131
|
+
return () => { alive = false; };
|
|
132
|
+
}, [code]);
|
|
133
|
+
if (err)
|
|
134
|
+
return _jsx("pre", { style: S.pre, children: _jsx("code", { className: "cb-code", dangerouslySetInnerHTML: { __html: highlightCode(code, '') } }) });
|
|
135
|
+
if (!svg)
|
|
136
|
+
return _jsx("div", { style: S.diagramLoading, children: "rendering diagram\u2026" });
|
|
137
|
+
return (_jsxs("div", { style: S.diagramWrap, children: [_jsx("div", { style: S.diagram, className: "mermaid-diagram", dangerouslySetInnerHTML: { __html: svg } }), _jsxs("div", { style: S.diagramBar, children: [_jsx("span", { style: S.cbLang, children: "mermaid" }), _jsx(CopyBtn, { text: code, title: "Copy diagram source" })] })] }));
|
|
138
|
+
}
|
|
139
|
+
/* ---- code block ---- */
|
|
140
|
+
export function CodeBlock({ lang, code }) {
|
|
141
|
+
const isMermaid = lang === 'mermaid' || (!lang && MERMAID_RE.test(code.trim()));
|
|
142
|
+
// Immediate, synchronous highlight (dependency-free) — shown right away and kept
|
|
143
|
+
// as the fallback for languages Monaco's tokenizer doesn't cover.
|
|
144
|
+
const base = useMemo(() => (isMermaid ? '' : highlight(lang, code)), [isMermaid, lang, code]);
|
|
145
|
+
const [html, setHtml] = useState(base);
|
|
146
|
+
// Progressive enhancement: swap in Monaco's tokenizer output when it resolves
|
|
147
|
+
// (same engine + theme as the editor), and re-run on theme flips so colors track.
|
|
148
|
+
useEffect(() => {
|
|
149
|
+
setHtml(base);
|
|
150
|
+
if (isMermaid)
|
|
151
|
+
return;
|
|
152
|
+
let alive = true;
|
|
153
|
+
const enhance = () => {
|
|
154
|
+
colorizeToHtml(code, lang || (looksJson(code) ? 'json' : '')).then((mh) => { if (alive && mh)
|
|
155
|
+
setHtml(mh); });
|
|
156
|
+
};
|
|
157
|
+
enhance();
|
|
158
|
+
window.addEventListener('prompd:theme-changed', enhance);
|
|
159
|
+
return () => { alive = false; window.removeEventListener('prompd:theme-changed', enhance); };
|
|
160
|
+
}, [base, isMermaid, lang, code]);
|
|
161
|
+
if (isMermaid)
|
|
162
|
+
return _jsx(DiagramBlock, { code: code.trim() });
|
|
163
|
+
const shown = lang || (looksJson(code) ? 'json' : 'text');
|
|
164
|
+
return (_jsxs("div", { style: S.cbWrap, children: [_jsxs("div", { style: S.cbBar, children: [_jsx("span", { style: S.cbLang, children: shown }), _jsx(CopyBtn, { text: code, title: "Copy code" })] }), _jsx("pre", { style: S.cbPre, children: _jsx("code", { className: "cb-code", dangerouslySetInnerHTML: { __html: html } }) })] }));
|
|
165
|
+
}
|
|
166
|
+
function splitFences(text) {
|
|
167
|
+
const out = [];
|
|
168
|
+
const re = /```([\w-]*)\n([\s\S]*?)```/g;
|
|
169
|
+
let last = 0;
|
|
170
|
+
let m;
|
|
171
|
+
while ((m = re.exec(text))) {
|
|
172
|
+
if (m.index > last) {
|
|
173
|
+
const t = text.slice(last, m.index);
|
|
174
|
+
if (t.trim())
|
|
175
|
+
out.push({ type: 'md', text: t });
|
|
176
|
+
}
|
|
177
|
+
out.push({ type: 'code', lang: (m[1] || '').toLowerCase(), code: m[2].replace(/\n$/, '') });
|
|
178
|
+
last = re.lastIndex;
|
|
179
|
+
}
|
|
180
|
+
if (last < text.length) {
|
|
181
|
+
const t = text.slice(last);
|
|
182
|
+
if (t.trim())
|
|
183
|
+
out.push({ type: 'md', text: t });
|
|
184
|
+
}
|
|
185
|
+
return out.length ? out : [{ type: 'md', text }];
|
|
186
|
+
}
|
|
187
|
+
export function Markdown({ text }) {
|
|
188
|
+
const blocks = useMemo(() => splitFences(text), [text]);
|
|
189
|
+
return (_jsx("div", { className: "agent-md", style: S.md, children: blocks.map((b, i) => (b.type === 'code'
|
|
190
|
+
? _jsx(CodeBlock, { lang: b.lang, code: b.code }, i)
|
|
191
|
+
: _jsx("div", { dangerouslySetInnerHTML: { __html: mdToHtml(b.text) } }, i))) }));
|
|
192
|
+
}
|
|
193
|
+
/* ---- free-form output ---- */
|
|
194
|
+
/** Stricter than MERMAID_RE for whole-output detection: the FIRST line must be a
|
|
195
|
+
* clean mermaid header (case-sensitive — the keywords are lowercase/camelCase), so
|
|
196
|
+
* prose that merely starts with a word like "Timeline:", "Pie charts…", or "Graph
|
|
197
|
+
* of results" isn't mistaken for a diagram. Fenced ```mermaid still renders via
|
|
198
|
+
* Markdown -> CodeBlock regardless. */
|
|
199
|
+
const MERMAID_HEADER = /^(?:sequenceDiagram|classDiagram|stateDiagram(?:-v2)?|erDiagram|journey|gitGraph|mindmap|timeline|quadrantChart|requirementDiagram|C4Context|sankey-beta|xychart-beta)\s*$|^(?:graph|flowchart)\s+(?:TB|TD|BT|RL|LR)\b|^pie(?:\s+(?:title|showData)\b|\s*$)|^gantt\s*$/;
|
|
200
|
+
function looksBareMermaid(s) {
|
|
201
|
+
return MERMAID_HEADER.test((s.split('\n', 1)[0] || '').trim());
|
|
202
|
+
}
|
|
203
|
+
/** Render a model's OUTPUT richly: a response that is ENTIRELY a JSON payload or a
|
|
204
|
+
* bare mermaid diagram (no ``` fence — the common case when a prompt's whole job is
|
|
205
|
+
* to emit one) renders as a pretty/highlighted block or a diagram; anything else
|
|
206
|
+
* (prose, or text with fenced blocks) goes through Markdown, which already turns
|
|
207
|
+
* ```json / ```mermaid fences into the same rich blocks. */
|
|
208
|
+
export function RichOutput({ text }) {
|
|
209
|
+
const t = (text || '').trim();
|
|
210
|
+
if (!t)
|
|
211
|
+
return null;
|
|
212
|
+
if (looksBareMermaid(t))
|
|
213
|
+
return _jsx(DiagramBlock, { code: t });
|
|
214
|
+
// Parse once: a whole-output JSON object/array renders as a pretty code block.
|
|
215
|
+
if (t.startsWith('{') || t.startsWith('[')) {
|
|
216
|
+
try {
|
|
217
|
+
return _jsx(CodeBlock, { lang: "json", code: JSON.stringify(JSON.parse(t), null, 2) });
|
|
218
|
+
}
|
|
219
|
+
catch { /* not JSON — fall through to prose */ }
|
|
220
|
+
}
|
|
221
|
+
return _jsx(Markdown, { text: text });
|
|
222
|
+
}
|
|
223
|
+
/* ---- tool result ---- */
|
|
224
|
+
const CODE_EXT = new Set(['js', 'jsx', 'ts', 'tsx', 'css', 'scss', 'less', 'html', 'xml', 'svg', 'yaml', 'yml', 'py', 'sh', 'bash', 'go', 'rs', 'java', 'c', 'cpp', 'h', 'toml', 'ini', 'sql', 'rb', 'php', 'json5']);
|
|
225
|
+
/** Render a tool's result with the most useful view for its content/type. */
|
|
226
|
+
export function RichResult({ name, args, result }) {
|
|
227
|
+
const r = result || '';
|
|
228
|
+
if (!r)
|
|
229
|
+
return _jsx("pre", { style: S.pre, children: "(empty)" });
|
|
230
|
+
if (/^error:/i.test(r.trim()))
|
|
231
|
+
return _jsx("pre", { style: S.preErr, children: r });
|
|
232
|
+
// The compiled prompt is meant to be read — render it as markdown.
|
|
233
|
+
if (name === 'compile_prompd')
|
|
234
|
+
return _jsx(Markdown, { text: r });
|
|
235
|
+
if (MERMAID_RE.test(r.trim()))
|
|
236
|
+
return _jsx(DiagramBlock, { code: r.trim() });
|
|
237
|
+
if (looksJson(r))
|
|
238
|
+
return _jsx(CodeBlock, { lang: "json", code: prettyJson(r) });
|
|
239
|
+
if (name === 'read_file') {
|
|
240
|
+
const ext = (typeof args.path === 'string' ? args.path.split('.').pop() || '' : '').toLowerCase();
|
|
241
|
+
if (ext === 'md' || ext === 'markdown')
|
|
242
|
+
return _jsx(Markdown, { text: r });
|
|
243
|
+
if (ext === 'json')
|
|
244
|
+
return _jsx(CodeBlock, { lang: "json", code: r });
|
|
245
|
+
if (ext === 'prmd' || ext === 'prompd')
|
|
246
|
+
return _jsx(CodeBlock, { lang: "prmd", code: r });
|
|
247
|
+
if (CODE_EXT.has(ext))
|
|
248
|
+
return _jsx(CodeBlock, { lang: ext, code: r });
|
|
249
|
+
}
|
|
250
|
+
return _jsx("pre", { style: S.pre, children: r });
|
|
251
|
+
}
|
|
252
|
+
const mono = 'var(--font-mono)';
|
|
253
|
+
const S = {
|
|
254
|
+
md: { fontSize: 14, lineHeight: 1.6, color: 'var(--text-primary)' },
|
|
255
|
+
cbWrap: { border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', overflow: 'hidden', margin: '0 0 8px' },
|
|
256
|
+
cbBar: { display: 'flex', alignItems: 'center', height: 26, padding: '0 6px 0 10px', borderBottom: '1px solid var(--border-subtle)', background: 'var(--surface-2)' },
|
|
257
|
+
cbLang: { fontFamily: mono, fontSize: 10.5, textTransform: 'uppercase', letterSpacing: '0.06em', color: 'var(--text-tertiary)', marginRight: 'auto' },
|
|
258
|
+
cbPre: { margin: 0, padding: 10, fontFamily: mono, fontSize: 11.5, lineHeight: 1.55, color: 'var(--text-secondary)', whiteSpace: 'pre', overflow: 'auto', maxHeight: 320 },
|
|
259
|
+
pre: { margin: 0, padding: 10, background: 'var(--surface-1)', border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', fontFamily: mono, fontSize: 11.5, lineHeight: 1.5, color: 'var(--text-secondary)', whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 320, overflow: 'auto' },
|
|
260
|
+
preErr: { margin: 0, padding: 10, background: 'var(--danger-soft)', border: '1px solid var(--danger)', borderRadius: 'var(--radius-sm)', fontFamily: mono, fontSize: 11.5, lineHeight: 1.5, color: 'var(--danger)', whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 320, overflow: 'auto' },
|
|
261
|
+
copyBtn: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 22, height: 22, border: 0, borderRadius: 'var(--radius-xs)', background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer', flexShrink: 0 },
|
|
262
|
+
diagramWrap: { border: '1px solid var(--border-subtle)', borderRadius: 'var(--radius-sm)', background: 'var(--surface-1)', overflow: 'hidden', margin: '0 0 8px' },
|
|
263
|
+
diagram: { display: 'flex', justifyContent: 'center', padding: 14, overflow: 'auto' },
|
|
264
|
+
diagramBar: { display: 'flex', alignItems: 'center', height: 26, padding: '0 6px 0 10px', borderTop: '1px solid var(--border-subtle)', background: 'var(--surface-2)' },
|
|
265
|
+
diagramLoading: { padding: 14, fontFamily: mono, fontSize: 11.5, color: 'var(--text-tertiary)', textAlign: 'center', border: '1px dashed var(--border-subtle)', borderRadius: 'var(--radius-sm)', margin: '0 0 8px' },
|
|
266
|
+
};
|
|
267
|
+
//# sourceMappingURL=RichContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RichContent.js","sourceRoot":"","sources":["../RichContent.tsx"],"names":[],"mappings":"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"}
|