New Delhi · September 2026
Preceda

10 Record

Record

Ledger, table, register, disclosure, timeline, status label and figure: the record of a matter, set on printed rules.

  1. Ledger
  2. Table
  3. Register row
  4. Timeline
  5. Disclosure
  6. Status label
  7. Figure

§ The record

Rules, not boxes.

The matters register and the table of authorities at desk width, composed from the package alone. Every entry below documents one part in Paper and Lamp, its states, and its behaviour at 390 px.

Matters

Adv. R. Mehra · 7 on the desk

Open a matter
  1. 7

    Anticipatory bail, brother-in-law · Saket Sessions

    Application under s. 482 BNSS · Bail Appl. No. ___ of 2026

    Draft in hand2 authorities verified1 to verify

  2. 6

    Preparedsent to client for signature

  3. 5

    Cheque dishonour · s. 138 NI Act complaint

    Complaint · Patiala House Courts

    Facts open2 questions to counsel

  4. 4

    Filedlisted 2 October

  5. 3

    Prepared

Table of authorities

Anticipatory bail · Saket Sessions

4 relied on

AuthorityCitationPropositionTreatmentVerification
Arnesh Kumar v. State of Bihar(2014) 8 SCC 273Notice under s. 41-A before arrest; Magistrate not to authorise detention mechanicallyfollowed4,212 Verified against the corpus quoted at ¶2
Satender Kumar Antil v. CBI(2022) 10 SCC 51Arnesh Kumar directions reaffirmed; categories for bailfollowed1,318 Verified against the corpus quoted at ¶2
Sushila Aggarwal v. State (NCT of Delhi)(2020) 5 SCC 1Anticipatory bail need not be time-boundfollowed902 Verified against the corpus not yet placed
Preeti Gupta v. State of Jharkhand(2010) 7 SCC 667Omnibus allegations against relatives in 498-A mattersdistinguished61VERIFY proposition candidate for ¶3
Sharma v. Union of India(2011) 3 SCC 900Offered by counsel; not found in the corpus–VERIFY · not in Preceda’s corpus — check the citation before relying on it check the report

Treatment counts are citing decisions in the corpus. A struck authority stays on the table so counsel can see what was refused and why.

01

Ledger

What the file holds, set as key and value on printed rules: keys in small caps, values in the reading face, provenance in small sans beneath. The group of things the file does not yet hold is always first, in source order as well as on screen.

Anatomy

.preceda-ledger
A column of groups. Ledger moves open groups to the front of the source.
.preceda-ledger__group
A <section> named by its heading; --open for “The file does not yet hold”.
.preceda-ledger__heading
Small caps over an ink rule; __count at the right (binding when open).
.preceda-ledger__row
A dt/dd group: __key (small caps) | __value (serif) | __action; __meta beneath the value.
--confirmed / --inferred / --open / --rejected / --editing
Fact status: inferred in ink-2; open as an italic question with a binding key; rejected struck; editing on sunken paper.
.preceda-record-action
The quiet text control shared across the record: Edit, Answer in correspondence, View.

Variants

Facts tab

Open questions first, then facts on file, then intelligence fields.

Paper

The file does not yet hold2 questions

Notice under s. 35(3)
Whether a notice under Section 35(3) BNSS was served on him
Answer in correspondence
Passport stamps
The pages showing exit and re-entry
Answer in correspondence

On file4 facts

Applicant
Rohit Malhotra, brother-in-law of the complainant (Applicant No. 2)
from the FIRconfirmed by counsel
Offence alleged
Sections 498-A and 406 IPC; FIR No. 214 of 2026, P.S. Saket
from the FIR
Outside India
3 March to 19 August 2026
counsel, 10:51
Prior record
None known
inferred from the instructionnot confirmed

Intelligence3

Assigned judge
Shri Vikas Dhull, ASJ-04, Saket
cause list, 21 September
Opposing counsel
Adv. S. Bhasin
Our counsel
Adv. R. Mehra

Lamp

The file does not yet hold2 questions

Notice under s. 35(3)
Whether a notice under Section 35(3) BNSS was served on him
Answer in correspondence
Passport stamps
The pages showing exit and re-entry
Answer in correspondence

On file4 facts

Applicant
Rohit Malhotra, brother-in-law of the complainant (Applicant No. 2)
from the FIRconfirmed by counsel
Offence alleged
Sections 498-A and 406 IPC; FIR No. 214 of 2026, P.S. Saket
from the FIR
Outside India
3 March to 19 August 2026
counsel, 10:51
Prior record
None known
inferred from the instructionnot confirmed

Intelligence3

