Skip to content

Commit 58c82ef

Browse files
Merge pull request #118 from corbitsdev/cl-icons-phosphor
Replace lucide-react with Phosphor (bold), ban Sparkle
2 parents 58e47dd + ab1337a commit 58c82ef

66 files changed

Lines changed: 701 additions & 285 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/web/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,20 @@
3131
"@corbits/plugins-ui": "workspace:*",
3232
"@corbits/preferences": "workspace:*",
3333
"@corbits/presence": "workspace:*",
34+
"@corbits/react-ui": "github:corbitsdev/react-ui#82f454605630fc2c73c9fc7488d29a5cdf852e9d",
3435
"@corbits/routines": "workspace:*",
35-
"@corbits/workflow-catalog": "workspace:*",
3636
"@corbits/settings-ui": "workspace:*",
3737
"@corbits/shell-layout": "workspace:*",
3838
"@corbits/tasks-ui": "workspace:*",
39-
"@corbits/react-ui": "github:corbitsdev/react-ui#82f454605630fc2c73c9fc7488d29a5cdf852e9d",
39+
"@corbits/workflow-catalog": "workspace:*",
40+
"@corbits/icons": "workspace:*",
4041
"@intx/types": "workspace:*",
41-
"@workbench/connections": "workspace:*",
42-
"@workbench/hub-client": "workspace:*",
4342
"@radix-ui/react-dialog": "^1.1.15",
4443
"@radix-ui/react-slot": "^1.2.3",
4544
"@tanstack/react-query": "catalog:",
45+
"@workbench/connections": "workspace:*",
46+
"@workbench/hub-client": "workspace:*",
4647
"arktype": "catalog:",
47-
"lucide-react": "^1.27.0",
4848
"react": "^19.2.0",
4949
"react-dom": "^19.2.0",
5050
"yjs": "^13.6.32"

apps/web/src/app.tsx

Lines changed: 53 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { BootScreen, Button, CorbitsMark, EmptyState } from "@corbits/react-ui";
77
import { QueryClientProvider } from "@tanstack/react-query";
8-
import { CircleAlert } from "lucide-react";
8+
import { BoldIconProvider, WarningCircle } from "@corbits/icons";
99
import { useEffect, useMemo } from "react";
1010

