Reference index

The Eloquent · UI kit

Reference

Every component, brand component and block in the Eloquent UI registry, each with a live preview, its states, keyboard support and a Vietnamese example.

Components58

  • Button

    Ink-fill, outline, secondary, ghost, link and destructive (✕ icon) buttons; 44px hit targets.

  • Label

    Form label in the Barlow 600 kicker style.

  • Field

    Label, control, description and error layout on Base UI Field and Fieldset; errors shown by a 2px ink rule and an ! icon.

  • Input

    Single-line text field as a 1px ink form line; invalid is a 2px rule; 44px high.

  • Textarea

    Multi-line text field with the 1px ink form line; invalid is a 2px rule.

  • Input group

    One form line with a control plus text, icons or buttons either side, split by ink hairlines.

  • Combobox

    Filterable single or multiple select on Base UI Combobox; ink rules, tint-1 highlight with an ink rule, no shadow.

  • Kbd

    Keyboard key and shortcut chips: Barlow Condensed capitals in a 1px ink rule.

  • Native select

    Native <select> with an ink border, chevron and 44px height; invalid is a 2px ink underline.

  • Select

    Select on Base UI: ink trigger, paper popup with a 1px rule, ink check on the chosen item; no shadow or radius.

  • Input OTP

    One-time code entry on Base UI OTP Field: square 44px cells sharing 1px ink rules, Barlow Condensed figures.

  • Checkbox

    Tick, untick or mixed choice on Base UI Checkbox; checked is an ink fill plus a check glyph.

  • Radio Group

    Pick one option on Base UI RadioGroup and Radio; selected is an ink fill with a paper dot.

  • Switch

    On/off setting on Base UI Switch; on is an ink track with a paper thumb, optional ON/OFF text.

  • Slider

    Number or range input on Base UI Slider; hairline track, heavy ink range, square thumb.

  • Toggle

    Two-state button on Base UI Toggle; pressed shown by an ink fill and aria-pressed, never colour alone.

  • Toggle Group

    Segmented set of toggles on Base UI ToggleGroup, divided by shared 1px ink rules; pressed segments are ink fills.

  • Button Group

    Joins related buttons into one segmented control divided by shared 1px ink rules, with a text cell and separator.

  • Form

    Validated forms on Base UI Form and Field with react-hook-form and zod; errors shown by ink rules, icons and an error summary at the top on submit.

  • Separator

    Ink rule on Base UI Separator: hair (1px) or heavy (3px), horizontal or vertical.

  • Collapsible

    Collapsible on Base UI: 44px ink trigger, opacity-only panel, no hover effect.

  • Scroll Area

    Scroll area on Base UI: square ink thumb on a tint-1 track, focusable viewport.

  • Popover

    Popover on Base UI: ink on paper, 1px ink rule, no shadow, radius or arrow.

  • Tooltip

    Tooltip on Base UI: ink block, paper Barlow 12px, no arrow, shadow or radius; opens on focus.

  • Dialog

    Dialog on Base UI: paper popup, 1px ink rule and heavy top rule, 85% paper backdrop, focus trapped.

  • Sheet

    Sheet on Base UI Dialog: full-height paper panel from any side, 1px inner ink rule, focus trapped.

  • Table

    Semantic table in Barlow: heavy header rule, hairline rows, tabular right-aligned figures.

  • Alert Dialog

    Alert dialog on Base UI: Dialog's paper and rules, no corner close, Action and Cancel are Buttons, focus trapped.

  • Drawer

    Drawer on Base UI: paper panel from any edge, heavy 3px ink rule as the handle, swipe to dismiss, focus trapped.

  • Hover Card

    Hover card on Base UI PreviewCard: link trigger with the marker highlight, popover-style paper and 1px ink rule, opens on hover and focus.

  • Dropdown Menu

    Dropdown menu on Base UI Menu: paper popup, 1px ink rule, ink-fill highlight, hairline separators, checkbox, radio and submenu rows.

  • Context Menu

    Context menu on Base UI ContextMenu: focusable area, opens at the pointer or from Shift+F10, ink-fill highlight, hairline separators.

  • Menubar

    Menubar on Base UI Menubar and Menu: heavy top rule and bottom hairline, ink-fill trigger when open, Dropdown Menu rows.

  • Sonner

    Toaster and toast() on Base UI Toast: paper and 1px ink rule at bottom-right, state by icon, rule or hatched band, never colour.

  • Tabs

    Tabs on Base UI: 3px ink rule on the selected tab, big ModeSwitcher variant, no hover.

  • Accordion

    Accordion on Base UI: hairline items, +/- glyph, opacity-only panel, no hover effect.

  • Navigation Menu

    Navigation menu on Base UI: Barlow caps bar, heavy rule under the current page, flat ruled panel, no hover effect.

  • Breadcrumb

    Breadcrumb trail: nav, ordered list, underlined ink links, middle-dot separators, no hover effect.

  • Pagination

    Pagination links: Barlow Condensed numerals, ink fill on the current page, 44px targets, no hover effect.

  • Aspect Ratio

    Aspect ratio box: CSS aspect-ratio, unstyled, no hover effect.

  • Resizable

    Resizable panels on react-resizable-panels: hairline handle with grip dots, 44px hit area, no hover effect.

  • Card

    Card with no box: heavy 3px top rule, serif content, hairline footer; header, title, description, action, content and footer parts.

  • Item

    Row for a record: media, title, description and actions, closed by an ink hairline; renders as a link with the render prop.

  • Empty

    Empty state: ink hairline, tracked kicker, Playfair headline, serif sentence and an optional ink drawing or icon slot.

  • Command

    Command palette on Base UI Autocomplete (inline): type to filter, arrows to choose, Enter to run; CommandDialog for Ctrl+K.

  • Sidebar

    Side navigation: hairline edge, heavy-rule active item, collapsible groups, icon rail with tooltips and a sheet on small screens.

  • Calendar

    Month grid on react-day-picker: hairline weeks, ink-fill selection, heavy-rule today, Barlow Condensed numerals, 44px days.

  • Date picker

    Date field on Calendar and Popover: a ruled trigger opens a square, flat calendar; Esc returns focus to the trigger.

  • Data table

    Table with sortable headers (aria-sort, ink glyphs), a column filter, a columns popover and paging, on TanStack Table and the Eloquent table.

  • Carousel

    Slides on Embla: ruled slides, numbered Barlow Condensed controls, labelled previous and next, jumps under reduced motion.

  • Chart

    Charts on Recharts in ink: series told apart by pattern, dash and label; one labelled image with a data table alternative; no animation under reduced motion.

  • Badge

    Square status label in Barlow Condensed capitals: ink fill, tint, outline or 2px destructive outline with a cross.

  • Avatar

    Square avatar on Base UI Avatar: hairline frame, greyscale image, initials fallback from props.

  • Alert

    Alert panel with a state per variant: tint-1 info, check success, hatched tint-2 warning, 2px ink rule error.

  • Progress

    Progress bar on Base UI Progress: hairline track, ink fill, value text in Barlow Condensed.

  • Meter

    Meter on Base UI Meter: same hairline track and ink fill as Progress, for a value in a known range.

  • Skeleton

    tint-1 placeholder block that pulses only when motion is allowed.

  • Spinner

    Ink square outline that turns while loading; labelled status, still under reduced motion.