Assigned judge
Shri Vikas Dhull, ASJ-04, Saket
cause list, 21 September
Opposing counsel
Adv. S. Bhasin
Our counsel
Adv. R. Mehra

Case information

The case sidebar’s MetaRow, as a ledger without actions.

Paper

Case information

Date
2 July 2014
Court
Supreme Court of India
Bench
Chandramauli Kr. Prasad and Pinaki Chandra Ghose, JJ.
Authorities
14 cited · 4,212 citing

Lamp

Case information

Date
2 July 2014
Court
Supreme Court of India
Bench
Chandramauli Kr. Prasad and Pinaki Chandra Ghose, JJ.
Authorities
14 cited · 4,212 citing

State matrix

StatePaperLamp
confirmed
Outside India
3 March to 19 August 2026
counsel, 10:51
Outside India
3 March to 19 August 2026
counsel, 10:51
inferred
Prior record
None known
not confirmed
Prior record
None known
not confirmed
open
Notice
Whether a notice under s. 35(3) BNSS was served
Answer in correspondence
Notice
Whether a notice under s. 35(3) BNSS was served
Answer in correspondence
rejected
Residence
Faridabad
corrected by counsel
Residence
Faridabad
corrected by counsel
editing
Outside India
Outside India
action · hover / focus-visible
empty

On file

No facts on file yet. The associate records them as it reads the instruction.

On file

No facts on file yet. The associate records them as it reads the instruction.

At 390 px

Below 640 px the key sits on its own line above the value, with the action at its right.

390 px

The file does not yet hold2 questions

Notice under s. 35(3)
Whether a notice under Section 35(3) BNSS was served on him
Answer in correspondence
Passport stamps
The pages showing exit and re-entry
Answer in correspondence

On file4 facts

Applicant
Rohit Malhotra, brother-in-law of the complainant (Applicant No. 2)
from the FIRconfirmed by counsel
Offence alleged
Sections 498-A and 406 IPC; FIR No. 214 of 2026, P.S. Saket
from the FIR
Outside India
3 March to 19 August 2026
counsel, 10:51
Prior record
None known
inferred from the instructionnot confirmed

Intelligence3

Assigned judge
Shri Vikas Dhull, ASJ-04, Saket
cause list, 21 September
Opposing counsel
Adv. S. Bhasin
Our counsel
Adv. R. Mehra

Accessibility

  • Each group is a section named by its heading; rows are a description list, so key and value are announced together.
  • Open groups are moved in the source, not with CSS order, so reading and focus order match what is seen.
  • Status is in words (meta line, italic question) as well as ink.
  • Actions are 40 px text controls with the shared focus ring.

Do

  • Put the question the file cannot answer in the value of an open row.
  • Route “Answer in correspondence” to the single fact request.

Don’t

  • Add a second submission surface in the ledger.
  • Show a warning dot for a critical fact; say “critical” in the meta line.

Usage

HTML
<div class="preceda-ledger">
  <section class="preceda-ledger__group preceda-ledger__group--open" aria-labelledby="open">
    <h3 class="preceda-ledger__heading" id="open"><span>The file does not yet hold</span><span class="preceda-ledger__count">2 questions</span></h3>
    <dl class="preceda-ledger__rows">
      <div class="preceda-ledger__row preceda-ledger__row--open">
        <dt class="preceda-ledger__key">Notice under s. 35(3)</dt>
        <dd class="preceda-ledger__value">Whether a notice was served on him</dd>
        <dd class="preceda-ledger__action"><a class="preceda-record-action" href="#…">Answer in correspondence</a></dd>
      </div>
    </dl>
  </section>
</div>
React
<Ledger>
  <LedgerGroup heading="On file" count={`${facts.length} facts`}>
    {facts.map((fact) => (
      <LedgerRow key={fact.key} term={fact.label} state={fact.status === 'derived' ? 'inferred' : 'confirmed'}
        meta={[sourceLabel(fact.source)]} action={<EditFact fact={fact} />}>{fact.value}</LedgerRow>
    ))}
  </LedgerGroup>
  <LedgerGroup heading="The file does not yet hold" open count={`${open.length} questions`}>…</LedgerGroup>
</Ledger>

02

Table

The record in columns, ruled like a printed table of authorities: a running head over an ink rule, small-caps column heads over a second ink rule, hairlines between rows, never boxes. Citations are mono. A struck authority stays on the table, so counsel can see what was refused and why.

Anatomy

