Skip to content

Ledger Line Input

Boxless fields on a ledger line: spaced-capital labels, a text serif entry, and a gold rule that draws out from the centre on focus. With a validating two-column form.

ProNeoclassicaleditorialminimal
Category
Patterns
Added
2026-09-26
Deps
none
Updated
2026-09-26

This is a viberdy Pro component

The live preview, the props panel and the write-up are open to everyone. The full source, the AI prompt and CLI install are part of Pro.

Preview

Request a valuation

Tell us about the piece and a specialist in the department will reply with an opinion on its value at auction.

Maker, date, size and how it came to you, if you know them.

Nothing is binding until you consign.

Props

Simulate a failed send
No runtime dependencies
"use client";

import { useEffect, useId, useRef, useState } from "react";
import type { FormEvent } from "react";

/**
 * LedgerLineInput — boxless fields written on a ledger line, and the form
 * that holds them.
 *
 * Each field is a label in spaced capitals, the entry in a text serif, and
 * one quiet rule underneath, like a line in a register. Focus draws a
 * second rule in the metal outward from the centre over 600ms. An error
 * holds that rule in oxblood and says what is wrong, in italic, in words.
 *
 * LedgerField is the field on its own: text, email, tel, a native select or
 * a textarea, controlled or not. LedgerLineForm lays fields out on a two
 * column grid beside an optional heading, checks them when you leave a field
 * and again on submit (required, email, telephone), moves focus to the first

  // ---------------------------------------------------------------
  // Full source available with a viberdy Pro subscription.
  // https://viberdy.dev/pricing
  // ---------------------------------------------------------------
}
Notes

About this pattern

Boxed inputs look like software; a heritage house's forms read like a register. Each field here is a label in spaced capitals, the entry in a text serif, and one quiet rule underneath, like a line in a ledger. Focus draws a second rule in the metal outward from the centre. A mistake holds that rule in oxblood and says what is wrong in plain words, in italic, under the line. LedgerField is the field alone, for text, email, telephone, a native select or a longer note. LedgerLineForm lays fields out on two columns beside an optional heading, checks each one when you leave it and all of them on submit, moves focus to the first field that needs attention, and runs your own async handler with a sending state. If it fails, everything typed stays and the form says so; a later submit always wins over an earlier one still in flight. On success it gives way to your thank-you note. Nothing is sent anywhere by the component itself.

Curator’s note

Part of the Neoclassical kit, drop 3, phase 8: the form pattern. Pro by the tier rule (1.5): a stateful multi-part system of two exports, field validation, focus management and an async submit guarded against stale results. The text effect moved to Free in its place, so the phase stays 2/2.

Related

Pairs well with

Matched on shared tags and category — the entries most likely to be used alongside this one.

New

A liquid-glass input that shows focus by thickening its glass outward from where you clicked, with a floating label and a warm-tinted error state.

inputformtext field
Featured
NewPro

The error pattern that actually works with a screen reader: focus the summary, link to the fields, punish late.

formvalidationa11y

A text input whose label floats from placeholder position into a caption on focus.

inputformlabel