eink-ui

eink-ui

Switch to Web Component demos View Storybook

Theme: default Default Inverted High-contrast Set data-theme="..." on <html> for no-JS use.

Card

E-Ink rationale: Cards use thin borders instead of box-shadows or filled backgrounds. This minimizes repaint area and renders crisply on 167–300 PPI E-Ink panels.

Default card

Standard card with thin border. Good for grouping related content.

Raised card

Medium border weight for emphasis. Use sparingly — no more than one per section.

Card without footer

The footer is optional. Cards work fine with just a title and body.

Buttons

E-Ink rationale: Buttons rely on border weight and fill contrast rather than shadows or color hues. The primary button inverts foreground/background for maximum contrast. Focus is shown with a solid outline ring.

Variants

Sizes

Disabled state

Focus state

Tab through the buttons below to see the focus ring. The :focus-visible style adds a 3px solid outline.

Button as link

Text input

E-Ink rationale: Inputs use a single thin border and no background fill. The focus state thickens the outline rather than changing background color, reducing repaint.

This field contains an error.
Icon is drawn with CSS strokes (no images), minimizing ghosting on E-Ink.

Textarea

Content does not meet requirements.

Select

E-Ink rationale: Native <select> elements use the device's built-in dropdown UI, which is optimized for the E-Ink refresh cycle. The custom arrow indicator is rendered via CSS gradients (no SVG dependency).

A selection is required.

Checkbox

E-Ink rationale: Custom checkboxes use appearance: none with a filled square indicator. This avoids the browser's native checkbox rendering, which can appear inconsistently across E-Ink device browsers.

Radio

E-Ink rationale: Same approach as checkbox — appearance: none with a filled circle indicator for the selected state.

Choose a size

Loader

E-Ink rationale: No animation. The loader uses a hashed fill with thin borders, so partial refreshes look clean and ghost-free.

Syncing library
Download
Done

Tooltip

E-Ink rationale: Tooltips appear on keyboard focus or when explicitly toggled — never hover-only — avoiding accidental flashes on slow-refresh displays.

Shown on focus. No animation or shadow.
Inline note about Wi‑Fi sync Library sync runs in the background; keep Wi‑Fi on. Tap outside or the “i” to hide.

Picture

E-Ink rationale: Images are wrapped in a bordered frame with a caption area separated by a thin rule. This clearly delineates image content from text, which is helpful on displays where images may appear as rough dithered grayscale.

Placeholder image showing dimensions 400 by 250
Figure 1 — A placeholder image with caption text.
Placeholder for a landscape photograph
Figure 2 — On E-Ink displays, photographs are dithered to 16 shades of gray.

Additional components

Borders and whitespace replace fills/shadows to avoid large repaints. All selectors remain zero-specificity via :where() and use semantic HTML only.

Alerts

Info
Thin left rule; minimal repaint.
Success
Thicker rule for emphasis.
Warning
Dashed rule reads well on low DPI.

Navigation patterns

Panel one content.
Panel two content.
Panel three content.

Data display

Reading time
18m
+3m vs. yesterday
Chapter progress
65%
Display
E-Ink Carta 1200
Resolution
1440 × 1920
Density
300 PPI

Lists & grouping

  • Now reading
  • Library
  • Notes
Grayscale Offline Low power

Accordion

Uses native <details> for built-in accessibility. No chevrons or fills — only borders and symbols.

Keyboard shortcuts
Use left/right arrows to flip pages.
Annotations
Annotations sync when connected to Wi-Fi.

Timeline & toolbar

  1. Today
    Firmware updated
    Device restarted; page rendering sharper.
  2. Yesterday
    New book added
    "The E-Ink Handbook" downloaded.