ascii/ui

The ring is the hero. Tap it to tear it, or feed it a photo in Play.

shadcn-style components in a brutalist ASCII skin. Frames, fills and shadows are strings of characters. Plain HTML underneath, bad signal on top.

Press / for commands. Long-press anything to break it. Scroll fast and the signal tears. The footer is a game.

Thirty components. Weight is character density, frames are strings, color is signal, glitch is feedback. The full rules are at the bottom.

Button

The rim says how loud it is: @ for primary, = for the rest, / for danger.

Input

Focus turns the frame to cyan @. An error turns it into a wall of !.

Use lowercase letters, numbers and hyphens.

Toggles

Checkbox, radio and switch. Native inputs, the glyph is only the paint.

Visibility

Slider

This one is wired to the page: it sets the RGB split, the tearing and the streaks. A real range input sits on top.

55

Tabs

The active tab is a solid slab. Arrow keys move between tabs.

Card

Title on a bar of @, walls of #, and a shadow made of colons. Publishing opens the dialog.

Reporting redesign

Company
MaintainX
Role
Sr. Product Designer
Status
draft

Progress

Same halftone bar. The spinner lives inside the button.

Details

A native details element. The marker flips between [+] and [-] and the answer decodes as it opens.

What ships in the kit?

Thirty components, one HTML file and no build step. Copy the base once, then any component.

Can I change the characters?

Yes. Every frame reads its characters from two custom properties, so a new tone is two strings.

Badge

Inverse slabs for status, brackets for everything else.

OperationalDegradedDownBeta

Alert

A card with a hazard rim. The title says what happened, the body says what to do.

Signal lost

Probes from 3 regions are timing out. Check the load balancer in fra-1.

Heads up

Maintenance window on Sunday at 03:00 UTC. Probes keep running.

Select

A native select inside the same frame as the input.

Skeleton

Loading is a wave moving through the ramp.

Loading

Avatar

Initials on a slab, or a picture pushed through the LCD.

FKMXAD

Crumbs

Slashes do the separating. The current page is a slab.

Calendar

A month of buttons. Today is magenta, your pick is a slab.

Command

Commands is a component too. It runs this site.

or press /

Dropdown

A button that opens a menu. Arrows move, Escape closes.

Empty

When there is nothing, say so and offer the next step.

No work orders

Nothing is broken. Enjoy it, it never lasts.

OTP

Six brackets. They advance on their own and take a paste.

Type any six digits.

Kbd

Keys in brackets. These ones are real.

/ commandsg glitch< > movespace fire

Pager

Brackets around every page, a slab under the current one.

Picture

An LCD panel cut into twelve sectors. Every cell is three subpixels and each sector can run its own mode. Tap a sector.

Buenos Aires, 19:42. Procedural, 64 by 48 cells.

Divider

Four weights of nothing.

Sheet

A dialog that comes up from the bottom in seven steps.

Spinner

Five ways to wait.

Textarea

The same frame, four rows tall, with a counter.

0/280

Timeline

Nodes are @, the wire is colons.

  1. ShippedSearch v2 went to 100 percent of accounts.
  2. In review14 comments in Figma, 3 of them useful.
  3. KickoffOne problem statement, zero solutions. As it should be.

Toast

One line, typed in from the left. Lime for good news, yellow for the other kind.

Segment

Radios dressed as slabs.

Board view.

Tooltip

Hover, focus or tap. It types itself in.

Deploys to production on a Friday

Rules

  • Weight is character density. @ is the loudest thing on the page and . is the quietest.
  • Frames, rules, fills and shadows are strings of characters. Hierarchy comes from which character.
  • Big type is a bitmap: every pixel of a headline is a block of characters.
  • Color is signal: magenta acts, cyan focuses, lime confirms, yellow warns.
  • Glitch is feedback. It fires when you touch something or when a state changes, and the slider turns it down to zero.
  • Everything arrives broken and fixes itself: elements glitch in as they enter the screen, text decodes left to right.
  • Sound is feedback too. Square-wave blips and crushed noise, never music.
  • Nothing jumps. State changes travel through the ramp, one character at a time, at a low frame rate.
  • Underneath it is plain HTML: buttons, inputs, a dialog.

Publish project?

Reporting redesign will be visible to anyone with the link. You can unpublish it at any time.

Filters

Commands

type help

Your signal

Generated glitch poster with your signal code

Generated from your signal code. Long-press or right-click the image to save it.