chore: replace Unicode/emoji icons with Lucide React
All checks were successful
CI / cleanup-branch (push) Has been skipped
CI / build (push) Successful in 1m14s
CI / docker (push) Successful in 1m11s
CI / deploy-feature (push) Has been skipped
CI / deploy (push) Successful in 37s

Adds lucide-react and replaces all HTML entity and emoji icons across
the UI with proper SVG icon components. Tree-shaken — only imported
icons are bundled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-27 23:16:39 +01:00
parent e9b1c94d1a
commit 41111b082c
10 changed files with 57 additions and 52 deletions

View File

@@ -1,4 +1,6 @@
import { useCallback, useRef, useState } from 'react';
import { Search, Footprints, Droplets, Ellipsis } from 'lucide-react';
import type { LucideIcon } from 'lucide-react';
import type { NodeAction } from './types';
import styles from './ProcessDiagram.module.css';
@@ -14,11 +16,11 @@ interface NodeToolbarProps {
onMouseLeave: () => void;
}
const ACTIONS: { icon: string; action: NodeAction; title: string }[] = [
{ icon: '\uD83D\uDD0D', action: 'inspect', title: 'Inspect' },
{ icon: '\uD83D\uDC63', action: 'toggle-trace', title: 'Toggle tracing' },
{ icon: '\uD83D\uDEB0', action: 'configure-tap', title: 'Configure tap' },
{ icon: '\u22EF', action: 'copy-id', title: 'Copy ID' },
const ACTIONS: { Icon: LucideIcon; action: NodeAction; title: string }[] = [
{ Icon: Search, action: 'inspect', title: 'Inspect' },
{ Icon: Footprints, action: 'toggle-trace', title: 'Toggle tracing' },
{ Icon: Droplets, action: 'configure-tap', title: 'Configure tap' },
{ Icon: Ellipsis, action: 'copy-id', title: 'Copy ID' },
];
export function NodeToolbar({
@@ -41,7 +43,7 @@ export function NodeToolbar({
onAction(nodeId, a.action);
}}
>
{a.icon}
<a.Icon size={14} />
</button>
))}
</div>