@adoptai/genui-components 0.1.58 → 0.1.60

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.
Files changed (54) hide show
  1. package/dist/builders/BlockForm.d.ts +5 -1
  2. package/dist/builders/BlockForm.d.ts.map +1 -1
  3. package/dist/builders/BuilderForm.d.ts +22 -1
  4. package/dist/builders/BuilderForm.d.ts.map +1 -1
  5. package/dist/builders/index.d.ts +1 -1
  6. package/dist/builders/index.d.ts.map +1 -1
  7. package/dist/composites/decision-card/resolver.cjs +289 -13
  8. package/dist/composites/decision-card/resolver.cjs.map +1 -1
  9. package/dist/composites/decision-card/resolver.d.ts +2 -1
  10. package/dist/composites/decision-card/resolver.d.ts.map +1 -1
  11. package/dist/composites/decision-card/resolver.js +289 -13
  12. package/dist/composites/decision-card/resolver.js.map +1 -1
  13. package/dist/composites/document-field-extraction/resolver.cjs +1920 -0
  14. package/dist/composites/document-field-extraction/resolver.cjs.map +1 -0
  15. package/dist/composites/document-field-extraction/resolver.js +1913 -0
  16. package/dist/composites/document-field-extraction/resolver.js.map +1 -0
  17. package/dist/composites/tabby-auth/resolver.cjs +597 -0
  18. package/dist/composites/tabby-auth/resolver.cjs.map +1 -0
  19. package/dist/composites/tabby-auth/resolver.d.ts +3 -0
  20. package/dist/composites/tabby-auth/resolver.d.ts.map +1 -0
  21. package/dist/composites/tabby-auth/resolver.js +595 -0
  22. package/dist/composites/tabby-auth/resolver.js.map +1 -0
  23. package/dist/composites/workflow-stepper/resolver.cjs +86 -18
  24. package/dist/composites/workflow-stepper/resolver.cjs.map +1 -1
  25. package/dist/composites/workflow-stepper/resolver.d.ts.map +1 -1
  26. package/dist/composites/workflow-stepper/resolver.js +86 -18
  27. package/dist/composites/workflow-stepper/resolver.js.map +1 -1
  28. package/dist/index.cjs +901 -63
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.js +901 -63
  31. package/dist/index.js.map +1 -1
  32. package/dist/renderer.cjs +810 -45
  33. package/dist/renderer.cjs.map +1 -1
  34. package/dist/renderer.js +810 -45
  35. package/dist/renderer.js.map +1 -1
  36. package/dist/resolver.cjs +810 -45
  37. package/dist/resolver.cjs.map +1 -1
  38. package/dist/resolver.d.ts.map +1 -1
  39. package/dist/resolver.js +810 -45
  40. package/dist/resolver.js.map +1 -1
  41. package/dist/schemas/decision-card.d.ts +37 -0
  42. package/dist/schemas/decision-card.d.ts.map +1 -1
  43. package/dist/schemas/index.cjs +113 -8
  44. package/dist/schemas/index.cjs.map +1 -1
  45. package/dist/schemas/index.d.ts +155 -0
  46. package/dist/schemas/index.d.ts.map +1 -1
  47. package/dist/schemas/index.js +113 -8
  48. package/dist/schemas/index.js.map +1 -1
  49. package/dist/schemas/tabby-auth.d.ts +58 -0
  50. package/dist/schemas/tabby-auth.d.ts.map +1 -0
  51. package/dist/schemas/workflow-stepper.d.ts +60 -0
  52. package/dist/schemas/workflow-stepper.d.ts.map +1 -1
  53. package/dist/tool-definitions.json +135 -4
  54. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/shared/theme.ts","../../../src/shared/ColumnSettingsPanel.tsx","../../../src/shared/ComponentActions.tsx","../../../src/shared/downloadCSV.ts","../../../src/shared/ThemeContext.tsx","../../../src/composites/document-field-extraction/bboxTransform.ts","../../../src/composites/document-field-extraction/fieldLabels.ts","../../../src/composites/document-field-extraction/FieldDetail.tsx","../../../src/composites/document-field-extraction/FieldDetails.tsx","../../../src/composites/document-field-extraction/FieldAuditLog.tsx","../../../src/composites/document-field-extraction/resolver.tsx"],"names":["jsxs","jsx","BORDER","MUTED","PAPER","SECONDARY","React","_a","_b","TIER_COLORS","fieldColor","hexToRgba","Fragment"],"mappings":"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","file":"resolver.js","sourcesContent":["export const BORDER = \"#dedede\";\nexport const MUTED = \"#777777\";\nexport const PAPER = \"#f6f6f6\";\nexport const ACCENT = \"#ff5000\";\nexport const ACCENT_SOFT = \"#cc4000\";\nexport const SECONDARY = \"#0364ff\";\n\nexport const ACCOUNT_TYPE_COLORS = {\n asset: { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n liability: { bg: \"#fff7ed\", color: \"#92400e\" },\n equity: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n revenue: { bg: \"#dcfce7\", color: \"#15803d\" },\n expense: { bg: \"#fef2f2\", color: \"#dc2626\" },\n} as const;\n\nexport const STATUS_COLORS = {\n draft: { bg: \"#fff7ed\", color: \"#92400e\" },\n \"pending-review\": { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n approved: { bg: \"#dcfce7\", color: \"#15803d\" },\n filed: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n} as const;\n\nexport const CHART_PALETTE = [\n \"#ff5000\",\n \"#0364ff\",\n \"#16a34a\",\n \"#dc2626\",\n \"#7c3aed\",\n \"#0891b2\",\n \"#f59e0b\",\n \"#6366f1\",\n \"#ec4899\",\n \"#84cc16\",\n \"#e11d48\",\n \"#0ea5e9\",\n];\n","\"use client\";\n\nimport React from \"react\";\nimport { BORDER, MUTED, ACCENT } from \"./theme\";\n\ninterface ColumnSettingsPanelProps {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\nexport function ColumnSettingsPanel({ columns, hidden, onToggle, onShowAll, onHideAll }: ColumnSettingsPanelProps) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\", minWidth: \"180px\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", paddingBottom: \"4px\", borderBottom: `1px solid ${BORDER}` }}>\n <button\n onClick={onShowAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: ACCENT, fontWeight: 500, padding: 0 }}\n >\n Show all\n </button>\n <button\n onClick={onHideAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, fontWeight: 500, padding: 0 }}\n >\n Hide all\n </button>\n </div>\n {columns.map((col) => (\n <label\n key={col.key}\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--foreground)\" }}\n >\n <input\n type=\"checkbox\"\n checked={!hidden.has(col.key)}\n onChange={() => onToggle(col.key)}\n style={{ accentColor: ACCENT, width: \"14px\", height: \"14px\", margin: 0, cursor: \"pointer\" }}\n />\n {col.label}\n </label>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { toPng } from \"html-to-image\";\nimport { ColumnSettingsPanel } from \"./ColumnSettingsPanel\";\nimport { BORDER, MUTED } from \"./theme\";\n\nconst DOT_COLOR = \"#aaaaaa\";\nconst DOT_HOVER = \"#555555\";\n\ninterface ColumnConfig {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\ninterface ComponentActionsProps {\n children: React.ReactNode;\n onDownloadCSV?: () => void;\n columnConfig?: ColumnConfig;\n filename?: string;\n}\n\ntype MenuView = \"main\" | \"columns\";\n\nexport function ComponentActions({ children, onDownloadCSV, columnConfig, filename = \"component\" }: ComponentActionsProps) {\n const [open, setOpen] = useState(false);\n const [view, setView] = useState<MenuView>(\"main\");\n const contentRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const btnRef = useRef<HTMLButtonElement>(null);\n\n const close = useCallback(() => {\n setOpen(false);\n setView(\"main\");\n }, []);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current?.contains(e.target as Node)) return;\n if (btnRef.current?.contains(e.target as Node)) return;\n close();\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, close]);\n\n const handleDownloadPNG = useCallback(async () => {\n if (!contentRef.current) return;\n try {\n const url = await toPng(contentRef.current, { backgroundColor: \"white\", pixelRatio: 2 });\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${filename}.png`;\n a.click();\n } catch {\n // silent fail\n }\n close();\n }, [filename, close]);\n\n const handleCSV = useCallback(() => {\n onDownloadCSV?.();\n close();\n }, [onDownloadCSV, close]);\n\n return (\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\" }}>\n <div ref={contentRef} style={{ width: \"100%\" }}>\n {children}\n </div>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", marginTop: \"4px\", position: \"relative\", zIndex: 10, flexShrink: 0 }}>\n <button\n ref={btnRef}\n onClick={() => { setOpen((o) => !o); setView(\"main\"); }}\n aria-label=\"Component actions\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px 8px\",\n display: \"flex\",\n gap: \"3px\",\n alignItems: \"center\",\n borderRadius: \"6px\",\n transition: \"background 0.15s\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#f2f2f2\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_HOVER));\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"none\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_COLOR));\n }}\n >\n <svg width=\"20\" height=\"6\" viewBox=\"0 0 20 6\">\n <circle cx=\"3\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"10\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"17\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n </svg>\n </button>\n\n {open && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"4px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n borderRadius: \"0.75rem\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.06)\",\n zIndex: 50,\n padding: view === \"columns\" ? \"10px\" : \"4px\",\n minWidth: view === \"columns\" ? \"200px\" : \"160px\",\n }}\n >\n {view === \"main\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {columnConfig && (\n <MenuButton label=\"Customize columns\" onClick={() => setView(\"columns\")} />\n )}\n {onDownloadCSV && (\n <MenuButton label=\"Download CSV\" onClick={handleCSV} />\n )}\n <MenuButton label=\"Download PNG\" onClick={handleDownloadPNG} />\n </div>\n ) : (\n <div>\n <button\n onClick={() => setView(\"main\")}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, marginBottom: \"6px\", padding: 0 }}\n >\n ← Back\n </button>\n <ColumnSettingsPanel\n columns={columnConfig!.columns}\n hidden={columnConfig!.hidden}\n onToggle={columnConfig!.onToggle}\n onShowAll={columnConfig!.onShowAll}\n onHideAll={columnConfig!.onHideAll}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction MenuButton({ label, onClick }: { label: string; onClick: () => void }) {\n return (\n <button\n onClick={onClick}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"8px 12px\",\n fontSize: \"12.5px\",\n color: \"var(--foreground)\",\n textAlign: \"left\",\n borderRadius: \"8px\",\n transition: \"background 0.15s\",\n whiteSpace: \"nowrap\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.background = \"#f2f2f2\")}\n onMouseLeave={(e) => (e.currentTarget.style.background = \"none\")}\n >\n {label}\n </button>\n );\n}\n","function escapeCSV(value: unknown): string {\n const str = value == null ? \"\" : String(value);\n if (str.includes(\",\") || str.includes('\"') || str.includes(\"\\n\")) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nexport function downloadCSV(\n columns: { key: string; label: string }[],\n rows: Record<string, unknown>[],\n filename: string\n): void {\n const header = columns.map((c) => escapeCSV(c.label)).join(\",\");\n const body = rows\n .map((row) => columns.map((c) => escapeCSV(row[c.key])).join(\",\"))\n .join(\"\\n\");\n const csv = `${header}\\n${body}`;\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8;\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename.endsWith(\".csv\") ? filename : `${filename}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n}\n","\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE,\n} from \"./theme\";\n\nexport interface ThemeTokens {\n BORDER: string;\n MUTED: string;\n PAPER: string;\n ACCENT: string;\n ACCENT_SOFT: string;\n SECONDARY: string;\n CHART_PALETTE: string[];\n}\n\nexport const DEFAULT_TOKENS: ThemeTokens = {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE: [...CHART_PALETTE],\n};\n\nconst GenUIThemeContext = createContext<ThemeTokens>(DEFAULT_TOKENS);\n\nexport interface GenUIThemeProviderProps {\n colors?: Partial<ThemeTokens>;\n children: React.ReactNode;\n}\n\nexport function GenUIThemeProvider({ colors, children }: GenUIThemeProviderProps) {\n const merged = useMemo(\n () => (colors ? { ...DEFAULT_TOKENS, ...colors } : DEFAULT_TOKENS),\n [colors]\n );\n return (\n <GenUIThemeContext.Provider value={merged}>\n {children}\n </GenUIThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeTokens {\n return useContext(GenUIThemeContext);\n}\n","// bbox math for document-field-extraction overlays.\n//\n// A bbox is [x0, y0, x1, y1] in **PDF points**, origin **BOTTOM-LEFT** (the\n// convention emitted by the extractor's ExtractedField.bbox). The browser draws\n// in **top-left-origin pixels**, so we both scale (points → rendered px) AND\n// flip the Y axis. This is the single most error-prone bit of the component, so\n// it lives in exactly one place with its own tests.\n\nexport type Bbox = [number, number, number, number];\n\n/** Page size in PDF points (from PageDimension.width_pt / height_pt). */\nexport interface PagePoints {\n wPts: number;\n hPts: number;\n}\n\n/** Rendered size of the page image in CSS pixels (measured at runtime). */\nexport interface RenderPx {\n wPx: number;\n hPx: number;\n}\n\n/** A top-left-origin pixel rectangle ready for absolute positioning. */\nexport interface Rect {\n left: number;\n top: number;\n width: number;\n height: number;\n}\n\n/**\n * Convert a PDF-point, bottom-left bbox into a top-left pixel rect scaled to the\n * rendered page image. Returns `null` for a missing/degenerate bbox or page size\n * (callers skip rendering a box in that case).\n */\nexport function bboxToRect(\n bbox: Bbox | null | undefined,\n page: PagePoints,\n px: RenderPx,\n): Rect | null {\n if (!bbox || bbox.length !== 4) return null;\n const { wPts, hPts } = page;\n const { wPx, hPx } = px;\n if (!wPts || !hPts || !wPx || !hPx) return null;\n\n const [x0, y0, x1, y1] = bbox;\n const sx = wPx / wPts;\n const sy = hPx / hPts;\n\n return {\n left: x0 * sx,\n width: (x1 - x0) * sx,\n // Flip Y: the box's TOP in screen space is the page height minus its upper\n // PDF-point edge (y1), because PDF y grows upward from the bottom.\n top: (hPts - y1) * sy,\n height: (y1 - y0) * sy,\n };\n}\n","// Human-readable field labels. Ported from adoptwebui's file-explorer review\n// pane (documentViewer/fieldLabels.js) so the chat card and the explorer show\n// identical field names.\n\nconst LABEL_DISPLAY: Record<string, string> = {\n \"employer identification number\": \"Employer ID (EIN)\",\n \"company or business name\": \"Company Name\",\n \"total revenue\": \"Total Revenue\",\n \"net income\": \"Net Income\",\n \"tax year\": \"Tax Year\",\n \"invoice number\": \"Invoice Number\",\n \"invoice date\": \"Invoice Date\",\n \"total amount due\": \"Total Amount Due\",\n \"vendor name\": \"Vendor Name\",\n \"receipt total\": \"Receipt Total\",\n \"transaction date\": \"Transaction Date\",\n \"merchant name\": \"Merchant Name\",\n};\n\nexport function prettyLabel(label: string): string {\n return (\n LABEL_DISPLAY[label] ??\n label.replace(/_/g, \" \").replace(/\\b\\w/g, (c) => c.toUpperCase())\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { prettyLabel } from \"./fieldLabels\";\n\ntype Field = NonNullable<SchemaPayload<\"document-field-extraction\">[\"fields\"]>[number];\n\nconst TIER_COLORS: Record<string, string> = {\n green: \"#15803d\",\n amber: \"#f59e0b\",\n red: \"#dc2626\",\n};\n\nconst BADGE_TITLE: Record<string, string> = {\n SC: \"High confidence\",\n CN: \"Medium confidence\",\n AB: \"Low confidence\",\n SW: \"Very low confidence\",\n};\n\n// Confidence-% badge palette: gen-ui semantic bg/text pairs (theme.ts STATUS /\n// ACCOUNT_TYPE colors), keyed by badge tier.\nconst BADGE_STYLE: Record<string, { bg: string; fg: string }> = {\n SC: { bg: \"#dcfce7\", fg: \"#15803d\" },\n CN: { bg: \"#eff6ff\", fg: \"#0364ff\" }, // theme-ok (SECONDARY)\n AB: { bg: \"#fff7ed\", fg: \"#92400e\" },\n SW: { bg: \"#fef2f2\", fg: \"#dc2626\" },\n};\n\n// Right-edge status dot color, keyed by validation `state` (gen-ui semantics).\nconst STATE_DOT: Record<string, string> = {\n ok: \"#15803d\",\n corrected: \"#0364ff\", // theme-ok (SECONDARY)\n missing: \"#dc2626\",\n warn: \"#f59e0b\",\n};\n\nfunction hexToRgba(hex: string, alpha: number): string {\n const h = hex.replace(\"#\", \"\");\n const r = parseInt(h.slice(0, 2), 16);\n const g = parseInt(h.slice(2, 4), 16);\n const b = parseInt(h.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nfunction badgeStyle(f: Field): { bg: string; fg: string } {\n return BADGE_STYLE[f.badge ?? \"\"] ?? { bg: \"#f6f6f6\", fg: \"#777777\" }; // theme-ok (PAPER/MUTED)\n}\n\nfunction dotColor(f: Field): string {\n return STATE_DOT[f.state ?? \"ok\"] ?? \"#15803d\";\n}\n\n/** Selection/border color: a corrected field reads in SECONDARY blue regardless\n * of its tier (a human edit, not a confidence signal); otherwise the tier color,\n * defaulting to amber for an unknown/absent tier. */\nfunction fieldColor(f: Field, secondary: string): string {\n if (f.state === \"corrected\") return secondary;\n return TIER_COLORS[f.confidence_tier ?? \"amber\"] ?? TIER_COLORS.amber;\n}\n\nfunction confidenceLabel(f: Field): string {\n if (typeof f.confidence === \"number\" && !Number.isNaN(f.confidence)) {\n return `${Math.round(f.confidence * 100)}%`;\n }\n return f.badge ?? \"—\";\n}\n\n/**\n * One editable field card in the extraction modal's right-hand list. Ported from\n * adoptwebui's file-explorer review pane (documentViewer/FieldCard.jsx) so chat\n * and the explorer behave identically: click to select (drives two-way bbox\n * highlight), pencil to edit, Save (⌘↵) / Cancel (Esc).\n *\n * `onSave` is host-provided and async; it throws on failure (surfaced inline).\n * When `onSave` is absent the card is read-only (legacy / non-docstore payloads).\n */\nexport function FieldDetail({\n field,\n selected,\n onSelect,\n onSave,\n correctionCount = 0,\n cardRef,\n}: {\n field: Field;\n selected: boolean;\n onSelect: (key: string | null) => void;\n onSave?: (fieldKey: string, value: string) => Promise<void>;\n correctionCount?: number;\n cardRef?: React.Ref<HTMLDivElement>;\n}) {\n const { BORDER, MUTED, PAPER, SECONDARY } = useTheme();\n const [editing, setEditing] = React.useState(false);\n const [draft, setDraft] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n const [saveError, setSaveError] = React.useState<string | null>(null);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n\n const color = fieldColor(field, SECONDARY);\n const corrected = field.state === \"corrected\";\n\n const startEdit = (e: React.MouseEvent) => {\n e.stopPropagation();\n setDraft(field.value || \"\");\n setSaveError(null);\n setEditing(true);\n setTimeout(() => {\n textareaRef.current?.focus();\n textareaRef.current?.select();\n }, 0);\n };\n\n const cancelEdit = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n setEditing(false);\n setSaveError(null);\n };\n\n const save = async (e: React.SyntheticEvent) => {\n e.stopPropagation();\n if (!onSave || draft === field.value) {\n setEditing(false);\n return;\n }\n setSaving(true);\n setSaveError(null);\n try {\n await onSave(field.field_key, draft);\n setEditing(false);\n } catch (err) {\n const msg =\n (err as { response?: { data?: { detail?: string } } })?.response?.data\n ?.detail || \"Save failed. Try again.\";\n setSaveError(msg);\n } finally {\n setSaving(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") cancelEdit(e);\n if (e.key === \"Enter\" && (e.metaKey || e.ctrlKey)) void save(e);\n };\n\n return (\n <div\n ref={cardRef}\n data-testid=\"field-card\"\n data-field-key={field.field_key}\n data-selected={selected ? \"true\" : \"false\"}\n role=\"button\"\n tabIndex={0}\n onClick={() => !editing && onSelect(selected ? null : field.field_key)}\n onKeyDown={(e) => {\n if (!editing && e.key === \"Enter\") onSelect(selected ? null : field.field_key);\n }}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n padding: \"8px 10px\",\n borderRadius: \"0.5rem\",\n border: `1px solid ${selected ? color : BORDER}`,\n background: selected ? hexToRgba(color, 0.06) : \"white\",\n cursor: editing ? \"default\" : \"pointer\",\n transition: \"background 0.15s, border-color 0.15s\",\n }}\n >\n {/* Top row: confidence-% badge + label + page + edit affordance\n (mirrors the file-explorer FieldCard layout). */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", minWidth: 0 }}>\n <span\n title={BADGE_TITLE[field.badge ?? \"\"] ?? field.badge ?? \"\"}\n style={{\n fontSize: \"10px\",\n fontWeight: 700,\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n flexShrink: 0,\n letterSpacing: \"0.02em\",\n minWidth: \"34px\",\n textAlign: \"center\",\n fontVariantNumeric: \"tabular-nums\",\n background: badgeStyle(field).bg,\n color: badgeStyle(field).fg,\n }}\n >\n {confidenceLabel(field)}\n </span>\n <span\n title={prettyLabel(field.label)}\n style={{\n fontSize: \"12.5px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n flex: 1,\n minWidth: 0,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {prettyLabel(field.label)}\n </span>\n {field.is_primary && (\n <span\n style={{\n fontSize: \"9px\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n color: MUTED,\n flexShrink: 0,\n }}\n >\n Primary\n </span>\n )}\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0 }}>\n p.{field.page + 1}\n </span>\n {!editing && onSave && (\n <button\n type=\"button\"\n onClick={startEdit}\n title=\"Edit value\"\n aria-label=\"Edit value\"\n style={{\n border: `1px solid ${BORDER}`,\n borderRadius: \"6px\",\n background: \"white\",\n cursor: \"pointer\",\n padding: \"3px 5px\",\n lineHeight: 1,\n flexShrink: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={MUTED} strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/>\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/>\n </svg>\n </button>\n )}\n </div>\n\n {editing ? (\n <div onClick={(e) => e.stopPropagation()} style={{ display: \"flex\", flexDirection: \"column\", gap: \"5px\" }}>\n <textarea\n ref={textareaRef}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onKeyDown={handleKeyDown}\n rows={3}\n placeholder=\"Enter value…\"\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n resize: \"vertical\",\n fontSize: \"13px\",\n fontFamily: \"var(--font-sans)\",\n color: \"var(--foreground)\",\n padding: \"6px 8px\",\n borderRadius: \"0.4rem\",\n border: `1px solid ${BORDER}`,\n }}\n />\n {saveError && (\n <span style={{ fontSize: \"11px\", color: TIER_COLORS.red }}>{saveError}</span>\n )}\n <div style={{ display: \"flex\", gap: \"6px\" }}>\n <button\n type=\"button\"\n onClick={save}\n disabled={saving}\n title=\"Save (⌘↵)\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"4px 10px\",\n borderRadius: \"0.4rem\",\n border: \"none\",\n background: \"var(--foreground)\",\n color: \"white\",\n cursor: saving ? \"default\" : \"pointer\",\n opacity: saving ? 0.7 : 1,\n }}\n >\n {saving ? \"Saving…\" : \"Save\"}\n </button>\n <button\n type=\"button\"\n onClick={cancelEdit}\n disabled={saving}\n title=\"Cancel (Esc)\"\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"4px 10px\",\n borderRadius: \"0.4rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n color: MUTED,\n cursor: saving ? \"default\" : \"pointer\",\n }}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : corrected ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\", paddingLeft: \"2px\" }}>\n {field.previous_value != null && field.previous_value !== \"\" && (\n <span\n style={{\n fontSize: \"11.5px\",\n color: MUTED,\n textDecoration: \"line-through\",\n fontFamily: \"ui-monospace, 'Cascadia Code', monospace\",\n wordBreak: \"break-word\",\n }}\n >\n {field.previous_value}\n </span>\n )}\n <span\n style={{\n fontSize: \"12.5px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n fontFamily: \"ui-monospace, 'Cascadia Code', monospace\",\n wordBreak: \"break-word\",\n }}\n >\n {field.value || \"—\"}\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\", flexWrap: \"wrap\" }}>\n {field.corrected_by && (\n <span style={{ fontSize: \"11px\", color: SECONDARY }} title={`Corrected by ${field.corrected_by}`}>\n {field.corrected_by}\n </span>\n )}\n {correctionCount > 0 && (\n <span\n style={{\n fontSize: \"10.5px\",\n fontWeight: 600,\n color: MUTED,\n background: PAPER,\n borderRadius: \"9999px\",\n padding: \"1px 7px\",\n }}\n >\n {correctionCount} {correctionCount === 1 ? \"event\" : \"events\"}\n </span>\n )}\n </div>\n </div>\n ) : (\n // Bottom row: monospace value + right-edge validation dot (file explorer).\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", paddingLeft: \"2px\" }}>\n <span\n style={{\n fontSize: \"12.5px\",\n color: MUTED,\n fontFamily: \"ui-monospace, 'Cascadia Code', monospace\",\n flex: 1,\n minWidth: 0,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n title={field.value || \"—\"}\n >\n {field.value || \"—\"}\n </span>\n <span\n title={field.state ?? \"ok\"}\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"9999px\",\n flexShrink: 0,\n background: dotColor(field),\n }}\n />\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Payload = SchemaPayload<\"document-field-extraction\">;\ntype Summary = NonNullable<Payload[\"summary\"]>;\ntype Fact = NonNullable<Summary[\"facts\"]>[number];\n\nconst BADGE_DOT: Record<string, string> = {\n // gen-ui semantic dot colors\n ok: \"#15803d\",\n green: \"#15803d\",\n warn: \"#f59e0b\",\n amber: \"#f59e0b\",\n missing: \"#dc2626\",\n red: \"#dc2626\",\n corrected: \"#0364ff\", // theme-ok (SECONDARY)\n};\n\n/**\n * \"Details\" tab — a read-only summary of one document's extracted data. Ported\n * from adoptwebui's file-explorer review pane (documentViewer/DocumentDetails.jsx)\n * so chat and the explorer show the identical document summary. Driven entirely\n * by the deterministic `summary` projection the extraction pipeline produced\n * (no client-side inference); shows an empty state when absent.\n */\nexport function FieldDetails({\n summary,\n fileName,\n pageCount,\n pagesProcessed,\n}: {\n summary?: Summary | null;\n fileName?: string;\n pageCount?: number;\n pagesProcessed?: number;\n}) {\n const { BORDER, MUTED, PAPER, SECONDARY } = useTheme();\n\n if (!summary) {\n return (\n <div\n style={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"6px\",\n color: MUTED,\n textAlign: \"center\",\n padding: \"24px\",\n }}\n >\n <span style={{ fontSize: \"26px\", lineHeight: 1 }}>📄</span>\n <p style={{ margin: 0, fontSize: \"14px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n No summary yet\n </p>\n <p style={{ margin: 0, fontSize: \"12px\", maxWidth: \"280px\" }}>\n This document has no extracted summary.\n </p>\n </div>\n );\n }\n\n const header = buildHeader(summary);\n const crumb = buildCrumbLine(summary);\n const facts = buildFacts(summary, fileName, pageCount, pagesProcessed);\n\n return (\n <div style={{ height: \"100%\", overflowY: \"auto\", paddingRight: \"4px\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"14px\" }}>\n {/* Title + subtitle */}\n <header style={{ display: \"flex\", flexDirection: \"column\", gap: \"3px\" }}>\n <h2\n title={header.title}\n style={{\n margin: 0,\n fontFamily: \"var(--font-serif)\",\n fontSize: \"20px\",\n fontWeight: 400,\n letterSpacing: \"-0.01em\",\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {header.title}\n </h2>\n {header.subtitle && (\n <p style={{ margin: 0, fontSize: \"12px\", color: MUTED }}>{header.subtitle}</p>\n )}\n </header>\n\n {/* Domain card */}\n {(summary.domain || summary.display_name || summary.domain_group || (summary.tags?.length ?? 0) > 0) && (\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n padding: \"12px 14px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n background: PAPER,\n }}\n >\n {summary.domain_group && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n color: MUTED,\n }}\n >\n {summary.domain_group}\n </span>\n )}\n <h3\n style={{\n margin: 0,\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n }}\n >\n {summary.domain || summary.display_name}\n </h3>\n {crumb && <p style={{ margin: 0, fontSize: \"12px\", color: MUTED }}>{crumb}</p>}\n {(summary.tags?.length ?? 0) > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"5px\", marginTop: \"2px\" }}>\n {summary.tags!.map((t) => (\n <span\n key={t}\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n color: MUTED,\n }}\n >\n {t}\n </span>\n ))}\n </div>\n )}\n </section>\n )}\n\n {/* Stat tiles */}\n {(summary.stats?.length ?? 0) > 0 && (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(130px, 1fr))\",\n gap: \"8px\",\n }}\n >\n {summary.stats!.map((s) => (\n <div\n key={s.field_key}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2px\",\n padding: \"10px 12px\",\n borderRadius: \"0.6rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n }}\n >\n <span style={{ fontSize: \"11px\", color: MUTED }}>{s.label}</span>\n <span\n title={s.value}\n style={{\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {s.value}\n </span>\n {s.caption && (\n <span style={{ fontSize: \"10px\", color: MUTED }}>{s.caption}</span>\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Facts list */}\n {facts.length > 0 && (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n fontSize: \"11px\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n color: MUTED,\n }}\n >\n <span>▤</span>\n <span>Document details</span>\n </div>\n <dl\n style={{\n margin: 0,\n display: \"grid\",\n gridTemplateColumns: \"minmax(110px, auto) 1fr\",\n rowGap: \"6px\",\n columnGap: \"14px\",\n }}\n >\n {facts.map((f) => (\n <React.Fragment key={f.key}>\n <dt style={{ fontSize: \"12px\", color: MUTED }}>{f.label}</dt>\n <dd\n title={typeof f.value === \"string\" ? f.value : undefined}\n style={{\n margin: 0,\n fontSize: \"12px\",\n color: \"var(--foreground)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n wordBreak: \"break-word\",\n }}\n >\n {f.badge && (\n <span\n style={{\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"9999px\",\n flexShrink: 0,\n background: BADGE_DOT[f.badge] ?? SECONDARY,\n }}\n />\n )}\n {f.value}\n </dd>\n </React.Fragment>\n ))}\n </dl>\n </section>\n )}\n </div>\n </div>\n );\n}\n\nfunction buildHeader(summary: Summary): { title: string; subtitle: string } {\n const form = [summary.short_name, summary.display_name].filter(Boolean) as string[];\n const title =\n summary.organization || form.shift() || summary.domain || \"Document\";\n const parts = summary.organization ? [...form] : form;\n if (summary.tax_year) parts.push(`TY ${summary.tax_year}`);\n return { title, subtitle: parts.join(\" · \") };\n}\n\nfunction buildCrumbLine(summary: Summary): string {\n const parts = [...(summary.crumbs || []), summary.short_name].filter(Boolean) as string[];\n if (parts.length > 0) return parts.join(\" · \");\n return summary.domain && summary.display_name ? summary.display_name! : \"\";\n}\n\nfunction buildFacts(\n summary: Summary,\n fileName?: string,\n pageCount?: number,\n pagesProcessed?: number\n): { key: string; label: string; value: string; badge?: string | null }[] {\n const rows: { key: string; label: string; value: string; badge?: string | null }[] = [];\n if (fileName) rows.push({ key: \"file\", label: \"File\", value: fileName });\n if (summary.display_name) {\n rows.push({ key: \"doctype\", label: \"Document type\", value: summary.display_name });\n }\n if (summary.tax_year != null && summary.tax_year !== \"\") {\n rows.push({ key: \"year\", label: \"Tax year\", value: String(summary.tax_year) });\n }\n for (const f of summary.facts || []) {\n rows.push({ key: f.field_key, label: f.label, value: f.value, badge: f.badge });\n }\n if (pageCount) {\n rows.push({\n key: \"pages\",\n label: \"Pages processed\",\n value: `${pagesProcessed ?? pageCount} / ${pageCount}`,\n });\n }\n return rows;\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { prettyLabel } from \"./fieldLabels\";\n\n/** One row of the document's field-change history. Shape mirrors the docstore\n * audit endpoint (GET .../extraction/audit), newest first. */\nexport interface AuditEvent {\n id: string;\n field_key: string;\n previous_value?: string | null;\n new_value?: string | null;\n actor_type?: string | null; // \"human\" | \"system\"\n actor_name?: string | null;\n event_type?: string | null; // \"corrected\" | \"ai_corrected\" | \"ai_extracted\"\n created_at?: string | null;\n reason?: string | null;\n}\n\nfunction initials(name?: string | null): string {\n if (!name) return \"?\";\n return name\n .trim()\n .split(/\\s+/)\n .slice(0, 2)\n .map((w) => (w[0] ?? \"\").toUpperCase())\n .join(\"\");\n}\n\nfunction formatTs(ts?: string | null): string {\n if (!ts) return \"—\";\n const d = new Date(ts);\n if (Number.isNaN(d.getTime())) return ts;\n return d.toLocaleString(undefined, {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n}\n\n/**\n * Flat chronological audit trail for all fields in a document. Ported from\n * adoptwebui's file-explorer review pane (documentViewer/AuditTrailPanel.jsx)\n * to inline styles + theme tokens. Read-only.\n */\nexport function FieldAuditLog({\n events = [],\n loading = false,\n fields = [],\n}: {\n events?: AuditEvent[];\n loading?: boolean;\n fields?: { field_key: string; label?: string }[];\n}) {\n const { BORDER, MUTED, PAPER, SECONDARY } = useTheme();\n\n const fieldLabelMap = React.useMemo(() => {\n const map: Record<string, string> = {};\n for (const f of fields) map[f.field_key] = f.label ?? f.field_key;\n return map;\n }, [fields]);\n\n if (loading) {\n return (\n <div\n style={{\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"32px 20px\",\n fontSize: \"13px\",\n color: MUTED,\n }}\n >\n Loading audit trail…\n </div>\n );\n }\n\n if (events.length === 0) {\n return (\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"6px\",\n padding: \"32px 20px\",\n textAlign: \"center\",\n }}\n >\n <p style={{ margin: 0, fontSize: \"13.5px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n No changes yet\n </p>\n <p style={{ margin: 0, fontSize: \"12px\", color: MUTED, maxWidth: \"240px\", lineHeight: 1.5 }}>\n Field corrections will appear here.\n </p>\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", flex: 1, minHeight: 0, overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 14px 6px\", flexShrink: 0 }}>\n <span\n style={{\n fontSize: \"11.5px\",\n fontWeight: 600,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {events.length} {events.length === 1 ? \"change\" : \"changes\"}\n </span>\n </div>\n <ol style={{ listStyle: \"none\", margin: 0, padding: \"0 0 16px\", overflowY: \"auto\", flex: 1, minHeight: 0 }}>\n {events.map((ev) => {\n const rawLabel = fieldLabelMap[ev.field_key] ?? ev.field_key;\n const label = prettyLabel(rawLabel);\n const isAI = ev.actor_type === \"system\" || ev.event_type === \"ai_corrected\" || ev.event_type === \"ai_extracted\";\n const actor = isAI ? \"AI\" : ev.actor_name || \"Unknown\";\n const eventLabel = isAI ? \"Re-extracted\" : \"Corrected\";\n\n return (\n <li\n key={ev.id}\n data-testid=\"audit-row\"\n style={{ display: \"flex\", gap: \"10px\", padding: \"10px 14px\", borderBottom: `1px solid ${BORDER}` }}\n >\n <div\n title={isAI ? \"AI extraction\" : actor}\n style={{\n flexShrink: 0,\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"50%\",\n background: isAI ? \"#dcfce7\" : \"#eff6ff\",\n color: isAI ? \"#15803d\" : SECONDARY,\n fontSize: \"10.5px\",\n fontWeight: 700,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginTop: \"1px\",\n }}\n >\n {isAI ? \"✨\" : initials(actor)}\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"3px\", flex: 1, minWidth: 0 }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: \"6px\", flexWrap: \"wrap\" }}>\n <span style={{ fontSize: \"12.5px\", fontWeight: 600, color: isAI ? \"#15803d\" : \"var(--foreground)\" }}>\n {actor}\n </span>\n <span\n style={{\n fontSize: \"10.5px\",\n fontWeight: 600,\n color: MUTED,\n background: PAPER,\n borderRadius: \"4px\",\n padding: \"1px 6px\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n >\n {eventLabel}\n </span>\n <span\n style={{\n fontSize: \"12px\",\n color: MUTED,\n flex: 1,\n minWidth: 0,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {label}\n </span>\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0 }}>\n {formatTs(ev.created_at)}\n </span>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\", flexWrap: \"wrap\" }}>\n {ev.previous_value != null && (\n <>\n <span\n style={{\n fontSize: \"12px\",\n fontFamily: \"ui-monospace, monospace\",\n color: MUTED,\n textDecoration: \"line-through\",\n }}\n >\n {ev.previous_value}\n </span>\n <span style={{ fontSize: \"11px\", color: BORDER }}>→</span>\n </>\n )}\n <span\n style={{\n fontSize: \"12px\",\n fontFamily: \"ui-monospace, monospace\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n }}\n >\n {ev.new_value ?? \"—\"}\n </span>\n </div>\n {ev.reason && (\n <p style={{ margin: \"2px 0 0\", fontSize: \"11.5px\", color: MUTED, fontStyle: \"italic\" }}>\n &ldquo;{ev.reason}&rdquo;\n </p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { bboxToRect, type Bbox } from \"./bboxTransform\";\nimport { FieldDetail } from \"./FieldDetail\";\nimport { FieldDetails } from \"./FieldDetails\";\nimport { FieldAuditLog, type AuditEvent } from \"./FieldAuditLog\";\n\ntype Payload = SchemaPayload<\"document-field-extraction\">;\ntype Field = NonNullable<Payload[\"fields\"]>[number];\ntype Page = NonNullable<Payload[\"pages\"]>[number];\n\n/** Handler/data props the HOST injects after resolveUI (NOT part of the LLM\n * payload). When `onFieldSave` is present the field cards become editable and\n * the audit tab is shown; otherwise the card stays read-only. */\nexport interface DocumentFieldExtractionHandlers {\n onFieldSave?: (fieldKey: string, value: string) => Promise<void>;\n auditEvents?: AuditEvent[];\n auditLoading?: boolean;\n onLoadAudit?: () => void;\n}\n\nconst TIER_COLORS: Record<string, string> = {\n green: \"#15803d\",\n amber: \"#f59e0b\",\n red: \"#dc2626\",\n};\n\n// Box/dot color: a corrected field is shown in the SECONDARY blue regardless of\n// its tier (it's a human edit, not a confidence signal); otherwise the tier\n// color, defaulting to amber for an unknown/absent tier (\"safe middle\").\nfunction fieldColor(f: Field, secondary: string): string {\n if (f.state === \"corrected\") return secondary;\n return TIER_COLORS[f.confidence_tier ?? \"amber\"] ?? TIER_COLORS.amber;\n}\n\nfunction hexToRgba(hex: string, alpha: number): string {\n const h = hex.replace(\"#\", \"\");\n const r = parseInt(h.slice(0, 2), 16);\n const g = parseInt(h.slice(2, 4), 16);\n const b = parseInt(h.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\n/** One page image with its absolutely-positioned bbox overlays. Measures the\n * rendered image size and recomputes rects on load + resize (never hardcodes\n * px), so boxes stay aligned across responsive widths. When the selected field\n * lives on this page, its box is scrolled into view within the scroll parent. */\nfunction PageOverlay({\n page,\n fields,\n selectedKey,\n onSelect,\n secondary,\n}: {\n page: Page;\n fields: Field[];\n selectedKey: string | null;\n onSelect: (key: string | null) => void;\n secondary: string;\n}) {\n const { PAPER, MUTED } = useTheme();\n const imgRef = React.useRef<HTMLImageElement>(null);\n const selectedBoxRef = React.useRef<HTMLDivElement>(null);\n const [px, setPx] = React.useState<{ wPx: number; hPx: number } | null>(null);\n\n React.useEffect(() => {\n const el = imgRef.current;\n if (!el) return;\n const measure = () => {\n if (el.clientWidth && el.clientHeight) {\n setPx({ wPx: el.clientWidth, hPx: el.clientHeight });\n }\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n return () => ro.disconnect();\n }, [page.imageUrl]);\n\n // Scroll the selected box into the visible area of the scroll container so the\n // user always sees where the value sits, even on a tall multi-page document.\n React.useEffect(() => {\n if (!selectedKey) return;\n if (!fields.some((f) => f.field_key === selectedKey && f.bbox)) return;\n const el = selectedBoxRef.current;\n if (el && typeof el.scrollIntoView === \"function\") {\n el.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" });\n }\n }, [selectedKey, fields, px]);\n\n const pagePts = { wPts: page.width_pt, hPts: page.height_pt };\n\n return (\n <div style={{ position: \"relative\", width: \"100%\", lineHeight: 0 }}>\n {page.imageUrl ? (\n <img\n ref={imgRef}\n src={page.imageUrl}\n alt={`Page ${page.page + 1}`}\n onLoad={() => {\n const el = imgRef.current;\n if (el && el.clientWidth && el.clientHeight) {\n setPx({ wPx: el.clientWidth, hPx: el.clientHeight });\n }\n }}\n style={{ display: \"block\", width: \"100%\", height: \"auto\" }}\n />\n ) : (\n // No resolved image (host couldn't resolve the raster) — keep the\n // aspect box so cards still make sense, but show nothing to overlay on.\n <div\n style={{\n width: \"100%\",\n aspectRatio: `${page.width_pt} / ${page.height_pt}`,\n background: PAPER,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"12px\",\n color: MUTED,\n lineHeight: 1.4,\n }}\n >\n Page {page.page + 1} image unavailable\n </div>\n )}\n\n {px &&\n page.imageUrl &&\n fields.map((f) => {\n const rect = bboxToRect((f.bbox ?? null) as Bbox | null, pagePts, px);\n if (!rect) return null;\n const color = fieldColor(f, secondary);\n const selected = selectedKey === f.field_key;\n return (\n <div\n key={f.field_key}\n ref={selected ? selectedBoxRef : null}\n data-testid=\"bbox-rect\"\n data-field-key={f.field_key}\n data-selected={selected ? \"true\" : \"false\"}\n onClick={() => onSelect(selected ? null : f.field_key)}\n title={`${f.label}: ${f.value}`}\n style={{\n position: \"absolute\",\n left: `${rect.left}px`,\n top: `${rect.top}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n border: `1px solid ${color}`,\n background: hexToRgba(color, selected ? 0.28 : 0.12),\n boxShadow: selected ? `0 0 0 2px ${hexToRgba(color, 0.5)}` : \"none\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n transition: \"background 0.15s, box-shadow 0.15s\",\n }}\n />\n );\n })}\n </div>\n );\n}\n\ntype TabKey = \"details\" | \"fields\" | \"audit\";\n\n/** The full modal body: PDF-overlay (left) + a 3-tab panel (right) styled like\n * the file-explorer review pane (Details / Fields / Audit Trails). */\nfunction ExtractionDetail({\n pages,\n orderedFields,\n fieldsByPage,\n selectedKey,\n setSelectedKey,\n onFieldSave,\n correctionCounts,\n tab,\n setTab,\n editable,\n summary,\n fileName,\n pageCount,\n pagesProcessed,\n auditEvents,\n auditLoading,\n}: {\n pages: Page[];\n orderedFields: Field[];\n fieldsByPage: (pageNo: number) => Field[];\n selectedKey: string | null;\n setSelectedKey: React.Dispatch<React.SetStateAction<string | null>>;\n onFieldSave?: (fieldKey: string, value: string) => Promise<void>;\n correctionCounts?: Record<string, number>;\n tab: TabKey;\n setTab: (t: TabKey) => void;\n editable: boolean;\n summary?: Payload[\"summary\"];\n fileName?: string;\n pageCount?: number;\n pagesProcessed?: number;\n auditEvents?: AuditEvent[];\n auditLoading?: boolean;\n}) {\n const { BORDER, MUTED, PAPER, SECONDARY } = useTheme();\n const selectedCardRef = React.useRef<HTMLDivElement>(null);\n\n // Mirror of the PDF-side scroll: selecting a field scrolls the right list to\n // its card — same two-way sync the File Explorer uses. Only relevant on the\n // Fields tab.\n React.useEffect(() => {\n if (!selectedKey || tab !== \"fields\") return;\n const el = selectedCardRef.current;\n if (el && typeof el.scrollIntoView === \"function\") {\n el.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }\n }, [selectedKey, tab]);\n\n const tabs: { key: TabKey; label: string; count?: number }[] = [\n { key: \"details\", label: \"Details\" },\n { key: \"fields\", label: \"Fields\", count: orderedFields.length },\n ];\n if (editable) tabs.push({ key: \"audit\", label: \"Audit Trails\", count: auditEvents?.length || undefined });\n\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 3fr) minmax(260px, 1fr)\",\n gap: \"12px\",\n height: \"100%\",\n minHeight: 0,\n }}\n >\n {/* Page images + overlays — scrolls independently. */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n overflowY: \"auto\",\n minHeight: 0,\n }}\n >\n {pages.map((pg) => (\n <PageOverlay\n key={pg.page}\n page={pg}\n fields={fieldsByPage(pg.page)}\n selectedKey={selectedKey}\n onSelect={(key) => {\n setSelectedKey(key);\n // Clicking a bbox must reveal the matching field card even when\n // the user is on the Details/Audit tab. The right-panel\n // scroll-to-card sync is gated on tab===\"fields\", so jump there\n // on select; a deselect (null) leaves the current tab alone.\n if (key) setTab(\"fields\");\n }}\n secondary={SECONDARY}\n />\n ))}\n </div>\n\n {/* Right panel: underline tab bar + active-tab body. */}\n <div style={{ display: \"flex\", flexDirection: \"column\", minWidth: 0, minHeight: 0 }}>\n <div\n style={{\n display: \"flex\",\n gap: \"16px\",\n borderBottom: `1px solid ${BORDER}`,\n flexShrink: 0,\n marginBottom: \"10px\",\n }}\n >\n {tabs.map((t) => {\n const active = tab === t.key;\n return (\n <button\n key={t.key}\n type=\"button\"\n onClick={() => setTab(t.key)}\n data-testid={`tab-${t.key}`}\n style={{\n appearance: \"none\",\n background: \"transparent\",\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: `2px solid ${active ? SECONDARY : \"transparent\"}`,\n padding: \"6px 2px\",\n marginBottom: \"-1px\",\n cursor: \"pointer\",\n fontSize: \"13px\",\n fontWeight: 600,\n color: active ? SECONDARY : MUTED,\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n >\n {t.label}\n {typeof t.count === \"number\" && (\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"1px 7px\",\n borderRadius: \"9999px\",\n background: active ? \"#eff6ff\" : PAPER,\n color: active ? SECONDARY : MUTED,\n }}\n >\n {t.count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n\n {tab === \"details\" ? (\n <FieldDetails\n summary={summary}\n fileName={fileName}\n pageCount={pageCount}\n pagesProcessed={pagesProcessed}\n />\n ) : tab === \"audit\" ? (\n <div style={{ minHeight: 0, overflowY: \"auto\" }}>\n <FieldAuditLog\n events={auditEvents ?? []}\n loading={auditLoading ?? false}\n fields={orderedFields.map((f) => ({ field_key: f.field_key, label: f.label }))}\n />\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n minHeight: 0,\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n <span style={{ fontSize: \"12px\", color: MUTED, padding: \"0 0 8px 2px\", flexShrink: 0 }}>\n {orderedFields.length} extracted\n </span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {orderedFields.map((f) => {\n const selected = selectedKey === f.field_key;\n return (\n <FieldDetail\n key={f.field_key}\n field={f}\n selected={selected}\n onSelect={setSelectedKey}\n onSave={onFieldSave}\n correctionCount={correctionCounts?.[f.field_key] ?? 0}\n cardRef={selected ? selectedCardRef : undefined}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/** Fullscreen modal (portal) hosting the extraction detail. ESC + backdrop close. */\nfunction ExtractionModal({\n open,\n onClose,\n title,\n children,\n}: {\n open: boolean;\n onClose: () => void;\n title: string;\n children: React.ReactNode;\n}) {\n const { BORDER, MUTED } = useTheme();\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n window.addEventListener(\"keydown\", onKey);\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n document.body.style.overflow = prev;\n };\n }, [open, onClose]);\n\n if (!open || typeof document === \"undefined\") return null;\n\n return createPortal(\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 2147483000,\n background: \"rgba(0,0,0,0.5)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"4vh 4vw\",\n backdropFilter: \"blur(2px)\",\n }}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n width: \"90vw\",\n height: \"90vh\",\n background: \"white\",\n borderRadius: \"0.875rem\",\n border: `1px solid ${BORDER}`,\n boxShadow: \"0 20px 60px rgba(0,0,0,0.30)\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n padding: \"11px 16px\",\n borderBottom: `1px solid ${BORDER}`,\n flexShrink: 0,\n }}\n >\n <span\n style={{\n flex: 1,\n minWidth: 0,\n fontFamily: \"var(--font-serif)\",\n fontSize: \"16px\",\n fontWeight: 400,\n letterSpacing: \"-0.01em\",\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {title}\n </span>\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n style={{\n border: `1px solid ${BORDER}`,\n borderRadius: \"8px\",\n background: \"white\",\n cursor: \"pointer\",\n padding: \"5px 9px\",\n fontSize: \"13px\",\n color: MUTED,\n lineHeight: 1,\n }}\n >\n ✕\n </button>\n </div>\n\n {/* Body fills remaining height; each column scrolls on its own. */}\n <div\n style={{\n flex: 1,\n minHeight: 0,\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"14px 16px\",\n }}\n >\n {children}\n </div>\n </div>\n </div>,\n document.body\n );\n}\n\nexport function DocumentFieldExtractionResolver(\n p: Payload & DocumentFieldExtractionHandlers\n) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const [selectedKey, setSelectedKey] = React.useState<string | null>(null);\n const [open, setOpen] = React.useState(false);\n const [tab, setTab] = React.useState<TabKey>(\"fields\");\n\n const pages = p.pages ?? [];\n const fields = p.fields ?? [];\n // Editable + auditable only when the host wired a save handler (docstore doc).\n const editable = typeof p.onFieldSave === \"function\";\n\n // Fetch the audit log once each time the audit tab is opened.\n // Depend on p.onLoadAudit (stable useCallback ref) not the whole props object —\n // depending on `p` re-fires this whenever auditLoading/auditEvents updates, looping.\n const onLoadAudit = p.onLoadAudit;\n React.useEffect(() => {\n if (tab === \"audit\" && onLoadAudit) {\n onLoadAudit();\n }\n }, [tab, onLoadAudit]);\n\n // Per-field correction counts (from the audit events) for the field cards.\n const correctionCounts = React.useMemo(() => {\n const counts: Record<string, number> = {};\n for (const ev of p.auditEvents ?? []) {\n const human = ev.actor_type !== \"system\" && ev.event_type !== \"ai_extracted\";\n if (human) counts[ev.field_key] = (counts[ev.field_key] ?? 0) + 1;\n }\n return counts;\n }, [p.auditEvents]);\n\n // Primary fields first, then higher confidence — mirrors the model summary\n // ordering so the most important values lead the card list.\n const orderedFields = [...fields].sort((a, b) => {\n if (!!a.is_primary !== !!b.is_primary) return a.is_primary ? -1 : 1;\n return (b.confidence ?? 0) - (a.confidence ?? 0);\n });\n\n const fieldsByPage = (pageNo: number) => fields.filter((f) => f.page === pageNo);\n\n const csvCols = [\n { key: \"label\", label: \"Field\" },\n { key: \"value\", label: \"Value\" },\n { key: \"page\", label: \"Page\" },\n { key: \"confidence\", label: \"Confidence\" },\n { key: \"badge\", label: \"Badge\" },\n { key: \"state\", label: \"State\" },\n ];\n const csvRows = orderedFields.map((f) => ({\n label: f.label,\n value: f.value,\n page: f.page + 1,\n confidence: f.confidence ?? \"\",\n badge: f.badge ?? \"\",\n state: f.state ?? \"\",\n }));\n\n const title =\n p.file_name ||\n (p.doc_type ? `${p.doc_type} — extracted fields` : \"Extracted fields\");\n\n // Confidence breakdown for the card chips.\n const tierCounts = fields.reduce(\n (acc, f) => {\n const t = f.confidence_tier ?? \"amber\";\n if (t === \"green\") acc.high += 1;\n else if (t === \"red\") acc.low += 1;\n else acc.med += 1;\n return acc;\n },\n { high: 0, med: 0, low: 0 }\n );\n const chips = [\n { n: tierCounts.high, label: \"high\", color: TIER_COLORS.green },\n { n: tierCounts.med, label: \"medium\", color: TIER_COLORS.amber },\n { n: tierCounts.low, label: \"low\", color: TIER_COLORS.red },\n ].filter((c) => c.n > 0);\n\n const thumb = pages.find((pg) => pg.imageUrl);\n\n return (\n <ComponentActions\n filename=\"document-fields\"\n onDownloadCSV={() => downloadCSV(csvCols, csvRows, \"document-fields\")}\n >\n {/* Compact summary card — opens the full overlay in a modal on click. */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => setOpen(true)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n }}\n style={{\n display: \"flex\",\n alignItems: \"stretch\",\n gap: \"12px\",\n padding: \"12px\",\n width: \"100%\",\n maxWidth: \"440px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n cursor: \"pointer\",\n textAlign: \"left\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"64px\",\n flexShrink: 0,\n borderRadius: \"0.5rem\",\n border: `1px solid ${BORDER}`,\n background: PAPER,\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {thumb?.imageUrl ? (\n <img\n src={thumb.imageUrl}\n alt=\"Document preview\"\n style={{ width: \"100%\", height: \"auto\", display: \"block\" }}\n />\n ) : (\n <span style={{ fontSize: \"22px\", lineHeight: 1, padding: \"16px 0\" }}>📄</span>\n )}\n </div>\n\n {/* Summary */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {p.file_name || p.doc_type || \"Document\"}\n </p>\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n {fields.length} field{fields.length === 1 ? \"\" : \"s\"} extracted · {pages.length} page\n {pages.length === 1 ? \"\" : \"s\"}\n </span>\n\n {chips.length > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"5px\" }}>\n {chips.map((c) => (\n <span\n key={c.label}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 7px\",\n borderRadius: \"9999px\",\n background: hexToRgba(c.color, 0.12),\n color: c.color,\n }}\n >\n <span\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"9999px\",\n background: c.color,\n }}\n />\n {c.n} {c.label}\n </span>\n ))}\n </div>\n )}\n\n <span\n style={{\n marginTop: \"2px\",\n alignSelf: \"flex-start\",\n fontSize: \"12px\",\n fontWeight: 600,\n padding: \"6px 12px\",\n borderRadius: \"0.5rem\",\n background: \"var(--foreground)\",\n color: \"white\",\n }}\n >\n View &amp; edit fields\n </span>\n </div>\n </div>\n\n <ExtractionModal open={open} onClose={() => setOpen(false)} title={title}>\n <ExtractionDetail\n pages={pages}\n orderedFields={orderedFields}\n fieldsByPage={fieldsByPage}\n selectedKey={selectedKey}\n setSelectedKey={setSelectedKey}\n onFieldSave={p.onFieldSave}\n correctionCounts={correctionCounts}\n tab={tab}\n setTab={setTab}\n editable={editable}\n summary={p.summary}\n fileName={p.file_name}\n pageCount={p.page_count}\n pagesProcessed={p.pages_processed}\n auditEvents={p.auditEvents}\n auditLoading={p.auditLoading}\n />\n </ExtractionModal>\n </ComponentActions>\n );\n}\n\nexport function DocumentFieldExtractionSkeleton() {\n const { BORDER, PAPER } = useTheme();\n return (\n <>\n <style>{`\n @keyframes dfeSkeletonPulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n }\n `}</style>\n <div\n aria-busy=\"true\"\n aria-label=\"Loading extracted document\"\n style={{\n display: \"flex\",\n alignItems: \"stretch\",\n gap: \"12px\",\n padding: \"12px\",\n width: \"100%\",\n maxWidth: \"440px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\",\n }}\n >\n {/* Thumbnail placeholder */}\n <div\n style={{\n width: \"64px\",\n flexShrink: 0,\n borderRadius: \"0.5rem\",\n border: `1px solid ${BORDER}`,\n background: PAPER,\n minHeight: \"82px\",\n animation: \"dfeSkeletonPulse 1.6s ease-in-out infinite\",\n }}\n />\n\n {/* Summary placeholder */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"8px\", paddingTop: \"2px\" }}>\n {/* Filename line */}\n <div\n style={{\n height: \"14px\",\n width: \"65%\",\n borderRadius: \"4px\",\n background: PAPER,\n animation: \"dfeSkeletonPulse 1.6s ease-in-out 0.08s infinite\",\n }}\n />\n {/* \"X fields · Y pages\" line */}\n <div\n style={{\n height: \"11px\",\n width: \"45%\",\n borderRadius: \"4px\",\n background: PAPER,\n animation: \"dfeSkeletonPulse 1.6s ease-in-out 0.14s infinite\",\n }}\n />\n {/* Badge pills */}\n <div style={{ display: \"flex\", gap: \"5px\" }}>\n <div\n style={{\n height: \"18px\",\n width: \"66px\",\n borderRadius: \"9999px\",\n background: PAPER,\n animation: \"dfeSkeletonPulse 1.6s ease-in-out 0.2s infinite\",\n }}\n />\n <div\n style={{\n height: \"18px\",\n width: \"56px\",\n borderRadius: \"9999px\",\n background: PAPER,\n animation: \"dfeSkeletonPulse 1.6s ease-in-out 0.25s infinite\",\n }}\n />\n </div>\n {/* Button placeholder */}\n <div\n style={{\n height: \"28px\",\n width: \"122px\",\n borderRadius: \"0.5rem\",\n background: PAPER,\n marginTop: \"2px\",\n animation: \"dfeSkeletonPulse 1.6s ease-in-out 0.3s infinite\",\n }}\n />\n </div>\n </div>\n </>\n );\n}\n"]}