.preceda-table__head
Running head: __title (small caps, names the table), __context (serif, centre), __count (small caps, right). Ink rule beneath.
.preceda-table__table th
Small-caps column heads over an ink rule; scope="col".
.preceda-table__table td
Hairline beneath each row; padding on the space scale.
__cell--key / --mono / --numeric / --sans / --prose / --muted
The first column; citations; figures (tabular, end-aligned); chrome text; propositions; secondary.
__row--struck
Key and mono cells struck in the struck tone; the proposition stays readable.
__row--current
A binding hairline at the start: the authority placed at the paragraph being read.
.preceda-table__note
One line beneath, over a rule, explaining counts and struck rows.
data-label
The column name, shown above each value when rows stack below 640 px.

Variants

Table of authorities

At this frame width the table stacks, as it will in the corridor. The desk table opens this page, at full width.

Paper

Table of authorities

Anticipatory bail · Saket Sessions

4 relied on

AuthorityCitationPropositionTreatmentVerification
Arnesh Kumar v. State of Bihar(2014) 8 SCC 273Notice under s. 41-A before arrest; Magistrate not to authorise detention mechanicallyfollowed4,212 Verified against the corpus quoted at ¶2
Satender Kumar Antil v. CBI(2022) 10 SCC 51Arnesh Kumar directions reaffirmed; categories for bailfollowed1,318 Verified against the corpus quoted at ¶2
Sushila Aggarwal v. State (NCT of Delhi)(2020) 5 SCC 1Anticipatory bail need not be time-boundfollowed902 Verified against the corpus not yet placed
Preeti Gupta v. State of Jharkhand(2010) 7 SCC 667Omnibus allegations against relatives in 498-A mattersdistinguished61VERIFY proposition candidate for ¶3
Sharma v. Union of India(2011) 3 SCC 900Offered by counsel; not found in the corpus–VERIFY · not in Preceda’s corpus — check the citation before relying on it check the report

Treatment counts are citing decisions in the corpus. A struck authority stays on the table so counsel can see what was refused and why.

Lamp

Table of authorities

Anticipatory bail · Saket Sessions

4 relied on

AuthorityCitationPropositionTreatmentVerification
Arnesh Kumar v. State of Bihar(2014) 8 SCC 273Notice under s. 41-A before arrest; Magistrate not to authorise detention mechanicallyfollowed4,212 Verified against the corpus quoted at ¶2
Satender Kumar Antil v. CBI(2022) 10 SCC 51Arnesh Kumar directions reaffirmed; categories for bailfollowed1,318 Verified against the corpus quoted at ¶2
Sushila Aggarwal v. State (NCT of Delhi)(2020) 5 SCC 1Anticipatory bail need not be time-boundfollowed902 Verified against the corpus not yet placed
Preeti Gupta v. State of Jharkhand(2010) 7 SCC 667Omnibus allegations against relatives in 498-A mattersdistinguished61VERIFY proposition candidate for ¶3
Sharma v. Union of India(2011) 3 SCC 900Offered by counsel; not found in the corpus–VERIFY · not in Preceda’s corpus — check the citation before relying on it check the report

Treatment counts are citing decisions in the corpus. A struck authority stays on the table so counsel can see what was refused and why.

Evidence matrix (desk)

Paper

Evidence matrix

3 documents

DocumentAnnexurePages
FIR No. 214 of 2026A-16
Passport, exit and entry stampsA-3–
WhatsApp messages, 65B certificate dueA-412

Lamp

Evidence matrix

3 documents

DocumentAnnexurePages
FIR No. 214 of 2026A-16
Passport, exit and entry stampsA-3–
WhatsApp messages, 65B certificate dueA-412

State matrix

StatePaperLamp
row link · hover

Authorities

Authorities

row link · focus-visible

Authorities

Authorities

empty

Table of authorities

0 relied on

AuthorityCitationPropositionTreatmentVerification
No authorities on the table yet.

Table of authorities

0 relied on

AuthorityCitationPropositionTreatmentVerification
No authorities on the table yet.
verification unavailable

Table of authorities

Arnesh Kumar v. State of Bihar(2014) 8 SCC 273

Verification unavailable for this draft. Rows carry no individual verdict until a current receipt exists.

Table of authorities

Arnesh Kumar v. State of Bihar(2014) 8 SCC 273

Verification unavailable for this draft. Rows carry no individual verdict until a current receipt exists.

loading

Table of authorities

Reading…

Reading the authorities on file…

Table of authorities

Reading…

Reading the authorities on file…

At 390 px

Below 640 px (or with data-layout="compact") each row stacks: the key first, then each value under its small-caps column name from data-label. The table stays a table for assistive technology.

390 px

Table of authorities

Anticipatory bail · Saket Sessions

4 relied on

