@yancyyu/openhermit 1.6.39 → 1.6.40

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 (137) hide show
  1. package/dist-renderer/assets/{ProjectEditorOverlay-krO5vQxX.js → ProjectEditorOverlay-CemDOX-3.js} +3 -3
  2. package/dist-renderer/assets/{TeamGraphOverlay-DqhQzcTr.js → TeamGraphOverlay-hPY770Db.js} +1 -1
  3. package/dist-renderer/assets/{_basePickBy-B7kSYPxr.js → _basePickBy-BHHrJT1i.js} +1 -1
  4. package/dist-renderer/assets/{_baseUniq-CnjxqwAk.js → _baseUniq-CWErBtke.js} +1 -1
  5. package/dist-renderer/assets/{arc-CLeZuINP.js → arc-C_o2_Uv8.js} +1 -1
  6. package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-QKtqaqdY.js → architectureDiagram-VXUJARFQ-DUW0LI3t.js} +1 -1
  7. package/dist-renderer/assets/{blockDiagram-VD42YOAC-BqdrzO_f.js → blockDiagram-VD42YOAC-CWbCE9hQ.js} +1 -1
  8. package/dist-renderer/assets/{c4Diagram-YG6GDRKO-gwPlCxDC.js → c4Diagram-YG6GDRKO-BjLadrfV.js} +1 -1
  9. package/dist-renderer/assets/channel-DyP9YlCF.js +1 -0
  10. package/dist-renderer/assets/{chunk-4BX2VUAB-C6XLurL4.js → chunk-4BX2VUAB-CPnvjZl9.js} +1 -1
  11. package/dist-renderer/assets/{chunk-55IACEB6-Ds6quhEP.js → chunk-55IACEB6-OlL47yXQ.js} +1 -1
  12. package/dist-renderer/assets/{chunk-B4BG7PRW-5UlA1_e9.js → chunk-B4BG7PRW-DTasjbm8.js} +1 -1
  13. package/dist-renderer/assets/{chunk-DI55MBZ5-ywFrqIsY.js → chunk-DI55MBZ5-C5_Xaqkk.js} +1 -1
  14. package/dist-renderer/assets/{chunk-FMBD7UC4-C7ifUA17.js → chunk-FMBD7UC4-NdoM4DMR.js} +1 -1
  15. package/dist-renderer/assets/{chunk-QN33PNHL-BxGCo80U.js → chunk-QN33PNHL-C8Fybejy.js} +1 -1
  16. package/dist-renderer/assets/{chunk-QZHKN3VN-B2CuaZs6.js → chunk-QZHKN3VN-E98TYFXJ.js} +1 -1
  17. package/dist-renderer/assets/{chunk-TZMSLE5B-Ds1hInvp.js → chunk-TZMSLE5B-h4lFgkIq.js} +1 -1
  18. package/dist-renderer/assets/classDiagram-2ON5EDUG-BqffFTae.js +1 -0
  19. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-BqffFTae.js +1 -0
  20. package/dist-renderer/assets/clone-MPcKWs2O.js +1 -0
  21. package/dist-renderer/assets/{cose-bilkent-S5V4N54A-Cz1GVtLp.js → cose-bilkent-S5V4N54A-DtQ7fkrs.js} +1 -1
  22. package/dist-renderer/assets/{dagre-6UL2VRFP-BrmR-P4h.js → dagre-6UL2VRFP-CN-nL_z4.js} +1 -1
  23. package/dist-renderer/assets/{diagram-PSM6KHXK-DbNjC5Rg.js → diagram-PSM6KHXK-DVJtqmm-.js} +1 -1
  24. package/dist-renderer/assets/{diagram-QEK2KX5R-qkRX5_Mq.js → diagram-QEK2KX5R-DlxHxyXh.js} +1 -1
  25. package/dist-renderer/assets/{diagram-S2PKOQOG-CyL5rCv2.js → diagram-S2PKOQOG-7dpzO6x6.js} +1 -1
  26. package/dist-renderer/assets/{erDiagram-Q2GNP2WA-Dox3-bA5.js → erDiagram-Q2GNP2WA-GP1TqsHi.js} +1 -1
  27. package/dist-renderer/assets/{flowDiagram-NV44I4VS-BtkaxlDL.js → flowDiagram-NV44I4VS-C7ZLETuH.js} +1 -1
  28. package/dist-renderer/assets/{ganttDiagram-JELNMOA3-Dhy_d9GK.js → ganttDiagram-JELNMOA3-CvPB68dH.js} +1 -1
  29. package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-B5XRhIQA.js → gitGraphDiagram-V2S2FVAM-B5yOm3w7.js} +1 -1
  30. package/dist-renderer/assets/{graph-CsoEwUhS.js → graph-smeyY1YZ.js} +1 -1
  31. package/dist-renderer/assets/{index-BWPWmJNo.js → index-BJx8XvG1.js} +1 -1
  32. package/dist-renderer/assets/{index-h17WuEyf.js → index-CQaXUAua.js} +1 -1
  33. package/dist-renderer/assets/{index-DGEBzLNT.js → index-CajRpxO2.js} +1 -1
  34. package/dist-renderer/assets/{index-Bu2R-Se7.js → index-ChG4rE-E.js} +35 -35
  35. package/dist-renderer/assets/index-DUd0uw9C.css +32 -0
  36. package/dist-renderer/assets/{index-D-3KgskL.js → index-IhmXZWqf.js} +1 -1
  37. package/dist-renderer/assets/{index-NhHNs2Oo.js → index-x_JkoDRH.js} +1 -1
  38. package/dist-renderer/assets/{infoDiagram-HS3SLOUP-hMGmNojH.js → infoDiagram-HS3SLOUP-D-hWRQGY.js} +1 -1
  39. package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DXV2rBDl.js → journeyDiagram-XKPGCS4Q-Bb6W8rUG.js} +1 -1
  40. package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-Bf99WLRy.js → kanban-definition-3W4ZIXB7-CnHdUX0q.js} +1 -1
  41. package/dist-renderer/assets/{layout-C3XWrpwo.js → layout-pqss_zkI.js} +1 -1
  42. package/dist-renderer/assets/{linear-OEEcn8KN.js → linear-B1mFITNh.js} +1 -1
  43. package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-Dpi3S2x4.js → mindmap-definition-VGOIOE7T-DTD9q7-D.js} +1 -1
  44. package/dist-renderer/assets/{pieDiagram-ADFJNKIX-xTPPhtNx.js → pieDiagram-ADFJNKIX-Df3mhrn7.js} +1 -1
  45. package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-euniyDlz.js → quadrantDiagram-AYHSOK5B-B1FZ09vH.js} +1 -1
  46. package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-D9Uiw4kF.js → requirementDiagram-UZGBJVZJ-aEO78thZ.js} +1 -1
  47. package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-CySU4nED.js → sankeyDiagram-TZEHDZUN-6Ui--jp-.js} +1 -1
  48. package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-JVGpET6V.js → sequenceDiagram-WL72ISMW-DF4Q1cAM.js} +1 -1
  49. package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-B2FY5qqi.js → stateDiagram-FKZM4ZOC-BqA2BI8C.js} +1 -1
  50. package/dist-renderer/assets/{stateDiagram-v2-4FDKWEC3-DcoMiR8H.js → stateDiagram-v2-4FDKWEC3-Cs2ZtUD2.js} +1 -1
  51. package/dist-renderer/assets/{timeline-definition-IT6M3QCI-DmycNUUe.js → timeline-definition-IT6M3QCI-DoOkw_A8.js} +1 -1
  52. package/dist-renderer/assets/{treemap-GDKQZRPO-DPq4gZuB.js → treemap-GDKQZRPO-DUe26QdD.js} +1 -1
  53. package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-J6VVJzRq.js → xychartDiagram-PRI3JC2R-BKCnj5Xn.js} +1 -1
  54. package/dist-renderer/index.html +2 -2
  55. package/package.json +1 -1
  56. package/src/renderer/components/chat/ChatHistoryItem.tsx +1 -1
  57. package/src/renderer/components/chat/items/SubagentItem.tsx +2 -2
  58. package/src/renderer/components/chat/viewers/MermaidDiagram.tsx +2 -2
  59. package/src/renderer/components/common/ErrorBoundary.tsx +1 -1
  60. package/src/renderer/components/dashboard/CliStatusBanner.tsx +7 -7
  61. package/src/renderer/components/extensions/ExtensionStoreView.tsx +1 -1
  62. package/src/renderer/components/extensions/common/ExtensionToast.tsx +3 -3
  63. package/src/renderer/components/extensions/common/SourceBadge.tsx +1 -1
  64. package/src/renderer/components/extensions/plugins/CategoryChips.tsx +1 -1
  65. package/src/renderer/components/extensions/plugins/PluginCard.tsx +1 -1
  66. package/src/renderer/components/extensions/plugins/PluginDetailDialog.tsx +2 -2
  67. package/src/renderer/components/extensions/skills/SkillEditorDialog.tsx +1 -1
  68. package/src/renderer/components/layout/PaneResizeHandle.tsx +2 -2
  69. package/src/renderer/components/layout/Sidebar.tsx +2 -2
  70. package/src/renderer/components/layout/SortableTab.tsx +2 -2
  71. package/src/renderer/components/report/sections/CostSection.tsx +2 -2
  72. package/src/renderer/components/report/sections/InsightsSection.tsx +1 -1
  73. package/src/renderer/components/runtime/ProviderRuntimeBackendSelector.tsx +2 -2
  74. package/src/renderer/components/search/CommandPalette.tsx +4 -4
  75. package/src/renderer/components/settings/sections/CliStatusSection.tsx +1 -1
  76. package/src/renderer/components/sidebar/SessionFiltersPopover.tsx +1 -1
  77. package/src/renderer/components/sidebar/SessionItem.tsx +3 -3
  78. package/src/renderer/components/sidebar/SidebarSessions.tsx +2 -2
  79. package/src/renderer/components/sidebar/WorkspaceBrowser.tsx +1 -1
  80. package/src/renderer/components/team/CcSessionsSection.tsx +5 -5
  81. package/src/renderer/components/team/ClaudeLogsFilterPopover.tsx +1 -1
  82. package/src/renderer/components/team/ClaudeLogsPanel.tsx +1 -1
  83. package/src/renderer/components/team/CollapsibleTeamSection.tsx +1 -1
  84. package/src/renderer/components/team/ProcessesSection.tsx +2 -2
  85. package/src/renderer/components/team/TaskTooltip.tsx +2 -2
  86. package/src/renderer/components/team/TeamDetailView.tsx +1 -1
  87. package/src/renderer/components/team/TeamListFilterPopover.tsx +1 -1
  88. package/src/renderer/components/team/TeamListView.tsx +2 -2
  89. package/src/renderer/components/team/TeamSessionsSection.tsx +6 -6
  90. package/src/renderer/components/team/UnreadCommentsBadge.tsx +1 -1
  91. package/src/renderer/components/team/activity/ActivityItem.tsx +9 -9
  92. package/src/renderer/components/team/activity/ActivityTimeline.tsx +5 -5
  93. package/src/renderer/components/team/activity/LeadThoughtsGroup.tsx +3 -3
  94. package/src/renderer/components/team/activity/ReplyQuoteBlock.tsx +4 -4
  95. package/src/renderer/components/team/dialogs/CreateTaskDialog.tsx +2 -2
  96. package/src/renderer/components/team/dialogs/LaunchTeamDialog.tsx +1 -1
  97. package/src/renderer/components/team/dialogs/PlatformBindingDialog.tsx +1 -1
  98. package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +1 -1
  99. package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +4 -4
  100. package/src/renderer/components/team/dialogs/SendMessageDialog.tsx +6 -6
  101. package/src/renderer/components/team/dialogs/SkipPermissionsCheckbox.tsx +6 -6
  102. package/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx +1 -1
  103. package/src/renderer/components/team/dialogs/TaskAttachments.tsx +1 -1
  104. package/src/renderer/components/team/dialogs/TaskCommentInput.tsx +6 -6
  105. package/src/renderer/components/team/dialogs/TaskCommentsSection.tsx +4 -4
  106. package/src/renderer/components/team/dialogs/TaskDetailDialog.tsx +3 -3
  107. package/src/renderer/components/team/editor/EditorFileTree.tsx +4 -4
  108. package/src/renderer/components/team/editor/EditorSearchPanel.tsx +1 -1
  109. package/src/renderer/components/team/editor/MarkdownSplitView.tsx +1 -1
  110. package/src/renderer/components/team/editor/NewFileDialog.tsx +1 -1
  111. package/src/renderer/components/team/editor/ProjectEditorOverlay.tsx +1 -1
  112. package/src/renderer/components/team/editor/SearchInFilesPanel.tsx +1 -1
  113. package/src/renderer/components/team/kanban/KanbanFilterPopover.tsx +4 -4
  114. package/src/renderer/components/team/kanban/KanbanSearchInput.tsx +1 -1
  115. package/src/renderer/components/team/kanban/KanbanSortPopover.tsx +5 -5
  116. package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +4 -4
  117. package/src/renderer/components/team/members/MemberDraftRow.tsx +1 -1
  118. package/src/renderer/components/team/members/MemberStatsTab.tsx +2 -2
  119. package/src/renderer/components/team/members/MemberWorkspaceTab.tsx +1 -1
  120. package/src/renderer/components/team/messages/MessageComposer.tsx +2 -2
  121. package/src/renderer/components/team/messages/MessagesFilterPopover.tsx +1 -1
  122. package/src/renderer/components/team/messages/MessagesPanel.tsx +7 -7
  123. package/src/renderer/components/team/review/ChangeReviewDialog.tsx +1 -1
  124. package/src/renderer/components/team/schedule/ScheduleStatusBadge.tsx +1 -1
  125. package/src/renderer/components/team/sidebar/TeamSidebarRail.tsx +4 -4
  126. package/src/renderer/components/team/tasks/TaskRow.tsx +1 -1
  127. package/src/renderer/components/team/tools/SkillChip.tsx +1 -1
  128. package/src/renderer/components/team/tools/ToolsSection.tsx +1 -1
  129. package/src/renderer/components/ui/MemberSelect.tsx +2 -2
  130. package/src/renderer/components/ui/MentionSuggestionList.tsx +2 -2
  131. package/src/renderer/components/ui/MentionableTextarea.tsx +3 -3
  132. package/src/renderer/index.css +17 -17
  133. package/dist-renderer/assets/channel-DpMHF50r.js +0 -1
  134. package/dist-renderer/assets/classDiagram-2ON5EDUG-CBYCBVRl.js +0 -1
  135. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-CBYCBVRl.js +0 -1
  136. package/dist-renderer/assets/clone-DcMF6Psb.js +0 -1
  137. package/dist-renderer/assets/index-CnWV3BhG.css +0 -32
