Task 22 of the slice plan. Wires the Inbox window's renderer: - index.html (replaces the placeholder shipped in Task 2) with the full layout styles + module script. - api.ts re-exports window.inkling.inbox as a typed InboxApi. - recoveryToast.ts persists per-day toast dismissal in localStorage (KST date key) so the banner never re-fires after the user closes it. - store.ts: zustand store with notes, continuity, pendingCount, ollamaStatus, loadInitial(), refreshMeta(), upsert/remove. - main.tsx mounts <App />. - App.tsx orchestrates loadInitial + onNoteUpdated subscription + window-focus refresh, renders header / banners / note list. - 7 component stubs (NoteCard / EditableField / IntentBanner / RecoveryToast / ContinuityBadge / PendingBanner / OllamaBanner) so the shell typechecks today; Tasks 23-28 swap each in. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
10 lines
276 B
TypeScript
10 lines
276 B
TypeScript
import React, { CSSProperties } from 'react';
|
|
export function EditableField(props: {
|
|
value: string;
|
|
onSave: (next: string) => Promise<void>;
|
|
style?: CSSProperties;
|
|
singleLine?: boolean;
|
|
}): React.ReactElement {
|
|
return <div style={props.style}>{props.value}</div>;
|
|
}
|