{locked &&
}
+
@@ -67,6 +69,50 @@ export function WritePanel() {
);
}
+/**
+ * After an import (D2): what came in, and how many entries still ask for a look. The counts follow the resume,
+ * so the note keeps up as flags are cleared; it stays until dismissed.
+ */
+function ImportedNote() {
+ const { imported } = useSearch({ strict: false }) as { imported?: string };
+ const navigate = useNavigate();
+ const data = useCurrentBuilderResumeSelector((resume) => resume.data);
+ const { sections, entries, toCheck } = useMemo(() => summarizeContent(data), [data]);
+ if (!imported) return null;
+
+ const dismiss = () =>
+ void navigate({
+ to: ".",
+ search: (previous: Record
) => ({ ...previous, imported: undefined }),
+ replace: true,
+ });
+
+ return (
+
+
+
+
+ Imported from {imported}. ,{" "}
+ .{" "}
+ {toCheck > 0 ? (
+
+ ) : (
+ Everything was read clearly.
+ )}
+
+
+
+
+ );
+}
+
/** Locked resumes read as they print; Unlock is one click and reversible. */
function LockedNote() {
const resume = useCurrentResume();
diff --git a/apps/web/src/routes/builder/$resumeId/route.tsx b/apps/web/src/routes/builder/$resumeId/route.tsx
index 07778adcd..e11919c85 100644
--- a/apps/web/src/routes/builder/$resumeId/route.tsx
+++ b/apps/web/src/routes/builder/$resumeId/route.tsx
@@ -16,6 +16,8 @@ const searchSchema = z.object({
// Opens the assistant on a conversation ("new" for a fresh one), or on a question to send (⌘K Ask).
assistant: z.string().optional().catch(undefined),
ask: z.string().max(2_000).optional().catch(undefined),
+ // The file a resume was just imported from; Write says what came in until it's dismissed.
+ imported: z.string().max(255).optional().catch(undefined),
});
export const Route = createFileRoute("/builder/$resumeId")({