@@ -97,7 +97,7 @@ export const CostSection = ({
97
97
  <div className="mb-1.5 flex h-3 w-full overflow-hidden rounded-full">
98
98
  <div
99
99
  className="h-full"
100
- style={{ width: `${parentPct}%`, backgroundColor: '#60a5fa' }}
100
+ style={{ width: `${parentPct}%`, backgroundColor: '#818cf8' }}
101
101
  />
102
102
  <div
103
103
  className="h-full"
@@ -108,7 +108,7 @@ export const CostSection = ({
108
108
  <div className="flex items-center gap-1.5">
109
109
  <span
110
110
  className="inline-block size-2 rounded-full"
111
- style={{ backgroundColor: '#60a5fa' }}
111
+ style={{ backgroundColor: '#818cf8' }}
112
112
  />
113
113
  <span className="text-text-secondary">主会话:{fmt(data.parentCostUsd)}</span>
114
114
  </div>
@@ -153,7 +153,7 @@ export const InsightsSection = ({
153
153
  <div className="mb-2 text-xs font-medium text-text-muted">
154
154
  Agent Tree ({agentTree.agentCount} agent{agentTree.agentCount !== 1 ? 's' : ''})
155
155
  {agentTree.hasTeamMode && (
156
- <span className="ml-2 rounded px-1.5 py-0.5 text-xs" style={{ color: '#60a5fa' }}>
156
+ <span className="ml-2 rounded px-1.5 py-0.5 text-xs" style={{ color: '#818cf8' }}>
157
157
  Team Mode
158
158
  </span>
159
159
  )}
@@ -191,7 +191,7 @@ export const ProviderRuntimeBackendSelector = ({
191
191
  className="shrink-0 rounded-full px-1.5 py-0.5 text-[10px]"
192
192
  style={{
193
193
  color: '#93c5fd',
194
- backgroundColor: 'rgba(59, 130, 246, 0.14)',
194
+ backgroundColor: 'rgba(99, 102, 241, 0.14)',
195
195
  }}
196
196
  >
197
197
  {getProviderRuntimeBackendAudienceLabel(option)}
@@ -259,7 +259,7 @@ export const ProviderRuntimeBackendSelector = ({
259
259
  className="rounded-full px-1.5 py-0.5 text-[10px]"
260
260
  style={{
261
261
  color: '#93c5fd',
262
- backgroundColor: 'rgba(59, 130, 246, 0.14)',
262
+ backgroundColor: 'rgba(99, 102, 241, 0.14)',
263
263
  }}
264
264
  >
265
265
  {selectedAudienceLabel}
@@ -117,7 +117,7 @@ const SessionResultItemInner = ({
117
117
  <div className="flex items-start gap-3">
118
118
  <div
119
119
  className={`mt-0.5 shrink-0 ${
120
- result.messageType === 'user' ? 'text-blue-400' : 'text-green-400'
120
+ result.messageType === 'user' ? 'text-indigo-400' : 'text-green-400'
121
121
  }`}
122
122
  >
123
123
  {result.messageType === 'user' ? <User className="size-4" /> : <Bot className="size-4" />}
@@ -125,8 +125,8 @@ const SessionResultItemInner = ({
125
125
  <div className="min-w-0 flex-1">
126
126
  {showProjectName && projectName && (
127
127
  <div className="mb-1 flex items-center gap-2">
128
- <FolderGit2 className="size-3 text-blue-400" />
129
- <span className="truncate text-xs font-medium text-blue-400">{projectName}</span>
128
+ <FolderGit2 className="size-3 text-indigo-400" />
129
+ <span className="truncate text-xs font-medium text-indigo-400">{projectName}</span>
130
130
  </div>
131
131
  )}
132
132
  <div className="mb-1 flex items-center gap-2">
@@ -486,7 +486,7 @@ export const CommandPalette = (): React.JSX.Element | null => {
486
486
  onClick={() => setGlobalSearchEnabled(!globalSearchEnabled)}
487
487
  className={`flex items-center gap-1.5 rounded px-2 py-1 text-xs transition-colors ${
488
488
  globalSearchEnabled
489
- ? 'bg-blue-500/20 text-blue-400 hover:bg-blue-500/30'
489
+ ? 'bg-indigo-500/20 text-indigo-400 hover:bg-indigo-500/30'
490
490
  : 'text-text-muted hover:bg-surface-raised hover:text-text'
491
491
  }`}
492
492
  title={
@@ -558,7 +558,7 @@ export const CliStatusSection = ({
558
558
  ) : (
559
559
  <div
560
560
  className="h-full w-1/3 animate-pulse rounded-full"
561
- style={{ backgroundColor: '#3b82f6' }}
561
+ style={{ backgroundColor: '#6366f1' }}
562
562
  />
563
563
  )}
564
564
  </div>
@@ -64,7 +64,7 @@ export const SessionFiltersPopover = ({
64
64
  >
65
65
  <Filter size={14} />
66
66
  {activeCount > 0 && (
67
- <span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-blue-500 text-[10px] font-medium text-white">
67
+ <span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-indigo-500 text-[10px] font-medium text-white">
68
68
  {activeCount}
69
69
  </span>
70
70
  )}
@@ -292,18 +292,18 @@ export const SessionItem = ({
292
292
  checked={isSelected ?? false}
293
293
  onChange={() => onToggleSelect?.()}
294
294
  onClick={(e) => e.stopPropagation()}
295
- className="size-3.5 shrink-0 accent-blue-500"
295
+ className="size-3.5 shrink-0 accent-indigo-500"
296
296
  />
297
297
  )}
298
298
  {session.isOngoing && <OngoingIndicator />}
299
- {isPinned && <Pin className="size-2.5 shrink-0 text-blue-400" />}
299
+ {isPinned && <Pin className="size-2.5 shrink-0 text-indigo-400" />}
300
300
  {isHidden && <EyeOff className="size-2.5 shrink-0 text-zinc-500" />}
301
301
  {isTeam ? (
302
302
  <span
303
303
  className="flex items-center gap-1.5 truncate text-[13px] font-medium leading-tight"
304
304
  style={{ color: isActive ? 'var(--color-text)' : 'var(--color-text-muted)' }}
305
305
  >
306
- <Users className="size-3 shrink-0 text-blue-400" />
306
+ <Users className="size-3 shrink-0 text-indigo-400" />
307
307
  <span className="truncate">{parsed.displayText}</span>
308
308
  </span>
309
309
  ) : (
@@ -657,7 +657,7 @@ const SessionRow = ({
657
657
  <span
658
658
  className={
659
659
  session.lastMessage.role === 'user'
660
- ? 'text-blue-400'
660
+ ? 'text-indigo-400'
661
661
  : 'text-[var(--color-text-muted)]'
662
662
  }
663
663
  >
@@ -714,7 +714,7 @@ const SessionRow = ({
714
714
  <span
715
715
  className={`shrink-0 text-[10px] font-medium ${
716
716
  msg.role === 'user'
717
- ? 'text-blue-400'
717
+ ? 'text-indigo-400'
718
718
  : 'text-[var(--color-text-muted)]'
719
719
  }`}
720
720
  >
@@ -150,7 +150,7 @@ const TeamWorkspace = ({
150
150
  {projectPath}
151
151
  </span>
152
152
  </span>
153
- <span className="shrink-0 rounded bg-blue-500/20 px-1.5 py-0.5 text-[10px] font-medium text-blue-400">
153
+ <span className="shrink-0 rounded bg-indigo-500/20 px-1.5 py-0.5 text-[10px] font-medium text-indigo-400">
154
154
  当前
155
155
  </span>
156
156
  </button>
@@ -320,7 +320,7 @@ function CcSessionRow({
320
320
  <div
321
321
  className={`group relative rounded-xl border transition-colors ${
322
322
  isExpanded
323
- ? 'border-blue-500/20 bg-blue-500/[0.04]'
323
+ ? 'border-indigo-500/20 bg-indigo-500/[0.04]'
324
324
  : session.live
325
325
  ? 'border-emerald-500/20 bg-emerald-500/[0.04] hover:bg-emerald-500/[0.08]'
326
326
  : 'border-transparent bg-[var(--color-surface)] hover:border-[var(--color-border)] hover:bg-[var(--color-surface-raised)]'
@@ -340,7 +340,7 @@ function CcSessionRow({
340
340
  {session.live ? (
341
341
  <Radio size={12} className="animate-pulse text-emerald-400" />
342
342
  ) : session.active ? (
343
- <Wifi size={12} className="text-blue-400" />
343
+ <Wifi size={12} className="text-indigo-400" />
344
344
  ) : (
345
345
  <WifiOff size={12} className="text-[var(--color-text-muted)] opacity-50" />
346
346
  )}
@@ -371,7 +371,7 @@ function CcSessionRow({
371
371
  <span
372
372
  className={
373
373
  session.lastMessage.role === 'user'
374
- ? 'text-blue-400'
374
+ ? 'text-indigo-400'
375
375
  : 'text-[var(--color-text-muted)]'
376
376
  }
377
377
  >
@@ -425,14 +425,14 @@ function CcSessionRow({
425
425
  key={`${msg.timestamp}-${i}`}
426
426
  className={`rounded-lg px-3 py-2 text-[11px] leading-relaxed ${
427
427
  isUserMessage
428
- ? 'bg-blue-500/10 text-[var(--color-text)]'
428
+ ? 'bg-indigo-500/10 text-[var(--color-text)]'
429
429
  : 'bg-[var(--color-surface-raised)] text-[var(--color-text)]'
430
430
  }`}
431
431
  >
432
432
  <div className="mb-1 flex items-center gap-2">
433
433
  <span
434
434
  className={`shrink-0 text-[10px] font-medium ${
435
- isUserMessage ? 'text-blue-400' : 'text-[var(--color-text-muted)]'
435
+ isUserMessage ? 'text-indigo-400' : 'text-[var(--color-text-muted)]'
436
436
  }`}
437
437
  >
438
438
  {isUserMessage ? '用户' : 'Agent'}
@@ -112,7 +112,7 @@ export const ClaudeLogsFilterPopover = ({
112
112
  >
113
113
  <Filter size={14} />
114
114
  {activeCount > 0 && (
115
- <span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-blue-500 text-[10px] font-medium text-white">
115
+ <span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-indigo-500 text-[10px] font-medium text-white">
116
116
  {activeCount}
117
117
  </span>
118
118
  )}
@@ -115,7 +115,7 @@ export const ClaudeLogsPanel = ({
115
115
  <Button
116
116
  variant="outline"
117
117
  size="sm"
118
- className="h-7 border-blue-500/30 bg-blue-600 px-2 text-xs text-white hover:bg-blue-500"
118
+ className="h-7 border-indigo-500/30 bg-indigo-600 px-2 text-xs text-white hover:bg-indigo-500"
119
119
  onClick={applyPending}
120
120
  >
121
121
  +{pendingNewCount} 条新日志
@@ -122,7 +122,7 @@ export const CollapsibleTeamSection = ({
122
122
  </span>
123
123
  )}
124
124
  {secondaryBadge != null && secondaryBadge > 0 && (
125
- <span className="text-[10px] tabular-nums text-blue-400 opacity-70" title={`${secondaryBadge} unread`}>
125
+ <span className="text-[10px] tabular-nums text-indigo-400 opacity-70" title={`${secondaryBadge} unread`}>
126
126
  +{secondaryBadge}
127
127
  </span>
128
128
  )}
@@ -130,7 +130,7 @@ export const ProcessesSection = memo(function ProcessesSection({
130
130
  {proc.url && (
131
131
  <button
132
132
  type="button"
133
- className="text-[var(--color-text-secondary)] underline decoration-dotted underline-offset-2 transition-colors hover:text-blue-400"
133
+ className="text-[var(--color-text-secondary)] underline decoration-dotted underline-offset-2 transition-colors hover:text-indigo-400"
134
134
  onClick={() => void api.openExternal(proc.url!)}
135
135
  title={proc.url}
136
136
  >
@@ -156,7 +156,7 @@ export const ProcessesSection = memo(function ProcessesSection({
156
156
  {alive && proc.url && (
157
157
  <button
158
158
  type="button"
159
- className="flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-blue-400 transition-colors hover:bg-blue-500/10"
159
+ className="flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-indigo-400 transition-colors hover:bg-indigo-500/10"
160
160
  onClick={() => void api.openExternal(proc.url!)}
161
161
  title="在浏览器中打开"
162
162
  >
@@ -18,8 +18,8 @@ import type { TeamTaskWithKanban } from '@shared/types';
18
18
  * Matches the kanban column palette from KanbanBoard.tsx.
19
19
  */
20
20
  const STATUS_COLORS: Record<string, { text: string; bg: string }> = {
21
- pending: { text: '#60a5fa', bg: 'rgba(59, 130, 246, 0.15)' }, // blue
22
- todo: { text: '#60a5fa', bg: 'rgba(59, 130, 246, 0.15)' },
21
+ pending: { text: '#818cf8', bg: 'rgba(99, 102, 241, 0.15)' }, // blue
22
+ todo: { text: '#818cf8', bg: 'rgba(99, 102, 241, 0.15)' },
23
23
  in_progress: { text: '#facc15', bg: 'rgba(234, 179, 8, 0.15)' }, // yellow
24
24
  completed: { text: '#4ade80', bg: 'rgba(34, 197, 94, 0.15)' }, // green
25
25
  done: { text: '#4ade80', bg: 'rgba(34, 197, 94, 0.15)' },
@@ -2142,7 +2142,7 @@ export const TeamDetailView = ({
2142
2142
  </div>
2143
2143
  <div className="flex items-center gap-3 py-2">
2144
2144
  <p className="text-sm font-medium text-text">{draftDisplayName}</p>
2145
- <span className="rounded-full bg-blue-500/20 px-2 py-0.5 text-[10px] font-medium text-blue-400">
2145
+ <span className="rounded-full bg-indigo-500/20 px-2 py-0.5 text-[10px] font-medium text-indigo-400">
2146
2146
  {getCommandForHarness()}
2147
2147
  </span>
2148
2148
  </div>
@@ -93,7 +93,7 @@ export const TeamListFilterPopover = ({
93
93
  >
94
94
  <Filter size={14} />
95
95
  {activeCount > 0 && (
96
- <span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-blue-500 text-[10px] font-medium text-white">
96
+ <span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-indigo-500 text-[10px] font-medium text-white">
97
97
  {activeCount}
98
98
  </span>
99
99
  )}
@@ -974,7 +974,7 @@ export const TeamListView = (): React.JSX.Element => {
974
974
  {template.members.map((member) => (
975
975
  <span
976
976
  key={member.name}
977
- className="rounded bg-blue-500/10 px-1.5 py-0.5 text-[10px] text-blue-300"
977
+ className="rounded bg-indigo-500/10 px-1.5 py-0.5 text-[10px] text-indigo-300"
978
978
  >
979
979
  {member.name}
980
980
  {member.role ? ` · ${formatTeamRoleLabel(member.role)}` : ''}
@@ -1233,7 +1233,7 @@ export const TeamListView = (): React.JSX.Element => {
1233
1233
  <div className="mt-2 flex items-center gap-1.5 pl-[42px] text-[10px] tabular-nums">
1234
1234
  {team.stats && team.stats.sessions > 0 ? (
1235
1235
  <>
1236
- <span className="text-blue-400">{team.stats.sessions} sessions</span>
1236
+ <span className="text-indigo-400">{team.stats.sessions} sessions</span>
1237
1237
  <span className="text-[var(--color-text-muted)] opacity-30">·</span>
1238
1238
  <span className="text-emerald-400">{formatTokensCompact(team.stats.tokens)}</span>
1239
1239
  {team.stats.durationMs > 0 && (
@@ -128,7 +128,7 @@ export const TeamSessionsSection = ({
128
128
  {selectedSessionId !== null && (
129
129
  <button
130
130
  type="button"
131
- className="flex w-full items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs text-blue-600 transition-colors hover:bg-blue-500/10 dark:text-blue-400"
131
+ className="flex w-full items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs text-indigo-600 transition-colors hover:bg-indigo-500/10 dark:text-indigo-400"
132
132
  onClick={() => onSelectSession(null)}
133
133
  >
134
134
  <FilterX size={12} />
@@ -176,10 +176,10 @@ const SessionRow = ({
176
176
  return (
177
177
  <div
178
178
  className={`group flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-xs transition-colors hover:bg-[var(--color-surface-raised)] ${
179
- isLead ? 'border border-blue-500/20 bg-blue-500/5' : ''
180
- } ${isSelected ? 'bg-blue-500/10 ring-1 ring-blue-400/50' : ''}`}
179
+ isLead ? 'border border-indigo-500/20 bg-indigo-500/5' : ''
180
+ } ${isSelected ? 'bg-indigo-500/10 ring-1 ring-indigo-400/50' : ''}`}
181
181
  >
182
- {isLead && <Crown size={12} className="shrink-0 text-blue-400" />}
182
+ {isLead && <Crown size={12} className="shrink-0 text-indigo-400" />}
183
183
 
184
184
  <button type="button" className="min-w-0 flex-1 text-left" onClick={onClick}>
185
185
  <div className="flex items-center gap-1.5">
@@ -199,7 +199,7 @@ const SessionRow = ({
199
199
  {isLead && (
200
200
  <>
201
201
  <span style={{ opacity: 0.5 }}>·</span>
202
- <span className="text-blue-600 dark:text-blue-400">负责人</span>
202
+ <span className="text-indigo-600 dark:text-indigo-400">负责人</span>
203
203
  </>
204
204
  )}
205
205
  </div>
@@ -210,7 +210,7 @@ const SessionRow = ({
210
210
  <TooltipTrigger asChild>
211
211
  <button
212
212
  type="button"
213
- className={`rounded p-0.5 text-[var(--color-text-muted)] transition-opacity hover:text-blue-400 ${
213
+ className={`rounded p-0.5 text-[var(--color-text-muted)] transition-opacity hover:text-indigo-400 ${
214
214
  isSelected ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'
215
215
  }`}
216
216
  onClick={(e) => {
@@ -21,7 +21,7 @@ export const UnreadCommentsBadge = ({
21
21
  {totalCount}
22
22
  </span>
23
23
  {unreadCount > 0 ? (
24
- <span className="absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-blue-500 px-1 text-[8px] font-bold leading-none text-white shadow-sm">
24
+ <span className="absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-indigo-500 px-1 text-[8px] font-bold leading-none text-white shadow-sm">
25
25
  {unreadCount}
26
26
  </span>
27
27
  ) : null}
@@ -223,7 +223,7 @@ const SessionSourceBadge = ({ message }: { message: InboxMessage }): React.JSX.E
223
223
  className="inline-flex max-w-[180px] items-center truncate rounded-full px-1.5 py-0.5 text-[10px] font-medium"
224
224
  title={`${platform}${label}${session?.key ? ` (${session.key})` : ''}`}
225
225
  style={{
226
- backgroundColor: 'rgba(59, 130, 246, 0.12)',
226
+ backgroundColor: 'rgba(99, 102, 241, 0.12)',
227
227
  color: '#93c5fd',
228
228
  }}
229
229
  >
@@ -578,7 +578,7 @@ function linkifyTaskIds(text: string, onClick: (taskId: string) => void): React.
578
578
  <TaskTooltip key={i} taskId={taskId}>
579
579
  <button
580
580
  type="button"
581
- className="inline cursor-pointer font-medium text-blue-600 hover:underline dark:text-blue-400"
581
+ className="inline cursor-pointer font-medium text-indigo-600 hover:underline dark:text-indigo-400"
582
582
  onClick={(e) => {
583
583
  e.stopPropagation();
584
584
  onClick(taskId);
@@ -636,7 +636,7 @@ const TaskRecipientBadge = ({
636
636
  className="inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium tracking-wide"
637
637
  style={{
638
638
  backgroundColor: 'rgba(96, 165, 250, 0.14)',
639
- color: '#60a5fa',
639
+ color: '#818cf8',
640
640
  border: '1px solid rgba(96, 165, 250, 0.3)',
641
641
  }}
642
642
  >
@@ -1209,7 +1209,7 @@ export const ActivityItem = memo(
1209
1209
  <div className="flex min-w-0 flex-1 items-center gap-2 overflow-hidden">
1210
1210
  {isUnread ? (
1211
1211
  <span
1212
- className="size-2 shrink-0 rounded-full bg-blue-500"
1212
+ className="size-2 shrink-0 rounded-full bg-indigo-500"
1213
1213
  title="未读"
1214
1214
  aria-hidden
1215
1215
  />
@@ -1239,7 +1239,7 @@ export const ActivityItem = memo(
1239
1239
  <button
1240
1240
  type="button"
1241
1241
  aria-label="展开消息"
1242
- className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-blue-500/50 group-hover:opacity-100"
1242
+ className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
1243
1243
  style={{ color: CARD_ICON_MUTED }}
1244
1244
  onClick={(e) => {
1245
1245
  e.stopPropagation();
@@ -1279,7 +1279,7 @@ export const ActivityItem = memo(
1279
1279
  <div className="flex min-w-0 items-center gap-2">
1280
1280
  {isUnread ? (
1281
1281
  <span
1282
- className="size-2 shrink-0 rounded-full bg-blue-500"
1282
+ className="size-2 shrink-0 rounded-full bg-indigo-500"
1283
1283
  title="未读"
1284
1284
  aria-hidden
1285
1285
  />
@@ -1322,7 +1322,7 @@ export const ActivityItem = memo(
1322
1322
  <button
1323
1323
  type="button"
1324
1324
  aria-label="展开消息"
1325
- className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-blue-500/50 group-hover:opacity-100"
1325
+ className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
1326
1326
  style={{ color: CARD_ICON_MUTED }}
1327
1327
  onClick={(e) => {
1328
1328
  e.stopPropagation();
@@ -1361,7 +1361,7 @@ export const ActivityItem = memo(
1361
1361
  <>
1362
1362
  {isUnread ? (
1363
1363
  <span
1364
- className="size-2 shrink-0 rounded-full bg-blue-500"
1364
+ className="size-2 shrink-0 rounded-full bg-indigo-500"
1365
1365
  title="未读"
1366
1366
  aria-hidden
1367
1367
  />
@@ -1406,7 +1406,7 @@ export const ActivityItem = memo(
1406
1406
  <button
1407
1407
  type="button"
1408
1408
  aria-label="展开消息"
1409
- className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-blue-500/50 group-hover:opacity-100"
1409
+ className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
1410
1410
  style={{ color: CARD_ICON_MUTED }}
1411
1411
  onClick={(e) => {
1412
1412
  e.stopPropagation();
@@ -762,11 +762,11 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({
762
762
  className="flex items-center gap-3"
763
763
  style={{ paddingTop: 45, paddingBottom: 45 }}
764
764
  >
765
- <div className="h-px flex-1 bg-blue-600/30 dark:bg-blue-400/30" />
766
- <span className="whitespace-nowrap text-[11px] font-medium text-blue-600 dark:text-blue-400">
765
+ <div className="h-px flex-1 bg-indigo-600/30 dark:bg-indigo-400/30" />
766
+ <span className="whitespace-nowrap text-[11px] font-medium text-indigo-600 dark:text-indigo-400">
767
767
  New session
768
768
  </span>
769
- <div className="h-px flex-1 bg-blue-600/30 dark:bg-blue-400/30" />
769
+ <div className="h-px flex-1 bg-indigo-600/30 dark:bg-indigo-400/30" />
770
770
  </div>
771
771
  );
772
772
  case 'compaction-divider':
@@ -933,7 +933,7 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({
933
933
  <span className="text-[11px] tabular-nums text-[var(--color-text-muted)]">
934
934
  +{hiddenCount} older
935
935
  </span>
936
- <span className="h-3 w-px bg-blue-600/30 dark:bg-blue-400/30" />
936
+ <span className="h-3 w-px bg-indigo-600/30 dark:bg-indigo-400/30" />
937
937
  <button
938
938
  onClick={handleShowMore}
939
939
  className="rounded-full px-2.5 py-0.5 text-[11px] font-medium text-[var(--color-text-secondary)] transition-all hover:bg-[rgba(255,255,255,0.08)] hover:text-[var(--color-text)]"
@@ -942,7 +942,7 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({
942
942
  </button>
943
943
  {hiddenCount > MESSAGES_PAGE_SIZE && (
944
944
  <>
945
- <span className="h-3 w-px bg-blue-600/30 dark:bg-blue-400/30" />
945
+ <span className="h-3 w-px bg-indigo-600/30 dark:bg-indigo-400/30" />
946
946
  <button
947
947
  onClick={handleShowAll}
948
948
  className="rounded-full px-2.5 py-0.5 text-[11px] text-[var(--color-text-muted)] transition-all hover:bg-[rgba(255,255,255,0.08)] hover:text-[var(--color-text-secondary)]"
@@ -848,7 +848,7 @@ const LeadThoughtsGroupRowComponent = ({
848
848
  <button
849
849
  type="button"
850
850
  aria-label="Expand thoughts"
851
- className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-blue-500/50 group-hover:opacity-100"
851
+ className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
852
852
  style={{ color: CARD_ICON_MUTED }}
853
853
  onClick={(e) => {
854
854
  e.stopPropagation();
@@ -933,7 +933,7 @@ const LeadThoughtsGroupRowComponent = ({
933
933
  <button
934
934
  type="button"
935
935
  aria-label="Expand thoughts"
936
- className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-blue-500/50 group-hover:opacity-100"
936
+ className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
937
937
  style={{ color: CARD_ICON_MUTED }}
938
938
  onClick={(e) => {
939
939
  e.stopPropagation();
@@ -1032,7 +1032,7 @@ const LeadThoughtsGroupRowComponent = ({
1032
1032
  <button
1033
1033
  type="button"
1034
1034
  aria-label="Expand thoughts"
1035
- className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-blue-500/50 group-hover:opacity-100"
1035
+ className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
1036
1036
  style={{ color: CARD_ICON_MUTED }}
1037
1037
  onClick={(e) => {
1038
1038
  e.stopPropagation();
@@ -34,15 +34,15 @@ export const ReplyQuoteBlock = ({
34
34
  return (
35
35
  <div className="space-y-2">
36
36
  {/* Quote block — styled like SendMessageDialog */}
37
- <div className="relative overflow-hidden rounded-md border border-blue-400/20 bg-blue-100/40 py-2 pl-3 pr-2 dark:border-blue-500/20 dark:bg-blue-950/20">
37
+ <div className="relative overflow-hidden rounded-md border border-indigo-400/20 bg-blue-100/40 py-2 pl-3 pr-2 dark:border-indigo-500/20 dark:bg-blue-950/20">
38
38
  {/* Decorative quotation mark */}
39
- <span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[48px] leading-none text-blue-600/[0.08] dark:text-blue-400/[0.08]">
39
+ <span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[48px] leading-none text-indigo-600/[0.08] dark:text-indigo-400/[0.08]">
40
40
  &ldquo;
41
41
  </span>
42
42
 
43
43
  {/* "Replying to" + MemberBadge */}
44
44
  <div className="mb-1 flex items-center gap-1.5">
45
- <span className="text-[10px] text-blue-600/60 dark:text-blue-300/60">Replying to</span>
45
+ <span className="text-[10px] text-indigo-600/60 dark:text-indigo-300/60">Replying to</span>
46
46
  <MemberBadge name={reply.agentName} color={memberColor} size="sm" />
47
47
  </div>
48
48
 
@@ -59,7 +59,7 @@ export const ReplyQuoteBlock = ({
59
59
  {isLong ? (
60
60
  <button
61
61
  type="button"
62
- className="mt-0.5 text-[10px] text-blue-600/60 hover:text-blue-700 dark:text-blue-400/60 dark:hover:text-blue-300"
62
+ className="mt-0.5 text-[10px] text-indigo-600/60 hover:text-blue-700 dark:text-indigo-400/60 dark:hover:text-indigo-300"
63
63
  onClick={() => setExpanded((v) => !v)}
64
64
  >
65
65
  {expanded ? 'less' : 'more'}
@@ -342,7 +342,7 @@ export const CreateTaskDialog = ({
342
342
  type="button"
343
343
  className={`flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-xs transition-colors ${
344
344
  isSelected
345
- ? 'bg-blue-500/15 text-blue-300'
345
+ ? 'bg-indigo-500/15 text-indigo-300'
346
346
  : 'text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-raised)]'
347
347
  }`}
348
348
  onClick={() => toggleBlockedBy(t.id)}
@@ -350,7 +350,7 @@ export const CreateTaskDialog = ({
350
350
  <span
351
351
  className={`flex size-3.5 shrink-0 items-center justify-center rounded-sm border text-[9px] ${
352
352
  isSelected
353
- ? 'border-blue-400 bg-blue-500/30 text-blue-300'
353
+ ? 'border-indigo-400 bg-indigo-500/30 text-indigo-300'
354
354
  : 'border-[var(--color-border-emphasis)]'
355
355
  }`}
356
356
  >
@@ -2819,7 +2819,7 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2819
2819
  ) ? (
2820
2820
  <button
2821
2821
  type="button"
2822
- className="shrink-0 rounded bg-blue-600 px-2 py-0.5 text-[11px] font-medium text-white transition-colors hover:bg-blue-500"
2822
+ className="shrink-0 rounded bg-indigo-600 px-2 py-0.5 text-[11px] font-medium text-white transition-colors hover:bg-indigo-500"
2823
2823
  onClick={() => {
2824
2824
  closeDialog();
2825
2825
  openDashboard();
@@ -25,7 +25,7 @@ const PLATFORM_OPTIONS: PlatformOption[] = [
25
25
  {
26
26
  key: 'feishu',
27
27
  label: '飞书 / Lark',
28
- color: 'bg-blue-50 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400',
28
+ color: 'bg-blue-50 dark:bg-blue-900/30 text-indigo-600 dark:text-indigo-400',
29
29
  icon: 'qr',
30
30
  },
31
31
  {
@@ -148,7 +148,7 @@ function FieldInput({
148
148
  type="checkbox"
149
149
  checked={!!value}
150
150
  onChange={(e) => onChange(e.target.checked)}
151
- className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"
151
+ className="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500 dark:border-gray-600"
152
152
  />
153
153
  <span className="text-sm text-gray-700 dark:text-gray-300">{field.label}</span>
154
154
  {field.hint && <span className="text-[11px] text-gray-400">({field.hint})</span>}
@@ -224,7 +224,7 @@ export default function PlatformSetupQR({
224
224
 
225
225
  {phase === 'loading' && (
226
226
  <div className="flex flex-col items-center gap-3 py-8">
227
- <Loader2 size={32} className="animate-spin text-blue-500" />
227
+ <Loader2 size={32} className="animate-spin text-indigo-500" />
228
228
  <p className="text-sm text-gray-500">正在生成二维码...</p>
229
229
  </div>
230
230
  )}
@@ -247,12 +247,12 @@ export default function PlatformSetupQR({
247
247
  </div>
248
248
  )}
249
249
  {phase === 'scanned' && (
250
- <div className="flex items-center gap-2 text-xs text-blue-500">
250
+ <div className="flex items-center gap-2 text-xs text-indigo-500">
251
251
  <Loader2 size={12} className="animate-spin" /> 等待确认...
252
252
  </div>
253
253
  )}
254
254
  {phase === 'saving' && (
255
- <div className="flex items-center gap-2 text-xs text-blue-500">
255
+ <div className="flex items-center gap-2 text-xs text-indigo-500">
256
256
  <Loader2 size={12} className="animate-spin" /> 正在保存配置...
257
257
  </div>
258
258
  )}
@@ -286,7 +286,7 @@ export default function PlatformSetupQR({
286
286
 
287
287
  {phase === 'restarting' && (
288
288
  <div className="flex flex-col items-center gap-3 py-4">
289
- <Loader2 size={32} className="animate-spin text-blue-500" />
289
+ <Loader2 size={32} className="animate-spin text-indigo-500" />
290
290
  <p className="text-sm text-gray-600 dark:text-gray-400">正在重启服务...</p>
291
291
  </div>
292
292
  )}