1111
import { AuthScreen } from "./auth-screen";
@@ -160,56 +160,60 @@ export function App({
160160
readonly provisioningErrorRefId?: string | undefined;
161161
readonly onRetryProvisioning?: () => void;
162162
}) {
163-
if (session.kind === "signed-in" && provisioningError) {
164-
return (
165-
<ProvisioningErrorPage
166-
message={provisioningError}
167-
refId={provisioningErrorRefId}
168-
onRetry={onRetryProvisioning ?? onRetry}
169-
/>
170-
);
171-
}
172-
switch (session.kind) {
173-
case "loading":
174-
return (
175-
<div className="app-boot-frame">
176-
<BootScreen message="Loading workbench" brand={<Brand />} />
177-
</div>
178-
);
179-
case "signed-out":
180-
if (path !== LOGIN_PATH) {
181-
return <LoginRedirect path={path} navigate={navigate} />;
182-
}
183-
return <AuthScreen onSignedIn={onSignedIn} />;
184-
case "error":
185-
return (
186-
<div className="app-boot-frame">
187-
<EmptyState
188-
icon={<CircleAlert />}
189-
title="Connection lost"
190-
description={session.message}
191-
action={
192-
<Button variant="outline" onClick={onRetry}>
193-
Try again
194-
</Button>
195-
}
196-
/>
197-
</div>
198-
);
199-
case "signed-in":
200-
if (path === LOGIN_PATH) {
201-
return <LoginBounceHome navigate={navigate} />;
202-
}
203-
if (path === ONBOARDING_PATH) {
204-
return <OnboardingGate navigate={navigate} user={session.user} />;
205-
}
163+
return <BoldIconProvider>{renderApp()}</BoldIconProvider>;
164+
165+
function renderApp() {
166+
if (session.kind === "signed-in" && provisioningError) {
206167
return (
207-
<Shell
208-
path={path}
209-
navigate={navigate}
210-
user={session.user}
211-
onSignOut={onSignOut}
168+
<ProvisioningErrorPage
169+
message={provisioningError}
170+
refId={provisioningErrorRefId}
171+
onRetry={onRetryProvisioning ?? onRetry}
212172
/>
213173
);
174+
}
175+
switch (session.kind) {
176+
case "loading":
177+
return (
178+
<div className="app-boot-frame">
179+
<BootScreen message="Loading workbench" brand={<Brand />} />
180+
</div>
181+
);
182+
case "signed-out":
183+
if (path !== LOGIN_PATH) {
184+
return <LoginRedirect path={path} navigate={navigate} />;
185+
}
186+
return <AuthScreen onSignedIn={onSignedIn} />;
187+
case "error":
188+
return (
189+
<div className="app-boot-frame">
190+
<EmptyState
191+
icon={<WarningCircle />}
192+
title="Connection lost"
193+
description={session.message}
194+
action={
195+
<Button variant="outline" onClick={onRetry}>
196+
Try again
197+
</Button>
198+
}
199+
/>
200+
</div>
201+
);
202+
case "signed-in":
203+
if (path === LOGIN_PATH) {
204+
return <LoginBounceHome navigate={navigate} />;
205+
}
206+
if (path === ONBOARDING_PATH) {
207+
return <OnboardingGate navigate={navigate} user={session.user} />;
208+
}
209+
return (
210+
<Shell
211+
path={path}
212+
navigate={navigate}
213+
user={session.user}
214+
onSignOut={onSignOut}
215+
/>
216+
);
217+
}
214218
}
215219
}

apps/web/src/pages/agents-page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
TableRow,
2323
} from "@corbits/react-ui";
2424
import type { BadgeTone } from "@corbits/react-ui";
25-
import { Bot } from "lucide-react";
25+
import { Robot } from "@corbits/icons";
2626
import { useEffect, useState } from "react";
2727
import { useQueryClient } from "@tanstack/react-query";
2828

