Skip to content
github-actions[bot] edited this page Jul 20, 2026 · 7 revisions

Interactive Surface CSS

Interactive Surface CSS is a framework-agnostic interaction-state layer for buttons, links, toggles, tabs, cards, icon controls, and similar interactive hosts. It provides consistent focus, hover, press, current, selected, loading, disabled, reduced-motion, and forced-colors treatment without requiring a component runtime.

Version 1.5.0 is a release candidate until it is published. It preserves every established 1.x import and selector while adding a public transition tuple and deterministic state precedence to the focused state-core.css and complete standalone-preset.css entry points.

Choose the layer you need

Library Responsibility
interactive-surface-css Interaction states, focus visibility, state precedence, and interaction motion
ui-style-kit-css Theme paint, modes, component appearance, and visual tokens
layout-style-css Page structure, layout recipes, and geometry

Use one library, use two compatible libraries, or use all three. None of the packages is a prerequisite for another.

1.5.0 entry points

  • interactive-surface-css/standalone-preset.css: complete state behavior plus neutral standalone paint and geometry.
  • interactive-surface-css/state-core.css: state behavior and the public interaction token contract without theme paint or consumer-facing layout.
  • interactive-surface-css/interactive-surface.css: preserved complete 1.x compatibility stylesheet.
  • interactive-surface-css: preserved JavaScript entry that imports the compatibility stylesheet.

Quick start

npm install interactive-surface-css
import "interactive-surface-css/standalone-preset.css";
<button class="interactive-surface variant-primary" type="button">Save</button>

Live references

Documentation map

Scope

The package styles state. It does not render components, manage application state, create page layouts, or supply an application-wide theme. Applications remain responsible for semantic HTML, state updates, keyboard behavior, and suppressing activation on custom disabled controls.

Clone this wiki locally