@stigmer/react 0.0.92 → 0.0.93

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 (328) hide show
  1. package/README.md +57 -12
  2. package/agent/AgentDetailView.js +7 -7
  3. package/agent/AgentDetailView.js.map +1 -1
  4. package/agent/AgentPicker.js +3 -3
  5. package/agent/AgentPicker.js.map +1 -1
  6. package/api-key/ApiKeyCreatedAlert.js +1 -1
  7. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  8. package/api-key/ApiKeyListPanel.js +4 -4
  9. package/api-key/ApiKeyListPanel.js.map +1 -1
  10. package/api-key/CreateApiKeyForm.js +1 -1
  11. package/api-key/CreateApiKeyForm.js.map +1 -1
  12. package/attachment/AttachmentChipList.js +2 -2
  13. package/attachment/AttachmentChipList.js.map +1 -1
  14. package/color-mode.d.ts +48 -0
  15. package/color-mode.d.ts.map +1 -0
  16. package/color-mode.js +53 -0
  17. package/color-mode.js.map +1 -0
  18. package/composer/ComposerToolbar.d.ts +6 -2
  19. package/composer/ComposerToolbar.d.ts.map +1 -1
  20. package/composer/ComposerToolbar.js +5 -3
  21. package/composer/ComposerToolbar.js.map +1 -1
  22. package/composer/ConfigureMenu.js +3 -3
  23. package/composer/ConfigureMenu.js.map +1 -1
  24. package/composer/ContextChip.js +1 -1
  25. package/composer/ContextChip.js.map +1 -1
  26. package/composer/ContextPopover.js +1 -1
  27. package/composer/ContextPopover.js.map +1 -1
  28. package/composer/SessionComposer.d.ts +24 -3
  29. package/composer/SessionComposer.d.ts.map +1 -1
  30. package/composer/SessionComposer.js +5 -4
  31. package/composer/SessionComposer.js.map +1 -1
  32. package/environment/CreateEnvironmentForm.js +1 -1
  33. package/environment/CreateEnvironmentForm.js.map +1 -1
  34. package/environment/EnvVarForm.js +2 -2
  35. package/environment/EnvVarForm.js.map +1 -1
  36. package/environment/EnvironmentListPanel.js +2 -2
  37. package/environment/EnvironmentListPanel.js.map +1 -1
  38. package/environment/EnvironmentVariableEditor.js +6 -6
  39. package/environment/EnvironmentVariableEditor.js.map +1 -1
  40. package/error/ErrorMessage.js +1 -1
  41. package/error/ErrorMessage.js.map +1 -1
  42. package/execution/ApprovalCard.js +4 -4
  43. package/execution/ApprovalCard.js.map +1 -1
  44. package/execution/ArtifactCard.js +1 -1
  45. package/execution/ArtifactCard.js.map +1 -1
  46. package/execution/ArtifactPreviewModal.js +4 -4
  47. package/execution/ArtifactPreviewModal.js.map +1 -1
  48. package/execution/FollowUpInput.js +1 -1
  49. package/execution/FollowUpInput.js.map +1 -1
  50. package/execution/McpToolDetail.js +4 -4
  51. package/execution/McpToolDetail.js.map +1 -1
  52. package/execution/MessageEntry.js +1 -1
  53. package/execution/MessageEntry.js.map +1 -1
  54. package/execution/MessageThread.js +1 -1
  55. package/execution/MessageThread.js.map +1 -1
  56. package/execution/SessionVariablesInput.js +4 -4
  57. package/execution/SessionVariablesInput.js.map +1 -1
  58. package/execution/SubAgentSection.js +2 -2
  59. package/execution/SubAgentSection.js.map +1 -1
  60. package/execution/ToolCallDetail.js +2 -2
  61. package/execution/ToolCallDetail.js.map +1 -1
  62. package/execution/ToolCallGroup.js +1 -1
  63. package/execution/ToolCallGroup.js.map +1 -1
  64. package/execution/ToolCallItem.js +2 -2
  65. package/execution/ToolCallItem.js.map +1 -1
  66. package/execution/WriteBackCard.js +3 -3
  67. package/execution/WriteBackCard.js.map +1 -1
  68. package/execution/tool-rendering-primitives.js +3 -3
  69. package/execution/tool-rendering-primitives.js.map +1 -1
  70. package/github/GitHubRepoPicker.js +5 -5
  71. package/github/GitHubRepoPicker.js.map +1 -1
  72. package/iam-policy/GrantAccessForm.js +1 -1
  73. package/iam-policy/GrantAccessForm.js.map +1 -1
  74. package/iam-policy/OrgMembersPanel.js +5 -5
  75. package/iam-policy/OrgMembersPanel.js.map +1 -1
  76. package/identity-provider/CreateIdentityProviderForm.js +3 -3
  77. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  78. package/identity-provider/IdentityProviderDetailPanel.js +5 -5
  79. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  80. package/identity-provider/IdentityProviderListPanel.js +3 -3
  81. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  82. package/identity-provider/IdentityProviderWizard.js +7 -7
  83. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  84. package/identity-provider/ProviderPicker.js +2 -2
  85. package/identity-provider/ProviderPicker.js.map +1 -1
  86. package/index.d.ts +8 -4
  87. package/index.d.ts.map +1 -1
  88. package/index.js +7 -3
  89. package/index.js.map +1 -1
  90. package/internal/CloudFeatureNotice.js +1 -1
  91. package/internal/CloudFeatureNotice.js.map +1 -1
  92. package/internal/Tabs.js +1 -1
  93. package/internal/Tabs.js.map +1 -1
  94. package/internal/markdown-components.js +2 -2
  95. package/internal/markdown-components.js.map +1 -1
  96. package/invitation/InvitationCreatedAlert.js +1 -1
  97. package/invitation/InvitationCreatedAlert.js.map +1 -1
  98. package/invitation/InvitationManager.js +5 -5
  99. package/invitation/InvitationManager.js.map +1 -1
  100. package/invitation/InvitationRedemption.js +4 -4
  101. package/invitation/InvitationRedemption.js.map +1 -1
  102. package/library/ResourceCountCard.js +1 -1
  103. package/library/ResourceCountCard.js.map +1 -1
  104. package/library/ResourceListView.js +5 -5
  105. package/library/ResourceListView.js.map +1 -1
  106. package/mcp-server/McpServerConfigPanel.js +5 -5
  107. package/mcp-server/McpServerConfigPanel.js.map +1 -1
  108. package/mcp-server/McpServerConnectDialog.js +4 -4
  109. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  110. package/mcp-server/McpServerDetailView.js +14 -14
  111. package/mcp-server/McpServerDetailView.js.map +1 -1
  112. package/mcp-server/McpServerPicker.js +4 -4
  113. package/mcp-server/McpServerPicker.js.map +1 -1
  114. package/mcp-server/McpToolSelector.js +3 -3
  115. package/mcp-server/McpToolSelector.js.map +1 -1
  116. package/mcp-server/OAuthAppForm.js +1 -1
  117. package/mcp-server/OAuthAppForm.js.map +1 -1
  118. package/models/ModelSelector.js +1 -1
  119. package/models/ModelSelector.js.map +1 -1
  120. package/oauth-app/CreateOAuthAppForm.js +1 -1
  121. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  122. package/oauth-app/OAuthAppDetailPanel.js +3 -3
  123. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  124. package/oauth-app/OAuthAppListPanel.js +2 -2
  125. package/oauth-app/OAuthAppListPanel.js.map +1 -1
  126. package/organization/CreateOrganizationForm.js +1 -1
  127. package/organization/CreateOrganizationForm.js.map +1 -1
  128. package/organization/OrgProfilePanel.js +3 -3
  129. package/organization/OrgProfilePanel.js.map +1 -1
  130. package/package.json +4 -4
  131. package/platform-client/CreatePlatformClientForm.js +2 -2
  132. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  133. package/platform-client/PlatformClientDetailPanel.js +4 -4
  134. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  135. package/platform-client/PlatformClientListPanel.js +3 -3
  136. package/platform-client/PlatformClientListPanel.js.map +1 -1
  137. package/platform-client/PlatformClientSecretAlert.js +2 -2
  138. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  139. package/provider.d.ts +39 -2
  140. package/provider.d.ts.map +1 -1
  141. package/provider.js +11 -3
  142. package/provider.js.map +1 -1
  143. package/runner/RunnerListPanel.d.ts +65 -0
  144. package/runner/RunnerListPanel.d.ts.map +1 -0
  145. package/runner/RunnerListPanel.js +237 -0
  146. package/runner/RunnerListPanel.js.map +1 -0
  147. package/runner/RunnerPicker.d.ts +54 -0
  148. package/runner/RunnerPicker.d.ts.map +1 -0
  149. package/runner/RunnerPicker.js +133 -0
  150. package/runner/RunnerPicker.js.map +1 -0
  151. package/runner/__tests__/useDeleteRunner.test.d.ts +2 -0
  152. package/runner/__tests__/useDeleteRunner.test.d.ts.map +1 -0
  153. package/runner/__tests__/useDeleteRunner.test.js +108 -0
  154. package/runner/__tests__/useDeleteRunner.test.js.map +1 -0
  155. package/runner/__tests__/useLaunchLocalRunner.test.d.ts +2 -0
  156. package/runner/__tests__/useLaunchLocalRunner.test.d.ts.map +1 -0
  157. package/runner/__tests__/useLaunchLocalRunner.test.js +143 -0
  158. package/runner/__tests__/useLaunchLocalRunner.test.js.map +1 -0
  159. package/runner/__tests__/useStopRunner.test.d.ts +2 -0
  160. package/runner/__tests__/useStopRunner.test.d.ts.map +1 -0
  161. package/runner/__tests__/useStopRunner.test.js +114 -0
  162. package/runner/__tests__/useStopRunner.test.js.map +1 -0
  163. package/runner/index.d.ts +14 -0
  164. package/runner/index.d.ts.map +1 -0
  165. package/runner/index.js +8 -0
  166. package/runner/index.js.map +1 -0
  167. package/runner/phase.d.ts +30 -0
  168. package/runner/phase.d.ts.map +1 -0
  169. package/runner/phase.js +58 -0
  170. package/runner/phase.js.map +1 -0
  171. package/runner/useDeleteRunner.d.ts +36 -0
  172. package/runner/useDeleteRunner.d.ts.map +1 -0
  173. package/runner/useDeleteRunner.js +42 -0
  174. package/runner/useDeleteRunner.js.map +1 -0
  175. package/runner/useLaunchLocalRunner.d.ts +84 -0
  176. package/runner/useLaunchLocalRunner.d.ts.map +1 -0
  177. package/runner/useLaunchLocalRunner.js +75 -0
  178. package/runner/useLaunchLocalRunner.js.map +1 -0
  179. package/runner/useRunnerList.d.ts +49 -0
  180. package/runner/useRunnerList.d.ts.map +1 -0
  181. package/runner/useRunnerList.js +70 -0
  182. package/runner/useRunnerList.js.map +1 -0
  183. package/runner/useStopRunner.d.ts +53 -0
  184. package/runner/useStopRunner.d.ts.map +1 -0
  185. package/runner/useStopRunner.js +50 -0
  186. package/runner/useStopRunner.js.map +1 -0
  187. package/session/draft.d.ts +53 -0
  188. package/session/draft.d.ts.map +1 -0
  189. package/session/draft.js +45 -0
  190. package/session/draft.js.map +1 -0
  191. package/session/index.d.ts +10 -0
  192. package/session/index.d.ts.map +1 -1
  193. package/session/index.js +5 -0
  194. package/session/index.js.map +1 -1
  195. package/session/useCreateSession.d.ts +8 -0
  196. package/session/useCreateSession.d.ts.map +1 -1
  197. package/session/useCreateSession.js +1 -0
  198. package/session/useCreateSession.js.map +1 -1
  199. package/session/useEditSessionPrep.d.ts +26 -0
  200. package/session/useEditSessionPrep.d.ts.map +1 -0
  201. package/session/useEditSessionPrep.js +83 -0
  202. package/session/useEditSessionPrep.js.map +1 -0
  203. package/session/useNewSessionFlow.d.ts +110 -0
  204. package/session/useNewSessionFlow.d.ts.map +1 -0
  205. package/session/useNewSessionFlow.js +184 -0
  206. package/session/useNewSessionFlow.js.map +1 -0
  207. package/session/usePersistedModel.d.ts +18 -0
  208. package/session/usePersistedModel.d.ts.map +1 -0
  209. package/session/usePersistedModel.js +31 -0
  210. package/session/usePersistedModel.js.map +1 -0
  211. package/session/useSessionPageFlow.d.ts +104 -0
  212. package/session/useSessionPageFlow.d.ts.map +1 -0
  213. package/session/useSessionPageFlow.js +172 -0
  214. package/session/useSessionPageFlow.js.map +1 -0
  215. package/skill/SkillDetailView.js +3 -3
  216. package/skill/SkillDetailView.js.map +1 -1
  217. package/skill/SkillPicker.js +3 -3
  218. package/skill/SkillPicker.js.map +1 -1
  219. package/src/agent/AgentDetailView.tsx +8 -8
  220. package/src/agent/AgentPicker.tsx +3 -3
  221. package/src/api-key/ApiKeyCreatedAlert.tsx +2 -2
  222. package/src/api-key/ApiKeyListPanel.tsx +6 -6
  223. package/src/api-key/CreateApiKeyForm.tsx +2 -2
  224. package/src/attachment/AttachmentChipList.tsx +3 -3
  225. package/src/color-mode.ts +75 -0
  226. package/src/composer/ComposerToolbar.tsx +29 -7
  227. package/src/composer/ConfigureMenu.tsx +6 -6
  228. package/src/composer/ContextChip.tsx +1 -1
  229. package/src/composer/ContextPopover.tsx +2 -2
  230. package/src/composer/SessionComposer.tsx +34 -5
  231. package/src/environment/CreateEnvironmentForm.tsx +3 -3
  232. package/src/environment/EnvVarForm.tsx +6 -6
  233. package/src/environment/EnvironmentListPanel.tsx +3 -3
  234. package/src/environment/EnvironmentVariableEditor.tsx +7 -7
  235. package/src/error/ErrorMessage.tsx +5 -5
  236. package/src/execution/ApprovalCard.tsx +5 -5
  237. package/src/execution/ArtifactCard.tsx +2 -2
  238. package/src/execution/ArtifactPreviewModal.tsx +4 -4
  239. package/src/execution/FollowUpInput.tsx +2 -2
  240. package/src/execution/McpToolDetail.tsx +4 -4
  241. package/src/execution/MessageEntry.tsx +1 -1
  242. package/src/execution/MessageThread.tsx +1 -1
  243. package/src/execution/SessionVariablesInput.tsx +7 -7
  244. package/src/execution/SubAgentSection.tsx +5 -5
  245. package/src/execution/ToolCallDetail.tsx +2 -2
  246. package/src/execution/ToolCallGroup.tsx +3 -3
  247. package/src/execution/ToolCallItem.tsx +4 -4
  248. package/src/execution/WriteBackCard.tsx +5 -5
  249. package/src/execution/tool-rendering-primitives.tsx +5 -5
  250. package/src/github/GitHubRepoPicker.tsx +5 -5
  251. package/src/iam-policy/GrantAccessForm.tsx +2 -2
  252. package/src/iam-policy/OrgMembersPanel.tsx +11 -11
  253. package/src/identity-provider/CreateIdentityProviderForm.tsx +4 -4
  254. package/src/identity-provider/IdentityProviderDetailPanel.tsx +7 -7
  255. package/src/identity-provider/IdentityProviderListPanel.tsx +7 -7
  256. package/src/identity-provider/IdentityProviderWizard.tsx +8 -8
  257. package/src/identity-provider/ProviderPicker.tsx +2 -2
  258. package/src/index.ts +46 -7
  259. package/src/internal/CloudFeatureNotice.tsx +1 -1
  260. package/src/internal/Tabs.tsx +1 -1
  261. package/src/internal/markdown-components.tsx +2 -2
  262. package/src/invitation/InvitationCreatedAlert.tsx +2 -2
  263. package/src/invitation/InvitationManager.tsx +9 -9
  264. package/src/invitation/InvitationRedemption.tsx +11 -11
  265. package/src/library/ResourceCountCard.tsx +1 -1
  266. package/src/library/ResourceListView.tsx +7 -7
  267. package/src/mcp-server/McpServerConfigPanel.tsx +7 -7
  268. package/src/mcp-server/McpServerConnectDialog.tsx +5 -5
  269. package/src/mcp-server/McpServerDetailView.tsx +19 -19
  270. package/src/mcp-server/McpServerPicker.tsx +6 -6
  271. package/src/mcp-server/McpToolSelector.tsx +4 -4
  272. package/src/mcp-server/OAuthAppForm.tsx +3 -3
  273. package/src/models/ModelSelector.tsx +1 -1
  274. package/src/oauth-app/CreateOAuthAppForm.tsx +3 -3
  275. package/src/oauth-app/OAuthAppDetailPanel.tsx +7 -7
  276. package/src/oauth-app/OAuthAppListPanel.tsx +3 -3
  277. package/src/organization/CreateOrganizationForm.tsx +3 -3
  278. package/src/organization/OrgProfilePanel.tsx +4 -5
  279. package/src/platform-client/CreatePlatformClientForm.tsx +6 -6
  280. package/src/platform-client/PlatformClientDetailPanel.tsx +19 -19
  281. package/src/platform-client/PlatformClientListPanel.tsx +7 -7
  282. package/src/platform-client/PlatformClientSecretAlert.tsx +2 -2
  283. package/src/provider.tsx +52 -2
  284. package/src/runner/RunnerListPanel.tsx +725 -0
  285. package/src/runner/RunnerPicker.tsx +319 -0
  286. package/src/runner/__tests__/useDeleteRunner.test.tsx +150 -0
  287. package/src/runner/__tests__/useLaunchLocalRunner.test.tsx +223 -0
  288. package/src/runner/__tests__/useStopRunner.test.tsx +154 -0
  289. package/src/runner/index.ts +34 -0
  290. package/src/runner/phase.ts +62 -0
  291. package/src/runner/useDeleteRunner.ts +67 -0
  292. package/src/runner/useLaunchLocalRunner.ts +139 -0
  293. package/src/runner/useRunnerList.ts +114 -0
  294. package/src/runner/useStopRunner.ts +92 -0
  295. package/src/session/draft.ts +82 -0
  296. package/src/session/index.ts +28 -0
  297. package/src/session/useCreateSession.ts +9 -0
  298. package/src/session/useEditSessionPrep.ts +111 -0
  299. package/src/session/useNewSessionFlow.ts +283 -0
  300. package/src/session/usePersistedModel.ts +41 -0
  301. package/src/session/useSessionPageFlow.ts +280 -0
  302. package/src/skill/SkillDetailView.tsx +5 -5
  303. package/src/skill/SkillPicker.tsx +3 -3
  304. package/src/styles.css +25 -1
  305. package/src/usage/OrgUsagePanel.tsx +4 -4
  306. package/src/workspace/WorkspaceEditor.tsx +78 -66
  307. package/src/workspace/index.ts +0 -8
  308. package/styles.css +1 -1
  309. package/usage/OrgUsagePanel.js +2 -2
  310. package/usage/OrgUsagePanel.js.map +1 -1
  311. package/workspace/WorkspaceEditor.d.ts +28 -3
  312. package/workspace/WorkspaceEditor.d.ts.map +1 -1
  313. package/workspace/WorkspaceEditor.js +24 -25
  314. package/workspace/WorkspaceEditor.js.map +1 -1
  315. package/workspace/index.d.ts +0 -4
  316. package/workspace/index.d.ts.map +1 -1
  317. package/workspace/index.js +0 -2
  318. package/workspace/index.js.map +1 -1
  319. package/src/workspace/FolderBrowser.tsx +0 -579
  320. package/src/workspace/useFolderListing.ts +0 -164
  321. package/workspace/FolderBrowser.d.ts +0 -37
  322. package/workspace/FolderBrowser.d.ts.map +0 -1
  323. package/workspace/FolderBrowser.js +0 -188
  324. package/workspace/FolderBrowser.js.map +0 -1
  325. package/workspace/useFolderListing.d.ts +0 -73
  326. package/workspace/useFolderListing.d.ts.map +0 -1
  327. package/workspace/useFolderListing.js +0 -110
  328. package/workspace/useFolderListing.js.map +0 -1
