@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.
Files changed (101) hide show
  1. package/ai-manifest.json +35 -20
  2. package/components/composites/dashboard-list-item.tsx +172 -0
  3. package/components/composites/dashboard-panel.tsx +218 -0
  4. package/components/content/info-panel-primitives.tsx +9 -8
  5. package/components/diagrams/diagram-utils.tsx +2 -1
  6. package/components/hooks/use-dropdown-portal.ts +39 -0
  7. package/components/lib/accent-context.ts +10 -0
  8. package/components/lib/{ai-tools.tsx → coding-agents.tsx} +23 -8
  9. package/components/lib/custom-icons.tsx +37 -0
  10. package/components/lib/form-colors.ts +16 -16
  11. package/components/lib/git-providers.tsx +39 -0
  12. package/components/lib/theme-engine.ts +59 -10
  13. package/components/lib/toolr-brand.tsx +23 -9
  14. package/components/sections/captured-issues/captured-issues-panel.tsx +17 -8
  15. package/components/sections/{ai-tools-paths/tools-paths-panel.tsx → coding-agent-paths/agent-paths-panel.tsx} +70 -62
  16. package/components/sections/coding-agent-paths/index.ts +37 -0
  17. package/components/sections/{ai-tools-paths → coding-agent-paths}/types.ts +28 -28
  18. package/components/sections/coding-agent-paths/use-agent-paths.ts +159 -0
  19. package/components/sections/golden-snapshots/file-diff-viewer.tsx +10 -9
  20. package/components/sections/golden-snapshots/golden-sync-panel.tsx +12 -3
  21. package/components/sections/golden-snapshots/snapshot-manager.tsx +9 -7
  22. package/components/sections/golden-snapshots/status-overview.tsx +8 -8
  23. package/components/sections/golden-snapshots/version-manager.tsx +6 -6
  24. package/components/sections/prompt-editor/file-type-tabbed-prompt-editor.tsx +3 -3
  25. package/components/sections/prompt-editor/index.ts +1 -1
  26. package/components/sections/prompt-editor/simulator-prompt-editor.tsx +13 -5
  27. package/components/sections/prompt-editor/tabbed-prompt-editor.tsx +18 -10
  28. package/components/sections/prompt-editor/types.ts +2 -2
  29. package/components/sections/report-bug/report-bug-form.tsx +12 -4
  30. package/components/sections/report-bug/screenshot-uploader.tsx +11 -3
  31. package/components/sections/snapshot-browser/snapshot-browser-panel.tsx +12 -4
  32. package/components/sections/snapshot-browser/snapshot-tree.tsx +5 -4
  33. package/components/sections/snapshot-browser/types.ts +1 -1
  34. package/components/sections/snippets-editor/snippets-editor.tsx +16 -9
  35. package/components/settings/SettingsHeader.tsx +2 -2
  36. package/components/settings/SettingsPanel.tsx +11 -3
  37. package/components/settings/SettingsTreeNav.tsx +15 -9
  38. package/components/ui/action-dialog.tsx +24 -30
  39. package/components/ui/ai-action-button.tsx +10 -7
  40. package/components/ui/ai-execution-action-buttons.tsx +13 -5
  41. package/components/ui/badge.tsx +7 -4
  42. package/components/ui/bottom-panel-header.tsx +9 -5
  43. package/components/ui/breadcrumb.tsx +13 -5
  44. package/components/ui/{extension-list-card.tsx → capability-list-card.tsx} +13 -5
  45. package/components/ui/checkbox.tsx +6 -3
  46. package/components/ui/collapsible-section.tsx +38 -29
  47. package/components/ui/confirm-badge.tsx +7 -4
  48. package/components/ui/cookie-consent.tsx +13 -7
  49. package/components/ui/detail-section.tsx +24 -16
  50. package/components/ui/detail-view-wrapper.tsx +30 -22
  51. package/components/ui/editor-placeholder-card.tsx +28 -24
  52. package/components/ui/editor-toolbar.tsx +7 -4
  53. package/components/ui/execution-details-panel.tsx +10 -5
  54. package/components/ui/file-structure-section.tsx +7 -4
  55. package/components/ui/file-tree.tsx +3 -1
  56. package/components/ui/files-panel.tsx +147 -27
  57. package/components/ui/filter-dropdown.tsx +84 -74
  58. package/components/ui/form-actions.tsx +14 -6
  59. package/components/ui/frontmatter-form-header.tsx +10 -2
  60. package/components/ui/icon-button.tsx +22 -9
  61. package/components/ui/input.tsx +7 -4
  62. package/components/ui/label.tsx +5 -5
  63. package/components/ui/layout-tab-bar.tsx +7 -5
  64. package/components/ui/modal.tsx +18 -4
  65. package/components/ui/nav-card.tsx +6 -3
  66. package/components/ui/navigation-bar.tsx +164 -82
  67. package/components/ui/number-input.tsx +8 -4
  68. package/components/ui/project-explorer.tsx +666 -0
  69. package/components/ui/registry-browser.tsx +12 -1
  70. package/components/ui/registry-card.tsx +49 -42
  71. package/components/ui/registry-detail.tsx +40 -17
  72. package/components/ui/resizable-textarea.tsx +18 -11
  73. package/components/ui/scope-badge.tsx +18 -11
  74. package/components/ui/segmented-toggle.tsx +5 -2
  75. package/components/ui/select.tsx +12 -9
  76. package/components/ui/selection-grid.tsx +36 -37
  77. package/components/ui/setting-row.tsx +2 -2
  78. package/components/ui/settings-card.tsx +10 -3
  79. package/components/ui/settings-info-box.tsx +9 -5
  80. package/components/ui/settings-section-title.tsx +14 -2
  81. package/components/ui/snapshot-card.tsx +10 -2
  82. package/components/ui/snippets-panel.tsx +4 -2
  83. package/components/ui/sort-dropdown.tsx +39 -29
  84. package/components/ui/status-card.tsx +9 -1
  85. package/components/ui/tab-bar.tsx +12 -9
  86. package/components/ui/toggle.tsx +13 -7
  87. package/components/ui/tooltip.tsx +9 -1
  88. package/dist/content.js +8 -8
  89. package/dist/diagrams.d.ts +0 -1
  90. package/dist/index.d.ts +427 -184
  91. package/dist/index.js +3098 -1761
  92. package/dist/tokens/primitives.css +28 -6
  93. package/dist/tokens/semantic.css +15 -15
  94. package/dist/tokens/theme.css +23 -0
  95. package/index.ts +25 -11
  96. package/package.json +1 -1
  97. package/tokens/primitives.css +28 -6
  98. package/tokens/semantic.css +15 -15
  99. package/tokens/theme.css +23 -0
  100. package/components/sections/ai-tools-paths/index.ts +0 -37
  101. 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 SCALE_KEYS: readonly ["black", "950", "900", "850", "800", "750", "700", "600", "500", "400", "300", "200"];
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
- color: string;
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 AI_TOOL_LOGOS: {
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 AiToolKey = 'claude' | 'gemini' | 'codex' | 'copilot' | 'opencode';
73
- declare const AI_TOOL_NAMES: Record<AiToolKey, string>;
74
- declare function AiToolIcon({ tool, size, showName, className, style }: {
75
- tool: string;
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
- color?: IconButtonColor;
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
- color?: IconButtonColor;
295
+ accentColor?: IconButtonColor;
250
296
  variant?: IconButtonVariant;
251
297
  active?: boolean;
252
298
  disabled?: boolean;
253
- /** Async action status. Overrides icon, color, and active state when set. */
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, color, variant, active, disabled, status, tooltip, tooltipPosition, badge, badgeColor, strikethrough, className, testId, }: IconButtonProps): react_jsx_runtime.JSX.Element;
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
- color?: IconButtonColor;
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, color, tooltipPosition }: CollapseButtonProps): react_jsx_runtime.JSX.Element;
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
- color: LabelColor;
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, color, icon, IconComponent: CustomIcon, tooltip, size, textTransform, progress, onClick, className, testId, }: LabelProps): react_jsx_runtime.JSX.Element;
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
- color?: BadgeColor;
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
- color?: ConfirmBadgeColor;
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
- color?: CheckboxColor;
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, color, variant, className, 'aria-label': ariaLabel, testId, }: CheckboxProps): react_jsx_runtime.JSX.Element;
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
- color?: ToggleColor;
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, color, 'aria-label': ariaLabel, testId, }: ToggleProps): react_jsx_runtime.JSX.Element;
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
- color?: FormColor;
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
- color?: FormColor;
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, color, size, disabled, className, 'aria-label': ariaLabel, }: NumberInputProps): react_jsx_runtime.JSX.Element;
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
- color?: FormColor;
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
- color?: FormColor;
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, color, size, align, disabled, className, }: SelectProps<T>): react_jsx_runtime.JSX.Element;
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
- color?: FormColor;
526
+ accentColor?: FormColor;
480
527
  }
