@pepavlin/sheet-api-react
v0.2.1
Published
React components for displaying and editing musical sheets with chords
Downloads
6
Readme
@pepavlin/sheet-api-react
React components for working with musical sheets and chords, built on top of @pepavlin/sheet-api.
Installation
npm install @pepavlin/sheet-api-reactDemo
Check out the live demo to see all features in action:
npm run demo:install
npm run demoThe demo showcases:
- Multiple display styles (default, modern, smart, printCompact, experimental)
- HTML and PDF preview side-by-side
- Edit mode with live preview
- Chord visibility toggle
- Multi-column layouts
Usage
Sheet Display
import { SheetDisplay, Sheet } from "@pepavlin/sheet-api-react";
function SongSheet() {
const sheetData = `
[C]Amazing [F]grace
How [G]sweet the [C]sound
`;
const sheet = new Sheet(sheetData);
return (
<SheetDisplay
sheet={sheet}
title='Amazing Grace'
hideChords={false}
variant='default'
columns={1}
/>
);
}PDF Export
import { PdfSheetDisplay, Sheet } from "@pepavlin/sheet-api-react";
import { PDFViewer } from "@react-pdf/renderer";
function SongPDF() {
const sheetData = `[C]Amazing [F]grace`;
const sheet = new Sheet(sheetData);
return (
<PDFViewer width='100%' height='600px'>
<PdfSheetDisplay
sheet={sheet}
title='Amazing Grace'
variant='default'
hideChords={false}
/>
</PDFViewer>
);
}Editable Sheet
import { SheetDisplay, Sheet } from "@pepavlin/sheet-api-react";
import { useState } from "react";
function EditableSong() {
const [sheetData, setSheetData] = useState("[C]Amazing [F]grace");
const [title, setTitle] = useState("Amazing Grace");
const sheet = new Sheet(sheetData);
return (
<SheetDisplay
sheet={sheet}
title={title}
editMode={true}
hideChords={false}
onChange={(data, newTitle) => {
setSheetData(data);
setTitle(newTitle);
}}
/>
);
}Components
SheetDisplay
Displays a complete song sheet with text and chords.
Props:
sheet: Sheet- Sheet instance from @pepavlin/sheet-apititle?: string- Song titlehideChords: boolean- Whether to hide chord symbolsvariant?: SheetStyle- Display style ('default', 'default-preview', 'modern', 'smart', 'printCompact', 'experimental')columns?: number- Number of columns for layout (default: 1)editMode?: boolean- Enable edit modeonChange?: (sheetData: string, title: string) => void- Callback for edit mode changestitlePlaceholder?: string- Placeholder for title input in edit modecontentPlaceholder?: string- Placeholder for content input in edit mode
PdfSheetDisplay
Renders sheet as a PDF document using @react-pdf/renderer.
Props:
sheet: Sheet- Sheet instance from @pepavlin/sheet-apititle?: string- Song titlevariant?: SheetStyle- Display stylehideChords: boolean- Whether to hide chord symbols
EditSheet
Standalone editor component for editing sheet content.
Props:
sheet: Sheet- Sheet instancetitle: string- Current titleonChange: (sheetData: string, title: string) => void- Change callbacktitlePlaceholder?: string- Title input placeholdercontentPlaceholder?: string- Content input placeholder
License
ISC