Brand components16

  • Typography

    Brand text elements: two-voice headline, kicker, lede, body, drop cap, pull-quote, figure and meta.

  • Kicker

    tracked-capitals label with an optional leading ink rule.

  • Headline

    two-voice headline (roman lead, italic tail) in four sizes; the marker highlight shows only when it is a link.

  • Tech line

    middle-dot separated stack line in Barlow.

  • Ink figure

    greyscale illustration frame (multiply blend) in 9:16, 16:9, 3:4 or 1:1, with required alt text.

  • Stat tile

    tint-1 figure tile (Barlow Condensed figure, unit, caption) and StatRow, a row of exactly three.

  • Language switch

    EN · VI switch; the current locale in ink 700, the other a real link that keeps the hash and ?mode. No flags.

  • Folio line

    name · title · city between two ink hairlines, with the language switch.

  • Proof

    three lines, Problem. / Built. / Result., with a bold sans lead word and serif text.

  • Story card

    kicker, headline, lede and stack under a heavy rule, with an optional 96px 9:16 ink thumbnail.

  • Cover

    kicker, two-voice headline and a 16:9 ink scene, for slide titles and social images.

  • Calling card

    a 390 × 844 no-scroll screen with four contact buttons, two tiles and a black footer.

  • Language bar

    a non-modal bottom bar that offers the other language once, written in that language.

  • Mode switcher

    a tint-2 band asking what brings you to the paper, with two large tabs (solid ink when selected) synced to the URL hash; controlled or uncontrolled.

  • CTA band

    the press band with a classifieds kicker, a two-voice Playfair headline and an outlined on-press mailto button.

  • Editor panel

    Get in touch with labelled contact rows, a QR slot and an Email me button; variant=band is the press-black contact band for the CV.

Blocks6

  • Article layout

    Brand block: front-page link, kicker, headline, standfirst and byline, body column, At a glance aside, pull quote and Keep reading.

  • Masthead

    Block: the nameplate, folio line with the language switch, and the section nav.

  • Press footer

    Block: the one inverse block, with contact, Download CV, a LinkedIn QR code slot, the language switch and Back to top.

  • Philosophy carousel

    Block: three tabs (I Leverage, II Habit, III Delivery), each with a Playfair quote, body text, a 3:4 ink panel and a signature.

  • Classifieds form

    Block: the brief form (name, company, email, brief, four-way project size) with an error summary, inline success and error messages and an onSubmit prop; no network call.

  • Print A4

    Block: an A4 page shell (210 by 297mm, 44 to 52px margins, main column plus a 210 to 228px side column), a named @page rule for print and a page-break helper. Pure layout.