481
- declare function FilterDropdown({ value, onChange, options, allLabel, labelExtra, clearable, variant, color, }: FilterDropdownProps): react_jsx_runtime.JSX.Element;
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
- color?: FormColor;
545
+ accentColor?: FormColor;
499
546
  }
500
- declare function SortDropdown({ field, ascending, onFieldChange, onToggleDirection, fields, variant, color, }: SortDropdownProps): react_jsx_runtime.JSX.Element;
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['color'];
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. "AI Tool:") */
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 AI tool presets. Ignored when `items` is provided. */
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?: 'purple' | 'blue' | 'neutral' | 'sky';
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 ExtensionSource = 'project' | 'plugin' | 'user' | 'local';
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<ExtensionSource>;
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: ExtensionSource) => void;
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<ExtensionSource>;
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<ExtensionSource>;
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<ExtensionSource>;
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?: string;
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
- color?: IconButtonProps['color'];
1120
+ accentColor?: IconButtonProps['accentColor'];
1057
1121
  /** Color when completed successfully (defaults to 'green') */
1058
- completedColor?: IconButtonProps['color'];
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, color, completedColor, size, className, testId, }: AiActionButtonProps): react_jsx_runtime.JSX.Element;
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
- * AI Tools Paths — Shared type definitions
1730
+ * Coding Agent Paths — Shared type definitions
1682
1731
  *
