#pragma once
#include "ui/ui_core.h"
#include "midi/midi.h"

#define PIANO_FIRST_NOTE  21    // A0
#define PIANO_LAST_NOTE   108   // C8

typedef struct UI_PianoState {
    S32 mouse_note;  // MIDI note held by mouse click (-1 = none)
} UI_PianoState;

B32        piano_is_black_key(S32 note);
Clay_Color piano_velocity_color(S32 velocity);

// Render the 88-key piano widget.
// avail_w: total width for key layout, avail_h: total height for keys
void ui_piano(UI_PianoState *state, MidiEngine *midi, F32 avail_w, F32 avail_h);

// Update piano mouse input (call after Clay layout is computed)
void ui_piano_update_input(UI_PianoState *state);
