react-dev-panel 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1299 -821
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -6
- package/dist/index.d.ts +4 -6
- package/dist/index.js +1281 -822
- package/dist/index.js.map +1 -1
- package/package.json +11 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/styles.ts","../src/core/registry.ts","../src/core/icons.tsx","../src/tools/dev-logs/store.ts","../src/tools/dev-logs/index.tsx","../src/tools/page-performance/index.tsx","../src/core/config.tsx","../src/tools/component-graph/Search.tsx","../src/tools/component-graph/NodeDetails.tsx","../src/tools/component-graph/graph-utils.ts","../src/tools/component-graph/Tree.tsx","../src/tools/component-graph/PageList.tsx","../src/tools/component-graph/store.ts","../src/tools/component-graph/Panel.tsx","../src/tools/component-graph/Overlay.tsx","../src/tools/component-graph/index.tsx","../src/core/Launcher.tsx","../src/core/DevPanel.tsx","../src/core/server-open.ts","../src/index.ts"],"names":["jsx","jsxs","useSyncExternalStore","useState","listeners","emit","installed","onLCP","onCLS","onINP","onFCP","onTTFB","EMPTY","createContext","useMemo","useContext","Fragment","useCallback","useEffect","state","useRef","tools"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Self-contained styling for react-dev-panel — zero CSS-in-JS dependency, zero design-system\n * coupling. A single `<style>` tag (prefixed `.rdp-*`, scoped under `.rdp-root`) is injected\n * once; components use class names + inline styles. CSS variables hold the dark \"premium\" theme\n * and can be overridden per-instance via the root element's inline style.\n */\n\nexport const RDP_STYLE_ID = 'react-dev-panel-styles';\n\n/** Above virtually everything (MUI modal is 1300; this clears app stacking contexts). */\nexport const RDP_Z = 2147483000;\n\nconst CSS = `\n.rdp-root, .rdp-root * { box-sizing: border-box; }\n.rdp-root {\n --rdp-bg: #11161d;\n --rdp-bg-elev: #1a212b;\n --rdp-bg-soft: rgba(148,163,184,0.06);\n --rdp-border: rgba(255,255,255,0.09);\n --rdp-text: #e6e9ee;\n --rdp-text-dim: #9aa4b2;\n --rdp-text-faint: #6b7585;\n --rdp-accent: #6950E8;\n --rdp-accent-contrast: #ffffff;\n --rdp-success: #3ddc84;\n --rdp-warning: #e0a82e;\n --rdp-error: #e5575c;\n --rdp-info: #56a6e8;\n --rdp-radius: 10px;\n --rdp-shadow: 0 8px 28px rgba(0,0,0,0.5);\n --rdp-mono: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;\n --rdp-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n color: var(--rdp-text);\n font-family: var(--rdp-sans);\n font-size: 13px;\n line-height: 1.4;\n}\n\n/* Launcher FAB */\n.rdp-fab {\n position: fixed; width: 52px; height: 52px; border-radius: 50%;\n display: grid; place-items: center; cursor: grab; border: none;\n color: var(--rdp-accent-contrast);\n background: linear-gradient(135deg, var(--rdp-accent), #4a36b8);\n box-shadow: 0 4px 12px rgba(105,80,232,0.35), 0 8px 24px rgba(0,0,0,0.5);\n z-index: ${RDP_Z};\n}\n.rdp-fab:active { cursor: grabbing; }\n.rdp-fab-badge {\n position: absolute; bottom: -3px; right: -3px; min-width: 18px; height: 18px;\n padding: 0 5px; border-radius: 999px; background: var(--rdp-error); color: #fff;\n font-size: 10px; font-weight: 700; display: grid; place-items: center;\n border: 2px solid var(--rdp-bg);\n}\n\n/* Floating surfaces */\n.rdp-surface {\n position: fixed; background: var(--rdp-bg); border: 1px solid var(--rdp-border);\n border-radius: var(--rdp-radius); box-shadow: var(--rdp-shadow); overflow: hidden;\n display: flex; flex-direction: column; z-index: ${RDP_Z};\n}\n.rdp-menu { width: 320px; }\n.rdp-panel { width: min(460px, calc(100vw - 32px)); max-height: min(78vh, 720px); }\n\n.rdp-header {\n display: flex; align-items: center; gap: 10px; padding: 10px 14px;\n border-bottom: 1px solid var(--rdp-border); flex-shrink: 0;\n}\n.rdp-menu-head {\n background: linear-gradient(135deg, rgba(105,80,232,0.18), rgba(105,80,232,0.04));\n}\n.rdp-title { font-weight: 700; font-size: 13px; }\n.rdp-sub { color: var(--rdp-text-dim); font-size: 12px; }\n.rdp-body { flex: 1; overflow-y: auto; padding: 12px; }\n\n/* Menu rows */\n.rdp-row {\n display: flex; align-items: flex-start; gap: 12px; padding: 10px 12px;\n border-radius: 8px; cursor: pointer; width: 100%; text-align: left; border: none;\n background: transparent; color: inherit; font: inherit;\n}\n.rdp-row:hover { background: rgba(255,255,255,0.05); }\n.rdp-tile {\n width: 38px; height: 38px; flex-shrink: 0; border-radius: 9px;\n display: grid; place-items: center;\n}\n\n/* Primitives */\n.rdp-chip {\n display: inline-flex; align-items: center; height: 18px; padding: 0 7px;\n border-radius: 999px; font-size: 11px; font-weight: 700; line-height: 1;\n}\n.rdp-btn {\n display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px;\n border-radius: 8px; border: 1px solid var(--rdp-border); background: transparent;\n color: var(--rdp-text); font: inherit; font-size: 12px; cursor: pointer;\n}\n.rdp-btn:hover { background: rgba(255,255,255,0.05); }\n.rdp-btn-primary {\n background: var(--rdp-accent); color: var(--rdp-accent-contrast); border-color: transparent;\n font-weight: 600; justify-content: center; width: 100%;\n}\n.rdp-btn-primary:hover { filter: brightness(1.08); }\n.rdp-btn-sm { padding: 2px 7px; font-size: 11px; border-radius: 6px; }\n.rdp-iconbtn {\n display: grid; place-items: center; width: 28px; height: 28px; border-radius: 7px;\n border: 1px solid var(--rdp-border); background: transparent; color: var(--rdp-text);\n cursor: pointer;\n}\n.rdp-iconbtn:hover { background: rgba(255,255,255,0.06); }\n.rdp-iconbtn-bare { border: none; width: 22px; height: 22px; color: var(--rdp-text-dim); }\n.rdp-iconbtn-bare:hover { color: var(--rdp-text); background: rgba(255,255,255,0.06); }\n\n.rdp-tabs { display: flex; gap: 4px; background: var(--rdp-bg-soft); padding: 3px; border-radius: 9px; }\n.rdp-tab {\n flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 5px;\n padding: 6px 4px; border-radius: 7px; border: none; background: transparent;\n color: var(--rdp-text-dim); font: inherit; font-size: 12px; cursor: pointer;\n}\n.rdp-tab[aria-selected=\"true\"] { background: var(--rdp-bg-elev); color: var(--rdp-text); box-shadow: 0 1px 2px rgba(0,0,0,0.3); }\n\n.rdp-input {\n display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 9px;\n border: 1px solid var(--rdp-border); background: var(--rdp-bg-soft);\n}\n.rdp-input input {\n flex: 1; background: transparent; border: none; outline: none; color: var(--rdp-text);\n font: inherit; font-size: 13px;\n}\n.rdp-mono { font-family: var(--rdp-mono); }\n.rdp-section-label {\n display: block; margin: 8px 0 2px; color: var(--rdp-text-faint); font-weight: 700;\n text-transform: uppercase; letter-spacing: 0.5px; font-size: 10px;\n}\n\n/* Inspector overlay bits */\n.rdp-overlay { position: fixed; inset: 0; pointer-events: none; z-index: ${RDP_Z - 1}; }\n.rdp-hl {\n position: fixed; border: 1px solid var(--rdp-accent); border-radius: 3px;\n background: rgba(105,80,232,0.14); box-shadow: 0 0 0 1px rgba(105,80,232,0.4);\n transition: all 60ms linear; pointer-events: none;\n}\n.rdp-tooltip {\n position: fixed; max-width: 360px; padding: 8px 10px; border-radius: 9px;\n background: rgba(15,18,24,0.86); backdrop-filter: blur(8px);\n border: 1px solid rgba(255,255,255,0.12); box-shadow: var(--rdp-shadow); color: #fff;\n pointer-events: none;\n}\n.rdp-toast {\n position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);\n padding: 7px 14px; border-radius: 9px; background: rgba(15,18,24,0.92);\n border: 1px solid rgba(255,255,255,0.12); box-shadow: var(--rdp-shadow);\n font-size: 12px; font-weight: 600; z-index: ${RDP_Z};\n}\n\n.rdp-body::-webkit-scrollbar, .rdp-scroll::-webkit-scrollbar { width: 8px; height: 8px; }\n.rdp-body::-webkit-scrollbar-thumb, .rdp-scroll::-webkit-scrollbar-thumb {\n background: rgba(255,255,255,0.14); border-radius: 8px;\n}\n.rdp-kbd {\n padding: 1px 5px; border-radius: 5px; border: 1px solid var(--rdp-border);\n background: rgba(255,255,255,0.04); font-family: var(--rdp-mono); font-size: 11px;\n color: var(--rdp-text-dim);\n}\n`;\n\nlet injected = false;\n\n/** Inject the stylesheet once (idempotent, SSR-safe). */\nexport function injectBaseStyles(): void {\n if (injected || typeof document === 'undefined') return;\n if (document.getElementById(RDP_STYLE_ID)) {\n injected = true;\n return;\n }\n const style = document.createElement('style');\n style.id = RDP_STYLE_ID;\n style.textContent = CSS;\n document.head.appendChild(style);\n injected = true;\n}\n\n/** Map a tool color key to a CSS variable. */\nexport function colorVar(key?: string): string {\n switch (key) {\n case 'info':\n return 'var(--rdp-info)';\n case 'warning':\n return 'var(--rdp-warning)';\n case 'success':\n return 'var(--rdp-success)';\n case 'error':\n return 'var(--rdp-error)';\n default:\n return 'var(--rdp-accent)';\n }\n}\n\n/** Tiny classnames helper. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ');\n}\n","import type { ToolDefinition } from './types';\n\n// Module-level registry. Bundled tools self-register on import; hosts can add their own via\n// `registerTool`. `DevPanel` reads this list (optionally filtered/ordered by config.tools).\nconst tools = new Map<string, ToolDefinition>();\n\nexport function registerTool(def: ToolDefinition): void {\n tools.set(def.id, def);\n}\n\nexport function getRegisteredTools(): ToolDefinition[] {\n return [...tools.values()];\n}\n\n/** Resolve the active tool list, honoring an optional id allow-list/order from config. */\nexport function resolveTools(ids?: string[]): ToolDefinition[] {\n if (!ids || ids.length === 0) return getRegisteredTools();\n return ids.map((id) => tools.get(id)).filter((t): t is ToolDefinition => Boolean(t));\n}\n","import type { ReactNode } from 'react';\n\n/** Minimal inline-SVG icon set (no icon-library dependency). Stroke inherits `currentColor`. */\nfunction Svg({ children, size = 16 }: { children: ReactNode; size?: number }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n {children}\n </svg>\n );\n}\n\nexport const IconWrench = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M14.7 6.3a4 4 0 0 0-5.4 5.3L3 18v3h3l6.4-6.3a4 4 0 0 0 5.3-5.4l-2.5 2.5-2.1-2.1z\" />\n </Svg>\n);\nexport const IconBug = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <rect x=\"8\" y=\"6\" width=\"8\" height=\"14\" rx=\"4\" />\n <path d=\"M9 6a3 3 0 0 1 6 0M3 13h5M16 13h5M4 18l4-2M20 18l-4-2M4 8l4 2M20 8l-4 2\" />\n </Svg>\n);\nexport const IconGauge = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M12 14l3-3\" />\n <path d=\"M3.5 18a9 9 0 1 1 17 0\" />\n </Svg>\n);\nexport const IconGraph = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n <path d=\"M10 6.5h4a3 3 0 0 1 3 3V14\" />\n </Svg>\n);\nexport const IconX = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </Svg>\n);\nexport const IconChevronRight = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M9 6l6 6-6 6\" />\n </Svg>\n);\nexport const IconChevronDown = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M6 9l6 6 6-6\" />\n </Svg>\n);\nexport const IconSearch = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M21 21l-4-4\" />\n </Svg>\n);\nexport const IconCopy = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" />\n <path d=\"M5 15V5a2 2 0 0 1 2-2h10\" />\n </Svg>\n);\nexport const IconFileCode = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 3v5h5M10 12l-2 2 2 2M14 12l2 2-2 2\" />\n </Svg>\n);\nexport const IconRefresh = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M21 12a9 9 0 1 1-3-6.7L21 8\" />\n <path d=\"M21 3v5h-5\" />\n </Svg>\n);\nexport const IconPointer = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M5 3l16 7-7 2-2 7z\" />\n </Svg>\n);\nexport const IconLayers = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M12 3l9 5-9 5-9-5 9-5zM3 13l9 5 9-5\" />\n </Svg>\n);\nexport const IconArrowUp = ({ size }: { size?: number }) => (\n <Svg size={size}>\n <path d=\"M12 19V5M6 11l6-6 6 6\" />\n </Svg>\n);\n","/**\n * Console + network capture store for the Developer Logs tool. Patches console methods and\n * fetch/XHR once, keeps a bounded ring buffer, and exposes a `useSyncExternalStore` snapshot.\n * Framework-agnostic — no dependencies beyond the browser.\n */\n\nexport type LogLevel = 'log' | 'info' | 'warn' | 'error' | 'network';\n\nexport interface LogEntry {\n id: number;\n level: LogLevel;\n time: number;\n message: string;\n /** For network entries: HTTP status + method + url. */\n meta?: string;\n}\n\nconst MAX = 500;\nlet buffer: LogEntry[] = [];\nlet nextId = 1;\nconst listeners = new Set<() => void>();\n\nfunction emit() {\n listeners.forEach((l) => l());\n}\n\nfunction push(level: LogLevel, message: string, meta?: string) {\n buffer = [...buffer.slice(-(MAX - 1)), { id: nextId++, level, time: Date.now(), message, meta }];\n emit();\n}\n\nfunction stringify(args: unknown[]): string {\n return args\n .map((a) => {\n if (typeof a === 'string') return a;\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n })\n .join(' ')\n .slice(0, 2000);\n}\n\nlet installed = false;\n\n/** Patch console + fetch + XHR once. Safe to call repeatedly; no-op after the first. */\nexport function installCapture(): void {\n if (installed || typeof window === 'undefined') return;\n installed = true;\n\n (['log', 'info', 'warn', 'error'] as const).forEach((level) => {\n const original = console[level].bind(console);\n console[level] = (...args: unknown[]) => {\n push(level, stringify(args));\n original(...args);\n };\n });\n\n if (typeof window.fetch === 'function') {\n const orig = window.fetch.bind(window);\n window.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {\n const method = (init?.method ?? 'GET').toUpperCase();\n const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;\n const start = Date.now();\n try {\n const res = await orig(input, init);\n push(res.ok ? 'network' : 'error', `${method} ${url}`, `${res.status} · ${Date.now() - start}ms`);\n return res;\n } catch (err) {\n push('error', `${method} ${url}`, `failed · ${String(err)}`);\n throw err;\n }\n };\n }\n}\n\nexport function subscribeLogs(listener: () => void): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\nexport function getLogs(): LogEntry[] {\n return buffer;\n}\nconst EMPTY: LogEntry[] = [];\nexport function getServerLogs(): LogEntry[] {\n return EMPTY;\n}\nexport function clearLogs(): void {\n buffer = [];\n emit();\n}\nexport function errorCount(): number {\n return buffer.reduce((n, e) => (e.level === 'error' ? n + 1 : n), 0);\n}\n","import { useState, useSyncExternalStore } from 'react';\n\nimport type { ToolDefinition, ToolPanelProps } from '../../core/types';\nimport { cx } from '../../core/styles';\nimport { registerTool } from '../../core/registry';\nimport { IconBug, IconX } from '../../core/icons';\nimport type { LogLevel } from './store';\nimport {\n getLogs,\n clearLogs,\n errorCount,\n getServerLogs,\n subscribeLogs,\n installCapture,\n} from './store';\n\nconst LEVELS: Array<LogLevel | 'all'> = ['all', 'log', 'warn', 'error', 'network'];\n\nconst LEVEL_COLOR: Record<LogLevel, string> = {\n log: 'var(--rdp-text-dim)',\n info: 'var(--rdp-info)',\n warn: 'var(--rdp-warning)',\n error: 'var(--rdp-error)',\n network: 'var(--rdp-info)',\n};\n\nfunction DevLogsPanel({ onClose }: ToolPanelProps) {\n const logs = useSyncExternalStore(subscribeLogs, getLogs, getServerLogs);\n const [filter, setFilter] = useState<LogLevel | 'all'>('all');\n const shown = filter === 'all' ? logs : logs.filter((l) => l.level === filter);\n\n return (\n <div className=\"rdp-surface rdp-panel\" style={{ bottom: 88, right: 20 }}>\n <div className=\"rdp-header\">\n <IconBug size={16} />\n <span className=\"rdp-title\" style={{ flex: 1 }}>\n Developer Logs\n </span>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" onClick={clearLogs} title=\"Clear\" style={{ width: 'auto', padding: '0 8px' }}>\n Clear\n </button>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" onClick={onClose} aria-label=\"Close\">\n <IconX size={16} />\n </button>\n </div>\n\n <div style={{ padding: '8px 12px 0', display: 'flex', gap: 4, flexWrap: 'wrap' }}>\n {LEVELS.map((lvl) => (\n <button\n key={lvl}\n type=\"button\"\n className={cx('rdp-btn', 'rdp-btn-sm')}\n style={filter === lvl ? { borderColor: 'var(--rdp-accent)', color: 'var(--rdp-accent)' } : undefined}\n onClick={() => setFilter(lvl)}\n >\n {lvl}\n </button>\n ))}\n </div>\n\n <div className=\"rdp-body rdp-mono\" style={{ fontSize: 12 }}>\n {shown.length === 0 ? (\n <div style={{ color: 'var(--rdp-text-faint)' }}>No log entries captured yet.</div>\n ) : (\n shown\n .slice()\n .reverse()\n .map((entry) => (\n <div key={entry.id} style={{ padding: '3px 0', borderBottom: '1px solid var(--rdp-border)' }}>\n <span style={{ color: LEVEL_COLOR[entry.level], fontWeight: 700, marginRight: 6 }}>\n {entry.level === 'network' ? 'net' : entry.level}\n </span>\n <span style={{ wordBreak: 'break-word' }}>{entry.message}</span>\n {entry.meta && (\n <span style={{ color: 'var(--rdp-text-faint)', marginLeft: 6 }}>{entry.meta}</span>\n )}\n </div>\n ))\n )}\n </div>\n </div>\n );\n}\n\nfunction useBadge() {\n const logs = useSyncExternalStore(subscribeLogs, getLogs, getServerLogs);\n const errors = logs.filter((l) => l.level === 'error').length;\n if (logs.length === 0) return null;\n return errors > 0\n ? { label: String(errors), tone: 'error' as const }\n : { label: String(logs.length), tone: 'neutral' as const };\n}\n\nexport const devLogsTool: ToolDefinition = {\n id: 'logs',\n title: 'Developer Logs',\n subtitle: 'Client & network activity',\n color: 'info',\n icon: <IconBug size={19} />,\n Panel: DevLogsPanel,\n useBadge,\n init: installCapture,\n};\n\nexport function registerDevLogs() {\n registerTool(devLogsTool);\n}\n\nexport { errorCount };\n","import { useSyncExternalStore } from 'react';\nimport { onLCP, onCLS, onINP, onFCP, onTTFB, type Metric } from 'web-vitals';\n\nimport type { ToolDefinition, ToolPanelProps } from '../../core/types';\nimport { registerTool } from '../../core/registry';\nimport { IconGauge, IconX } from '../../core/icons';\n\ntype Rating = 'good' | 'needs-improvement' | 'poor';\ninterface MetricSnapshot {\n name: string;\n value: number;\n rating: Rating;\n unit: 'ms' | '';\n}\n\nconst HINTS: Record<string, string> = {\n LCP: 'Largest Contentful Paint — optimize hero image/font, reduce server time.',\n CLS: 'Cumulative Layout Shift — set sizes on images/embeds, reserve space.',\n INP: 'Interaction to Next Paint — break up long tasks, defer work.',\n FCP: 'First Contentful Paint — reduce render-blocking CSS/JS.',\n TTFB: 'Time to First Byte — server/edge latency, caching.',\n};\n\nlet metrics: Record<string, MetricSnapshot> = {};\nconst listeners = new Set<() => void>();\nfunction emit() {\n listeners.forEach((l) => l());\n}\n\nfunction record(m: Metric) {\n metrics = {\n ...metrics,\n [m.name]: {\n name: m.name,\n value: m.value,\n rating: m.rating as Rating,\n unit: m.name === 'CLS' ? '' : 'ms',\n },\n };\n emit();\n}\n\nlet installed = false;\nfunction installPerf(): void {\n if (installed || typeof window === 'undefined') return;\n installed = true;\n onLCP(record);\n onCLS(record);\n onINP(record);\n onFCP(record);\n onTTFB(record);\n}\n\nfunction subscribe(l: () => void): () => void {\n listeners.add(l);\n return () => listeners.delete(l);\n}\nfunction snapshot(): Record<string, MetricSnapshot> {\n return metrics;\n}\nconst EMPTY: Record<string, MetricSnapshot> = {};\nfunction serverSnapshot() {\n return EMPTY;\n}\n\nconst RATING_COLOR: Record<Rating, string> = {\n good: 'var(--rdp-success)',\n 'needs-improvement': 'var(--rdp-warning)',\n poor: 'var(--rdp-error)',\n};\n\nfunction PagePerformancePanel({ onClose }: ToolPanelProps) {\n const data = useSyncExternalStore(subscribe, snapshot, serverSnapshot);\n const order = ['LCP', 'INP', 'CLS', 'FCP', 'TTFB'];\n\n return (\n <div className=\"rdp-surface rdp-panel\" style={{ bottom: 88, right: 20 }}>\n <div className=\"rdp-header\">\n <IconGauge size={16} />\n <span className=\"rdp-title\" style={{ flex: 1 }}>\n Page Performance\n </span>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" onClick={onClose} aria-label=\"Close\">\n <IconX size={16} />\n </button>\n </div>\n <div className=\"rdp-body\">\n {order.every((k) => !data[k]) && (\n <div style={{ color: 'var(--rdp-text-faint)' }}>\n Collecting Web Vitals… interact with the page (INP needs an interaction).\n </div>\n )}\n {order.map((key) => {\n const m = data[key];\n if (!m) return null;\n return (\n <div key={key} style={{ padding: '8px 0', borderBottom: '1px solid var(--rdp-border)' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <span className=\"rdp-chip\" style={{ background: RATING_COLOR[m.rating], color: '#06210f' }}>\n {m.name}\n </span>\n <span className=\"rdp-mono\" style={{ fontWeight: 700 }}>\n {m.unit === 'ms' ? Math.round(m.value) : m.value.toFixed(3)}\n {m.unit}\n </span>\n <span style={{ color: RATING_COLOR[m.rating], fontSize: 11, marginLeft: 'auto' }}>\n {m.rating}\n </span>\n </div>\n <div className=\"rdp-sub\" style={{ marginTop: 2 }}>\n {HINTS[key]}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport const pagePerformanceTool: ToolDefinition = {\n id: 'perf',\n title: 'Page Performance',\n subtitle: 'Web Vitals & fix suggestions',\n color: 'warning',\n icon: <IconGauge size={19} />,\n Panel: PagePerformancePanel,\n init: installPerf,\n};\n\nexport function registerPagePerformance() {\n registerTool(pagePerformanceTool);\n}\n","import type { ReactNode } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport type {\n EditorType,\n OpenInEditor,\n DevPanelConfig,\n SourceLocation,\n ResolvedDevPanelConfig,\n} from './types';\n\nfunction buildProtocolUrl(editor: EditorType, loc: SourceLocation): string | null {\n const line = loc.line ?? 1;\n const col = loc.column ?? 1;\n switch (editor) {\n case 'cursor':\n return `cursor://file/${loc.file}:${line}:${col}`;\n case 'webstorm':\n return `webstorm://open?file=${encodeURIComponent(loc.file)}&line=${line}&column=${col}`;\n case 'zed':\n return `zed://file/${loc.file}:${line}:${col}`;\n case 'vscode':\n case 'auto':\n default:\n return `vscode://file/${loc.file}:${line}:${col}`;\n }\n}\n\n/**\n * Fallback opener used when the host/adapter provides none: tries the editor's protocol URL,\n * then copies the path. Adapters (Next/Vite/server) replace this with a server-backed open that\n * launches the editor running the project regardless of OS protocol registration.\n */\nexport const defaultOpenInEditor: OpenInEditor = async (loc, editor = 'auto') => {\n const url = buildProtocolUrl(editor, loc);\n if (url && typeof window !== 'undefined') {\n try {\n window.location.assign(url);\n return true;\n } catch {\n /* fall through to copy */\n }\n }\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n await navigator.clipboard\n .writeText(`${loc.file}${loc.line ? `:${loc.line}` : ''}`)\n .catch(() => undefined);\n }\n return false;\n};\n\nconst DevPanelContext = createContext<ResolvedDevPanelConfig | null>(null);\n\nfunction resolve(config: DevPanelConfig): ResolvedDevPanelConfig {\n const enabled =\n config.enabled ??\n (typeof process !== 'undefined' ? process.env.NODE_ENV !== 'production' : true);\n return {\n enabled,\n editor: config.editor ?? 'auto',\n getRoute: config.getRoute ?? (() => (typeof location !== 'undefined' ? location.pathname : undefined)),\n openInEditor: config.openInEditor ?? defaultOpenInEditor,\n graphEndpoint: config.graphEndpoint,\n theme: config.theme ?? {},\n tools: config.tools,\n };\n}\n\nexport function DevPanelConfigProvider({\n config,\n children,\n}: {\n config: DevPanelConfig;\n children: ReactNode;\n}) {\n const value = useMemo(() => resolve(config), [config]);\n return <DevPanelContext.Provider value={value}>{children}</DevPanelContext.Provider>;\n}\n\nexport function useDevPanelConfig(): ResolvedDevPanelConfig {\n const ctx = useContext(DevPanelContext);\n if (!ctx) throw new Error('useDevPanelConfig must be used within <DevPanel> / DevPanelConfigProvider');\n return ctx;\n}\n","import { IconX, IconSearch } from '../../core/icons';\n\nexport function GraphSearch({\n value,\n onChange,\n placeholder = 'Search components…',\n}: {\n value: string;\n onChange: (v: string) => void;\n placeholder?: string;\n}) {\n return (\n <div className=\"rdp-input\">\n <span style={{ color: 'var(--rdp-text-faint)', display: 'grid', placeItems: 'center' }}>\n <IconSearch size={15} />\n </span>\n <input value={value} onChange={(e) => onChange(e.target.value)} placeholder={placeholder} aria-label=\"Search components\" />\n {value && (\n <button type=\"button\" className=\"rdp-iconbtn-bare\" onClick={() => onChange('')} aria-label=\"Clear\">\n <IconX size={14} />\n </button>\n )}\n </div>\n );\n}\n","import type { Selected } from './store';\nimport { cx } from '../../core/styles';\nimport { IconCopy, IconFileCode } from '../../core/icons';\n\nfunction Chips({ names, onSelect }: { names: string[]; onSelect: (n: string) => void }) {\n return (\n <span style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {names.map((n) => (\n <button\n key={n}\n type=\"button\"\n className=\"rdp-chip rdp-mono\"\n style={{ border: '1px solid var(--rdp-border)', background: 'transparent', color: 'var(--rdp-text)', cursor: 'pointer' }}\n onClick={() => onSelect(n)}\n >\n {n}\n </button>\n ))}\n </span>\n );\n}\n\nfunction Row({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div style={{ display: 'flex', gap: 8, marginTop: 5 }}>\n <span style={{ minWidth: 52, color: 'var(--rdp-text-faint)', fontWeight: 600, flexShrink: 0, fontSize: 11 }}>\n {label}\n </span>\n <span style={{ minWidth: 0, flex: 1 }}>{children}</span>\n </div>\n );\n}\n\nexport function NodeDetails({\n selected,\n onOpen,\n onCopyInfo,\n onCopyPath,\n onSelectName,\n}: {\n selected: Selected | null;\n onOpen: () => void;\n onCopyInfo: () => void;\n onCopyPath: () => void;\n onSelectName: (name: string) => void;\n}) {\n if (!selected) {\n return (\n <div style={{ color: 'var(--rdp-text-faint)', padding: '6px 2px' }}>\n Nothing selected. Enable inspect mode and click a component, or pick one from the tree.\n </div>\n );\n }\n return (\n <div\n style={{\n padding: 10,\n borderRadius: 9,\n border: '1px solid var(--rdp-border)',\n background: 'var(--rdp-bg-soft)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <span className=\"rdp-chip\" style={{ background: 'rgba(105,80,232,0.22)', color: 'var(--rdp-accent)' }}>\n {selected.componentName}\n </span>\n {selected.domTag && (\n <span className=\"rdp-mono\" style={{ color: 'var(--rdp-text-faint)', fontSize: 11 }}>{`<${selected.domTag}>`}</span>\n )}\n </div>\n\n {selected.filePath ? (\n <div className=\"rdp-mono\" style={{ marginTop: 6, fontSize: 11.5, color: 'var(--rdp-text-dim)', wordBreak: 'break-all' }}>\n {selected.filePath}\n {selected.line ? `:${selected.line}` : ''}\n {selected.line && selected.column ? `:${selected.column}` : ''}\n </div>\n ) : (\n <div style={{ marginTop: 6, fontSize: 11.5, color: 'var(--rdp-warning)' }}>\n No source path — run the graph generator (npx dev-panel-graph) or mount an adapter.\n </div>\n )}\n\n {selected.route && (\n <Row label=\"Route\">\n <span className=\"rdp-mono\" style={{ fontSize: 12 }}>{selected.route}</span>\n </Row>\n )}\n {selected.parent && (\n <Row label=\"Parent\">\n <Chips names={[selected.parent]} onSelect={onSelectName} />\n </Row>\n )}\n {selected.children.length > 0 && (\n <Row label=\"Renders\">\n <Chips names={selected.children} onSelect={onSelectName} />\n </Row>\n )}\n {selected.imports.length > 0 && (\n <Row label=\"Imports\">\n <Chips names={selected.imports} onSelect={onSelectName} />\n </Row>\n )}\n {selected.props && selected.props.length > 0 && (\n <Row label=\"Props\">\n <span className=\"rdp-mono\" style={{ fontSize: 11, color: 'var(--rdp-text-dim)' }}>\n {selected.props.map((p) => (\n <span key={p.name} style={{ marginRight: 8, display: 'inline-block' }}>\n <span style={{ color: 'var(--rdp-accent)' }}>{p.name}</span>={p.value}\n </span>\n ))}\n </span>\n </Row>\n )}\n\n <button type=\"button\" className={cx('rdp-btn', 'rdp-btn-primary')} style={{ marginTop: 12 }} onClick={onOpen}>\n <IconFileCode size={14} /> Open in editor\n </button>\n <div style={{ display: 'flex', gap: 8, marginTop: 8 }}>\n <button type=\"button\" className=\"rdp-iconbtn\" onClick={onCopyInfo} title=\"Copy component info\">\n <IconCopy size={15} />\n </button>\n <button\n type=\"button\"\n className=\"rdp-iconbtn\"\n onClick={onCopyPath}\n disabled={!selected.filePath && !selected.absFilePath}\n title=\"Copy file path\"\n >\n <IconFileCode size={15} />\n </button>\n </div>\n </div>\n );\n}\n","/**\n * Runtime helpers for the Component Graph Inspector: a memoized graph index, fiber-tree walking,\n * graph-aware component resolution (climb to the nearest ancestor that's in the graph), a safe\n * props preview, and a live \"what's mounted on this page\" scan. All defensive — React internals\n * can vary between versions, so every read is guarded.\n */\nimport type { ComponentGraph, ComponentGraphNode } from '../../core/graph-types';\nimport type { Selected, PropEntry } from './store';\n\n// ── index ───────────────────────────────────────────────────────────────────\ninterface GraphIndex {\n byName: Map<string, ComponentGraphNode>;\n childrenOf: Map<string, string[]>;\n parentsOf: Map<string, string[]>;\n importsOf: Map<string, string[]>;\n}\nconst indexCache = new WeakMap<ComponentGraph, GraphIndex>();\nfunction pushUnique(map: Map<string, string[]>, k: string, v: string) {\n const a = map.get(k);\n if (a) {\n if (!a.includes(v)) a.push(v);\n } else map.set(k, [v]);\n}\nfunction getIndex(graph: ComponentGraph | null): GraphIndex | null {\n if (!graph) return null;\n let idx = indexCache.get(graph);\n if (idx) return idx;\n idx = { byName: new Map(), childrenOf: new Map(), parentsOf: new Map(), importsOf: new Map() };\n for (const n of graph.nodes) {\n idx.byName.set(n.id, n);\n idx.byName.set(n.name, n);\n }\n for (const e of graph.edges) {\n if (e.type === 'renders') {\n pushUnique(idx.childrenOf, e.from, e.to);\n pushUnique(idx.parentsOf, e.to, e.from);\n } else if (e.type === 'route') {\n pushUnique(idx.parentsOf, e.to, e.from);\n } else if (e.type === 'imports') {\n pushUnique(idx.importsOf, e.from, e.to);\n }\n }\n indexCache.set(graph, idx);\n return idx;\n}\n\nexport function findNode(graph: ComponentGraph | null, name: string): ComponentGraphNode | null {\n return getIndex(graph)?.byName.get(name) ?? null;\n}\nexport function getParents(graph: ComponentGraph | null, id: string): string[] {\n return getIndex(graph)?.parentsOf.get(id) ?? [];\n}\nexport function getChildren(graph: ComponentGraph | null, id: string): string[] {\n return getIndex(graph)?.childrenOf.get(id) ?? [];\n}\nexport function getImports(graph: ComponentGraph | null, id: string): string[] {\n return getIndex(graph)?.importsOf.get(id) ?? [];\n}\nexport function searchNodes(graph: ComponentGraph | null, query: string, limit = 40): ComponentGraphNode[] {\n if (!graph) return [];\n const q = query.trim().toLowerCase();\n const matches = q\n ? graph.nodes.filter((n) => n.name.toLowerCase().includes(q) || n.filePath.toLowerCase().includes(q))\n : graph.nodes.filter((n) => n.type === 'component');\n matches.sort((a, b) => (a.type !== b.type ? (a.type === 'component' ? -1 : 1) : a.name.localeCompare(b.name)));\n return matches.slice(0, limit);\n}\n\n// ── path helpers ─────────────────────────────────────────────────────────────\nfunction isAbs(p: string): boolean {\n return p.startsWith('/') || /^[A-Za-z]:[\\\\/]/.test(p);\n}\nexport function toDisplayPath(graph: ComponentGraph | null, file: string): string {\n const root = graph?.root;\n if (root && file.startsWith(root)) return file.slice(root.length).replace(/^[/\\\\]/, '');\n return file;\n}\nexport function toAbsPath(graph: ComponentGraph | null, file: string): string | undefined {\n if (isAbs(file)) return file;\n return graph?.root ? `${graph.root}/${file}` : undefined;\n}\n\n// ── fiber ────────────────────────────────────────────────────────────────────\ninterface FiberLike {\n type: unknown;\n return: FiberLike | null;\n child?: FiberLike | null;\n sibling?: FiberLike | null;\n memoizedProps?: Record<string, unknown> | null;\n}\nfunction getFiber(node: Element): FiberLike | null {\n const key = Object.keys(node).find(\n (k) => k.startsWith('__reactFiber$') || k.startsWith('__reactInternalInstance$'),\n );\n return key ? ((node as unknown as Record<string, FiberLike>)[key] ?? null) : null;\n}\nfunction getDisplayName(type: unknown): string | null {\n if (!type || typeof type === 'string') return null;\n if (typeof type === 'function') {\n const fn = type as { displayName?: string; name?: string };\n return fn.displayName || fn.name || null;\n }\n const o = type as { displayName?: string; render?: unknown; type?: unknown };\n if (o.displayName) return o.displayName;\n if (o.render) return getDisplayName(o.render);\n if (o.type) return getDisplayName(o.type);\n return null;\n}\nfunction chain(el: Element): string[] {\n const out: string[] = [];\n try {\n let f = getFiber(el);\n let hops = 0;\n while (f && hops < 200) {\n const n = getDisplayName(f.type);\n if (n && out[out.length - 1] !== n) out.push(n);\n f = f.return;\n hops += 1;\n }\n } catch {\n /* ignore */\n }\n return out;\n}\n\nexport const IGNORE_ATTR = 'data-rdp-ignore';\nexport function isIgnored(el: Element | null): boolean {\n return !!el?.closest(`[${IGNORE_ATTR}]`);\n}\n\nfunction summarize(v: unknown): string | null {\n if (v == null) return String(v);\n switch (typeof v) {\n case 'string':\n return v.length > 40 ? `\"${v.slice(0, 40)}…\"` : `\"${v}\"`;\n case 'number':\n case 'boolean':\n return String(v);\n case 'function':\n return 'ƒ';\n case 'object':\n if (Array.isArray(v)) return `Array(${v.length})`;\n if ((v as { $$typeof?: symbol }).$$typeof) return null;\n return '{…}';\n default:\n return null;\n }\n}\nexport function extractProps(el: Element): PropEntry[] | undefined {\n try {\n let f = getFiber(el);\n while (f && typeof f.type === 'string') f = f.return;\n const props = f?.memoizedProps;\n if (!props || typeof props !== 'object') return undefined;\n const out: PropEntry[] = [];\n for (const name of Object.keys(props)) {\n if (name === 'children') continue;\n const s = summarize(props[name]);\n if (s == null) continue;\n out.push({ name, value: s });\n if (out.length >= 12) break;\n }\n return out.length ? out : undefined;\n } catch {\n return undefined;\n }\n}\n\ninterface RawMeta {\n componentName: string;\n filePath?: string;\n line?: number;\n column?: number;\n domTag: string;\n}\n// Reads data-dev-* attrs if a build transform injected them, else the fiber component name.\nfunction extractRaw(el: Element): RawMeta {\n const host = el.closest('[data-dev-file], [data-dev-component]');\n const attrFile = host?.getAttribute('data-dev-file') ?? undefined;\n const attrLine = host?.getAttribute('data-dev-line');\n const attrCol = host?.getAttribute('data-dev-column');\n let fiberName: string | null = null;\n try {\n fiberName = chain(el)[0] ?? null;\n } catch {\n /* ignore */\n }\n const domTag = el.tagName.toLowerCase();\n return {\n componentName: fiberName || host?.getAttribute('data-dev-component') || domTag,\n filePath: attrFile,\n line: attrLine ? Number(attrLine) : undefined,\n column: attrCol ? Number(attrCol) : undefined,\n domTag,\n };\n}\n\nfunction graphMatch(el: Element, graph: ComponentGraph | null, fallbackName: string) {\n const idx = getIndex(graph);\n if (idx) {\n const name = chain(el).find((n) => idx.byName.has(n));\n if (name) return { componentName: name, node: idx.byName.get(name) ?? null };\n }\n return { componentName: fallbackName, node: findNode(graph, fallbackName) };\n}\n\n/** Lightweight resolution for the hover tooltip. */\nexport function resolveDisplay(el: Element, graph: ComponentGraph | null, route?: string) {\n const raw = extractRaw(el);\n const { componentName, node } = graphMatch(el, graph, raw.componentName);\n return {\n componentName,\n filePath: raw.filePath ?? node?.filePath,\n line: raw.line ?? node?.line,\n domTag: raw.domTag,\n route,\n };\n}\n\n/** Full selection for a locked element, merged with the matching graph node. */\nexport function resolveSelected(\n el: Element,\n graph: ComponentGraph | null,\n route?: string,\n): Selected {\n const raw = extractRaw(el);\n const { componentName, node } = graphMatch(el, graph, raw.componentName);\n const rel = node?.filePath;\n const absFromAttr = raw.filePath && isAbs(raw.filePath) ? raw.filePath : undefined;\n const absFilePath = absFromAttr ?? (rel ? toAbsPath(graph, rel) : undefined);\n const display = rel ?? (raw.filePath ? toDisplayPath(graph, raw.filePath) : undefined);\n const parents = node ? getParents(graph, node.id) : [];\n return {\n componentName,\n filePath: display,\n absFilePath,\n line: raw.line ?? node?.line,\n column: raw.column ?? node?.column,\n route: route ?? node?.route,\n domTag: raw.domTag,\n parent: parents[0],\n parents,\n children: node ? getChildren(graph, node.id) : [],\n imports: node ? getImports(graph, node.id) : [],\n props: extractProps(el),\n source: 'hover',\n nodeId: node?.id,\n };\n}\n\nexport function selectFromNode(graph: ComponentGraph | null, node: ComponentGraphNode): Selected {\n return {\n componentName: node.name,\n filePath: node.filePath,\n absFilePath: toAbsPath(graph, node.filePath),\n line: node.line,\n column: node.column,\n route: node.route,\n parent: getParents(graph, node.id)[0],\n parents: getParents(graph, node.id),\n children: getChildren(graph, node.id),\n imports: getImports(graph, node.id),\n source: 'graph',\n nodeId: node.id,\n };\n}\n\nexport interface MountedComponent {\n name: string;\n node: ComponentGraphNode;\n count: number;\n}\n/** Walk the live fiber tree; list app components mounted on the current page (in the graph). */\nexport function collectMounted(graph: ComponentGraph | null): MountedComponent[] {\n const idx = getIndex(graph);\n if (!idx || typeof document === 'undefined') return [];\n try {\n let root: FiberLike | null = null;\n const all = document.body.getElementsByTagName('*');\n for (let i = 0; i < all.length; i += 1) {\n let f = getFiber(all[i]);\n if (f) {\n let g = 0;\n while (f.return && g < 100000) {\n f = f.return;\n g += 1;\n }\n root = f;\n break;\n }\n }\n if (!root) return [];\n const counts = new Map<string, number>();\n const stack: Array<FiberLike | null | undefined> = [root];\n let visited = 0;\n while (stack.length && visited < 200000) {\n const cur = stack.pop();\n if (!cur) continue;\n visited += 1;\n const name = getDisplayName(cur.type);\n if (name) {\n const node = idx.byName.get(name);\n if (node && node.type === 'component') counts.set(name, (counts.get(name) ?? 0) + 1);\n }\n if (cur.child) stack.push(cur.child);\n if (cur.sibling) stack.push(cur.sibling);\n }\n return [...counts.entries()]\n .map(([name, count]) => ({ name, node: idx.byName.get(name) as ComponentGraphNode, count }))\n .sort((a, b) => a.name.localeCompare(b.name));\n } catch {\n return [];\n }\n}\n\nexport function formatForCopy(s: Selected): string {\n const lines = [`Component: ${s.componentName}`];\n if (s.filePath) lines.push(`File: ${s.filePath}${s.line ? `:${s.line}` : ''}`);\n if (s.route) lines.push(`Route: ${s.route}`);\n if (s.parent) lines.push(`Parent: ${s.parent}`);\n if (s.children.length) lines.push(`Children: ${s.children.join(', ')}`);\n if (s.imports.length) lines.push(`Imports: ${s.imports.join(', ')}`);\n return lines.join('\\n');\n}\n","import type { ReactNode } from 'react';\n\nimport type { ComponentGraph, ComponentGraphNode } from '../../core/graph-types';\nimport type { Selected } from './store';\nimport { IconCopy, IconArrowUp, IconFileCode, IconChevronDown, IconChevronRight } from '../../core/icons';\nimport { findNode, getChildren, searchNodes } from './graph-utils';\n\nconst MAX_DEPTH = 6;\n\nexport interface TreeProps {\n graph: ComponentGraph | null;\n selected: Selected | null;\n search: string;\n expanded: ReadonlySet<string>;\n onSelect: (node: ComponentGraphNode) => void;\n onToggle: (id: string) => void;\n onOpen: (node: ComponentGraphNode) => void;\n onCopy: (node: ComponentGraphNode) => void;\n}\n\nfunction Label({ children }: { children: ReactNode }) {\n return <span className=\"rdp-section-label\">{children}</span>;\n}\n\nfunction RowActions({\n node,\n onOpen,\n onCopy,\n}: {\n node: ComponentGraphNode;\n onOpen: (n: ComponentGraphNode) => void;\n onCopy: (n: ComponentGraphNode) => void;\n}) {\n return (\n <span style={{ display: 'inline-flex', gap: 2 }}>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" title=\"Open in editor\" onClick={(e) => { e.stopPropagation(); onOpen(node); }}>\n <IconFileCode size={13} />\n </button>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" title=\"Copy file path\" onClick={(e) => { e.stopPropagation(); onCopy(node); }}>\n <IconCopy size={13} />\n </button>\n </span>\n );\n}\n\nfunction RowShell({\n depth = 0,\n active,\n caret,\n label,\n isRoute,\n onLabel,\n actions,\n}: {\n depth?: number;\n active?: boolean;\n caret?: ReactNode;\n label: string;\n isRoute?: boolean;\n onLabel: () => void;\n actions?: ReactNode;\n}) {\n return (\n <div\n className=\"rdp-row\"\n style={{\n padding: '3px 6px',\n paddingLeft: 6 + depth * 14,\n gap: 4,\n alignItems: 'center',\n background: active ? 'rgba(105,80,232,0.16)' : undefined,\n }}\n >\n <span style={{ width: 16, display: 'grid', placeItems: 'center', color: 'var(--rdp-text-faint)' }}>{caret}</span>\n <button\n type=\"button\"\n onClick={onLabel}\n className=\"rdp-mono\"\n style={{\n flex: 1,\n minWidth: 0,\n textAlign: 'left',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: 12,\n fontWeight: active ? 700 : 500,\n color: isRoute ? 'var(--rdp-info)' : active ? 'var(--rdp-accent)' : 'var(--rdp-text)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {label}\n </button>\n {actions}\n </div>\n );\n}\n\nfunction Branch({ name, depth, trail, p }: { name: string; depth: number; trail: ReadonlySet<string>; p: TreeProps }) {\n const node = findNode(p.graph, name);\n const id = node?.id ?? name;\n const kids = node ? getChildren(p.graph, id) : [];\n const hasKids = kids.length > 0 && depth < MAX_DEPTH && !trail.has(id);\n const open = p.expanded.has(id);\n const active = p.selected?.nodeId === id || p.selected?.componentName === name;\n return (\n <div>\n <RowShell\n depth={depth}\n active={active}\n isRoute={node?.type === 'route'}\n caret={\n hasKids ? (\n <span style={{ cursor: 'pointer' }} onClick={() => p.onToggle(id)}>\n {open ? <IconChevronDown size={13} /> : <IconChevronRight size={13} />}\n </span>\n ) : null\n }\n label={name}\n onLabel={() => node && p.onSelect(node)}\n actions={node ? <RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} /> : null}\n />\n {hasKids && open && kids.map((k) => <Branch key={`${id}>${k}`} name={k} depth={depth + 1} trail={new Set([...trail, id])} p={p} />)}\n </div>\n );\n}\n\nexport function ComponentGraphTree(p: TreeProps) {\n const { graph, selected, search } = p;\n\n if (graph && search.trim()) {\n const results = searchNodes(graph, search);\n return (\n <div>\n <Label>{results.length} match{results.length === 1 ? '' : 'es'}</Label>\n {results.map((node) => (\n <RowShell\n key={node.id}\n active={selected?.nodeId === node.id}\n isRoute={node.type === 'route'}\n label={node.name}\n onLabel={() => p.onSelect(node)}\n actions={<RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} />}\n />\n ))}\n {results.length === 0 && (\n <div style={{ color: 'var(--rdp-text-faint)', paddingLeft: 8 }}>No components match “{search}”.</div>\n )}\n </div>\n );\n }\n\n if (!selected) {\n return (\n <div style={{ color: 'var(--rdp-text-faint)', padding: '8px 2px' }}>\n Lock a component (hover + click) or search above to explore the tree.\n </div>\n );\n }\n\n return (\n <div>\n {selected.parents.length > 0 && (\n <>\n <Label>Parent chain</Label>\n {selected.parents.map((parent) => {\n const node = findNode(graph, parent);\n return (\n <RowShell\n key={`p:${parent}`}\n isRoute={node?.type === 'route'}\n caret={<IconArrowUp size={12} />}\n label={parent}\n onLabel={() => node && p.onSelect(node)}\n actions={node ? <RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} /> : null}\n />\n );\n })}\n </>\n )}\n\n <Label>Selected</Label>\n <RowShell active label={selected.componentName} onLabel={() => undefined} />\n\n <Label>Renders ({selected.children.length})</Label>\n {selected.children.length === 0 ? (\n <div style={{ color: 'var(--rdp-text-faint)', paddingLeft: 20 }}>No child components detected.</div>\n ) : (\n selected.children.map((c) => (\n <Branch key={`c:${c}`} name={c} depth={0} trail={new Set(selected.nodeId ? [selected.nodeId] : [])} p={p} />\n ))\n )}\n\n {selected.imports.length > 0 && (\n <>\n <Label>Imports ({selected.imports.length})</Label>\n {selected.imports.map((imp) => {\n const node = findNode(graph, imp);\n return (\n <RowShell\n key={`i:${imp}`}\n isRoute={node?.type === 'route'}\n label={imp}\n onLabel={() => node && p.onSelect(node)}\n actions={node ? <RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} /> : null}\n />\n );\n })}\n </>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\n\nimport type { ComponentGraph, ComponentGraphNode } from '../../core/graph-types';\nimport { GraphSearch } from './Search';\nimport { IconCopy, IconRefresh, IconFileCode } from '../../core/icons';\nimport { collectMounted, type MountedComponent } from './graph-utils';\n\nexport function ComponentGraphPageList({\n graph,\n route,\n selectedName,\n onSelect,\n onOpen,\n onCopy,\n}: {\n graph: ComponentGraph | null;\n route?: string;\n selectedName?: string;\n onSelect: (node: ComponentGraphNode) => void;\n onOpen: (node: ComponentGraphNode) => void;\n onCopy: (node: ComponentGraphNode) => void;\n}) {\n const [items, setItems] = useState<MountedComponent[]>([]);\n const [query, setQuery] = useState('');\n\n const scan = useCallback(() => setItems(collectMounted(graph)), [graph]);\n\n // Scan on open / graph load / route change; two frames + a late pass for streamed content.\n useEffect(() => {\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(scan);\n });\n const late = setTimeout(scan, 600);\n return () => {\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n clearTimeout(late);\n };\n }, [scan, route]);\n\n if (!graph) {\n return (\n <div style={{ color: 'var(--rdp-text-faint)', padding: '6px 2px' }}>\n Load the component graph (Graph tab) to map mounted components to source files.\n </div>\n );\n }\n\n const q = query.trim().toLowerCase();\n const filtered = q\n ? items.filter((i) => i.name.toLowerCase().includes(q) || i.node.filePath.toLowerCase().includes(q))\n : items;\n\n return (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 6 }}>\n <span className=\"rdp-sub\">\n <span className=\"rdp-mono\" style={{ color: 'var(--rdp-info)' }}>{route ?? '/'}</span> ·{' '}\n {q ? `${filtered.length} / ${items.length}` : items.length} component{items.length === 1 ? '' : 's'}\n </span>\n <button type=\"button\" className=\"rdp-btn rdp-btn-sm\" onClick={scan}>\n <IconRefresh size={13} /> Rescan\n </button>\n </div>\n\n <div style={{ marginBottom: 8 }}>\n <GraphSearch value={query} onChange={setQuery} placeholder=\"Filter components on this page…\" />\n </div>\n\n {items.length === 0 ? (\n <div style={{ color: 'var(--rdp-text-faint)', paddingLeft: 4 }}>\n No graph components detected in the live tree. Try Rescan, or regenerate the graph.\n </div>\n ) : filtered.length === 0 ? (\n <div style={{ color: 'var(--rdp-text-faint)', paddingLeft: 4 }}>No components match “{query}”.</div>\n ) : (\n filtered.map(({ name, node, count }) => (\n <div\n key={node.id}\n className=\"rdp-row\"\n style={{ padding: '4px 6px', alignItems: 'center', background: selectedName === name ? 'rgba(105,80,232,0.16)' : undefined }}\n onClick={() => onSelect(node)}\n >\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>\n <span className=\"rdp-mono\" style={{ fontWeight: 600, fontSize: 12, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {name}\n </span>\n {count > 1 && (\n <span className=\"rdp-chip\" style={{ background: 'var(--rdp-bg-soft)', color: 'var(--rdp-text-dim)', height: 15 }}>\n ×{count}\n </span>\n )}\n </span>\n <span style={{ display: 'block', color: 'var(--rdp-text-faint)', fontSize: 11, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {node.filePath}\n </span>\n </span>\n <span style={{ display: 'inline-flex', gap: 2 }}>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" title=\"Open in editor\" onClick={(e) => { e.stopPropagation(); onOpen(node); }}>\n <IconFileCode size={13} />\n </button>\n <button type=\"button\" className=\"rdp-iconbtn-bare\" title=\"Copy file path\" onClick={(e) => { e.stopPropagation(); onCopy(node); }}>\n <IconCopy size={13} />\n </button>\n </span>\n </div>\n ))\n )}\n </div>\n );\n}\n","/**\n * State store for the Component Graph Inspector (useSyncExternalStore). Holds the enabled flag,\n * active mode, locked selection, the lazily-fetched static graph, search/expansion UI state, and\n * a transient toast. Self-contained — no persistence beyond an in-memory snapshot.\n */\nimport type { ComponentGraph } from '../../core/graph-types';\n\nexport type GraphMode = 'hover' | 'graph' | 'page' | 'file';\nexport type GraphStatus = 'idle' | 'loading' | 'ready' | 'empty' | 'error';\n\nexport interface PropEntry {\n name: string;\n value: string;\n}\n\nexport interface Selected {\n componentName: string;\n filePath?: string;\n absFilePath?: string;\n line?: number;\n column?: number;\n route?: string;\n domTag?: string;\n parent?: string;\n parents: string[];\n children: string[];\n imports: string[];\n props?: PropEntry[];\n source: 'hover' | 'graph';\n nodeId?: string;\n}\n\nexport interface Toast {\n message: string;\n tone: 'success' | 'error' | 'info';\n}\n\ninterface State {\n enabled: boolean;\n mode: GraphMode;\n selected: Selected | null;\n graph: ComponentGraph | null;\n status: GraphStatus;\n search: string;\n expanded: ReadonlySet<string>;\n toast: Toast | null;\n}\n\nlet state: State = {\n enabled: false,\n mode: 'hover',\n selected: null,\n graph: null,\n status: 'idle',\n search: '',\n expanded: new Set<string>(),\n toast: null,\n};\n\nconst listeners = new Set<() => void>();\nlet scheduled = false;\nlet toastTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction emit() {\n if (scheduled) return;\n scheduled = true;\n const flush = () => {\n scheduled = false;\n listeners.forEach((l) => l());\n };\n if (typeof queueMicrotask === 'function') queueMicrotask(flush);\n else void Promise.resolve().then(flush);\n}\nfunction set(patch: Partial<State>) {\n state = { ...state, ...patch };\n emit();\n}\n\nexport function subscribeGraph(l: () => void): () => void {\n listeners.add(l);\n return () => listeners.delete(l);\n}\nexport function getGraphState(): State {\n return state;\n}\nconst SERVER: State = { ...state };\nexport function getGraphServerState(): State {\n return SERVER;\n}\n\nexport function enableInspector(endpoint?: string) {\n if (!state.enabled) set({ enabled: true });\n void loadGraph(endpoint);\n}\nexport function disableInspector() {\n if (state.enabled) set({ enabled: false });\n}\nexport function toggleInspector(endpoint?: string) {\n set({ enabled: !state.enabled });\n if (state.enabled) void loadGraph(endpoint);\n}\nexport function setMode(mode: GraphMode) {\n if (state.mode !== mode) set({ mode });\n}\nexport function setSelected(selected: Selected | null) {\n set({ selected });\n}\nexport function setSearch(search: string) {\n set({ search });\n}\nexport function toggleExpanded(id: string) {\n const expanded = new Set(state.expanded);\n if (expanded.has(id)) expanded.delete(id);\n else expanded.add(id);\n set({ expanded });\n}\nexport function showToast(toast: Toast) {\n set({ toast });\n if (toastTimer) clearTimeout(toastTimer);\n toastTimer = setTimeout(() => {\n toastTimer = null;\n set({ toast: null });\n }, 2600);\n}\n\nlet graphPromise: Promise<void> | null = null;\nexport function loadGraph(endpoint?: string, force = false): Promise<void> {\n if (!endpoint) {\n set({ status: 'empty' });\n return Promise.resolve();\n }\n if (!force && (state.status === 'ready' || state.status === 'loading')) {\n return graphPromise ?? Promise.resolve();\n }\n set({ status: 'loading' });\n graphPromise = (async () => {\n try {\n const res = await fetch(endpoint, { headers: { Accept: 'application/json' } });\n if (res.status === 404) return set({ graph: null, status: 'empty' });\n if (!res.ok) return set({ status: 'error' });\n const graph = (await res.json()) as ComponentGraph;\n set({ graph, status: graph.nodes?.length ? 'ready' : 'empty' });\n } catch {\n set({ status: 'error' });\n }\n })();\n return graphPromise;\n}\n","import { useMemo, useCallback, useSyncExternalStore } from 'react';\n\nimport type { ToolPanelProps } from '../../core/types';\nimport type { ComponentGraphNode } from '../../core/graph-types';\nimport { cx } from '../../core/styles';\nimport { useDevPanelConfig } from '../../core/config';\nimport { GraphSearch } from './Search';\nimport { NodeDetails } from './NodeDetails';\nimport { ComponentGraphTree } from './Tree';\nimport { ComponentGraphPageList } from './PageList';\nimport type { Selected, GraphMode } from './store';\nimport { IconX, IconGraph, IconLayers, IconPointer, IconFileCode } from '../../core/icons';\nimport { selectFromNode, formatForCopy } from './graph-utils';\nimport {\n setMode,\n loadGraph,\n setSearch,\n setSelected,\n showToast,\n toggleExpanded,\n getGraphState,\n subscribeGraph,\n toggleInspector,\n getGraphServerState,\n} from './store';\n\nconst TABS: Array<{ value: GraphMode; label: string; icon: React.ReactNode }> = [\n { value: 'hover', label: 'Hover', icon: <IconPointer size={14} /> },\n { value: 'graph', label: 'Graph', icon: <IconGraph size={14} /> },\n { value: 'page', label: 'Page', icon: <IconLayers size={14} /> },\n { value: 'file', label: 'File', icon: <IconFileCode size={14} /> },\n];\n\nasync function copy(text: string): Promise<boolean> {\n if (typeof navigator === 'undefined' || !navigator.clipboard) return false;\n return navigator.clipboard.writeText(text).then(\n () => true,\n () => false,\n );\n}\n\nexport function ComponentGraphPanel({ onClose }: ToolPanelProps) {\n const state = useSyncExternalStore(subscribeGraph, getGraphState, getGraphServerState);\n const config = useDevPanelConfig();\n const route = config.getRoute();\n const { enabled, mode, selected, graph, status, search, expanded } = state;\n\n const openLoc = useCallback(\n async (sel: Selected | null) => {\n const file = sel?.absFilePath ?? sel?.filePath;\n if (!file) {\n showToast({ message: 'No source path available', tone: 'error' });\n return;\n }\n const ok = await config.openInEditor?.({ file, line: sel?.line, column: sel?.column }, config.editor);\n showToast(ok === false ? { message: 'Editor unavailable — path copied', tone: 'info' } : { message: 'Opening in your editor…', tone: 'success' });\n },\n [config],\n );\n\n const copyInfo = useCallback(() => {\n if (!selected) return;\n void copy(formatForCopy(selected)).then((ok) => showToast({ message: ok ? 'Component info copied' : 'Copy failed', tone: ok ? 'success' : 'error' }));\n }, [selected]);\n\n const copyPath = useCallback(\n (sel: Selected | null) => {\n const path = sel?.filePath ?? sel?.absFilePath;\n if (!path) return showToast({ message: 'No path to copy', tone: 'info' });\n void copy(`${path}${sel?.line ? `:${sel.line}` : ''}`).then((ok) => showToast({ message: ok ? 'File path copied' : 'Copy failed', tone: ok ? 'success' : 'error' }));\n },\n [],\n );\n\n const selectName = useCallback(\n (name: string) => {\n const node = graph?.nodes.find((n) => n.name === name || n.id === name);\n if (node) setSelected(selectFromNode(graph, node));\n },\n [graph],\n );\n const selectNode = useCallback((node: ComponentGraphNode) => setSelected(selectFromNode(graph, node)), [graph]);\n const openNode = useCallback((node: ComponentGraphNode) => void openLoc(selectFromNode(graph, node)), [graph, openLoc]);\n const copyNode = useCallback((node: ComponentGraphNode) => copyPath(selectFromNode(graph, node)), [graph, copyPath]);\n\n const statusText = useMemo(() => {\n if (status === 'ready' && graph) return `${graph.nodes.length} components · ${graph.edges.length} relationships`;\n if (status === 'loading' || status === 'idle') return 'Loading component graph…';\n if (status === 'empty') return 'Graph not generated — run `npx dev-panel-graph` (or add an adapter)';\n return 'Graph endpoint unavailable.';\n }, [status, graph]);\n\n const details = (\n <NodeDetails\n selected={selected}\n onOpen={() => void openLoc(selected)}\n onCopyInfo={copyInfo}\n onCopyPath={() => copyPath(selected)}\n onSelectName={selectName}\n />\n );\n\n return (\n <div className=\"rdp-surface rdp-panel\" style={{ bottom: 88, right: 20 }}>\n <div className=\"rdp-header\">\n <IconGraph size={16} />\n <span className=\"rdp-title\" style={{ flex: 1 }}>\n Component Graph Inspector\n </span>\n {enabled && (\n <span className=\"rdp-chip\" style={{ background: 'var(--rdp-success)', color: '#06210f' }}>ON</span>\n )}\n <button type=\"button\" className=\"rdp-iconbtn-bare\" onClick={onClose} aria-label=\"Close\">\n <IconX size={16} />\n </button>\n </div>\n\n <div className=\"rdp-body\">\n {/* enable */}\n <div\n style={{\n padding: 12,\n borderRadius: 9,\n border: `1px solid ${enabled ? 'rgba(61,220,132,0.5)' : 'var(--rdp-border)'}`,\n background: enabled ? 'rgba(61,220,132,0.08)' : 'var(--rdp-bg-elev)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <span>\n <span className=\"rdp-title\" style={{ display: 'block' }}>\n Inspect mode\n </span>\n <span className=\"rdp-sub\">{enabled ? 'Hover the UI, click to lock · Esc to exit' : 'Enable, then hover the UI'}</span>\n </span>\n <button\n type=\"button\"\n className={cx('rdp-btn', enabled && 'rdp-btn-primary')}\n style={{ width: 'auto' }}\n onClick={() => toggleInspector(config.graphEndpoint)}\n >\n {enabled ? 'On' : 'Enable'}\n </button>\n </div>\n\n {/* tabs */}\n <div className=\"rdp-tabs\" style={{ marginTop: 12 }}>\n {TABS.map((t) => (\n <button\n key={t.value}\n type=\"button\"\n className=\"rdp-tab\"\n aria-selected={mode === t.value}\n onClick={() => {\n setMode(t.value);\n if (t.value === 'graph' || t.value === 'page') void loadGraph(config.graphEndpoint);\n }}\n >\n {t.icon}\n {t.label}\n </button>\n ))}\n </div>\n\n <div style={{ marginTop: 12 }}>\n {mode === 'hover' && (\n <div>\n <span className=\"rdp-section-label\">Last locked component</span>\n {details}\n </div>\n )}\n\n {mode === 'graph' && (\n <div>\n <div className=\"rdp-sub\" style={{ marginBottom: 6, color: status === 'ready' ? 'var(--rdp-success)' : 'var(--rdp-text-faint)' }}>\n {statusText}\n </div>\n {(status === 'empty' || status === 'error') && (\n <button type=\"button\" className=\"rdp-btn rdp-btn-sm\" style={{ marginBottom: 8 }} onClick={() => loadGraph(config.graphEndpoint, true)}>\n Retry graph load\n </button>\n )}\n <GraphSearch value={search} onChange={setSearch} />\n <div style={{ marginTop: 8 }}>\n <ComponentGraphTree\n graph={graph}\n selected={selected}\n search={search}\n expanded={expanded}\n onSelect={selectNode}\n onToggle={toggleExpanded}\n onOpen={openNode}\n onCopy={copyNode}\n />\n </div>\n {selected && !search.trim() && <div style={{ marginTop: 12 }}>{details}</div>}\n </div>\n )}\n\n {mode === 'page' && (\n <div>\n <ComponentGraphPageList\n graph={graph}\n route={route}\n selectedName={selected?.componentName}\n onSelect={selectNode}\n onOpen={openNode}\n onCopy={copyNode}\n />\n {selected && <div style={{ marginTop: 12 }}>{details}</div>}\n </div>\n )}\n\n {mode === 'file' && details}\n </div>\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\n\nimport { useDevPanelConfig } from '../../core/config';\nimport { isIgnored, resolveDisplay, resolveSelected } from './graph-utils';\nimport {\n setMode,\n showToast,\n setSelected,\n getGraphState,\n subscribeGraph,\n disableInspector,\n getGraphServerState,\n} from './store';\nimport { useSyncExternalStore } from 'react';\n\ninterface Hover {\n name: string;\n filePath?: string;\n line?: number;\n domTag: string;\n route?: string;\n rect: { top: number; left: number; width: number; height: number };\n x: number;\n y: number;\n}\n\n/** Always-mounted overlay. Renders nothing until inspect mode is on. pointer-events:none. */\nexport function ComponentGraphOverlay() {\n const state = useSyncExternalStore(subscribeGraph, getGraphState, getGraphServerState);\n const config = useDevPanelConfig();\n const [hover, setHover] = useState<Hover | null>(null);\n const route = config.getRoute();\n const { enabled } = state;\n\n const openSelected = useCallback(\n async (file?: string, line?: number, column?: number, name?: string) => {\n if (!file) {\n showToast({ message: 'No source path — generate the graph or use inspect build', tone: 'error' });\n return;\n }\n const ok = await config.openInEditor?.({ file, line, column }, config.editor);\n showToast(\n ok === false\n ? { message: `Editor unavailable — path copied (${name ?? ''})`, tone: 'info' }\n : { message: 'Opening in your editor…', tone: 'success' },\n );\n },\n [config],\n );\n\n useEffect(() => {\n if (!enabled) return undefined;\n let raf = 0;\n let last: PointerEvent | null = null;\n\n const onMove = (e: PointerEvent) => {\n last = e;\n if (raf) return;\n raf = requestAnimationFrame(() => {\n raf = 0;\n const ev = last;\n const target = ev?.target as Element | null;\n if (!ev || !target || !(target instanceof Element) || isIgnored(target)) {\n setHover(null);\n return;\n }\n const meta = resolveDisplay(target, getGraphState().graph, route);\n const r = target.getBoundingClientRect();\n setHover({\n name: meta.componentName,\n filePath: meta.filePath,\n line: meta.line,\n domTag: meta.domTag,\n route: meta.route,\n rect: { top: r.top, left: r.left, width: r.width, height: r.height },\n x: ev.clientX,\n y: ev.clientY,\n });\n });\n };\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') disableInspector();\n };\n const onClick = (e: MouseEvent) => {\n const target = e.target as Element | null;\n if (!target || !(target instanceof Element) || isIgnored(target)) return;\n const sel = resolveSelected(target, getGraphState().graph, route);\n e.preventDefault();\n e.stopPropagation();\n setSelected(sel);\n setMode('graph');\n if (e.metaKey || e.ctrlKey) {\n void openSelected(sel.absFilePath ?? sel.filePath, sel.line, sel.column, sel.componentName);\n } else {\n showToast({ message: `Locked ${sel.componentName}`, tone: 'success' });\n }\n };\n\n document.addEventListener('pointermove', onMove, { passive: true });\n document.addEventListener('keydown', onKey, true);\n document.addEventListener('click', onClick, true);\n return () => {\n if (raf) cancelAnimationFrame(raf);\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('keydown', onKey, true);\n document.removeEventListener('click', onClick, true);\n setHover(null);\n };\n }, [enabled, route, openSelected]);\n\n if (!enabled) return null;\n\n const flipX = typeof window !== 'undefined' && hover && hover.x + 374 > window.innerWidth;\n const flipY = typeof window !== 'undefined' && hover && hover.y + 140 > window.innerHeight;\n\n return (\n <div className=\"rdp-overlay\">\n {hover && (\n <div\n className=\"rdp-hl\"\n style={{ top: hover.rect.top, left: hover.rect.left, width: hover.rect.width, height: hover.rect.height }}\n />\n )}\n {hover && (\n <div\n className=\"rdp-tooltip\"\n style={{\n top: flipY ? undefined : hover.y + 14,\n bottom: flipY ? window.innerHeight - hover.y + 14 : undefined,\n left: flipX ? undefined : hover.x + 14,\n right: flipX ? window.innerWidth - hover.x + 14 : undefined,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, marginBottom: hover.filePath ? 4 : 0 }}>\n <span className=\"rdp-chip\" style={{ background: 'rgba(105,80,232,0.5)', color: '#fff' }}>\n {hover.name}\n </span>\n <span className=\"rdp-mono\" style={{ color: 'rgba(255,255,255,0.6)', fontSize: 11 }}>\n {`<${hover.domTag}>`}\n </span>\n </div>\n <div className=\"rdp-mono\" style={{ fontSize: 11.5, color: 'rgba(255,255,255,0.85)', wordBreak: 'break-all' }}>\n {hover.filePath ? `${hover.filePath}${hover.line ? `:${hover.line}` : ''}` : 'source resolved from graph on lock'}\n </div>\n {hover.route && (\n <div style={{ fontSize: 11, color: 'rgba(255,255,255,0.45)' }}>{hover.route}</div>\n )}\n <div style={{ fontSize: 10.5, marginTop: 4, color: 'rgba(255,255,255,0.5)' }}>\n click to lock · ⌘/Ctrl + click to open · Esc to exit\n </div>\n </div>\n )}\n {state.toast && (\n <div\n className=\"rdp-toast\"\n style={{\n color:\n state.toast.tone === 'success'\n ? 'var(--rdp-success)'\n : state.toast.tone === 'error'\n ? 'var(--rdp-error)'\n : '#fff',\n }}\n >\n {state.toast.message}\n </div>\n )}\n </div>\n );\n}\n","import type { ToolDefinition } from '../../core/types';\nimport { IconGraph } from '../../core/icons';\nimport { registerTool } from '../../core/registry';\nimport { ComponentGraphPanel } from './Panel';\nimport { ComponentGraphOverlay } from './Overlay';\n\nexport const componentGraphTool: ToolDefinition = {\n id: 'graph',\n title: 'Component Graph Inspector',\n subtitle: 'Inspect component tree & open source files',\n color: 'primary',\n icon: <IconGraph size={19} />,\n Panel: ComponentGraphPanel,\n Overlay: ComponentGraphOverlay,\n};\n\nexport function registerComponentGraph() {\n registerTool(componentGraphTool);\n}\n","import type { MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useRef, useState, useEffect, useCallback } from 'react';\n\nimport type { ToolDefinition } from './types';\nimport { colorVar } from './styles';\nimport { IconWrench, IconChevronRight } from './icons';\n\ntype Corner = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\nconst STORAGE_KEY = 'react-dev-panel:corner';\nconst GAP = 20;\nconst FAB = 52;\nconst DRAG_THRESHOLD = 5;\n\nfunction isCorner(v: string | null): v is Corner {\n return v === 'top-left' || v === 'top-right' || v === 'bottom-left' || v === 'bottom-right';\n}\nfunction readCorner(): Corner {\n if (typeof window === 'undefined') return 'bottom-right';\n try {\n const s = window.localStorage.getItem(STORAGE_KEY);\n if (isCorner(s)) return s;\n } catch {\n /* ignore */\n }\n return 'bottom-right';\n}\n\nfunction useDraggableCorner() {\n const [corner, setCorner] = useState<Corner>('bottom-right');\n const [drag, setDrag] = useState<{ x: number; y: number } | null>(null);\n const moved = useRef(false);\n const offset = useRef({ x: 0, y: 0 });\n\n useEffect(() => setCorner(readCorner()), []);\n\n const onPointerDown = useCallback((e: ReactPointerEvent<HTMLButtonElement>) => {\n if (e.button !== 0) return;\n const rect = e.currentTarget.getBoundingClientRect();\n offset.current = { x: e.clientX - rect.left, y: e.clientY - rect.top };\n moved.current = false;\n const sx = e.clientX;\n const sy = e.clientY;\n const move = (ev: PointerEvent) => {\n if (!moved.current && Math.hypot(ev.clientX - sx, ev.clientY - sy) < DRAG_THRESHOLD) return;\n moved.current = true;\n setDrag({ x: ev.clientX - offset.current.x, y: ev.clientY - offset.current.y });\n };\n const up = (ev: PointerEvent) => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n if (moved.current) {\n const cxp = ev.clientX - offset.current.x + FAB / 2;\n const cyp = ev.clientY - offset.current.y + FAB / 2;\n const next = `${cyp < window.innerHeight / 2 ? 'top' : 'bottom'}-${\n cxp < window.innerWidth / 2 ? 'left' : 'right'\n }` as Corner;\n setCorner(next);\n try {\n window.localStorage.setItem(STORAGE_KEY, next);\n } catch {\n /* ignore */\n }\n }\n setDrag(null);\n };\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n }, []);\n\n const onClickCapture = useCallback((e: ReactMouseEvent) => {\n if (moved.current) {\n e.stopPropagation();\n e.preventDefault();\n moved.current = false;\n }\n }, []);\n\n const isTop = corner.startsWith('top');\n const isLeft = corner.endsWith('left');\n const pos = drag\n ? { top: drag.y, left: drag.x }\n : {\n top: isTop ? GAP : undefined,\n bottom: isTop ? undefined : GAP,\n left: isLeft ? GAP : undefined,\n right: isLeft ? undefined : GAP,\n };\n return { pos, isTop, isLeft, onPointerDown, onClickCapture };\n}\n\nfunction ToolBadge({ tool }: { tool: ToolDefinition }) {\n const badge = tool.useBadge?.();\n if (!badge) return null;\n const bg =\n badge.tone === 'error'\n ? 'var(--rdp-error)'\n : badge.tone === 'success'\n ? 'var(--rdp-success)'\n : 'var(--rdp-bg-soft)';\n const color = badge.tone === 'success' ? '#06210f' : '#fff';\n return (\n <span className=\"rdp-chip\" style={{ background: bg, color }}>\n {badge.label}\n </span>\n );\n}\n\n/** Floating launcher: draggable FAB that opens a menu listing the registered tools. */\nexport function Launcher({\n tools,\n onOpenTool,\n}: {\n tools: ToolDefinition[];\n onOpenTool: (id: string) => void;\n}) {\n const { pos, isTop, isLeft, onPointerDown, onClickCapture } = useDraggableCorner();\n const [menuOpen, setMenuOpen] = useState(false);\n\n const menuPos = {\n top: isTop ? pos.top !== undefined ? (pos.top as number) + FAB + 8 : GAP + FAB + 8 : undefined,\n bottom: isTop ? undefined : GAP + FAB + 8,\n left: isLeft ? GAP : undefined,\n right: isLeft ? undefined : GAP,\n };\n\n return (\n <>\n <button\n type=\"button\"\n className=\"rdp-fab\"\n style={pos}\n onPointerDown={onPointerDown}\n onClickCapture={onClickCapture}\n onClick={() => setMenuOpen((v) => !v)}\n aria-label=\"Open Developer Tools\"\n aria-haspopup=\"menu\"\n >\n <IconWrench size={22} />\n </button>\n\n {menuOpen && (\n <>\n {/* click-away */}\n <div\n style={{ position: 'fixed', inset: 0, zIndex: 1 }}\n onClick={() => setMenuOpen(false)}\n aria-hidden\n />\n <div className=\"rdp-surface rdp-menu\" style={menuPos} role=\"menu\">\n <div className=\"rdp-header rdp-menu-head\">\n <span className=\"rdp-tile\" style={{ color: 'var(--rdp-accent)', background: 'rgba(105,80,232,0.16)' }}>\n <IconWrench size={17} />\n </span>\n <div>\n <div className=\"rdp-title\">Developer Tools</div>\n <div className=\"rdp-sub\">Internal utilities</div>\n </div>\n </div>\n <div style={{ padding: 8 }}>\n {tools.map((tool) => (\n <button\n key={tool.id}\n type=\"button\"\n className=\"rdp-row\"\n role=\"menuitem\"\n onClick={() => {\n onOpenTool(tool.id);\n setMenuOpen(false);\n }}\n >\n <span\n className=\"rdp-tile\"\n style={{ color: colorVar(tool.color), background: 'rgba(148,163,184,0.1)' }}\n >\n {tool.icon}\n </span>\n <span style={{ flex: 1, minWidth: 0 }}>\n <span className=\"rdp-title\" style={{ display: 'block' }}>\n {tool.title}\n </span>\n <span className=\"rdp-sub\" style={{ display: 'block' }}>\n {tool.subtitle}\n </span>\n </span>\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, color: 'var(--rdp-text-faint)' }}>\n <ToolBadge tool={tool} />\n <IconChevronRight size={16} />\n </span>\n </button>\n ))}\n </div>\n </div>\n </>\n )}\n </>\n );\n}\n","import type { CSSProperties } from 'react';\nimport { useState, useEffect, useMemo } from 'react';\n\nimport type { DevPanelConfig } from './types';\nimport { Launcher } from './Launcher';\nimport { resolveTools } from './registry';\nimport { injectBaseStyles } from './styles';\nimport { DevPanelConfigProvider } from './config';\n\n/**\n * The single component a host mounts (once, near the app root). Renders the floating launcher,\n * the active tool's panel, and every tool's always-on overlay — all gated by `enabled`.\n *\n * <DevPanel enabled={isInternalUser} getRoute={() => pathname} openInEditor={...} />\n */\nexport function DevPanel(config: DevPanelConfig) {\n const enabled =\n config.enabled ??\n (typeof process !== 'undefined' ? process.env.NODE_ENV !== 'production' : true);\n\n useEffect(() => {\n if (enabled) injectBaseStyles();\n }, [enabled]);\n\n if (!enabled) return null;\n return (\n <DevPanelConfigProvider config={config}>\n <DevPanelInner ids={config.tools} theme={config.theme} />\n </DevPanelConfigProvider>\n );\n}\n\nfunction DevPanelInner({\n ids,\n theme,\n}: {\n ids?: string[];\n theme?: { accent?: string; accentContrast?: string };\n}) {\n const tools = useMemo(() => resolveTools(ids), [ids]);\n const [openId, setOpenId] = useState<string | null>(null);\n\n // One-time tool init (console capture, perf observers, …).\n useEffect(() => {\n tools.forEach((t) => t.init?.());\n }, [tools]);\n\n const rootStyle: CSSProperties = {};\n if (theme?.accent) (rootStyle as Record<string, string>)['--rdp-accent'] = theme.accent;\n if (theme?.accentContrast)\n (rootStyle as Record<string, string>)['--rdp-accent-contrast'] = theme.accentContrast;\n\n const ActivePanel = tools.find((t) => t.id === openId)?.Panel ?? null;\n\n return (\n <div className=\"rdp-root\" style={rootStyle} data-rdp-ignore=\"\">\n <Launcher tools={tools} onOpenTool={setOpenId} />\n {ActivePanel && <ActivePanel onClose={() => setOpenId(null)} />}\n {tools.map((t) => (t.Overlay ? <t.Overlay key={t.id} /> : null))}\n </div>\n );\n}\n","import type { OpenInEditor } from './types';\n\n/**\n * Default endpoint paths the adapters mount and the client talks to. No leading underscore —\n * Next.js App Router treats `_`-prefixed segments as private (non-routable), so this path works\n * uniformly across the Next, Vite, and generic-server adapters.\n */\nexport const DEFAULT_GRAPH_ENDPOINT = '/dev-panel/graph';\nexport const DEFAULT_OPEN_ENDPOINT = '/dev-panel/open-file';\n\n/**\n * A client `openInEditor` that POSTs to a server endpoint (mounted by an adapter), which opens\n * the file in the editor running the project via `launch-editor`. Falls back to copying the\n * path when the endpoint is unreachable. Pass to `<DevPanel openInEditor={serverOpenInEditor} />`.\n */\nexport function createServerOpenInEditor(endpoint = DEFAULT_OPEN_ENDPOINT): OpenInEditor {\n return async (loc, editor = 'auto') => {\n try {\n const res = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ file: loc.file, line: loc.line, column: loc.column, editor }),\n });\n if (res.ok) return true;\n } catch {\n /* fall through to copy */\n }\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n await navigator.clipboard\n .writeText(`${loc.file}${loc.line ? `:${loc.line}` : ''}`)\n .catch(() => undefined);\n }\n return false;\n };\n}\n\n/** Ready-to-use server opener pointed at the default endpoint. */\nexport const serverOpenInEditor: OpenInEditor = createServerOpenInEditor();\n","/**\n * react-dev-panel — a framework-agnostic, self-contained floating dev panel for React.\n *\n * import { DevPanel } from 'react-dev-panel';\n * <DevPanel enabled={isInternalUser} getRoute={() => pathname} />\n *\n * Bundled tools register themselves on import (below). Hosts can add their own via\n * `registerTool` before mounting <DevPanel/>, or restrict/order via the `tools` prop.\n */\n\nimport { registerDevLogs } from './tools/dev-logs/index';\nimport { registerPagePerformance } from './tools/page-performance/index';\nimport { registerComponentGraph } from './tools/component-graph/index';\n\n// Register the bundled tools once, at import time.\nregisterDevLogs();\nregisterPagePerformance();\nregisterComponentGraph();\n\nexport { DevPanel } from './core/DevPanel';\nexport { registerTool, getRegisteredTools } from './core/registry';\nexport { defaultOpenInEditor, useDevPanelConfig } from './core/config';\nexport { injectBaseStyles } from './core/styles';\nexport {\n serverOpenInEditor,\n createServerOpenInEditor,\n DEFAULT_GRAPH_ENDPOINT,\n DEFAULT_OPEN_ENDPOINT,\n} from './core/server-open';\n\nexport type { ComponentGraph, ComponentGraphNode, ComponentGraphEdge } from './core/graph-types';\n\nexport type {\n DevPanelConfig,\n DevPanelTheme,\n ToolDefinition,\n ToolPanelProps,\n EditorType,\n SourceLocation,\n OpenInEditor,\n} from './core/types';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/registry.ts","../src/core/config.tsx","../src/tools/dev-logs/store.ts","../src/tools/dev-logs/index.tsx","../src/tools/page-performance/index.tsx","../src/tools/component-graph/Search.tsx","../src/tools/component-graph/NodeDetails.tsx","../src/tools/component-graph/graph-utils.ts","../src/tools/component-graph/Tree.tsx","../src/tools/component-graph/PageList.tsx","../src/tools/component-graph/store.ts","../src/tools/component-graph/Panel.tsx","../src/tools/component-graph/Overlay.tsx","../src/tools/component-graph/index.tsx","../src/core/Launcher.tsx","../src/core/DevPanel.tsx","../src/core/server-open.ts","../src/index.ts"],"names":["createContext","useMemo","jsx","useContext","useState","useCallback","Tooltip","IconButton","LuCheck","LuCopy","useTheme","Box","jsxs","Stack","Typography","ToggleButtonGroup","ToggleButton","alpha","Chip","LuChevronDown","Collapse","useSyncExternalStore","setSearch","LuBug","LuTrash2","LuX","TextField","InputAdornment","LuSearch","listeners","emit","installed","onLCP","onCLS","onINP","onFCP","onTTFB","EMPTY","LuGauge","Button","LuFileCode","LuLink","LuClipboardCopy","Fragment","LuChevronRight","LuArrowUp","useEffect","LuRefreshCw","LuMousePointerClick","LuWorkflow","LuLayers","LuFile","state","Switch","Divider","STORAGE_KEY","useRef","tools","Fab","LuWrench","Menu","MenuItem"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ToolDefinition } from './types';\n\n// Module-level registry. Bundled tools self-register on import; hosts can add their own via\n// `registerTool`. `DevPanel` reads this list (optionally filtered/ordered by config.tools).\nconst tools = new Map<string, ToolDefinition>();\n\nexport function registerTool(def: ToolDefinition): void {\n tools.set(def.id, def);\n}\n\nexport function getRegisteredTools(): ToolDefinition[] {\n return [...tools.values()];\n}\n\n/** Resolve the active tool list, honoring an optional id allow-list/order from config. */\nexport function resolveTools(ids?: string[]): ToolDefinition[] {\n if (!ids || ids.length === 0) return getRegisteredTools();\n return ids.map((id) => tools.get(id)).filter((t): t is ToolDefinition => Boolean(t));\n}\n","import type { ReactNode } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport type {\n EditorType,\n OpenInEditor,\n DevPanelConfig,\n SourceLocation,\n ResolvedDevPanelConfig,\n} from './types';\n\nfunction buildProtocolUrl(editor: EditorType, loc: SourceLocation): string | null {\n const line = loc.line ?? 1;\n const col = loc.column ?? 1;\n switch (editor) {\n case 'cursor':\n return `cursor://file/${loc.file}:${line}:${col}`;\n case 'webstorm':\n return `webstorm://open?file=${encodeURIComponent(loc.file)}&line=${line}&column=${col}`;\n case 'zed':\n return `zed://file/${loc.file}:${line}:${col}`;\n case 'vscode':\n case 'auto':\n default:\n return `vscode://file/${loc.file}:${line}:${col}`;\n }\n}\n\n/**\n * Fallback opener used when the host/adapter provides none: tries the editor's protocol URL,\n * then copies the path. Adapters (Next/Vite/server) replace this with a server-backed open that\n * launches the editor running the project regardless of OS protocol registration.\n */\nexport const defaultOpenInEditor: OpenInEditor = async (loc, editor = 'auto') => {\n const url = buildProtocolUrl(editor, loc);\n if (url && typeof window !== 'undefined') {\n try {\n window.location.assign(url);\n return true;\n } catch {\n /* fall through to copy */\n }\n }\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n await navigator.clipboard\n .writeText(`${loc.file}${loc.line ? `:${loc.line}` : ''}`)\n .catch(() => undefined);\n }\n return false;\n};\n\nconst DevPanelContext = createContext<ResolvedDevPanelConfig | null>(null);\n\nfunction resolve(config: DevPanelConfig): ResolvedDevPanelConfig {\n const enabled =\n config.enabled ??\n (typeof process !== 'undefined' ? process.env.NODE_ENV !== 'production' : true);\n return {\n enabled,\n editor: config.editor ?? 'auto',\n getRoute: config.getRoute ?? (() => (typeof location !== 'undefined' ? location.pathname : undefined)),\n openInEditor: config.openInEditor ?? defaultOpenInEditor,\n graphEndpoint: config.graphEndpoint,\n theme: config.theme ?? {},\n tools: config.tools,\n };\n}\n\nexport function DevPanelConfigProvider({\n config,\n children,\n}: {\n config: DevPanelConfig;\n children: ReactNode;\n}) {\n const value = useMemo(() => resolve(config), [config]);\n return <DevPanelContext.Provider value={value}>{children}</DevPanelContext.Provider>;\n}\n\nexport function useDevPanelConfig(): ResolvedDevPanelConfig {\n const ctx = useContext(DevPanelContext);\n if (!ctx) throw new Error('useDevPanelConfig must be used within <DevPanel> / DevPanelConfigProvider');\n return ctx;\n}\n","/**\n * In-browser developer log store. A bounded ring buffer capturing runtime activity so the\n * Developer Logs tool can surface it without a backend sink:\n * - client — uncaught errors, unhandled rejections, console.error/warn/log from app code.\n * - server — backend errors surfaced to the browser (e.g. Apollo error link console output).\n * - network — every fetch (method, status, duration, GraphQL op name/type, headers, bodies).\n *\n * Entries persist to sessionStorage (per-tab): they survive reloads/soft-nav, clear on tab close.\n * Consumed via useSyncExternalStore. Framework-agnostic (no React/MUI here).\n */\n\nexport type DevLogSource = 'client' | 'server' | 'network';\nexport type DevLogLevel = 'error' | 'warn' | 'info';\n\nexport type DevLogEntry = {\n id: string;\n timestamp: number;\n source: DevLogSource;\n level: DevLogLevel;\n message: string;\n detail?: string;\n stack?: string;\n requestHeaders?: string;\n requestBody?: string;\n requestBodyRaw?: string;\n responseHeaders?: string;\n responseBody?: string;\n /** Route the entry occurred on, so the tool can show logs page-wise. */\n path?: string;\n};\n\nconst MAX_ENTRIES = 500;\nconst STORAGE_KEY = 'react-dev-panel:dev-logs';\n\nlet entries: DevLogEntry[] = [];\nlet seq = 0;\nlet installed = false;\nlet hydrated = false;\nlet emitScheduled = false;\nlet persistTimer: ReturnType<typeof setTimeout> | null = null;\nconst listeners = new Set<() => void>();\nconst EMPTY: DevLogEntry[] = [];\n\nfunction emit() {\n if (emitScheduled) return;\n emitScheduled = true;\n const flush = () => {\n emitScheduled = false;\n listeners.forEach((listener) => listener());\n };\n if (typeof queueMicrotask === 'function') queueMicrotask(flush);\n else void Promise.resolve().then(flush);\n}\n\nfunction persist(): void {\n if (typeof window === 'undefined') return;\n let list = entries;\n for (let attempt = 0; attempt < 6; attempt += 1) {\n try {\n window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(list));\n return;\n } catch {\n if (!list.length) return;\n list = list.slice(0, Math.floor(list.length / 2));\n }\n }\n}\nfunction schedulePersist(): void {\n if (typeof window === 'undefined' || persistTimer) return;\n persistTimer = setTimeout(() => {\n persistTimer = null;\n persist();\n }, 500);\n}\nfunction hydrate(): void {\n if (hydrated || typeof window === 'undefined') return;\n hydrated = true;\n try {\n const raw = window.sessionStorage.getItem(STORAGE_KEY);\n if (!raw) return;\n const parsed = JSON.parse(raw) as DevLogEntry[];\n if (!Array.isArray(parsed)) return;\n entries = parsed.slice(0, MAX_ENTRIES);\n seq = entries.reduce((max, entry) => {\n const n = Number(String(entry.id).replace('log-', ''));\n return Number.isFinite(n) && n > max ? n : max;\n }, 0);\n emit();\n } catch {\n /* ignore corrupt storage */\n }\n}\n\nexport function getDevLogs(): DevLogEntry[] {\n return entries;\n}\nexport function getDevLogsServerSnapshot(): DevLogEntry[] {\n return EMPTY;\n}\nexport function subscribeDevLogs(listener: () => void): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\nexport function clearDevLogs(): void {\n entries = [];\n if (persistTimer) {\n clearTimeout(persistTimer);\n persistTimer = null;\n }\n if (typeof window !== 'undefined') {\n try {\n window.sessionStorage.removeItem(STORAGE_KEY);\n } catch {\n /* ignore */\n }\n }\n emit();\n}\nexport function errorCount(): number {\n return entries.reduce((n, e) => (e.level === 'error' ? n + 1 : n), 0);\n}\n\nexport function addDevLog(entry: Omit<DevLogEntry, 'id' | 'timestamp' | 'path'>): void {\n seq += 1;\n const next: DevLogEntry = {\n ...entry,\n id: `log-${seq}`,\n timestamp: Date.now(),\n path: typeof window !== 'undefined' ? window.location.pathname : undefined,\n };\n entries = [next, ...entries].slice(0, MAX_ENTRIES);\n emit();\n schedulePersist();\n}\n\nfunction safeString(value: unknown): string {\n if (typeof value === 'string') return value;\n if (value instanceof Error) return value.message;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction classifyApolloPayload(payload: unknown): DevLogSource {\n if (payload && typeof payload === 'object') {\n const p = payload as Record<string, unknown>;\n if (p.gqlErrors) return 'server';\n if (p.networkError || p.networkStatus) return 'network';\n }\n return 'server';\n}\n\nfunction captureConsole(level: DevLogLevel, args: unknown[]): void {\n const firstStr = typeof args[0] === 'string' ? (args[0] as string) : safeString(args[0]);\n if (firstStr.startsWith('[Apollo error]')) {\n const payload = args[1];\n addDevLog({\n source: classifyApolloPayload(payload),\n level,\n message: firstStr.replace('[Apollo error] ', '').trim() || 'Apollo error',\n detail: payload !== undefined ? safeString(payload) : undefined,\n });\n return;\n }\n const errorArg = args.find((a) => a instanceof Error) as Error | undefined;\n addDevLog({\n source: 'client',\n level,\n message: args.map(safeString).join(' ').trim() || `console.${level}`,\n stack: errorArg?.stack,\n });\n}\n\nconst NETWORK_IGNORE = ['/_next/', '/__nextjs', 'hot-update', 'webpack', '.map', '/monitoring'];\nfunction shouldIgnoreNetwork(url: string): boolean {\n return NETWORK_IGNORE.some((needle) => url.includes(needle));\n}\nfunction resolveRequest(input: RequestInfo | URL): { url: string; method: string } {\n if (typeof input === 'string') return { url: input, method: 'GET' };\n if (input instanceof URL) return { url: input.href, method: 'GET' };\n return { url: input.url, method: input.method || 'GET' };\n}\nfunction graphqlOperationName(body: BodyInit | null | undefined): string | undefined {\n if (typeof body !== 'string') return undefined;\n try {\n const parsed = JSON.parse(body) as { operationName?: string } | Array<{ operationName?: string }>;\n if (Array.isArray(parsed)) {\n const names = parsed.map((p) => p?.operationName).filter(Boolean);\n return names.length ? names.join(', ') : undefined;\n }\n return parsed?.operationName || undefined;\n } catch {\n return undefined;\n }\n}\ntype GraphqlOpType = 'query' | 'mutation' | 'subscription';\nfunction detectOpType(query: string | undefined, opName?: string): GraphqlOpType | undefined {\n if (typeof query !== 'string') return undefined;\n if (opName) {\n const named = new RegExp(`\\\\b(query|mutation|subscription)\\\\s+${opName}\\\\b`).exec(query);\n if (named) return named[1] as GraphqlOpType;\n }\n const keyword = /\\b(query|mutation|subscription)\\b/.exec(query);\n if (keyword) return keyword[1] as GraphqlOpType;\n return /^\\s*\\{/.test(query) ? 'query' : undefined;\n}\nfunction graphqlOperationType(body: BodyInit | null | undefined): GraphqlOpType | undefined {\n if (typeof body !== 'string') return undefined;\n try {\n const parsed = JSON.parse(body) as\n | { query?: string; operationName?: string }\n | Array<{ query?: string; operationName?: string }>;\n const ops = Array.isArray(parsed) ? parsed : [parsed];\n const types = ops.map((p) => detectOpType(p?.query, p?.operationName)).filter(Boolean);\n const unique = Array.from(new Set(types));\n return unique.length === 1 ? (unique[0] as GraphqlOpType) : undefined;\n } catch {\n return undefined;\n }\n}\nfunction collapseSignedQuery(u: URL): string {\n return u.searchParams.has('X-Amz-Signature') ? '?[signed]' : u.search;\n}\nfunction shortUrl(url: string): string {\n try {\n const u = new URL(url, window.location.origin);\n return u.pathname + collapseSignedQuery(u);\n } catch {\n return url;\n }\n}\nfunction redactedUrl(url: string): string {\n try {\n const u = new URL(url, window.location.origin);\n return `${u.origin}${u.pathname}${collapseSignedQuery(u)}`;\n } catch {\n return url;\n }\n}\nfunction networkLevel(status: number): DevLogLevel {\n if (status === 0 || status >= 500) return 'error';\n if (status >= 400) return 'warn';\n return 'info';\n}\nconst MAX_REASON_CHARS = 160;\nfunction errorReason(body: string | undefined): string | undefined {\n if (!body) return undefined;\n const text = body.trim();\n if (!text) return undefined;\n const xmlCode = /<Code>([^<]+)<\\/Code>/i.exec(text)?.[1];\n const xmlMessage = /<Message>([^<]+)<\\/Message>/i.exec(text)?.[1];\n if (xmlCode || xmlMessage) return [xmlCode, xmlMessage].filter(Boolean).join(': ').slice(0, MAX_REASON_CHARS);\n if (text[0] === '{' || text[0] === '[') {\n try {\n const parsed = JSON.parse(text) as {\n errors?: Array<{ message?: string }>;\n message?: unknown;\n error?: unknown;\n };\n const gql = parsed?.errors?.map((e) => e?.message).filter(Boolean).join('; ');\n const reason =\n gql ||\n (typeof parsed.message === 'string' ? parsed.message : undefined) ||\n (typeof parsed.error === 'string' ? parsed.error : undefined);\n if (reason) return reason.slice(0, MAX_REASON_CHARS);\n } catch {\n /* not JSON */\n }\n }\n const firstLine = text.split('\\n').find((line) => line.trim());\n return firstLine ? firstLine.slice(0, MAX_REASON_CHARS) : undefined;\n}\nfunction graphqlResponseErrors(body: string | undefined): { reason: string; partial: boolean } | undefined {\n if (!body) return undefined;\n const trimmed = body.trim();\n if (trimmed[0] !== '{' && trimmed[0] !== '[') return undefined;\n try {\n const parsed = JSON.parse(trimmed) as\n | { errors?: Array<{ message?: string; extensions?: { code?: string } }>; data?: unknown }\n | Array<{ errors?: Array<{ message?: string; extensions?: { code?: string } }> }>;\n const result = Array.isArray(parsed) ? parsed[0] : parsed;\n const errors = result?.errors;\n if (!Array.isArray(errors) || errors.length === 0) return undefined;\n const reason =\n errors\n .map((e) => {\n const code = e?.extensions?.code;\n return code ? `${code}: ${e?.message ?? ''}`.trim() : e?.message;\n })\n .filter(Boolean)\n .join('; ')\n .slice(0, MAX_REASON_CHARS) || 'GraphQL error';\n const data = (result as { data?: unknown })?.data;\n const partial =\n data != null && typeof data === 'object' && Object.values(data as Record<string, unknown>).some((v) => v != null);\n return { reason, partial };\n } catch {\n return undefined;\n }\n}\nconst MAX_BODY_CHARS = 50_000;\nfunction truncateBody(text: string): string {\n if (text.length <= MAX_BODY_CHARS) return text;\n return `${text.slice(0, MAX_BODY_CHARS)}\\n… [truncated ${text.length - MAX_BODY_CHARS} chars]`;\n}\nfunction prettyMaybeJson(text: string): string {\n const trimmed = text.trim();\n if (trimmed[0] !== '{' && trimmed[0] !== '[') return text;\n try {\n return JSON.stringify(JSON.parse(trimmed), null, 2);\n } catch {\n return text;\n }\n}\ntype GraphqlOp = { operationName?: string; query?: string; variables?: unknown };\nfunction formatGraphqlBody(parsed: unknown): string | null {\n const ops: GraphqlOp[] = Array.isArray(parsed) ? parsed : [parsed as GraphqlOp];\n if (!ops.length || !ops.every((op) => op && typeof op === 'object' && typeof op.query === 'string')) return null;\n return ops\n .map((op) => {\n const parts: string[] = [];\n if (op.operationName) parts.push(`# Operation: ${op.operationName}`);\n if (op.variables && Object.keys(op.variables as object).length > 0)\n parts.push(`# Variables\\n${JSON.stringify(op.variables, null, 2)}`);\n parts.push(`# Query\\n${(op.query as string).trim()}`);\n return parts.join('\\n\\n');\n })\n .join('\\n\\n———\\n\\n');\n}\nfunction formatBodyString(text: string): string {\n const trimmed = text.trim();\n if (trimmed[0] === '{' || trimmed[0] === '[') {\n try {\n const parsed = JSON.parse(trimmed);\n return formatGraphqlBody(parsed) ?? JSON.stringify(parsed, null, 2);\n } catch {\n return text;\n }\n }\n return text;\n}\nconst SENSITIVE_HEADERS = ['authorization', 'cookie', 'set-cookie', 'x-api-key', 'proxy-authorization'];\nfunction formatHeaders(source: Headers): string | undefined {\n const lines: string[] = [];\n source.forEach((value, key) => {\n const redacted = SENSITIVE_HEADERS.includes(key.toLowerCase()) ? '[redacted]' : value;\n lines.push(`${key}: ${redacted}`);\n });\n return lines.length ? lines.join('\\n') : undefined;\n}\nfunction requestHeaders(input: RequestInfo | URL, init?: RequestInit): string | undefined {\n const merged = new Headers();\n if (input instanceof Request) input.headers.forEach((value, key) => merged.set(key, value));\n if (init?.headers) new Headers(init.headers).forEach((value, key) => merged.set(key, value));\n return formatHeaders(merged);\n}\nfunction rawRequestBody(body: BodyInit | null | undefined): string | undefined {\n if (typeof body !== 'string') return undefined;\n return truncateBody(body);\n}\nfunction readableRequestBody(body: BodyInit | null | undefined): string | undefined {\n if (body == null) return undefined;\n if (typeof body === 'string') return truncateBody(formatBodyString(body));\n if (body instanceof URLSearchParams) return body.toString();\n const name = (body as { constructor?: { name?: string } }).constructor?.name;\n return `[${name || 'binary'} body — not shown]`;\n}\nasync function readResponseBody(res: Response): Promise<string | undefined> {\n try {\n const ct = res.headers.get('content-type') ?? '';\n if (ct && !/json|text|xml|graphql|javascript|csv|html/i.test(ct)) return `[${ct} response — not shown]`;\n const text = await res.text();\n if (!text) return undefined;\n return truncateBody(prettyMaybeJson(text));\n } catch {\n return undefined;\n }\n}\n\nfunction captureFetch(): void {\n if (typeof window.fetch !== 'function') return;\n const origFetch = window.fetch.bind(window);\n window.fetch = async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {\n const { url, method: inferredMethod } = resolveRequest(input);\n const method = (init?.method || inferredMethod || 'GET').toUpperCase();\n if (shouldIgnoreNetwork(url)) return origFetch(input, init);\n\n const opName = graphqlOperationName(init?.body ?? null);\n const opType = graphqlOperationType(init?.body ?? null);\n const reqHeaders = requestHeaders(input, init);\n const requestBody = readableRequestBody(init?.body ?? null);\n const requestBodyRaw = rawRequestBody(init?.body ?? null);\n const start = Date.now();\n\n const log = (status: number, statusText: string, errored: boolean, responseBody?: string, responseHeaders?: string) => {\n const ms = Date.now() - start;\n const opLabel = opName ? `${opType ? `${opType} ` : ''}${opName}` : undefined;\n const label = opLabel ? `${shortUrl(url)} · ${opLabel}` : shortUrl(url);\n const gqlErrors = !errored && status < 400 ? graphqlResponseErrors(responseBody) : undefined;\n const statusLabel = errored ? 'FAILED' : String(status);\n const reason = errored ? statusText : status >= 400 ? errorReason(responseBody) : gqlErrors?.reason;\n const level: DevLogLevel = errored\n ? 'error'\n : gqlErrors\n ? gqlErrors.partial\n ? 'warn'\n : 'error'\n : networkLevel(status);\n addDevLog({\n source: 'network',\n level,\n message: `${method} ${statusLabel} ${label} (${ms}ms)${reason ? ` — ${reason}` : ''}`,\n detail: `${method} ${redactedUrl(url)}\\n${errored ? statusText : `${status} ${statusText}`} · ${ms}ms${\n gqlErrors ? ` · GraphQL ${gqlErrors.partial ? 'partial error' : 'error'}` : ''\n }`,\n requestHeaders: reqHeaders,\n requestBody,\n requestBodyRaw,\n responseHeaders,\n responseBody,\n });\n };\n\n try {\n const res = await origFetch(input, init);\n let clone: Response | null = null;\n try {\n clone = res.clone();\n } catch {\n clone = null;\n }\n const resHeaders = formatHeaders(res.headers);\n if (clone) void readResponseBody(clone).then((body) => log(res.status, res.statusText, false, body, resHeaders));\n else log(res.status, res.statusText, false, undefined, resHeaders);\n return res;\n } catch (err) {\n log(0, err instanceof Error ? err.message : 'Network error', true);\n throw err;\n }\n };\n}\n\n/** Idempotently wraps console, global error handlers, and fetch. No-op on the server. */\nexport function installDevLogCapture(): void {\n if (installed || typeof window === 'undefined') return;\n installed = true;\n hydrate();\n captureFetch();\n window.addEventListener('pagehide', persist);\n\n const origError = console.error.bind(console);\n const origWarn = console.warn.bind(console);\n const origLog = console.log.bind(console);\n console.error = (...args: unknown[]) => {\n origError(...args);\n try {\n captureConsole('error', args);\n } catch {\n /* never break logging */\n }\n };\n console.warn = (...args: unknown[]) => {\n origWarn(...args);\n try {\n captureConsole('warn', args);\n } catch {\n /* ignore */\n }\n };\n console.log = (...args: unknown[]) => {\n origLog(...args);\n try {\n captureConsole('info', args);\n } catch {\n /* ignore */\n }\n };\n window.addEventListener('error', (event: ErrorEvent) => {\n addDevLog({\n source: 'client',\n level: 'error',\n message: event.message || 'Uncaught error',\n stack: event.error?.stack,\n detail: event.filename ? `${event.filename}:${event.lineno}:${event.colno}` : undefined,\n });\n });\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n const reason = event.reason as { message?: string; stack?: string } | undefined;\n addDevLog({\n source: 'client',\n level: 'error',\n message: reason?.message ? `Unhandled rejection: ${reason.message}` : 'Unhandled promise rejection',\n stack: reason?.stack,\n detail: safeString(event.reason),\n });\n });\n}\n","'use client';\n\nimport type { DevLogEntry, DevLogLevel, DevLogSource } from './store';\nimport type { ToolDefinition, ToolPanelProps } from '../../core/types';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Collapse from '@mui/material/Collapse';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport ToggleButton from '@mui/material/ToggleButton';\nimport { alpha, useTheme } from '@mui/material/styles';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\nimport { useMemo, useState, useCallback, useSyncExternalStore } from 'react';\nimport { LuX, LuBug, LuCopy, LuCheck, LuSearch, LuTrash2, LuChevronDown } from 'react-icons/lu';\n\nimport { registerTool } from '../../core/registry';\nimport { useDevPanelConfig } from '../../core/config';\nimport {\n getDevLogs,\n errorCount,\n clearDevLogs,\n subscribeDevLogs,\n installDevLogCapture,\n getDevLogsServerSnapshot,\n} from './store';\n\ntype SourceFilter = 'all' | DevLogSource;\ntype LevelFilter = 'all' | DevLogLevel;\n\nconst SOURCE_COLOR: Record<DevLogSource, 'warning' | 'info' | 'success'> = {\n server: 'warning',\n client: 'info',\n network: 'success',\n};\n\nfunction formatTime(ts: number): string {\n const d = new Date(ts);\n const pad = (n: number) => String(n).padStart(2, '0');\n return `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;\n}\n\ntype SectionVariant = { key: string; label: string; value: string };\ntype SectionTab = { key: string; label: string; value: string; variants?: SectionVariant[] };\ntype LogSection = { label: string; tabs: SectionTab[] };\n\nfunction buildSections(entry: DevLogEntry): LogSection[] {\n const sections: LogSection[] = [];\n const requestTabs: SectionTab[] = [];\n if (entry.requestBody) {\n const hasRaw = Boolean(entry.requestBodyRaw && entry.requestBodyRaw !== entry.requestBody);\n requestTabs.push({\n key: 'payload',\n label: 'Payload',\n value: entry.requestBody,\n variants: hasRaw\n ? [\n { key: 'pretty', label: 'Pretty', value: entry.requestBody },\n { key: 'raw', label: 'Raw', value: entry.requestBodyRaw as string },\n ]\n : undefined,\n });\n }\n if (entry.requestHeaders) requestTabs.push({ key: 'headers', label: 'Headers', value: entry.requestHeaders });\n if (requestTabs.length) sections.push({ label: 'Request', tabs: requestTabs });\n\n const responseTabs: SectionTab[] = [];\n if (entry.responseBody) responseTabs.push({ key: 'body', label: 'Body', value: entry.responseBody });\n if (entry.responseHeaders) responseTabs.push({ key: 'headers', label: 'Headers', value: entry.responseHeaders });\n if (responseTabs.length) sections.push({ label: 'Response', tabs: responseTabs });\n\n if (entry.stack) sections.push({ label: 'Stack trace', tabs: [{ key: 'stack', label: 'Stack trace', value: entry.stack }] });\n if (!sections.length && entry.detail) sections.push({ label: 'Detail', tabs: [{ key: 'detail', label: 'Detail', value: entry.detail }] });\n return sections;\n}\n\nconst TOGGLE_SX = {\n '& .MuiToggleButton-root': {\n py: 0,\n px: 0.75,\n height: 20,\n fontSize: '0.6rem',\n fontWeight: 700,\n lineHeight: 1,\n letterSpacing: 0.3,\n textTransform: 'uppercase',\n border: '1px solid',\n borderColor: 'divider',\n },\n} as const;\n\nfunction CopyButton({ value }: { value: string }) {\n const [copied, setCopied] = useState(false);\n const handleCopy = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n navigator.clipboard?.writeText(value).then(\n () => {\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1200);\n },\n () => undefined,\n );\n },\n [value],\n );\n return (\n <Tooltip title={copied ? 'Copied' : 'Copy'} placement=\"top\">\n <IconButton size=\"small\" onClick={handleCopy} sx={{ color: copied ? 'success.main' : undefined }}>\n {copied ? <LuCheck size={13} /> : <LuCopy size={13} />}\n </IconButton>\n </Tooltip>\n );\n}\n\nfunction SectionBlock({ section }: { section: LogSection }) {\n const theme = useTheme();\n const [activeTabKey, setActiveTabKey] = useState(section.tabs[0]?.key);\n const [variantByTab, setVariantByTab] = useState<Record<string, string>>({});\n const activeTab = section.tabs.find((t) => t.key === activeTabKey) ?? section.tabs[0];\n const activeVariantKey = variantByTab[activeTab.key] ?? activeTab.variants?.[0]?.key;\n const activeVariant = activeTab.variants?.find((v) => v.key === activeVariantKey);\n const displayValue = activeVariant?.value ?? activeTab.value;\n const showTabs = section.tabs.length > 1;\n return (\n <Box>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ px: 1, py: 0.25, gap: 0.5, flexWrap: 'wrap' }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.75} sx={{ minWidth: 0 }}>\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', fontWeight: 700, textTransform: 'uppercase', letterSpacing: 0.4 }}>\n {section.label}\n </Typography>\n {showTabs && (\n <ToggleButtonGroup size=\"small\" exclusive value={activeTab.key} onChange={(_, next) => next && setActiveTabKey(next)} sx={TOGGLE_SX}>\n {section.tabs.map((t) => (\n <ToggleButton key={t.key} value={t.key}>\n {t.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n )}\n </Stack>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\n {activeTab.variants && (\n <ToggleButtonGroup\n size=\"small\"\n exclusive\n value={activeVariantKey}\n onChange={(_, next) => next && setVariantByTab((prev) => ({ ...prev, [activeTab.key]: next }))}\n sx={TOGGLE_SX}\n >\n {activeTab.variants.map((v) => (\n <ToggleButton key={v.key} value={v.key}>\n {v.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n )}\n <CopyButton value={displayValue} />\n </Stack>\n </Stack>\n <Box\n component=\"pre\"\n sx={{\n m: 0,\n px: 1,\n pb: 1,\n fontFamily: 'monospace',\n fontSize: '0.7rem',\n color: 'text.secondary',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n overflowX: 'auto',\n maxHeight: 280,\n bgcolor: alpha(theme.palette.grey[500], 0.06),\n }}\n >\n {displayValue}\n </Box>\n </Box>\n );\n}\n\nfunction LogRow({ entry, showPath }: { entry: DevLogEntry; showPath: boolean }) {\n const [open, setOpen] = useState(false);\n const sections = useMemo(() => buildSections(entry), [entry]);\n const expandable = sections.length > 0;\n return (\n <Box sx={{ border: '1px solid', borderColor: 'divider', borderRadius: 1, overflow: 'hidden' }}>\n <Box\n onClick={expandable ? () => setOpen((v) => !v) : undefined}\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n px: 1,\n py: 0.75,\n cursor: expandable ? 'pointer' : 'default',\n '&:hover': expandable ? { bgcolor: 'action.hover' } : undefined,\n }}\n >\n <Chip\n label={entry.source}\n size=\"small\"\n color={SOURCE_COLOR[entry.source]}\n variant=\"soft\"\n sx={{ height: 18, fontSize: '0.6rem', textTransform: 'uppercase', fontWeight: 700, mt: 0.25, flexShrink: 0 }}\n />\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n sx={{\n fontFamily: 'monospace',\n fontSize: '0.75rem',\n color: entry.level === 'error' ? 'error.main' : 'text.primary',\n wordBreak: 'break-word',\n whiteSpace: 'pre-wrap',\n }}\n >\n {entry.message}\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ mt: 0.25 }}>\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', fontFamily: 'monospace' }}>\n {formatTime(entry.timestamp)}\n </Typography>\n {showPath && entry.path && (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', fontFamily: 'monospace', wordBreak: 'break-all' }}>\n {entry.path}\n </Typography>\n )}\n </Stack>\n </Box>\n {expandable && (\n <Box sx={{ flexShrink: 0, color: 'text.disabled', transform: open ? 'rotate(180deg)' : 'none', transition: 'transform 0.15s', mt: 0.25 }}>\n <LuChevronDown size={14} />\n </Box>\n )}\n </Box>\n {expandable && (\n <Collapse in={open} unmountOnExit>\n <Stack spacing={0.5} sx={{ borderTop: '1px solid', borderColor: 'divider', py: 0.5 }}>\n {sections.map((section) => (\n <SectionBlock key={section.label} section={section} />\n ))}\n </Stack>\n </Collapse>\n )}\n </Box>\n );\n}\n\nfunction DevLogsPanel({ onClose }: ToolPanelProps) {\n const logs = useSyncExternalStore(subscribeDevLogs, getDevLogs, getDevLogsServerSnapshot);\n const pathname = useDevPanelConfig().getRoute();\n\n const [source, setSource] = useState<SourceFilter>('all');\n const [level, setLevel] = useState<LevelFilter>('all');\n const [thisPageOnly, setThisPageOnly] = useState(true);\n const [search, setSearch] = useState('');\n\n const filtered = useMemo(() => {\n const term = search.trim().toLowerCase();\n return logs.filter((entry) => {\n if (source !== 'all' && entry.source !== source) return false;\n if (level !== 'all' && entry.level !== level) return false;\n if (thisPageOnly && entry.path && entry.path !== pathname) return false;\n if (term) {\n const haystack = `${entry.message} ${entry.detail ?? ''} ${entry.stack ?? ''}`.toLowerCase();\n if (!haystack.includes(term)) return false;\n }\n return true;\n });\n }, [logs, source, level, thisPageOnly, search, pathname]);\n\n return (\n <Box\n data-rdp-ignore=\"\"\n sx={{\n position: 'fixed',\n bottom: 96,\n right: 24,\n zIndex: (t) => t.zIndex.modal + 1,\n width: 'min(460px, calc(100vw - 32px))',\n maxHeight: 'min(70vh, 640px)',\n display: 'flex',\n flexDirection: 'column',\n borderRadius: 2,\n overflow: 'hidden',\n border: '1px solid',\n borderColor: 'divider',\n bgcolor: 'background.paper',\n boxShadow: 12,\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ px: 1.5, py: 1, borderBottom: '1px solid', borderColor: 'divider', flexShrink: 0 }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <LuBug size={16} />\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 700 }}>\n Developer Logs\n </Typography>\n <Chip label={`${filtered.length}/${logs.length}`} size=\"small\" variant=\"soft\" sx={{ height: 18, fontSize: '0.65rem' }} />\n </Stack>\n <Stack direction=\"row\" spacing={0.5}>\n <IconButton size=\"small\" onClick={clearDevLogs} disabled={logs.length === 0}>\n <LuTrash2 size={15} />\n </IconButton>\n <IconButton size=\"small\" onClick={onClose}>\n <LuX size={16} />\n </IconButton>\n </Stack>\n </Stack>\n\n <Stack spacing={1} sx={{ px: 1.5, py: 1, borderBottom: '1px solid', borderColor: 'divider', flexShrink: 0 }}>\n <Stack direction=\"row\" spacing={1} alignItems=\"center\" flexWrap=\"wrap\" useFlexGap>\n <ToggleButtonGroup size=\"small\" exclusive value={source} onChange={(_, v) => v && setSource(v)}>\n {(['all', 'client', 'server', 'network'] as const).map((v) => (\n <ToggleButton key={v} value={v} sx={{ px: 1, py: 0.25, fontSize: '0.7rem', textTransform: 'capitalize' }}>\n {v}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n <ToggleButton size=\"small\" value=\"thisPage\" selected={thisPageOnly} onChange={() => setThisPageOnly((v) => !v)} sx={{ px: 1, py: 0.25, fontSize: '0.7rem' }}>\n This page\n </ToggleButton>\n </Stack>\n <ToggleButtonGroup size=\"small\" exclusive value={level} onChange={(_, v) => v && setLevel(v)}>\n {(['all', 'error', 'warn', 'info'] as const).map((v) => (\n <ToggleButton key={v} value={v} sx={{ px: 1, py: 0.25, fontSize: '0.7rem', textTransform: 'capitalize' }}>\n {v}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n <TextField\n size=\"small\"\n placeholder=\"Search...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n fullWidth\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <LuSearch size={15} />\n </InputAdornment>\n ),\n },\n }}\n />\n </Stack>\n\n <Box sx={{ flex: 1, overflowY: 'auto', p: 1 }}>\n {filtered.length === 0 ? (\n <Typography variant=\"body2\" sx={{ color: 'text.disabled', textAlign: 'center', py: 4 }}>\n {logs.length === 0 ? 'No activity captured this session.' : 'No logs match the current filters.'}\n </Typography>\n ) : (\n <Stack spacing={0.75}>\n {filtered.map((entry) => (\n <LogRow key={entry.id} entry={entry} showPath={!thisPageOnly} />\n ))}\n </Stack>\n )}\n </Box>\n </Box>\n );\n}\n\nfunction useBadge() {\n const logs = useSyncExternalStore(subscribeDevLogs, getDevLogs, getDevLogsServerSnapshot);\n if (logs.length === 0) return null;\n const errors = errorCount();\n return errors > 0 ? { label: String(errors), tone: 'error' as const } : { label: String(logs.length), tone: 'neutral' as const };\n}\n\nexport const devLogsTool: ToolDefinition = {\n id: 'logs',\n title: 'Developer Logs',\n subtitle: 'Client, server & network activity',\n color: 'info',\n icon: <LuBug size={19} />,\n Panel: DevLogsPanel,\n useBadge,\n init: installDevLogCapture,\n};\n\nexport function registerDevLogs() {\n registerTool(devLogsTool);\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { useSyncExternalStore } from 'react';\nimport { LuX, LuGauge } from 'react-icons/lu';\nimport { onLCP, onCLS, onINP, onFCP, onTTFB, type Metric } from 'web-vitals';\n\nimport type { ToolDefinition, ToolPanelProps } from '../../core/types';\nimport { registerTool } from '../../core/registry';\n\ntype Rating = 'good' | 'needs-improvement' | 'poor';\ninterface MetricSnapshot {\n name: string;\n value: number;\n rating: Rating;\n unit: 'ms' | '';\n}\n\nconst HINTS: Record<string, string> = {\n LCP: 'Largest Contentful Paint — optimize hero image/font, reduce server time.',\n CLS: 'Cumulative Layout Shift — set sizes on images/embeds, reserve space.',\n INP: 'Interaction to Next Paint — break up long tasks, defer work.',\n FCP: 'First Contentful Paint — reduce render-blocking CSS/JS.',\n TTFB: 'Time to First Byte — server/edge latency, caching.',\n};\n\nlet metrics: Record<string, MetricSnapshot> = {};\nconst listeners = new Set<() => void>();\nfunction emit() {\n listeners.forEach((l) => l());\n}\nfunction record(m: Metric) {\n metrics = {\n ...metrics,\n [m.name]: { name: m.name, value: m.value, rating: m.rating as Rating, unit: m.name === 'CLS' ? '' : 'ms' },\n };\n emit();\n}\nlet installed = false;\nfunction installPerf(): void {\n if (installed || typeof window === 'undefined') return;\n installed = true;\n onLCP(record);\n onCLS(record);\n onINP(record);\n onFCP(record);\n onTTFB(record);\n}\nfunction subscribe(l: () => void): () => void {\n listeners.add(l);\n return () => listeners.delete(l);\n}\nfunction snapshot() {\n return metrics;\n}\nconst EMPTY: Record<string, MetricSnapshot> = {};\nfunction serverSnapshot() {\n return EMPTY;\n}\n\nconst RATING_COLOR: Record<Rating, 'success' | 'warning' | 'error'> = {\n good: 'success',\n 'needs-improvement': 'warning',\n poor: 'error',\n};\n\nfunction PagePerformancePanel({ onClose }: ToolPanelProps) {\n const data = useSyncExternalStore(subscribe, snapshot, serverSnapshot);\n const order = ['LCP', 'INP', 'CLS', 'FCP', 'TTFB'];\n\n return (\n <Box\n data-rdp-ignore=\"\"\n sx={{\n position: 'fixed',\n bottom: 96,\n right: 24,\n zIndex: (t) => t.zIndex.modal + 1,\n width: 'min(440px, calc(100vw - 32px))',\n maxHeight: 'min(70vh, 640px)',\n display: 'flex',\n flexDirection: 'column',\n borderRadius: 2,\n overflow: 'hidden',\n border: '1px solid',\n borderColor: 'divider',\n bgcolor: 'background.paper',\n boxShadow: 12,\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ px: 1.5, py: 1, borderBottom: '1px solid', borderColor: 'divider' }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <LuGauge size={16} />\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 700 }}>\n Page Performance\n </Typography>\n </Stack>\n <IconButton size=\"small\" onClick={onClose}>\n <LuX size={16} />\n </IconButton>\n </Stack>\n\n <Box sx={{ flex: 1, overflowY: 'auto', p: 1.5 }}>\n {order.every((k) => !data[k]) && (\n <Typography variant=\"body2\" sx={{ color: 'text.disabled' }}>\n Collecting Web Vitals… interact with the page (INP needs an interaction).\n </Typography>\n )}\n {order.map((key) => {\n const m = data[key];\n if (!m) return null;\n return (\n <Box key={key} sx={{ py: 1, borderBottom: '1px solid', borderColor: 'divider' }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Chip\n label={m.name}\n size=\"small\"\n color={RATING_COLOR[m.rating]}\n variant=\"soft\"\n sx={{ height: 20, fontSize: '0.65rem', fontWeight: 700 }}\n />\n <Typography variant=\"body2\" sx={{ fontFamily: 'monospace', fontWeight: 700 }}>\n {m.unit === 'ms' ? Math.round(m.value) : m.value.toFixed(3)}\n {m.unit}\n </Typography>\n <Typography variant=\"caption\" sx={{ color: `${RATING_COLOR[m.rating]}.main`, ml: 'auto' }}>\n {m.rating}\n </Typography>\n </Stack>\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', display: 'block', mt: 0.25 }}>\n {HINTS[key]}\n </Typography>\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport const pagePerformanceTool: ToolDefinition = {\n id: 'perf',\n title: 'Page Performance',\n subtitle: 'Web Vitals & fix suggestions',\n color: 'warning',\n icon: <LuGauge size={19} />,\n Panel: PagePerformancePanel,\n init: installPerf,\n};\n\nexport function registerPagePerformance() {\n registerTool(pagePerformanceTool);\n}\n","'use client';\n\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { LuSearch } from 'react-icons/lu';\n\nexport function GraphSearch({\n value,\n onChange,\n placeholder = 'Search components…',\n}: {\n value: string;\n onChange: (v: string) => void;\n placeholder?: string;\n}) {\n return (\n <TextField\n size=\"small\"\n fullWidth\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <LuSearch size={15} />\n </InputAdornment>\n ),\n },\n }}\n />\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha } from '@mui/material/styles';\nimport { LuCopy, LuLink, LuFileCode, LuClipboardCopy } from 'react-icons/lu';\n\nimport type { Selected } from './store';\nimport type { EditorType } from '../../core/types';\n\nconst EDITORS: Array<{ key: EditorType; label: string }> = [\n { key: 'vscode', label: 'VS Code' },\n { key: 'cursor', label: 'Cursor' },\n { key: 'webstorm', label: 'WebStorm' },\n];\n\nfunction Chips({ names, onSelect }: { names: string[]; onSelect: (n: string) => void }) {\n return (\n <Stack direction=\"row\" spacing={0.5} useFlexGap sx={{ flexWrap: 'wrap' }}>\n {names.map((n) => (\n <Chip key={n} label={n} size=\"small\" variant=\"outlined\" onClick={() => onSelect(n)} sx={{ height: 18, fontSize: '0.62rem', fontFamily: 'monospace' }} />\n ))}\n </Stack>\n );\n}\n\nfunction Row({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <Stack direction=\"row\" spacing={1} sx={{ mt: 0.5 }}>\n <Typography variant=\"caption\" sx={{ minWidth: 56, color: 'text.disabled', fontWeight: 600, flexShrink: 0 }}>\n {label}\n </Typography>\n <Box sx={{ minWidth: 0, flex: 1 }}>{children}</Box>\n </Stack>\n );\n}\n\nexport function NodeDetails({\n selected,\n editor,\n onOpen,\n onOpenEditor,\n onCopyInfo,\n onCopyPath,\n onSelectName,\n}: {\n selected: Selected | null;\n editor: EditorType;\n onOpen: () => void;\n onOpenEditor: (editor: EditorType) => void;\n onCopyInfo: () => void;\n onCopyPath: () => void;\n onSelectName: (name: string) => void;\n}) {\n if (!selected) {\n return (\n <Typography variant=\"body2\" sx={{ color: 'text.disabled', px: 0.5, py: 1 }}>\n Nothing selected. Enable inspect mode and click a component, or pick one from the tree.\n </Typography>\n );\n }\n return (\n <Box sx={(t) => ({ p: 1.25, borderRadius: 1.5, border: '1px solid', borderColor: 'divider', bgcolor: alpha(t.palette.grey[500], 0.06) })}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.75}>\n <Chip label={selected.componentName} size=\"small\" color=\"primary\" variant=\"soft\" sx={{ height: 20, fontSize: '0.68rem', fontWeight: 700 }} />\n {selected.domTag && (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', fontFamily: 'monospace' }}>{`<${selected.domTag}>`}</Typography>\n )}\n </Stack>\n\n {selected.filePath ? (\n <Typography variant=\"caption\" sx={{ display: 'block', mt: 0.75, fontFamily: 'monospace', fontSize: '0.68rem', wordBreak: 'break-all', color: 'text.secondary' }}>\n {selected.filePath}\n {selected.line ? `:${selected.line}` : ''}\n {selected.line && selected.column ? `:${selected.column}` : ''}\n </Typography>\n ) : (\n <Typography variant=\"caption\" sx={{ display: 'block', mt: 0.75, color: 'warning.main' }}>\n No source path — run the graph generator (npx dev-panel-graph) or mount an adapter.\n </Typography>\n )}\n\n {selected.route && (\n <Row label=\"Route\">\n <Typography variant=\"caption\" sx={{ fontFamily: 'monospace' }}>\n {selected.route}\n </Typography>\n </Row>\n )}\n {selected.parent && (\n <Row label=\"Parent\">\n <Chips names={[selected.parent]} onSelect={onSelectName} />\n </Row>\n )}\n {selected.children.length > 0 && (\n <Row label=\"Renders\">\n <Chips names={selected.children} onSelect={onSelectName} />\n </Row>\n )}\n {selected.imports.length > 0 && (\n <Row label=\"Imports\">\n <Chips names={selected.imports} onSelect={onSelectName} />\n </Row>\n )}\n {selected.props && selected.props.length > 0 && (\n <Row label=\"Props\">\n <Box sx={{ fontFamily: 'monospace', fontSize: '0.66rem', color: 'text.secondary' }}>\n {selected.props.map((p) => (\n <Box key={p.name} component=\"span\" sx={{ mr: 1, display: 'inline-block' }}>\n <Box component=\"span\" sx={{ color: 'primary.main' }}>\n {p.name}\n </Box>\n ={p.value}\n </Box>\n ))}\n </Box>\n </Row>\n )}\n\n <Button fullWidth variant=\"contained\" startIcon={<LuFileCode size={14} />} onClick={onOpen} sx={{ textTransform: 'none', fontSize: '0.72rem', py: 0.4, mt: 1.25 }}>\n Open in editor\n </Button>\n {/* Override the auto-detected editor for this open. */}\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} useFlexGap sx={{ flexWrap: 'wrap', mt: 0.75 }}>\n <Typography variant=\"caption\" sx={{ color: 'text.disabled' }}>\n force:\n </Typography>\n {EDITORS.map((opt) => (\n <Button\n key={opt.key}\n size=\"small\"\n variant={opt.key === editor ? 'contained' : 'text'}\n startIcon={<LuLink size={12} />}\n onClick={() => onOpenEditor(opt.key)}\n sx={{ textTransform: 'none', fontSize: '0.66rem', py: 0.1, minWidth: 0 }}\n >\n {opt.label}\n </Button>\n ))}\n </Stack>\n <Stack direction=\"row\" spacing={1} sx={{ mt: 1 }}>\n <Tooltip title=\"Copy component info\" placement=\"top\">\n <IconButton size=\"small\" onClick={onCopyInfo} sx={{ border: '1px solid', borderColor: 'divider', borderRadius: 1 }}>\n <LuClipboardCopy size={15} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Copy file path\" placement=\"top\">\n <span>\n <IconButton size=\"small\" onClick={onCopyPath} disabled={!selected.filePath && !selected.absFilePath} sx={{ border: '1px solid', borderColor: 'divider', borderRadius: 1 }}>\n <LuCopy size={15} />\n </IconButton>\n </span>\n </Tooltip>\n </Stack>\n </Box>\n );\n}\n","/**\n * Runtime helpers for the Component Graph Inspector: a memoized graph index, fiber-tree walking,\n * graph-aware component resolution (climb to the nearest ancestor that's in the graph), a safe\n * props preview, and a live \"what's mounted on this page\" scan. All defensive — React internals\n * can vary between versions, so every read is guarded.\n */\nimport type { ComponentGraph, ComponentGraphNode } from '../../core/graph-types';\nimport type { Selected, PropEntry } from './store';\n\n// ── index ───────────────────────────────────────────────────────────────────\ninterface GraphIndex {\n byName: Map<string, ComponentGraphNode>;\n childrenOf: Map<string, string[]>;\n parentsOf: Map<string, string[]>;\n importsOf: Map<string, string[]>;\n}\nconst indexCache = new WeakMap<ComponentGraph, GraphIndex>();\nfunction pushUnique(map: Map<string, string[]>, k: string, v: string) {\n const a = map.get(k);\n if (a) {\n if (!a.includes(v)) a.push(v);\n } else map.set(k, [v]);\n}\nfunction getIndex(graph: ComponentGraph | null): GraphIndex | null {\n if (!graph) return null;\n let idx = indexCache.get(graph);\n if (idx) return idx;\n idx = { byName: new Map(), childrenOf: new Map(), parentsOf: new Map(), importsOf: new Map() };\n for (const n of graph.nodes) {\n idx.byName.set(n.id, n);\n idx.byName.set(n.name, n);\n }\n for (const e of graph.edges) {\n if (e.type === 'renders') {\n pushUnique(idx.childrenOf, e.from, e.to);\n pushUnique(idx.parentsOf, e.to, e.from);\n } else if (e.type === 'route') {\n pushUnique(idx.parentsOf, e.to, e.from);\n } else if (e.type === 'imports') {\n pushUnique(idx.importsOf, e.from, e.to);\n }\n }\n indexCache.set(graph, idx);\n return idx;\n}\n\nexport function findNode(graph: ComponentGraph | null, name: string): ComponentGraphNode | null {\n return getIndex(graph)?.byName.get(name) ?? null;\n}\nexport function getParents(graph: ComponentGraph | null, id: string): string[] {\n return getIndex(graph)?.parentsOf.get(id) ?? [];\n}\nexport function getChildren(graph: ComponentGraph | null, id: string): string[] {\n return getIndex(graph)?.childrenOf.get(id) ?? [];\n}\nexport function getImports(graph: ComponentGraph | null, id: string): string[] {\n return getIndex(graph)?.importsOf.get(id) ?? [];\n}\nexport function searchNodes(graph: ComponentGraph | null, query: string, limit = 40): ComponentGraphNode[] {\n if (!graph) return [];\n const q = query.trim().toLowerCase();\n const matches = q\n ? graph.nodes.filter((n) => n.name.toLowerCase().includes(q) || n.filePath.toLowerCase().includes(q))\n : graph.nodes.filter((n) => n.type === 'component');\n matches.sort((a, b) => (a.type !== b.type ? (a.type === 'component' ? -1 : 1) : a.name.localeCompare(b.name)));\n return matches.slice(0, limit);\n}\n\n// ── path helpers ─────────────────────────────────────────────────────────────\nfunction isAbs(p: string): boolean {\n return p.startsWith('/') || /^[A-Za-z]:[\\\\/]/.test(p);\n}\nexport function toDisplayPath(graph: ComponentGraph | null, file: string): string {\n const root = graph?.root;\n if (root && file.startsWith(root)) return file.slice(root.length).replace(/^[/\\\\]/, '');\n return file;\n}\nexport function toAbsPath(graph: ComponentGraph | null, file: string): string | undefined {\n if (isAbs(file)) return file;\n return graph?.root ? `${graph.root}/${file}` : undefined;\n}\n\n// ── fiber ────────────────────────────────────────────────────────────────────\ninterface FiberLike {\n type: unknown;\n return: FiberLike | null;\n child?: FiberLike | null;\n sibling?: FiberLike | null;\n memoizedProps?: Record<string, unknown> | null;\n}\nfunction getFiber(node: Element): FiberLike | null {\n const key = Object.keys(node).find(\n (k) => k.startsWith('__reactFiber$') || k.startsWith('__reactInternalInstance$'),\n );\n return key ? ((node as unknown as Record<string, FiberLike>)[key] ?? null) : null;\n}\nfunction getDisplayName(type: unknown): string | null {\n if (!type || typeof type === 'string') return null;\n if (typeof type === 'function') {\n const fn = type as { displayName?: string; name?: string };\n return fn.displayName || fn.name || null;\n }\n const o = type as { displayName?: string; render?: unknown; type?: unknown };\n if (o.displayName) return o.displayName;\n if (o.render) return getDisplayName(o.render);\n if (o.type) return getDisplayName(o.type);\n return null;\n}\nfunction chain(el: Element): string[] {\n const out: string[] = [];\n try {\n let f = getFiber(el);\n let hops = 0;\n while (f && hops < 200) {\n const n = getDisplayName(f.type);\n if (n && out[out.length - 1] !== n) out.push(n);\n f = f.return;\n hops += 1;\n }\n } catch {\n /* ignore */\n }\n return out;\n}\n\nexport const IGNORE_ATTR = 'data-rdp-ignore';\nexport function isIgnored(el: Element | null): boolean {\n return !!el?.closest(`[${IGNORE_ATTR}]`);\n}\n\nfunction summarize(v: unknown): string | null {\n if (v == null) return String(v);\n switch (typeof v) {\n case 'string':\n return v.length > 40 ? `\"${v.slice(0, 40)}…\"` : `\"${v}\"`;\n case 'number':\n case 'boolean':\n return String(v);\n case 'function':\n return 'ƒ';\n case 'object':\n if (Array.isArray(v)) return `Array(${v.length})`;\n if ((v as { $$typeof?: symbol }).$$typeof) return null;\n return '{…}';\n default:\n return null;\n }\n}\nexport function extractProps(el: Element): PropEntry[] | undefined {\n try {\n let f = getFiber(el);\n while (f && typeof f.type === 'string') f = f.return;\n const props = f?.memoizedProps;\n if (!props || typeof props !== 'object') return undefined;\n const out: PropEntry[] = [];\n for (const name of Object.keys(props)) {\n if (name === 'children') continue;\n const s = summarize(props[name]);\n if (s == null) continue;\n out.push({ name, value: s });\n if (out.length >= 12) break;\n }\n return out.length ? out : undefined;\n } catch {\n return undefined;\n }\n}\n\ninterface RawMeta {\n componentName: string;\n filePath?: string;\n line?: number;\n column?: number;\n domTag: string;\n}\n// Reads data-dev-* attrs if a build transform injected them, else the fiber component name.\nfunction extractRaw(el: Element): RawMeta {\n const host = el.closest('[data-dev-file], [data-dev-component]');\n const attrFile = host?.getAttribute('data-dev-file') ?? undefined;\n const attrLine = host?.getAttribute('data-dev-line');\n const attrCol = host?.getAttribute('data-dev-column');\n let fiberName: string | null = null;\n try {\n fiberName = chain(el)[0] ?? null;\n } catch {\n /* ignore */\n }\n const domTag = el.tagName.toLowerCase();\n return {\n componentName: fiberName || host?.getAttribute('data-dev-component') || domTag,\n filePath: attrFile,\n line: attrLine ? Number(attrLine) : undefined,\n column: attrCol ? Number(attrCol) : undefined,\n domTag,\n };\n}\n\nfunction graphMatch(el: Element, graph: ComponentGraph | null, fallbackName: string) {\n const idx = getIndex(graph);\n if (idx) {\n const name = chain(el).find((n) => idx.byName.has(n));\n if (name) return { componentName: name, node: idx.byName.get(name) ?? null };\n }\n return { componentName: fallbackName, node: findNode(graph, fallbackName) };\n}\n\n/** Lightweight resolution for the hover tooltip. */\nexport function resolveDisplay(el: Element, graph: ComponentGraph | null, route?: string) {\n const raw = extractRaw(el);\n const { componentName, node } = graphMatch(el, graph, raw.componentName);\n return {\n componentName,\n filePath: raw.filePath ?? node?.filePath,\n line: raw.line ?? node?.line,\n domTag: raw.domTag,\n route,\n };\n}\n\n/** Full selection for a locked element, merged with the matching graph node. */\nexport function resolveSelected(\n el: Element,\n graph: ComponentGraph | null,\n route?: string,\n): Selected {\n const raw = extractRaw(el);\n const { componentName, node } = graphMatch(el, graph, raw.componentName);\n const rel = node?.filePath;\n const absFromAttr = raw.filePath && isAbs(raw.filePath) ? raw.filePath : undefined;\n const absFilePath = absFromAttr ?? (rel ? toAbsPath(graph, rel) : undefined);\n const display = rel ?? (raw.filePath ? toDisplayPath(graph, raw.filePath) : undefined);\n const parents = node ? getParents(graph, node.id) : [];\n return {\n componentName,\n filePath: display,\n absFilePath,\n line: raw.line ?? node?.line,\n column: raw.column ?? node?.column,\n route: route ?? node?.route,\n domTag: raw.domTag,\n parent: parents[0],\n parents,\n children: node ? getChildren(graph, node.id) : [],\n imports: node ? getImports(graph, node.id) : [],\n props: extractProps(el),\n source: 'hover',\n nodeId: node?.id,\n };\n}\n\nexport function selectFromNode(graph: ComponentGraph | null, node: ComponentGraphNode): Selected {\n return {\n componentName: node.name,\n filePath: node.filePath,\n absFilePath: toAbsPath(graph, node.filePath),\n line: node.line,\n column: node.column,\n route: node.route,\n parent: getParents(graph, node.id)[0],\n parents: getParents(graph, node.id),\n children: getChildren(graph, node.id),\n imports: getImports(graph, node.id),\n source: 'graph',\n nodeId: node.id,\n };\n}\n\nexport interface MountedComponent {\n name: string;\n node: ComponentGraphNode;\n count: number;\n}\n/** Walk the live fiber tree; list app components mounted on the current page (in the graph). */\nexport function collectMounted(graph: ComponentGraph | null): MountedComponent[] {\n const idx = getIndex(graph);\n if (!idx || typeof document === 'undefined') return [];\n try {\n let root: FiberLike | null = null;\n const all = document.body.getElementsByTagName('*');\n for (let i = 0; i < all.length; i += 1) {\n let f = getFiber(all[i]);\n if (f) {\n let g = 0;\n while (f.return && g < 100000) {\n f = f.return;\n g += 1;\n }\n root = f;\n break;\n }\n }\n if (!root) return [];\n const counts = new Map<string, number>();\n const stack: Array<FiberLike | null | undefined> = [root];\n let visited = 0;\n while (stack.length && visited < 200000) {\n const cur = stack.pop();\n if (!cur) continue;\n visited += 1;\n const name = getDisplayName(cur.type);\n if (name) {\n const node = idx.byName.get(name);\n if (node && node.type === 'component') counts.set(name, (counts.get(name) ?? 0) + 1);\n }\n if (cur.child) stack.push(cur.child);\n if (cur.sibling) stack.push(cur.sibling);\n }\n return [...counts.entries()]\n .map(([name, count]) => ({ name, node: idx.byName.get(name) as ComponentGraphNode, count }))\n .sort((a, b) => a.name.localeCompare(b.name));\n } catch {\n return [];\n }\n}\n\nexport function formatForCopy(s: Selected): string {\n const lines = [`Component: ${s.componentName}`];\n if (s.filePath) lines.push(`File: ${s.filePath}${s.line ? `:${s.line}` : ''}`);\n if (s.route) lines.push(`Route: ${s.route}`);\n if (s.parent) lines.push(`Parent: ${s.parent}`);\n if (s.children.length) lines.push(`Children: ${s.children.join(', ')}`);\n if (s.imports.length) lines.push(`Imports: ${s.imports.join(', ')}`);\n return lines.join('\\n');\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha } from '@mui/material/styles';\nimport { LuCopy, LuArrowUp, LuFileCode, LuChevronDown, LuChevronRight } from 'react-icons/lu';\n\nimport type { Selected } from './store';\nimport type { ComponentGraph, ComponentGraphNode } from '../../core/graph-types';\nimport { findNode, getChildren, searchNodes } from './graph-utils';\n\nconst MAX_DEPTH = 6;\n\nexport interface TreeProps {\n graph: ComponentGraph | null;\n selected: Selected | null;\n search: string;\n expanded: ReadonlySet<string>;\n onSelect: (node: ComponentGraphNode) => void;\n onToggle: (id: string) => void;\n onOpen: (node: ComponentGraphNode) => void;\n onCopy: (node: ComponentGraphNode) => void;\n}\n\nfunction Label({ children }: { children: ReactNode }) {\n return (\n <Typography variant=\"caption\" sx={{ display: 'block', mt: 1, mb: 0.25, color: 'text.disabled', fontWeight: 700, textTransform: 'uppercase', letterSpacing: 0.4, fontSize: '0.6rem' }}>\n {children}\n </Typography>\n );\n}\n\nfunction RowActions({ node, onOpen, onCopy }: { node: ComponentGraphNode; onOpen: (n: ComponentGraphNode) => void; onCopy: (n: ComponentGraphNode) => void }) {\n return (\n <>\n <Tooltip title=\"Open in editor\" placement=\"top\">\n <IconButton size=\"small\" sx={{ p: 0.25 }} onClick={(e) => { e.stopPropagation(); onOpen(node); }}>\n <LuFileCode size={13} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Copy file path\" placement=\"top\">\n <IconButton size=\"small\" sx={{ p: 0.25 }} onClick={(e) => { e.stopPropagation(); onCopy(node); }}>\n <LuCopy size={13} />\n </IconButton>\n </Tooltip>\n </>\n );\n}\n\nfunction RowShell({\n depth = 0,\n active = false,\n caret,\n label,\n isRoute,\n onLabel,\n actions,\n}: {\n depth?: number;\n active?: boolean;\n caret?: ReactNode;\n label: string;\n isRoute?: boolean;\n onLabel: () => void;\n actions?: ReactNode;\n}) {\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n spacing={0.5}\n sx={(t) => ({\n pl: 0.5 + depth * 1.5,\n pr: 0.5,\n py: 0.25,\n borderRadius: 1,\n bgcolor: active ? alpha(t.palette.primary.main, 0.16) : 'transparent',\n '&:hover': { bgcolor: active ? alpha(t.palette.primary.main, 0.2) : 'action.hover' },\n '&:hover .rdp-row-actions': { opacity: 1 },\n })}\n >\n <Box sx={{ width: 16, display: 'grid', placeItems: 'center', color: 'text.disabled' }}>{caret}</Box>\n <Typography\n onClick={onLabel}\n variant=\"caption\"\n sx={{\n flex: 1,\n minWidth: 0,\n cursor: 'pointer',\n fontWeight: active ? 700 : 500,\n fontFamily: 'monospace',\n fontSize: '0.72rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: isRoute ? 'info.main' : active ? 'primary.main' : 'text.primary',\n }}\n >\n {label}\n </Typography>\n {actions && (\n <Stack direction=\"row\" spacing={0.25} className=\"rdp-row-actions\" sx={{ opacity: 0, transition: 'opacity 120ms' }}>\n {actions}\n </Stack>\n )}\n </Stack>\n );\n}\n\nfunction Branch({ name, depth, trail, p }: { name: string; depth: number; trail: ReadonlySet<string>; p: TreeProps }) {\n const node = findNode(p.graph, name);\n const id = node?.id ?? name;\n const kids = node ? getChildren(p.graph, id) : [];\n const hasKids = kids.length > 0 && depth < MAX_DEPTH && !trail.has(id);\n const open = p.expanded.has(id);\n const active = p.selected?.nodeId === id || p.selected?.componentName === name;\n return (\n <Box>\n <RowShell\n depth={depth}\n active={active}\n isRoute={node?.type === 'route'}\n caret={\n hasKids ? (\n <Box sx={{ cursor: 'pointer', display: 'grid', placeItems: 'center' }} onClick={() => p.onToggle(id)}>\n {open ? <LuChevronDown size={13} /> : <LuChevronRight size={13} />}\n </Box>\n ) : null\n }\n label={name}\n onLabel={() => node && p.onSelect(node)}\n actions={node ? <RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} /> : null}\n />\n {hasKids && open && kids.map((k) => <Branch key={`${id}>${k}`} name={k} depth={depth + 1} trail={new Set([...trail, id])} p={p} />)}\n </Box>\n );\n}\n\nexport function ComponentGraphTree(p: TreeProps) {\n const { graph, selected, search } = p;\n\n if (graph && search.trim()) {\n const results = searchNodes(graph, search);\n return (\n <Box>\n <Label>\n {results.length} match{results.length === 1 ? '' : 'es'}\n </Label>\n {results.map((node) => (\n <RowShell\n key={node.id}\n active={selected?.nodeId === node.id}\n isRoute={node.type === 'route'}\n label={node.name}\n onLabel={() => p.onSelect(node)}\n actions={<RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} />}\n />\n ))}\n {results.length === 0 && (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', pl: 1 }}>\n No components match “{search}”.\n </Typography>\n )}\n </Box>\n );\n }\n\n if (!selected) {\n return (\n <Typography variant=\"body2\" sx={{ color: 'text.disabled', px: 0.5, py: 1 }}>\n Lock a component (hover + click) or search above to explore the tree.\n </Typography>\n );\n }\n\n return (\n <Box>\n {selected.parents.length > 0 && (\n <>\n <Label>Parent chain</Label>\n {selected.parents.map((parent) => {\n const node = findNode(graph, parent);\n return (\n <RowShell\n key={`p:${parent}`}\n isRoute={node?.type === 'route'}\n caret={<LuArrowUp size={12} />}\n label={parent}\n onLabel={() => node && p.onSelect(node)}\n actions={node ? <RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} /> : null}\n />\n );\n })}\n </>\n )}\n\n <Label>Selected</Label>\n <RowShell active label={selected.componentName} onLabel={() => undefined} actions={<Chip size=\"small\" variant=\"soft\" color=\"primary\" label={selected.source} sx={{ height: 16, fontSize: '0.55rem', fontWeight: 700 }} />} />\n\n <Label>Renders ({selected.children.length})</Label>\n {selected.children.length === 0 ? (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', pl: 1.5 }}>\n No child components detected.\n </Typography>\n ) : (\n selected.children.map((c) => <Branch key={`c:${c}`} name={c} depth={0} trail={new Set(selected.nodeId ? [selected.nodeId] : [])} p={p} />)\n )}\n\n {selected.imports.length > 0 && (\n <>\n <Label>Imports ({selected.imports.length})</Label>\n {selected.imports.map((imp) => {\n const node = findNode(graph, imp);\n return (\n <RowShell\n key={`i:${imp}`}\n isRoute={node?.type === 'route'}\n label={imp}\n onLabel={() => node && p.onSelect(node)}\n actions={node ? <RowActions node={node} onOpen={p.onOpen} onCopy={p.onCopy} /> : null}\n />\n );\n })}\n </>\n )}\n </Box>\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha } from '@mui/material/styles';\nimport { useState, useEffect, useCallback } from 'react';\nimport { LuCopy, LuFileCode, LuRefreshCw } from 'react-icons/lu';\n\nimport { GraphSearch } from './Search';\nimport { collectMounted, type MountedComponent } from './graph-utils';\nimport type { ComponentGraph, ComponentGraphNode } from '../../core/graph-types';\n\nexport function ComponentGraphPageList({\n graph,\n route,\n selectedName,\n onSelect,\n onOpen,\n onCopy,\n}: {\n graph: ComponentGraph | null;\n route?: string;\n selectedName?: string;\n onSelect: (node: ComponentGraphNode) => void;\n onOpen: (node: ComponentGraphNode) => void;\n onCopy: (node: ComponentGraphNode) => void;\n}) {\n const [items, setItems] = useState<MountedComponent[]>([]);\n const [query, setQuery] = useState('');\n const scan = useCallback(() => setItems(collectMounted(graph)), [graph]);\n\n useEffect(() => {\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(scan);\n });\n const late = setTimeout(scan, 600);\n return () => {\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n clearTimeout(late);\n };\n }, [scan, route]);\n\n if (!graph) {\n return (\n <Typography variant=\"body2\" sx={{ color: 'text.disabled', px: 0.5, py: 1 }}>\n Load the component graph (Graph tab) to map mounted components to source files.\n </Typography>\n );\n }\n\n const q = query.trim().toLowerCase();\n const filtered = q ? items.filter((i) => i.name.toLowerCase().includes(q) || i.node.filePath.toLowerCase().includes(q)) : items;\n\n return (\n <Box>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ mb: 0.5 }}>\n <Typography variant=\"caption\" sx={{ color: 'text.secondary' }}>\n <Box component=\"span\" sx={{ fontFamily: 'monospace', color: 'info.main' }}>\n {route ?? '/'}\n </Box>{' '}\n · {q ? `${filtered.length} / ${items.length}` : items.length} component{items.length === 1 ? '' : 's'}\n </Typography>\n <Button size=\"small\" startIcon={<LuRefreshCw size={13} />} onClick={scan} sx={{ textTransform: 'none', fontSize: '0.7rem', py: 0.25 }}>\n Rescan\n </Button>\n </Stack>\n\n <Box sx={{ mb: 1 }}>\n <GraphSearch value={query} onChange={setQuery} placeholder=\"Filter components on this page…\" />\n </Box>\n\n {items.length === 0 ? (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', pl: 0.5 }}>\n No graph components detected in the live tree. Try Rescan, or regenerate the graph.\n </Typography>\n ) : filtered.length === 0 ? (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', pl: 0.5 }}>\n No components match “{query}”.\n </Typography>\n ) : (\n filtered.map(({ name, node, count }) => (\n <Stack\n key={node.id}\n direction=\"row\"\n alignItems=\"center\"\n spacing={0.5}\n onClick={() => onSelect(node)}\n sx={(t) => ({\n px: 0.5,\n py: 0.4,\n borderRadius: 1,\n cursor: 'pointer',\n bgcolor: selectedName === name ? alpha(t.palette.primary.main, 0.16) : 'transparent',\n '&:hover': { bgcolor: 'action.hover' },\n '&:hover .rdp-row-actions': { opacity: 1 },\n })}\n >\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\n <Typography variant=\"caption\" sx={{ fontFamily: 'monospace', fontWeight: 600, fontSize: '0.72rem', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {name}\n </Typography>\n {count > 1 && <Chip label={`×${count}`} size=\"small\" variant=\"soft\" sx={{ height: 15, fontSize: '0.55rem', '& .MuiChip-label': { px: 0.5 } }} />}\n </Stack>\n <Typography variant=\"caption\" sx={{ display: 'block', color: 'text.disabled', fontSize: '0.62rem', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {node.filePath}\n </Typography>\n </Box>\n <Stack direction=\"row\" spacing={0.25} className=\"rdp-row-actions\" sx={{ opacity: 0, transition: 'opacity 120ms' }}>\n <Tooltip title=\"Open in editor\" placement=\"top\">\n <IconButton size=\"small\" sx={{ p: 0.25 }} onClick={(e) => { e.stopPropagation(); onOpen(node); }}>\n <LuFileCode size={13} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Copy file path\" placement=\"top\">\n <IconButton size=\"small\" sx={{ p: 0.25 }} onClick={(e) => { e.stopPropagation(); onCopy(node); }}>\n <LuCopy size={13} />\n </IconButton>\n </Tooltip>\n </Stack>\n </Stack>\n ))\n )}\n </Box>\n );\n}\n","/**\n * State store for the Component Graph Inspector (useSyncExternalStore). Holds the enabled flag,\n * active mode, locked selection, the lazily-fetched static graph, search/expansion UI state, and\n * a transient toast. Self-contained — no persistence beyond an in-memory snapshot.\n */\nimport type { ComponentGraph } from '../../core/graph-types';\n\nexport type GraphMode = 'hover' | 'graph' | 'page' | 'file';\nexport type GraphStatus = 'idle' | 'loading' | 'ready' | 'empty' | 'error';\n\nexport interface PropEntry {\n name: string;\n value: string;\n}\n\nexport interface Selected {\n componentName: string;\n filePath?: string;\n absFilePath?: string;\n line?: number;\n column?: number;\n route?: string;\n domTag?: string;\n parent?: string;\n parents: string[];\n children: string[];\n imports: string[];\n props?: PropEntry[];\n source: 'hover' | 'graph';\n nodeId?: string;\n}\n\nexport interface Toast {\n message: string;\n tone: 'success' | 'error' | 'info';\n}\n\ninterface State {\n enabled: boolean;\n mode: GraphMode;\n selected: Selected | null;\n graph: ComponentGraph | null;\n status: GraphStatus;\n search: string;\n expanded: ReadonlySet<string>;\n toast: Toast | null;\n}\n\nlet state: State = {\n enabled: false,\n mode: 'hover',\n selected: null,\n graph: null,\n status: 'idle',\n search: '',\n expanded: new Set<string>(),\n toast: null,\n};\n\nconst listeners = new Set<() => void>();\nlet scheduled = false;\nlet toastTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction emit() {\n if (scheduled) return;\n scheduled = true;\n const flush = () => {\n scheduled = false;\n listeners.forEach((l) => l());\n };\n if (typeof queueMicrotask === 'function') queueMicrotask(flush);\n else void Promise.resolve().then(flush);\n}\nfunction set(patch: Partial<State>) {\n state = { ...state, ...patch };\n emit();\n}\n\nexport function subscribeGraph(l: () => void): () => void {\n listeners.add(l);\n return () => listeners.delete(l);\n}\nexport function getGraphState(): State {\n return state;\n}\nconst SERVER: State = { ...state };\nexport function getGraphServerState(): State {\n return SERVER;\n}\n\nexport function enableInspector(endpoint?: string) {\n if (!state.enabled) set({ enabled: true });\n void loadGraph(endpoint);\n}\nexport function disableInspector() {\n if (state.enabled) set({ enabled: false });\n}\nexport function toggleInspector(endpoint?: string) {\n set({ enabled: !state.enabled });\n if (state.enabled) void loadGraph(endpoint);\n}\nexport function setMode(mode: GraphMode) {\n if (state.mode !== mode) set({ mode });\n}\nexport function setSelected(selected: Selected | null) {\n set({ selected });\n}\nexport function setSearch(search: string) {\n set({ search });\n}\nexport function toggleExpanded(id: string) {\n const expanded = new Set(state.expanded);\n if (expanded.has(id)) expanded.delete(id);\n else expanded.add(id);\n set({ expanded });\n}\nexport function showToast(toast: Toast) {\n set({ toast });\n if (toastTimer) clearTimeout(toastTimer);\n toastTimer = setTimeout(() => {\n toastTimer = null;\n set({ toast: null });\n }, 2600);\n}\n\nlet graphPromise: Promise<void> | null = null;\nexport function loadGraph(endpoint?: string, force = false): Promise<void> {\n if (!endpoint) {\n set({ status: 'empty' });\n return Promise.resolve();\n }\n if (!force && (state.status === 'ready' || state.status === 'loading')) {\n return graphPromise ?? Promise.resolve();\n }\n set({ status: 'loading' });\n graphPromise = (async () => {\n try {\n const res = await fetch(endpoint, { headers: { Accept: 'application/json' } });\n if (res.status === 404) return set({ graph: null, status: 'empty' });\n if (!res.ok) return set({ status: 'error' });\n const graph = (await res.json()) as ComponentGraph;\n set({ graph, status: graph.nodes?.length ? 'ready' : 'empty' });\n } catch {\n set({ status: 'error' });\n }\n })();\n return graphPromise;\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Switch from '@mui/material/Switch';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport ToggleButton from '@mui/material/ToggleButton';\nimport { alpha, useTheme } from '@mui/material/styles';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\nimport { useMemo, useCallback, useSyncExternalStore } from 'react';\nimport { LuX, LuFile, LuLayers, LuWorkflow, LuMousePointerClick } from 'react-icons/lu';\n\nimport type { EditorType, ToolPanelProps } from '../../core/types';\nimport type { ComponentGraphNode } from '../../core/graph-types';\nimport { useDevPanelConfig } from '../../core/config';\nimport { GraphSearch } from './Search';\nimport { NodeDetails } from './NodeDetails';\nimport { ComponentGraphTree } from './Tree';\nimport { ComponentGraphPageList } from './PageList';\nimport type { Selected, GraphMode } from './store';\nimport { selectFromNode, formatForCopy } from './graph-utils';\nimport {\n setMode,\n loadGraph,\n setSearch,\n showToast,\n setSelected,\n toggleExpanded,\n getGraphState,\n subscribeGraph,\n toggleInspector,\n getGraphServerState,\n} from './store';\n\nconst TABS: Array<{ value: GraphMode; label: string; icon: React.ReactNode }> = [\n { value: 'hover', label: 'Hover', icon: <LuMousePointerClick size={14} /> },\n { value: 'graph', label: 'Graph', icon: <LuWorkflow size={14} /> },\n { value: 'page', label: 'Page', icon: <LuLayers size={14} /> },\n { value: 'file', label: 'File', icon: <LuFile size={14} /> },\n];\n\nasync function copy(text: string): Promise<boolean> {\n if (typeof navigator === 'undefined' || !navigator.clipboard) return false;\n return navigator.clipboard.writeText(text).then(\n () => true,\n () => false,\n );\n}\n\nexport function ComponentGraphPanel({ onClose }: ToolPanelProps) {\n const state = useSyncExternalStore(subscribeGraph, getGraphState, getGraphServerState);\n const theme = useTheme();\n const config = useDevPanelConfig();\n const route = config.getRoute();\n const { enabled, mode, selected, graph, status, search, expanded } = state;\n\n const openLoc = useCallback(\n async (sel: Selected | null, editor?: EditorType) => {\n const file = sel?.absFilePath ?? sel?.filePath;\n if (!file) return showToast({ message: 'No source path available', tone: 'error' });\n const ok = await config.openInEditor?.({ file, line: sel?.line, column: sel?.column }, editor ?? config.editor);\n showToast(ok === false ? { message: 'Editor unavailable — path copied', tone: 'info' } : { message: 'Opening in your editor…', tone: 'success' });\n },\n [config],\n );\n\n const copyInfo = useCallback(() => {\n if (!selected) return;\n void copy(formatForCopy(selected)).then((ok) => showToast({ message: ok ? 'Component info copied' : 'Copy failed', tone: ok ? 'success' : 'error' }));\n }, [selected]);\n\n const copyPath = useCallback((sel: Selected | null) => {\n const path = sel?.filePath ?? sel?.absFilePath;\n if (!path) return showToast({ message: 'No path to copy', tone: 'info' });\n void copy(`${path}${sel?.line ? `:${sel.line}` : ''}`).then((ok) => showToast({ message: ok ? 'File path copied' : 'Copy failed', tone: ok ? 'success' : 'error' }));\n }, []);\n\n const selectName = useCallback(\n (name: string) => {\n const node = graph?.nodes.find((n) => n.name === name || n.id === name);\n if (node) setSelected(selectFromNode(graph, node));\n },\n [graph],\n );\n const selectNode = useCallback((node: ComponentGraphNode) => setSelected(selectFromNode(graph, node)), [graph]);\n const openNode = useCallback((node: ComponentGraphNode) => void openLoc(selectFromNode(graph, node)), [graph, openLoc]);\n const copyNode = useCallback((node: ComponentGraphNode) => copyPath(selectFromNode(graph, node)), [graph, copyPath]);\n\n const statusText = useMemo(() => {\n if (status === 'ready' && graph) return `${graph.nodes.length} components · ${graph.edges.length} relationships`;\n if (status === 'loading' || status === 'idle') return 'Loading component graph…';\n if (status === 'empty') return 'Graph not generated — run `npx dev-panel-graph` (or add an adapter)';\n return 'Graph endpoint unavailable.';\n }, [status, graph]);\n\n const details = (\n <NodeDetails\n selected={selected}\n editor={config.editor}\n onOpen={() => void openLoc(selected)}\n onOpenEditor={(editor) => void openLoc(selected, editor)}\n onCopyInfo={copyInfo}\n onCopyPath={() => copyPath(selected)}\n onSelectName={selectName}\n />\n );\n\n return (\n <Box\n data-rdp-ignore=\"\"\n sx={{\n position: 'fixed',\n bottom: 96,\n right: 24,\n zIndex: (t) => t.zIndex.modal + 1,\n width: 'min(460px, calc(100vw - 32px))',\n maxHeight: 'min(78vh, 720px)',\n display: 'flex',\n flexDirection: 'column',\n borderRadius: 2,\n overflow: 'hidden',\n border: '1px solid',\n borderColor: 'divider',\n bgcolor: 'background.paper',\n boxShadow: 12,\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ px: 1.5, py: 1, borderBottom: '1px solid', borderColor: 'divider', flexShrink: 0 }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <LuWorkflow size={16} />\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 700 }}>\n Component Graph Inspector\n </Typography>\n {enabled && <Chip label=\"ON\" size=\"small\" color=\"success\" variant=\"soft\" sx={{ height: 18, fontSize: '0.6rem', fontWeight: 700 }} />}\n </Stack>\n <IconButton size=\"small\" onClick={onClose} aria-label=\"Close\">\n <LuX size={16} />\n </IconButton>\n </Stack>\n\n <Box sx={{ flex: 1, overflowY: 'auto', p: 1.5 }}>\n <Box\n sx={{\n p: 1.25,\n borderRadius: 1.5,\n border: '1px solid',\n borderColor: enabled ? alpha(theme.palette.success.main, 0.5) : 'divider',\n bgcolor: enabled ? alpha(theme.palette.success.main, 0.08) : 'background.default',\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Box>\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>\n Inspect mode\n </Typography>\n <Typography variant=\"caption\" sx={{ color: 'text.secondary' }}>\n {enabled ? 'Hover the UI, click to lock · Esc to exit' : 'Enable, then hover the UI'}\n </Typography>\n </Box>\n <Switch checked={enabled} onChange={() => toggleInspector(config.graphEndpoint)} />\n </Stack>\n </Box>\n\n <ToggleButtonGroup\n fullWidth\n exclusive\n size=\"small\"\n value={mode}\n onChange={(_, next: GraphMode | null) => {\n if (!next) return;\n setMode(next);\n if (next === 'graph' || next === 'page') void loadGraph(config.graphEndpoint);\n }}\n sx={{ mt: 1.5 }}\n >\n {TABS.map((t) => (\n <ToggleButton key={t.value} value={t.value} sx={{ textTransform: 'none', gap: 0.5, py: 0.5 }}>\n {t.icon}\n {t.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n\n <Divider sx={{ my: 1.5 }} />\n\n {mode === 'hover' && (\n <Box>\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', fontWeight: 700, textTransform: 'uppercase', letterSpacing: 0.4 }}>\n Last locked component\n </Typography>\n <Box sx={{ mt: 0.5 }}>{details}</Box>\n </Box>\n )}\n\n {mode === 'graph' && (\n <Box>\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 0.5, color: status === 'ready' ? 'success.main' : 'text.disabled' }}>\n {statusText}\n </Typography>\n {(status === 'empty' || status === 'error') && (\n <Chip size=\"small\" variant=\"outlined\" label=\"Retry graph load\" onClick={() => loadGraph(config.graphEndpoint, true)} sx={{ mb: 1, height: 22, fontSize: '0.65rem' }} />\n )}\n <GraphSearch value={search} onChange={setSearch} />\n <Box sx={{ mt: 1 }}>\n <ComponentGraphTree graph={graph} selected={selected} search={search} expanded={expanded} onSelect={selectNode} onToggle={toggleExpanded} onOpen={openNode} onCopy={copyNode} />\n </Box>\n {selected && !search.trim() && <Box sx={{ mt: 1.5 }}>{details}</Box>}\n </Box>\n )}\n\n {mode === 'page' && (\n <Box>\n <ComponentGraphPageList graph={graph} route={route} selectedName={selected?.componentName} onSelect={selectNode} onOpen={openNode} onCopy={copyNode} />\n {selected && <Box sx={{ mt: 1.5 }}>{details}</Box>}\n </Box>\n )}\n\n {mode === 'file' && details}\n </Box>\n </Box>\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { alpha, useTheme } from '@mui/material/styles';\nimport { useState, useEffect, useCallback, useSyncExternalStore } from 'react';\n\nimport { useDevPanelConfig } from '../../core/config';\nimport { isIgnored, resolveDisplay, resolveSelected } from './graph-utils';\nimport {\n setMode,\n showToast,\n setSelected,\n getGraphState,\n subscribeGraph,\n disableInspector,\n getGraphServerState,\n} from './store';\n\ninterface Hover {\n name: string;\n filePath?: string;\n line?: number;\n domTag: string;\n route?: string;\n rect: { top: number; left: number; width: number; height: number };\n x: number;\n y: number;\n}\n\nconst TOOLTIP_W = 360;\n\n/** Always-mounted overlay; renders nothing until inspect mode is on. pointer-events:none. */\nexport function ComponentGraphOverlay() {\n const state = useSyncExternalStore(subscribeGraph, getGraphState, getGraphServerState);\n const theme = useTheme();\n const config = useDevPanelConfig();\n const route = config.getRoute();\n const { enabled } = state;\n const [hover, setHover] = useState<Hover | null>(null);\n\n const open = useCallback(\n async (file?: string, line?: number, column?: number) => {\n if (!file) {\n showToast({ message: 'No source path — generate the graph', tone: 'error' });\n return;\n }\n const ok = await config.openInEditor?.({ file, line, column }, config.editor);\n showToast(ok === false ? { message: 'Editor unavailable — path copied', tone: 'info' } : { message: 'Opening in your editor…', tone: 'success' });\n },\n [config],\n );\n\n useEffect(() => {\n if (!enabled) return undefined;\n let raf = 0;\n let last: PointerEvent | null = null;\n const onMove = (e: PointerEvent) => {\n last = e;\n if (raf) return;\n raf = requestAnimationFrame(() => {\n raf = 0;\n const ev = last;\n const target = ev?.target as Element | null;\n if (!ev || !target || !(target instanceof Element) || isIgnored(target)) {\n setHover(null);\n return;\n }\n const meta = resolveDisplay(target, getGraphState().graph, route);\n const r = target.getBoundingClientRect();\n setHover({\n name: meta.componentName,\n filePath: meta.filePath,\n line: meta.line,\n domTag: meta.domTag,\n route: meta.route,\n rect: { top: r.top, left: r.left, width: r.width, height: r.height },\n x: ev.clientX,\n y: ev.clientY,\n });\n });\n };\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') disableInspector();\n };\n const onClick = (e: MouseEvent) => {\n const target = e.target as Element | null;\n if (!target || !(target instanceof Element) || isIgnored(target)) return;\n const sel = resolveSelected(target, getGraphState().graph, route);\n e.preventDefault();\n e.stopPropagation();\n setSelected(sel);\n setMode('graph');\n if (e.metaKey || e.ctrlKey) void open(sel.absFilePath ?? sel.filePath, sel.line, sel.column);\n else showToast({ message: `Locked ${sel.componentName}`, tone: 'success' });\n };\n document.addEventListener('pointermove', onMove, { passive: true });\n document.addEventListener('keydown', onKey, true);\n document.addEventListener('click', onClick, true);\n return () => {\n if (raf) cancelAnimationFrame(raf);\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('keydown', onKey, true);\n document.removeEventListener('click', onClick, true);\n setHover(null);\n };\n }, [enabled, route, open]);\n\n if (!enabled) return null;\n\n const flipX = typeof window !== 'undefined' && hover && hover.x + TOOLTIP_W + 14 > window.innerWidth;\n const flipY = typeof window !== 'undefined' && hover && hover.y + 140 > window.innerHeight;\n\n return (\n <Box data-rdp-ignore=\"\" sx={{ position: 'fixed', inset: 0, pointerEvents: 'none', zIndex: (t) => t.zIndex.tooltip + 1 }}>\n {hover && (\n <Box\n sx={{\n position: 'fixed',\n top: hover.rect.top,\n left: hover.rect.left,\n width: hover.rect.width,\n height: hover.rect.height,\n border: '1px solid',\n borderColor: 'primary.main',\n bgcolor: alpha(theme.palette.primary.main, 0.12),\n borderRadius: 0.5,\n boxShadow: `0 0 0 1px ${alpha(theme.palette.primary.main, 0.4)}`,\n transition: 'all 60ms linear',\n }}\n />\n )}\n {hover && (\n <Box\n sx={{\n position: 'fixed',\n top: flipY ? undefined : hover.y + 14,\n bottom: flipY ? window.innerHeight - hover.y + 14 : undefined,\n left: flipX ? undefined : hover.x + 14,\n right: flipX ? window.innerWidth - hover.x + 14 : undefined,\n maxWidth: TOOLTIP_W,\n px: 1.25,\n py: 1,\n borderRadius: 1.5,\n border: '1px solid',\n borderColor: alpha(theme.palette.common.white, 0.12),\n bgcolor: alpha(theme.palette.grey[900], 0.85),\n backdropFilter: 'blur(8px)',\n boxShadow: '0 8px 28px rgba(0,0,0,0.45)',\n color: theme.palette.common.white,\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.75} sx={{ mb: hover.filePath ? 0.5 : 0 }}>\n <Chip\n label={hover.name}\n size=\"small\"\n sx={{ height: 18, fontWeight: 700, fontSize: '0.65rem', color: '#fff', bgcolor: alpha(theme.palette.primary.main, 0.5) }}\n />\n <Typography variant=\"caption\" sx={{ color: alpha(theme.palette.common.white, 0.6), fontFamily: 'monospace' }}>\n {`<${hover.domTag}>`}\n </Typography>\n </Stack>\n <Typography variant=\"caption\" sx={{ display: 'block', fontFamily: 'monospace', fontSize: '0.68rem', wordBreak: 'break-all', color: hover.filePath ? alpha(theme.palette.common.white, 0.85) : alpha(theme.palette.warning.light, 0.9) }}>\n {hover.filePath ? `${hover.filePath}${hover.line ? `:${hover.line}` : ''}` : 'source resolved from graph on lock'}\n </Typography>\n {hover.route && (\n <Typography variant=\"caption\" sx={{ display: 'block', fontSize: '0.62rem', color: alpha(theme.palette.common.white, 0.45) }}>\n {hover.route}\n </Typography>\n )}\n <Typography variant=\"caption\" sx={{ display: 'block', mt: 0.5, fontSize: '0.6rem', color: alpha(theme.palette.common.white, 0.5) }}>\n click to lock · ⌘/Ctrl + click to open · Esc to exit\n </Typography>\n </Box>\n )}\n {state.toast && (\n <Box\n sx={{\n position: 'fixed',\n bottom: 24,\n left: '50%',\n transform: 'translateX(-50%)',\n px: 1.5,\n py: 0.75,\n borderRadius: 1.5,\n border: '1px solid',\n borderColor: alpha(theme.palette.common.white, 0.12),\n bgcolor: alpha(theme.palette.grey[900], 0.9),\n backdropFilter: 'blur(8px)',\n boxShadow: '0 8px 28px rgba(0,0,0,0.45)',\n }}\n >\n <Typography\n variant=\"caption\"\n sx={{ fontWeight: 600, color: state.toast.tone === 'success' ? 'success.light' : state.toast.tone === 'error' ? 'error.light' : 'common.white' }}\n >\n {state.toast.message}\n </Typography>\n </Box>\n )}\n </Box>\n );\n}\n","'use client';\n\nimport { LuWorkflow } from 'react-icons/lu';\n\nimport type { ToolDefinition } from '../../core/types';\nimport { registerTool } from '../../core/registry';\nimport { ComponentGraphPanel } from './Panel';\nimport { ComponentGraphOverlay } from './Overlay';\n\nexport const componentGraphTool: ToolDefinition = {\n id: 'graph',\n title: 'Component Graph Inspector',\n subtitle: 'Inspect component tree & open source files',\n color: 'primary',\n icon: <LuWorkflow size={19} />,\n Panel: ComponentGraphPanel,\n Overlay: ComponentGraphOverlay,\n};\n\nexport function registerComponentGraph() {\n registerTool(componentGraphTool);\n}\n","'use client';\n\nimport type { ReactNode, MouseEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useRef, useState, useEffect, useCallback } from 'react';\n\nimport Fab from '@mui/material/Fab';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Menu from '@mui/material/Menu';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Divider from '@mui/material/Divider';\nimport { alpha } from '@mui/material/styles';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { LuWrench, LuChevronRight } from 'react-icons/lu';\n\nimport type { ToolDefinition } from './types';\n\ntype TileColor = 'primary' | 'info' | 'warning' | 'success' | 'error';\n\nfunction ToolTile({ color, size = 38, children }: { color: TileColor; size?: number; children: ReactNode }) {\n return (\n <Box\n sx={(theme) => ({\n width: size,\n height: size,\n flexShrink: 0,\n borderRadius: 1.5,\n display: 'grid',\n placeItems: 'center',\n color: theme.palette[color].main,\n bgcolor: alpha(theme.palette[color].main, 0.14),\n })}\n >\n {children}\n </Box>\n );\n}\n\n// ── draggable corner launcher (ported from the daxwell toolbox) ───────────────\ntype Corner = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\nconst STORAGE_KEY = 'react-dev-panel:corner';\nconst EDGE_GAP = 24;\nconst FAB_SIZE = 56;\nconst DRAG_THRESHOLD = 5;\n\nfunction isCorner(v: string | null): v is Corner {\n return v === 'top-left' || v === 'top-right' || v === 'bottom-left' || v === 'bottom-right';\n}\nfunction readStoredCorner(): Corner {\n if (typeof window === 'undefined') return 'bottom-right';\n try {\n const stored = window.localStorage.getItem(STORAGE_KEY);\n if (isCorner(stored)) return stored;\n } catch {\n /* ignore */\n }\n return 'bottom-right';\n}\n\nfunction useDraggableCorner() {\n const [corner, setCorner] = useState<Corner>('bottom-right');\n const [dragPos, setDragPos] = useState<{ x: number; y: number } | null>(null);\n const movedRef = useRef(false);\n const offsetRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => setCorner(readStoredCorner()), []);\n\n const onPointerDown = useCallback((event: ReactPointerEvent<HTMLButtonElement>) => {\n if (event.button !== 0) return;\n const rect = event.currentTarget.getBoundingClientRect();\n offsetRef.current = { x: event.clientX - rect.left, y: event.clientY - rect.top };\n movedRef.current = false;\n const startX = event.clientX;\n const startY = event.clientY;\n const handleMove = (ev: PointerEvent) => {\n if (!movedRef.current && Math.hypot(ev.clientX - startX, ev.clientY - startY) < DRAG_THRESHOLD) return;\n movedRef.current = true;\n setDragPos({ x: ev.clientX - offsetRef.current.x, y: ev.clientY - offsetRef.current.y });\n };\n const handleUp = (ev: PointerEvent) => {\n window.removeEventListener('pointermove', handleMove);\n window.removeEventListener('pointerup', handleUp);\n if (movedRef.current) {\n const cx = ev.clientX - offsetRef.current.x + FAB_SIZE / 2;\n const cy = ev.clientY - offsetRef.current.y + FAB_SIZE / 2;\n const next = `${cy < window.innerHeight / 2 ? 'top' : 'bottom'}-${cx < window.innerWidth / 2 ? 'left' : 'right'}` as Corner;\n setCorner(next);\n try {\n window.localStorage.setItem(STORAGE_KEY, next);\n } catch {\n /* ignore */\n }\n }\n setDragPos(null);\n };\n window.addEventListener('pointermove', handleMove);\n window.addEventListener('pointerup', handleUp);\n }, []);\n\n const onClickCapture = useCallback((event: MouseEvent<HTMLElement>) => {\n if (movedRef.current) {\n event.stopPropagation();\n event.preventDefault();\n movedRef.current = false;\n }\n }, []);\n\n const dragging = dragPos !== null;\n const isTop = corner.startsWith('top');\n const isLeft = corner.endsWith('left');\n const positionSx = dragging\n ? { top: dragPos.y, left: dragPos.x, right: 'auto', bottom: 'auto' }\n : {\n top: isTop ? EDGE_GAP : 'auto',\n bottom: isTop ? 'auto' : EDGE_GAP,\n left: isLeft ? EDGE_GAP : 'auto',\n right: isLeft ? 'auto' : EDGE_GAP,\n };\n\n return { positionSx, onPointerDown, onClickCapture, isTop, isLeft, dragging };\n}\n\nfunction ToolBadge({ tool }: { tool: ToolDefinition }) {\n const badge = tool.useBadge?.();\n if (!badge) return null;\n const color = badge.tone === 'error' ? 'error' : badge.tone === 'success' ? 'success' : 'default';\n return (\n <Chip\n size=\"small\"\n variant=\"soft\"\n color={color}\n label={badge.label}\n sx={{ height: 18, fontWeight: 700, fontSize: '0.65rem', '& .MuiChip-label': { px: 0.75 } }}\n />\n );\n}\n\n/** Floating launcher: draggable FAB opening a menu of the registered tools (MUI). */\nexport function Launcher({ tools, onOpenTool }: { tools: ToolDefinition[]; onOpenTool: (id: string) => void }) {\n const { positionSx, onPointerDown, onClickCapture, isTop, isLeft, dragging } = useDraggableCorner();\n const [menuAnchor, setMenuAnchor] = useState<HTMLElement | null>(null);\n\n return (\n <>\n <Box\n data-rdp-ignore=\"\"\n sx={(theme) => ({ position: 'fixed', zIndex: theme.zIndex.modal + 2, ...positionSx })}\n >\n <Tooltip title={dragging ? '' : 'Developer Tools — drag to a corner'} placement={isLeft ? 'right' : 'left'} arrow>\n <Fab\n onClick={(e) => setMenuAnchor(e.currentTarget)}\n onClickCapture={onClickCapture}\n onPointerDown={onPointerDown}\n aria-label=\"Open Developer Tools\"\n aria-haspopup=\"menu\"\n sx={(theme) => ({\n width: FAB_SIZE,\n height: FAB_SIZE,\n touchAction: 'none',\n cursor: dragging ? 'grabbing' : 'grab',\n color: theme.palette.primary.contrastText,\n background: `linear-gradient(135deg, ${theme.palette.primary.main}, ${theme.palette.primary.dark})`,\n boxShadow: `0 4px 12px ${alpha(theme.palette.primary.main, 0.24)}, 0 8px 24px rgba(0,0,0,0.5)`,\n '&:hover': {\n background: `linear-gradient(135deg, ${theme.palette.primary.dark}, ${theme.palette.primary.dark})`,\n },\n })}\n >\n <LuWrench size={22} />\n </Fab>\n </Tooltip>\n </Box>\n\n <Menu\n anchorEl={menuAnchor}\n open={Boolean(menuAnchor)}\n onClose={() => setMenuAnchor(null)}\n sx={(theme) => ({ zIndex: theme.zIndex.modal + 2 })}\n anchorOrigin={{ vertical: isTop ? 'bottom' : 'top', horizontal: isLeft ? 'left' : 'right' }}\n transformOrigin={{ vertical: isTop ? 'top' : 'bottom', horizontal: isLeft ? 'left' : 'right' }}\n slotProps={{\n paper: {\n sx: {\n width: 320,\n mt: isTop ? 1.5 : 0,\n mb: isTop ? 0 : 1.5,\n borderRadius: 2.5,\n overflow: 'hidden',\n border: '1px solid',\n borderColor: 'divider',\n boxShadow: 16,\n },\n },\n list: { sx: { py: 0 } },\n }}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n px: 2,\n py: 1.5,\n background: (theme) =>\n `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.16)}, ${alpha(theme.palette.primary.main, 0.04)})`,\n }}\n >\n <ToolTile color=\"primary\" size={34}>\n <LuWrench size={17} />\n </ToolTile>\n <Box sx={{ minWidth: 0 }}>\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 700, lineHeight: 1.2 }}>\n Developer Tools\n </Typography>\n <Typography variant=\"caption\" sx={{ color: 'text.secondary' }}>\n Internal utilities\n </Typography>\n </Box>\n </Box>\n <Divider />\n <Box sx={{ p: 1 }}>\n {tools.map((tool, i) => (\n <MenuItem\n key={tool.id}\n onClick={() => {\n onOpenTool(tool.id);\n setMenuAnchor(null);\n }}\n disableGutters\n sx={{ alignItems: 'flex-start', gap: 1.25, px: 1.25, py: 1.25, mt: i === 0 ? 0 : 0.5, borderRadius: 1.5, whiteSpace: 'normal' }}\n >\n <ToolTile color={(tool.color as TileColor) ?? 'primary'}>{tool.icon}</ToolTile>\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 600, lineHeight: 1.3 }}>\n {tool.title}\n </Typography>\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', display: 'block' }}>\n {tool.subtitle}\n </Typography>\n </Box>\n <Stack direction=\"row\" spacing={0.5} alignItems=\"center\" sx={{ mt: 0.25 }}>\n <ToolBadge tool={tool} />\n <Box sx={{ display: 'grid', placeItems: 'center', color: 'text.disabled' }}>\n <LuChevronRight size={16} />\n </Box>\n </Stack>\n </MenuItem>\n ))}\n </Box>\n </Menu>\n </>\n );\n}\n","'use client';\n\nimport { useState, useEffect, useMemo } from 'react';\n\nimport type { DevPanelConfig } from './types';\nimport { Launcher } from './Launcher';\nimport { resolveTools } from './registry';\nimport { DevPanelConfigProvider } from './config';\n\n/**\n * The single component a host mounts (once, near the app root, inside its MUI ThemeProvider).\n * Renders the floating launcher, the active tool's panel, and every tool's always-on overlay —\n * all gated by `enabled`.\n *\n * <DevPanel enabled={isInternalUser} getRoute={() => pathname} openInEditor={...} />\n */\nexport function DevPanel(config: DevPanelConfig) {\n const enabled =\n config.enabled ??\n (typeof process !== 'undefined' ? process.env.NODE_ENV !== 'production' : true);\n\n if (!enabled) return null;\n return (\n <DevPanelConfigProvider config={config}>\n <DevPanelInner ids={config.tools} />\n </DevPanelConfigProvider>\n );\n}\n\nfunction DevPanelInner({ ids }: { ids?: string[] }) {\n const tools = useMemo(() => resolveTools(ids), [ids]);\n const [openId, setOpenId] = useState<string | null>(null);\n\n useEffect(() => {\n tools.forEach((t) => t.init?.());\n }, [tools]);\n\n const ActivePanel = tools.find((t) => t.id === openId)?.Panel ?? null;\n\n return (\n <>\n <Launcher tools={tools} onOpenTool={setOpenId} />\n {ActivePanel && <ActivePanel onClose={() => setOpenId(null)} />}\n {tools.map((t) => (t.Overlay ? <t.Overlay key={t.id} /> : null))}\n </>\n );\n}\n","import type { OpenInEditor } from './types';\n\n/**\n * Default endpoint paths the adapters mount and the client talks to. No leading underscore —\n * Next.js App Router treats `_`-prefixed segments as private (non-routable), so this path works\n * uniformly across the Next, Vite, and generic-server adapters.\n */\nexport const DEFAULT_GRAPH_ENDPOINT = '/dev-panel/graph';\nexport const DEFAULT_OPEN_ENDPOINT = '/dev-panel/open-file';\n\n/**\n * A client `openInEditor` that POSTs to a server endpoint (mounted by an adapter), which opens\n * the file in the editor running the project via `launch-editor`. Falls back to copying the\n * path when the endpoint is unreachable. Pass to `<DevPanel openInEditor={serverOpenInEditor} />`.\n */\nexport function createServerOpenInEditor(endpoint = DEFAULT_OPEN_ENDPOINT): OpenInEditor {\n return async (loc, editor = 'auto') => {\n try {\n const res = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ file: loc.file, line: loc.line, column: loc.column, editor }),\n });\n if (res.ok) return true;\n } catch {\n /* fall through to copy */\n }\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n await navigator.clipboard\n .writeText(`${loc.file}${loc.line ? `:${loc.line}` : ''}`)\n .catch(() => undefined);\n }\n return false;\n };\n}\n\n/** Ready-to-use server opener pointed at the default endpoint. */\nexport const serverOpenInEditor: OpenInEditor = createServerOpenInEditor();\n","/**\n * react-dev-panel — a framework-agnostic, self-contained floating dev panel for React.\n *\n * import { DevPanel } from 'react-dev-panel';\n * <DevPanel enabled={isInternalUser} getRoute={() => pathname} />\n *\n * Bundled tools register themselves on import (below). Hosts can add their own via\n * `registerTool` before mounting <DevPanel/>, or restrict/order via the `tools` prop.\n */\n\nimport { registerDevLogs } from './tools/dev-logs/index';\nimport { registerPagePerformance } from './tools/page-performance/index';\nimport { registerComponentGraph } from './tools/component-graph/index';\n\n// Register the bundled tools once, at import time.\nregisterDevLogs();\nregisterPagePerformance();\nregisterComponentGraph();\n\nexport { DevPanel } from './core/DevPanel';\nexport { registerTool, getRegisteredTools } from './core/registry';\nexport { defaultOpenInEditor, useDevPanelConfig } from './core/config';\nexport {\n serverOpenInEditor,\n createServerOpenInEditor,\n DEFAULT_GRAPH_ENDPOINT,\n DEFAULT_OPEN_ENDPOINT,\n} from './core/server-open';\n\nexport type { ComponentGraph, ComponentGraphNode, ComponentGraphEdge } from './core/graph-types';\n\nexport type {\n DevPanelConfig,\n DevPanelTheme,\n ToolDefinition,\n ToolPanelProps,\n EditorType,\n SourceLocation,\n OpenInEditor,\n} from './core/types';\n"]}
|