/* @jsx React.createElement */ /* Instrument Picker — interactive: click instrument, content swaps */ const INSTRUMENTS = [ { id: 'guitar', name: 'Guitar', jp: 'ギター', blurb: 'Dari open chord pertama sampai fingerstyle solo. Akustik, elektrik, klasik — pilih gitar kamu.', skills: ['Chord', 'Rhythm', 'Melody', 'Technique', 'Ear Training', 'Theory'], teachers: 1, starters: ['Posisi jari yang baik dan benar', 'Pola strumming', 'Langsung praktek lagu'], icon: 'guitar', }, { id: 'piano', name: 'Piano', jp: 'ピアノ', blurb: 'Koordinasi dua tangan, pengenalan chord dan scale, belajar teori dasar. Pop dan lainnya.', skills: ['Left Hand', 'Right Hand', 'Coordination', 'Rhythm', 'Ear Training', 'Theory'], teachers: 1, starters: ['Latihan tangan independen', 'Baca not angka dan not balok', 'Mainin lagu sesuai karakter murid'], icon: 'piano', }, { id: 'drum', name: 'Drum', jp: 'ドラム', blurb: 'Koordinasi tangan dan kaki, belajar notasi balok. Rock dan Pop.', skills: ['Bass & Snare', 'Hi-Hat', 'Coordination', 'Tempo', 'Dynamics', 'Fill Pattern'], teachers: 1, starters: ['Posisi sticking', 'Groove basic 4/4', 'Drum fill pertama kamu'], icon: 'drum', }, { id: 'bass', name: 'Bass', jp: 'ベース', blurb: 'Feel, groove, fondasi dalam sebuah lagu. Pop dan Rock.', skills: ['Fingering', 'Rhythm', 'Groove', 'Technique', 'Ear Training', 'Theory'], teachers: 1, starters: ['Petik dua jari yang stabil', 'Lock sama drum', 'Bass pattern pada sebuah lagu'], icon: 'bass', }, { id: 'vocal', name: 'Vocal', jp: 'ボーカル', blurb: 'Cari suara asli kamu. Napas, pitch, tone — plus pede pakainya.', skills: ['Pitch', 'Breath Control', 'Tone', 'Rhythm', 'Expression', 'Ear Training'], teachers: 1, starters: ['Diaphragmatic breathing', 'Latihan matching pitch', 'Praktek lagu sederhana'], icon: 'vocal', }, ]; function InstrumentPicker() { const [active, setActive] = React.useState('guitar'); const inst = INSTRUMENTS.find(i => i.id === active); return ( Pilih instrumen kamu Lima instrumen. Enam skill dimension per instrumen. Tap salah satu buat liat detailnya {/* Instrument tabs */} {INSTRUMENTS.map(i => { const on = i.id === active; return ( setActive(i.id)} style={{ all: 'unset', cursor: 'pointer', padding: '22px 20px', background: on ? 'var(--accent-ims)' : 'var(--page-surface)', color: on ? '#fff' : 'var(--page-ink)', border: `1.5px solid ${on ? 'var(--page-ink)' : 'var(--page-border)'}`, borderRadius: 10, display: 'flex', alignItems: 'center', gap: 14, boxShadow: on ? '4px 4px 0 var(--page-ink)' : 'none', transform: on ? 'translate(-2px, -2px)' : 'translate(0, 0)', transition: 'all 180ms var(--ease-out)', }}> {i.name} {i.jp} ); })} {/* Active panel */} {/* Left: copy + starters */} {inst.name} · {inst.jp} Apa yang kamu lakuin di bulan pertama. {inst.blurb} {inst.starters.map((s, i) => ( W{i + 1} {s} ))} Diajar oleh Andre Putra Format Private · Group · In-Home Mulai dari {inst.name.toLowerCase()} → {/* Right: 6 skill dimensions */} Skill Radar · 6 dimensi Yang kita track {inst.skills.map((s, i) => ( 0{i + 1} {s} ))} Tiap session, gurumu update ke-enam axis ini. Kamu liat bentuknya tumbuh dari minggu ke minggu — mirror paling jujur dari progress kamu. ); } /* ─── Inline instrument glyphs (1.5px stroke, brand-aligned) ─── */ function InstrumentGlyph({ kind, color = 'currentColor' }) { const stroke = { stroke: color, strokeWidth: 1.6, strokeLinecap: 'round', strokeLinejoin: 'round', fill: 'none' }; if (kind === 'guitar') { return ( ); } if (kind === 'piano') { return ( ); } if (kind === 'drum') { return ( ); } if (kind === 'bass') { return ( ); } if (kind === 'vocal') { return ( ); } return null; } Object.assign(window, { InstrumentPicker, INSTRUMENTS, InstrumentGlyph });
{inst.blurb}
Tiap session, gurumu update ke-enam axis ini. Kamu liat bentuknya tumbuh dari minggu ke minggu — mirror paling jujur dari progress kamu.