fix(web): switch lucide-icons from deep ESM paths to standard re-exports

Deep imports from lucide-react/dist/esm/icons/*.js are internal paths
that broke the Vercel production build. Replaced with standard named
re-exports from lucide-react — keeps the centralized module pattern
without relying on fragile internal paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
jreakin 2026-03-23 09:22:53 -05:00
parent c8cd733815
commit 29795bb86e

View file

@ -1,136 +1,11 @@
/**
* Direct icon imports from lucide-react (bundle-size optimization).
* Avoids loading the full barrel (~1500+ modules). Each icon loads only its own module.
* See Vercel React Best Practices rule 2.1 (Avoid Barrel File Imports).
* Centralized icon re-exports from lucide-react.
*
* All components import icons from this module (@/lib/lucide-icons) rather
* than directly from lucide-react. This provides a single place to manage
* which icons are used and allows future optimization (e.g., tree-shaking
* configuration, icon subset bundling) without touching every component.
*/
// Direct ESM paths so only these icon modules are bundled, not the full barrel
// @ts-ignore — no types for deep ESM path
import AlertCircle from 'lucide-react/dist/esm/icons/alert-circle.js';
// @ts-ignore — no types for deep ESM path
import AlertTriangle from 'lucide-react/dist/esm/icons/alert-triangle.js';
// @ts-ignore — no types for deep ESM path
import ArrowRight from 'lucide-react/dist/esm/icons/arrow-right.js';
// @ts-ignore — no types for deep ESM path
import Brain from 'lucide-react/dist/esm/icons/brain.js';
// @ts-ignore — no types for deep ESM path
import Box from 'lucide-react/dist/esm/icons/box.js';
// @ts-ignore — no types for deep ESM path
import Braces from 'lucide-react/dist/esm/icons/braces.js';
// @ts-ignore — no types for deep ESM path
import Check from 'lucide-react/dist/esm/icons/check.js';
// @ts-ignore — no types for deep ESM path
import ChevronDown from 'lucide-react/dist/esm/icons/chevron-down.js';
// @ts-ignore — no types for deep ESM path
import ChevronRight from 'lucide-react/dist/esm/icons/chevron-right.js';
// @ts-ignore — no types for deep ESM path
import ChevronUp from 'lucide-react/dist/esm/icons/chevron-up.js';
// @ts-ignore — no types for deep ESM path
import Code from 'lucide-react/dist/esm/icons/code.js';
// @ts-ignore — no types for deep ESM path
import Copy from 'lucide-react/dist/esm/icons/copy.js';
// @ts-ignore — no types for deep ESM path
import Eye from 'lucide-react/dist/esm/icons/eye.js';
// @ts-ignore — no types for deep ESM path
import EyeOff from 'lucide-react/dist/esm/icons/eye-off.js';
// @ts-ignore — no types for deep ESM path
import FileArchive from 'lucide-react/dist/esm/icons/file-archive.js';
// @ts-ignore — no types for deep ESM path
import FileCode from 'lucide-react/dist/esm/icons/file-code.js';
// @ts-ignore — no types for deep ESM path
import Filter from 'lucide-react/dist/esm/icons/filter.js';
// @ts-ignore — no types for deep ESM path
import FlaskConical from 'lucide-react/dist/esm/icons/flask-conical.js';
// @ts-ignore — no types for deep ESM path
import Focus from 'lucide-react/dist/esm/icons/focus.js';
// @ts-ignore — no types for deep ESM path
import Folder from 'lucide-react/dist/esm/icons/folder.js';
// @ts-ignore — no types for deep ESM path
import FolderOpen from 'lucide-react/dist/esm/icons/folder-open.js';
// @ts-ignore — no types for deep ESM path
import GitBranch from 'lucide-react/dist/esm/icons/git-branch.js';
// @ts-ignore — no types for deep ESM path
import Github from 'lucide-react/dist/esm/icons/github.js';
// @ts-ignore — no types for deep ESM path
import Globe from 'lucide-react/dist/esm/icons/globe.js';
// @ts-ignore — no types for deep ESM path
import Hash from 'lucide-react/dist/esm/icons/hash.js';
// @ts-ignore — no types for deep ESM path
import Heart from 'lucide-react/dist/esm/icons/heart.js';
// @ts-ignore — no types for deep ESM path
import HelpCircle from 'lucide-react/dist/esm/icons/help-circle.js';
// @ts-ignore — no types for deep ESM path
import Home from 'lucide-react/dist/esm/icons/home.js';
// @ts-ignore — no types for deep ESM path
import Key from 'lucide-react/dist/esm/icons/key.js';
// @ts-ignore — no types for deep ESM path
import Layers from 'lucide-react/dist/esm/icons/layers.js';
// @ts-ignore — no types for deep ESM path
import Lightbulb from 'lucide-react/dist/esm/icons/lightbulb.js';
// @ts-ignore — no types for deep ESM path
import LightbulbOff from 'lucide-react/dist/esm/icons/lightbulb-off.js';
// @ts-ignore — no types for deep ESM path
import Loader2 from 'lucide-react/dist/esm/icons/loader-2.js';
// @ts-ignore — no types for deep ESM path
import Maximize2 from 'lucide-react/dist/esm/icons/maximize-2.js';
// @ts-ignore — no types for deep ESM path
import MousePointerClick from 'lucide-react/dist/esm/icons/mouse-pointer-click.js';
// @ts-ignore — no types for deep ESM path
import PanelLeft from 'lucide-react/dist/esm/icons/panel-left.js';
// @ts-ignore — no types for deep ESM path
import PanelLeftClose from 'lucide-react/dist/esm/icons/panel-left-close.js';
// @ts-ignore — no types for deep ESM path
import PanelRightClose from 'lucide-react/dist/esm/icons/panel-right-close.js';
// @ts-ignore — no types for deep ESM path
import Pause from 'lucide-react/dist/esm/icons/pause.js';
// @ts-ignore — no types for deep ESM path
import Play from 'lucide-react/dist/esm/icons/play.js';
// @ts-ignore — no types for deep ESM path
import RefreshCw from 'lucide-react/dist/esm/icons/refresh-cw.js';
// @ts-ignore — no types for deep ESM path
import Rocket from 'lucide-react/dist/esm/icons/rocket.js';
// @ts-ignore — no types for deep ESM path
import RotateCcw from 'lucide-react/dist/esm/icons/rotate-ccw.js';
// @ts-ignore — no types for deep ESM path
import Search from 'lucide-react/dist/esm/icons/search.js';
// @ts-ignore — no types for deep ESM path
import Send from 'lucide-react/dist/esm/icons/send.js';
// @ts-ignore — no types for deep ESM path
import Server from 'lucide-react/dist/esm/icons/server.js';
// @ts-ignore — no types for deep ESM path
import Settings from 'lucide-react/dist/esm/icons/settings.js';
// @ts-ignore — no types for deep ESM path
import SkipForward from 'lucide-react/dist/esm/icons/skip-forward.js';
// @ts-ignore — no types for deep ESM path
import Snail from 'lucide-react/dist/esm/icons/snail.js';
// @ts-ignore — no types for deep ESM path
import Sparkles from 'lucide-react/dist/esm/icons/sparkles.js';
// @ts-ignore — no types for deep ESM path
import Square from 'lucide-react/dist/esm/icons/square.js';
// @ts-ignore — no types for deep ESM path
import Star from 'lucide-react/dist/esm/icons/star.js';
// @ts-ignore — no types for deep ESM path
import Table from 'lucide-react/dist/esm/icons/table.js';
// @ts-ignore — no types for deep ESM path
import Target from 'lucide-react/dist/esm/icons/target.js';
// @ts-ignore — no types for deep ESM path
import Terminal from 'lucide-react/dist/esm/icons/terminal.js';
// @ts-ignore — no types for deep ESM path
import Trash2 from 'lucide-react/dist/esm/icons/trash-2.js';
// @ts-ignore — no types for deep ESM path
import Upload from 'lucide-react/dist/esm/icons/upload.js';
// @ts-ignore — no types for deep ESM path
import User from 'lucide-react/dist/esm/icons/user.js';
// @ts-ignore — no types for deep ESM path
import Variable from 'lucide-react/dist/esm/icons/variable.js';
// @ts-ignore — no types for deep ESM path
import X from 'lucide-react/dist/esm/icons/x.js';
// @ts-ignore — no types for deep ESM path
import Zap from 'lucide-react/dist/esm/icons/zap.js';
// @ts-ignore — no types for deep ESM path
import ZoomIn from 'lucide-react/dist/esm/icons/zoom-in.js';
// @ts-ignore — no types for deep ESM path
import ZoomOut from 'lucide-react/dist/esm/icons/zoom-out.js';
export {
AlertCircle,
AlertTriangle,
@ -195,4 +70,4 @@ export {
Zap,
ZoomIn,
ZoomOut,
};
} from 'lucide-react';