1683
- * Part of: Sections > AI Tools Paths
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
- * - Tools are keyed by string ID (not hardcoded to specific tools)
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 tool sets
1698
- * - The UI renders whatever tools the consumer provides
1746
+ * - Other apps can define their own agent sets
1747
+ * - The UI renders whatever agents the consumer provides
1699
1748
  */
1700
- /** Per-tool configuration state */
1701
- interface AiToolConfig {
1702
- /** Unique identifier for the tool (e.g. "claude", "gemini") */
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 tool is enabled for use */
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 tool was found during detection */
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 tool's binary */
1716
- interface ToolDetectionResult {
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
- * ToolsPathsApi — The callback interface that each app must implement.
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
- * │ detect_all_tools() → Record<string, ToolDetectionResult>
1741
- * │ Scans PATH and known install locations for all tool binaries.
1742
- * │ Returns a map of tool ID → detection result.
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
- * │ detect_tool(toolId) → ToolDetectionResult
1745
- * │ Scans for a single tool binary. Used for per-tool refresh.
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 <tool-binary>)
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 tools)
1759
- * │ - ~/.npm/bin/<binary> (for npm-based tools)
1760
- * │ 3. Check tool-specific locations:
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 ToolsPathsApi {
1767
- /** Scan all tools and return detection results keyed by tool ID */
1768
- detectAll: () => Promise<Record<string, ToolDetectionResult>>;
1769
- /** Scan a single tool and return its detection result */
1770
- detectTool: (toolId: string) => Promise<ToolDetectionResult>;
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 ToolsPathsPanelProps {
1824
+ interface AgentPathsPanelProps {
1776
1825
  /** API adapter for backend operations (detection, validation) */
1777
- api: ToolsPathsApi;
1778
- /** Current tool configurations */
1779
- tools: AiToolConfig[];
1780
- /** Called when a tool's config changes. Consumer updates their state. */
1781
- onToolConfigChange: (toolId: string, config: Partial<AiToolConfig>) => void;
1782
- /** Optional render function for tool icons. Receives tool ID, returns ReactNode. */
1783
- renderToolIcon?: (toolId: string) => ReactNode;
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 ToolsPathsPanel({ api, tools, onToolConfigChange, renderToolIcon, className, }: ToolsPathsPanelProps): react_jsx_runtime.JSX.Element;
1836
+ declare function AgentPathsPanel({ api, agents, onAgentConfigChange, renderAgentIcon, accentColor, className, }: AgentPathsPanelProps): react_jsx_runtime.JSX.Element;
1787
1837
 
1788
1838
  /**
1789
- * useToolsPathsTool detection and configuration state hook
1839
+ * useAgentPathsAgent detection and configuration state hook
1790
1840
  *
1791
- * Part of: Sections > AI Tools Paths
1841
+ * Part of: Sections > Coding Agent Paths
1792
1842
  *
1793
- * Manages tool detection state, per-tool refresh tracking, and path validation.
1794
- * Used internally by ToolsPathsPanel but can also be used standalone for
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 tool configs — the consumer owns that state.
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 tools have been scanned, which are currently
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 UseToolsPathsOptions {
1807
- api: ToolsPathsApi;
1808
- tools: AiToolConfig[];
1809
- onToolConfigChange: (toolId: string, config: Partial<AiToolConfig>) => void;
1856
+ interface UseAgentPathsOptions {
1857
+ api: AgentPathsApi;
1858
+ agents: CodingAgentConfig[];
1859
+ onAgentConfigChange: (agentId: string, config: Partial<CodingAgentConfig>) => void;
1810
1860
  }
1811
- interface UseToolsPathsReturn {
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 tool IDs currently being individually refreshed */
1817
- refreshingTools: Set<string>;
1818
- /** Set of tool IDs that were found during the last scan */
1819
- scannedTools: Set<string>;
1820
- /** Run detection for all tools */
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 tool */
1823
- detectTool: (toolId: string) => Promise<void>;
1824
- /** Validate and update a tool's binary path */
1825
- validateAndUpdatePath: (toolId: string, path: string) => Promise<void>;
1826
- /** Toggle a tool's enabled state */
1827
- toggleEnabled: (toolId: string) => void;
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 useToolsPaths({ api, tools, onToolConfigChange }: UseToolsPathsOptions): UseToolsPathsReturn;
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", "Extensions") */
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?: string;
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
- declare function FilesPanel({ files, selectedPath, onSelect, onAction, showSearch, className, accentColor, }: FilesPanelProps): react_jsx_runtime.JSX.Element;
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 ExtensionListCardProps {
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 ExtensionListCard: react.NamedExoticComponent<ExtensionListCardProps>;
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?: string;
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
- color?: ToggleColor;
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?: string;
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, AI_TOOL_LOGOS, AI_TOOL_NAMES, type AccentColor, type AccentDef, ActionDialog, type ActionDialogProps, type ActionItem, AiActionButton, type AiActionButtonProps, type AiActionStatus, type AiCompletionResult, AiExecutionActionButtons, type AiExecutionActionButtonsProps, type AiToolConfig, AiToolIcon, type AiToolKey, AlertModal, type AlertModalProps, BASE_THEMES, Badge, type BadgeColor, type BadgeProps, BottomPanelHeader, type BottomPanelHeaderProps, Breadcrumb, type BreadcrumbProps, type BreadcrumbSegment, type CapturedError, type CapturedIssuesApi, CapturedIssuesPanel, type CapturedIssuesPanelProps, type ChangedComponents, Checkbox, type CheckboxColor, type CheckboxProps, type CheckboxSize, type CheckboxVariant, 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, DARK_THEMES, DEFAULT_DIMS, DEFAULT_OUTLINE, 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, ExtensionListCard, type ExtensionListCardProps, type ExtensionSource, 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, 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, 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 ToolDetectionResult, type ToolTab, type ToolrAppId, ToolrAppLogo, type ToolsPathsApi, ToolsPathsPanel, type ToolsPathsPanelProps, Tooltip, type TooltipAlign, TooltipButton, type TooltipContent, type TooltipPosition, type TrackedError, type UseCapturedIssuesOptions, type UseCapturedIssuesReturn, type UseGoldenSyncOptions, type UseGoldenSyncReturn, type UseNavigationHistoryReturn, type UseReportBugOptions, type UseReportBugReturn, type UseResizableSidebarOptions, type UseSnapshotBrowserOptions, type UseSnapshotBrowserReturn, type UseSnippetsEditorOptions, type UseSnippetsEditorReturn, type UseToolsPathsOptions, type UseToolsPathsReturn, VersionManager, type VersionManagerProps, applyTheme, cn, collectDirPaths, collectExpandablePaths, createErrorLogger, filterTree, findNodeByPath, formatBytes, formatDate, generateScale, getAllLeafPaths, getBreadcrumbFromPath, getLanguage, getLanguageFromPath, getParentPaths, hslToHex, iconMap, isLeafNode, isLightTheme, satCurve, smartCapitalize, submitIssueReport, useCapturedIssues, useClickOutside, useDropdownMaxHeight, useGoldenSync, useModalBehavior, useNavigationHistory, useReportBug, useResizableSidebar, useSnapshotBrowser, useSnippetsEditor, useToolsPaths };
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 };