Skip to content

Add TactileButton — neumorphic hardware key primitive#2

Merged
peetzweg merged 3 commits into
mainfrom
add-tactile-button
Jun 11, 2026
Merged

Add TactileButton — neumorphic hardware key primitive#2
peetzweg merged 3 commits into
mainfrom
add-tactile-button

Conversation

@peetzweg

Copy link
Copy Markdown
Owner

Summary

  • Adds TactileButton component: a neumorphic hardware-key primitive with press, loading, and success states
  • Ships two demos: basic button and a sequencer-style multi-key demo
  • Adds docs page at /tactile-button with Installation, Usage, and Props sections
  • Updates registry.json, sidebar, and overview index

Test plan

  • pnpm typecheck passes
  • pnpm lint passes
  • pnpm registry:validate passes
  • Docs site renders the TactileButton page with both demos
  • Press state (scale + shadow inversion) feels correct in browser
  • Loading and success state transitions animate smoothly

🤖 Generated with Claude Code

peetzweg and others added 3 commits June 9, 2026 16:07
A realistic, depressing hardware key modelled on the Teenage Engineering
EP-133 K.O. II keypad. Headless: owns the press mechanic only — the
raised⇄pressed box-shadow morph, the content sink, pointer + keyboard
(Space/Enter) wiring, and a controlled `pressed` latch. The consumer owns
appearance (cap colors via `--key-*` custom properties), size, and content.

Ported from uiverse.io/Praashoo7/average-swan-99: the fixed 4-button demo
becomes one reusable key; per-button colors become CSS variables; the `:active`
CSS press is kept (CSS transition, off main thread) and extended with keyboard
support and a latch; the per-key black housing lives in the showcase.

Includes two demos (EP-133 cluster, latched step sequencer), docs page, and
registry + sidebar wiring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
# Conflicts:
#	src/pages/index.mdx
#	vocs.config.ts
@peetzweg peetzweg merged commit 5985445 into main Jun 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant