tuil
ReferenceComponentsButton

Button

A semantic, focusable terminal action with theme variants, disabled state, and keyboard activation.

View rawEdit

Overview

A semantic, focusable terminal action with theme variants, disabled state, and keyboard activation.

Installation

npx @mwillbanks/tuil add button

The CLI writes source-owned components beneath the destination configured in tuil.config.ts; the default import below assumes src/components/tuil.

Loading executable example…

Components and subcomponents

APISignatureDescription
Buttonexport ButtonPublic export Button.

Interaction

Enter and Space invoke onPress while the button is enabled.

API and events

onPress may be synchronous or asynchronous.

Every interactive component publishes semantic roles, labels, state, and focus identity through the renderer's SemanticRegistry. Callback failures flow to the owning application's error boundary.

Documentation flow diagram. props and runtime state; semantic registration; focus and input routing; callback or state update; rerender; S0 leads to S1; S1 leads to S2; S2 leads to S3
Documentation flow diagram. props and runtime state; semantic registration; focus and input routing; callback or state update; rerender; S0 leads to S1; S1 leads to S2; S2 leads to S3

Example

import type { ComponentProps } from "react";
import { Button } from "@/components/tuil/components/button";

export function Example(props: ComponentProps<typeof Button>) {
  return <Button {...props} />;
}

Registry-installed components are source-owned: customize the generated file in your application, and use the package reference for the shared runtime contracts.

On this page