AuthorityCitationPropositionTreatmentVerification
Arnesh Kumar v. State of Bihar(2014) 8 SCC 273Notice under s. 41-A before arrest; Magistrate not to authorise detention mechanicallyfollowed4,212 Verified against the corpus quoted at ¶2
Satender Kumar Antil v. CBI(2022) 10 SCC 51Arnesh Kumar directions reaffirmed; categories for bailfollowed1,318 Verified against the corpus quoted at ¶2
Sushila Aggarwal v. State (NCT of Delhi)(2020) 5 SCC 1Anticipatory bail need not be time-boundfollowed902 Verified against the corpus not yet placed
Preeti Gupta v. State of Jharkhand(2010) 7 SCC 667Omnibus allegations against relatives in 498-A mattersdistinguished61VERIFY proposition candidate for ¶3
Sharma v. Union of India(2011) 3 SCC 900Offered by counsel; not found in the corpus–VERIFY · not in Preceda’s corpus — check the citation before relying on it check the report

Treatment counts are citing decisions in the corpus. A struck authority stays on the table so counsel can see what was refused and why.

Accessibility

  • A real <table> named by its running-head title (aria-labelledby); column heads have scope="col".
  • When rows stack, the header row is visually hidden, not removed, so cells keep their headers.
  • A struck row says “not in corpus · struck” in words; the strike is never the only signal.
  • aria-busy while loading, with a sentence in the body.

Do

  • Keep refused authorities as struck rows.
  • Show the scope notice above the table when the receipt is missing or stale.

Don’t

  • Box cells or zebra-stripe rows.
  • Colour a row by role; write the role in the proposition column.

Usage

HTML
<div class="preceda-table">
  <div class="preceda-table__head"><p class="preceda-table__title" id="toa">Table of authorities</p>
    <span class="preceda-table__context">Anticipatory bail · Saket Sessions</span><p class="preceda-table__count">4 relied on</p></div>
  <div class="preceda-table__scroll"><table class="preceda-table__table" aria-labelledby="toa">…</table></div>
  <p class="preceda-table__note">Treatment counts are citing decisions in the corpus.</p>
</div>
React
<Table title="Table of authorities" context={matterLine} count={`${n} relied on`} note={note}>
  <thead><tr><TableHeaderCell>Authority</TableHeaderCell>…</tr></thead>
  <tbody>
    {rows.map((row) => (
      <TableRow key={row.id} struck={row.verdict?.strike}>
        <TableCell variant="key" label="Authority">…</TableCell>
        <TableCell variant="mono" label="Citation">{row.citation}</TableCell>
      </TableRow>
    ))}
  </tbody>
</Table>

03

Register row

A register is a ledger of entries, not a grid of cards: a number, the title with its instrument line, a state line in chrome sans that leads with the word that matters, and the date at the end. The open matter carries the oxblood point. The whole row is one target; the title is the link.

Anatomy

.preceda-register__head
Heading (and a small-caps standfirst) over an ink rule, with the page’s act at the right.
.preceda-register__columns
Small-caps column heads, aria-hidden (each row reads in full on its own).
.preceda-register__row
An <li>: __number | __main (__title + __subtitle) | __status | __date. Hairline beneath; paper-hover on hover.
--current
The oxblood point before the number; the link carries aria-current.
.preceda-register__link
The title link; its ::after covers the row. Focus draws the ring on the whole row.
.preceda-register__lead--binding / --verify
The lead state word in its tone: “Draft in hand”, “Facts open”.
.preceda-register__actions
Controls that sit above the row link (Delete, Remove).
--unnumbered
Judges, advocates, saved cases: no number column.

Variants

Matters (stacked at this width)

Paper

Matters

Adv. R. Mehra · 7 on the desk

  1. 7

    Anticipatory bail, brother-in-law · Saket Sessions

    Application under s. 482 BNSS · Bail Appl. No. ___ of 2026

    Draft in hand2 authorities verified1 to verify

  2. 6

    Preparedsent to client for signature

  3. 5

    Cheque dishonour · s. 138 NI Act complaint

    Complaint · Patiala House Courts

    Facts open2 questions to counsel

Lamp

Matters

Adv. R. Mehra · 7 on the desk

  1. 7

    Anticipatory bail, brother-in-law · Saket Sessions

    Application under s. 482 BNSS · Bail Appl. No. ___ of 2026

    Draft in hand2 authorities verified1 to verify

  2. 6

    Preparedsent to client for signature

  3. 5

    Cheque dishonour · s. 138 NI Act complaint

    Complaint · Patiala House Courts

    Facts open2 questions to counsel

Judges, unnumbered

Paper

Judges

