Counsel
Client arrested yesterday under 498-A and 406 IPC, Saket. FIR annexed. Wife’s family in Gurugram; no prior record. Need anticipatory bail for the brother-in-law who is named but was abroad.
12 Correspondence
Letters, working notes, the fact request, next steps, the memo pointer and the composer: the left column of the matter.
§ The column
The left column of the matter workspace, built only from this page’s components: three letters, the working notes and the composer. The desk to its right is left bare here; the document sheet is documented with the record.
Paper · correspondence at 44 per cent
Counsel
Client arrested yesterday under 498-A and 406 IPC, Saket. FIR annexed. Wife’s family in Gurugram; no prior record. Need anticipatory bail for the brother-in-law who is named but was abroad.
Associate
I have read the FIR. Two instruments are plausible; the dominant one is an application under Section 482 BNSS before the Sessions Court, Saket, for the brother-in-law, with Arnesh Kumar directions as the spine.
Before I draft, two facts I could not find in the file:
Counsel
Abroad 3 March to 19 August 2026. No notice served.
Associate
Drafting the document
Lamp · correspondence at 44 per cent
Counsel
Client arrested yesterday under 498-A and 406 IPC, Saket. FIR annexed. Wife’s family in Gurugram; no prior record. Need anticipatory bail for the brother-in-law who is named but was abroad.
Associate
I have read the FIR. Two instruments are plausible; the dominant one is an application under Section 482 BNSS before the Sessions Court, Saket, for the brother-in-law, with Arnesh Kumar directions as the spine.
Before I draft, two facts I could not find in the file:
Counsel
Abroad 3 March to 19 August 2026. No notice served.
Associate
Drafting the document
01
Correspondence is set like letters in a file, not messages in a chat: a hairline, the sender in small caps with the time at right, then the body in the reading serif. Counsel and the associate share one measure and one ink; neither is a bubble.
.preceda-letter.preceda-letter__head.preceda-letter__sender.preceda-letter__time.preceda-letter__body.preceda-letter__quote.preceda-letter__attachments.preceda-letter__after.preceda-letter--note.preceda-letter--streaming.preceda-correspondenceCounsel
Paper
Counsel
Client arrested yesterday under 498-A and 406 IPC, Saket. FIR annexed. Wife’s family in Gurugram; no prior record. Need anticipatory bail for the brother-in-law who is named but was abroad.
Lamp
Counsel
Client arrested yesterday under 498-A and 406 IPC, Saket. FIR annexed. Wife’s family in Gurugram; no prior record. Need anticipatory bail for the brother-in-law who is named but was abroad.
Associate, with a list
Paper
Associate
I have read the FIR. Two instruments are plausible; the dominant one is an application under Section 482 BNSS before the Sessions Court, Saket, for the brother-in-law, with Arnesh Kumar directions as the spine.
Before I draft, two facts I could not find in the file:
Lamp
Associate
I have read the FIR. Two instruments are plausible; the dominant one is an application under Section 482 BNSS before the Sessions Court, Saket, for the brother-in-law, with Arnesh Kumar directions as the spine.
Before I draft, two facts I could not find in the file:
Quote block
From “Quote selection” on the desk. The excerpt is counsel’s reference, not the associate’s words.
Paper
Counsel
The allegations against the Applicant are omnibus and general, of the kind this Hon’ble Court has repeatedly declined to act upon.
Draft ¶ 3
Find an authority for this or cut it. I will not argue it bare.
Lamp
Counsel
The allegations against the Applicant are omnibus and general, of the kind this Hon’ble Court has repeatedly declined to act upon.
Draft ¶ 3
Find an authority for this or cut it. I will not argue it bare.
Attachments line
Paper
Counsel
FIR and the Magistrate’s order attached.
Lamp
Counsel
FIR and the Magistrate’s order attached.
Clerk’s note
System messages and bounded partials. Never a red banner and never an emoji.
Paper
Note
The draft is on the desk, but the turn ran out of time before paragraph 5 was checked. Its authority is marked VERIFY; ask again to finish the check.
Lamp
Note
The draft is on the desk, but the turn ran out of time before paragraph 5 was checked. Its authority is marked VERIFY; ask again to finish the check.
Clerk’s note, error
The word “Note” takes the error ink; the sentence says what failed and what to do.
Paper
Note
Your instruction was not sent: the connection dropped. It is kept in the composer; send it again.
Lamp
Note
Your instruction was not sent: the connection dropped. It is kept in the composer; send it again.
Counsel
Abroad 3 March to 19 August 2026. No notice served.
Counsel
Abroad 3 March to 19 August 2026. No notice served.
Associate
Thank you. With the dates confirmed, paragraph 1 can rest on the passport annexed as A-3, and the
Associate
Thank you. With the dates confirmed, paragraph 1 can rest on the passport annexed as A-3, and the
Associate
Associate
Note
Two authorities could not be quoted from the corpus and are marked VERIFY.
Note
Two authorities could not be quoted from the corpus and are marked VERIFY.
Note
This turn stopped before a draft was prepared. Nothing on the desk changed.
Note
This turn stopped before a draft was prepared. Nothing on the desk changed.
On the correspondence sheet the body rises to the 17 px reading size and the column runs edge to edge at 16 px gutters. Sender and time stay on one line; long names wrap under the time, never beside it.
390 px
Counsel
Client arrested yesterday under 498-A and 406, Saket. FIR attached. Anticipatory bail for the brother-in-law, who was abroad.
Associate
I have read the FIR. The dominant instrument is an application under s. 482 BNSS before the Sessions Court, Saket, with the Arnesh Kumar directions as the spine.
<ol class="preceda-correspondence__letters">
<li>
<article class="preceda-letter preceda-letter--counsel" data-sender="counsel">
<header class="preceda-letter__head">
<p class="preceda-letter__sender">Counsel</p>
<time class="preceda-letter__time" datetime="2026-09-20T10:42">10:42</time>
</header>
<div class="preceda-letter__body"><p>Client arrested yesterday under 498-A…</p></div>
<p class="preceda-letter__attachments">
<span class="preceda-letter__attachments-label">Attached:</span>
<span class="preceda-letter__attachment"><span class="preceda-letter__attachment-name">FIR.pdf</span> · 2 pages</span>
</p>
</article>
</li>
</ol>import { Letter, LetterQuote } from '@luvkapur/preceda-design-system/react';
<Letter sender="associate" time="10:43" dateTime={sentAt} streaming={isStreaming}
after={<NextSteps steps={steps} onSelect={runStep} />}>
<p>I have read the FIR…</p>
</Letter>
<Letter sender="note" tone="error" time="10:59">
<p>Your instruction was not sent. It is kept in the composer; send it again.</p>
</Letter>02
A chronological account of typed work stages and saved changes. The active line carries the present action; the disclosure retains each substantiated step.
.preceda-working-notes.preceda-working-notes__summary.preceda-working-notes__entries.preceda-working-notes__linkRunning, collapsed
Paper
Lamp
Open
Paper
Lamp
No recorded steps
Paper
No desk entries yet.
Lamp
No desk entries yet.
No desk entries yet.
No desk entries yet.
The summary stays one line; opening correspondence reveals the observed work and desk links.
390 px
<details class="preceda-working-notes"><summary class="preceda-working-notes__summary">From the desk · Drafting began</summary><ol class="preceda-working-notes__entries"><li>Instruction recorded</li><li>Instruction review began</li><li>Working brief prepared</li><li>Legal research began</li><li>Drafting began</li></ol></details>import { WorkingNotes } from '@luvkapur/preceda-design-system/react';
<WorkingNotes status="running" entries={closedEventBackedEntries} />03
The associate asks for what the file does not hold as a short numbered list, each answer written on its own printed line beneath the question. It is the one place a request is answered. A suggestion is never a fact until counsel confirms it, and a failed save never loses an answer.
.preceda-fact-request.preceda-fact-request__title.preceda-fact-request__item.preceda-fact-request__input.preceda-fact-request__group.preceda-fact-request__basis.preceda-fact-request__attached.preceda-fact-request__recorded.preceda-fact-request__outcome.preceda-fact-request__foot.preceda-fact-request__note.preceda-fact-request--historyTwo facts (live)
Answer one or both and save: the request reads back the record, and a question left blank stays open for later.
Paper
Lamp
Every field kind (live)
Text, date, select, a suggested textarea, a document question, a grouped roster whose fields follow the party type, and a recorded blank. Saving returns a partial result.
Paper
Lamp
History and superseded
Paper
Kept for reference. Answer outstanding questions in the current request.
These questions belonged to an instrument that is no longer on the desk.
Lamp
Kept for reference. Answer outstanding questions in the current request.
These questions belonged to an instrument that is no longer on the desk.
Dates the brother-in-law was outside India.
Dates the brother-in-law was outside India.
On the correspondence sheet the questions and answers rise to 17 px, targets to 44 px, and grouped fields stack to one column. Opening the sheet from “1 question waiting” scrolls to the first open item (scroll-margin keeps it clear of the sheet head).
390 px
<form class="preceda-fact-request" data-state="partially-answered" aria-labelledby="fr-title">
<div class="preceda-fact-request__head">
<h3 class="preceda-fact-request__title" id="fr-title">Two facts the file does not hold</h3>
<span class="preceda-fact-request__progress">1 of 2 answered</span>
</div>
<ol class="preceda-fact-request__list">
<li class="preceda-fact-request__item">
<span class="preceda-fact-request__number" aria-hidden="true">1</span>
<div class="preceda-fact-request__body">
<label class="preceda-fact-request__question" for="fr-1">Dates the brother-in-law was outside India.</label>
<div class="preceda-fact-request__control">
<input id="fr-1" class="preceda-fact-request__input" placeholder="Answer…" aria-required="true">
</div>
</div>
</li>
</ol>
<div class="preceda-fact-request__foot">
<span class="preceda-fact-request__remaining">1 still open</span>
<button type="submit" class="preceda-fact-request__submit" disabled>Save 1 answer</button>
</div>
</form>import { FactRequest } from '@luvkapur/preceda-design-system/react';
<FactRequest
data-testid="fact-request-card"
title="Two facts the file does not hold"
questions={items.map(toFactQuestion)} // id = canonicalKey
defaultValues={prefills}
attachments={filesByQuestion}
onAttach={uploadForQuestion}
onSubmit={async (values) => deliver(values)} // → { disposition, items }
disabled={turnInProgress}
/>04
What counsel might ask for next is offered as one line of text links in binding ink, separated by middots, after the letter. They are suggestions in the associate’s voice, not buttons competing with the composer.
.preceda-next-steps.preceda-next-steps__list.preceda-next-steps__item.preceda-next-steps__linkThree steps
Paper
Lamp
One step
Paper
Lamp
Wrapping
Long lines wrap at the middot, never inside a step.
Paper
Lamp
As a link
Paper
Lamp
No steps: the component renders nothing.
No steps: the component renders nothing.
At 390 px each step is a 44 px target in the 17 px serif; the line wraps at the middots.
390 px
<nav class="preceda-next-steps" aria-label="Suggested next">
<ul class="preceda-next-steps__list">
<li class="preceda-next-steps__item"><button type="button" class="preceda-next-steps__link">Draft the application</button></li>
<li class="preceda-next-steps__item"><button type="button" class="preceda-next-steps__link">Check each citation</button></li>
</ul>
</nav>import { NextSteps } from '@luvkapur/preceda-design-system/react';
<NextSteps
steps={actions.map((action, index) => ({ id: String(index), label: action.label }))}
onSelect={(step) => onActionClick(actions[Number(step.id)].prompt)}
/>05
A memorandum is a document, so it lives on the desk. The correspondence carries one ruled line that points to it; choosing the line puts the memorandum on the desk and offers the way back to the current draft.
.preceda-memo-pointer.preceda-memo-pointer__open.preceda-memo-pointer__kind.preceda-memo-pointer__title.preceda-memo-pointer__meta.preceda-memo-pointer__action.preceda-memo-pointer__backClosed
Paper
Lamp
On the desk
Paper
Lamp
Without meta
Paper
Lamp
On the phone the pointer closes the correspondence sheet and opens the memorandum on the desk; the title wraps under the kind and the action moves to its own line.
390 px
<div class="preceda-memo-pointer">
<button type="button" class="preceda-memo-pointer__open" aria-pressed="false">
<span class="preceda-memo-pointer__kind">Memorandum</span>
<span class="preceda-memo-pointer__title">Strategy on anticipatory bail</span>
<span class="preceda-memo-pointer__meta">4 pages · 10:47</span>
<span class="preceda-memo-pointer__action">Open on the desk</span>
</button>
</div>import { MemoPointer } from '@luvkapur/preceda-design-system/react';
<MemoPointer
data-testid="strategy-artifact"
title={strategy.title}
meta={`${strategy.pages} pages`}
onDesk={selectedDocument === strategy.id}
onOpen={() => selectDocument(strategy.id)}
onBack={restorePreviousDraft}
/>06
Counsel instructs; the composer is a plain sheet to write on. The attach affordance is words, the files queued for the next send are a line, and Send is a small ink button — the only filled control in the column.
.preceda-composer.preceda-composer__sheet.preceda-composer__input.preceda-composer__attached.preceda-composer__attach.preceda-composer__send.preceda-composer__drop.preceda-composer--dockSheet (live)
Type and press Enter or Cmd/Ctrl+Enter; Shift+Enter is a new line. Attach a file to see the attached line.
Paper
Nothing sent yet.
Lamp
Nothing sent yet.
With attached files
Paper
Lamp
Dock (mobile)
Paper
Lamp
Dock with a file
Paper
Lamp
In the dock the composer is one line with Send inside the box (ph-desk-paper). Targets are 44 px, the text is 17 px so iOS does not zoom, and the dock respects the safe-area inset and the keyboard.
390 px
<form class="preceda-composer preceda-composer--sheet" data-state="empty">
<div class="preceda-composer__sheet">
<textarea class="preceda-composer__input" rows="1" placeholder="Ask a question or instruct the associate…"
aria-label="Instruction to the associate"></textarea>
</div>
<div class="preceda-composer__row">
<label class="preceda-composer__attach">
<input type="file" class="preceda-composer__file-input" multiple accept=".pdf,.docx">
<span><span class="preceda-composer__attach-verb">Attach</span> FIR, orders, correspondence · PDF, DOCX</span>
</label>
<button type="submit" class="preceda-composer__send" data-matter-send disabled>Send</button>
</div>
<div class="preceda-composer__drop" aria-hidden="true">Drop to attach · PDF, DOCX</div>
</form>import { Composer } from '@luvkapur/preceda-design-system/react';
<Composer
value={draft}
onValueChange={setDraft}
onSend={send}
sending={turnInProgress}
uploadsPending={batchSettling}
files={pendingFiles.map((f) => ({ id: f.localId, name: f.filename, status: f.status, error: f.error }))}
onFilesSelected={uploadFiles}
onRemoveFile={removeFile}
inputRef={textareaRef}
sendButtonProps={{ 'data-matter-send': '' }}
variant={isMobile ? 'dock' : 'sheet'}
/>