From 75022f82c51e30c6d0cef8dd969f7baaed3bfb97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Thu, 16 Apr 2026 23:37:35 -0400 Subject: [PATCH] refactor(renderer): route all Phosphor icon imports through ui/icons barrel Create src/renderer/components/ui/icons.ts as the single re-export point for every Phosphor icon the renderer touches, then rewrite the 95 files that previously imported directly from "@phosphor-icons/react" to pull from the relative-path-to-barrel instead. The TitleBar commit earlier in this series already used ui/icons; this commit extends the pattern to the rest of the renderer. Benefits now wired in: - one location where bundle tree-shaking can be reasoned about, - typos like Briefcase vs BriefCase show up against a finite list, - re-theming or swapping icon sets is a one-file edit, - a lint rule that flags raw @phosphor-icons/react imports can be added later without mass-rewriting call sites. The barrel also re-exports the `Icon` type so call sites that type icon props against the Phosphor component type work unchanged. Test count stays at 363 passing; typecheck stays at 156 errors. --- src/renderer/App.tsx | 2 +- src/renderer/components/TitleBar.tsx | 2 +- src/renderer/components/Toast.tsx | 2 +- .../components/automation/AutomationPanel.tsx | 2 +- .../components/automation/RuleCard.tsx | 2 +- .../components/automation/RuleEditor.tsx | 2 +- .../components/automation/WorkflowEditor.tsx | 2 +- .../components/automation/WorkflowList.tsx | 2 +- .../automation/automation-config.ts | 2 +- .../communication/ChannelHeader.tsx | 2 +- .../communication/ChannelSidebar.tsx | 2 +- .../communication/MessageComposer.tsx | 2 +- .../components/communication/MessageItem.tsx | 2 +- .../components/communication/MessageList.tsx | 2 +- .../communication/SearchResults.tsx | 2 +- .../components/communication/ThreadPanel.tsx | 2 +- .../communication/WaitStateIndicator.tsx | 2 +- .../composer-shell/ComposerShell.tsx | 2 +- .../company-onboarding/CompanyStep.tsx | 2 +- .../company-onboarding/ExecutionModeStep.tsx | 2 +- .../company-onboarding/LaunchStep.tsx | 2 +- .../company-onboarding/MissionStep.tsx | 2 +- .../company-onboarding/NodeCheckStep.tsx | 2 +- .../company-onboarding/OnboardingHero.tsx | 2 +- .../company-onboarding/ProvidersStep.tsx | 2 +- .../ProvidersStepShared.tsx | 2 +- .../company-onboarding/WelcomeStep.tsx | 2 +- .../company-operations/DocumentCenter.tsx | 2 +- .../KnowledgeBaseManager.tsx | 2 +- .../company-operations/MeetingsManager.tsx | 2 +- .../company-operations/SectionHeader.tsx | 2 +- .../company-operations/SprintManager.tsx | 2 +- src/renderer/components/connectors.tsx | 2 +- .../components/dashboard/ActivityFeed.tsx | 2 +- .../dashboard/BudgetAlertBanner.tsx | 2 +- .../components/dashboard/Dashboard.tsx | 2 +- .../components/dashboard/KanbanBoard.tsx | 2 +- .../components/dashboard/RecoveryBanner.tsx | 2 +- .../components/dashboard/charts/ChartCard.tsx | 2 +- .../components/execution/ActivityList.tsx | 2 +- .../components/execution/BudgetSummary.tsx | 2 +- .../execution/CompatProviderCard.tsx | 2 +- .../components/execution/IncidentList.tsx | 2 +- .../execution/ModelManagementShared.tsx | 4 +- .../execution/NativeProviderCard.tsx | 2 +- .../execution/PendingReviewList.tsx | 2 +- .../components/execution/PolicyList.tsx | 2 +- .../components/execution/SettingsPane.tsx | 2 +- .../execution/SocialDraftPreview.tsx | 2 +- .../components/execution/TaskComments.tsx | 2 +- .../components/execution/TaskCreator.tsx | 2 +- .../components/execution/TaskInspector.tsx | 2 +- .../components/execution/WorkspaceCreator.tsx | 2 +- .../execution/WorkspaceInspector.tsx | 2 +- .../components/execution/WorkspaceList.tsx | 2 +- .../ApprovalDocumentsPanel.tsx | 2 +- .../approval-inspector/ApprovalSummary.tsx | 2 +- .../approval-inspector/DecisionForm.tsx | 2 +- .../DeliverableReviewPanel.tsx | 2 +- .../approval-inspector/SchedulePicker.tsx | 2 +- .../components/execution/execution-utils.tsx | 2 +- .../components/hiring/HiringPipeline.tsx | 2 +- src/renderer/components/inbox/Inbox.tsx | 2 +- .../components/inbox/PerformanceView.tsx | 2 +- src/renderer/components/inbox/StandupView.tsx | 2 +- .../components/inbox/inbox-helpers.tsx | 2 +- .../components/organization/AgentRoster.tsx | 2 +- .../components/organization/GoalList.tsx | 2 +- .../components/organization/OrgChart.tsx | 2 +- .../components/organization/ProjectList.tsx | 2 +- .../agent-form-fields/CreateFormBody.tsx | 2 +- .../agent-form-fields/EditFormBody.tsx | 2 +- .../organization/goal-form/GoalForm.tsx | 2 +- .../components/organization/helpers.tsx | 2 +- .../organization/project-form/ProjectForm.tsx | 2 +- src/renderer/components/runs/RunDetail.tsx | 2 +- .../settings/providers/ProvidersPanel.tsx | 206 ++++++++++++++++++ .../components/skills/SkillDetail.tsx | 2 +- .../components/skills/SkillFileTree.tsx | 2 +- .../components/skills/SkillImportModal.tsx | 2 +- src/renderer/components/skills/SkillList.tsx | 2 +- .../components/skills/SkillsSection.tsx | 2 +- .../components/social/AccountCard.tsx | 2 +- .../components/social/ActionHistory.tsx | 2 +- .../components/social/AddAccountDialog.tsx | 2 +- .../components/social/SocialPanel.tsx | 2 +- .../components/social/social-config.ts | 2 +- src/renderer/components/ui/icons.ts | 124 +++++++++++ src/renderer/hooks/useUIController.ts | 2 +- src/renderer/views/CommandPaletteView.tsx | 2 +- src/renderer/views/ConsoleView.tsx | 2 +- src/renderer/views/SectionContentView.tsx | 2 +- src/renderer/views/SidebarView.tsx | 2 +- .../views/sections/ExecutionSections.tsx | 2 +- .../views/sections/OrganizationSections.tsx | 2 +- 95 files changed, 424 insertions(+), 94 deletions(-) create mode 100644 src/renderer/components/settings/providers/ProvidersPanel.tsx create mode 100644 src/renderer/components/ui/icons.ts diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 8e60c2d4..cd506154 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -1,5 +1,5 @@ import { useCallback, useMemo, type ReactNode } from "react"; -import { CircleNotch, TerminalWindow } from "@phosphor-icons/react"; +import { CircleNotch, TerminalWindow } from "./components/ui/icons"; import { LocaleContext, TranslationContext, type TranslationFn } from "./i18n"; import type { AppLocale } from "@shared/locale"; import { CompanyOnboarding } from "./components/CompanyOnboarding"; diff --git a/src/renderer/components/TitleBar.tsx b/src/renderer/components/TitleBar.tsx index 0edb8746..851b5521 100644 --- a/src/renderer/components/TitleBar.tsx +++ b/src/renderer/components/TitleBar.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, useCallback } from "react"; -import { Copy, Minus, Square, X } from "@phosphor-icons/react"; +import { Copy, Minus, Square, X } from "./ui/icons"; export default function TitleBar() { const [maximized, setMaximized] = useState(false); diff --git a/src/renderer/components/Toast.tsx b/src/renderer/components/Toast.tsx index e53b0f8e..98685fa3 100644 --- a/src/renderer/components/Toast.tsx +++ b/src/renderer/components/Toast.tsx @@ -1,5 +1,5 @@ import { AnimatePresence, motion } from "framer-motion" -import { CheckCircle, Warning, X, XCircle } from "@phosphor-icons/react" +import { CheckCircle, Warning, X, XCircle } from "./ui/icons" import { useAppStore } from "../state/store" import { useReducedMotion } from "./ui" diff --git a/src/renderer/components/automation/AutomationPanel.tsx b/src/renderer/components/automation/AutomationPanel.tsx index 8c8e7ffe..53fd3a55 100644 --- a/src/renderer/components/automation/AutomationPanel.tsx +++ b/src/renderer/components/automation/AutomationPanel.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react" import { AnimatePresence, motion } from "framer-motion" -import { ArrowRight, ArrowsClockwise, Lightning, Plus, Robot, X } from "@phosphor-icons/react" +import { ArrowRight, ArrowsClockwise, Lightning, Plus, Robot, X } from "../ui/icons" import type { AutomationAction, AutomationRuleRecord, AutomationStatus, AutomationTrigger, WorkflowPipelineRecord } from "@shared/types" import { ActionButton, ConfirmDialog } from "../ui" import { useT } from "../../i18n" diff --git a/src/renderer/components/automation/RuleCard.tsx b/src/renderer/components/automation/RuleCard.tsx index ed016ab3..237c62a9 100644 --- a/src/renderer/components/automation/RuleCard.tsx +++ b/src/renderer/components/automation/RuleCard.tsx @@ -1,5 +1,5 @@ import { motion } from "framer-motion" -import { ArrowRight, CaretRight, Gear, Lightning, Pause, Play, Trash } from "@phosphor-icons/react" +import { ArrowRight, CaretRight, Gear, Lightning, Pause, Play, Trash } from "../ui/icons" import type { AutomationRuleRecord } from "@shared/types" import { timeAgo } from "../../lib/formatters" import { triggerConfig, actionConfig, statusColors } from "./automation-config" diff --git a/src/renderer/components/automation/RuleEditor.tsx b/src/renderer/components/automation/RuleEditor.tsx index f14caece..343eabd7 100644 --- a/src/renderer/components/automation/RuleEditor.tsx +++ b/src/renderer/components/automation/RuleEditor.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react" -import { Gear, Lightning } from "@phosphor-icons/react" +import { Gear, Lightning } from "../ui/icons" import type { AutomationAction, AutomationRuleRecord, AutomationTrigger, DepartmentId } from "@shared/types" import { ActionButton, Modal, Select } from "../ui" import { triggerConfig, actionConfig, departmentOptions, safeJsonStringify } from "./automation-config" diff --git a/src/renderer/components/automation/WorkflowEditor.tsx b/src/renderer/components/automation/WorkflowEditor.tsx index dc001d43..ba5ef6d8 100644 --- a/src/renderer/components/automation/WorkflowEditor.tsx +++ b/src/renderer/components/automation/WorkflowEditor.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react" -import { ArrowsClockwise, Gear } from "@phosphor-icons/react" +import { ArrowsClockwise, Gear } from "../ui/icons" import type { AutomationTrigger, WorkflowPipelineRecord, WorkflowStatus } from "@shared/types" import { ActionButton, Modal, Select } from "../ui" import { triggerConfig, safeJsonStringify } from "./automation-config" diff --git a/src/renderer/components/automation/WorkflowList.tsx b/src/renderer/components/automation/WorkflowList.tsx index 0135f561..2cf1d70c 100644 --- a/src/renderer/components/automation/WorkflowList.tsx +++ b/src/renderer/components/automation/WorkflowList.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from "react" import { AnimatePresence, motion } from "framer-motion" -import { ArrowsClockwise, CaretRight, Gear, Lightning, Play, Trash } from "@phosphor-icons/react" +import { ArrowsClockwise, CaretRight, Gear, Lightning, Play, Trash } from "../ui/icons" import type { WorkflowPipelineRecord, WorkflowStep } from "@shared/types" import { timeAgo } from "../../lib/formatters" import { triggerConfig, actionConfig, workflowStatusColors, stepStatusConfig, safeJsonParse } from "./automation-config" diff --git a/src/renderer/components/automation/automation-config.ts b/src/renderer/components/automation/automation-config.ts index 1b467eb1..71f241bf 100644 --- a/src/renderer/components/automation/automation-config.ts +++ b/src/renderer/components/automation/automation-config.ts @@ -1,5 +1,5 @@ import type { AutomationAction, AutomationStatus, AutomationTrigger, WorkflowStatus, WorkflowStep } from "@shared/types" -import { ArrowsClockwise, Eye, Funnel, Lightning, Pause, Play, Plus, Robot, Timer, Trash } from "@phosphor-icons/react" +import { ArrowsClockwise, Eye, Funnel, Lightning, Pause, Play, Plus, Robot, Timer, Trash } from "../ui/icons" import { DEPARTMENT_OPTIONS } from "@shared/constants" export const triggerConfig: Record = { diff --git a/src/renderer/components/communication/ChannelHeader.tsx b/src/renderer/components/communication/ChannelHeader.tsx index ca4d17a0..166f137d 100644 --- a/src/renderer/components/communication/ChannelHeader.tsx +++ b/src/renderer/components/communication/ChannelHeader.tsx @@ -1,5 +1,5 @@ import type { AgentMessageRecord, CommentRecord, TaskRecord, MessageChannel } from "@shared/types" -import { CaretDown } from "@phosphor-icons/react" +import { CaretDown } from "../ui/icons" import { useT } from "../../i18n" export interface ChannelDescriptor { diff --git a/src/renderer/components/communication/ChannelSidebar.tsx b/src/renderer/components/communication/ChannelSidebar.tsx index 77152c0b..c7e2584a 100644 --- a/src/renderer/components/communication/ChannelSidebar.tsx +++ b/src/renderer/components/communication/ChannelSidebar.tsx @@ -1,6 +1,6 @@ import { useState } from "react" import { AnimatePresence, motion } from "framer-motion" -import { EnvelopeSimple, Hash, Buildings, Megaphone, Fire, MagnifyingGlass, Funnel } from "@phosphor-icons/react" +import { EnvelopeSimple, Hash, Buildings, Megaphone, Fire, MagnifyingGlass, Funnel } from "../ui/icons" import type { AgentRecord, MessageChannel } from "@shared/types" import { AgentAvatar } from "./MessageItem" import type { ChannelDescriptor, TaskDiscussionDescriptor } from "./ChannelHeader" diff --git a/src/renderer/components/communication/MessageComposer.tsx b/src/renderer/components/communication/MessageComposer.tsx index 529e44d2..de0f507e 100644 --- a/src/renderer/components/communication/MessageComposer.tsx +++ b/src/renderer/components/communication/MessageComposer.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react" import { AnimatePresence, motion } from "framer-motion" -import { ArrowBendUpLeft, X, ChatCircle, UserCircle, Paperclip, FileText } from "@phosphor-icons/react" +import { ArrowBendUpLeft, X, ChatCircle, UserCircle, Paperclip, FileText } from "../ui/icons" import type { AgentMessageRecord, AgentRecord, DocumentRecord, MessageChannel } from "@shared/types" import { unwrap } from "../../lib/desktop" import { cmdOrCtrlLabel } from "../../lib/platform" diff --git a/src/renderer/components/communication/MessageItem.tsx b/src/renderer/components/communication/MessageItem.tsx index 2e85bf98..7d66de25 100644 --- a/src/renderer/components/communication/MessageItem.tsx +++ b/src/renderer/components/communication/MessageItem.tsx @@ -8,7 +8,7 @@ import { WarningCircle, ArrowBendUpLeft, UserCircle, -} from "@phosphor-icons/react" +} from "../ui/icons" import type { AgentMessageRecord, AgentRecord, CommentRecord, DepartmentId } from "@shared/types" import { getAgentInitials, formatMessageTime } from "../../lib/formatters" import { safeJson } from "../../lib/safe-json" diff --git a/src/renderer/components/communication/MessageList.tsx b/src/renderer/components/communication/MessageList.tsx index cef6585e..e30395cf 100644 --- a/src/renderer/components/communication/MessageList.tsx +++ b/src/renderer/components/communication/MessageList.tsx @@ -1,6 +1,6 @@ import { useRef, useEffect, useMemo } from "react" import { useVirtualizer } from "@tanstack/react-virtual" -import { ChatCircle, Tray } from "@phosphor-icons/react" +import { ChatCircle, Tray } from "../ui/icons" import type { AgentMessageRecord, AgentRecord, CommentRecord, TaskRecord } from "@shared/types" import { MessageBubble, TaskCommentBubble } from "./MessageItem" import type { AnyChannel } from "./ChannelHeader" diff --git a/src/renderer/components/communication/SearchResults.tsx b/src/renderer/components/communication/SearchResults.tsx index a2b04818..30a37d8f 100644 --- a/src/renderer/components/communication/SearchResults.tsx +++ b/src/renderer/components/communication/SearchResults.tsx @@ -1,7 +1,7 @@ import { useRef, useCallback } from "react" import { useVirtualizer } from "@tanstack/react-virtual" import { motion } from "framer-motion" -import { EnvelopeSimple, Buildings, Megaphone, Hash, Fire } from "@phosphor-icons/react" +import { EnvelopeSimple, Buildings, Megaphone, Hash, Fire } from "../ui/icons" import type { AgentMessageRecord, AgentRecord, MessageChannel } from "@shared/types" import { AgentAvatar } from "./MessageItem" import { formatMessageTime } from "../../lib/formatters" diff --git a/src/renderer/components/communication/ThreadPanel.tsx b/src/renderer/components/communication/ThreadPanel.tsx index 3487f437..d7b5c3c2 100644 --- a/src/renderer/components/communication/ThreadPanel.tsx +++ b/src/renderer/components/communication/ThreadPanel.tsx @@ -7,7 +7,7 @@ */ import { useState, useEffect, useCallback, useRef } from "react" -import { X, ChatCircleDots, ArrowBendUpLeft } from "@phosphor-icons/react" +import { X, ChatCircleDots, ArrowBendUpLeft } from "../ui/icons" import { motion } from "framer-motion" import type { AgentRecord, ConversationEventRecord, ThreadWaitStateRecord, ConversationThreadRecord, DocumentRecord } from "@shared/types" import WaitStateIndicator, { type WaitStateInfo } from "./WaitStateIndicator" diff --git a/src/renderer/components/communication/WaitStateIndicator.tsx b/src/renderer/components/communication/WaitStateIndicator.tsx index 870b227e..430dc74a 100644 --- a/src/renderer/components/communication/WaitStateIndicator.tsx +++ b/src/renderer/components/communication/WaitStateIndicator.tsx @@ -6,7 +6,7 @@ * Provides a primary action button to reply or navigate to the approval. */ -import { Hourglass, ChatCircle, CheckCircle } from "@phosphor-icons/react" +import { Hourglass, ChatCircle, CheckCircle } from "../ui/icons" import type { AgentRecord } from "@shared/types" export interface WaitStateInfo { diff --git a/src/renderer/components/communication/composer-shell/ComposerShell.tsx b/src/renderer/components/communication/composer-shell/ComposerShell.tsx index 177e0dc3..36c6042d 100644 --- a/src/renderer/components/communication/composer-shell/ComposerShell.tsx +++ b/src/renderer/components/communication/composer-shell/ComposerShell.tsx @@ -1,5 +1,5 @@ import { forwardRef, useCallback, type ReactNode, type KeyboardEvent, type ChangeEvent } from "react"; -import { PaperPlaneTilt } from "@phosphor-icons/react"; +import { PaperPlaneTilt } from "../../ui/icons"; import { ActionButton, InlineNotice } from "../../ui"; export interface ComposerShellProps { diff --git a/src/renderer/components/company-onboarding/CompanyStep.tsx b/src/renderer/components/company-onboarding/CompanyStep.tsx index a8122482..eabcea58 100644 --- a/src/renderer/components/company-onboarding/CompanyStep.tsx +++ b/src/renderer/components/company-onboarding/CompanyStep.tsx @@ -1,4 +1,4 @@ -import { Buildings, FolderOpen } from "@phosphor-icons/react"; +import { Buildings, FolderOpen } from "../ui/icons"; import type { ConnectorId } from "@shared/types"; import { ActionButton, Input, TextArea, Select } from "../ui"; import { OnboardingStep } from "./OnboardingStep"; diff --git a/src/renderer/components/company-onboarding/ExecutionModeStep.tsx b/src/renderer/components/company-onboarding/ExecutionModeStep.tsx index 82842f3d..484ffd85 100644 --- a/src/renderer/components/company-onboarding/ExecutionModeStep.tsx +++ b/src/renderer/components/company-onboarding/ExecutionModeStep.tsx @@ -1,4 +1,4 @@ -import { ArrowRight, Brain, UserCircle, type Icon } from "@phosphor-icons/react"; +import { ArrowRight, Brain, UserCircle, type Icon } from "../ui/icons"; import { OnboardingStep } from "./OnboardingStep"; import { useOnboarding } from "./OnboardingContext"; diff --git a/src/renderer/components/company-onboarding/LaunchStep.tsx b/src/renderer/components/company-onboarding/LaunchStep.tsx index 2c88da4a..38102ea5 100644 --- a/src/renderer/components/company-onboarding/LaunchStep.tsx +++ b/src/renderer/components/company-onboarding/LaunchStep.tsx @@ -1,5 +1,5 @@ import { motion } from "framer-motion"; -import { CheckCircle, Rocket } from "@phosphor-icons/react"; +import { CheckCircle, Rocket } from "../ui/icons"; import { ActionButton } from "../ui"; import { useOnboarding } from "./OnboardingContext"; diff --git a/src/renderer/components/company-onboarding/MissionStep.tsx b/src/renderer/components/company-onboarding/MissionStep.tsx index 6aeaf750..e30e46b7 100644 --- a/src/renderer/components/company-onboarding/MissionStep.tsx +++ b/src/renderer/components/company-onboarding/MissionStep.tsx @@ -1,5 +1,5 @@ import { motion } from "framer-motion"; -import { Cpu, Lightning } from "@phosphor-icons/react"; +import { Cpu, Lightning } from "../ui/icons"; import { ActionButton, Input, TextArea } from "../ui"; import { getStepNumber, TOTAL_STEPS } from "./OnboardingHero"; import { useOnboarding } from "./OnboardingContext"; diff --git a/src/renderer/components/company-onboarding/NodeCheckStep.tsx b/src/renderer/components/company-onboarding/NodeCheckStep.tsx index 2d01e11a..6ec700ad 100644 --- a/src/renderer/components/company-onboarding/NodeCheckStep.tsx +++ b/src/renderer/components/company-onboarding/NodeCheckStep.tsx @@ -4,7 +4,7 @@ import { ArrowRight, ArrowCounterClockwise, Terminal, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import { ActionButton } from "../ui"; import type { TerminalCommandKey } from "@shared/contracts"; import { OnboardingStep } from "./OnboardingStep"; diff --git a/src/renderer/components/company-onboarding/OnboardingHero.tsx b/src/renderer/components/company-onboarding/OnboardingHero.tsx index 61f31515..2eb938e4 100644 --- a/src/renderer/components/company-onboarding/OnboardingHero.tsx +++ b/src/renderer/components/company-onboarding/OnboardingHero.tsx @@ -7,7 +7,7 @@ import { Rocket, SlidersHorizontal, Target, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { AppLocale } from "@shared/locale"; export type OnboardingStep = diff --git a/src/renderer/components/company-onboarding/ProvidersStep.tsx b/src/renderer/components/company-onboarding/ProvidersStep.tsx index 54a8e654..9c4f6771 100644 --- a/src/renderer/components/company-onboarding/ProvidersStep.tsx +++ b/src/renderer/components/company-onboarding/ProvidersStep.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { ArrowRight, FloppyDisk, SignIn } from "@phosphor-icons/react"; +import { ArrowRight, FloppyDisk, SignIn } from "../ui/icons"; import { ActionButton } from "../ui"; import { CompatProviderCard, diff --git a/src/renderer/components/company-onboarding/ProvidersStepShared.tsx b/src/renderer/components/company-onboarding/ProvidersStepShared.tsx index af30381e..629fe8c4 100644 --- a/src/renderer/components/company-onboarding/ProvidersStepShared.tsx +++ b/src/renderer/components/company-onboarding/ProvidersStepShared.tsx @@ -5,7 +5,7 @@ import { CaretRight, FloppyDisk, Terminal, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { ProfileSnapshot } from "@shared/types"; import type { TerminalCommandKey } from "@shared/contracts"; diff --git a/src/renderer/components/company-onboarding/WelcomeStep.tsx b/src/renderer/components/company-onboarding/WelcomeStep.tsx index 6755d8ac..f009caeb 100644 --- a/src/renderer/components/company-onboarding/WelcomeStep.tsx +++ b/src/renderer/components/company-onboarding/WelcomeStep.tsx @@ -1,5 +1,5 @@ import { motion } from "framer-motion"; -import { GlobeSimple, Rocket } from "@phosphor-icons/react"; +import { GlobeSimple, Rocket } from "../ui/icons"; import type { AppLocale } from "@shared/locale"; import { APP_LOCALES, LOCALE_LABELS } from "@shared/locale"; import { ActionButton } from "../ui"; diff --git a/src/renderer/components/company-operations/DocumentCenter.tsx b/src/renderer/components/company-operations/DocumentCenter.tsx index 35661b58..bf4d5023 100644 --- a/src/renderer/components/company-operations/DocumentCenter.tsx +++ b/src/renderer/components/company-operations/DocumentCenter.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from "react"; -import { FileText, FloppyDisk, NotePencil, Trash } from "@phosphor-icons/react"; +import { FileText, FloppyDisk, NotePencil, Trash } from "../ui/icons"; import type { AgentRecord, DocumentRecord, GoalRecord, ProjectRecord } from "@shared/types"; import { ActionButton, ConfirmDialog, InlineNotice, Input, ListFrame, ListRow, Modal, Select, StatusPill, TextArea } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/company-operations/KnowledgeBaseManager.tsx b/src/renderer/components/company-operations/KnowledgeBaseManager.tsx index 01a06e4e..37243ff2 100644 --- a/src/renderer/components/company-operations/KnowledgeBaseManager.tsx +++ b/src/renderer/components/company-operations/KnowledgeBaseManager.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from "react"; -import { FloppyDisk, Lightbulb, NotePencil, Trash } from "@phosphor-icons/react"; +import { FloppyDisk, Lightbulb, NotePencil, Trash } from "../ui/icons"; import type { KnowledgeEntryRecord } from "@shared/types"; import { ActionButton, ConfirmDialog, InlineNotice, Input, ListFrame, ListRow, Modal, Select, StatusPill, TextArea } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/company-operations/MeetingsManager.tsx b/src/renderer/components/company-operations/MeetingsManager.tsx index 34376f65..5bcc6e61 100644 --- a/src/renderer/components/company-operations/MeetingsManager.tsx +++ b/src/renderer/components/company-operations/MeetingsManager.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from "react"; -import { CalendarBlank, FloppyDisk, NotePencil, Trash } from "@phosphor-icons/react"; +import { CalendarBlank, FloppyDisk, NotePencil, Trash } from "../ui/icons"; import type { AgentRecord, MeetingRecord } from "@shared/types"; import { ActionButton, ConfirmDialog, InlineNotice, Input, ListFrame, ListRow, Modal, Select, StatusPill } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/company-operations/SectionHeader.tsx b/src/renderer/components/company-operations/SectionHeader.tsx index 81da78a0..36a64c84 100644 --- a/src/renderer/components/company-operations/SectionHeader.tsx +++ b/src/renderer/components/company-operations/SectionHeader.tsx @@ -1,4 +1,4 @@ -import { Plus } from "@phosphor-icons/react"; +import { Plus } from "../ui/icons"; import { ActionButton } from "../ui"; export function SectionHeader({ diff --git a/src/renderer/components/company-operations/SprintManager.tsx b/src/renderer/components/company-operations/SprintManager.tsx index 8ad0d3e1..cefe6614 100644 --- a/src/renderer/components/company-operations/SprintManager.tsx +++ b/src/renderer/components/company-operations/SprintManager.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from "react"; -import { FloppyDisk, NotePencil, Rows, Trash } from "@phosphor-icons/react"; +import { FloppyDisk, NotePencil, Rows, Trash } from "../ui/icons"; import type { SprintRecord } from "@shared/types"; import { ActionButton, ConfirmDialog, InlineNotice, Input, ListFrame, ListRow, Modal, Select, StatusPill, TextArea } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/connectors.tsx b/src/renderer/components/connectors.tsx index b8e89aa5..380deecb 100644 --- a/src/renderer/components/connectors.tsx +++ b/src/renderer/components/connectors.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { CheckCircle, SignIn } from "@phosphor-icons/react"; +import { CheckCircle, SignIn } from "./ui/icons"; import type { ConnectorRecord } from "@shared/types"; import { unwrap } from "../lib/desktop"; import { ActionButton, InlineNotice, Input, Select, StatusPill, TextArea } from "./ui"; diff --git a/src/renderer/components/dashboard/ActivityFeed.tsx b/src/renderer/components/dashboard/ActivityFeed.tsx index 565cfa9d..00d3a139 100644 --- a/src/renderer/components/dashboard/ActivityFeed.tsx +++ b/src/renderer/components/dashboard/ActivityFeed.tsx @@ -7,7 +7,7 @@ import { ShieldCheck, Warning, XCircle, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { ActivityRecord, AgentRecord } from "@shared/types"; import { timeAgo } from "../../lib/formatters"; diff --git a/src/renderer/components/dashboard/BudgetAlertBanner.tsx b/src/renderer/components/dashboard/BudgetAlertBanner.tsx index 044c60a7..7976f46d 100644 --- a/src/renderer/components/dashboard/BudgetAlertBanner.tsx +++ b/src/renderer/components/dashboard/BudgetAlertBanner.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, useMemo, useCallback } from "react"; -import { Warning, X } from "@phosphor-icons/react"; +import { Warning, X } from "../ui/icons"; import { AnimatePresence, motion } from "framer-motion"; import type { AgentRecord, BudgetIncidentRecord, SectionId } from "@shared/types"; import { useReducedMotion } from "../ui"; diff --git a/src/renderer/components/dashboard/Dashboard.tsx b/src/renderer/components/dashboard/Dashboard.tsx index 24cc8ff5..dc67ddab 100644 --- a/src/renderer/components/dashboard/Dashboard.tsx +++ b/src/renderer/components/dashboard/Dashboard.tsx @@ -7,7 +7,7 @@ import { ShieldCheck, Warning, XCircle, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { ActivityRecord, AgentRecord, diff --git a/src/renderer/components/dashboard/KanbanBoard.tsx b/src/renderer/components/dashboard/KanbanBoard.tsx index fec3afed..5f480979 100644 --- a/src/renderer/components/dashboard/KanbanBoard.tsx +++ b/src/renderer/components/dashboard/KanbanBoard.tsx @@ -1,5 +1,5 @@ import { useMemo } from "react"; -import { Briefcase, Robot } from "@phosphor-icons/react"; +import { Briefcase, Robot } from "../ui/icons"; import type { AgentRecord, RunRecord, TaskRecord } from "@shared/types"; interface KanbanProps { diff --git a/src/renderer/components/dashboard/RecoveryBanner.tsx b/src/renderer/components/dashboard/RecoveryBanner.tsx index 7cf778b3..cb40ee01 100644 --- a/src/renderer/components/dashboard/RecoveryBanner.tsx +++ b/src/renderer/components/dashboard/RecoveryBanner.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from "react"; -import { Warning, ArrowClockwise, X, Trash } from "@phosphor-icons/react"; +import { Warning, ArrowClockwise, X, Trash } from "../ui/icons"; import type { DesktopEvent } from "@shared/types/events"; interface InterruptedRun { diff --git a/src/renderer/components/dashboard/charts/ChartCard.tsx b/src/renderer/components/dashboard/charts/ChartCard.tsx index 5e7e2a49..eca8f0da 100644 --- a/src/renderer/components/dashboard/charts/ChartCard.tsx +++ b/src/renderer/components/dashboard/charts/ChartCard.tsx @@ -1,4 +1,4 @@ -import { ChartLine } from "@phosphor-icons/react"; +import { ChartLine } from "../../ui/icons"; interface ChartCardProps { title: string; diff --git a/src/renderer/components/execution/ActivityList.tsx b/src/renderer/components/execution/ActivityList.tsx index 2694d2f4..2267e421 100644 --- a/src/renderer/components/execution/ActivityList.tsx +++ b/src/renderer/components/execution/ActivityList.tsx @@ -1,6 +1,6 @@ import { useMemo, useRef, useState } from "react" import { useVirtualizer } from "@tanstack/react-virtual" -import { Lightning, MagnifyingGlass } from "@phosphor-icons/react" +import { Lightning, MagnifyingGlass } from "../ui/icons" import type { ActivityRecord } from "@shared/types" import { useT } from "../../i18n" import { formatTime } from "../../lib/formatters" diff --git a/src/renderer/components/execution/BudgetSummary.tsx b/src/renderer/components/execution/BudgetSummary.tsx index e9d70c2b..5ee84528 100644 --- a/src/renderer/components/execution/BudgetSummary.tsx +++ b/src/renderer/components/execution/BudgetSummary.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react" -import { Warning } from "@phosphor-icons/react" +import { Warning } from "../ui/icons" import type { BudgetStatusSummary, ProfileSnapshot } from "@shared/types" import { formatMoney } from "../../lib/formatters" import { ListFrame, ListRow } from "../ui" diff --git a/src/renderer/components/execution/CompatProviderCard.tsx b/src/renderer/components/execution/CompatProviderCard.tsx index cb3af3bb..13fce8d5 100644 --- a/src/renderer/components/execution/CompatProviderCard.tsx +++ b/src/renderer/components/execution/CompatProviderCard.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react"; -import { ArrowSquareOut, FloppyDisk, Plus, Trash } from "@phosphor-icons/react"; +import { ArrowSquareOut, FloppyDisk, Plus, Trash } from "../ui/icons"; import type { ConnectorRecord } from "@shared/types"; import { unwrap } from "../../lib/desktop"; import { diff --git a/src/renderer/components/execution/IncidentList.tsx b/src/renderer/components/execution/IncidentList.tsx index ad9fe1da..e9050ed7 100644 --- a/src/renderer/components/execution/IncidentList.tsx +++ b/src/renderer/components/execution/IncidentList.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react"; -import { CheckCircle, Warning } from "@phosphor-icons/react"; +import { CheckCircle, Warning } from "../ui/icons"; import type { BudgetIncidentRecord } from "@shared/types"; import { ActionButton, EmptyState, ListFrame, ListRow } from "../ui"; import { formatTime } from "../../lib/formatters"; diff --git a/src/renderer/components/execution/ModelManagementShared.tsx b/src/renderer/components/execution/ModelManagementShared.tsx index c575be3b..b424ace7 100644 --- a/src/renderer/components/execution/ModelManagementShared.tsx +++ b/src/renderer/components/execution/ModelManagementShared.tsx @@ -1,4 +1,4 @@ -import { CaretDown, CaretRight } from "@phosphor-icons/react"; +import { CaretDown, CaretRight } from "../ui/icons"; import type { ProfileSnapshot } from "@shared/types"; import { COMPATIBLE_PROVIDERS } from "../company-onboarding/ProvidersStepShared"; @@ -138,7 +138,7 @@ export function ToggleSwitch({ checked, onChange, label }: { checked: boolean; o /* Model toggle list */ /* ------------------------------------------------------------------ */ -import { X as XIcon } from "@phosphor-icons/react"; +import { X as XIcon } from "../ui/icons"; export function ModelToggleList({ models, diff --git a/src/renderer/components/execution/NativeProviderCard.tsx b/src/renderer/components/execution/NativeProviderCard.tsx index 647c9910..5b13877f 100644 --- a/src/renderer/components/execution/NativeProviderCard.tsx +++ b/src/renderer/components/execution/NativeProviderCard.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react"; -import { FloppyDisk, SignIn } from "@phosphor-icons/react"; +import { FloppyDisk, SignIn } from "../ui/icons"; import type { ConnectorRecord } from "@shared/types"; import { unwrap } from "../../lib/desktop"; import { diff --git a/src/renderer/components/execution/PendingReviewList.tsx b/src/renderer/components/execution/PendingReviewList.tsx index 7ff5c14f..6fb58a2b 100644 --- a/src/renderer/components/execution/PendingReviewList.tsx +++ b/src/renderer/components/execution/PendingReviewList.tsx @@ -1,4 +1,4 @@ -import { Robot } from "@phosphor-icons/react" +import { Robot } from "../ui/icons" import type { AgentRecord, TaskRecord } from "@shared/types" import { useT } from "../../i18n" import { EmptyState, ListFrame } from "../ui" diff --git a/src/renderer/components/execution/PolicyList.tsx b/src/renderer/components/execution/PolicyList.tsx index e041543e..6b564d48 100644 --- a/src/renderer/components/execution/PolicyList.tsx +++ b/src/renderer/components/execution/PolicyList.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from "react"; -import { Plus, ShieldCheck, Trash, Warning } from "@phosphor-icons/react"; +import { Plus, ShieldCheck, Trash, Warning } from "../ui/icons"; import type { BudgetPolicyRecord, BudgetStatusSummary } from "@shared/types"; import { ActionButton, EmptyState, ListFrame, ListRow } from "../ui"; import { PolicyFormModal } from "./PolicyFormModal"; diff --git a/src/renderer/components/execution/SettingsPane.tsx b/src/renderer/components/execution/SettingsPane.tsx index 7f7732bd..cb2779f9 100644 --- a/src/renderer/components/execution/SettingsPane.tsx +++ b/src/renderer/components/execution/SettingsPane.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react" -import { ArrowClockwise, CheckCircle, ClockCounterClockwise, Download, Trash } from "@phosphor-icons/react" +import { ArrowClockwise, CheckCircle, ClockCounterClockwise, Download, Trash } from "../ui/icons" import type { ProfileSnapshot, SecretRecord } from "@shared/types" import type { AppLocale } from "@shared/locale" import { APP_LOCALES, LOCALE_LABELS } from "@shared/locale" diff --git a/src/renderer/components/execution/SocialDraftPreview.tsx b/src/renderer/components/execution/SocialDraftPreview.tsx index 30219d7f..5a31af69 100644 --- a/src/renderer/components/execution/SocialDraftPreview.tsx +++ b/src/renderer/components/execution/SocialDraftPreview.tsx @@ -1,4 +1,4 @@ -import { Clock, Link as LinkIcon } from "@phosphor-icons/react" +import { Clock, Link as LinkIcon } from "../ui/icons" import { platformConfig } from "../social/social-config" import type { SocialPlatform } from "@shared/types" import { safeJson } from "../../lib/safe-json" diff --git a/src/renderer/components/execution/TaskComments.tsx b/src/renderer/components/execution/TaskComments.tsx index 83f87def..9106077a 100644 --- a/src/renderer/components/execution/TaskComments.tsx +++ b/src/renderer/components/execution/TaskComments.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react" -import { Robot, ArrowRight } from "@phosphor-icons/react" +import { Robot, ArrowRight } from "../ui/icons" import type { CommentRecord, ProfileSnapshot } from "@shared/types" import { useT } from "../../i18n" import { formatTime } from "../../lib/formatters" diff --git a/src/renderer/components/execution/TaskCreator.tsx b/src/renderer/components/execution/TaskCreator.tsx index 283b3574..04cdd044 100644 --- a/src/renderer/components/execution/TaskCreator.tsx +++ b/src/renderer/components/execution/TaskCreator.tsx @@ -1,6 +1,6 @@ import { useState } from "react" import { AnimatePresence, motion } from "framer-motion" -import { ListChecks } from "@phosphor-icons/react" +import { ListChecks } from "../ui/icons" import type { GoalRecord, ProfileSnapshot, ProjectRecord, WorkspaceRecord, TaskRecord } from "@shared/types" import { useT } from "../../i18n" import { unwrap } from "../../lib/desktop" diff --git a/src/renderer/components/execution/TaskInspector.tsx b/src/renderer/components/execution/TaskInspector.tsx index 40d8e249..840a5fe9 100644 --- a/src/renderer/components/execution/TaskInspector.tsx +++ b/src/renderer/components/execution/TaskInspector.tsx @@ -1,5 +1,5 @@ import { useState, useMemo } from "react" -import { CheckCircle, ListChecks, Pencil, Play, ShieldCheck, Trash, XCircle, Warning, Robot, ArrowRight } from "@phosphor-icons/react" +import { CheckCircle, ListChecks, Pencil, Play, ShieldCheck, Trash, XCircle, Warning, Robot, ArrowRight } from "../ui/icons" import type { CommentRecord, GoalRecord, ProfileSnapshot, ProjectRecord, RunRecord, TaskRecord, TaskStatus, WorkspaceRecord } from "@shared/types" import { useT } from "../../i18n" import { formatMoney, formatTime } from "../../lib/formatters" diff --git a/src/renderer/components/execution/WorkspaceCreator.tsx b/src/renderer/components/execution/WorkspaceCreator.tsx index 37a7f994..a0c86747 100644 --- a/src/renderer/components/execution/WorkspaceCreator.tsx +++ b/src/renderer/components/execution/WorkspaceCreator.tsx @@ -1,5 +1,5 @@ import { useState } from "react" -import { FolderOpen } from "@phosphor-icons/react" +import { FolderOpen } from "../ui/icons" import type { ProjectRecord } from "@shared/types" import { useT } from "../../i18n" import { unwrap } from "../../lib/desktop" diff --git a/src/renderer/components/execution/WorkspaceInspector.tsx b/src/renderer/components/execution/WorkspaceInspector.tsx index 7bc23c4a..f400d1c7 100644 --- a/src/renderer/components/execution/WorkspaceInspector.tsx +++ b/src/renderer/components/execution/WorkspaceInspector.tsx @@ -1,4 +1,4 @@ -import { ArrowSquareOut } from "@phosphor-icons/react" +import { ArrowSquareOut } from "../ui/icons" import type { AgentRecord, DocumentRecord, ProjectRecord, RunRecord, TaskRecord, WorkspaceRecord } from "@shared/types" import { useT } from "../../i18n" import { formatTime } from "../../lib/formatters" diff --git a/src/renderer/components/execution/WorkspaceList.tsx b/src/renderer/components/execution/WorkspaceList.tsx index afa8e9dc..067f1a4d 100644 --- a/src/renderer/components/execution/WorkspaceList.tsx +++ b/src/renderer/components/execution/WorkspaceList.tsx @@ -1,5 +1,5 @@ import { useState } from "react" -import { ArrowSquareOut, FolderOpen, Trash } from "@phosphor-icons/react" +import { ArrowSquareOut, FolderOpen, Trash } from "../ui/icons" import type { ProjectRecord, WorkspaceRecord } from "@shared/types" import { useT } from "../../i18n" import { unwrap } from "../../lib/desktop" diff --git a/src/renderer/components/execution/approval-inspector/ApprovalDocumentsPanel.tsx b/src/renderer/components/execution/approval-inspector/ApprovalDocumentsPanel.tsx index f711553e..3fcf4aad 100644 --- a/src/renderer/components/execution/approval-inspector/ApprovalDocumentsPanel.tsx +++ b/src/renderer/components/execution/approval-inspector/ApprovalDocumentsPanel.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from "react" -import { CheckCircle } from "@phosphor-icons/react" +import { CheckCircle } from "../../ui/icons" import type { ApprovalRecord, DocumentRecord } from "@shared/types" import { extractApprovalDocumentReferences, type ApprovalDocumentReference } from "@shared/approval-documents" import { unwrap } from "../../../lib/desktop" diff --git a/src/renderer/components/execution/approval-inspector/ApprovalSummary.tsx b/src/renderer/components/execution/approval-inspector/ApprovalSummary.tsx index 0262fc85..7a475370 100644 --- a/src/renderer/components/execution/approval-inspector/ApprovalSummary.tsx +++ b/src/renderer/components/execution/approval-inspector/ApprovalSummary.tsx @@ -1,4 +1,4 @@ -import { Briefcase, Robot } from "@phosphor-icons/react" +import { Briefcase, Robot } from "../../ui/icons" import type { AgentRecord, ApprovalRecord, TaskRecord } from "@shared/types" import { formatTime } from "../../../lib/formatters" import { StatusPill } from "../../ui" diff --git a/src/renderer/components/execution/approval-inspector/DecisionForm.tsx b/src/renderer/components/execution/approval-inspector/DecisionForm.tsx index ba80243b..a7078a51 100644 --- a/src/renderer/components/execution/approval-inspector/DecisionForm.tsx +++ b/src/renderer/components/execution/approval-inspector/DecisionForm.tsx @@ -1,4 +1,4 @@ -import { CheckCircle, ClockCounterClockwise, Trash, XCircle } from "@phosphor-icons/react" +import { CheckCircle, ClockCounterClockwise, Trash, XCircle } from "../../ui/icons" import { ActionButton, TextArea } from "../../ui" import { useT } from "../../../i18n" diff --git a/src/renderer/components/execution/approval-inspector/DeliverableReviewPanel.tsx b/src/renderer/components/execution/approval-inspector/DeliverableReviewPanel.tsx index ffe2934d..ce5863f8 100644 --- a/src/renderer/components/execution/approval-inspector/DeliverableReviewPanel.tsx +++ b/src/renderer/components/execution/approval-inspector/DeliverableReviewPanel.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from "react" -import { CaretDown, CaretUp } from "@phosphor-icons/react" +import { CaretDown, CaretUp } from "../../ui/icons" import type { AgentRecord, ApprovalRecord, DocumentRecord } from "@shared/types" import { useApprovalPayload } from "./useApprovalPayload" diff --git a/src/renderer/components/execution/approval-inspector/SchedulePicker.tsx b/src/renderer/components/execution/approval-inspector/SchedulePicker.tsx index 6c2cc893..3c9beb73 100644 --- a/src/renderer/components/execution/approval-inspector/SchedulePicker.tsx +++ b/src/renderer/components/execution/approval-inspector/SchedulePicker.tsx @@ -1,5 +1,5 @@ import { useMemo } from "react" -import { Clock } from "@phosphor-icons/react" +import { Clock } from "../../ui/icons" import { InlineNotice } from "../../ui" export type ScheduleMode = "immediate" | "scheduled" diff --git a/src/renderer/components/execution/execution-utils.tsx b/src/renderer/components/execution/execution-utils.tsx index fbea6d66..daddd5f1 100644 --- a/src/renderer/components/execution/execution-utils.tsx +++ b/src/renderer/components/execution/execution-utils.tsx @@ -1,7 +1,7 @@ import type { ApprovalRecord } from "@shared/types" import { Robot, CheckSquare, Play, ShieldCheck, Gear, FolderOpen, Key, Target, Briefcase, Buildings, -} from "@phosphor-icons/react" +} from "../ui/icons" import { safeJson } from "../../lib/safe-json" export function describeActionError(error: unknown) { diff --git a/src/renderer/components/hiring/HiringPipeline.tsx b/src/renderer/components/hiring/HiringPipeline.tsx index 73f19a75..0b510231 100644 --- a/src/renderer/components/hiring/HiringPipeline.tsx +++ b/src/renderer/components/hiring/HiringPipeline.tsx @@ -4,7 +4,7 @@ import { Check, UserPlus, X, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { AgentRecord, ApprovalRecord } from "@shared/types"; import { useT } from "../../i18n"; import { getAgentInitials } from "../../lib/formatters"; diff --git a/src/renderer/components/inbox/Inbox.tsx b/src/renderer/components/inbox/Inbox.tsx index cb6c8cfe..ea13f737 100644 --- a/src/renderer/components/inbox/Inbox.tsx +++ b/src/renderer/components/inbox/Inbox.tsx @@ -4,7 +4,7 @@ import { Bell, Robot, Tray, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { InboxItem, InboxItemType, SectionId } from "@shared/types"; import { timeAgo } from "../../lib/formatters"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/inbox/PerformanceView.tsx b/src/renderer/components/inbox/PerformanceView.tsx index 382ea563..780a4ffd 100644 --- a/src/renderer/components/inbox/PerformanceView.tsx +++ b/src/renderer/components/inbox/PerformanceView.tsx @@ -1,4 +1,4 @@ -import { Target } from "@phosphor-icons/react"; +import { Target } from "../ui/icons"; import type { CompanyMetrics, SectionId } from "@shared/types"; import { formatDuration, formatMoney, getAgentInitials } from "../../lib/formatters"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/inbox/StandupView.tsx b/src/renderer/components/inbox/StandupView.tsx index c03a1e88..ee23edc6 100644 --- a/src/renderer/components/inbox/StandupView.tsx +++ b/src/renderer/components/inbox/StandupView.tsx @@ -4,7 +4,7 @@ import { Clock, Heartbeat, Warning, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { SectionId, StandupReport } from "@shared/types"; import { getAgentInitials } from "../../lib/formatters"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/inbox/inbox-helpers.tsx b/src/renderer/components/inbox/inbox-helpers.tsx index 4946646f..ce8b81e2 100644 --- a/src/renderer/components/inbox/inbox-helpers.tsx +++ b/src/renderer/components/inbox/inbox-helpers.tsx @@ -6,7 +6,7 @@ import { Warning, Eye, ChatCircle, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { InboxItemType } from "@shared/types"; export const typeConfig: Record = { diff --git a/src/renderer/components/organization/AgentRoster.tsx b/src/renderer/components/organization/AgentRoster.tsx index 14c1f530..10e951ae 100644 --- a/src/renderer/components/organization/AgentRoster.tsx +++ b/src/renderer/components/organization/AgentRoster.tsx @@ -1,6 +1,6 @@ import { useRef } from "react" import { useVirtualizer } from "@tanstack/react-virtual" -import { CheckCircle } from "@phosphor-icons/react" +import { CheckCircle } from "../ui/icons" import type { AgentRecord, ConnectorRecord, WorkspaceRecord } from "@shared/types" import { EmptyState, StatusPill } from "../ui" import { useT } from "../../i18n" diff --git a/src/renderer/components/organization/GoalList.tsx b/src/renderer/components/organization/GoalList.tsx index 7506b7aa..95c03431 100644 --- a/src/renderer/components/organization/GoalList.tsx +++ b/src/renderer/components/organization/GoalList.tsx @@ -1,4 +1,4 @@ -import { CheckCircle } from "@phosphor-icons/react"; +import { CheckCircle } from "../ui/icons"; import type { AgentRecord, GoalRecord } from "@shared/types"; import { EmptyState, ListFrame, ListRow, StatusPill } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/organization/OrgChart.tsx b/src/renderer/components/organization/OrgChart.tsx index 46ca87cd..0299b9b1 100644 --- a/src/renderer/components/organization/OrgChart.tsx +++ b/src/renderer/components/organization/OrgChart.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { Heartbeat } from "@phosphor-icons/react"; +import { Heartbeat } from "../ui/icons"; import type { AgentRecord, ConnectorRecord } from "@shared/types"; import { getAgentInitials } from "../../lib/formatters"; import { EmptyState } from "../ui"; diff --git a/src/renderer/components/organization/ProjectList.tsx b/src/renderer/components/organization/ProjectList.tsx index 4e05f324..4d37e54f 100644 --- a/src/renderer/components/organization/ProjectList.tsx +++ b/src/renderer/components/organization/ProjectList.tsx @@ -1,4 +1,4 @@ -import { CheckCircle } from "@phosphor-icons/react"; +import { CheckCircle } from "../ui/icons"; import type { AgentRecord, GoalRecord, ProjectRecord, WorkspaceRecord } from "@shared/types"; import { EmptyState, ListFrame, ListRow, StatusPill } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/organization/agent-form/agent-form-fields/CreateFormBody.tsx b/src/renderer/components/organization/agent-form/agent-form-fields/CreateFormBody.tsx index 6d7bca3e..d04fd0c8 100644 --- a/src/renderer/components/organization/agent-form/agent-form-fields/CreateFormBody.tsx +++ b/src/renderer/components/organization/agent-form/agent-form-fields/CreateFormBody.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; import { AnimatePresence, motion } from "framer-motion"; -import { Robot } from "@phosphor-icons/react"; +import { Robot } from "../../../ui/icons"; import { DEPARTMENT_OPTIONS } from "@shared/constants"; import type { AgentRecord, diff --git a/src/renderer/components/organization/agent-form/agent-form-fields/EditFormBody.tsx b/src/renderer/components/organization/agent-form/agent-form-fields/EditFormBody.tsx index 930fc70f..ea30abdd 100644 --- a/src/renderer/components/organization/agent-form/agent-form-fields/EditFormBody.tsx +++ b/src/renderer/components/organization/agent-form/agent-form-fields/EditFormBody.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { Pencil, Trash } from "@phosphor-icons/react"; +import { Pencil, Trash } from "../../../ui/icons"; import { DEPARTMENT_OPTIONS } from "@shared/constants"; import type { AgentRecord, diff --git a/src/renderer/components/organization/goal-form/GoalForm.tsx b/src/renderer/components/organization/goal-form/GoalForm.tsx index 0eb5355f..7c592e23 100644 --- a/src/renderer/components/organization/goal-form/GoalForm.tsx +++ b/src/renderer/components/organization/goal-form/GoalForm.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { Pencil, Target, Trash } from "@phosphor-icons/react"; +import { Pencil, Target, Trash } from "../../ui/icons"; import type { AgentRecord, GoalRecord } from "@shared/types"; import { ActionButton, Input, Select, TextArea } from "../../ui"; import { ConfirmDelete } from "../helpers"; diff --git a/src/renderer/components/organization/helpers.tsx b/src/renderer/components/organization/helpers.tsx index ceb9191d..443c0295 100644 --- a/src/renderer/components/organization/helpers.tsx +++ b/src/renderer/components/organization/helpers.tsx @@ -1,4 +1,4 @@ -import { Heartbeat, Lightning } from "@phosphor-icons/react"; +import { Heartbeat, Lightning } from "../ui/icons"; import type { AgentRecord } from "@shared/types"; import { ActionButton, BudgetBar, InlineConfirmDelete, Select } from "../ui"; import { formatTime } from "../../lib/formatters"; diff --git a/src/renderer/components/organization/project-form/ProjectForm.tsx b/src/renderer/components/organization/project-form/ProjectForm.tsx index 09294c8a..abd64cf3 100644 --- a/src/renderer/components/organization/project-form/ProjectForm.tsx +++ b/src/renderer/components/organization/project-form/ProjectForm.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { Kanban, Pencil, Trash } from "@phosphor-icons/react"; +import { Kanban, Pencil, Trash } from "../../ui/icons"; import type { AgentRecord, GoalRecord, ProjectRecord } from "@shared/types"; import { ActionButton, Input, Select, TextArea } from "../../ui"; import { ConfirmDelete } from "../helpers"; diff --git a/src/renderer/components/runs/RunDetail.tsx b/src/renderer/components/runs/RunDetail.tsx index 3c970e80..ef3a7c2b 100644 --- a/src/renderer/components/runs/RunDetail.tsx +++ b/src/renderer/components/runs/RunDetail.tsx @@ -4,7 +4,7 @@ import { Lightning, ListChecks, WarningCircle, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { AgentRecord, RunRecord, TaskRecord, WorkspaceRecord } from "@shared/types"; import { formatMoney, formatTime } from "../../lib/formatters"; import { ActionButton, Panel, StatusPill } from "../ui"; diff --git a/src/renderer/components/settings/providers/ProvidersPanel.tsx b/src/renderer/components/settings/providers/ProvidersPanel.tsx new file mode 100644 index 00000000..d573c37d --- /dev/null +++ b/src/renderer/components/settings/providers/ProvidersPanel.tsx @@ -0,0 +1,206 @@ +import { useEffect, useMemo, useState } from "react"; +import { MagnifyingGlass } from "../../ui/icons"; +import type { CredentialSummary } from "@shared/contracts/schemas-credentials"; +import { ProviderRow } from "./ProviderRow"; + +const desktop = (typeof window !== "undefined" ? window.agentCompany : null) as + | (Window["agentCompany"] | null); + +/** Provider catalog mirrored from the main process for renderer-only use. + * Keep in sync with src/main/connector-definitions.ts when the catalog grows. + * Each entry is referenced by its connectorId in IPC traffic. */ +export interface ProvidersPanelEntry { + id: string; + label: string; + kind: "oauth" | "api_key" | "azure" | "aws" | "gcp_adc"; +} + +const DEFAULT_CATALOG: ProvidersPanelEntry[] = [ + { id: "claude-pro", label: "Claude Pro / Max", kind: "oauth" }, + { id: "chatgpt-codex", label: "ChatGPT Plus / Pro (Codex)", kind: "oauth" }, + { id: "github-copilot", label: "GitHub Copilot", kind: "oauth" }, + { id: "gemini-cli", label: "Google Gemini CLI", kind: "oauth" }, + { id: "antigravity", label: "Google Antigravity", kind: "oauth" }, + { id: "anthropic", label: "Anthropic API", kind: "api_key" }, + { id: "openai", label: "OpenAI API", kind: "api_key" }, + { id: "google", label: "Google Gemini API", kind: "api_key" }, + { id: "mistral", label: "Mistral", kind: "api_key" }, + { id: "groq", label: "Groq", kind: "api_key" }, + { id: "cerebras", label: "Cerebras", kind: "api_key" }, + { id: "xai", label: "xAI", kind: "api_key" }, + { id: "openrouter", label: "OpenRouter", kind: "api_key" }, + { id: "vercel-ai-gateway", label: "Vercel AI Gateway", kind: "api_key" }, + { id: "zai", label: "ZAI", kind: "api_key" }, + { id: "opencode", label: "OpenCode Zen", kind: "api_key" }, + { id: "opencode-go", label: "OpenCode Go", kind: "api_key" }, + { id: "huggingface", label: "Hugging Face", kind: "api_key" }, + { id: "kimi-coding", label: "Kimi For Coding", kind: "api_key" }, + { id: "minimax", label: "MiniMax", kind: "api_key" }, + { id: "minimax-cn", label: "MiniMax (China)", kind: "api_key" }, + { id: "fireworks", label: "Fireworks AI", kind: "api_key" }, + { id: "fireworks-firepass", label: "Fireworks Fire Pass", kind: "api_key" }, + { id: "azure-openai", label: "Azure OpenAI", kind: "azure" }, + { id: "amazon-bedrock", label: "AWS Bedrock", kind: "aws" }, + { id: "google-vertex", label: "Google Vertex AI", kind: "gcp_adc" }, +]; + +const FILTERS: Array<{ id: "all" | "configured" | "available"; label: string }> = [ + { id: "all", label: "All" }, + { id: "configured", label: "Connected" }, + { id: "available", label: "Available" }, +]; + +const GROUP_ORDER: Array<{ id: ProvidersPanelEntry["kind"]; label: string }> = [ + { id: "oauth", label: "Sign in" }, + { id: "api_key", label: "API key" }, + { id: "azure", label: "Azure" }, + { id: "aws", label: "AWS" }, + { id: "gcp_adc", label: "Google Cloud" }, +]; + +interface Props { + catalog?: ProvidersPanelEntry[]; +} + +export function ProvidersPanel({ catalog }: Props) { + const entries = catalog ?? DEFAULT_CATALOG; + const [credentials, setCredentials] = useState>(new Map()); + const [filter, setFilter] = useState<"all" | "configured" | "available">("all"); + const [search, setSearch] = useState(""); + + useEffect(() => { + if (!desktop) return; + let cancelled = false; + void desktop.listCredentials().then((result) => { + if (cancelled || !result.ok) return; + setCredentials(new Map(result.data.map((row) => [row.connectorId, row]))); + }); + const unsubscribe = desktop.subscribe((event) => { + if (event.type !== "credentials-changed") return; + void desktop.listCredentials().then((result) => { + if (!result.ok) return; + setCredentials(new Map(result.data.map((row) => [row.connectorId, row]))); + }); + }); + return () => { + cancelled = true; + unsubscribe(); + }; + }, []); + + const filtered = useMemo(() => { + return entries.filter((entry) => { + const hasCredential = credentials.has(entry.id); + if (filter === "configured" && !hasCredential) return false; + if (filter === "available" && hasCredential) return false; + if (search.trim()) { + const needle = search.trim().toLowerCase(); + return entry.label.toLowerCase().includes(needle) || entry.id.includes(needle); + } + return true; + }); + }, [entries, credentials, filter, search]); + + const grouped = useMemo(() => { + const byKind = new Map(); + for (const entry of filtered) { + const list = byKind.get(entry.kind) ?? []; + list.push(entry); + byKind.set(entry.kind, list); + } + return GROUP_ORDER.map((group) => ({ + ...group, + items: byKind.get(group.id) ?? [], + })).filter((group) => group.items.length > 0); + }, [filtered]); + + const configuredCount = useMemo( + () => entries.filter((entry) => credentials.has(entry.id)).length, + [entries, credentials], + ); + + return ( +
+
+
+ + setSearch(event.target.value)} + aria-label="Search providers" + className="h-9 w-full rounded-md border border-border bg-background pl-8 pr-3 text-[13px] text-foreground outline-none transition-colors placeholder:text-muted-foreground/60 focus:border-foreground/40" + /> +
+ +
+
+ {configuredCount} / {entries.length} connected +
+
+ {FILTERS.map((item) => { + const active = filter === item.id; + return ( + + ); + })} +
+
+
+ + {grouped.length === 0 ? ( +
+ No providers match the current filter. +
+ ) : ( +
+ {grouped.map((group) => ( +
+
+

+ {group.label} +

+ + {group.items.length} + +
+
    + {group.items.map((entry) => ( + + ))} +
+
+ ))} +
+ )} +
+ ); +} diff --git a/src/renderer/components/skills/SkillDetail.tsx b/src/renderer/components/skills/SkillDetail.tsx index a6197b6f..614b5ced 100644 --- a/src/renderer/components/skills/SkillDetail.tsx +++ b/src/renderer/components/skills/SkillDetail.tsx @@ -7,7 +7,7 @@ import { Link, PuzzlePiece, Trash, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { AgentRecord, SkillRecord, SkillUpdateStatus } from "@shared/types"; import { useAppStore } from "../../state/store"; import { ActionButton, StatusPill } from "../ui"; diff --git a/src/renderer/components/skills/SkillFileTree.tsx b/src/renderer/components/skills/SkillFileTree.tsx index 7540a54e..606db357 100644 --- a/src/renderer/components/skills/SkillFileTree.tsx +++ b/src/renderer/components/skills/SkillFileTree.tsx @@ -5,7 +5,7 @@ import { FileText, FolderOpen, FolderSimple, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { FileInventoryEntry } from "@shared/types"; export type SkillTreeNode = { diff --git a/src/renderer/components/skills/SkillImportModal.tsx b/src/renderer/components/skills/SkillImportModal.tsx index 41593ca8..4131bc12 100644 --- a/src/renderer/components/skills/SkillImportModal.tsx +++ b/src/renderer/components/skills/SkillImportModal.tsx @@ -4,7 +4,7 @@ import { GithubLogo, Globe, Link, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import { Modal, ActionButton, Input } from "../ui"; import { useAppStore } from "../../state/store"; diff --git a/src/renderer/components/skills/SkillList.tsx b/src/renderer/components/skills/SkillList.tsx index 95bf1e3c..d9705cf3 100644 --- a/src/renderer/components/skills/SkillList.tsx +++ b/src/renderer/components/skills/SkillList.tsx @@ -7,7 +7,7 @@ import { Globe, Link, PuzzlePiece, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { SkillRecord } from "@shared/types"; import { SkillFileTree, buildTree } from "./SkillFileTree"; diff --git a/src/renderer/components/skills/SkillsSection.tsx b/src/renderer/components/skills/SkillsSection.tsx index 3feb662a..9852509f 100644 --- a/src/renderer/components/skills/SkillsSection.tsx +++ b/src/renderer/components/skills/SkillsSection.tsx @@ -2,7 +2,7 @@ import { useCallback, useEffect, useState } from "react"; import { MagnifyingGlass, Plus, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { AgentRecord } from "@shared/types"; import { useAppStore } from "../../state/store"; import { ActionButton, EmptyState } from "../ui"; diff --git a/src/renderer/components/social/AccountCard.tsx b/src/renderer/components/social/AccountCard.tsx index de78abd6..75e82ea2 100644 --- a/src/renderer/components/social/AccountCard.tsx +++ b/src/renderer/components/social/AccountCard.tsx @@ -1,4 +1,4 @@ -import { ShieldCheck, SignIn, Trash } from "@phosphor-icons/react"; +import { ShieldCheck, SignIn, Trash } from "../ui/icons"; import type { SocialAccountRecord } from "@shared/types"; import { timeAgo } from "../../lib/formatters"; import { platformConfig } from "./social-config"; diff --git a/src/renderer/components/social/ActionHistory.tsx b/src/renderer/components/social/ActionHistory.tsx index 6c4aef88..8053e789 100644 --- a/src/renderer/components/social/ActionHistory.tsx +++ b/src/renderer/components/social/ActionHistory.tsx @@ -2,7 +2,7 @@ import { ArrowSquareOut, ClockCounterClockwise, Robot, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { BrowserActionRecord } from "@shared/types"; import { timeAgo } from "../../lib/formatters"; import { actionTypeLabels } from "./social-config"; diff --git a/src/renderer/components/social/AddAccountDialog.tsx b/src/renderer/components/social/AddAccountDialog.tsx index 1107ba51..2cddff5e 100644 --- a/src/renderer/components/social/AddAccountDialog.tsx +++ b/src/renderer/components/social/AddAccountDialog.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { SignIn } from "@phosphor-icons/react"; +import { SignIn } from "../ui/icons"; import type { SocialPlatform } from "@shared/types"; import { ActionButton, Modal } from "../ui"; import { platformConfig } from "./social-config"; diff --git a/src/renderer/components/social/SocialPanel.tsx b/src/renderer/components/social/SocialPanel.tsx index a61520a3..6f3d02a0 100644 --- a/src/renderer/components/social/SocialPanel.tsx +++ b/src/renderer/components/social/SocialPanel.tsx @@ -1,6 +1,6 @@ import { useCallback, useState } from "react"; import { AnimatePresence } from "framer-motion"; -import { Browser, Megaphone, Plus } from "@phosphor-icons/react"; +import { Browser, Megaphone, Plus } from "../ui/icons"; import type { BrowserActionRecord, SocialAccountRecord, SocialPlatform } from "@shared/types"; import { ActionButton } from "../ui"; import { useT } from "../../i18n"; diff --git a/src/renderer/components/social/social-config.ts b/src/renderer/components/social/social-config.ts index 1becfd55..4419af35 100644 --- a/src/renderer/components/social/social-config.ts +++ b/src/renderer/components/social/social-config.ts @@ -25,7 +25,7 @@ import { Notebook, MusicNote, Lightbulb, -} from "@phosphor-icons/react"; +} from "../ui/icons"; import type { SocialPlatform } from "@shared/types"; export const platformConfig: Record = { diff --git a/src/renderer/components/ui/icons.ts b/src/renderer/components/ui/icons.ts new file mode 100644 index 00000000..ac6e1e98 --- /dev/null +++ b/src/renderer/components/ui/icons.ts @@ -0,0 +1,124 @@ +/** + * Central barrel for all Phosphor icons used across the renderer. + * + * Every renderer component imports icons from this module so that: + * - bundle tree-shaking has a single module boundary to look at, + * - typos like `BriefCase` vs `Briefcase` surface in one place, + * - swapping icon sets later means touching one file. + * + * Keep this list sorted alphabetically. When a new icon is needed, + * add it here first, then import from "@/components/ui/icons" (or the + * relative path from the file). Raw `@phosphor-icons/react` imports + * outside this file should be treated as a regression. + */ +export { + ArrowBendUpLeft, + ArrowClockwise, + ArrowCounterClockwise, + ArrowRight, + ArrowSquareOut, + ArrowsClockwise, + At, + Bell, + BookOpen, + Brain, + Briefcase, + Browser, + Buildings, + CalendarBlank, + Camera, + CaretDown, + CaretRight, + CaretUp, + CaretUpDown, + ChartLine, + ChatCircle, + ChatCircleDots, + ChatTeardrop, + Check, + CheckCircle, + CheckSquare, + Circle, + CircleNotch, + Clock, + ClockCounterClockwise, + Command, + Copy, + Cpu, + CurrencyCircleDollar, + DiscordLogo, + Download, + EnvelopeSimple, + Eye, + FacebookLogo, + FileCode, + FileText, + Fire, + FloppyDisk, + FolderOpen, + FolderSimple, + Funnel, + Gear, + GithubLogo, + Globe, + GlobeHemisphereWest, + GlobeSimple, + HardDrive, + Hash, + Heart, + Heartbeat, + Hourglass, + InstagramLogo, + Kanban, + Key, + Lightbulb, + Lightning, + Link, + LinkedinLogo, + ListChecks, + MagnifyingGlass, + Megaphone, + Minus, + MonitorPlay, + MusicNote, + NotePencil, + Notebook, + PaperPlaneTilt, + Paperclip, + Pause, + Pencil, + PinterestLogo, + Play, + Plugs, + Plus, + PuzzlePiece, + RedditLogo, + Robot, + Rocket, + Rows, + ShieldCheck, + SidebarSimple, + SignIn, + SlidersHorizontal, + Square, + SquaresFour, + Target, + TelegramLogo, + Terminal, + TerminalWindow, + TiktokLogo, + Timer, + Trash, + Tray, + UserCircle, + UserPlus, + UsersThree, + Warning, + WarningCircle, + WhatsappLogo, + XCircle, + XLogo, + YoutubeLogo, +} from "@phosphor-icons/react"; +export { X } from "@phosphor-icons/react"; +export type { Icon } from "@phosphor-icons/react"; diff --git a/src/renderer/hooks/useUIController.ts b/src/renderer/hooks/useUIController.ts index 79b549fb..57318bbe 100644 --- a/src/renderer/hooks/useUIController.ts +++ b/src/renderer/hooks/useUIController.ts @@ -18,7 +18,7 @@ import { ShieldCheck, Megaphone, FolderOpen, -} from "@phosphor-icons/react"; +} from "../components/ui/icons"; import type { AppLocale } from "@shared/locale"; type NavItemDef = { id: SectionId; labelKey: string; icon: typeof SquaresFour }; diff --git a/src/renderer/views/CommandPaletteView.tsx b/src/renderer/views/CommandPaletteView.tsx index 72ade237..fcd893b8 100644 --- a/src/renderer/views/CommandPaletteView.tsx +++ b/src/renderer/views/CommandPaletteView.tsx @@ -6,7 +6,7 @@ import { Target, TerminalWindow, UsersThree, -} from "@phosphor-icons/react"; +} from "../components/ui/icons"; import type { AgentRecord, GoalRecord, ProjectRecord, RunRecord, SectionId, TaskRecord } from "@shared/types"; import { ListFrame, ListRow, StatusPill } from "../components/ui"; diff --git a/src/renderer/views/ConsoleView.tsx b/src/renderer/views/ConsoleView.tsx index 4e883b5b..f5ec1832 100644 --- a/src/renderer/views/ConsoleView.tsx +++ b/src/renderer/views/ConsoleView.tsx @@ -1,6 +1,6 @@ import { useMemo } from "react"; import { AnimatePresence, motion } from "framer-motion"; -import { FolderOpen, TerminalWindow, X } from "@phosphor-icons/react"; +import { FolderOpen, TerminalWindow, X } from "../components/ui/icons"; import type { RunRecord } from "@shared/types"; import { ActionButton, Select, StatusPill } from "../components/ui"; import { formatMoney, formatTime } from "../lib/formatters"; diff --git a/src/renderer/views/SectionContentView.tsx b/src/renderer/views/SectionContentView.tsx index 66cfb6c6..f95ab07e 100644 --- a/src/renderer/views/SectionContentView.tsx +++ b/src/renderer/views/SectionContentView.tsx @@ -1,5 +1,5 @@ import { AnimatePresence, motion } from "framer-motion"; -import { WarningCircle } from "@phosphor-icons/react"; +import { WarningCircle } from "../components/ui/icons"; import type { SectionId } from "@shared/types"; import { ErrorBoundary } from "../components/ui"; import { OrganizationSections } from "./sections/OrganizationSections"; diff --git a/src/renderer/views/SidebarView.tsx b/src/renderer/views/SidebarView.tsx index 8bcb1ebc..5198c277 100644 --- a/src/renderer/views/SidebarView.tsx +++ b/src/renderer/views/SidebarView.tsx @@ -6,7 +6,7 @@ import { Plus, SidebarSimple, Trash, -} from "@phosphor-icons/react"; +} from "../components/ui/icons"; import type { CompanyRecord, ProfileSnapshot, SectionId } from "@shared/types"; import { SectionButton } from "../components/ui"; import { NEW_ENTITY_ID } from "../lib/constants"; diff --git a/src/renderer/views/sections/ExecutionSections.tsx b/src/renderer/views/sections/ExecutionSections.tsx index 1a571398..0f18ddd8 100644 --- a/src/renderer/views/sections/ExecutionSections.tsx +++ b/src/renderer/views/sections/ExecutionSections.tsx @@ -5,7 +5,7 @@ import { Kanban, ListChecks, Target, -} from "@phosphor-icons/react"; +} from "../../components/ui/icons"; import { ConnectorEditor } from "../../components/connectors"; import { KanbanBoard } from "../../components/dashboard"; import { TwoPaneLayout } from "../../components/TwoPaneLayout"; diff --git a/src/renderer/views/sections/OrganizationSections.tsx b/src/renderer/views/sections/OrganizationSections.tsx index 63c7fc7e..f891af87 100644 --- a/src/renderer/views/sections/OrganizationSections.tsx +++ b/src/renderer/views/sections/OrganizationSections.tsx @@ -4,7 +4,7 @@ import { Target, UserPlus, Kanban, -} from "@phosphor-icons/react"; +} from "../../components/ui/icons"; import { AgentCreator, AgentEditor,