Saket Sessions · 12 on the roster

  1. Shri Vikas Dhull

    ASJ-04 · Sessions Court, Saket

    214 bail orders61% granted

  2. Ms. Anju Bajaj Chandna

    ASJ-02 · Sessions Court, Saket

    180 bail orders

Lamp

Judges

Saket Sessions · 12 on the roster

  1. Shri Vikas Dhull

    ASJ-04 · Sessions Court, Saket

    214 bail orders61% granted

  2. Ms. Anju Bajaj Chandna

    ASJ-02 · Sessions Court, Saket

    180 bail orders

Saved cases, with an action

Paper

Saved

  1. Arnesh Kumar v. State of Bihar

    (2014) 8 SCC 273 · Supreme Court of India

Lamp

Saved

  1. Arnesh Kumar v. State of Bihar

    (2014) 8 SCC 273 · Supreme Court of India

State matrix

StatePaperLamp
default
  1. 3

    Prepared

  1. 3

    Prepared

current
  1. 7

    Draft in hand1 question waiting

  1. 7

    Draft in hand1 question waiting

empty

Matters

Nothing on the desk yet. Open a matter to begin.

Matters

Nothing on the desk yet. Open a matter to begin.

At 390 px

Below 640 px each row stacks: number, title, instrument line, the lead state word on its own line in binding, then the rest of the state and the date. Column heads are dropped.

390 px

Matters

Adv. R. Mehra · 7 on the desk

  1. 7

    Anticipatory bail, brother-in-law · Saket Sessions

    Application under s. 482 BNSS · Bail Appl. No. ___ of 2026

    Draft in hand2 authorities verified1 to verify

  2. 6

    Preparedsent to client for signature

  3. 5

    Cheque dishonour · s. 138 NI Act complaint

    Complaint · Patiala House Courts

    Facts open2 questions to counsel

  4. 4

    Filedlisted 2 October

  5. 3

    Prepared

Accessibility

  • An <ol> named by the heading; each row is one list item with one link (the title), so rows are a single tab stop each.
  • The row-wide target is the link’s own box, not a click handler on the <li>; focus rings the whole row.
  • The oxblood point is decorative; the current row also says so with aria-current="true".
  • Row controls sit above the link and keep their own names (“Remove”).

Do

  • Lead the state line with the word counsel acts on.
  • Keep numbers stable: they are the matter’s register number.

Don’t

  • Use cards, shadows or chips for matters.
  • Nest interactive controls inside the title link.

Usage

HTML
<ol class="preceda-register__list">
  <li class="preceda-register__row preceda-register__row--current">
    <span class="preceda-register__number">7</span>
    <div class="preceda-register__main">
      <p class="preceda-register__title"><a class="preceda-register__link" href="/matter/…" aria-current="true">Anticipatory bail, brother-in-law</a></p>
      <span class="preceda-register__subtitle">Application under s. 482 BNSS</span>
    </div>
    <p class="preceda-register__status"><span class="preceda-register__lead preceda-register__lead--binding">Draft in hand</span><span>1 to verify</span></p>
    <time class="preceda-register__date" datetime="2026-09-22T10:53">Today, 10:53</time>
  </li>
</ol>
React
<Register heading="Matters" actions={<OpenMatter />} columns={['Matter', 'State', 'Last worked']}>
  {matters.map((m) => (
    <RegisterRow key={m.id} number={m.number} current={m.id === openId}
      title={<Link className="preceda-register__link" to="/matter/$id" params={{ id: m.publicId }}>{m.title}</Link>}
      subtitle={m.instrumentLine} lead={m.stateWord} leadTone={m.stateTone} status={m.stateDetails}
      date={formatWorked(m.updatedAt)} dateTime={m.updatedAt} />
  ))}
</Register>

04

Timeline

One dated ledger, newest first: deadlines with a small-caps DUE, tasks, what happened, and the versions of the draft. Missed deadlines come first with the word “Missed” in binding, never a red alert box. Rows are ruled; there is no line of dots.

Anatomy

.preceda-timeline
An <ol>. Timeline moves missed items to the front of the source, keeping order otherwise.
__when
<time> date in the serif (tabular) with the time beneath in small sans.
__marker
The small-caps word: Missed, Due, v3, Revised, 04. Tone ink via --binding, --verify.
__body
__title in the reading face, __meta phrases joined by middots, optional __detail.
__actions
Record actions at the end: View / Viewing, Confirm, Set as current.
__item--missed / --due / --current / --done / --error
Missed (binding word and date), due, the version on the desk (binding hairline), superseded (ink-2), a failed step.
--unmarked
No marker column, for short activity lists.

Variants

Chronology

Deadlines, tasks, audit and versions in one ledger. Newest first. The missed deadline is third in the source; Timeline moves it to the front.

