diff --git a/src/components/ChordDetailModal.jsx b/src/components/ChordDetailModal.jsx index b087082..8b5f292 100644 --- a/src/components/ChordDetailModal.jsx +++ b/src/components/ChordDetailModal.jsx @@ -1,6 +1,7 @@ import { useState, useEffect } from 'react' import ChordBox from './ChordBox' import MiniPiano from './MiniPiano' +import VoicingBrowser from './VoicingBrowser' import { getGuitarVoicings, getPianoTechniques, parseChord } from '../lib/voicings' import { CHORD_TYPES, NOTES, getChordsInKey, toRomanNumeral, getSuggestedProgressions } from '../lib/theory' import { FAMOUS_PROGRESSIONS, progressionInKey, getChordSubstitutions, CHORD_PLAYBOOK } from '../lib/education' @@ -29,36 +30,49 @@ function chordDisplayName(root, typeKey) { } function GuitarTab({ chordName }) { + // parseChord's `type` is a CHORD_TYPES key — exactly VoicingBrowser's + // `quality` prop (same mapping PianoTab/ExploreTab already rely on). L-21. + const parsed = parseChord(chordName) const voicings = getGuitarVoicings(chordName) - if (!voicings.length) { + if (!parsed && !voicings.length) { return
No guitar voicings found for {chordName}.
} return ( -- Click any voicing to learn it. Purple = chord tones. Finger numbers inside dots (1=index, 4=pinky). - Barre chords show the fret number on the left. -
-{v.label}
+More grips — fingering reference
++ Click any voicing to learn it. Purple = chord tones. Finger numbers inside dots (1=index, 4=pinky). + Barre chords show the fret number on the left. +
+{v.label}
+- Pro tip: Learn the E-shape and A-shape barres first - — they cover all 12 roots. Then add open voicings for the keys you play in most. - High-fret voicings (above fret 7) work great as jazz comping shapes in a band mix. -
-+ Pro tip: Learn the E-shape and A-shape barres first + — they cover all 12 roots. Then add open voicings for the keys you play in most. + High-fret voicings (above fret 7) work great as jazz comping shapes in a band mix. +
+No piano techniques for {chordName}.
} return (Techniques — how to use it at the keys
+ )} + {techniques.length > 0 && (Blue = Left hand · Purple = Right hand · R marks the root.
+ )} {techniques.map((t, i) => (