@toolr/ui-design 0.1.8 → 0.1.9

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