Paper

  1. Missed

    Filing of vakalatnama for Applicant No. 2

    2 days overdueconfirmed onto the calendar

    A missed deadline can bar relief; file it before the hearing.
  2. Due

    Reply to notice under s. 35(3) BNSS

    3 days remainingconfirmed

    Basis: notice dated 18 September 2026; seven days to appear.
  3. 10:53v3

    Draft revised: ground on omnibus allegations added

    1,284 words (+212)readiness checked

  4. 16:10Task

    Obtain passport pages showing exit and re-entry

    suggestedneeds confirmation

  5. 10:42Opened

    Matter opened from counsel’s instruction

    FIR annexed

Lamp

  1. Missed

    Filing of vakalatnama for Applicant No. 2

    2 days overdueconfirmed onto the calendar

    A missed deadline can bar relief; file it before the hearing.
  2. Due

    Reply to notice under s. 35(3) BNSS

    3 days remainingconfirmed

    Basis: notice dated 18 September 2026; seven days to appear.
  3. 10:53v3

    Draft revised: ground on omnibus allegations added

    1,284 words (+212)readiness checked

  4. 16:10Task

    Obtain passport pages showing exit and re-entry

    suggestedneeds confirmation

  5. 10:42Opened

    Matter opened from counsel’s instruction

    FIR annexed

Draft versions

Paper

  1. 10:53revised

    Version 3 · Agent draft

    1,284 words (+212)readiness checked

  2. 10:31expanded

    Version 2

    1,072 words (+640)

  3. 18:02created

    Version 1 · Forked from “Bail application”

    432 words

Lamp

  1. 10:53revised

    Version 3 · Agent draft

    1,284 words (+212)readiness checked

  2. 10:31expanded

    Version 2

    1,072 words (+640)

  3. 18:02created

    Version 1 · Forked from “Bail application”

    432 words

Audit trail

Paper

  1. 03

    Draft updated

    ¶2, ¶3citations grounded

  2. 02

    Authority linked: Arnesh Kumar v. State of Bihar

    verified

  3. 01

    Ran the fact check

    error: the corpus did not answer

Lamp

  1. 03

    Draft updated

    ¶2, ¶3citations grounded

  2. 02

    Authority linked: Arnesh Kumar v. State of Bihar

    verified

  3. 01

    Ran the fact check

    error: the corpus did not answer

State matrix

StatePaperLamp
missed
  1. Missed

    Vakalatnama for Applicant No. 2

    2 days overdue

  1. Missed

    Vakalatnama for Applicant No. 2

    2 days overdue

due
  1. Due

    Reply to notice under s. 35(3)

    3 days remaining

  1. Due

    Reply to notice under s. 35(3)

    3 days remaining

current
  1. v3

    Version 3

  1. v3

    Version 3

done
  1. Task

    Obtain the FIR

    done

  1. Task

    Obtain the FIR

    done

action · busy
  1. v2

    Version 2

  1. v2

    Version 2

empty

Nothing dated on this matter yet.

Nothing dated on this matter yet.

At 390 px

Below 640 px each row reads date and time on one line with its action at the right, then the marker word, then the title and meta.

390 px

  1. Missed

    Filing of vakalatnama for Applicant No. 2

    2 days overdueconfirmed onto the calendar

    A missed deadline can bar relief; file it before the hearing.
  2. Due

    Reply to notice under s. 35(3) BNSS

    3 days remainingconfirmed

    Basis: notice dated 18 September 2026; seven days to appear.
  3. 10:53v3

    Draft revised: ground on omnibus allegations added

    1,284 words (+212)readiness checked

  4. 16:10Task

    Obtain passport pages showing exit and re-entry

    suggestedneeds confirmation

  5. 10:42Opened

    Matter opened from counsel’s instruction

    FIR annexed

Accessibility

  • An ordered list, newest first; missed items are moved in the source so the first thing read is the first thing seen.
  • “Missed” and “Due” are words, not colours; the date is a <time> with a machine-readable value.
  • The version on the desk carries aria-current and “Viewing” is a pressed toggle.
  • Busy actions set aria-busy and say “Setting…”.

Do

  • Show missed deadlines as the first rows, in words.
  • Use one timeline for deadlines, tasks, audit and versions.

Don’t

  • Use a red alert box or role="alert" for a deadline that was already missed yesterday.
  • Draw a vertical line with dots.

Usage

