@hanzo/ui 8.27.12 → 8.27.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/LICENSE-APACHE +205 -0
- package/LICENSE-MIT +21 -0
- package/LICENSE.md +5 -18
- package/NOTICE +6 -0
- package/README.md +2 -2
- package/dist/agents/ChannelMembers.cjs +10 -2
- package/dist/agents/ChannelMembers.d.ts +3 -2
- package/dist/agents/ChannelMembers.d.ts.map +1 -1
- package/dist/agents/ChannelMembers.js +10 -2
- package/dist/agents/ChannelMembers.js.map +1 -1
- package/dist/agents/ChannelNotes.cjs +10 -2
- package/dist/agents/ChannelNotes.d.ts +1 -0
- package/dist/agents/ChannelNotes.d.ts.map +1 -1
- package/dist/agents/ChannelNotes.js +10 -2
- package/dist/agents/ChannelNotes.js.map +1 -1
- package/dist/agents/DiffViewer.cjs +19 -7
- package/dist/agents/DiffViewer.d.ts +1 -0
- package/dist/agents/DiffViewer.d.ts.map +1 -1
- package/dist/agents/DiffViewer.js +19 -7
- package/dist/agents/DiffViewer.js.map +1 -1
- package/dist/agents/DirectoryModal.cjs +97 -0
- package/dist/agents/DirectoryModal.d.ts +29 -0
- package/dist/agents/DirectoryModal.d.ts.map +1 -0
- package/dist/agents/DirectoryModal.js +94 -0
- package/dist/agents/DirectoryModal.js.map +1 -0
- package/dist/agents/DriveViewer.cjs +78 -0
- package/dist/agents/DriveViewer.d.ts +30 -0
- package/dist/agents/DriveViewer.d.ts.map +1 -0
- package/dist/agents/DriveViewer.js +42 -0
- package/dist/agents/DriveViewer.js.map +1 -0
- package/dist/agents/LiveVoiceCall.cjs +55 -39
- package/dist/agents/LiveVoiceCall.d.ts +7 -7
- package/dist/agents/LiveVoiceCall.d.ts.map +1 -1
- package/dist/agents/LiveVoiceCall.js +56 -40
- package/dist/agents/LiveVoiceCall.js.map +1 -1
- package/dist/agents/MCPHub.cjs +19 -8
- package/dist/agents/MCPHub.d.ts +5 -10
- package/dist/agents/MCPHub.d.ts.map +1 -1
- package/dist/agents/MCPHub.js +19 -8
- package/dist/agents/MCPHub.js.map +1 -1
- package/dist/agents/ShortcutsSheet.cjs +34 -14
- package/dist/agents/ShortcutsSheet.d.ts +7 -6
- package/dist/agents/ShortcutsSheet.d.ts.map +1 -1
- package/dist/agents/ShortcutsSheet.js +34 -14
- package/dist/agents/ShortcutsSheet.js.map +1 -1
- package/dist/agents/SwarmBar.cjs +34 -13
- package/dist/agents/SwarmBar.d.ts +7 -8
- package/dist/agents/SwarmBar.d.ts.map +1 -1
- package/dist/agents/SwarmBar.js +34 -13
- package/dist/agents/SwarmBar.js.map +1 -1
- package/dist/agents/TerminalViewer.cjs +71 -0
- package/dist/agents/TerminalViewer.d.ts +20 -0
- package/dist/agents/TerminalViewer.d.ts.map +1 -0
- package/dist/agents/TerminalViewer.js +68 -0
- package/dist/agents/TerminalViewer.js.map +1 -0
- package/dist/agents/ThemeCustomizer.cjs +29 -6
- package/dist/agents/ThemeCustomizer.d.ts +1 -0
- package/dist/agents/ThemeCustomizer.d.ts.map +1 -1
- package/dist/agents/ThemeCustomizer.js +29 -6
- package/dist/agents/ThemeCustomizer.js.map +1 -1
- package/dist/agents/index.cjs +7 -1
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +3 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/backends/gui/3d-card.d.ts +2 -2
- package/dist/backends/gui/button.d.ts +8 -0
- package/dist/backends/gui/button.d.ts.map +1 -1
- package/dist/backends/gui/button.js.map +1 -1
- package/dist/backends/gui/calendar.js.map +1 -1
- package/dist/backends/gui/card.d.ts +2 -2
- package/dist/backends/gui/context-menu.d.ts +3 -3
- package/dist/backends/gui/context-menu.d.ts.map +1 -1
- package/dist/backends/gui/context-menu.js.map +1 -1
- package/dist/backends/gui/dropdown-menu.cjs +2 -2
- package/dist/backends/gui/dropdown-menu.d.ts +3 -3
- package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
- package/dist/backends/gui/dropdown-menu.js +2 -2
- package/dist/backends/gui/dropdown-menu.js.map +1 -1
- package/dist/backends/gui/empty.d.ts +2 -2
- package/dist/backends/gui/glimpse.cjs +2 -6
- package/dist/backends/gui/glimpse.d.ts +8 -1
- package/dist/backends/gui/glimpse.d.ts.map +1 -1
- package/dist/backends/gui/glimpse.js +2 -6
- package/dist/backends/gui/glimpse.js.map +1 -1
- package/dist/backends/gui/item.d.ts +1 -1
- package/dist/backends/gui/menubar.d.ts +3 -3
- package/dist/backends/gui/order-entry.cjs +1 -10
- package/dist/backends/gui/order-entry.d.ts.map +1 -1
- package/dist/backends/gui/order-entry.js +1 -10
- package/dist/backends/gui/order-entry.js.map +1 -1
- package/dist/backends/gui/orders-history.cjs +1 -1
- package/dist/backends/gui/orders-history.js +1 -1
- package/dist/backends/gui/orders-history.js.map +1 -1
- package/dist/backends/gui/select.cjs +1 -1
- package/dist/backends/gui/select.d.ts +1 -1
- package/dist/backends/gui/select.d.ts.map +1 -1
- package/dist/backends/gui/select.js +1 -1
- package/dist/backends/gui/select.js.map +1 -1
- package/dist/backends/gui/toaster.d.ts +1 -1
- package/dist/backends/gui/toaster.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.cjs +3 -3
- package/dist/backends/gui/toggle-group.d.ts +1 -1
- package/dist/backends/gui/toggle-group.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.js +3 -3
- package/dist/backends/gui/toggle-group.js.map +1 -1
- package/dist/gallery.html +58 -3
- package/dist/styles/motion.css +57 -2
- package/dist/styles.css +57 -2
- package/package.json +21 -19
|
@@ -1,21 +1,41 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
const DEFAULT_SHORTCUTS = [
|
|
3
|
-
{
|
|
4
|
-
{
|
|
5
|
-
{
|
|
6
|
-
{
|
|
7
|
-
{
|
|
8
|
-
{
|
|
9
|
-
{
|
|
10
|
-
{
|
|
3
|
+
{ key: '⌘ + K', description: 'Open Command Palette & Global Search', category: 'navigation' },
|
|
4
|
+
{ key: '⌘ + /', description: 'Open Keyboard Shortcuts Sheet', category: 'navigation' },
|
|
5
|
+
{ key: '⌘ + .', description: 'Toggle Live AI Voice Call', category: 'actions' },
|
|
6
|
+
{ key: '⌘ + J', description: 'Toggle Artifacts Inspector & Code Diff', category: 'workspace' },
|
|
7
|
+
{ key: '⌘ + I', description: 'Toggle Intelligence Dock (Channels & Roster)', category: 'workspace' },
|
|
8
|
+
{ key: '⌘ + B', description: 'Toggle Left Channels & Conversation Rail', category: 'workspace' },
|
|
9
|
+
{ key: '⌘ + N', description: 'Create New Conversation or Channel', category: 'actions' },
|
|
10
|
+
{ key: 'Esc', description: 'Close Active Modal / Clear Selection', category: 'actions' },
|
|
11
11
|
];
|
|
12
|
-
export const ShortcutsSheet = ({
|
|
13
|
-
if (!
|
|
12
|
+
export const ShortcutsSheet = ({ shortcuts = DEFAULT_SHORTCUTS, onClose, open = true, className = '', style, }) => {
|
|
13
|
+
if (!open)
|
|
14
14
|
return null;
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const categories = Array.from(new Set(shortcuts.map((s) => s.category)));
|
|
16
|
+
return (_jsx("div", { style: {
|
|
17
|
+
position: 'fixed',
|
|
18
|
+
inset: 0,
|
|
19
|
+
backgroundColor: 'var(--surface-scrim, rgb(0 0 0 / .75))',
|
|
20
|
+
display: 'flex',
|
|
21
|
+
alignItems: 'center',
|
|
22
|
+
justifyContent: 'center',
|
|
23
|
+
zIndex: 100,
|
|
24
|
+
padding: 16,
|
|
25
|
+
}, onClick: onClose, children: _jsxs("div", { style: {
|
|
26
|
+
display: 'flex',
|
|
27
|
+
flexDirection: 'column',
|
|
28
|
+
width: '100%',
|
|
29
|
+
maxWidth: 520,
|
|
30
|
+
backgroundColor: '#171717',
|
|
31
|
+
border: '1px solid rgba(255, 255, 255, 0.15)',
|
|
32
|
+
borderRadius: 16,
|
|
33
|
+
boxShadow: '0 20px 40px rgba(0,0,0,0.5)',
|
|
34
|
+
padding: 24,
|
|
35
|
+
gap: 16,
|
|
36
|
+
...style,
|
|
37
|
+
}, onClick: (e) => e.stopPropagation(), "aria-label": "Keyboard Shortcuts", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', borderBottom: '1px solid rgba(255, 255, 255, 0.1)', paddingBottom: 12 }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [_jsx("span", { style: { fontSize: 18 }, children: "\u2328\uFE0F" }), _jsx("h2", { style: { fontSize: 14, fontWeight: 600, color: '#ffffff', margin: 0 }, children: "Keyboard Shortcuts" })] }), onClose && (_jsx("button", { onClick: onClose, style: { color: '#a3a3a3', fontSize: 12, padding: '4px 8px', borderRadius: 4, backgroundColor: 'rgba(255, 255, 255, 0.05)', border: 'none', cursor: 'pointer' }, children: "Close (Esc)" }))] }), _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 16, maxHeight: 384, overflowY: 'auto', paddingRight: 4 }, children: categories.map((cat) => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 8 }, children: [_jsx("h3", { style: { fontSize: 11, fontWeight: 600, color: '#a3a3a3', textTransform: 'uppercase', letterSpacing: '0.05em', margin: 0 }, children: cat }), _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 6 }, children: shortcuts
|
|
18
38
|
.filter((s) => s.category === cat)
|
|
19
|
-
.map((s, idx) => (_jsxs("div", {
|
|
39
|
+
.map((s, idx) => (_jsxs("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '4px 8px', borderRadius: 8, backgroundColor: 'rgba(255, 255, 255, 0.05)', fontSize: 12, color: '#e5e5e5' }, children: [_jsx("span", { children: s.description }), _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: s.key.split(' ').map((k, kIdx) => (_jsx("kbd", { style: { padding: '2px 8px', borderRadius: 4, backgroundColor: '#262626', border: '1px solid rgba(255, 255, 255, 0.1)', fontSize: 11, fontFamily: 'monospace', color: '#d4d4d4', fontWeight: 600 }, children: k }, kIdx))) })] }, idx))) })] }, cat))) })] }) }));
|
|
20
40
|
};
|
|
21
41
|
//# sourceMappingURL=ShortcutsSheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShortcutsSheet.js","sourceRoot":"","sources":["../../src/agents/ShortcutsSheet.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ShortcutsSheet.js","sourceRoot":"","sources":["../../src/agents/ShortcutsSheet.tsx"],"names":[],"mappings":"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"}
|
package/dist/agents/SwarmBar.cjs
CHANGED
|
@@ -2,18 +2,39 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SwarmBar = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const SwarmBar = ({ agents,
|
|
6
|
-
return ((0, jsx_runtime_1.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
const SwarmBar = ({ agents, selectedAgentId, onSelectAgent, onAddAgent, className = '', style, }) => {
|
|
6
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
7
|
+
display: 'flex',
|
|
8
|
+
alignItems: 'center',
|
|
9
|
+
gap: 8,
|
|
10
|
+
padding: '6px 12px',
|
|
11
|
+
backgroundColor: '#0c0c0e',
|
|
12
|
+
border: '1px solid rgba(255, 255, 255, 0.1)',
|
|
13
|
+
borderRadius: 16,
|
|
14
|
+
...style,
|
|
15
|
+
}, "aria-label": "Multi-Agent Swarm Bar", children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 6, overflowX: 'auto' }, children: [agents.map((agent) => {
|
|
16
|
+
const isSelected = agent.id === selectedAgentId;
|
|
17
|
+
return ((0, jsx_runtime_1.jsxs)("button", { onClick: () => onSelectAgent?.(agent.id), style: {
|
|
18
|
+
display: 'inline-flex',
|
|
19
|
+
alignItems: 'center',
|
|
20
|
+
gap: 6,
|
|
21
|
+
padding: '4px 10px',
|
|
22
|
+
borderRadius: 10,
|
|
23
|
+
fontSize: 12,
|
|
24
|
+
fontWeight: 500,
|
|
25
|
+
border: isSelected ? '1px solid #6366f1' : '1px solid rgba(255, 255, 255, 0.1)',
|
|
26
|
+
backgroundColor: isSelected ? 'rgba(99, 102, 241, 0.2)' : 'rgba(255, 255, 255, 0.05)',
|
|
27
|
+
color: isSelected ? '#c7d2fe' : '#d4d4d4',
|
|
28
|
+
cursor: 'pointer',
|
|
29
|
+
}, title: agent.role, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: 14 }, children: agent.icon }), (0, jsx_runtime_1.jsx)("span", { children: agent.handle })] }, agent.id));
|
|
30
|
+
}), onAddAgent && ((0, jsx_runtime_1.jsx)("button", { onClick: onAddAgent, style: {
|
|
31
|
+
padding: '4px 8px',
|
|
32
|
+
fontSize: 12,
|
|
33
|
+
borderRadius: 8,
|
|
34
|
+
border: '1px dashed rgba(255, 255, 255, 0.2)',
|
|
35
|
+
backgroundColor: 'transparent',
|
|
36
|
+
color: '#a3a3a3',
|
|
37
|
+
cursor: 'pointer',
|
|
38
|
+
}, title: "Add Agent to Swarm", children: "+ Add" }))] }) }));
|
|
18
39
|
};
|
|
19
40
|
exports.SwarmBar = SwarmBar;
|
|
@@ -2,19 +2,18 @@ import React from 'react';
|
|
|
2
2
|
export interface AgentDescriptor {
|
|
3
3
|
id: string;
|
|
4
4
|
name: string;
|
|
5
|
-
|
|
5
|
+
handle: string;
|
|
6
6
|
icon: string;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
capabilities: string[];
|
|
7
|
+
role: string;
|
|
8
|
+
active?: boolean;
|
|
10
9
|
}
|
|
11
10
|
export interface SwarmBarProps {
|
|
12
11
|
agents: AgentDescriptor[];
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
onToggleSwarm: (enabled: boolean) => void;
|
|
12
|
+
selectedAgentId?: string;
|
|
13
|
+
onSelectAgent?: (agentId: string) => void;
|
|
14
|
+
onAddAgent?: () => void;
|
|
17
15
|
className?: string;
|
|
16
|
+
style?: React.CSSProperties;
|
|
18
17
|
}
|
|
19
18
|
export declare const SwarmBar: React.FC<SwarmBarProps>;
|
|
20
19
|
//# sourceMappingURL=SwarmBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwarmBar.d.ts","sourceRoot":"","sources":["../../src/agents/SwarmBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,
|
|
1
|
+
{"version":3,"file":"SwarmBar.d.ts","sourceRoot":"","sources":["../../src/agents/SwarmBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,eAAe,EAAE,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAsE5C,CAAA"}
|
package/dist/agents/SwarmBar.js
CHANGED
|
@@ -1,16 +1,37 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
export const SwarmBar = ({ agents,
|
|
3
|
-
return (
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
export const SwarmBar = ({ agents, selectedAgentId, onSelectAgent, onAddAgent, className = '', style, }) => {
|
|
3
|
+
return (_jsx("div", { style: {
|
|
4
|
+
display: 'flex',
|
|
5
|
+
alignItems: 'center',
|
|
6
|
+
gap: 8,
|
|
7
|
+
padding: '6px 12px',
|
|
8
|
+
backgroundColor: '#0c0c0e',
|
|
9
|
+
border: '1px solid rgba(255, 255, 255, 0.1)',
|
|
10
|
+
borderRadius: 16,
|
|
11
|
+
...style,
|
|
12
|
+
}, "aria-label": "Multi-Agent Swarm Bar", children: _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, overflowX: 'auto' }, children: [agents.map((agent) => {
|
|
13
|
+
const isSelected = agent.id === selectedAgentId;
|
|
14
|
+
return (_jsxs("button", { onClick: () => onSelectAgent?.(agent.id), style: {
|
|
15
|
+
display: 'inline-flex',
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
gap: 6,
|
|
18
|
+
padding: '4px 10px',
|
|
19
|
+
borderRadius: 10,
|
|
20
|
+
fontSize: 12,
|
|
21
|
+
fontWeight: 500,
|
|
22
|
+
border: isSelected ? '1px solid #6366f1' : '1px solid rgba(255, 255, 255, 0.1)',
|
|
23
|
+
backgroundColor: isSelected ? 'rgba(99, 102, 241, 0.2)' : 'rgba(255, 255, 255, 0.05)',
|
|
24
|
+
color: isSelected ? '#c7d2fe' : '#d4d4d4',
|
|
25
|
+
cursor: 'pointer',
|
|
26
|
+
}, title: agent.role, children: [_jsx("span", { style: { fontSize: 14 }, children: agent.icon }), _jsx("span", { children: agent.handle })] }, agent.id));
|
|
27
|
+
}), onAddAgent && (_jsx("button", { onClick: onAddAgent, style: {
|
|
28
|
+
padding: '4px 8px',
|
|
29
|
+
fontSize: 12,
|
|
30
|
+
borderRadius: 8,
|
|
31
|
+
border: '1px dashed rgba(255, 255, 255, 0.2)',
|
|
32
|
+
backgroundColor: 'transparent',
|
|
33
|
+
color: '#a3a3a3',
|
|
34
|
+
cursor: 'pointer',
|
|
35
|
+
}, title: "Add Agent to Swarm", children: "+ Add" }))] }) }));
|
|
15
36
|
};
|
|
16
37
|
//# sourceMappingURL=SwarmBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwarmBar.js","sourceRoot":"","sources":["../../src/agents/SwarmBar.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SwarmBar.js","sourceRoot":"","sources":["../../src/agents/SwarmBar.tsx"],"names":[],"mappings":";AAoBA,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,MAAM,EACN,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,GAAG,EAAE,EACd,KAAK,GACN,EAAE,EAAE;IACH,OAAO,CACL,cACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,SAAS;YAC1B,MAAM,EAAE,oCAAoC;YAC5C,YAAY,EAAE,EAAE;YAChB,GAAG,KAAK;SACT,gBACU,uBAAuB,YAElC,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,aAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACpB,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,KAAK,eAAe,CAAA;oBAC/C,OAAO,CACL,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EACxC,KAAK,EAAE;4BACL,OAAO,EAAE,aAAa;4BACtB,UAAU,EAAE,QAAQ;4BACpB,GAAG,EAAE,CAAC;4BACN,OAAO,EAAE,UAAU;4BACnB,YAAY,EAAE,EAAE;4BAChB,QAAQ,EAAE,EAAE;4BACZ,UAAU,EAAE,GAAG;4BACf,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oCAAoC;4BAC/E,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,2BAA2B;4BACrF,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;4BACzC,MAAM,EAAE,SAAS;yBAClB,EACD,KAAK,EAAE,KAAK,CAAC,IAAI,aAEjB,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAG,KAAK,CAAC,IAAI,GAAQ,EAClD,yBAAO,KAAK,CAAC,MAAM,GAAQ,KAlBtB,KAAK,CAAC,EAAE,CAmBN,CACV,CAAA;gBACH,CAAC,CAAC,EAED,UAAU,IAAI,CACb,iBACE,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,QAAQ,EAAE,EAAE;wBACZ,YAAY,EAAE,CAAC;wBACf,MAAM,EAAE,qCAAqC;wBAC7C,eAAe,EAAE,aAAa;wBAC9B,KAAK,EAAE,SAAS;wBAChB,MAAM,EAAE,SAAS;qBAClB,EACD,KAAK,EAAC,oBAAoB,sBAGnB,CACV,IACG,GACF,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TerminalViewer = void 0;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
8
|
+
const TerminalViewer = ({ tabs, activeTabId, onSelectTab, onCloseTab, onNewTab, onSendCommand, onKillCommand, onClearOutput, }) => {
|
|
9
|
+
const [commandInput, setCommandInput] = (0, react_1.useState)('');
|
|
10
|
+
const [copied, setCopied] = (0, react_1.useState)(false);
|
|
11
|
+
const [isExpanded, setIsExpanded] = (0, react_1.useState)(false);
|
|
12
|
+
const bottomRef = (0, react_1.useRef)(null);
|
|
13
|
+
const activeTab = tabs.find((t) => t.id === activeTabId) || tabs[0];
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
bottomRef.current?.scrollIntoView({ behavior: 'smooth' });
|
|
16
|
+
}, [activeTab?.output?.length]);
|
|
17
|
+
const handleCopy = () => {
|
|
18
|
+
if (!activeTab)
|
|
19
|
+
return;
|
|
20
|
+
navigator.clipboard.writeText(activeTab.output.join('\n'));
|
|
21
|
+
setCopied(true);
|
|
22
|
+
setTimeout(() => setCopied(false), 1500);
|
|
23
|
+
};
|
|
24
|
+
const handleSubmit = (e) => {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
if (!commandInput.trim() || !activeTab || !onSendCommand)
|
|
27
|
+
return;
|
|
28
|
+
onSendCommand(activeTab.id, commandInput.trim());
|
|
29
|
+
setCommandInput('');
|
|
30
|
+
};
|
|
31
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
32
|
+
display: 'flex',
|
|
33
|
+
flexDirection: 'column',
|
|
34
|
+
backgroundColor: '#0c0c0e',
|
|
35
|
+
color: '#e0e0e0',
|
|
36
|
+
fontFamily: 'monospace',
|
|
37
|
+
borderRadius: 12,
|
|
38
|
+
border: '1px solid var(--borderColor)',
|
|
39
|
+
overflow: 'hidden',
|
|
40
|
+
...(isExpanded
|
|
41
|
+
? { position: 'fixed', inset: 16, zIndex: 50, boxShadow: '0 20px 40px rgba(0,0,0,0.5)' }
|
|
42
|
+
: { height: '100%', minHeight: 300 }),
|
|
43
|
+
}, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '8px 12px', backgroundColor: '#141418', borderBottom: '1px solid #24242a' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 6, overflowX: 'auto' }, children: [tabs.map((tab) => {
|
|
44
|
+
const isActive = tab.id === activeTabId;
|
|
45
|
+
return ((0, jsx_runtime_1.jsxs)("button", { onClick: () => onSelectTab(tab.id), style: {
|
|
46
|
+
display: 'inline-flex',
|
|
47
|
+
alignItems: 'center',
|
|
48
|
+
gap: 8,
|
|
49
|
+
padding: '6px 12px',
|
|
50
|
+
borderRadius: 8,
|
|
51
|
+
fontSize: 12,
|
|
52
|
+
border: isActive ? '1px solid #34343e' : 'none',
|
|
53
|
+
backgroundColor: isActive ? '#1e1e24' : 'transparent',
|
|
54
|
+
color: isActive ? '#ffffff' : '#888892',
|
|
55
|
+
cursor: 'pointer',
|
|
56
|
+
}, children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.Terminal, { size: 14 }), (0, jsx_runtime_1.jsx)("span", { style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: 120 }, children: tab.title }), tab.status === 'running' && ((0, jsx_runtime_1.jsx)("span", { style: { width: 8, height: 8, borderRadius: '50%', backgroundColor: '#34d399' } })), tab.status === 'failed' && ((0, jsx_runtime_1.jsx)("span", { style: { width: 8, height: 8, borderRadius: '50%', backgroundColor: '#f87171' } }))] }, tab.id));
|
|
57
|
+
}), onNewTab && ((0, jsx_runtime_1.jsx)("button", { onClick: onNewTab, style: { padding: '4px 8px', fontSize: 12, color: '#888892', background: 'none', border: 'none', cursor: 'pointer' }, title: "New Terminal", children: "+" }))] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [activeTab && onClearOutput && ((0, jsx_runtime_1.jsx)("button", { onClick: () => onClearOutput(activeTab.id), style: { padding: 4, color: '#888892', background: 'none', border: 'none', cursor: 'pointer', display: 'flex' }, title: "Clear output", children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Trash2, { size: 14 }) })), (0, jsx_runtime_1.jsx)("button", { onClick: handleCopy, style: { padding: 4, color: '#888892', background: 'none', border: 'none', cursor: 'pointer', display: 'flex' }, title: "Copy terminal output", children: copied ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: 14 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Copy, { size: 14 }) }), (0, jsx_runtime_1.jsx)("button", { onClick: () => setIsExpanded(!isExpanded), style: { padding: 4, color: '#888892', background: 'none', border: 'none', cursor: 'pointer', display: 'flex' }, title: isExpanded ? 'Minimize' : 'Maximize', children: isExpanded ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Minimize2, { size: 14 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Maximize2, { size: 14 }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: { flex: 1, padding: 16, overflowY: 'auto', fontSize: 12, lineHeight: 1.5 }, children: [activeTab?.cwd && ((0, jsx_runtime_1.jsxs)("div", { style: { color: '#6e6e7c', fontSize: 11, marginBottom: 8, fontFamily: 'sans-serif' }, children: ["Working directory: ", (0, jsx_runtime_1.jsx)("code", { style: { fontFamily: 'monospace', color: '#a0a0b0' }, children: activeTab.cwd })] })), activeTab?.output?.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { style: { color: '#555562', fontStyle: 'italic' }, children: "Terminal ready. Type a command below." })) : (activeTab?.output.map((line, idx) => {
|
|
58
|
+
const isCmd = line.startsWith('>') || line.startsWith('$');
|
|
59
|
+
const isErr = line.includes('error') || line.includes('Error') || line.includes('ERR');
|
|
60
|
+
const isWarn = line.includes('warn') || line.includes('WARN');
|
|
61
|
+
const isOk = line.includes('✓') || line.includes('success');
|
|
62
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
63
|
+
wordBreak: 'break-all',
|
|
64
|
+
whiteSpace: 'pre-wrap',
|
|
65
|
+
color: isCmd ? '#67e8f9' : isErr ? '#fb7185' : isWarn ? '#fcd34d' : isOk ? '#34d399' : '#c8c8d4',
|
|
66
|
+
fontWeight: isCmd ? 600 : 400,
|
|
67
|
+
marginTop: isCmd ? 6 : 0,
|
|
68
|
+
}, children: line }, idx));
|
|
69
|
+
})), (0, jsx_runtime_1.jsx)("div", { ref: bottomRef })] }), onSendCommand && activeTab && ((0, jsx_runtime_1.jsxs)("form", { onSubmit: handleSubmit, style: { display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px', backgroundColor: '#121216', borderTop: '1px solid #24242a' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { color: '#22d3ee', userSelect: 'none', fontSize: 12, fontWeight: 'bold' }, children: "$" }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: commandInput, onChange: (e) => setCommandInput(e.target.value), placeholder: "Type shell command...", style: { flex: 1, background: 'transparent', fontSize: 12, color: '#ffffff', outline: 'none', border: 'none', fontFamily: 'monospace' } }), activeTab.status === 'running' && onKillCommand && ((0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: () => onKillCommand(activeTab.id), style: { display: 'inline-flex', alignItems: 'center', gap: 4, padding: '4px 8px', fontSize: 11, fontFamily: 'sans-serif', fontWeight: 600, color: '#fda4af', backgroundColor: 'rgba(76, 5, 25, 0.6)', border: '1px solid rgba(159, 18, 57, 0.5)', borderRadius: 4, cursor: 'pointer' }, children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.Square, { size: 12 }), (0, jsx_runtime_1.jsx)("span", { children: "Stop" })] }))] }))] }));
|
|
70
|
+
};
|
|
71
|
+
exports.TerminalViewer = TerminalViewer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TerminalTab {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
status?: 'running' | 'idle' | 'failed' | 'success';
|
|
6
|
+
output: string[];
|
|
7
|
+
cwd?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TerminalViewerProps {
|
|
10
|
+
tabs: TerminalTab[];
|
|
11
|
+
activeTabId: string;
|
|
12
|
+
onSelectTab: (id: string) => void;
|
|
13
|
+
onCloseTab?: (id: string) => void;
|
|
14
|
+
onNewTab?: () => void;
|
|
15
|
+
onSendCommand?: (id: string, command: string) => void;
|
|
16
|
+
onKillCommand?: (id: string) => void;
|
|
17
|
+
onClearOutput?: (id: string) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const TerminalViewer: React.FC<TerminalViewerProps>;
|
|
20
|
+
//# sourceMappingURL=TerminalViewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalViewer.d.ts","sourceRoot":"","sources":["../../src/agents/TerminalViewer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAc1D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IAClD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,EAAE,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2LxD,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { Terminal as TerminalIcon, Square, Copy, Check, Maximize2, Minimize2, Trash2, } from '@hanzogui/lucide-icons-2';
|
|
5
|
+
export const TerminalViewer = ({ tabs, activeTabId, onSelectTab, onCloseTab, onNewTab, onSendCommand, onKillCommand, onClearOutput, }) => {
|
|
6
|
+
const [commandInput, setCommandInput] = useState('');
|
|
7
|
+
const [copied, setCopied] = useState(false);
|
|
8
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
9
|
+
const bottomRef = useRef(null);
|
|
10
|
+
const activeTab = tabs.find((t) => t.id === activeTabId) || tabs[0];
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
bottomRef.current?.scrollIntoView({ behavior: 'smooth' });
|
|
13
|
+
}, [activeTab?.output?.length]);
|
|
14
|
+
const handleCopy = () => {
|
|
15
|
+
if (!activeTab)
|
|
16
|
+
return;
|
|
17
|
+
navigator.clipboard.writeText(activeTab.output.join('\n'));
|
|
18
|
+
setCopied(true);
|
|
19
|
+
setTimeout(() => setCopied(false), 1500);
|
|
20
|
+
};
|
|
21
|
+
const handleSubmit = (e) => {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
if (!commandInput.trim() || !activeTab || !onSendCommand)
|
|
24
|
+
return;
|
|
25
|
+
onSendCommand(activeTab.id, commandInput.trim());
|
|
26
|
+
setCommandInput('');
|
|
27
|
+
};
|
|
28
|
+
return (_jsxs("div", { style: {
|
|
29
|
+
display: 'flex',
|
|
30
|
+
flexDirection: 'column',
|
|
31
|
+
backgroundColor: '#0c0c0e',
|
|
32
|
+
color: '#e0e0e0',
|
|
33
|
+
fontFamily: 'monospace',
|
|
34
|
+
borderRadius: 12,
|
|
35
|
+
border: '1px solid var(--borderColor)',
|
|
36
|
+
overflow: 'hidden',
|
|
37
|
+
...(isExpanded
|
|
38
|
+
? { position: 'fixed', inset: 16, zIndex: 50, boxShadow: '0 20px 40px rgba(0,0,0,0.5)' }
|
|
39
|
+
: { height: '100%', minHeight: 300 }),
|
|
40
|
+
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '8px 12px', backgroundColor: '#141418', borderBottom: '1px solid #24242a' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, overflowX: 'auto' }, children: [tabs.map((tab) => {
|
|
41
|
+
const isActive = tab.id === activeTabId;
|
|
42
|
+
return (_jsxs("button", { onClick: () => onSelectTab(tab.id), style: {
|
|
43
|
+
display: 'inline-flex',
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
gap: 8,
|
|
46
|
+
padding: '6px 12px',
|
|
47
|
+
borderRadius: 8,
|
|
48
|
+
fontSize: 12,
|
|
49
|
+
border: isActive ? '1px solid #34343e' : 'none',
|
|
50
|
+
backgroundColor: isActive ? '#1e1e24' : 'transparent',
|
|
51
|
+
color: isActive ? '#ffffff' : '#888892',
|
|
52
|
+
cursor: 'pointer',
|
|
53
|
+
}, children: [_jsx(TerminalIcon, { size: 14 }), _jsx("span", { style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: 120 }, children: tab.title }), tab.status === 'running' && (_jsx("span", { style: { width: 8, height: 8, borderRadius: '50%', backgroundColor: '#34d399' } })), tab.status === 'failed' && (_jsx("span", { style: { width: 8, height: 8, borderRadius: '50%', backgroundColor: '#f87171' } }))] }, tab.id));
|
|
54
|
+
}), onNewTab && (_jsx("button", { onClick: onNewTab, style: { padding: '4px 8px', fontSize: 12, color: '#888892', background: 'none', border: 'none', cursor: 'pointer' }, title: "New Terminal", children: "+" }))] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [activeTab && onClearOutput && (_jsx("button", { onClick: () => onClearOutput(activeTab.id), style: { padding: 4, color: '#888892', background: 'none', border: 'none', cursor: 'pointer', display: 'flex' }, title: "Clear output", children: _jsx(Trash2, { size: 14 }) })), _jsx("button", { onClick: handleCopy, style: { padding: 4, color: '#888892', background: 'none', border: 'none', cursor: 'pointer', display: 'flex' }, title: "Copy terminal output", children: copied ? _jsx(Check, { size: 14 }) : _jsx(Copy, { size: 14 }) }), _jsx("button", { onClick: () => setIsExpanded(!isExpanded), style: { padding: 4, color: '#888892', background: 'none', border: 'none', cursor: 'pointer', display: 'flex' }, title: isExpanded ? 'Minimize' : 'Maximize', children: isExpanded ? _jsx(Minimize2, { size: 14 }) : _jsx(Maximize2, { size: 14 }) })] })] }), _jsxs("div", { style: { flex: 1, padding: 16, overflowY: 'auto', fontSize: 12, lineHeight: 1.5 }, children: [activeTab?.cwd && (_jsxs("div", { style: { color: '#6e6e7c', fontSize: 11, marginBottom: 8, fontFamily: 'sans-serif' }, children: ["Working directory: ", _jsx("code", { style: { fontFamily: 'monospace', color: '#a0a0b0' }, children: activeTab.cwd })] })), activeTab?.output?.length === 0 ? (_jsx("div", { style: { color: '#555562', fontStyle: 'italic' }, children: "Terminal ready. Type a command below." })) : (activeTab?.output.map((line, idx) => {
|
|
55
|
+
const isCmd = line.startsWith('>') || line.startsWith('$');
|
|
56
|
+
const isErr = line.includes('error') || line.includes('Error') || line.includes('ERR');
|
|
57
|
+
const isWarn = line.includes('warn') || line.includes('WARN');
|
|
58
|
+
const isOk = line.includes('✓') || line.includes('success');
|
|
59
|
+
return (_jsx("div", { style: {
|
|
60
|
+
wordBreak: 'break-all',
|
|
61
|
+
whiteSpace: 'pre-wrap',
|
|
62
|
+
color: isCmd ? '#67e8f9' : isErr ? '#fb7185' : isWarn ? '#fcd34d' : isOk ? '#34d399' : '#c8c8d4',
|
|
63
|
+
fontWeight: isCmd ? 600 : 400,
|
|
64
|
+
marginTop: isCmd ? 6 : 0,
|
|
65
|
+
}, children: line }, idx));
|
|
66
|
+
})), _jsx("div", { ref: bottomRef })] }), onSendCommand && activeTab && (_jsxs("form", { onSubmit: handleSubmit, style: { display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px', backgroundColor: '#121216', borderTop: '1px solid #24242a' }, children: [_jsx("span", { style: { color: '#22d3ee', userSelect: 'none', fontSize: 12, fontWeight: 'bold' }, children: "$" }), _jsx("input", { type: "text", value: commandInput, onChange: (e) => setCommandInput(e.target.value), placeholder: "Type shell command...", style: { flex: 1, background: 'transparent', fontSize: 12, color: '#ffffff', outline: 'none', border: 'none', fontFamily: 'monospace' } }), activeTab.status === 'running' && onKillCommand && (_jsxs("button", { type: "button", onClick: () => onKillCommand(activeTab.id), style: { display: 'inline-flex', alignItems: 'center', gap: 4, padding: '4px 8px', fontSize: 11, fontFamily: 'sans-serif', fontWeight: 600, color: '#fda4af', backgroundColor: 'rgba(76, 5, 25, 0.6)', border: '1px solid rgba(159, 18, 57, 0.5)', borderRadius: 4, cursor: 'pointer' }, children: [_jsx(Square, { size: 12 }), _jsx("span", { children: "Stop" })] }))] }))] }));
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=TerminalViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalViewer.js","sourceRoot":"","sources":["../../src/agents/TerminalViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,34 @@ const ACCENTS = [
|
|
|
10
10
|
{ name: 'Rose', value: '#f43f5e' },
|
|
11
11
|
{ name: 'Purple', value: '#a855f7' },
|
|
12
12
|
];
|
|
13
|
-
const ThemeCustomizer = ({ config, onChange, className = '', }) => {
|
|
14
|
-
return ((0, jsx_runtime_1.jsxs)("div", {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
const ThemeCustomizer = ({ config, onChange, className = '', style, }) => {
|
|
14
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
15
|
+
display: 'flex',
|
|
16
|
+
flexDirection: 'column',
|
|
17
|
+
gap: 16,
|
|
18
|
+
padding: 20,
|
|
19
|
+
backgroundColor: '#0c0c0e',
|
|
20
|
+
border: '1px solid rgba(255, 255, 255, 0.1)',
|
|
21
|
+
borderRadius: 16,
|
|
22
|
+
...style,
|
|
23
|
+
}, "aria-label": "Theme Customizer", children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: 16 }, children: "\uD83C\uDFA8" }), (0, jsx_runtime_1.jsx)("h3", { style: { fontSize: 12, fontWeight: 600, color: '#ffffff', textTransform: 'uppercase', letterSpacing: '0.05em', margin: 0 }, children: "Appearance & Glassmorphism" })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 8 }, children: [(0, jsx_runtime_1.jsx)("label", { style: { fontSize: 12, color: '#a3a3a3', fontWeight: 500 }, children: "Accent Palette" }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: ACCENTS.map((accent) => ((0, jsx_runtime_1.jsx)("button", { onClick: () => onChange({ ...config, accentColor: accent.value }), style: {
|
|
24
|
+
width: 28,
|
|
25
|
+
height: 28,
|
|
26
|
+
borderRadius: '50%',
|
|
27
|
+
backgroundColor: accent.value,
|
|
28
|
+
cursor: 'pointer',
|
|
29
|
+
border: config.accentColor === accent.value ? '2px solid #ffffff' : 'none',
|
|
30
|
+
boxShadow: config.accentColor === accent.value ? '0 0 10px ' + accent.value : 'none',
|
|
31
|
+
}, title: accent.name }, accent.value))) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 8 }, children: [(0, jsx_runtime_1.jsx)("label", { style: { fontSize: 12, color: '#a3a3a3', fontWeight: 500 }, children: "Glassmorphism Intensity" }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: 6 }, children: ['low', 'medium', 'high', 'ultra'].map((level) => ((0, jsx_runtime_1.jsx)("button", { onClick: () => onChange({ ...config, blurLevel: level }), style: {
|
|
32
|
+
padding: '6px 0',
|
|
33
|
+
fontSize: 12,
|
|
34
|
+
fontWeight: 500,
|
|
35
|
+
textTransform: 'capitalize',
|
|
36
|
+
borderRadius: 8,
|
|
37
|
+
border: config.blurLevel === level ? '1px solid #6366f1' : '1px solid rgba(255, 255, 255, 0.1)',
|
|
38
|
+
backgroundColor: config.blurLevel === level ? 'rgba(99, 102, 241, 0.2)' : 'rgba(255, 255, 255, 0.05)',
|
|
39
|
+
color: config.blurLevel === level ? '#c7d2fe' : '#a3a3a3',
|
|
40
|
+
cursor: 'pointer',
|
|
41
|
+
}, children: level }, level))) })] })] }));
|
|
19
42
|
};
|
|
20
43
|
exports.ThemeCustomizer = ThemeCustomizer;
|
|
@@ -8,6 +8,7 @@ export interface ThemeCustomizerProps {
|
|
|
8
8
|
config: ThemeConfig;
|
|
9
9
|
onChange: (config: ThemeConfig) => void;
|
|
10
10
|
className?: string;
|
|
11
|
+
style?: React.CSSProperties;
|
|
11
12
|
}
|
|
12
13
|
export declare const ThemeCustomizer: React.FC<ThemeCustomizerProps>;
|
|
13
14
|
//# sourceMappingURL=ThemeCustomizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeCustomizer.d.ts","sourceRoot":"","sources":["../../src/agents/ThemeCustomizer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"ThemeCustomizer.d.ts","sourceRoot":"","sources":["../../src/agents/ThemeCustomizer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B;AAWD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6E1D,CAAA"}
|
|
@@ -7,11 +7,34 @@ const ACCENTS = [
|
|
|
7
7
|
{ name: 'Rose', value: '#f43f5e' },
|
|
8
8
|
{ name: 'Purple', value: '#a855f7' },
|
|
9
9
|
];
|
|
10
|
-
export const ThemeCustomizer = ({ config, onChange, className = '', }) => {
|
|
11
|
-
return (_jsxs("div", {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
export const ThemeCustomizer = ({ config, onChange, className = '', style, }) => {
|
|
11
|
+
return (_jsxs("div", { style: {
|
|
12
|
+
display: 'flex',
|
|
13
|
+
flexDirection: 'column',
|
|
14
|
+
gap: 16,
|
|
15
|
+
padding: 20,
|
|
16
|
+
backgroundColor: '#0c0c0e',
|
|
17
|
+
border: '1px solid rgba(255, 255, 255, 0.1)',
|
|
18
|
+
borderRadius: 16,
|
|
19
|
+
...style,
|
|
20
|
+
}, "aria-label": "Theme Customizer", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [_jsx("span", { style: { fontSize: 16 }, children: "\uD83C\uDFA8" }), _jsx("h3", { style: { fontSize: 12, fontWeight: 600, color: '#ffffff', textTransform: 'uppercase', letterSpacing: '0.05em', margin: 0 }, children: "Appearance & Glassmorphism" })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 8 }, children: [_jsx("label", { style: { fontSize: 12, color: '#a3a3a3', fontWeight: 500 }, children: "Accent Palette" }), _jsx("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: ACCENTS.map((accent) => (_jsx("button", { onClick: () => onChange({ ...config, accentColor: accent.value }), style: {
|
|
21
|
+
width: 28,
|
|
22
|
+
height: 28,
|
|
23
|
+
borderRadius: '50%',
|
|
24
|
+
backgroundColor: accent.value,
|
|
25
|
+
cursor: 'pointer',
|
|
26
|
+
border: config.accentColor === accent.value ? '2px solid #ffffff' : 'none',
|
|
27
|
+
boxShadow: config.accentColor === accent.value ? '0 0 10px ' + accent.value : 'none',
|
|
28
|
+
}, title: accent.name }, accent.value))) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 8 }, children: [_jsx("label", { style: { fontSize: 12, color: '#a3a3a3', fontWeight: 500 }, children: "Glassmorphism Intensity" }), _jsx("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: 6 }, children: ['low', 'medium', 'high', 'ultra'].map((level) => (_jsx("button", { onClick: () => onChange({ ...config, blurLevel: level }), style: {
|
|
29
|
+
padding: '6px 0',
|
|
30
|
+
fontSize: 12,
|
|
31
|
+
fontWeight: 500,
|
|
32
|
+
textTransform: 'capitalize',
|
|
33
|
+
borderRadius: 8,
|
|
34
|
+
border: config.blurLevel === level ? '1px solid #6366f1' : '1px solid rgba(255, 255, 255, 0.1)',
|
|
35
|
+
backgroundColor: config.blurLevel === level ? 'rgba(99, 102, 241, 0.2)' : 'rgba(255, 255, 255, 0.05)',
|
|
36
|
+
color: config.blurLevel === level ? '#c7d2fe' : '#a3a3a3',
|
|
37
|
+
cursor: 'pointer',
|
|
38
|
+
}, children: level }, level))) })] })] }));
|
|
16
39
|
};
|
|
17
40
|
//# sourceMappingURL=ThemeCustomizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeCustomizer.js","sourceRoot":"","sources":["../../src/agents/ThemeCustomizer.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ThemeCustomizer.js","sourceRoot":"","sources":["../../src/agents/ThemeCustomizer.tsx"],"names":[],"mappings":"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"}
|