From e82df588a7256265ea8af21f39a4d19ff879b38c Mon Sep 17 00:00:00 2001 From: YaelAnaya Date: Mon, 24 Aug 2026 19:33:21 -0700 Subject: [PATCH 1/5] chore(frontend): lucide-react is the icon dependency again Swaps the declared icon library back: `lucide-react` in, `@tabler/icons-react` out, in both manifests and the lockfile. The lockfile is resolved from the manifests and a frozen install runs from an empty tree, so the two agree rather than being asserted to. Tabler goes out in the same change rather than being left declared. Nothing imports it once the sources move, and an icon library nobody draws from is the dependency the previous cleanup removed for exactly this reason. --- frontend/app/package.json | 2 +- frontend/ui-core/package.json | 2 +- pnpm-lock.yaml | 36 +++++++++++++++-------------------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/frontend/app/package.json b/frontend/app/package.json index cdfa9a2b..273dd79f 100644 --- a/frontend/app/package.json +++ b/frontend/app/package.json @@ -17,9 +17,9 @@ "cycle": "playwright test -c playwright.cycle.config.ts" }, "dependencies": { - "@tabler/icons-react": "^3.46.0", "@visionset/annotator": "workspace:*", "@visionset/ui-core": "workspace:*", + "lucide-react": "^1.32.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router": "^8.3.0" diff --git a/frontend/ui-core/package.json b/frontend/ui-core/package.json index 53e67df0..1a2320fc 100644 --- a/frontend/ui-core/package.json +++ b/frontend/ui-core/package.json @@ -53,12 +53,12 @@ "@radix-ui/react-slot": "^1.3.3", "@radix-ui/react-tabs": "^1.1.21", "@radix-ui/react-tooltip": "^1.2.16", - "@tabler/icons-react": "^3.46.0", "@tanstack/react-query": "^5.101.4", "@tanstack/react-virtual": "^3.14.9", "@visionset/annotator": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "lucide-react": "^1.32.0", "openapi-fetch": "^0.17.0", "shadcn": "^4.18.0", "sonner": "^2.0.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0190b8da..ec3962b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,15 +50,15 @@ importers: frontend/app: dependencies: - '@tabler/icons-react': - specifier: ^3.46.0 - version: 3.46.0(react@19.2.8) '@visionset/annotator': specifier: workspace:* version: link:../annotator '@visionset/ui-core': specifier: workspace:* version: link:../ui-core + lucide-react: + specifier: ^1.32.0 + version: 1.33.0(react@19.2.8) react: specifier: ^19.0.0 version: 19.2.8 @@ -153,9 +153,6 @@ importers: '@radix-ui/react-tooltip': specifier: ^1.2.16 version: 1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@tabler/icons-react': - specifier: ^3.46.0 - version: 3.46.0(react@19.2.8) '@tanstack/react-query': specifier: ^5.101.4 version: 5.101.4(react@19.2.8) @@ -171,6 +168,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + lucide-react: + specifier: ^1.32.0 + version: 1.33.0(react@19.2.8) openapi-fetch: specifier: ^0.17.0 version: 0.17.0 @@ -1208,14 +1208,6 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@tabler/icons-react@3.46.0': - resolution: {integrity: sha512-CCm7xJWhDT2PH4ZIFkP6AgYKtVhq0gpYkjUN+GVh1AzmIQaa77OW0bQPBPQiTE0PsXMR9oSxFqA3qBglzPyrVQ==} - peerDependencies: - react: '>= 16' - - '@tabler/icons@3.46.0': - resolution: {integrity: sha512-f2RYFl3fzPwj5WO82x6en0dmkjefxEfOm16D1ByM6cj/McNiwOkL4VaPUoP9VVIrXAD9WnTSVFr70px703b//A==} - '@tailwindcss/node@4.3.3': resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==} @@ -2505,6 +2497,11 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@1.33.0: + resolution: {integrity: sha512-MTRwMy0ZlL8Ur/vOAiJ9XGHE+kFPC7brq6MxAm0GiGXEBj0qy0jA/pG4N675oSzciO/UCdX8T+5yUQdmDeTLxg==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -4296,13 +4293,6 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@tabler/icons-react@3.46.0(react@19.2.8)': - dependencies: - '@tabler/icons': 3.46.0 - react: 19.2.8 - - '@tabler/icons@3.46.0': {} - '@tailwindcss/node@4.3.3': dependencies: '@jridgewell/remapping': 2.3.5 @@ -5522,6 +5512,10 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-react@1.33.0(react@19.2.8): + dependencies: + react: 19.2.8 + lz-string@1.5.0: {} magic-string@0.30.21: From 73df31581d50c5696e709f4bdfa260fc29acd9fe Mon Sep 17 00:00:00 2001 From: YaelAnaya Date: Mon, 24 Aug 2026 19:33:22 -0700 Subject: [PATCH 2/5] refactor(ui-core): the frontend draws lucide across all 39 modules One hundred and ninety-six references over thirty-nine files - the primitives, the screens, the patterns, the annotation workspace, the shell and the styleguide - move from `@tabler/icons-react` back to `lucide-react`. All seventy-two distinct glyphs were resolved against the installed package before anything was rewritten, and every one has an equivalent. The rewrite is keyed on the mapped names rather than on an `Icon*` prefix, which matters in one place: the demo's tool strip has a local component called `IconButton`, and a prefix rewrite would have renamed a component that belongs to neither library. `ProjectNav` needed a second edit the mapping could not carry. It imports the icon *component type*, and the two libraries spell it differently - Tabler's `Icon` against lucide's `LucideIcon` - so the name moved with the import while the local `icon: Icon` destructuring, which is a value and not the type, stayed as it was. The geometry glyphs return to the spelling they had before: `Spline` for the polygon and `Waypoints` for the lane. `GeometryIcon`'s own note argues that pairing and is coherent again as written. --- frontend/app/src/shell/AppShell.tsx | 21 +++---- frontend/app/src/shell/NotFound.tsx | 4 +- frontend/app/src/styleguide/Styleguide.tsx | 12 ++-- .../ui-core/src/annotator/AddClassDialog.tsx | 6 +- .../ui-core/src/annotator/AnnotationPage.tsx | 62 +++++++------------ .../ui-core/src/annotator/AnnotatorPanel.tsx | 14 ++--- frontend/ui-core/src/annotator/AssetImage.tsx | 4 +- .../ui-core/src/annotator/CanvasReassign.tsx | 4 +- .../ui-core/src/annotator/ClassRegion.tsx | 6 +- .../ui-core/src/annotator/GeometryIcon.tsx | 12 ++-- .../ui-core/src/annotator/ReassignMenu.tsx | 4 +- .../ui-core/src/annotator/SuggestPanel.tsx | 30 ++++----- .../ui-core/src/annotator/ToolPalette.tsx | 21 +++---- frontend/ui-core/src/annotator/ZoomWidget.tsx | 10 +-- frontend/ui-core/src/data/TokenGate.tsx | 4 +- frontend/ui-core/src/patterns/AsyncStates.tsx | 6 +- frontend/ui-core/src/patterns/BackLink.tsx | 4 +- frontend/ui-core/src/patterns/ClassFields.tsx | 6 +- frontend/ui-core/src/patterns/ProjectNav.tsx | 37 ++++------- .../ui-core/src/patterns/projectNav.test.tsx | 8 ++- frontend/ui-core/src/primitives/Dialog.tsx | 4 +- frontend/ui-core/src/primitives/Select.tsx | 10 +-- .../ui-core/src/screens/AssetThumbnail.tsx | 6 +- .../ui-core/src/screens/BatchLifecycle.tsx | 6 +- .../ui-core/src/screens/BatchesScreen.tsx | 8 +-- .../ui-core/src/screens/CorrectionBatch.tsx | 6 +- .../src/screens/DatasetAssetDialog.tsx | 16 ++--- .../ui-core/src/screens/DatasetScreen.tsx | 28 +++------ frontend/ui-core/src/screens/DeleteBatch.tsx | 6 +- .../ui-core/src/screens/GalleryScreen.tsx | 33 ++++------ frontend/ui-core/src/screens/HomeScreen.tsx | 46 +++++--------- frontend/ui-core/src/screens/IngestScreen.tsx | 43 +++++-------- frontend/ui-core/src/screens/ModelsScreen.tsx | 39 ++++-------- .../ui-core/src/screens/OverviewPanel.tsx | 12 ++-- .../ui-core/src/screens/PreLabelDialog.tsx | 4 +- .../src/screens/ProjectPreLabelDialog.tsx | 4 +- .../ui-core/src/screens/ProjectScreen.tsx | 8 +-- .../ui-core/src/screens/ProjectsScreen.tsx | 8 +-- .../ui-core/src/screens/PromoteButton.tsx | 6 +- frontend/ui-core/src/screens/SchemaEditor.tsx | 6 +- 40 files changed, 237 insertions(+), 337 deletions(-) diff --git a/frontend/app/src/shell/AppShell.tsx b/frontend/app/src/shell/AppShell.tsx index e0734198..17712eb5 100644 --- a/frontend/app/src/shell/AppShell.tsx +++ b/frontend/app/src/shell/AppShell.tsx @@ -82,14 +82,7 @@ * right level for it. */ -import { - IconCpu, - IconFolders, - IconHome, - IconLayoutSidebarLeftCollapse, - IconLayoutSidebarLeftExpand, - IconLogout, -} from "@tabler/icons-react"; +import { Cpu, Folders, House, LogOut, PanelLeftClose, PanelLeftOpen } from "lucide-react"; import { Button, buttonVariants, @@ -145,21 +138,21 @@ export function AppShell(): JSX.Element { onClick={toggle} > {collapsed ? ( -