HTML
<ol class="preceda-timeline">
  <li class="preceda-timeline__item preceda-timeline__item--missed">
    <span class="preceda-timeline__when"><time datetime="2026-09-20">20 Sept</time></span>
    <span class="preceda-timeline__marker preceda-timeline__marker--binding">Missed</span>
    <div class="preceda-timeline__body"><p class="preceda-timeline__title">Vakalatnama for Applicant No. 2</p>
      <p class="preceda-timeline__meta"><span>2 days overdue</span></p></div>
    <span></span>
  </li>
</ol>
React
<Timeline>
  {entries.map((e) => (
    <TimelineItem key={e.id} date={e.dateLabel} dateTime={e.date} time={e.time}
      state={e.missed ? 'missed' : e.due ? 'due' : 'default'} marker={e.marker}
      title={e.title} meta={e.meta} actions={e.action} />
  ))}
</Timeline>

05

Disclosure

A section that opens in place, on the native <details>. The summary is a small-caps label with a count and a typographic indicator; the body is whatever the record holds. Ruled for sections of a pane, quiet for a one-line toggle such as “Working notes”.

Anatomy

.preceda-disclosure
The <details>. --ruled sits between hairlines; --quiet is a one-line toggle.
.preceda-disclosure__summary
Small caps, 40 px (44 px below 1024 px); ▾ indicator turns when closed. Hover to ink.
__count / __count--binding
Tabular count after the label; binding when counsel must act (“1 question waiting”).
__meta
A sans aside on the summary line: “41 s · round 3”.
__body
The content, padded on the space scale.

Variants

Ruled sections

Paper

Evidence analysis3 documents

Section 63 BSA certificate required for the WhatsApp messages at Annexure A-4.

Pending legal analysis4

These require precedent-verified reasoning and are not yet assessed.

Lamp

Evidence analysis3 documents

Section 63 BSA certificate required for the WhatsApp messages at Annexure A-4.

Pending legal analysis4

These require precedent-verified reasoning and are not yet assessed.

Quiet toggle

Paper

Working notes41 s · round 3
  1. Reading authorities

    running

  2. Reading the FIR

    done

Lamp

Working notes41 s · round 3
  1. Reading authorities

    running

  2. Reading the FIR

    done

With a binding count

Paper

Correspondence1 question waiting

Whether a notice under Section 35(3) BNSS was served on him.

Lamp

Correspondence1 question waiting

Whether a notice under Section 35(3) BNSS was served on him.

State matrix

StatePaperLamp
closed
Audit trail12 steps

…

Audit trail12 steps

…

open
Audit trail12 steps

Draft created · 10:53

Audit trail12 steps

Draft created · 10:53

hover
Audit trail
Audit trail
focus-visible
Audit trail
Audit trail
disabled
Audit trailnothing recorded yet

…

Audit trailnothing recorded yet

…

At 390 px

At 390 px the summary grows to a 44 px target and runs full width; the indicator stays at the end of the line.

390 px

Before this is filed2 to resolve

Annexure A-3 is referred to but not on file.

Accessibility

  • Native <details>/<summary>: Enter and Space toggle, and the expanded state is announced without ARIA.
  • The ▾ indicator is CSS content with empty alternative text, so it is not read.
  • Disabled sets aria-disabled on the summary and prevents toggling; say why in the meta.
  • Controlled use: pass open and onOpenChange; the component keeps the DOM in step.

Do

  • Use for secondary record: audit trail, working notes, evidence detail.
  • Put the count in the summary so the closed state still informs.

Don’t

  • Hide the draft or a question to counsel inside a disclosure.
  • Nest disclosures more than one level.

Usage

HTML
<details class="preceda-disclosure preceda-disclosure--ruled">
  <summary class="preceda-disclosure__summary"><span class="preceda-disclosure__label">Audit trail</span><span class="preceda-disclosure__count">12 steps</span></summary>
  <div class="preceda-disclosure__body">…</div>
</details>
React
<Disclosure variant="ruled" summary="Audit trail" count={`${steps.length} steps`}
  open={open} onOpenChange={setOpen}>
  <Timeline variant="audit">…</Timeline>
</Disclosure>

06

Status label

A state is a word, set typographically: small caps in the reading face for treatments and roles, chrome sans for register state lines. The tone role gives the ink; the word, the strike or the oxblood point carries the meaning, so nothing depends on colour. Badges, pills and chips are gone.

Anatomy

.preceda-status-label
Small caps in the label face at the folio size; tabular figures.
--neutral / --binding / --gilt / --verify / --struck
Tone roles from the tokens. Struck strikes the word.
--sans
Chrome sans, for state lines in the register and meta rows.
--point
The oxblood point before the word: the open or current item.
__count
After a middot: citing decisions, days, questions.
treatment / authorityRole
Closed maps treatmentLabels and authorityRoleLabels supply the word and tone.
.preceda-state-line
A run of labels and phrases joined by middots.

