@toolr/ui-design 0.1.8 → 0.1.9
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/ai-manifest.json +35 -20
- package/components/composites/dashboard-list-item.tsx +172 -0
- package/components/composites/dashboard-panel.tsx +218 -0
- package/components/content/info-panel-primitives.tsx +9 -8
- package/components/diagrams/diagram-utils.tsx +2 -1
- package/components/hooks/use-dropdown-portal.ts +39 -0
- package/components/lib/accent-context.ts +10 -0
- package/components/lib/{ai-tools.tsx → coding-agents.tsx} +23 -8
- package/components/lib/custom-icons.tsx +37 -0
- package/components/lib/git-providers.tsx +39 -0
- package/components/lib/theme-engine.ts +59 -10
- package/components/lib/toolr-brand.tsx +23 -9
- package/components/sections/captured-issues/captured-issues-panel.tsx +17 -8
- package/components/sections/{ai-tools-paths/tools-paths-panel.tsx → coding-agent-paths/agent-paths-panel.tsx} +70 -62
- package/components/sections/coding-agent-paths/index.ts +37 -0
- package/components/sections/{ai-tools-paths → coding-agent-paths}/types.ts +28 -28
- package/components/sections/coding-agent-paths/use-agent-paths.ts +159 -0
- package/components/sections/golden-snapshots/file-diff-viewer.tsx +10 -9
- package/components/sections/golden-snapshots/golden-sync-panel.tsx +12 -3
- package/components/sections/golden-snapshots/snapshot-manager.tsx +9 -7
- package/components/sections/golden-snapshots/status-overview.tsx +8 -8
- package/components/sections/golden-snapshots/version-manager.tsx +6 -6
- package/components/sections/prompt-editor/file-type-tabbed-prompt-editor.tsx +3 -3
- package/components/sections/prompt-editor/index.ts +1 -1
- package/components/sections/prompt-editor/simulator-prompt-editor.tsx +13 -5
- package/components/sections/prompt-editor/tabbed-prompt-editor.tsx +18 -10
- package/components/sections/prompt-editor/types.ts +2 -2
- package/components/sections/report-bug/report-bug-form.tsx +12 -4
- package/components/sections/report-bug/screenshot-uploader.tsx +11 -3
- package/components/sections/snapshot-browser/snapshot-browser-panel.tsx +12 -4
- package/components/sections/snapshot-browser/snapshot-tree.tsx +5 -4
- package/components/sections/snapshot-browser/types.ts +1 -1
- package/components/sections/snippets-editor/snippets-editor.tsx +16 -9
- package/components/settings/SettingsHeader.tsx +2 -2
- package/components/settings/SettingsPanel.tsx +11 -3
- package/components/settings/SettingsTreeNav.tsx +15 -9
- package/components/ui/action-dialog.tsx +24 -30
- package/components/ui/ai-action-button.tsx +10 -7
- package/components/ui/ai-execution-action-buttons.tsx +13 -5
- package/components/ui/badge.tsx +7 -4
- package/components/ui/bottom-panel-header.tsx +9 -5
- package/components/ui/breadcrumb.tsx +9 -1
- package/components/ui/{extension-list-card.tsx → capability-list-card.tsx} +13 -5
- package/components/ui/checkbox.tsx +6 -3
- package/components/ui/collapsible-section.tsx +38 -29
- package/components/ui/confirm-badge.tsx +7 -4
- package/components/ui/cookie-consent.tsx +13 -7
- package/components/ui/detail-section.tsx +24 -16
- package/components/ui/detail-view-wrapper.tsx +30 -22
- package/components/ui/editor-placeholder-card.tsx +28 -24
- package/components/ui/editor-toolbar.tsx +7 -4
- package/components/ui/execution-details-panel.tsx +10 -5
- package/components/ui/file-structure-section.tsx +3 -3
- package/components/ui/file-tree.tsx +3 -1
- package/components/ui/files-panel.tsx +147 -27
- package/components/ui/filter-dropdown.tsx +84 -74
- package/components/ui/form-actions.tsx +14 -6
- package/components/ui/frontmatter-form-header.tsx +10 -2
- package/components/ui/icon-button.tsx +22 -9
- package/components/ui/input.tsx +7 -4
- package/components/ui/label.tsx +5 -5
- package/components/ui/layout-tab-bar.tsx +7 -5
- package/components/ui/modal.tsx +18 -4
- package/components/ui/nav-card.tsx +6 -3
- package/components/ui/navigation-bar.tsx +37 -9
- package/components/ui/number-input.tsx +8 -4
- package/components/ui/project-explorer.tsx +666 -0
- package/components/ui/registry-browser.tsx +12 -1
- package/components/ui/registry-card.tsx +49 -42
- package/components/ui/registry-detail.tsx +34 -11
- package/components/ui/resizable-textarea.tsx +18 -11
- package/components/ui/scope-badge.tsx +18 -11
- package/components/ui/segmented-toggle.tsx +5 -2
- package/components/ui/select.tsx +12 -9
- package/components/ui/selection-grid.tsx +36 -37
- package/components/ui/setting-row.tsx +2 -2
- package/components/ui/settings-card.tsx +10 -3
- package/components/ui/settings-info-box.tsx +9 -5
- package/components/ui/settings-section-title.tsx +14 -2
- package/components/ui/snapshot-card.tsx +10 -2
- package/components/ui/snippets-panel.tsx +4 -2
- package/components/ui/sort-dropdown.tsx +39 -29
- package/components/ui/status-card.tsx +9 -1
- package/components/ui/tab-bar.tsx +12 -9
- package/components/ui/toggle.tsx +13 -7
- package/components/ui/tooltip.tsx +9 -1
- package/dist/content.js +8 -8
- package/dist/diagrams.d.ts +0 -1
- package/dist/index.d.ts +421 -182
- package/dist/index.js +2984 -1691
- package/dist/tokens/primitives.css +28 -6
- package/dist/tokens/semantic.css +15 -15
- package/dist/tokens/theme.css +23 -0
- package/index.ts +25 -11
- package/package.json +1 -1
- package/tokens/primitives.css +28 -6
- package/tokens/semantic.css +15 -15
- package/tokens/theme.css +23 -0
- package/components/sections/ai-tools-paths/index.ts +0 -37
- package/components/sections/ai-tools-paths/use-tools-paths.ts +0 -159
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
1
|
import * as react from 'react';
|
|
3
2
|
import { ReactNode, MouseEvent, InputHTMLAttributes, ElementType, RefObject } from 'react';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as lucide_react from 'lucide-react';
|
|
5
5
|
import { LucideIcon } from 'lucide-react';
|
|
6
6
|
import { ClassValue } from 'clsx';
|
|
7
7
|
|
|
8
8
|
type FormColor = 'blue' | 'green' | 'red' | 'orange' | 'cyan' | 'yellow' | 'purple' | 'indigo' | 'emerald' | 'amber' | 'violet' | 'neutral' | 'sky' | 'pink' | 'teal';
|
|
9
|
+
interface FormColorConfig {
|
|
10
|
+
/** Idle border class (e.g. 'border-blue-500/30') */
|
|
11
|
+
border: string;
|
|
12
|
+
/** Hover classes (e.g. 'hover:bg-blue-500/20 hover:border-blue-500/40') */
|
|
13
|
+
hover: string;
|
|
14
|
+
/** Focus border class (e.g. 'focus:border-blue-500') */
|
|
15
|
+
focus: string;
|
|
16
|
+
/** Selected row background (e.g. 'bg-blue-600/20') */
|
|
17
|
+
selectedBg: string;
|
|
18
|
+
/** Accent text for icons/checks (e.g. 'text-blue-400') */
|
|
19
|
+
accent: string;
|
|
20
|
+
}
|
|
9
21
|
type AccentColor = FormColor;
|
|
10
22
|
declare const ACCENT_TEXT: Record<AccentColor, string>;
|
|
11
23
|
declare const ACCENT_ICON: Record<FormColor, string>;
|
|
@@ -13,8 +25,12 @@ declare const ACCENT_NAV: Record<AccentColor, {
|
|
|
13
25
|
bg: string;
|
|
14
26
|
text: string;
|
|
15
27
|
}>;
|
|
28
|
+
declare const FORM_COLORS: Record<FormColor, FormColorConfig>;
|
|
16
29
|
|
|
17
|
-
declare const
|
|
30
|
+
declare const AccentColorProvider: react.Provider<FormColor | undefined>;
|
|
31
|
+
declare function useAccentColor(): FormColor | undefined;
|
|
32
|
+
|
|
33
|
+
declare const SCALE_KEYS: readonly ["black", "990", "980", "970", "960", "950", "940", "930", "920", "910", "900", "850", "800", "750", "700", "650", "600", "550", "500", "450", "400", "350", "300", "250", "200", "150", "100", "090", "080", "070", "060", "050", "040", "030", "020", "010"];
|
|
18
34
|
type ScaleKey = (typeof SCALE_KEYS)[number];
|
|
19
35
|
type ThemeId = 'dark' | 'light';
|
|
20
36
|
declare const DARK_THEMES: ThemeId[];
|
|
@@ -32,7 +48,7 @@ interface AccentDef {
|
|
|
32
48
|
declare const ACCENT_DEFS: AccentDef[];
|
|
33
49
|
declare function satCurve(l: number): number;
|
|
34
50
|
declare function hslToHex(h: number, s: number, l: number): string;
|
|
35
|
-
declare const SURFACE_KEYS: readonly ["950", "900", "850", "800", "750"];
|
|
51
|
+
declare const SURFACE_KEYS: readonly ["990", "980", "970", "960", "950", "940", "930", "920", "910", "900", "850", "800", "750"];
|
|
36
52
|
type SurfaceKey = (typeof SURFACE_KEYS)[number];
|
|
37
53
|
declare const DEFAULT_DIMS: Record<SurfaceKey, number>;
|
|
38
54
|
declare const DEFAULT_OUTLINE = 30;
|
|
@@ -53,8 +69,10 @@ declare function applyTheme(themeId: ThemeId, accentHue: number | null, dims?: R
|
|
|
53
69
|
type ToolrAppId = 'toolr' | 'configr' | 'reviewr' | 'vibr' | 'learnr' | 'planr' | 'seedr';
|
|
54
70
|
declare const TOOLR_APPS: Record<ToolrAppId, {
|
|
55
71
|
name: string;
|
|
56
|
-
|
|
72
|
+
accent: string;
|
|
57
73
|
}>;
|
|
74
|
+
/** Resolve an accent ID to its hex color */
|
|
75
|
+
declare function resolveAccentHex(accent: string): string;
|
|
58
76
|
declare function ToolrAppLogo({ app, color: colorOverride, size, className }: {
|
|
59
77
|
app?: ToolrAppId;
|
|
60
78
|
color?: string;
|
|
@@ -62,23 +80,41 @@ declare function ToolrAppLogo({ app, color: colorOverride, size, className }: {
|
|
|
62
80
|
className?: string;
|
|
63
81
|
}): react_jsx_runtime.JSX.Element;
|
|
64
82
|
|
|
65
|
-
declare const
|
|
83
|
+
declare const CODING_AGENT_LOGOS: {
|
|
66
84
|
readonly claude: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAJFBMVEVHcEzZd1fZd1fZd1fZd1fad1jZd1fZd1fZd1fZd1fZd1fZd1deZDooAAAADHRSTlMA//F3mhLfyjpWsiMDGU5mAAABH0lEQVQokXVSWXbEIAzDuw33v28FJCnpTP3BA6+yRGvbLK39a0F9RUvHZ5CIazZwkm+VpCi1nZP1GpJEnq2NdabzU594N0XpzInRhq/7jvm8wsOjFfVmcQG4guTWZKYL8HSiA1XFHDjgHMqCpKfpNPgIXiZVVvSJ9yazOJARxBiYf/ZMoIUxrYGjRHs/di2nbdzDZxIb1maPriold3QlyFJCAonMd08A7/WhkN19PWDolSeiXU7URWPm8S3ewMCuvGpB+kigVXvWZKlgIVycF0Hjl6DIoVRCGKz9pE8W0QKXkgkIEmjzUDuh11TSuVkn348DLHs1Y7/kzTi+ksX8GLn0wBRrdvCQS949C43fstj6FhfM8Unfqqwv3gf3+/kDMJgHC0kwnjEAAAAASUVORK5CYII=";
|
|
67
85
|
readonly copilot: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHJ4PSI2IiBmaWxsPSIjMWYxZjFmIi8+PHBhdGggZD0iTTE0IDVjLTQuOTcgMC05IDQuMDMtOSA5IDAgMy45NyAyLjU2IDcuMzQgNi4xMiA4LjUzLjQ1LjA4LjYxLS4xOS42MS0uNDN2LTEuNjdjLTIuNDkuNTQtMy4wMS0xLjA2LTMuMDEtMS4wNi0uNDEtMS4wNC0uOTktMS4zMS0uOTktMS4zMS0uODEtLjU2LjA2LS41NC4wNi0uNTQuOS4wNiAxLjM3LjkyIDEuMzcuOTIuOCAxLjM3IDIuMDkuOTggMi42Ljc0LjA4LS41OC4zMS0uOTguNTctMS4yLTEuOTktLjIzLTQuMDgtLjk5LTQuMDgtNC40MiAwLS45OC4zNS0xLjc4LjkyLTIuNDEtLjA5LS4yMy0uNC0xLjE0LjA5LTIuMzcgMCAwIC43NS0uMjQgMi40Ni45Mi43MS0uMiAxLjQ4LS4zIDIuMjQtLjNzMS41My4xIDIuMjQuMzFjMS43MS0xLjE2IDIuNDYtLjkyIDIuNDYtLjkyLjQ5IDEuMjMuMTggMi4xNC4wOSAyLjM3LjU3LjYzLjkyIDEuNDMuOTIgMi40MSAwIDMuNDQtMi4xIDQuMTktNC4wOSA0LjQxLjMyLjI4LjYxLjgyLjYxIDEuNjZ2Mi40NmMwIC4yNC4xNi41MS42MS40M0MxOS40NCAyMS4zNCAyMiAxOC4wMyAyMiAxNGMwLTQuOTctNC4wMy05LTktOVoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=";
|
|
68
86
|
readonly codex: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAP1BMVEVHcEwAgPgAgPgAgPcAgPcAgPcAgPcAgPcAgPcAgPcAd/dzsvq+2/2Kvvtfpvru+P/Z6/77/v83lvmnzfwbjPhuMd/TAAAACnRSTlMAF0adyun/9k+LLZxzywAAAXZJREFUeAFkUlmWwyAMC03qZITxAtz/rPNiaLpEvwhJCC1vpMe6PYn2bT3Sckf6e9KF55pux/SDvy9K2uiG7YNx7BQAgDdjP677r/PMXOhN2tOXPkSN2byUkis+XV75vBFA7mqugpE0BKY+M0DNuQIoXgbjlFinv1Zk0wxUAppeEin66ebe4Q2o7J6pq4zG0nLEfTPRDhUUNSlu3fKQeAwH0V5PQlPV1kHFfcZcl20GPAnuuWe1DIjx7HPZw+EkEOJ1cDcBtCBCLBGhGVVlimTQ3FxQbHgEgaoLuoVx6FiG+CQ8h4RWUFYVdHYhy8iDsEfI6IEjvTlrEJgxQq7DQ8W0kbgKgiAu85mPQYiiPZo+LdRnUcesGsZAzxVozp2MBa+q5293bx2gs2kgK2hgvb4b4mpsWgggbS9C+hgMcmtFrRT2ck37e9IAajHjjJ9hz9FO0n201+wn7rP/H76MQzjrIZQwI2deTqz5m4OZhR0oycLMhCQNACpMHlEZrAKTAAAAAElFTkSuQmCC";
|
|
69
87
|
readonly gemini: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEMklEQVR4Ab2XA5AkSRSGv5ddXb095t2tbdu2bW/wbNsXONuBs23bttY2p2e7Kt/1VNQZ3cMv4o9U46+XrxJCSIvLduTv0ezjPTGzfaGNCk5KWAEVyMVSrKFQSsJ6UUolWAp9j5i3j2hK7sG9uMl9Ke0NtQ8nuS+ZKn+IeAceSLj2qtZ3X7sHQACaXLC3434n/rQvNLWiSNk21CZR0ZQIFEUprJDalIKSgoo6QTuo1/PKiHr7A7nJoCQalnG/jPriB2ZSfSv3+zKh+ZO3fCfBk/t5n1uhaeTn54m9dw1m70Zqg/r1sjiySSvG5uXgeGUrdyTzuslhF5Sf70Ui5wR//tIZgFKbCHBxq/aMy42jas8xKmY2Cm7qyUGpbRS4fu1KrHEwyGyjmNbmwFZk30bqivXlCbZ6igptDYqD71HXJDCAcY0Aki5ssRwQoSaxxglkhPSUtxrJzvn3kGwzGsRQE6hUGIhiUJA0uScKfkkbdk+4DH/xA7jtJyHGqXYEfBPNLAKCIApqYU9hcxhzDvWXPEhp5xkYx62qgTACpI9AZNsPODtXYxQ8YLsY9uQ1oHDYyfRNGWnTfR7RaLzyBsTBiJKWyJZvyL97FrnPnU506w8kVCpMBNqXXUrzgUcxc8kD9O+1hHgsNzMDEiYhgJABanF/fIGCexeQ/8TxJDZ/zTYxbAuNHIgX0KXPCo5bfC9Tey8mN5aTJgIRbJgDlUMVd+Ub5N+3DH3kSHas/4RtSEphRNwc+vVcQq8WA9NEIBpEwAlzoEqYtR9QntL6+p2xvZYSa9qPGBAzDuVOFv+HBkkoGFGqTXLjl6x95gx+/PqJ33MjIZLRQuRQTTQaJ9F5JvHuC7DZRWxTHxdDAkmbhL4x4RRQeTSWS3nnuZR1m4+XVUBClBiWmFaUcMD6GUQgEk6BkjEaLyTZ5yj2L3yaRJ8j0HqF4fogbMewZct3fPHM6az6+vGM1gFHEDIi+xD8zkvw2s/ARuNgFBOatwjuuo+IfXgH+9e8V6l1wCETGg3CjrgCdaKIgCgYCxjFWf0O7se342z8rEq7oSMKmm4zipdgxP3jg9ZiVr+C89ntmG3fVWs3dADSToOCUVDfx6x6FueLO2HXL9XcDUMDkkkO2oPww0PI13cie9fX6IHEQSGdCf3lmUBVI815wICHONQ1ESdeYeKgEfRHiZdCTn3qitLcQ8nJLsEz7vdG4AEQpOdxgFDbiAhT+iwlmAJxHzT5yd1XirCKZmNh2GWQ04DaIj+vPvPGnEOXFsPwJbqyrLDgKgHocPreDgec7KctNFNRNLE1vJwSyIZlMMbf+gj7hd+VE15iK1QQ1kuMQ8N4YXCjzrfeSrUHxs85u8X3Qkir8zTPet7xvjGzFW3jG4kqYP9uICj/3h+OhX0xlGJseIUPhSZT7e+LsA/4ZVx9zHnFewB+BQL7BcuXk7EZAAAAAElFTkSuQmCC";
|
|
70
88
|
readonly opencode: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAABl0lEQVRYCe1XS2rDMBAd/70xBJoubJqVF83Sm+YooVcIPUDJTUpOUHIa71Ov0ht4Y/yJ6zEYHFnyZBKKNx4IkTSjNw/pzQhrT4tFDROaPmHuNvVMYPITMCkNVFVFhYz6DcMY9SsJ1HUNmqbB1+EAYRiOgqicSZLAx24HHZYsTkmgC46iCF7X627K+vc8j4wnNVAUBQmiCrhlL3kCIjilCerORTwWgTzP4X27hd/zGcRESOxltYLv4xFs2xbzKOcsAiimn9MJUFymeb21LEvIsqwVnDKbxHGNIgkQl8ymrDC5SADj0Mc1NgGjSW5Z1oAAliz6uMbaoes6vG027V3LNOD7PmAMx1gEENhxHHBdVypC9HGNTQCF2P36yWRrfb9qzDsvFcoD6zMBtgaw48nasWqduh0WAaz1IAjAalqtIZRbdbnA83LZPuFU0r6fRQC73+d+398/GP97H+AmGDAUFsgqwLZ7r92yl7yCOI4hTdO7OOCrSZlGfRnJFE+B9v3im9H34Zg8AQpABOTOSQ1wAbnxM4HJT+APfgFr0DSNhC0AAAAASUVORK5CYII=";
|
|
71
89
|
};
|
|
72
|
-
type
|
|
73
|
-
declare const
|
|
74
|
-
declare function
|
|
75
|
-
|
|
90
|
+
type CodingAgentKey = 'claude' | 'gemini' | 'codex' | 'copilot' | 'opencode';
|
|
91
|
+
declare const CODING_AGENT_NAMES: Record<CodingAgentKey, string>;
|
|
92
|
+
declare function CodingAgentIcon({ agent, size, showName, selected, accentColor, className, style }: {
|
|
93
|
+
agent: string;
|
|
76
94
|
size?: number;
|
|
77
95
|
showName?: boolean;
|
|
96
|
+
selected?: boolean;
|
|
97
|
+
accentColor?: FormColor;
|
|
78
98
|
className?: string;
|
|
79
99
|
style?: React.CSSProperties;
|
|
80
100
|
}): react_jsx_runtime.JSX.Element | null;
|
|
81
101
|
|
|
102
|
+
type GitProviderKey = 'github' | 'gitlab' | 'gerrit';
|
|
103
|
+
declare const GIT_PROVIDER_NAMES: Record<GitProviderKey, string>;
|
|
104
|
+
declare function GitProviderIcon({ provider, size, className }: {
|
|
105
|
+
provider: string;
|
|
106
|
+
size?: number;
|
|
107
|
+
className?: string;
|
|
108
|
+
}): react_jsx_runtime.JSX.Element | null;
|
|
109
|
+
|
|
110
|
+
type CustomIconKey = 'gerrit';
|
|
111
|
+
declare const CUSTOM_ICON_NAMES: Record<CustomIconKey, string>;
|
|
112
|
+
declare function CustomIcon({ icon, size, className }: {
|
|
113
|
+
icon: string;
|
|
114
|
+
size?: number;
|
|
115
|
+
className?: string;
|
|
116
|
+
}): react_jsx_runtime.JSX.Element | null;
|
|
117
|
+
|
|
82
118
|
interface TooltipContent {
|
|
83
119
|
title?: string;
|
|
84
120
|
/** Description can be a string or React node for rich content with icons/colors */
|
|
@@ -105,13 +141,14 @@ interface TooltipProps {
|
|
|
105
141
|
trigger?: 'hover' | 'click';
|
|
106
142
|
/** Additional classes for the wrapper element (e.g., 'h-full' for flex containers) */
|
|
107
143
|
wrapperClassName?: string;
|
|
144
|
+
accentColor?: FormColor;
|
|
108
145
|
}
|
|
109
146
|
/**
|
|
110
147
|
* Portal-based tooltip that renders at document body level.
|
|
111
148
|
* This ensures tooltips always appear above all other elements,
|
|
112
149
|
* regardless of parent overflow or z-index settings.
|
|
113
150
|
*/
|
|
114
|
-
declare function Tooltip({ children, content, position, align, multiline, maxWidth, maxHeight, trigger, interactive, wrapperClassName, }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
151
|
+
declare function Tooltip({ children, content, position, align, multiline, maxWidth, maxHeight, trigger, interactive, wrapperClassName, accentColor, }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
115
152
|
/**
|
|
116
153
|
* Simple tooltip wrapper for icon buttons.
|
|
117
154
|
* Provides consistent styling for action button tooltips.
|
|
@@ -222,12 +259,20 @@ declare const iconMap: {
|
|
|
222
259
|
readonly home: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
223
260
|
readonly 'pie-chart': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
224
261
|
readonly 'settings-2': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
262
|
+
readonly 'folder-search': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
263
|
+
readonly 'panel-left-close': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
264
|
+
readonly 'trash-2': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
265
|
+
readonly 'rotate-ccw': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
266
|
+
readonly history: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
267
|
+
readonly github: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
268
|
+
readonly gitlab: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
269
|
+
readonly 'git-branch': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
225
270
|
};
|
|
226
271
|
type IconName = keyof typeof iconMap;
|
|
227
272
|
interface ActionItem {
|
|
228
273
|
icon: IconName;
|
|
229
274
|
onClick: () => void;
|
|
230
|
-
|
|
275
|
+
accentColor?: IconButtonColor;
|
|
231
276
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
232
277
|
variant?: IconButtonVariant;
|
|
233
278
|
tooltip?: TooltipContent;
|
|
@@ -246,11 +291,11 @@ interface IconButtonProps {
|
|
|
246
291
|
/** When provided, renders an <a> tag instead of <button>. Opens in a new tab. */
|
|
247
292
|
href?: string;
|
|
248
293
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
249
|
-
|
|
294
|
+
accentColor?: IconButtonColor;
|
|
250
295
|
variant?: IconButtonVariant;
|
|
251
296
|
active?: boolean;
|
|
252
297
|
disabled?: boolean;
|
|
253
|
-
/** Async action status. Overrides icon,
|
|
298
|
+
/** Async action status. Overrides icon, accentColor, and active state when set. */
|
|
254
299
|
status?: IconButtonStatus;
|
|
255
300
|
/** Tooltip shown on hover. Title and description are required. */
|
|
256
301
|
tooltip?: TooltipContent;
|
|
@@ -262,20 +307,20 @@ interface IconButtonProps {
|
|
|
262
307
|
/** Test ID for E2E testing */
|
|
263
308
|
testId?: string;
|
|
264
309
|
}
|
|
265
|
-
declare function IconButton({ icon, onClick, href, size,
|
|
310
|
+
declare function IconButton({ icon, onClick, href, size, accentColor, variant, active, disabled, status, tooltip, tooltipPosition, badge, badgeColor, strikethrough, className, testId, }: IconButtonProps): react_jsx_runtime.JSX.Element;
|
|
266
311
|
interface CollapseButtonProps {
|
|
267
312
|
collapsed: boolean;
|
|
268
313
|
onToggle: () => void;
|
|
269
314
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
270
|
-
|
|
315
|
+
accentColor?: IconButtonColor;
|
|
271
316
|
tooltipPosition?: 'bottom' | 'bottom-left' | 'left' | 'right' | 'top' | 'top-left' | 'top-right';
|
|
272
317
|
}
|
|
273
|
-
declare function CollapseButton({ collapsed, onToggle, size,
|
|
318
|
+
declare function CollapseButton({ collapsed, onToggle, size, accentColor, tooltipPosition }: CollapseButtonProps): react_jsx_runtime.JSX.Element;
|
|
274
319
|
|
|
275
320
|
type LabelColor = AccentColor;
|
|
276
321
|
interface LabelProps {
|
|
277
322
|
text: string;
|
|
278
|
-
|
|
323
|
+
accentColor: LabelColor;
|
|
279
324
|
/** Leading icon(s). Pass a single name or an array for multiple icons before text. */
|
|
280
325
|
icon?: IconName | IconName[];
|
|
281
326
|
/** Custom icon component. Takes precedence over icon. */
|
|
@@ -296,12 +341,12 @@ interface LabelProps {
|
|
|
296
341
|
}
|
|
297
342
|
/** Smart capitalize: capitalizes first letter of each word separated by spaces or dashes */
|
|
298
343
|
declare function smartCapitalize(value: string): string;
|
|
299
|
-
declare function Label({ text,
|
|
344
|
+
declare function Label({ text, accentColor, icon, IconComponent: CustomIcon, tooltip, size, textTransform, progress, onClick, className, testId, }: LabelProps): react_jsx_runtime.JSX.Element;
|
|
300
345
|
|
|
301
346
|
type BadgeColor = AccentColor;
|
|
302
347
|
interface BadgeProps {
|
|
303
348
|
value: number | string;
|
|
304
|
-
|
|
349
|
+
accentColor?: BadgeColor;
|
|
305
350
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
306
351
|
className?: string;
|
|
307
352
|
testId?: string;
|
|
@@ -310,7 +355,7 @@ declare const Badge: react.NamedExoticComponent<BadgeProps>;
|
|
|
310
355
|
|
|
311
356
|
type ConfirmBadgeColor = AccentColor;
|
|
312
357
|
interface ConfirmBadgeProps {
|
|
313
|
-
|
|
358
|
+
accentColor?: ConfirmBadgeColor;
|
|
314
359
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
315
360
|
className?: string;
|
|
316
361
|
testId?: string;
|
|
@@ -325,7 +370,7 @@ interface CheckboxProps {
|
|
|
325
370
|
onChange: (checked: boolean) => void;
|
|
326
371
|
disabled?: boolean;
|
|
327
372
|
size?: CheckboxSize;
|
|
328
|
-
|
|
373
|
+
accentColor?: CheckboxColor;
|
|
329
374
|
variant?: CheckboxVariant;
|
|
330
375
|
className?: string;
|
|
331
376
|
/** Accessible label — required for screen readers */
|
|
@@ -333,7 +378,7 @@ interface CheckboxProps {
|
|
|
333
378
|
/** Test ID for E2E testing */
|
|
334
379
|
testId?: string;
|
|
335
380
|
}
|
|
336
|
-
declare function Checkbox({ checked, onChange, disabled, size,
|
|
381
|
+
declare function Checkbox({ checked, onChange, disabled, size, accentColor, variant, className, 'aria-label': ariaLabel, testId, }: CheckboxProps): react_jsx_runtime.JSX.Element;
|
|
337
382
|
|
|
338
383
|
type ToggleColor = AccentColor;
|
|
339
384
|
type ToggleSize = 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
@@ -343,13 +388,13 @@ interface ToggleProps {
|
|
|
343
388
|
disabled?: boolean;
|
|
344
389
|
size?: ToggleSize;
|
|
345
390
|
className?: string;
|
|
346
|
-
|
|
391
|
+
accentColor?: ToggleColor;
|
|
347
392
|
/** Accessible label — required for screen readers */
|
|
348
393
|
'aria-label'?: string;
|
|
349
394
|
/** Test ID for E2E testing */
|
|
350
395
|
testId?: string;
|
|
351
396
|
}
|
|
352
|
-
declare function Toggle({ checked, onChange, disabled, size, className,
|
|
397
|
+
declare function Toggle({ checked, onChange, disabled, size, className, accentColor, 'aria-label': ariaLabel, testId, }: ToggleProps): react_jsx_runtime.JSX.Element;
|
|
353
398
|
|
|
354
399
|
interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'type'> {
|
|
355
400
|
value: string;
|
|
@@ -358,7 +403,7 @@ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChan
|
|
|
358
403
|
debounceMs?: number;
|
|
359
404
|
error?: boolean | string;
|
|
360
405
|
variant?: 'filled' | 'outline';
|
|
361
|
-
|
|
406
|
+
accentColor?: FormColor;
|
|
362
407
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
363
408
|
mono?: boolean;
|
|
364
409
|
/** Test ID for E2E testing */
|
|
@@ -375,21 +420,22 @@ interface NumberInputProps {
|
|
|
375
420
|
max?: number;
|
|
376
421
|
step?: number;
|
|
377
422
|
variant?: 'filled' | 'outline';
|
|
378
|
-
|
|
423
|
+
accentColor?: FormColor;
|
|
379
424
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
380
425
|
disabled?: boolean;
|
|
381
426
|
className?: string;
|
|
382
427
|
/** Accessible label — required for screen readers */
|
|
383
428
|
'aria-label'?: string;
|
|
384
429
|
}
|
|
385
|
-
declare function NumberInput({ value, onChange, min, max, step, variant,
|
|
430
|
+
declare function NumberInput({ value, onChange, min, max, step, variant, accentColor, size, disabled, className, 'aria-label': ariaLabel, }: NumberInputProps): react_jsx_runtime.JSX.Element;
|
|
386
431
|
|
|
387
432
|
type ScopeType = 'user' | 'project' | 'local' | 'read-only';
|
|
388
433
|
interface ScopeBadgeProps {
|
|
389
434
|
scope: ScopeType;
|
|
390
435
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
436
|
+
accentColor?: FormColor;
|
|
391
437
|
}
|
|
392
|
-
declare function ScopeBadge({ scope, size }: ScopeBadgeProps): react_jsx_runtime.JSX.Element;
|
|
438
|
+
declare function ScopeBadge({ scope, size, accentColor }: ScopeBadgeProps): react_jsx_runtime.JSX.Element;
|
|
393
439
|
|
|
394
440
|
interface SegmentedToggleOption<T extends string> {
|
|
395
441
|
value: T;
|
|
@@ -411,13 +457,13 @@ interface SegmentedToggleProps<T extends string> {
|
|
|
411
457
|
/** Tooltip shown on the entire toggle when disabled */
|
|
412
458
|
disabledTooltip?: TooltipContent;
|
|
413
459
|
}
|
|
414
|
-
declare function SegmentedToggle<T extends string>({ options, value, onChange, accentColor, variant, size, tooltipPosition, testId, disabled, disabledTooltip, }: SegmentedToggleProps<T>): react_jsx_runtime.JSX.Element;
|
|
460
|
+
declare function SegmentedToggle<T extends string>({ options, value, onChange, accentColor: accentColorProp, variant, size, tooltipPosition, testId, disabled, disabledTooltip, }: SegmentedToggleProps<T>): react_jsx_runtime.JSX.Element;
|
|
415
461
|
|
|
416
462
|
interface ResizableTextareaBaseProps {
|
|
417
463
|
wrapperClassName?: string;
|
|
418
464
|
resizable?: boolean;
|
|
419
465
|
variant?: 'filled' | 'outline';
|
|
420
|
-
|
|
466
|
+
accentColor?: FormColor;
|
|
421
467
|
}
|
|
422
468
|
interface ResizableTextareaFieldProps extends ResizableTextareaBaseProps, Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'color'> {
|
|
423
469
|
mode?: never;
|
|
@@ -457,13 +503,13 @@ interface SelectProps<T extends string | number = string> {
|
|
|
457
503
|
onChange: (value: T) => void;
|
|
458
504
|
placeholder?: string;
|
|
459
505
|
variant?: 'filled' | 'outline';
|
|
460
|
-
|
|
506
|
+
accentColor?: FormColor;
|
|
461
507
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
462
508
|
align?: 'left' | 'right';
|
|
463
509
|
disabled?: boolean;
|
|
464
510
|
className?: string;
|
|
465
511
|
}
|
|
466
|
-
declare function Select<T extends string | number = string>({ value, options, onChange, placeholder, variant,
|
|
512
|
+
declare function Select<T extends string | number = string>({ value, options, onChange, placeholder, variant, accentColor, size, align, disabled, className, }: SelectProps<T>): react_jsx_runtime.JSX.Element;
|
|
467
513
|
|
|
468
514
|
interface FilterDropdownProps {
|
|
469
515
|
value: string;
|
|
@@ -476,9 +522,9 @@ interface FilterDropdownProps {
|
|
|
476
522
|
labelExtra?: ReactNode;
|
|
477
523
|
clearable?: boolean;
|
|
478
524
|
variant?: 'filled' | 'outline';
|
|
479
|
-
|
|
525
|
+
accentColor?: FormColor;
|
|
480
526
|
}
|
|
481
|
-
declare function FilterDropdown({ value, onChange, options, allLabel, labelExtra, clearable, variant,
|
|
527
|
+
declare function FilterDropdown({ value, onChange, options, allLabel, labelExtra, clearable, variant, accentColor, }: FilterDropdownProps): react_jsx_runtime.JSX.Element;
|
|
482
528
|
|
|
483
529
|
interface SortField {
|
|
484
530
|
value: string;
|
|
@@ -495,9 +541,9 @@ interface SortDropdownProps {
|
|
|
495
541
|
onToggleDirection: () => void;
|
|
496
542
|
fields: SortField[];
|
|
497
543
|
variant?: 'filled' | 'outline';
|
|
498
|
-
|
|
544
|
+
accentColor?: FormColor;
|
|
499
545
|
}
|
|
500
|
-
declare function SortDropdown({ field, ascending, onFieldChange, onToggleDirection, fields, variant,
|
|
546
|
+
declare function SortDropdown({ field, ascending, onFieldChange, onToggleDirection, fields, variant, accentColor, }: SortDropdownProps): react_jsx_runtime.JSX.Element;
|
|
501
547
|
|
|
502
548
|
interface FormActionsProps {
|
|
503
549
|
/** Cancel handler — renders X button. Optional (e.g. AlertModal has no cancel). */
|
|
@@ -513,7 +559,7 @@ interface FormActionsProps {
|
|
|
513
559
|
onConfirm?: () => void;
|
|
514
560
|
confirmTooltip?: string;
|
|
515
561
|
confirmIcon?: IconName;
|
|
516
|
-
confirmColor?: IconButtonProps['
|
|
562
|
+
confirmColor?: IconButtonProps['accentColor'];
|
|
517
563
|
confirmDisabled?: boolean;
|
|
518
564
|
confirmStatus?: IconButtonStatus;
|
|
519
565
|
/** Next handler — optional, renders right-arrow for wizard navigation */
|
|
@@ -523,8 +569,9 @@ interface FormActionsProps {
|
|
|
523
569
|
statusText?: string;
|
|
524
570
|
border?: boolean;
|
|
525
571
|
padding?: 'compact' | 'normal' | 'modal';
|
|
572
|
+
accentColor?: FormColor;
|
|
526
573
|
}
|
|
527
|
-
declare function FormActions({ onCancel, cancelTooltip, onBack, backTooltip, onMinimize, minimizeTooltip, onConfirm, confirmTooltip, confirmIcon, confirmColor, confirmDisabled, confirmStatus, onNext, nextTooltip, statusText, border, padding, }: FormActionsProps): react_jsx_runtime.JSX.Element;
|
|
574
|
+
declare function FormActions({ onCancel, cancelTooltip, onBack, backTooltip, onMinimize, minimizeTooltip, onConfirm, confirmTooltip, confirmIcon, confirmColor, confirmDisabled, confirmStatus, onNext, nextTooltip, statusText, border, padding, accentColor, }: FormActionsProps): react_jsx_runtime.JSX.Element;
|
|
528
575
|
|
|
529
576
|
type ModalKind = 'info' | 'warning' | 'error' | 'orange' | 'success';
|
|
530
577
|
type ModalSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
@@ -540,16 +587,18 @@ interface ConfirmModalProps {
|
|
|
540
587
|
confirmColor?: 'red' | 'blue' | 'orange' | 'yellow';
|
|
541
588
|
isLoading?: boolean;
|
|
542
589
|
confirmDisabled?: boolean;
|
|
590
|
+
accentColor?: FormColor;
|
|
543
591
|
}
|
|
544
|
-
declare function ConfirmModal({ isOpen, onClose, onConfirm, title, message, warning, warningItems, kind, confirmColor, isLoading, confirmDisabled, }: ConfirmModalProps): react_jsx_runtime.JSX.Element;
|
|
592
|
+
declare function ConfirmModal({ isOpen, onClose, onConfirm, title, message, warning, warningItems, kind, confirmColor, isLoading, confirmDisabled, accentColor: accentColorProp, }: ConfirmModalProps): react_jsx_runtime.JSX.Element;
|
|
545
593
|
interface AlertModalProps {
|
|
546
594
|
isOpen: boolean;
|
|
547
595
|
onClose: () => void;
|
|
548
596
|
title: string;
|
|
549
597
|
message: string;
|
|
550
598
|
kind?: ModalKind;
|
|
599
|
+
accentColor?: FormColor;
|
|
551
600
|
}
|
|
552
|
-
declare function AlertModal({ isOpen, onClose, title, message, kind, }: AlertModalProps): react_jsx_runtime.JSX.Element;
|
|
601
|
+
declare function AlertModal({ isOpen, onClose, title, message, kind, accentColor: accentColorProp, }: AlertModalProps): react_jsx_runtime.JSX.Element;
|
|
553
602
|
|
|
554
603
|
type IconProps = {
|
|
555
604
|
className?: string;
|
|
@@ -588,8 +637,9 @@ interface SelectionGridProps {
|
|
|
588
637
|
/** Number of columns for grid layout (auto if not set) */
|
|
589
638
|
columns?: number;
|
|
590
639
|
className?: string;
|
|
640
|
+
accentColor?: FormColor;
|
|
591
641
|
}
|
|
592
|
-
declare function SelectionGrid({ items: itemsProp, presets, selectedIds, onSelect, mode, layout, columns, className, }: SelectionGridProps): react_jsx_runtime.JSX.Element;
|
|
642
|
+
declare function SelectionGrid({ items: itemsProp, presets, selectedIds, onSelect, mode, layout, columns, className, accentColor, }: SelectionGridProps): react_jsx_runtime.JSX.Element;
|
|
593
643
|
|
|
594
644
|
interface DetailRow {
|
|
595
645
|
label: string;
|
|
@@ -604,8 +654,9 @@ interface DetailSectionProps {
|
|
|
604
654
|
/** Detail rows to display */
|
|
605
655
|
rows: DetailRow[];
|
|
606
656
|
className?: string;
|
|
657
|
+
accentColor?: FormColor;
|
|
607
658
|
}
|
|
608
|
-
declare function DetailSection({ title, icon, rows, className }: DetailSectionProps): react_jsx_runtime.JSX.Element;
|
|
659
|
+
declare function DetailSection({ title, icon, rows, className, accentColor }: DetailSectionProps): react_jsx_runtime.JSX.Element;
|
|
609
660
|
|
|
610
661
|
interface ActionDialogProps {
|
|
611
662
|
/** Dialog title */
|
|
@@ -632,11 +683,11 @@ interface ActionDialogProps {
|
|
|
632
683
|
submitDisabled?: boolean;
|
|
633
684
|
/** Status text shown in footer left */
|
|
634
685
|
statusText?: string;
|
|
635
|
-
/** Label above the selection grid (e.g. "
|
|
686
|
+
/** Label above the selection grid (e.g. "Coding Agent:") */
|
|
636
687
|
selectionLabel?: string;
|
|
637
688
|
/** Custom selection items - renders SelectionGrid when provided */
|
|
638
689
|
items?: SelectionCardItem[];
|
|
639
|
-
/** Built-in
|
|
690
|
+
/** Built-in coding agent presets. Ignored when `items` is provided. */
|
|
640
691
|
presets?: CodingToolPresetConfig[];
|
|
641
692
|
/** Currently selected item IDs */
|
|
642
693
|
selectedIds?: string[];
|
|
@@ -672,8 +723,10 @@ interface ActionDialogProps {
|
|
|
672
723
|
children?: React.ReactNode;
|
|
673
724
|
/** Additional className */
|
|
674
725
|
className?: string;
|
|
726
|
+
/** Accent color for themed sub-components */
|
|
727
|
+
accentColor?: FormColor;
|
|
675
728
|
}
|
|
676
|
-
declare function ActionDialog({ title, subtitle, icon, iconColor, onSettings, onCancel, onSubmit, submitLabel, submitIcon, submitColor, submitDisabled, statusText, selectionLabel, items, presets, selectedIds, onSelect, selectionMode, selectionLayout, selectionColumns, scenarioLabel, scenarios, selectedScenarioIds, onSelectScenarios, scenarioLayout, scenarioColumns, executionDetails, allowDirectEdits, onAllowDirectEditsChange, executionWarning, children, className, }: ActionDialogProps): react.ReactPortal;
|
|
729
|
+
declare function ActionDialog({ title, subtitle, icon, iconColor, onSettings, onCancel, onSubmit, submitLabel, submitIcon, submitColor, submitDisabled, statusText, selectionLabel, items, presets, selectedIds, onSelect, selectionMode, selectionLayout, selectionColumns, scenarioLabel, scenarios, selectedScenarioIds, onSelectScenarios, scenarioLayout, scenarioColumns, executionDetails, allowDirectEdits, onAllowDirectEditsChange, executionWarning, children, className, accentColor: accentColorProp, }: ActionDialogProps): react.ReactPortal;
|
|
677
730
|
|
|
678
731
|
interface ExecutionDetailsPanelProps {
|
|
679
732
|
details: DetailRow[];
|
|
@@ -683,8 +736,9 @@ interface ExecutionDetailsPanelProps {
|
|
|
683
736
|
/** Warning message shown below the toggle */
|
|
684
737
|
warningMessage?: string;
|
|
685
738
|
className?: string;
|
|
739
|
+
accentColor?: FormColor;
|
|
686
740
|
}
|
|
687
|
-
declare function ExecutionDetailsPanel({ details, allowDirectEdits, onAllowDirectEditsChange, warningMessage, className, }: ExecutionDetailsPanelProps): react_jsx_runtime.JSX.Element;
|
|
741
|
+
declare function ExecutionDetailsPanel({ details, allowDirectEdits, onAllowDirectEditsChange, warningMessage, className, accentColor: accentColorProp, }: ExecutionDetailsPanelProps): react_jsx_runtime.JSX.Element;
|
|
688
742
|
|
|
689
743
|
interface FileTreeNode {
|
|
690
744
|
name: string;
|
|
@@ -703,7 +757,7 @@ interface FileTreeProps {
|
|
|
703
757
|
}
|
|
704
758
|
/** Collect all directory paths that would be rendered in the tree */
|
|
705
759
|
declare function collectDirPaths(nodes: FileTreeNode[], rootName?: string, prefix?: string): Set<string>;
|
|
706
|
-
declare function FileTree({ nodes, rootName, selectedPath, onSelectFile, prefix, expandedPaths, onTogglePath, accentColor }: FileTreeProps): react_jsx_runtime.JSX.Element;
|
|
760
|
+
declare function FileTree({ nodes, rootName, selectedPath, onSelectFile, prefix, expandedPaths, onTogglePath, accentColor: accentColorProp }: FileTreeProps): react_jsx_runtime.JSX.Element;
|
|
707
761
|
|
|
708
762
|
interface EditorToolbarProps {
|
|
709
763
|
/** Optional title displayed in the toolbar */
|
|
@@ -733,8 +787,9 @@ interface EditorToolbarProps {
|
|
|
733
787
|
leftActions?: ActionItem[];
|
|
734
788
|
/** Optional: Additional action buttons on the right side (before save) */
|
|
735
789
|
rightActions?: ActionItem[];
|
|
790
|
+
accentColor?: FormColor;
|
|
736
791
|
}
|
|
737
|
-
declare function EditorToolbar({ title, description, isDirty, isSaving, onSave, canReset, onReset, resetTooltip, isReadOnly, hasError, leftActions, rightActions, }: EditorToolbarProps): react_jsx_runtime.JSX.Element | null;
|
|
792
|
+
declare function EditorToolbar({ title, description, isDirty, isSaving, onSave, canReset, onReset, resetTooltip, isReadOnly, hasError, leftActions, rightActions, accentColor: _accentColor, }: EditorToolbarProps): react_jsx_runtime.JSX.Element | null;
|
|
738
793
|
|
|
739
794
|
/** Status banner configuration for outdated/info messages */
|
|
740
795
|
interface StatusBanner {
|
|
@@ -791,8 +846,9 @@ interface BottomPanelHeaderProps<T extends string = string> {
|
|
|
791
846
|
statusBanner?: StatusBanner;
|
|
792
847
|
/** Callback when collapse button is clicked */
|
|
793
848
|
onCollapse?: () => void;
|
|
849
|
+
accentColor?: FormColor;
|
|
794
850
|
}
|
|
795
|
-
declare function BottomPanelHeader<T extends string = string>({ tabs, activeTab, onTabChange, actions, customActions, className, customLeftContent, statusBanner, onCollapse, }: BottomPanelHeaderProps<T>): react_jsx_runtime.JSX.Element;
|
|
851
|
+
declare function BottomPanelHeader<T extends string = string>({ tabs, activeTab, onTabChange, actions, customActions, className, customLeftContent, statusBanner, onCollapse, accentColor: _accentColor, }: BottomPanelHeaderProps<T>): react_jsx_runtime.JSX.Element;
|
|
796
852
|
|
|
797
853
|
interface FrontmatterFormHeaderProps {
|
|
798
854
|
collapsed: boolean;
|
|
@@ -805,8 +861,9 @@ interface FrontmatterFormHeaderProps {
|
|
|
805
861
|
/** Toggle frontmatter on/off */
|
|
806
862
|
onFrontmatterToggle?: (enabled: boolean) => void;
|
|
807
863
|
readOnly?: boolean;
|
|
864
|
+
accentColor?: FormColor;
|
|
808
865
|
}
|
|
809
|
-
declare function FrontmatterFormHeader({ collapsed, onToggle, renderSummary, children, frontmatterEnabled, onFrontmatterToggle, readOnly, }: FrontmatterFormHeaderProps): react_jsx_runtime.JSX.Element;
|
|
866
|
+
declare function FrontmatterFormHeader({ collapsed, onToggle, renderSummary, children, frontmatterEnabled, onFrontmatterToggle, readOnly, accentColor, }: FrontmatterFormHeaderProps): react_jsx_runtime.JSX.Element;
|
|
810
867
|
|
|
811
868
|
interface EditorPlaceholderCardProps {
|
|
812
869
|
/** Placeholder name (without braces) */
|
|
@@ -820,7 +877,7 @@ interface EditorPlaceholderCardProps {
|
|
|
820
877
|
/** Label for the value section (default: "Value:") */
|
|
821
878
|
valueLabel?: string;
|
|
822
879
|
/** Color scheme */
|
|
823
|
-
accentColor?:
|
|
880
|
+
accentColor?: FormColor;
|
|
824
881
|
/** Action buttons to show on the right (e.g., edit/delete for settings) */
|
|
825
882
|
actions?: ActionItem[];
|
|
826
883
|
/** Show copy button that copies the {{PLACEHOLDER}} syntax */
|
|
@@ -844,11 +901,12 @@ interface DetailViewWrapperProps {
|
|
|
844
901
|
/** Optional right sidebar */
|
|
845
902
|
rightSidebar?: ReactNode;
|
|
846
903
|
showRightSidebar?: boolean;
|
|
904
|
+
accentColor?: FormColor;
|
|
847
905
|
}
|
|
848
|
-
declare function DetailViewWrapper({ editorContent, actions, bottomPanel, rightSidebar, showRightSidebar, }: DetailViewWrapperProps): react_jsx_runtime.JSX.Element;
|
|
906
|
+
declare function DetailViewWrapper({ editorContent, actions, bottomPanel, rightSidebar, showRightSidebar, accentColor, }: DetailViewWrapperProps): react_jsx_runtime.JSX.Element;
|
|
849
907
|
|
|
850
908
|
type RegistryItemType = 'skill' | 'hook' | 'agent' | 'command' | 'plugin' | 'mcp' | 'settings';
|
|
851
|
-
type
|
|
909
|
+
type CapabilitySource = 'project' | 'plugin' | 'user' | 'local';
|
|
852
910
|
interface SeedrItemStatus {
|
|
853
911
|
updateAvailable: boolean;
|
|
854
912
|
modified: boolean;
|
|
@@ -864,6 +922,7 @@ interface RegistryCardBase {
|
|
|
864
922
|
isInstalling?: boolean;
|
|
865
923
|
updatedAt?: string;
|
|
866
924
|
onDateClick?: () => void;
|
|
925
|
+
accentColor?: FormColor;
|
|
867
926
|
}
|
|
868
927
|
interface SeedrVariant extends RegistryCardBase {
|
|
869
928
|
variant: 'seedr';
|
|
@@ -871,14 +930,14 @@ interface SeedrVariant extends RegistryCardBase {
|
|
|
871
930
|
sourceType: string;
|
|
872
931
|
pluginType?: string;
|
|
873
932
|
wrapper?: string;
|
|
874
|
-
installedScopes?: ReadonlySet<
|
|
933
|
+
installedScopes?: ReadonlySet<CapabilitySource>;
|
|
875
934
|
viewScope?: 'user' | 'project';
|
|
876
935
|
status?: SeedrItemStatus;
|
|
877
936
|
compatibility: string[];
|
|
878
937
|
packageCounts?: Record<string, number>;
|
|
879
938
|
isDisabled?: boolean;
|
|
880
939
|
onActivate?: () => void;
|
|
881
|
-
onRemove?: (scope:
|
|
940
|
+
onRemove?: (scope: CapabilitySource) => void;
|
|
882
941
|
onFilterSource?: () => void;
|
|
883
942
|
onFilterPluginType?: (pluginType: string) => void;
|
|
884
943
|
/** Render scope confirmation modal */
|
|
@@ -895,7 +954,7 @@ interface ClaudePluginsVariant extends RegistryCardBase {
|
|
|
895
954
|
category?: string;
|
|
896
955
|
stars?: number;
|
|
897
956
|
downloads?: number;
|
|
898
|
-
installedScopes?: ReadonlySet<
|
|
957
|
+
installedScopes?: ReadonlySet<CapabilitySource>;
|
|
899
958
|
viewScope?: 'user' | 'project';
|
|
900
959
|
onRemove?: () => void;
|
|
901
960
|
onSortBy?: (field: string) => void;
|
|
@@ -913,7 +972,7 @@ interface ClaudePluginsVariant extends RegistryCardBase {
|
|
|
913
972
|
interface AitmplVariant extends RegistryCardBase {
|
|
914
973
|
variant: 'aitmpl';
|
|
915
974
|
category: string;
|
|
916
|
-
installedScopes?: ReadonlySet<
|
|
975
|
+
installedScopes?: ReadonlySet<CapabilitySource>;
|
|
917
976
|
viewScope?: 'user' | 'project';
|
|
918
977
|
onRemove?: () => void;
|
|
919
978
|
onFilterCategory?: (category: string) => void;
|
|
@@ -929,7 +988,7 @@ interface SkillsShVariant extends RegistryCardBase {
|
|
|
929
988
|
variant: 'skills-sh';
|
|
930
989
|
author: string;
|
|
931
990
|
installs?: number;
|
|
932
|
-
installedScopes?: ReadonlySet<
|
|
991
|
+
installedScopes?: ReadonlySet<CapabilitySource>;
|
|
933
992
|
viewScope?: 'user' | 'project';
|
|
934
993
|
onRemove?: () => void;
|
|
935
994
|
/** All tool keys to show in bottom row */
|
|
@@ -990,10 +1049,12 @@ interface RegistryDetailProps {
|
|
|
990
1049
|
fileStructureVariant?: FileStructureSectionProps['variant'];
|
|
991
1050
|
onFetchContent?: FileStructureSectionProps['onFetchContent'];
|
|
992
1051
|
aboveHeader?: ReactNode;
|
|
1052
|
+
belowHeader?: ReactNode;
|
|
1053
|
+
accentColor?: AccentColor;
|
|
993
1054
|
maxWidth?: string;
|
|
994
1055
|
children?: ReactNode;
|
|
995
1056
|
}
|
|
996
|
-
declare function RegistryDetail({ icon: Icon, iconColor, title, titleExtra, subtitle, actionButton, labels, description, longDescription, integration, compatibleTools, files, rootName, fileStructureVariant, onFetchContent, aboveHeader, maxWidth, children, }: RegistryDetailProps): react_jsx_runtime.JSX.Element;
|
|
1057
|
+
declare function RegistryDetail({ icon: Icon, iconColor, title, titleExtra, subtitle, actionButton, labels, description, longDescription, integration, compatibleTools, files, rootName, fileStructureVariant, onFetchContent, aboveHeader, belowHeader, accentColor, maxWidth, children, }: RegistryDetailProps): react_jsx_runtime.JSX.Element;
|
|
997
1058
|
|
|
998
1059
|
interface RegistryBrowserProps {
|
|
999
1060
|
isLoading: boolean;
|
|
@@ -1022,8 +1083,10 @@ interface RegistryBrowserProps {
|
|
|
1022
1083
|
onScrollChange?: (scrollTop: number) => void;
|
|
1023
1084
|
maxWidth?: string;
|
|
1024
1085
|
items: RegistryCardProps[];
|
|
1086
|
+
/** Accent color for themed sub-components */
|
|
1087
|
+
accentColor?: FormColor;
|
|
1025
1088
|
}
|
|
1026
|
-
declare function RegistryBrowser({ isLoading, loadingMessage, error, isEmpty, emptyMessage, onRetry, searchQuery, onSearchChange, onSearchSubmit, searchPlaceholder, debounceKey, debounceDurationMs, toolbarCenter, toolbarEnd, onRefresh, refreshTooltip, aboveGrid, hasActiveFilters, onResetFilters, initialScrollTop, onScrollChange, maxWidth, items, }: RegistryBrowserProps): react_jsx_runtime.JSX.Element;
|
|
1089
|
+
declare function RegistryBrowser({ isLoading, loadingMessage, error, isEmpty, emptyMessage, onRetry, searchQuery, onSearchChange, onSearchSubmit, searchPlaceholder, debounceKey, debounceDurationMs, toolbarCenter, toolbarEnd, onRefresh, refreshTooltip, aboveGrid, hasActiveFilters, onResetFilters, initialScrollTop, onScrollChange, maxWidth, items, accentColor: accentColorProp, }: RegistryBrowserProps): react_jsx_runtime.JSX.Element;
|
|
1027
1090
|
|
|
1028
1091
|
type AiActionStatus = 'idle' | 'running' | 'completed';
|
|
1029
1092
|
type AiCompletionResult = 'success' | 'partial' | 'error';
|
|
@@ -1053,14 +1116,14 @@ interface AiActionButtonProps {
|
|
|
1053
1116
|
/** Custom reason when force-disabled */
|
|
1054
1117
|
disabledReason?: string;
|
|
1055
1118
|
/** Color in default state */
|
|
1056
|
-
|
|
1119
|
+
accentColor?: IconButtonProps['accentColor'];
|
|
1057
1120
|
/** Color when completed successfully (defaults to 'green') */
|
|
1058
|
-
completedColor?: IconButtonProps['
|
|
1121
|
+
completedColor?: IconButtonProps['accentColor'];
|
|
1059
1122
|
size?: IconButtonProps['size'];
|
|
1060
1123
|
className?: string;
|
|
1061
1124
|
testId?: string;
|
|
1062
1125
|
}
|
|
1063
|
-
declare function AiActionButton({ status, completionResult, icon, runningIcon, completedIcon, tooltip, runningTooltipTitle, completedTooltipTitle, onClick, disabled: forceDisabled, disabledReason,
|
|
1126
|
+
declare function AiActionButton({ status, completionResult, icon, runningIcon, completedIcon, tooltip, runningTooltipTitle, completedTooltipTitle, onClick, disabled: forceDisabled, disabledReason, accentColor, completedColor, size, className, testId, }: AiActionButtonProps): react_jsx_runtime.JSX.Element;
|
|
1064
1127
|
|
|
1065
1128
|
type ExecutionStatus = 'running' | 'success' | 'partial' | 'error';
|
|
1066
1129
|
interface AiExecutionActionButtonsProps {
|
|
@@ -1078,8 +1141,10 @@ interface AiExecutionActionButtonsProps {
|
|
|
1078
1141
|
status?: ExecutionStatus;
|
|
1079
1142
|
/** Prefix for test IDs (e.g., 'scan-modal' results in 'scan-modal-minimize-btn') */
|
|
1080
1143
|
testIdPrefix?: string;
|
|
1144
|
+
/** Accent color for themed sub-components */
|
|
1145
|
+
accentColor?: FormColor;
|
|
1081
1146
|
}
|
|
1082
|
-
declare function AiExecutionActionButtons({ isRunning, allDone, onMinimize, onCancel, onClose, status, testIdPrefix, }: AiExecutionActionButtonsProps): react_jsx_runtime.JSX.Element;
|
|
1147
|
+
declare function AiExecutionActionButtons({ isRunning, allDone, onMinimize, onCancel, onClose, status, testIdPrefix, accentColor, }: AiExecutionActionButtonsProps): react_jsx_runtime.JSX.Element;
|
|
1083
1148
|
|
|
1084
1149
|
/**
|
|
1085
1150
|
* Issue Reporter API — Types and submission client
|
|
@@ -1234,30 +1299,11 @@ interface ReportBugFormProps {
|
|
|
1234
1299
|
onErrorsSubmitted?: () => void;
|
|
1235
1300
|
/** Override default API submission (for testing/mocking) */
|
|
1236
1301
|
submitFn?: (report: IssueReport) => Promise<IssueReportResult>;
|
|
1302
|
+
accentColor?: FormColor;
|
|
1237
1303
|
className?: string;
|
|
1238
1304
|
}
|
|
1239
|
-
declare function ReportBugForm({ workerUrl, getSystemInfo, linearTeamId, linearProjectId, errorReport, errorFingerprint, errorCount, warnCount, capturedErrors, onSuccess, onError, onCancel, onErrorsSubmitted, submitFn, className, }: ReportBugFormProps): react_jsx_runtime.JSX.Element;
|
|
1305
|
+
declare function ReportBugForm({ workerUrl, getSystemInfo, linearTeamId, linearProjectId, errorReport, errorFingerprint, errorCount, warnCount, capturedErrors, onSuccess, onError, onCancel, onErrorsSubmitted, submitFn, accentColor, className, }: ReportBugFormProps): react_jsx_runtime.JSX.Element;
|
|
1240
1306
|
|
|
1241
|
-
/**
|
|
1242
|
-
* ScreenshotUploader — Drag & drop multi-image upload
|
|
1243
|
-
*
|
|
1244
|
-
* Part of: Sections > Report a Bug
|
|
1245
|
-
* Also usable standalone for any image upload scenario.
|
|
1246
|
-
*
|
|
1247
|
-
* Features:
|
|
1248
|
-
* - Drag & drop or click to select images
|
|
1249
|
-
* - Base64 encoding for API submission
|
|
1250
|
-
* - Preview thumbnails in a 3-column grid
|
|
1251
|
-
* - Total size limit enforcement (default 20MB)
|
|
1252
|
-
* - Individual screenshot removal
|
|
1253
|
-
*
|
|
1254
|
-
* AI agent notes:
|
|
1255
|
-
* - Fully controlled component: parent owns the screenshots array
|
|
1256
|
-
* - Screenshot.data is base64 without the data URL prefix
|
|
1257
|
-
* - The Screenshot type (with id, size) is for UI management;
|
|
1258
|
-
* ScreenshotAttachment (without id, size) is what gets sent to the API
|
|
1259
|
-
* - Used by ReportBugForm but exported independently
|
|
1260
|
-
*/
|
|
1261
1307
|
interface Screenshot {
|
|
1262
1308
|
id: string;
|
|
1263
1309
|
filename: string;
|
|
@@ -1270,9 +1316,10 @@ interface ScreenshotUploaderProps {
|
|
|
1270
1316
|
onChange: (screenshots: Screenshot[]) => void;
|
|
1271
1317
|
maxTotalSize?: number;
|
|
1272
1318
|
disabled?: boolean;
|
|
1319
|
+
accentColor?: FormColor;
|
|
1273
1320
|
className?: string;
|
|
1274
1321
|
}
|
|
1275
|
-
declare function ScreenshotUploader({ screenshots, onChange, maxTotalSize, disabled, className, }: ScreenshotUploaderProps): react_jsx_runtime.JSX.Element;
|
|
1322
|
+
declare function ScreenshotUploader({ screenshots, onChange, maxTotalSize, disabled, accentColor, className, }: ScreenshotUploaderProps): react_jsx_runtime.JSX.Element;
|
|
1276
1323
|
|
|
1277
1324
|
/**
|
|
1278
1325
|
* useReportBug — Form state and submission hook
|
|
@@ -1641,8 +1688,9 @@ interface GoldenSyncPanelProps {
|
|
|
1641
1688
|
monacoTheme?: string;
|
|
1642
1689
|
renderFileIcon?: (filename: string, component: string) => ReactNode;
|
|
1643
1690
|
onTabChange?: (tab: TabId) => void;
|
|
1691
|
+
accentColor?: FormColor;
|
|
1644
1692
|
}
|
|
1645
|
-
declare function GoldenSyncPanel({ api, components, devtools, componentLabels, monacoTheme, renderFileIcon, onTabChange, }: GoldenSyncPanelProps): react_jsx_runtime.JSX.Element;
|
|
1693
|
+
declare function GoldenSyncPanel({ api, components, devtools, componentLabels, monacoTheme, renderFileIcon, onTabChange, accentColor, }: GoldenSyncPanelProps): react_jsx_runtime.JSX.Element;
|
|
1646
1694
|
|
|
1647
1695
|
interface StatusOverviewProps {
|
|
1648
1696
|
status: GoldenStatus | null;
|
|
@@ -1678,9 +1726,9 @@ interface VersionManagerProps {
|
|
|
1678
1726
|
declare function VersionManager({ sync, components, componentLabels }: VersionManagerProps): react_jsx_runtime.JSX.Element;
|
|
1679
1727
|
|
|
1680
1728
|
/**
|
|
1681
|
-
*
|
|
1729
|
+
* Coding Agent Paths — Shared type definitions
|
|
1682
1730
|
*
|
|
1683
|
-
* Part of: Sections >
|
|
1731
|
+
* Part of: Sections > Coding Agent Paths
|
|
1684
1732
|
*
|
|
1685
1733
|
* These types define the CONTRACT between the UI layer (this package) and
|
|
1686
1734
|
* the Rust/Tauri backend that each app must implement. Every type here has
|
|
@@ -1692,35 +1740,35 @@ declare function VersionManager({ sync, components, componentLabels }: VersionMa
|
|
|
1692
1740
|
* to match these TypeScript interfaces.
|
|
1693
1741
|
*
|
|
1694
1742
|
* Generic design:
|
|
1695
|
-
* -
|
|
1743
|
+
* - Agents are keyed by string ID (not hardcoded to specific agents)
|
|
1696
1744
|
* - Configr uses: "claude", "gemini", "copilot", "codex", "opencode"
|
|
1697
|
-
* - Other apps can define their own
|
|
1698
|
-
* - The UI renders whatever
|
|
1745
|
+
* - Other apps can define their own agent sets
|
|
1746
|
+
* - The UI renders whatever agents the consumer provides
|
|
1699
1747
|
*/
|
|
1700
|
-
/** Per-
|
|
1701
|
-
interface
|
|
1702
|
-
/** Unique identifier for the
|
|
1748
|
+
/** Per-agent configuration state */
|
|
1749
|
+
interface CodingAgentConfig {
|
|
1750
|
+
/** Unique identifier for the agent (e.g. "claude", "gemini") */
|
|
1703
1751
|
id: string;
|
|
1704
1752
|
/** Display name (e.g. "Claude Code", "Gemini CLI") */
|
|
1705
1753
|
name: string;
|
|
1706
|
-
/** Whether the
|
|
1754
|
+
/** Whether the agent is enabled for use */
|
|
1707
1755
|
enabled: boolean;
|
|
1708
1756
|
/** User-configured or auto-detected binary path */
|
|
1709
1757
|
binaryPath: string;
|
|
1710
|
-
/** Whether the
|
|
1758
|
+
/** Whether the agent was found during detection */
|
|
1711
1759
|
detected: boolean;
|
|
1712
1760
|
/** Path found by auto-detection (may differ from binaryPath if user overrode it) */
|
|
1713
1761
|
detectedPath?: string;
|
|
1714
1762
|
}
|
|
1715
|
-
/** Result of detecting a single
|
|
1716
|
-
interface
|
|
1763
|
+
/** Result of detecting a single agent's binary */
|
|
1764
|
+
interface AgentDetectionResult {
|
|
1717
1765
|
/** Whether the binary was found */
|
|
1718
1766
|
detected: boolean;
|
|
1719
1767
|
/** Resolved path to the binary, if found */
|
|
1720
1768
|
path?: string;
|
|
1721
1769
|
}
|
|
1722
1770
|
/**
|
|
1723
|
-
*
|
|
1771
|
+
* AgentPathsApi — The callback interface that each app must implement.
|
|
1724
1772
|
*
|
|
1725
1773
|
* This is the bridge between the shared UI and the app-specific backend.
|
|
1726
1774
|
* Each function maps to a Tauri command (or any other backend).
|
|
@@ -1737,12 +1785,12 @@ interface ToolDetectionResult {
|
|
|
1737
1785
|
* │ REQUIRED Tauri commands for full functionality: │
|
|
1738
1786
|
* │ │
|
|
1739
1787
|
* │ DETECTION: │
|
|
1740
|
-
* │
|
|
1741
|
-
* │ Scans PATH and known install locations for all
|
|
1742
|
-
* │ Returns a map of
|
|
1788
|
+
* │ detect_all_agents() → Record<string, AgentDetectionResult> │
|
|
1789
|
+
* │ Scans PATH and known install locations for all agent binaries. │
|
|
1790
|
+
* │ Returns a map of agent ID → detection result. │
|
|
1743
1791
|
* │ │
|
|
1744
|
-
* │
|
|
1745
|
-
* │ Scans for a single
|
|
1792
|
+
* │ detect_agent(agentId) → AgentDetectionResult │
|
|
1793
|
+
* │ Scans for a single agent binary. Used for per-agent refresh. │
|
|
1746
1794
|
* │ │
|
|
1747
1795
|
* │ VALIDATION: │
|
|
1748
1796
|
* │ validate_binary_path(path) → bool │
|
|
@@ -1750,83 +1798,84 @@ interface ToolDetectionResult {
|
|
|
1750
1798
|
* │ Typically: fs::metadata(path).is_ok() && is_executable(path) │
|
|
1751
1799
|
* │ │
|
|
1752
1800
|
* │ DETECTION STRATEGY (Rust backend should implement): │
|
|
1753
|
-
* │ 1. Check PATH environment variable (which <
|
|
1801
|
+
* │ 1. Check PATH environment variable (which <agent-binary>) │
|
|
1754
1802
|
* │ 2. Check common install locations: │
|
|
1755
1803
|
* │ - /usr/local/bin/<binary> │
|
|
1756
1804
|
* │ - /opt/homebrew/bin/<binary> │
|
|
1757
1805
|
* │ - ~/.local/bin/<binary> │
|
|
1758
|
-
* │ - ~/.cargo/bin/<binary> (for Rust-based
|
|
1759
|
-
* │ - ~/.npm/bin/<binary> (for npm-based
|
|
1760
|
-
* │ 3. Check
|
|
1806
|
+
* │ - ~/.cargo/bin/<binary> (for Rust-based agents) │
|
|
1807
|
+
* │ - ~/.npm/bin/<binary> (for npm-based agents) │
|
|
1808
|
+
* │ 3. Check agent-specific locations: │
|
|
1761
1809
|
* │ - Claude: ~/.claude/bin/claude │
|
|
1762
1810
|
* │ - Copilot: gh extension path │
|
|
1763
1811
|
* │ 4. Return first valid path found, or detected: false │
|
|
1764
1812
|
* └─────────────────────────────────────────────────────────────────────┘
|
|
1765
1813
|
*/
|
|
1766
|
-
interface
|
|
1767
|
-
/** Scan all
|
|
1768
|
-
detectAll: () => Promise<Record<string,
|
|
1769
|
-
/** Scan a single
|
|
1770
|
-
|
|
1814
|
+
interface AgentPathsApi {
|
|
1815
|
+
/** Scan all agents and return detection results keyed by agent ID */
|
|
1816
|
+
detectAll: () => Promise<Record<string, AgentDetectionResult>>;
|
|
1817
|
+
/** Scan a single agent and return its detection result */
|
|
1818
|
+
detectAgent: (agentId: string) => Promise<AgentDetectionResult>;
|
|
1771
1819
|
/** Check if a given binary path is valid (exists and is executable) */
|
|
1772
1820
|
validatePath: (path: string) => Promise<boolean>;
|
|
1773
1821
|
}
|
|
1774
1822
|
|
|
1775
|
-
interface
|
|
1823
|
+
interface AgentPathsPanelProps {
|
|
1776
1824
|
/** API adapter for backend operations (detection, validation) */
|
|
1777
|
-
api:
|
|
1778
|
-
/** Current
|
|
1779
|
-
|
|
1780
|
-
/** Called when
|
|
1781
|
-
|
|
1782
|
-
/** Optional render function for
|
|
1783
|
-
|
|
1825
|
+
api: AgentPathsApi;
|
|
1826
|
+
/** Current agent configurations */
|
|
1827
|
+
agents: CodingAgentConfig[];
|
|
1828
|
+
/** Called when an agent's config changes. Consumer updates their state. */
|
|
1829
|
+
onAgentConfigChange: (agentId: string, config: Partial<CodingAgentConfig>) => void;
|
|
1830
|
+
/** Optional render function for agent icons. Receives agent ID, returns ReactNode. */
|
|
1831
|
+
renderAgentIcon?: (agentId: string) => ReactNode;
|
|
1832
|
+
accentColor?: FormColor;
|
|
1784
1833
|
className?: string;
|
|
1785
1834
|
}
|
|
1786
|
-
declare function
|
|
1835
|
+
declare function AgentPathsPanel({ api, agents, onAgentConfigChange, renderAgentIcon, accentColor, className, }: AgentPathsPanelProps): react_jsx_runtime.JSX.Element;
|
|
1787
1836
|
|
|
1788
1837
|
/**
|
|
1789
|
-
*
|
|
1838
|
+
* useAgentPaths — Agent detection and configuration state hook
|
|
1790
1839
|
*
|
|
1791
|
-
* Part of: Sections >
|
|
1840
|
+
* Part of: Sections > Coding Agent Paths
|
|
1792
1841
|
*
|
|
1793
|
-
* Manages
|
|
1794
|
-
* Used internally by
|
|
1842
|
+
* Manages agent detection state, per-agent refresh tracking, and path validation.
|
|
1843
|
+
* Used internally by AgentPathsPanel but can also be used standalone for
|
|
1795
1844
|
* custom UIs.
|
|
1796
1845
|
*
|
|
1797
1846
|
* AI agent notes:
|
|
1798
|
-
* - This hook does NOT store
|
|
1847
|
+
* - This hook does NOT store agent configs — the consumer owns that state.
|
|
1799
1848
|
* It only manages detection/scanning ephemeral state.
|
|
1800
|
-
* - The hook tracks which
|
|
1849
|
+
* - The hook tracks which agents have been scanned, which are currently
|
|
1801
1850
|
* refreshing, and whether a full scan has completed.
|
|
1802
1851
|
* - Path validation is debounced by the consumer (typically on blur or
|
|
1803
1852
|
* after typing stops).
|
|
1804
1853
|
*/
|
|
1805
1854
|
|
|
1806
|
-
interface
|
|
1807
|
-
api:
|
|
1808
|
-
|
|
1809
|
-
|
|
1855
|
+
interface UseAgentPathsOptions {
|
|
1856
|
+
api: AgentPathsApi;
|
|
1857
|
+
agents: CodingAgentConfig[];
|
|
1858
|
+
onAgentConfigChange: (agentId: string, config: Partial<CodingAgentConfig>) => void;
|
|
1810
1859
|
}
|
|
1811
|
-
interface
|
|
1860
|
+
interface UseAgentPathsReturn {
|
|
1812
1861
|
/** Whether a full scan is in progress */
|
|
1813
1862
|
isDetecting: boolean;
|
|
1814
1863
|
/** Whether a full scan has completed at least once */
|
|
1815
1864
|
hasScanned: boolean;
|
|
1816
|
-
/** Set of
|
|
1817
|
-
|
|
1818
|
-
/** Set of
|
|
1819
|
-
|
|
1820
|
-
/** Run detection for all
|
|
1865
|
+
/** Set of agent IDs currently being individually refreshed */
|
|
1866
|
+
refreshingAgents: Set<string>;
|
|
1867
|
+
/** Set of agent IDs that were found during the last scan */
|
|
1868
|
+
scannedAgents: Set<string>;
|
|
1869
|
+
/** Run detection for all agents */
|
|
1821
1870
|
detectAll: () => Promise<void>;
|
|
1822
|
-
/** Run detection for a single
|
|
1823
|
-
|
|
1824
|
-
/** Validate and update
|
|
1825
|
-
validateAndUpdatePath: (
|
|
1826
|
-
/** Toggle
|
|
1827
|
-
toggleEnabled: (
|
|
1871
|
+
/** Run detection for a single agent */
|
|
1872
|
+
detectAgent: (agentId: string) => Promise<void>;
|
|
1873
|
+
/** Validate and update an agent's binary path */
|
|
1874
|
+
validateAndUpdatePath: (agentId: string, path: string) => Promise<void>;
|
|
1875
|
+
/** Toggle an agent's enabled state */
|
|
1876
|
+
toggleEnabled: (agentId: string) => void;
|
|
1828
1877
|
}
|
|
1829
|
-
declare function
|
|
1878
|
+
declare function useAgentPaths({ api, agents, onAgentConfigChange }: UseAgentPathsOptions): UseAgentPathsReturn;
|
|
1830
1879
|
|
|
1831
1880
|
/**
|
|
1832
1881
|
* Captured Issues — Shared type definitions
|
|
@@ -1945,9 +1994,10 @@ interface CapturedIssuesPanelProps {
|
|
|
1945
1994
|
onDismiss?: () => void;
|
|
1946
1995
|
/** Called after successful submission */
|
|
1947
1996
|
onSubmitSuccess?: (issueId?: string) => void;
|
|
1997
|
+
accentColor?: FormColor;
|
|
1948
1998
|
className?: string;
|
|
1949
1999
|
}
|
|
1950
|
-
declare function CapturedIssuesPanel({ api, errors, onDismiss, onSubmitSuccess, className, }: CapturedIssuesPanelProps): react_jsx_runtime.JSX.Element;
|
|
2000
|
+
declare function CapturedIssuesPanel({ api, errors, onDismiss, onSubmitSuccess, accentColor, className, }: CapturedIssuesPanelProps): react_jsx_runtime.JSX.Element;
|
|
1951
2001
|
|
|
1952
2002
|
/**
|
|
1953
2003
|
* useCapturedIssues — State management hook for captured issues panel
|
|
@@ -2031,7 +2081,7 @@ interface SnapshotCategory {
|
|
|
2031
2081
|
icon?: string;
|
|
2032
2082
|
items: SnapshotItem[];
|
|
2033
2083
|
}
|
|
2034
|
-
/** A top-level scope containing categories (e.g. "Settings", "
|
|
2084
|
+
/** A top-level scope containing categories (e.g. "Settings", "Capabilities") */
|
|
2035
2085
|
interface SnapshotScope {
|
|
2036
2086
|
id: string;
|
|
2037
2087
|
name: string;
|
|
@@ -2087,9 +2137,10 @@ interface SnapshotBrowserPanelProps {
|
|
|
2087
2137
|
snapshotLimit: number;
|
|
2088
2138
|
onSnapshotLimitChange: (limit: number) => void;
|
|
2089
2139
|
onClearAll?: () => void;
|
|
2140
|
+
accentColor?: FormColor;
|
|
2090
2141
|
className?: string;
|
|
2091
2142
|
}
|
|
2092
|
-
declare function SnapshotBrowserPanel({ api, scopes, snapshotLimit, onSnapshotLimitChange, onClearAll, className, }: SnapshotBrowserPanelProps): react_jsx_runtime.JSX.Element;
|
|
2143
|
+
declare function SnapshotBrowserPanel({ api, scopes, snapshotLimit, onSnapshotLimitChange, onClearAll, accentColor, className, }: SnapshotBrowserPanelProps): react_jsx_runtime.JSX.Element;
|
|
2093
2144
|
|
|
2094
2145
|
interface SnapshotTreeProps {
|
|
2095
2146
|
scopes: SnapshotScope[];
|
|
@@ -2193,9 +2244,9 @@ interface SnippetsEditorProps {
|
|
|
2193
2244
|
/** Section description, e.g. "Define snippets to reuse in skills prompts..." */
|
|
2194
2245
|
description?: string;
|
|
2195
2246
|
className?: string;
|
|
2196
|
-
accentColor?:
|
|
2247
|
+
accentColor?: FormColor;
|
|
2197
2248
|
}
|
|
2198
|
-
declare function SnippetsEditor({ api, snippets, title, description, className, accentColor, }: SnippetsEditorProps): react_jsx_runtime.JSX.Element;
|
|
2249
|
+
declare function SnippetsEditor({ api, snippets, title, description, className, accentColor: accentColorProp, }: SnippetsEditorProps): react_jsx_runtime.JSX.Element;
|
|
2199
2250
|
|
|
2200
2251
|
/**
|
|
2201
2252
|
* useSnippetsEditor — Form state and CRUD hook for the snippets editor
|
|
@@ -2333,9 +2384,10 @@ interface TabbedPromptEditorProps {
|
|
|
2333
2384
|
validateChecklist?: boolean;
|
|
2334
2385
|
/** When true, adds border and rounding for standalone usage */
|
|
2335
2386
|
standalone?: boolean;
|
|
2387
|
+
accentColor?: FormColor;
|
|
2336
2388
|
className?: string;
|
|
2337
2389
|
}
|
|
2338
|
-
declare function TabbedPromptEditor({ prompts, onPromptChange, tools, defaultPrompts, variables, onReset, onSave, validateChecklist, standalone, className, }: TabbedPromptEditorProps): react_jsx_runtime.JSX.Element;
|
|
2390
|
+
declare function TabbedPromptEditor({ prompts, onPromptChange, tools, defaultPrompts, variables, onReset, onSave, validateChecklist, standalone, accentColor, className, }: TabbedPromptEditorProps): react_jsx_runtime.JSX.Element;
|
|
2339
2391
|
|
|
2340
2392
|
interface FileTypeTabbedPromptEditorProps {
|
|
2341
2393
|
/** Nested prompts: fileType -> tool -> prompt */
|
|
@@ -2383,9 +2435,10 @@ interface SimulatorPromptEditorProps {
|
|
|
2383
2435
|
onSave?: (scenario: string, step: string, tool: string, content: string) => void;
|
|
2384
2436
|
/** When true, validates "## Verification Checklist" section */
|
|
2385
2437
|
validateChecklist?: boolean;
|
|
2438
|
+
accentColor?: FormColor;
|
|
2386
2439
|
className?: string;
|
|
2387
2440
|
}
|
|
2388
|
-
declare function SimulatorPromptEditor({ prompts, onPromptChange, scenarios, tools, defaultPrompts, variables, onReset, onSave, validateChecklist, className, }: SimulatorPromptEditorProps): react_jsx_runtime.JSX.Element;
|
|
2441
|
+
declare function SimulatorPromptEditor({ prompts, onPromptChange, scenarios, tools, defaultPrompts, variables, onReset, onSave, validateChecklist, accentColor, className, }: SimulatorPromptEditorProps): react_jsx_runtime.JSX.Element;
|
|
2389
2442
|
|
|
2390
2443
|
interface CollapsibleSectionProps {
|
|
2391
2444
|
title: string;
|
|
@@ -2396,8 +2449,9 @@ interface CollapsibleSectionProps {
|
|
|
2396
2449
|
badgeColor?: BadgeColor;
|
|
2397
2450
|
children: React.ReactNode;
|
|
2398
2451
|
className?: string;
|
|
2452
|
+
accentColor?: FormColor;
|
|
2399
2453
|
}
|
|
2400
|
-
declare function CollapsibleSection({ title, icon, iconColor, defaultOpen, badge, badgeColor, children, className, }: CollapsibleSectionProps): react_jsx_runtime.JSX.Element;
|
|
2454
|
+
declare function CollapsibleSection({ title, icon, iconColor, defaultOpen, badge, badgeColor, children, className, accentColor, }: CollapsibleSectionProps): react_jsx_runtime.JSX.Element;
|
|
2401
2455
|
|
|
2402
2456
|
interface FileEntry {
|
|
2403
2457
|
path: string;
|
|
@@ -2416,8 +2470,31 @@ interface FilesPanelProps {
|
|
|
2416
2470
|
showSearch?: boolean;
|
|
2417
2471
|
className?: string;
|
|
2418
2472
|
accentColor?: string;
|
|
2419
|
-
|
|
2420
|
-
|
|
2473
|
+
/** Right-click handler for tree nodes */
|
|
2474
|
+
onContextMenu?: (e: React.MouseEvent, entry: FileEntry) => void;
|
|
2475
|
+
/** Path of the selected/highlighted folder (separate from file selection) */
|
|
2476
|
+
selectedFolderPath?: string;
|
|
2477
|
+
/** Callback when a folder row is clicked (for folder selection). If set, chevron toggles expand while row selects. */
|
|
2478
|
+
onSelectFolder?: (path: string) => void;
|
|
2479
|
+
/** Custom content rendered after the file/folder name (e.g. badges, labels) */
|
|
2480
|
+
renderBadges?: (entry: FileEntry) => ReactNode;
|
|
2481
|
+
/** Custom hover actions rendered at the right edge of each row */
|
|
2482
|
+
renderNodeActions?: (entry: FileEntry) => ReactNode;
|
|
2483
|
+
/** Set of paths that should render in a muted/dimmed style */
|
|
2484
|
+
hiddenPaths?: Set<string>;
|
|
2485
|
+
/** Custom content above the tree (e.g. filter badges, creation inputs) */
|
|
2486
|
+
header?: ReactNode;
|
|
2487
|
+
/** Custom footer content. When provided, replaces the default file count footer. */
|
|
2488
|
+
footer?: ReactNode;
|
|
2489
|
+
/** Controlled expand state. When provided, FilesPanel uses this instead of internal state. */
|
|
2490
|
+
expandedPaths?: Set<string>;
|
|
2491
|
+
/** Controlled toggle callback. Required when expandedPaths is provided. */
|
|
2492
|
+
onToggleExpand?: (path: string) => void;
|
|
2493
|
+
}
|
|
2494
|
+
declare function collectAllFolderPaths(entries: FileEntry[]): Set<string>;
|
|
2495
|
+
declare function countFiles(entries: FileEntry[]): number;
|
|
2496
|
+
declare function countFolders(entries: FileEntry[]): number;
|
|
2497
|
+
declare function FilesPanel({ files, selectedPath, onSelect, onAction, showSearch, className, accentColor: accentColorProp, onContextMenu, selectedFolderPath, onSelectFolder, renderBadges, renderNodeActions, hiddenPaths, header, footer, expandedPaths: controlledExpandedPaths, onToggleExpand: controlledOnToggleExpand, }: FilesPanelProps): react_jsx_runtime.JSX.Element;
|
|
2421
2498
|
|
|
2422
2499
|
/** Searchable panel for browsing, copying, and inserting code snippets. */
|
|
2423
2500
|
interface Snippet {
|
|
@@ -2451,8 +2528,9 @@ interface BreadcrumbProps {
|
|
|
2451
2528
|
/** 'box' (default) wraps in a bordered container; 'plain' renders inline with no background */
|
|
2452
2529
|
variant?: 'box' | 'plain';
|
|
2453
2530
|
className?: string;
|
|
2531
|
+
accentColor?: FormColor;
|
|
2454
2532
|
}
|
|
2455
|
-
declare function Breadcrumb({ segments, separator, size, variant, className, }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
2533
|
+
declare function Breadcrumb({ segments, separator, size, variant, className, accentColor, }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
2456
2534
|
|
|
2457
2535
|
interface NavigationBarProps {
|
|
2458
2536
|
segments: BreadcrumbSegment[];
|
|
@@ -2469,9 +2547,10 @@ interface NavigationBarProps {
|
|
|
2469
2547
|
};
|
|
2470
2548
|
separator?: 'chevron' | 'slash' | 'dot';
|
|
2471
2549
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
2550
|
+
accentColor?: AccentColor;
|
|
2472
2551
|
className?: string;
|
|
2473
2552
|
}
|
|
2474
|
-
declare function NavigationBar({ segments, canGoBack, canGoForward, onBack, onForward, showHistory, historyEntries, onHistorySelect, leadingAction, separator, size, className, }: NavigationBarProps): react_jsx_runtime.JSX.Element;
|
|
2553
|
+
declare function NavigationBar({ segments, canGoBack, canGoForward, onBack, onForward, showHistory, historyEntries, onHistorySelect, leadingAction, separator, size, accentColor, className, }: NavigationBarProps): react_jsx_runtime.JSX.Element;
|
|
2475
2554
|
|
|
2476
2555
|
interface Tab {
|
|
2477
2556
|
id: string;
|
|
@@ -2490,8 +2569,9 @@ interface TabBarProps {
|
|
|
2490
2569
|
variant?: 'underline' | 'pill' | 'card';
|
|
2491
2570
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg';
|
|
2492
2571
|
className?: string;
|
|
2572
|
+
accentColor?: FormColor;
|
|
2493
2573
|
}
|
|
2494
|
-
declare function TabBar({ tabs, activeId, onSelect, onClose, variant, size, className, }: TabBarProps): react_jsx_runtime.JSX.Element;
|
|
2574
|
+
declare function TabBar({ tabs, activeId, onSelect, onClose, variant, size, className, accentColor: _accentColor, }: TabBarProps): react_jsx_runtime.JSX.Element;
|
|
2495
2575
|
|
|
2496
2576
|
interface LayoutTab {
|
|
2497
2577
|
id: string;
|
|
@@ -2514,8 +2594,9 @@ interface LayoutTabBarProps {
|
|
|
2514
2594
|
onClose?: (id: string) => void;
|
|
2515
2595
|
onReorder?: (fromIndex: number, toIndex: number) => void;
|
|
2516
2596
|
className?: string;
|
|
2597
|
+
accentColor?: FormColor;
|
|
2517
2598
|
}
|
|
2518
|
-
declare function LayoutTabBar({ tabs, activeId, onSelect, onClose, onReorder, className }: LayoutTabBarProps): react_jsx_runtime.JSX.Element;
|
|
2599
|
+
declare function LayoutTabBar({ tabs, activeId, onSelect, onClose, onReorder, className, accentColor: _accentColor }: LayoutTabBarProps): react_jsx_runtime.JSX.Element;
|
|
2519
2600
|
|
|
2520
2601
|
interface NavCardProps {
|
|
2521
2602
|
title: string;
|
|
@@ -2529,6 +2610,7 @@ interface NavCardProps {
|
|
|
2529
2610
|
label?: {
|
|
2530
2611
|
text: string;
|
|
2531
2612
|
color: LabelColor;
|
|
2613
|
+
icon?: IconName;
|
|
2532
2614
|
tooltip: {
|
|
2533
2615
|
description: string;
|
|
2534
2616
|
};
|
|
@@ -2537,10 +2619,11 @@ interface NavCardProps {
|
|
|
2537
2619
|
onClick?: () => void;
|
|
2538
2620
|
disabled?: boolean;
|
|
2539
2621
|
className?: string;
|
|
2622
|
+
accentColor?: FormColor;
|
|
2540
2623
|
}
|
|
2541
|
-
declare function NavCard({ title, description, icon, IconComponent, iconColor, label, stats, onClick, disabled, className, }: NavCardProps): react_jsx_runtime.JSX.Element;
|
|
2624
|
+
declare function NavCard({ title, description, icon, IconComponent, iconColor, label, stats, onClick, disabled, className, accentColor: _accentColor, }: NavCardProps): react_jsx_runtime.JSX.Element;
|
|
2542
2625
|
|
|
2543
|
-
interface
|
|
2626
|
+
interface CapabilityListCardProps {
|
|
2544
2627
|
/** Lucide icon component */
|
|
2545
2628
|
icon: ElementType;
|
|
2546
2629
|
/** Tailwind color class for icon (e.g. 'text-teal-400') */
|
|
@@ -2563,8 +2646,9 @@ interface ExtensionListCardProps {
|
|
|
2563
2646
|
isInactive?: boolean;
|
|
2564
2647
|
/** Test ID for E2E testing */
|
|
2565
2648
|
testId?: string;
|
|
2649
|
+
accentColor?: FormColor;
|
|
2566
2650
|
}
|
|
2567
|
-
declare const
|
|
2651
|
+
declare const CapabilityListCard: react.NamedExoticComponent<CapabilityListCardProps>;
|
|
2568
2652
|
|
|
2569
2653
|
type StatusType = 'success' | 'warning' | 'error' | 'info' | 'neutral';
|
|
2570
2654
|
interface StatusItem {
|
|
@@ -2582,10 +2666,10 @@ interface StatusCardProps {
|
|
|
2582
2666
|
onClick: () => void;
|
|
2583
2667
|
};
|
|
2584
2668
|
className?: string;
|
|
2669
|
+
accentColor?: FormColor;
|
|
2585
2670
|
}
|
|
2586
|
-
declare function StatusCard({ title, icon, iconColor, items, action, className, }: StatusCardProps): react_jsx_runtime.JSX.Element;
|
|
2671
|
+
declare function StatusCard({ title, icon, iconColor, items, action, className, accentColor: accentColorProp, }: StatusCardProps): react_jsx_runtime.JSX.Element;
|
|
2587
2672
|
|
|
2588
|
-
/** Snapshot card with status stripe, stats grid, and sync/view actions. */
|
|
2589
2673
|
type SnapshotStatus = 'synced' | 'pending' | 'conflict' | 'outdated';
|
|
2590
2674
|
interface SnapshotCardProps {
|
|
2591
2675
|
title: string;
|
|
@@ -2599,15 +2683,16 @@ interface SnapshotCardProps {
|
|
|
2599
2683
|
onSync?: () => void;
|
|
2600
2684
|
onView?: () => void;
|
|
2601
2685
|
className?: string;
|
|
2686
|
+
accentColor?: FormColor;
|
|
2602
2687
|
}
|
|
2603
|
-
declare function SnapshotCard({ title, timestamp, status, description, stats, onSync, onView, className, }: SnapshotCardProps): react_jsx_runtime.JSX.Element;
|
|
2688
|
+
declare function SnapshotCard({ title, timestamp, status, description, stats, onSync, onView, className, accentColor: accentColorProp, }: SnapshotCardProps): react_jsx_runtime.JSX.Element;
|
|
2604
2689
|
|
|
2605
2690
|
type ConsentChoice = 'accepted' | 'declined' | 'essential';
|
|
2606
2691
|
interface CookieConsentProps {
|
|
2607
2692
|
/** localStorage key used to persist the choice */
|
|
2608
2693
|
storageKey: string;
|
|
2609
2694
|
/** Accent color for the "Accept All" button (default: 'cyan') */
|
|
2610
|
-
accentColor?:
|
|
2695
|
+
accentColor?: FormColor;
|
|
2611
2696
|
/** Heading text (default: 'We value your privacy') */
|
|
2612
2697
|
heading?: string;
|
|
2613
2698
|
/** Description text */
|
|
@@ -2617,6 +2702,69 @@ interface CookieConsentProps {
|
|
|
2617
2702
|
}
|
|
2618
2703
|
declare function CookieConsent({ storageKey, accentColor, heading, description, onConsent, }: CookieConsentProps): react_jsx_runtime.JSX.Element | null;
|
|
2619
2704
|
|
|
2705
|
+
interface ExplorerNode {
|
|
2706
|
+
name: string;
|
|
2707
|
+
path: string;
|
|
2708
|
+
children: ExplorerNode[];
|
|
2709
|
+
project?: {
|
|
2710
|
+
id: string;
|
|
2711
|
+
name: string;
|
|
2712
|
+
path: string;
|
|
2713
|
+
[key: string]: unknown;
|
|
2714
|
+
};
|
|
2715
|
+
}
|
|
2716
|
+
interface ExplorerTopItem {
|
|
2717
|
+
id: string;
|
|
2718
|
+
icon: ReactNode;
|
|
2719
|
+
label: string;
|
|
2720
|
+
selected: boolean;
|
|
2721
|
+
selectedClass: string;
|
|
2722
|
+
onClick: () => void;
|
|
2723
|
+
actions?: ReactNode;
|
|
2724
|
+
}
|
|
2725
|
+
interface ExplorerContextMenuInfo {
|
|
2726
|
+
x: number;
|
|
2727
|
+
y: number;
|
|
2728
|
+
project: ExplorerNode['project'] | null;
|
|
2729
|
+
nodeName: string;
|
|
2730
|
+
nodePath: string;
|
|
2731
|
+
}
|
|
2732
|
+
interface ProjectExplorerProps {
|
|
2733
|
+
tree: ExplorerNode[];
|
|
2734
|
+
selectedProjectId: string | null;
|
|
2735
|
+
onSelectProject: (id: string) => void;
|
|
2736
|
+
topItems?: ExplorerTopItem[];
|
|
2737
|
+
searchQuery: string;
|
|
2738
|
+
onSearchChange: (query: string) => void;
|
|
2739
|
+
collapsedPaths: string[];
|
|
2740
|
+
onTogglePath: (path: string) => void;
|
|
2741
|
+
expandablePaths: string[];
|
|
2742
|
+
onExpandAll: () => void;
|
|
2743
|
+
onCollapseAll: () => void;
|
|
2744
|
+
width: number;
|
|
2745
|
+
onWidthChange: (width: number) => void;
|
|
2746
|
+
collapsed: boolean;
|
|
2747
|
+
onToggleCollapsed: () => void;
|
|
2748
|
+
onAddProject: () => void;
|
|
2749
|
+
isAddingProject?: boolean;
|
|
2750
|
+
onScanProjects?: () => void;
|
|
2751
|
+
onMiddleClick?: (project: ExplorerNode['project']) => void;
|
|
2752
|
+
renderProjectActions?: (project: ExplorerNode['project']) => ReactNode;
|
|
2753
|
+
renderContextMenu?: (info: ExplorerContextMenuInfo, onClose: () => void) => ReactNode;
|
|
2754
|
+
isProjectHighlighted?: (project: ExplorerNode['project']) => boolean;
|
|
2755
|
+
accentColor?: FormColor;
|
|
2756
|
+
emptyMessage?: string;
|
|
2757
|
+
noMatchMessage?: string;
|
|
2758
|
+
}
|
|
2759
|
+
declare function buildExplorerTree<P extends {
|
|
2760
|
+
id: string;
|
|
2761
|
+
path: string;
|
|
2762
|
+
}>(projects: P[], isSpecial?: (p: P) => boolean): ExplorerNode[];
|
|
2763
|
+
declare function filterExplorerTree(nodes: ExplorerNode[], query: string): ExplorerNode[];
|
|
2764
|
+
declare function collectExplorerExpandablePaths(nodes: ExplorerNode[]): string[];
|
|
2765
|
+
declare function findPathToNode(nodes: ExplorerNode[], projectId: string): string[] | null;
|
|
2766
|
+
declare function ProjectExplorer({ tree, selectedProjectId, onSelectProject, topItems, searchQuery, onSearchChange, collapsedPaths, onTogglePath, expandablePaths, onExpandAll, onCollapseAll, width, onWidthChange, collapsed, onToggleCollapsed, onAddProject, isAddingProject, onScanProjects, onMiddleClick, renderProjectActions, renderContextMenu, isProjectHighlighted, accentColor: accentColorProp, emptyMessage, noMatchMessage, }: ProjectExplorerProps): react_jsx_runtime.JSX.Element;
|
|
2767
|
+
|
|
2620
2768
|
/**
|
|
2621
2769
|
* Close a menu/dropdown when clicking outside its ref element(s).
|
|
2622
2770
|
* Accepts a single ref, an array of refs, or null.
|
|
@@ -2631,6 +2779,21 @@ declare function useClickOutside(ref: RefObject<HTMLElement | null> | RefObject<
|
|
|
2631
2779
|
*/
|
|
2632
2780
|
declare function useDropdownMaxHeight<T extends HTMLElement>(isOpen: boolean, margin?: number): react.RefObject<T | null>;
|
|
2633
2781
|
|
|
2782
|
+
interface PortalPosition {
|
|
2783
|
+
top: number;
|
|
2784
|
+
left: number;
|
|
2785
|
+
minWidth: number;
|
|
2786
|
+
}
|
|
2787
|
+
/**
|
|
2788
|
+
* Positions a portal-based dropdown menu below its trigger element.
|
|
2789
|
+
* Returns a ref for the trigger container and computed position for the portal.
|
|
2790
|
+
*/
|
|
2791
|
+
declare function useDropdownPortal(isOpen: boolean, margin?: number): {
|
|
2792
|
+
triggerRef: react.RefObject<HTMLDivElement | null>;
|
|
2793
|
+
menuRef: react.RefObject<HTMLDivElement | null>;
|
|
2794
|
+
position: PortalPosition;
|
|
2795
|
+
};
|
|
2796
|
+
|
|
2634
2797
|
/**
|
|
2635
2798
|
* Shared modal behavior: Escape key to close + body overflow lock + focus trap.
|
|
2636
2799
|
*/
|
|
@@ -2672,7 +2835,7 @@ interface SettingRowToggle extends SettingRowBase {
|
|
|
2672
2835
|
type: 'toggle';
|
|
2673
2836
|
checked: boolean;
|
|
2674
2837
|
onChange: (checked: boolean) => void;
|
|
2675
|
-
|
|
2838
|
+
accentColor?: ToggleColor;
|
|
2676
2839
|
size?: ToggleSize;
|
|
2677
2840
|
}
|
|
2678
2841
|
interface SettingRowSelect extends SettingRowBase {
|
|
@@ -2700,31 +2863,27 @@ interface SettingsCardProps {
|
|
|
2700
2863
|
title?: string;
|
|
2701
2864
|
description?: string;
|
|
2702
2865
|
testId?: string;
|
|
2866
|
+
accentColor?: FormColor;
|
|
2703
2867
|
}
|
|
2704
|
-
declare function SettingsCard({ children, className, title, description, testId }: SettingsCardProps): react_jsx_runtime.JSX.Element;
|
|
2868
|
+
declare function SettingsCard({ children, className, title, description, testId, accentColor }: SettingsCardProps): react_jsx_runtime.JSX.Element;
|
|
2705
2869
|
|
|
2706
2870
|
type SettingsInfoBoxColor = AccentColor;
|
|
2707
2871
|
interface SettingsInfoBoxProps {
|
|
2708
2872
|
children: React.ReactNode;
|
|
2709
2873
|
color?: SettingsInfoBoxColor;
|
|
2874
|
+
accentColor?: FormColor;
|
|
2710
2875
|
className?: string;
|
|
2711
2876
|
testId?: string;
|
|
2712
2877
|
}
|
|
2713
|
-
declare function SettingsInfoBox({ children, color, className, testId }: SettingsInfoBoxProps): react_jsx_runtime.JSX.Element;
|
|
2878
|
+
declare function SettingsInfoBox({ children, color, accentColor, className, testId }: SettingsInfoBoxProps): react_jsx_runtime.JSX.Element;
|
|
2714
2879
|
|
|
2715
|
-
/**
|
|
2716
|
-
* SettingsSectionTitle - Section header for settings pages
|
|
2717
|
-
*
|
|
2718
|
-
* Used by:
|
|
2719
|
-
* - Settings pages - grouping related settings under a heading
|
|
2720
|
-
* - Configuration panels - section dividers
|
|
2721
|
-
*/
|
|
2722
2880
|
interface SettingsSectionTitleProps {
|
|
2723
2881
|
children: React.ReactNode;
|
|
2724
2882
|
className?: string;
|
|
2725
2883
|
testId?: string;
|
|
2884
|
+
accentColor?: FormColor;
|
|
2726
2885
|
}
|
|
2727
|
-
declare function SettingsSectionTitle({ children, className, testId }: SettingsSectionTitleProps): react_jsx_runtime.JSX.Element;
|
|
2886
|
+
declare function SettingsSectionTitle({ children, className, testId, accentColor }: SettingsSectionTitleProps): react_jsx_runtime.JSX.Element;
|
|
2728
2887
|
|
|
2729
2888
|
type SettingsTreeNode = {
|
|
2730
2889
|
id: string;
|
|
@@ -2749,16 +2908,19 @@ interface SettingsPanelProps {
|
|
|
2749
2908
|
selectedPath: string;
|
|
2750
2909
|
onSelectPath: (path: string) => void;
|
|
2751
2910
|
children: ReactNode;
|
|
2911
|
+
accentColor?: FormColor;
|
|
2752
2912
|
}
|
|
2753
|
-
declare function SettingsPanel({ tree, selectedPath, onSelectPath, children }: SettingsPanelProps): react_jsx_runtime.JSX.Element;
|
|
2913
|
+
declare function SettingsPanel({ tree, selectedPath, onSelectPath, children, accentColor }: SettingsPanelProps): react_jsx_runtime.JSX.Element;
|
|
2754
2914
|
|
|
2755
2915
|
interface SettingsTreeNavProps {
|
|
2756
2916
|
tree: SettingsTreeNode[];
|
|
2757
2917
|
selectedPath: string;
|
|
2758
2918
|
onSelectPath: (path: string) => void;
|
|
2759
|
-
accentColor?:
|
|
2919
|
+
accentColor?: FormColor;
|
|
2920
|
+
className?: string;
|
|
2921
|
+
searchPlaceholder?: string;
|
|
2760
2922
|
}
|
|
2761
|
-
declare function SettingsTreeNav({ tree, selectedPath, onSelectPath, accentColor }: SettingsTreeNavProps): react_jsx_runtime.JSX.Element;
|
|
2923
|
+
declare function SettingsTreeNav({ tree, selectedPath, onSelectPath, accentColor, className, searchPlaceholder }: SettingsTreeNavProps): react_jsx_runtime.JSX.Element;
|
|
2762
2924
|
|
|
2763
2925
|
interface SettingsHeaderProps {
|
|
2764
2926
|
description: string;
|
|
@@ -2773,6 +2935,83 @@ interface SettingsHeaderProps {
|
|
|
2773
2935
|
}
|
|
2774
2936
|
declare function SettingsHeader({ description, icon, onReset, resetTooltip, action, variant, }: SettingsHeaderProps): react_jsx_runtime.JSX.Element;
|
|
2775
2937
|
|
|
2938
|
+
interface DashboardItemStatus {
|
|
2939
|
+
text: string;
|
|
2940
|
+
color: LabelColor;
|
|
2941
|
+
icon?: IconName;
|
|
2942
|
+
tooltip?: {
|
|
2943
|
+
title?: string;
|
|
2944
|
+
description: string;
|
|
2945
|
+
};
|
|
2946
|
+
onClick?: () => void;
|
|
2947
|
+
}
|
|
2948
|
+
interface DashboardListItemProps {
|
|
2949
|
+
/** 'overview' shows git provider + repo row, 'project' omits it */
|
|
2950
|
+
variant?: 'overview' | 'project';
|
|
2951
|
+
/** Git provider (overview variant only) */
|
|
2952
|
+
gitProvider?: GitProviderKey;
|
|
2953
|
+
onGitProviderClick?: () => void;
|
|
2954
|
+
/** Repository name (overview variant only) */
|
|
2955
|
+
repository?: string;
|
|
2956
|
+
/** Suffix appended to repo (e.g. " #123") */
|
|
2957
|
+
repositorySuffix?: string;
|
|
2958
|
+
onRepositoryClick?: () => void;
|
|
2959
|
+
/** Main title */
|
|
2960
|
+
title: string;
|
|
2961
|
+
onTitleClick?: () => void;
|
|
2962
|
+
/** Status label displayed inline with the title */
|
|
2963
|
+
status?: DashboardItemStatus;
|
|
2964
|
+
/** Additional content after status label (extra labels, badges) */
|
|
2965
|
+
extraLabels?: ReactNode;
|
|
2966
|
+
/** Metadata row content (branch, time, stats) */
|
|
2967
|
+
metadata?: ReactNode;
|
|
2968
|
+
/** Right-side action buttons */
|
|
2969
|
+
actions?: ReactNode;
|
|
2970
|
+
className?: string;
|
|
2971
|
+
}
|
|
2972
|
+
declare function DashboardListItem({ variant, gitProvider, onGitProviderClick, repository, repositorySuffix, onRepositoryClick, title, onTitleClick, status, extraLabels, metadata, actions, className, }: DashboardListItemProps): react_jsx_runtime.JSX.Element;
|
|
2973
|
+
|
|
2974
|
+
interface DashboardTab {
|
|
2975
|
+
id: string;
|
|
2976
|
+
label: string;
|
|
2977
|
+
subtitle: string;
|
|
2978
|
+
icon: ReactNode;
|
|
2979
|
+
color: AccentColor;
|
|
2980
|
+
tooltip?: {
|
|
2981
|
+
title: string;
|
|
2982
|
+
description: string;
|
|
2983
|
+
};
|
|
2984
|
+
}
|
|
2985
|
+
interface DashboardPanelProps {
|
|
2986
|
+
tabs: DashboardTab[];
|
|
2987
|
+
activeTab: string;
|
|
2988
|
+
onTabChange: (tabId: string) => void;
|
|
2989
|
+
children: ReactNode;
|
|
2990
|
+
className?: string;
|
|
2991
|
+
/** Content rendered to the right of the tabs, vertically centered */
|
|
2992
|
+
headerRight?: ReactNode;
|
|
2993
|
+
}
|
|
2994
|
+
interface DashboardFilterBarProps {
|
|
2995
|
+
/** Left-side search (typically an Input component) */
|
|
2996
|
+
search: ReactNode;
|
|
2997
|
+
/** Right-side filters and action buttons */
|
|
2998
|
+
filters?: ReactNode;
|
|
2999
|
+
}
|
|
3000
|
+
interface DashboardListProps {
|
|
3001
|
+
children?: ReactNode;
|
|
3002
|
+
/** When true, renders the empty state instead of children */
|
|
3003
|
+
isEmpty?: boolean;
|
|
3004
|
+
/** Icon shown in the empty state */
|
|
3005
|
+
emptyIcon?: ReactNode;
|
|
3006
|
+
/** Primary empty state text */
|
|
3007
|
+
emptyTitle?: string;
|
|
3008
|
+
/** Secondary empty state text */
|
|
3009
|
+
emptyDescription?: string;
|
|
3010
|
+
}
|
|
3011
|
+
declare function DashboardPanel({ tabs, activeTab, onTabChange, children, className, headerRight, }: DashboardPanelProps): react_jsx_runtime.JSX.Element;
|
|
3012
|
+
declare function DashboardFilterBar({ search, filters }: DashboardFilterBarProps): react_jsx_runtime.JSX.Element;
|
|
3013
|
+
declare function DashboardList({ children, isEmpty, emptyIcon, emptyTitle, emptyDescription, }: DashboardListProps): react_jsx_runtime.JSX.Element;
|
|
3014
|
+
|
|
2776
3015
|
declare function cn(...inputs: ClassValue[]): string;
|
|
2777
3016
|
|
|
2778
|
-
export { ACCENT_DEFS, ACCENT_ICON, ACCENT_NAV, ACCENT_TEXT,
|
|
3017
|
+
export { ACCENT_DEFS, ACCENT_ICON, ACCENT_NAV, ACCENT_TEXT, type AccentColor, AccentColorProvider, type AccentDef, ActionDialog, type ActionDialogProps, type ActionItem, type AgentDetectionResult, type AgentPathsApi, AgentPathsPanel, type AgentPathsPanelProps, AiActionButton, type AiActionButtonProps, type AiActionStatus, type AiCompletionResult, AiExecutionActionButtons, type AiExecutionActionButtonsProps, AlertModal, type AlertModalProps, BASE_THEMES, Badge, type BadgeColor, type BadgeProps, BottomPanelHeader, type BottomPanelHeaderProps, Breadcrumb, type BreadcrumbProps, type BreadcrumbSegment, CODING_AGENT_LOGOS, CODING_AGENT_NAMES, CUSTOM_ICON_NAMES, CapabilityListCard, type CapabilityListCardProps, type CapabilitySource, type CapturedError, type CapturedIssuesApi, CapturedIssuesPanel, type CapturedIssuesPanelProps, type ChangedComponents, Checkbox, type CheckboxColor, type CheckboxProps, type CheckboxSize, type CheckboxVariant, type CodingAgentConfig, CodingAgentIcon, type CodingAgentKey, type CodingToolId, type CodingToolPresetConfig, CollapseButton, type CollapseButtonProps, CollapsibleSection, type CollapsibleSectionProps, type ComponentVersion, ConfirmBadge, type ConfirmBadgeColor, type ConfirmBadgeProps, ConfirmModal, type ConfirmModalProps, type ConsentChoice, CookieConsent, type CookieConsentProps, type CreateSnapshotResult, CustomIcon, type CustomIconKey, DARK_THEMES, DEFAULT_DIMS, DEFAULT_OUTLINE, DashboardFilterBar, type DashboardFilterBarProps, type DashboardItemStatus, DashboardList, DashboardListItem, type DashboardListItemProps, type DashboardListProps, DashboardPanel, type DashboardPanelProps, type DashboardTab, type DetailRow, DetailSection, type DetailSectionProps, DetailViewWrapper, type DetailViewWrapperProps, type DiffSummary, type DiffTreeNode, type DirectoryStatus, EditorPlaceholderCard, type EditorPlaceholderCardProps, EditorToolbar, type EditorToolbarProps, type ErrorLogger, ExecutionDetailsPanel, type ExecutionDetailsPanelProps, type ExecutionStatus, type ExplorerContextMenuInfo, type ExplorerNode, type ExplorerTopItem, FORM_COLORS, type FileDiffInfo, type FileDiffStatus, FileDiffViewer, type FileDiffViewerProps, type FileEntry, FileStructureSection, type FileStructureSectionProps, FileTree, type FileTreeNode, type FileTreeProps, type FileTypeOption, FileTypeTabbedPromptEditor, type FileTypeTabbedPromptEditorProps, FilesPanel, type FilesPanelProps, FilterDropdown, type FilterDropdownProps, FormActions, type FormActionsProps, type FormColor, FrontmatterFormHeader, type FrontmatterFormHeaderProps, GIT_PROVIDER_NAMES, GitProviderIcon, type GitProviderKey, type GoldenLiveDiff, type GoldenMeta, type GoldenSnapshotsApi, type GoldenStatus, GoldenSyncPanel, type GoldenSyncPanelProps, ISSUE_TYPES, IconButton, type IconButtonColor, type IconButtonProps, type IconButtonStatus, type IconButtonVariant, type IconName, Input, type InputProps, type IssueReport, type IssueReportResult, type IssueType, LIGHT_THEMES, Label, type LabelColor, type LabelProps, type LayoutTab, LayoutTabBar, type LayoutTabBarProps, type ModalKind, type ModalSize, NavCard, type NavCardProps, NavigationBar, type NavigationBarProps, NumberInput, type NumberInputProps, type PanelTab, type PreviewMode, ProjectExplorer, type ProjectExplorerProps, type PromptEditorApi, type PromptPlaceholder, type PromptSnapshot, RegistryBrowser, type RegistryBrowserProps, RegistryCard, type RegistryCardProps, RegistryDetail, type RegistryDetailProps, type RegistryItemType, ReportBugForm, type ReportBugFormProps, type ResetResult, ResizableTextarea, type ResizableTextareaProps, SCALE_KEYS, SNIPPET_NAME_REGEX, SURFACE_KEYS, type ScaleKey, type ScenarioOption, ScopeBadge, type ScopeType, type Screenshot, type ScreenshotAttachment, ScreenshotUploader, type ScreenshotUploaderProps, type SeedInfo, type SeedrItemStatus, SegmentedToggle, type SegmentedToggleOption, type SegmentedToggleProps, Select, type SelectOption, type SelectProps, type SelectionCardItem, SelectionGrid, type SelectionGridProps, SettingRow, type SettingRowProps, SettingsCard, type SettingsCardProps, SettingsHeader, type SettingsHeaderProps, SettingsInfoBox, type SettingsInfoBoxColor, type SettingsInfoBoxProps, SettingsPanel, type SettingsPanelProps, SettingsSectionTitle, type SettingsSectionTitleProps, SettingsTreeNav, type SettingsTreeNavProps, type SettingsTreeNode, SimulatorPromptEditor, type SimulatorPromptEditorProps, type SnapshotBrowserApi, SnapshotBrowserPanel, type SnapshotBrowserPanelProps, SnapshotCard, type SnapshotCardProps, type SnapshotCategory, type SnapshotEntry, type SnapshotInfo, type SnapshotItem, SnapshotManager, type SnapshotManagerProps, type SnapshotScope, SnapshotTree, type SnapshotTreeProps, type SnapshotsManifest, type Snippet, type SnippetData, SnippetsEditor, type SnippetsEditorApi, type SnippetsEditorProps, SnippetsPanel, type SnippetsPanelProps, SortDropdown, type SortDropdownProps, type SortField, type StatusBanner, StatusCard, type StatusCardProps, type StatusItem, StatusOverview, type StatusOverviewProps, type SubmittedError, type SurfaceKey, type SystemInfo, TOOLR_APPS, type Tab, TabBar, type TabBarProps, TabbedPromptEditor, type TabbedPromptEditorProps, type ThemeId, Toggle, type ToggleColor, type ToggleProps, type ToggleSize, type ToolTab, type ToolrAppId, ToolrAppLogo, Tooltip, type TooltipAlign, TooltipButton, type TooltipContent, type TooltipPosition, type TrackedError, type UseAgentPathsOptions, type UseAgentPathsReturn, type UseCapturedIssuesOptions, type UseCapturedIssuesReturn, type UseGoldenSyncOptions, type UseGoldenSyncReturn, type UseNavigationHistoryReturn, type UseReportBugOptions, type UseReportBugReturn, type UseResizableSidebarOptions, type UseSnapshotBrowserOptions, type UseSnapshotBrowserReturn, type UseSnippetsEditorOptions, type UseSnippetsEditorReturn, VersionManager, type VersionManagerProps, applyTheme, buildExplorerTree, cn, collectAllFolderPaths, collectDirPaths, collectExpandablePaths, collectExplorerExpandablePaths, countFiles, countFolders, createErrorLogger, filterExplorerTree, filterTree, findNodeByPath, findPathToNode, formatBytes, formatDate, generateScale, getAllLeafPaths, getBreadcrumbFromPath, getLanguage, getLanguageFromPath, getParentPaths, hslToHex, iconMap, isLeafNode, isLightTheme, resolveAccentHex, satCurve, smartCapitalize, submitIssueReport, useAccentColor, useAgentPaths, useCapturedIssues, useClickOutside, useDropdownMaxHeight, useDropdownPortal, useGoldenSync, useModalBehavior, useNavigationHistory, useReportBug, useResizableSidebar, useSnapshotBrowser, useSnippetsEditor };
|