react

@tabkit/react

React components and hooks for rendering, playing, and editing tablature.

TabSheet — Live Preview

Static tablature renderer as a React component. Change the controls to see the component re-render.

<TabSheet
  measures={measures}
  instrument="guitar"
  theme="light"
  width={900}
  showTuning={true}
  leftHanded={false}
/>

TabEditor — Interactive Editor

Click cells to enter fret numbers. The editor outputs TabMeasure[] on every change.

import { TabEditor } from "@tabkit/react";

<TabEditor
  instrument="guitar"
  theme="light"
  measures={2}
  width={900}
  onChange={(measures) => console.log(measures)}
/>

useTabPlayer Hook

Low-level hook for full control over the playback engine. Returns a ref, controls, and state.

1:1
import { useTabPlayer } from "@tabkit/react";

function MyPlayer({ measures }) {
  const {
    ref, play, pause, stop, seek,
    isPlaying, currentMeasure, currentBeat, setTempo,
  } = useTabPlayer({
    measures,
    instrument: "guitar",
    tempo: 120,
    loop: true,
    onNote: (notes, m, b, tempo) => audio.playNotes(notes, tempo),
  });

  return (
    <div>
      <div ref={ref} />
      <button onClick={isPlaying ? pause : play}>
        {isPlaying ? "Pause" : "Play"}
      </button>
    </div>
  );
}

useTabEditor Hook

Low-level hook for building custom editors with undo/redo support.

import { useTabEditor } from "@tabkit/react";

function MyEditor() {
  const { ref, measures, undo, redo, clear } = useTabEditor({
    instrument: "guitar",
    initialMeasures: 4,
    onChange: (m) => console.log(m),
  });

  return (
    <div>
      <div ref={ref} />
      <button onClick={undo}>Undo</button>
      <button onClick={redo}>Redo</button>
      <button onClick={clear}>Clear</button>
    </div>
  );
}

API Quick Reference

Components

NameDescription
<TabSheet />Static tablature renderer
<TabPlayer />With built-in playback controls
<TabEditor />Interactive tab editor

Hooks

NameDescription
useTabPlayer(opts)Full playback control with ref
useTabEditor(opts)Editor with undo/redo