78 UI Kit
Reference

Changelog & upgrading

Every release, newest first. The part to read before you bump the version is Behavior changes: what will look or act differently on a page that worked yesterday, and what to do about it. The same facts, in more formal words, are in CHANGELOG.md.

How to upgrade
Change the version in your two CDN links (@v0.3.0 → @v0.4.0), and the adapters' too if you use them. Then read the behavior changes for every release you're skipping. The kit is 0.x, but nothing has been removed or renamed yet: old classes and options keep working.

0.4.0 2026-10-06

The pieces dashboards kept building by hand — meta and status lines, quiet notes, stat-card controls and key : value lines, a span-aware grid, a table toolbar — plus aurora text and the “On this page” rail. All of it is new classes; nothing was removed or renamed.

Behavior changes

What's differentWhat to do
Cards in a _78-card-grid, a _78-kpi-grid or a _78-flex row no longer carry the stacked-card top margin, so a row of cards lines up at the top. Before, every card after the first sat 16px low. Delete any margin-top: 0 you added to fix it. In a grid of your own, keep it — the kit can't see your grid. Cards
Two paragraphs in a row inside an alert body are spaced 8px apart; inside a card or a disclosure body, 12px. They used to run together. Nothing, usually. If you spaced them with a class of your own it still wins — you can delete it. Notifications
_78-kpi-grid and _78-card-grid are now presets of _78-grid. They render exactly as before at every width they used to fit; in a container narrower than one column they now give one full-width column instead of overflowing. Nothing. Layout

Added

  • _78-grid, with _78-col-span-2 (two columns when there's room, the whole row when there isn't) and _78-col-full. Layout
  • _78-toc / _78.toc, the “On this page” rail this site uses. Contents rail
  • _78-meta, the dim line of facts under a headline, and _78-card-stack. Cards
  • _78-stat-card__actions (a control beside the label) and _78-stat-card__lines (key : value lines). Cards
  • _78-status, a badge with the caption that explains it. Badges & tags
  • _78-notes, quiet notes inside a card. Notifications
  • _78-figure-neutral and _78-figure-row-neutral. Data-viz
  • _78-form-inline, and the form in a card foot. Forms
  • _78-table-card and _78-table-filters, the toolbar above a table. Table
  • _78-text-aurora, animated gradient text. Utilities

Fixed

  • Cards in a grid line up at the top (above).
  • The kit's demo pages no longer scroll sideways at phone width.

0.3.0 2026-09-30

One tone vocabulary across every component, category colors for labels that aren't states, a second chart color, two JavaScript helpers, and a round of fixes found in real use.

Behavior changes

What's differentWhat to do
_78.modal.alert() resolves true when OK is clicked and false when the dialog is dismissed (×, Escape, backdrop). It used to resolve undefined either way. Nothing, if you ignore the value. If you chain a side effect — alert(msg).then(reload) — it still runs on every close; make it if (await _78.modal.alert(msg)) reload(). Notifications
Chart.js series colors are --accent, then --series-2 (a gray), then the six category colors. They used to be accent, success, warn, danger, info, dim. The second and later lines, bars and doughnut slices change color; the first doesn't. Nothing, unless a chart's colors matter to you. To keep a series' old color, set its borderColor / backgroundColor yourself. Adapters
Stacked switch rows (_78-switch-row) space themselves, 16px apart. Nothing if you used the recommended _78-flex-col _78-gap-16 wrapper — it looks the same. A wrapper of your own that spaces rows with gap now doubles up: drop the wrapper. Selection controls
A plain <ul> / <ol> inside an alert body, a card, a modal body or a disclosure is indented, with its bullets inside the box. Delete any padding you added as a workaround. For a list that shouldn't show bullets, add _78-list-plain. Utilities
The short tone classes color text anywhere, including _78-danger, which used to style only a menu item. If you used _78-danger as a state hook on something else, it now turns red. Rename your hook. Tones
The sparkline end dot is drawn as a round-capped stroke instead of a circle, so it stays round at any width. If you restyled _78-sparkline-dot, set stroke / stroke-width instead of fill / r. Data-viz
The mobile drawer keeps keyboard focus inside it while open, and the page behind it is inert. Nothing. App shell

Added

  • One tone vocabulary. accent, success, warn, danger, info and dim work on every component that takes a tone — so _78-badge-danger and _78-text-success exist now. The old green / red names keep working, and so do amber and yellow. Tones
  • Category colors, cat-1 to cat-6, for labels that aren't states — a source, a team, a type. Tones
  • --series-2, the second chart color. The theme generator outputs it and the categories.
  • _78.util.sortAlpha and _78.util.duration. Utilities
  • _78.tone(), which turns any tone name or alias into the canonical one, and _78.notify.danger(), the same as .error().
  • _78-list-plain.
  • Tabulator responsive-collapse support in the adapter, and the verified version of each library next to its CDN snippet.

Fixed

  • dismissible: false now stops Escape too, not just the backdrop, and confirm() / alert() pass it through.
  • The sparkline end dot no longer stretches into an ellipse in a wide container.
  • Chart.js grid lines and tick labels follow a live theme switch (they used to wait for a reload).
  • Tabulator's collapse panel wraps long values, its +/− toggle is visible in light theme, and its text follows the type scale.
  • Lists in alerts no longer hang their bullets outside the box.

0.2.0 2026-08-21

Five components that had been hand-written in real apps, and a hidden fix.

Behavior changes

What's differentWhat to do
The sparkline's end dot is off by default. It crowded small cards. If a sparkline lost its dot, add data-dot="true" (or dot: true).
_78-card-foot is full-bleed to the card's edges, like the modal foot, and its bottom padding is 12px instead of 16px. Nothing. _78-card-foot-fill adds a tinted surface if you want one.
_78-nav fills the sidebar's height. Nothing — a _78-nav-spacer inside it now pushes the collapse control to the bottom, as intended.

Added

  • _78-switch, _78-seg (with _78.seg), _78-figure-row, _78-split-bar and _78-details.
  • The short color spellings (_78-accent, _78-green, _78-warn, _78-red) work anywhere, not just on a stat-card number.

Fixed

  • The hidden attribute always hides, even on components that set their own display.

0.1.1 and 0.1.0 2026-08-19 / 20

0.1.0 was the first public release: runtime theming, the components, the no-library data-viz, the three library adapters and the theme generator. 0.1.1 added llms.txt / llms-full.txt and corrected the theming copy. Neither has anything to upgrade from.