Variants

Treatment

The seven treatment types of the citation graph.

Paper

followed4,212appliedreferred tociteddistinguishedcriticisedoverruled

Lamp

followed4,212appliedreferred tociteddistinguishedcriticisedoverruled

Role in this matter

Paper

supportingopposingdistinguishedneutral

Lamp

supportingopposingdistinguishedneutral

Tone roles

Paper

preparedblocks filingneeds counselfirst editionnot applicable

Lamp

preparedblocks filingneeds counselfirst editionnot applicable

State lines (sans)

Paper

Draft in hand2 authorities verified1 to verify

Facts open2 questions to counsel

Filedlisted 2 October

Lamp

Draft in hand2 authorities verified1 to verify

Facts open2 questions to counsel

Filedlisted 2 October

With the point

Paper

open1 question waiting

Lamp

open1 question waiting

State matrix

StatePaperLamp
with count
distinguished61
distinguished61
struck
overruled authority
overruled authority
empty (no treatment)
–
–

At 390 px

Labels do not wrap internally; a state line wraps between its phrases.

390 px

Draft in hand1 question waitingtoday

Accessibility

  • Every label is a word; the tone only reinforces it. Struck labels are also struck.
  • All tone inks are in the contrast matrix at 4.5:1 on every surface in Paper and Lamp.
  • The point is decorative CSS; pair it with the word (and aria-current where it marks the current item).

Do

  • Choose a tone by meaning: binding for obligations, verify for work left to counsel.
  • Use the closed treatment and role maps.

Don’t

  • Colour a label green for success.
  • Use gilt for a status: gilt admits, it does not operate.

Usage

HTML
<span class="preceda-status-label preceda-status-label--neutral">
  <span class="preceda-status-label__word">followed</span><span class="preceda-status-label__count">4,212</span>
</span>
React
<StatusLabel treatment="follows" count="4,212" />
<StatusLabel authorityRole={authority.role} />
<StateLine><StatusLabel variant="sans" tone="binding">Draft in hand</StatusLabel><span>1 to verify</span></StateLine>

07

Figure

One number that matters, set as a folio figure under a small-caps caption, with a line of context beneath. A row of figures is divided by rules, not boxed. An unassessed figure is an en rule, never a zero.

Anatomy

.preceda-figure
A <figure>: __label (figcaption, small caps) then __value (title size, tabular) then __note.
__unit
A unit after the value in the reading size: days, ₹.
--binding / --verify / --gilt
Tone the value when it asks for action or verification.
--small
Heading size, for sidebars.
--empty / --loading
An en rule for not assessed; “Counting…” while loading, aria-busy.
.preceda-figures
A row of figures divided by rules; wraps on narrow screens.

Variants

A row of figures

Paper

Citing decisions
4,212

since 2014

Cross-jurisdiction
38

UK and Canada

Resolved
97%

Lamp

Citing decisions
4,212

since 2014

Cross-jurisdiction
38

UK and Canada

Resolved
97%

Law analysis

Paper

Limitation
18days

Approaching deadline · Art. 137

Court fee
₹ 2,000

Computed, not yet paid

Assessed value
–

Not yet computed

Lamp

Limitation
18days

Approaching deadline · Art. 137

Court fee
₹ 2,000

Computed, not yet paid

Assessed value
–

Not yet computed

State matrix

StatePaperLamp
default
Citing decisions
4,212
Citing decisions
4,212
empty
Court fee
–

Not yet computed

Court fee
–

Not yet computed

loading
Citing decisions
Counting…
Citing decisions
Counting…
small
Authorities
14
Authorities
14

At 390 px

At 390 px a row of figures wraps two to a line; the rules stay between neighbours.

390 px

Citing
4,212
Resolved
97%

Accessibility

  • The caption precedes the value in the source, so “Citing decisions, 4,212” is read in that order.
  • Tone is never the only signal: the note says “Approaching deadline”.
  • Loading sets aria-busy and a word in place of the value.

Do

  • Show a figure only when it is decision-relevant.
  • Say what is unknown: “Not yet computed”.

Don’t

  • Draw bars, rings or sparklines for a single number.
  • Show 0 for a value that was not assessed.

Usage

HTML
<figure class="preceda-figure">
  <figcaption class="preceda-figure__label">Citing decisions</figcaption>
  <span class="preceda-figure__value">4,212</span>
  <p class="preceda-figure__note">since 2014</p>
</figure>
React
<Figures>
  <Figure label="Limitation" value={days} unit="days" tone={band === 'warning' ? 'verify' : 'neutral'} note={bandLabel} />
</Figures>