@@ -114,7 +114,7 @@ export function InvitationManager({
114
114
  {Array.from({ length: 2 }, (_, i) => (
115
115
  <div
116
116
  key={i}
117
- className="bg-muted/40 h-14 animate-pulse rounded-lg"
117
+ className="bg-muted-subtle h-14 animate-pulse rounded-lg"
118
118
  />
119
119
  ))}
120
120
  </div>
@@ -353,7 +353,7 @@ function CreateInvitationForm({
353
353
  disabled={!canSubmit}
354
354
  className={cn(
355
355
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
356
- "bg-primary text-primary-foreground hover:bg-primary/90",
356
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
357
357
  "disabled:pointer-events-none disabled:opacity-40",
358
358
  )}
359
359
  >
@@ -367,7 +367,7 @@ function CreateInvitationForm({
367
367
  disabled={isCreating}
368
368
  className={cn(
369
369
  "rounded-md px-3 py-1.5 text-xs",
370
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
370
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
371
371
  "disabled:pointer-events-none disabled:opacity-50",
372
372
  )}
373
373
  >
@@ -433,7 +433,7 @@ function InvitationRow({
433
433
  return (
434
434
  <div
435
435
  role="listitem"
436
- className="flex items-center gap-3 rounded-lg border border-border/60 px-3 py-2.5 hover:border-border transition-colors"
436
+ className="flex items-center gap-3 rounded-lg border border-border-muted px-3 py-2.5 hover:border-border transition-colors"
437
437
  >
438
438
  {/* Icon */}
439
439
  <LinkIcon active={isActive} />
@@ -484,7 +484,7 @@ function InvitationRow({
484
484
  "shrink-0 rounded p-1 transition-colors",
485
485
  copied
486
486
  ? "text-primary"
487
- : "text-muted-foreground hover:text-foreground hover:bg-accent/50",
487
+ : "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
488
488
  )}
489
489
  >
490
490
  {copied ? <CheckIcon /> : <CopyIcon />}
@@ -495,7 +495,7 @@ function InvitationRow({
495
495
  type="button"
496
496
  onClick={onStartRevoke}
497
497
  aria-label={`Revoke ${label}`}
498
- className="shrink-0 rounded p-1 text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors"
498
+ className="shrink-0 rounded p-1 text-muted-foreground hover:text-destructive hover:bg-destructive-subtle transition-colors"
499
499
  >
500
500
  <RevokeIcon />
501
501
  </button>
@@ -534,7 +534,7 @@ function RevokeConfirmation({
534
534
  return (
535
535
  <div
536
536
  role="listitem"
537
- className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2.5"
537
+ className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive-subtle px-3 py-2.5"
538
538
  >
539
539
  <div className="min-w-0 flex-1">
540
540
  <p className="text-xs text-foreground">
@@ -555,7 +555,7 @@ function RevokeConfirmation({
555
555
  disabled={isRevoking}
556
556
  className={cn(
557
557
  "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
558
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
558
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
559
559
  "disabled:pointer-events-none disabled:opacity-50",
560
560
  )}
561
561
  >
@@ -568,7 +568,7 @@ function RevokeConfirmation({
568
568
  disabled={isRevoking}
569
569
  className={cn(
570
570
  "rounded-md px-2.5 py-1 text-xs",
571
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
571
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
572
572
  "disabled:pointer-events-none disabled:opacity-50",
573
573
  )}
574
574
  >
@@ -218,7 +218,7 @@ export function InvitationRedemption({
218
218
  disabled={isRedeeming}
219
219
  className={cn(
220
220
  "w-full inline-flex items-center justify-center gap-1.5 rounded-md px-4 py-2 text-sm font-medium",
221
- "bg-primary text-primary-foreground hover:bg-primary/90",
221
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
222
222
  "disabled:pointer-events-none disabled:opacity-50",
223
223
  "transition-colors",
224
224
  )}
@@ -238,7 +238,7 @@ export function InvitationRedemption({
238
238
  onClick={onAuthRequired}
239
239
  className={cn(
240
240
  "w-full inline-flex items-center justify-center gap-1.5 rounded-md px-4 py-2 text-sm font-medium",
241
- "bg-primary text-primary-foreground hover:bg-primary/90",
241
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
242
242
  "transition-colors",
243
243
  )}
244
244
  >
@@ -258,7 +258,7 @@ export function InvitationRedemption({
258
258
 
259
259
  function InvalidNotice({ reason }: { reason: string }) {
260
260
  return (
261
- <div className="mt-4 rounded-md bg-muted/50 px-3 py-2.5 text-center">
261
+ <div className="mt-4 rounded-md bg-muted-subtle px-3 py-2.5 text-center">
262
262
  <WarningIcon />
263
263
  <p className="mt-1 text-xs text-muted-foreground">
264
264
  {reason || "This invitation is no longer valid."}
@@ -279,7 +279,7 @@ function ErrorCard({
279
279
  onRetry?: () => void;
280
280
  }) {
281
281
  return (
282
- <div className="rounded-lg border border-destructive/30 bg-destructive/5 p-6 text-center">
282
+ <div className="rounded-lg border border-destructive/30 bg-destructive-subtle p-6 text-center">
283
283
  <p className="text-sm text-destructive">{message}</p>
284
284
  {onRetry && (
285
285
  <button
@@ -287,7 +287,7 @@ function ErrorCard({
287
287
  onClick={onRetry}
288
288
  className={cn(
289
289
  "mt-3 inline-flex items-center rounded-md px-3 py-1.5 text-xs font-medium",
290
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
290
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
291
291
  "transition-colors",
292
292
  )}
293
293
  >
@@ -306,15 +306,15 @@ function LoadingSkeleton() {
306
306
  return (
307
307
  <div className="rounded-lg border border-border bg-card p-6 space-y-4">
308
308
  <div className="flex flex-col items-center gap-3">
309
- <div className="size-12 rounded-full bg-muted/40 animate-pulse" />
310
- <div className="h-5 w-40 rounded bg-muted/40 animate-pulse" />
311
- <div className="h-4 w-56 rounded bg-muted/40 animate-pulse" />
309
+ <div className="size-12 rounded-full bg-muted-subtle animate-pulse" />
310
+ <div className="h-5 w-40 rounded bg-muted-subtle animate-pulse" />
311
+ <div className="h-4 w-56 rounded bg-muted-subtle animate-pulse" />
312
312
  </div>
313
313
  <div className="flex justify-center gap-3">
314
- <div className="h-4 w-24 rounded bg-muted/40 animate-pulse" />
315
- <div className="h-4 w-24 rounded bg-muted/40 animate-pulse" />
314
+ <div className="h-4 w-24 rounded bg-muted-subtle animate-pulse" />
315
+ <div className="h-4 w-24 rounded bg-muted-subtle animate-pulse" />
316
316
  </div>
317
- <div className="h-10 w-full rounded-md bg-muted/40 animate-pulse" />
317
+ <div className="h-10 w-full rounded-md bg-muted-subtle animate-pulse" />
318
318
  </div>
319
319
  );
320
320
  }
@@ -121,7 +121,7 @@ export function ResourceCountCard({
121
121
  const rootClasses = cn(
122
122
  "flex flex-col rounded-lg border border-border bg-card p-4 text-left no-underline",
123
123
  isInteractive && [
124
- "cursor-pointer transition-colors hover:bg-accent/50",
124
+ "cursor-pointer transition-colors hover:bg-accent-hover",
125
125
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
126
126
  ],
127
127
  className,
@@ -352,7 +352,7 @@ export function ResourceListView({
352
352
  <div role="search" className="flex items-center gap-2">
353
353
  {onSearchChange && (
354
354
  <div className="relative flex-1">
355
- <SearchIcon className="pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground/60" />
355
+ <SearchIcon className="pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground-subtle" />
356
356
  <input
357
357
  type="text"
358
358
  value={inputValue}
@@ -361,7 +361,7 @@ export function ResourceListView({
361
361
  aria-label={searchPlaceholder}
362
362
  className={cn(
363
363
  "w-full rounded-md border border-input bg-background py-1.5 pl-8 pr-3 text-sm",
364
- "placeholder:text-muted-foreground/60",
364
+ "placeholder:text-muted-foreground-subtle",
365
365
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
366
366
  )}
367
367
  />
@@ -421,12 +421,12 @@ export function ResourceListView({
421
421
  isGrid
422
422
  ? [
423
423
  "flex h-full rounded-lg border border-border bg-card p-4",
424
- "cursor-pointer hover:border-primary/40 hover:bg-accent/30",
424
+ "cursor-pointer hover:border-primary/40 hover:bg-accent-hover",
425
425
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
426
426
  ]
427
427
  : [
428
428
  "rounded-lg px-3 py-2.5",
429
- "cursor-pointer hover:bg-accent/50",
429
+ "cursor-pointer hover:bg-accent-hover",
430
430
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
431
431
  ],
432
432
  )}
@@ -511,7 +511,7 @@ function DefaultResourceRow({
511
511
  </span>
512
512
  ))}
513
513
  {item.tags.length > MAX_VISIBLE_TAGS && (
514
- <span className="text-[10px] text-muted-foreground/60">
514
+ <span className="text-[10px] text-muted-foreground-subtle">
515
515
  +{item.tags.length - MAX_VISIBLE_TAGS} more
516
516
  </span>
517
517
  )}
@@ -712,9 +712,9 @@ function EmptyState({
712
712
  role="status"
713
713
  className="flex flex-col items-center gap-2 py-8 text-center"
714
714
  >
715
- {icon && <div className="text-muted-foreground/40">{icon}</div>}
715
+ {icon && <div className="text-muted-foreground-faint">{icon}</div>}
716
716
  <p className="text-sm font-medium text-muted-foreground">{title}</p>
717
- <p className="text-xs text-muted-foreground/60">{description}</p>
717
+ <p className="text-xs text-muted-foreground-subtle">{description}</p>
718
718
  </div>
719
719
  );
720
720
  }
@@ -286,7 +286,7 @@ export function McpServerConfigPanel({
286
286
  disabled={credentials?.isSubmitting || isOAuthBusy}
287
287
  className={cn(
288
288
  "mt-0.5 shrink-0 rounded p-0.5",
289
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
289
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
290
290
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
291
291
  "disabled:pointer-events-none disabled:opacity-50",
292
292
  )}
@@ -374,7 +374,7 @@ export function McpServerConfigPanel({
374
374
  {error && (
375
375
  <div
376
376
  role="alert"
377
- className="rounded-md border border-destructive/30 bg-destructive/10 px-2.5 py-2 text-xs text-destructive"
377
+ className="rounded-md border border-destructive/30 bg-destructive-subtle px-2.5 py-2 text-xs text-destructive"
378
378
  >
379
379
  {getUserMessage(error)}
380
380
  </div>
@@ -535,7 +535,7 @@ function InlineOAuthSignIn({
535
535
  }}
536
536
  className={cn(
537
537
  "inline-flex items-center gap-1 rounded px-2 py-0.5 text-[0.65rem] font-medium",
538
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
538
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
539
539
  "disabled:pointer-events-none disabled:opacity-50",
540
540
  )}
541
541
  >
@@ -551,7 +551,7 @@ function InlineOAuthSignIn({
551
551
  }}
552
552
  className={cn(
553
553
  "inline-flex items-center rounded px-2 py-0.5 text-[0.65rem] font-medium",
554
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
554
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
555
555
  "disabled:pointer-events-none disabled:opacity-50",
556
556
  )}
557
557
  >
@@ -598,7 +598,7 @@ function InlineOAuthSignIn({
598
598
  }}
599
599
  className={cn(
600
600
  "inline-flex items-center gap-1 rounded px-2 py-0.5 text-[0.65rem] font-medium",
601
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
601
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
602
602
  "disabled:pointer-events-none disabled:opacity-50",
603
603
  )}
604
604
  >
@@ -611,7 +611,7 @@ function InlineOAuthSignIn({
611
611
  onClick={() => setRemoveOrgAppPhase("idle")}
612
612
  className={cn(
613
613
  "inline-flex items-center rounded px-2 py-0.5 text-[0.65rem] font-medium",
614
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
614
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
615
615
  "disabled:pointer-events-none disabled:opacity-50",
616
616
  )}
617
617
  >
@@ -669,7 +669,7 @@ function InlineOAuthSignIn({
669
669
  className={cn(
670
670
  "inline-flex items-center gap-1 rounded px-2 py-0.5 text-[0.65rem] font-medium",
671
671
  isConnected && !needsReAuth
672
- ? "text-muted-foreground hover:text-foreground hover:bg-accent/50"
672
+ ? "text-muted-foreground hover:text-foreground hover:bg-accent-hover"
673
673
  : "bg-primary text-primary-foreground hover:bg-primary-hover",
674
674
  "disabled:pointer-events-none disabled:opacity-50",
675
675
  )}
@@ -252,7 +252,7 @@ function ConnectDialogContent({
252
252
  className={cn(
253
253
  "mt-2 inline-flex items-center rounded-md px-4 py-2 text-sm font-medium",
254
254
  "bg-primary text-primary-foreground",
255
- "hover:bg-primary/90",
255
+ "hover:bg-primary-hover",
256
256
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
257
257
  )}
258
258
  >
@@ -331,7 +331,7 @@ function ConnectDialogContent({
331
331
  className={cn(
332
332
  "mt-4 inline-flex w-full items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium",
333
333
  "bg-primary text-primary-foreground",
334
- "hover:bg-primary/90",
334
+ "hover:bg-primary-hover",
335
335
  "disabled:pointer-events-none disabled:opacity-50",
336
336
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
337
337
  )}
@@ -349,7 +349,7 @@ function ConnectDialogContent({
349
349
  className={cn(
350
350
  "mt-4 inline-flex w-full items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium",
351
351
  "bg-primary text-primary-foreground",
352
- "hover:bg-primary/90",
352
+ "hover:bg-primary-hover",
353
353
  "disabled:pointer-events-none disabled:opacity-50",
354
354
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
355
355
  )}
@@ -413,7 +413,7 @@ function OAuthSection({
413
413
  }) {
414
414
  if (isConnected) {
415
415
  return (
416
- <div className="flex items-center gap-2 rounded-md border border-border bg-muted/30 px-3 py-2">
416
+ <div className="flex items-center gap-2 rounded-md border border-border bg-muted-faint px-3 py-2">
417
417
  <span className="size-2 shrink-0 rounded-full bg-green-500" />
418
418
  <span className="text-sm text-foreground">OAuth connected</span>
419
419
  </div>
@@ -437,7 +437,7 @@ function OAuthSection({
437
437
  className={cn(
438
438
  "inline-flex w-full items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium",
439
439
  "bg-primary text-primary-foreground",
440
- "hover:bg-primary/90",
440
+ "hover:bg-primary-hover",
441
441
  "disabled:pointer-events-none disabled:opacity-50",
442
442
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
443
443
  )}
@@ -490,7 +490,7 @@ function healthPillProps(
490
490
  };
491
491
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED:
492
492
  return {
493
- pillClass: "bg-destructive/10 text-destructive",
493
+ pillClass: "bg-destructive-subtle text-destructive",
494
494
  dotClass: "bg-destructive",
495
495
  label: "Re-auth needed",
496
496
  };
@@ -681,7 +681,7 @@ function ConnectBar({
681
681
  }}
682
682
  className={cn(
683
683
  "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
684
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
684
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
685
685
  "disabled:pointer-events-none disabled:opacity-50",
686
686
  )}
687
687
  >
@@ -706,7 +706,7 @@ function ConnectBar({
706
706
  </div>
707
707
  </div>
708
708
  {disconnectError && (
709
- <div className="flex items-start gap-2 border-t border-destructive/20 bg-destructive/5 px-3 py-2">
709
+ <div className="flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2">
710
710
  <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-destructive" />
711
711
  <p className="flex-1 text-xs text-destructive">
712
712
  {getUserMessage(disconnectError)}
@@ -714,7 +714,7 @@ function ConnectBar({
714
714
  <button
715
715
  type="button"
716
716
  onClick={onClearDisconnectError}
717
- className="shrink-0 text-xs text-destructive/70 hover:text-destructive"
717
+ className="shrink-0 text-xs text-destructive-muted hover:text-destructive"
718
718
  aria-label="Dismiss error"
719
719
  >
720
720
  Dismiss
@@ -751,7 +751,7 @@ function ConnectBar({
751
751
  }}
752
752
  className={cn(
753
753
  "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
754
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
754
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
755
755
  "disabled:pointer-events-none disabled:opacity-50",
756
756
  )}
757
757
  >
@@ -776,7 +776,7 @@ function ConnectBar({
776
776
  </div>
777
777
  </div>
778
778
  {removeOrgAppError && (
779
- <div className="flex items-start gap-2 border-t border-destructive/20 bg-destructive/5 px-3 py-2">
779
+ <div className="flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2">
780
780
  <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-destructive" />
781
781
  <p className="flex-1 text-xs text-destructive">
782
782
  {getUserMessage(removeOrgAppError)}
@@ -784,7 +784,7 @@ function ConnectBar({
784
784
  <button
785
785
  type="button"
786
786
  onClick={onClearRemoveOrgAppError}
787
- className="shrink-0 text-xs text-destructive/70 hover:text-destructive"
787
+ className="shrink-0 text-xs text-destructive-muted hover:text-destructive"
788
788
  aria-label="Dismiss error"
789
789
  >
790
790
  Dismiss
@@ -925,7 +925,7 @@ function ConnectBar({
925
925
 
926
926
  {connectionError && (
927
927
  <div
928
- className="flex items-start gap-2 border-t border-destructive/20 bg-destructive/5 px-3 py-2"
928
+ className="flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2"
929
929
  role="alert"
930
930
  >
931
931
  <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-destructive" />
@@ -948,7 +948,7 @@ function ConnectBar({
948
948
  <button
949
949
  type="button"
950
950
  onClick={onClearConnectionError}
951
- className="text-xs text-destructive/70 hover:text-destructive"
951
+ className="text-xs text-destructive-muted hover:text-destructive"
952
952
  aria-label="Dismiss error"
953
953
  >
954
954
  Dismiss
@@ -1004,14 +1004,14 @@ function ValidationBanner({ message }: { readonly message: string }) {
1004
1004
  return (
1005
1005
  <div
1006
1006
  role="alert"
1007
- className="flex items-start gap-2.5 rounded-lg border border-destructive/30 bg-destructive/5 px-4 py-3"
1007
+ className="flex items-start gap-2.5 rounded-lg border border-destructive/30 bg-destructive-subtle px-4 py-3"
1008
1008
  >
1009
1009
  <WarningIcon className="mt-0.5 size-4 shrink-0 text-destructive" />
1010
1010
  <div className="min-w-0 flex-1">
1011
1011
  <p className="text-sm font-medium text-destructive">
1012
1012
  Invalid Configuration
1013
1013
  </p>
1014
- <p className="mt-0.5 text-xs text-destructive/80">{message}</p>
1014
+ <p className="mt-0.5 text-xs text-destructive-muted">{message}</p>
1015
1015
  </div>
1016
1016
  </div>
1017
1017
  );
@@ -1301,12 +1301,12 @@ function EnvSection({
1301
1301
  {env.isSecret ? "secret" : "config"}
1302
1302
  </span>
1303
1303
  {isOAuthManaged && (
1304
- <span className="shrink-0 rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium text-primary">
1304
+ <span className="shrink-0 rounded bg-primary-subtle px-1.5 py-0.5 text-[10px] font-medium text-primary">
1305
1305
  oauth
1306
1306
  </span>
1307
1307
  )}
1308
1308
  {env.optional && (
1309
- <span className="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground/70">
1309
+ <span className="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground-subtle">
1310
1310
  optional
1311
1311
  </span>
1312
1312
  )}
@@ -1352,7 +1352,7 @@ function ToolsTabContent({
1352
1352
  if (tools.length === 0) {
1353
1353
  return (
1354
1354
  <div className="px-3 py-8 text-center">
1355
- <ConnectIcon className="mx-auto mb-2 size-6 text-muted-foreground/40" />
1355
+ <ConnectIcon className="mx-auto mb-2 size-6 text-muted-foreground-faint" />
1356
1356
  <p className="text-xs text-muted-foreground">
1357
1357
  Connect to this MCP server to discover its available tools.
1358
1358
  </p>
@@ -1394,7 +1394,7 @@ function PoliciesTabContent({
1394
1394
  if (!hasAnyPolicies) {
1395
1395
  return (
1396
1396
  <div className="px-3 py-8 text-center">
1397
- <ShieldIcon className="mx-auto mb-2 size-6 text-muted-foreground/40" />
1397
+ <ShieldIcon className="mx-auto mb-2 size-6 text-muted-foreground-faint" />
1398
1398
  <p className="text-xs text-muted-foreground">
1399
1399
  {hasDiscoveredTools
1400
1400
  ? "No approval policies yet. Reconnect to reclassify tools."
@@ -1435,7 +1435,7 @@ function PolicyGroup({
1435
1435
  }) {
1436
1436
  return (
1437
1437
  <div className="flex flex-col">
1438
- <div className="flex items-center gap-1.5 border-b border-border bg-muted/30 px-3 py-1.5">
1438
+ <div className="flex items-center gap-1.5 border-b border-border bg-muted-faint px-3 py-1.5">
1439
1439
  <span className="text-muted-foreground">{icon}</span>
1440
1440
  <span className="text-[10px] font-medium uppercase tracking-wider text-muted-foreground">
1441
1441
  {label}
@@ -1519,7 +1519,7 @@ function LoadingSkeleton({ className }: { readonly className?: string }) {
1519
1519
  <div key={i} className="space-y-2">
1520
1520
  <div className="h-3 w-28 animate-pulse rounded bg-muted" />
1521
1521
  <div
1522
- className="animate-pulse rounded-lg border border-border bg-muted/30"
1522
+ className="animate-pulse rounded-lg border border-border bg-muted-faint"
1523
1523
  style={{ height: `${h * 4}px` }}
1524
1524
  />
1525
1525
  </div>
@@ -1537,11 +1537,11 @@ function NotFoundState({ className }: { readonly className?: string }) {
1537
1537
  className,
1538
1538
  )}
1539
1539
  >
1540
- <McpServerIcon className="size-10 text-muted-foreground/40" />
1540
+ <McpServerIcon className="size-10 text-muted-foreground-faint" />
1541
1541
  <p className="text-sm font-medium text-muted-foreground">
1542
1542
  MCP Server not found
1543
1543
  </p>
1544
- <p className="text-xs text-muted-foreground/60">
1544
+ <p className="text-xs text-muted-foreground-subtle">
1545
1545
  This MCP server doesn&apos;t exist or you don&apos;t have access to it.
1546
1546
  </p>
1547
1547
  </div>
@@ -617,7 +617,7 @@ export function McpServerPicker({
617
617
  "disabled:pointer-events-none disabled:opacity-50",
618
618
  idx === focusIndex
619
619
  ? "bg-accent text-foreground"
620
- : "text-foreground hover:bg-accent/50",
620
+ : "text-foreground hover:bg-accent-hover",
621
621
  )}
622
622
  role="option"
623
623
  aria-selected={idx === focusIndex}
@@ -667,7 +667,7 @@ function SimpleServerRow({
667
667
  readonly disabled?: boolean;
668
668
  }) {
669
669
  return (
670
- <div className="flex items-center gap-2 rounded-md bg-muted/30 px-2 py-1 text-xs">
670
+ <div className="flex items-center gap-2 rounded-md bg-muted-faint px-2 py-1 text-xs">
671
671
  <McpServerIcon />
672
672
  <span className="min-w-0 flex-1 truncate text-foreground">{slug}</span>
673
673
  <button
@@ -711,7 +711,7 @@ function SetupServerRow({
711
711
  <div
712
712
  className={cn(
713
713
  "flex items-center gap-2 rounded-md px-2 py-1 text-xs",
714
- hasError ? "bg-destructive/10" : "bg-muted/30",
714
+ hasError ? "bg-destructive-subtle" : "bg-muted-faint",
715
715
  )}
716
716
  >
717
717
  <StatusIndicator status={entry.status} hasError={hasError} />
@@ -731,7 +731,7 @@ function SetupServerRow({
731
731
  disabled={disabled}
732
732
  className={cn(
733
733
  "shrink-0 rounded px-1.5 py-0.5 text-[0.6rem] font-medium",
734
- "text-destructive hover:bg-destructive/10",
734
+ "text-destructive hover:bg-destructive-subtle",
735
735
  "disabled:pointer-events-none disabled:opacity-50",
736
736
  )}
737
737
  >
@@ -767,7 +767,7 @@ function SetupServerRow({
767
767
  disabled={disabled}
768
768
  className={cn(
769
769
  "shrink-0 flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[0.6rem] font-medium",
770
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
770
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
771
771
  "disabled:pointer-events-none disabled:opacity-50",
772
772
  )}
773
773
  >
@@ -872,7 +872,7 @@ function LoadingSkeleton() {
872
872
  style={{ width: `${w}%` }}
873
873
  />
874
874
  <div
875
- className="h-2 rounded bg-muted/60 animate-pulse"
875
+ className="h-2 rounded bg-muted-subtle animate-pulse"
876
876
  style={{ width: `${Math.min(w + 15, 90)}%` }}
877
877
  />
878
878
  </div>
@@ -97,7 +97,7 @@ export function McpToolSelector({
97
97
  <p className="text-xs text-muted-foreground">
98
98
  Tools have not been discovered yet.
99
99
  </p>
100
- <p className="mt-1 text-[0.65rem] text-muted-foreground/70">
100
+ <p className="mt-1 text-[0.65rem] text-muted-foreground-subtle">
101
101
  All tools will be enabled by default.
102
102
  </p>
103
103
  </div>
@@ -119,7 +119,7 @@ export function McpToolSelector({
119
119
  disabled={disabled}
120
120
  className={cn(
121
121
  "rounded px-1.5 py-0.5 text-[0.6rem] font-medium",
122
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
122
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
123
123
  "disabled:pointer-events-none disabled:opacity-50",
124
124
  )}
125
125
  >
@@ -131,7 +131,7 @@ export function McpToolSelector({
131
131
  disabled={disabled}
132
132
  className={cn(
133
133
  "rounded px-1.5 py-0.5 text-[0.6rem] font-medium",
134
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
134
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
135
135
  "disabled:pointer-events-none disabled:opacity-50",
136
136
  )}
137
137
  >
@@ -163,7 +163,7 @@ export function McpToolSelector({
163
163
  key={tool.name}
164
164
  className={cn(
165
165
  "group rounded-md px-2 py-1.5 transition-colors",
166
- isEnabled ? "bg-accent/30" : "hover:bg-accent/20",
166
+ isEnabled ? "bg-accent-hover" : "hover:bg-accent-hover",
167
167
  )}
168
168
  >
169
169
  <label
@@ -185,7 +185,7 @@ export function OAuthAppForm({
185
185
  {error && (
186
186
  <div
187
187
  role="alert"
188
- className="rounded-md border border-destructive/30 bg-destructive/10 px-2.5 py-2 text-xs text-destructive"
188
+ className="rounded-md border border-destructive/30 bg-destructive-subtle px-2.5 py-2 text-xs text-destructive"
189
189
  >
190
190
  {getUserMessage(error)}
191
191
  </div>
@@ -199,7 +199,7 @@ export function OAuthAppForm({
199
199
  disabled={isDisabled}
200
200
  className={cn(
201
201
  "rounded-md px-3 py-1.5 text-xs",
202
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
202
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
203
203
  "disabled:pointer-events-none disabled:opacity-50",
204
204
  )}
205
205
  >
@@ -210,7 +210,7 @@ export function OAuthAppForm({
210
210
  disabled={!canSubmit || isDisabled}
211
211
  className={cn(
212
212
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
213
- "bg-primary text-primary-foreground hover:bg-primary/90",
213
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
214
214
  "disabled:pointer-events-none disabled:opacity-40",
215
215
  )}
216
216
  >
@@ -68,7 +68,7 @@ export function ModelSelector({
68
68
  className={[
69
69
  "inline-flex items-center gap-1.5 rounded-md border border-border",
70
70
  "bg-background px-2.5 py-1.5 text-xs text-foreground",
71
- "hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
71
+ "hover:bg-accent-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
72
72
  "disabled:pointer-events-none disabled:opacity-50",
73
73
  "transition-colors",
74
74
  className,
@@ -226,7 +226,7 @@ export function CreateOAuthAppForm({
226
226
  </button>
227
227
 
228
228
  {showAdvanced && (
229
- <div className="mt-2 space-y-3 border-l-2 border-border/60 pl-3">
229
+ <div className="mt-2 space-y-3 border-l-2 border-border-muted pl-3">
230
230
  <FormField
231
231
  id="stgm-oauth-scopes"
232
232
  label="Scopes"
@@ -315,7 +315,7 @@ export function CreateOAuthAppForm({
315
315
  disabled={!canSubmit}
316
316
  className={cn(
317
317
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
318
- "bg-primary text-primary-foreground hover:bg-primary/90",
318
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
319
319
  "disabled:pointer-events-none disabled:opacity-40",
320
320
  )}
321
321
  >
@@ -330,7 +330,7 @@ export function CreateOAuthAppForm({
330
330
  disabled={isCreating}
331
331
  className={cn(
332
332
  "rounded-md px-3 py-1.5 text-xs",
333
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
333
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
334
334
  "disabled:pointer-events-none disabled:opacity-50",
335
335
  )}
336
336
  >