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