@@ -186,7 +186,7 @@ export function AgentsPage({
186186
onClick={() => onCreateOpenChange(true)}
187187
aria-label="Create an agent"
188188
>
189-
<Bot /> Create
189+
<Robot /> Create
190190
</Button>
191191
) : null
192192
}
@@ -196,7 +196,7 @@ export function AgentsPage({
196196
<PageShell width="full" className="page-fill">
197197
{definitions.length === 0 ? (
198198
<RichEmptyState
199-
icon={<Bot />}
199+
icon={<Robot />}
200200
title="No agents yet"
201201
description="Create an agent — a name, a system prompt, and optionally a model — and it appears here and in the sidebar, ready to start a workbench."
202202
/>
@@ -291,7 +291,7 @@ export function AgentsRoute({
291291
<StageTopBar title="Agents" />
292292
<PageShell width="full" className="page-fill">
293293
<RichEmptyState
294-
icon={<Bot />}
294+
icon={<Robot />}
295295
title="Select a workbench"
296296
description="Pick a workbench from the switcher to see the agents it can start."
297297
/>

apps/web/src/pages/home-page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// `/w/:workbenchId`. Deep links to other pages are unchanged.
1010

1111
import { BootScreen, Button, EmptyState, PageShell } from "@corbits/react-ui";
12-
import { CircleAlert } from "lucide-react";
12+
import { WarningCircle } from "@corbits/icons";
1313
import { useEffect, useState } from "react";
1414

1515
import { listAllWorkbenches } from "@corbits/chat-ui";
@@ -79,7 +79,7 @@ export function HomeRoute() {
7979
return (
8080
<PageShell width="full" className="page-fill">
8181
<EmptyState
82-
icon={<CircleAlert />}
82+
icon={<WarningCircle />}
8383
title="Couldn't load your workbenches"
8484
description={memberships.message}
8585
action={
@@ -96,7 +96,7 @@ export function HomeRoute() {
9696
return (
9797
<PageShell width="full" className="page-fill">
9898
<EmptyState
99-
icon={<CircleAlert />}
99+
icon={<WarningCircle />}
100100
title="No workbench selected"
101101
description="Pick a workbench from the switcher, then Myra will open here."
102102
/>
@@ -108,7 +108,7 @@ export function HomeRoute() {
108108
return (
109109
<PageShell width="full" className="page-fill">
110110
<EmptyState
111-
icon={<CircleAlert />}
111+
icon={<WarningCircle />}
112112
title="Couldn't open Myra"
113113
description={state.message}
114114
action={

apps/web/src/pages/insights-page.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
TraceWaterfall,
2525
type TraceSpan,
2626
} from "@corbits/react-ui";
27-
import { ChartColumn } from "lucide-react";
27+
import { ChartBar } from "@corbits/icons";
2828
import type * as React from "react";
2929
import { useEffect, useMemo, useState } from "react";
3030

@@ -827,7 +827,7 @@ export function InsightsRunsHistory({
827827
<Skeleton className="h-40 w-full" />
828828
) : groups.length === 0 ? (
829829
<RichEmptyState
830-
icon={<ChartColumn />}
830+
icon={<ChartBar />}
831831
title="No purpose runs yet"
832832
description="When a routine or purpose workflow fires, it shows up here."
833833
/>
@@ -1333,7 +1333,7 @@ export function InsightsPage({
13331333
<StageTopBar title="Insights" />
13341334
<PageShell width="full" className="page-fill">
13351335
<RichEmptyState
1336-
icon={<ChartColumn />}
1336+
icon={<ChartBar />}
13371337
title="Couldn't load insights"
13381338
description={usageError}
13391339
/>
@@ -1485,7 +1485,7 @@ function InsightsWorkbenchPage({
14851485
<StageTopBar title="Insights" />
14861486
<PageShell width="full" className="page-fill">
14871487
<RichEmptyState
1488-
icon={<ChartColumn />}
1488+
icon={<ChartBar />}
14891489
title="Workbench not found"
14901490
description="This conversation may have been deleted, or you may not have access to it."
14911491
/>
@@ -1499,7 +1499,7 @@ function InsightsWorkbenchPage({
14991499
<StageTopBar title="Insights" />
15001500
<PageShell width="full" className="page-fill">
15011501
<RichEmptyState
1502-
icon={<ChartColumn />}
1502+
icon={<ChartBar />}
15031503
title="No insights for this conversation yet"
15041504
description="This conversation predates per-workbench insights."
15051505
/>

apps/web/src/pages/library-page.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
} from "@corbits/artifact-ui";
3434
import type { ArtifactSort, ArtifactSummary } from "@corbits/artifact-ui";
3535
import { useQueryClient } from "@tanstack/react-query";
36-
import { ArrowDownUp, ExternalLink, FileStack, X } from "lucide-react";
36+
import { ArrowsDownUp, ArrowSquareOut, Stack, X } from "@corbits/icons";
3737
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3838
import {
3939
describeApiError,
@@ -183,7 +183,7 @@ function PreviewPane({
183183
{previewSrc !== undefined ? (
184184
<Button variant="ghost" size="sm" asChild>
185185
<a href={previewSrc} target="_blank" rel="noreferrer">
186-
<ExternalLink aria-hidden="true" />
186+
<ArrowSquareOut aria-hidden="true" />
187187
Open in new tab
188188
</a>
189189
</Button>
@@ -357,7 +357,7 @@ export function LibraryPage({
357357
aria-label={SORT_LABEL[sort]}
358358
title={SORT_LABEL[sort]}
359359
>
360-
<ArrowDownUp />
360+
<ArrowsDownUp />
361361
</Button>
362362
</MenuTrigger>
363363
<MenuContent align="end">
@@ -380,13 +380,13 @@ export function LibraryPage({
380380
<PageShell width="full" className="page-fill">
381381
{artifacts.length === 0 ? (
382382
<RichEmptyState
383-
icon={<FileStack />}
383+
icon={<Stack />}
384384
title="No artifacts yet"
385385
description="Upload a file or wait for agents and workflows to produce artifacts — they land here as soon as they exist."
386386
/>
387387
) : visible.length === 0 ? (
388388
<RichEmptyState
389-
icon={<FileStack />}
389+
icon={<Stack />}
390390
title="Nothing matches"
391391
description={`No artifact matches "${activeQuery}".`}
392392
/>
@@ -485,7 +485,7 @@ export function LibraryRoute({ path }: { readonly path: string }) {
485485
<StageTopBar title="Files" />
486486
<PageShell width="full" className="page-fill">
487487
<RichEmptyState
488-
icon={<FileStack />}
488+
icon={<Stack />}
489489
title="Select a workbench"
490490
description="Pick a workbench from the switcher to browse the artifacts it owns."
491491
/>
@@ -500,7 +500,7 @@ export function LibraryRoute({ path }: { readonly path: string }) {
500500
<StageTopBar title="Files" />
501501
<PageShell width="full" className="page-fill">
502502
<RichEmptyState
503-
icon={<FileStack />}
503+
icon={<Stack />}
504504
title="Files not configured"
505505
description="Files isn't set up yet. Ask your workbench admin to finish setup."
506506
/>
@@ -520,7 +520,7 @@ export function LibraryRoute({ path }: { readonly path: string }) {
520520
<SignedOutNotice />
521521
) : (
522522
<RichEmptyState
523-
icon={<FileStack />}
523+
icon={<Stack />}
524524
title="Couldn't load artifacts"
525525
description={describeApiError(
526526
{ status: page.status },

apps/web/src/pages/new-workbench-picker.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// next slice).
1010

1111
import { Button, toast } from "@corbits/react-ui";
12-
import { GitPullRequest, MessageSquare, Plus } from "lucide-react";
12+
import { ChatCircle, GitPullRequest, Plus } from "@corbits/icons";
1313
import { useState } from "react";
1414

1515
import { useBench } from "../bench-context";
@@ -24,7 +24,7 @@ import {
2424

2525
const ROW_ICON: Record<WorkbenchTemplateId, typeof GitPullRequest> = {
2626
"code-review": GitPullRequest,
27-
blank: MessageSquare,
27+
blank: ChatCircle,
2828
};
2929

3030
function ctaLabel(selected: boolean): string {

apps/web/src/pages/not-found-page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Button, EmptyState, PageShell } from "@corbits/react-ui";
2-
import { Compass } from "lucide-react";
2+
import { Compass } from "@corbits/icons";
33

44
import { Link } from "../navigation";
55

apps/web/src/pages/onboarding-page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
// a third step.
2929

3030
import { Button, EmptyState, Input, ProviderMark } from "@corbits/react-ui";
31-
import { CircleAlert, KeyRound } from "lucide-react";
31+
import { Key, WarningCircle } from "@corbits/icons";
3232
import { useCallback, useEffect, useState } from "react";
3333
import type { FormEvent } from "react";
3434
import { OLLAMA_PLACEHOLDER_SECRET } from "@workbench/hub-client/credential-test";
@@ -397,7 +397,7 @@ export function OnboardingPage({ user }: { readonly user: SessionUser }) {
397397
<h1 className="onboarding-title">Couldn't set up your workbench</h1>
398398
<div className="onboarding-content">
399399
<EmptyState
400-
icon={<CircleAlert />}
400+
icon={<WarningCircle />}
401401
title="Couldn't set up your workbench"
402402
description={
403403
state.refId === undefined ? (
@@ -552,7 +552,7 @@ export function OnboardingPage({ user }: { readonly user: SessionUser }) {
552552
)}
553553
{error !== null && (
554554
<EmptyState
555-
icon={<KeyRound />}
555+
icon={<Key />}
556556
title="That key didn't work"
557557
description={
558558
errorRefId === undefined ? (

0 commit comments

Comments
 (0)