import QtQuick

Rectangle {
    id: root

    property color idleColor:   "transparent"
    property color hoverColor:  "transparent"
    property color pressColor:  "transparent"
    property color borderIdleColor:  "transparent"
    property color borderHoverColor: "transparent"
    property real  pressScale:     0.97
    property int   animDuration:    150
    property int   btnRadius:       8
    property int   btnBorderWidth:  1

    readonly property bool hovered: _hover.hovered
    readonly property bool pressed: _tap.pressed

    signal clicked()

    radius:       root.btnRadius
    color:        pressed ? pressColor : (hovered ? hoverColor : idleColor)
    border.color: hovered ? borderHoverColor : borderIdleColor
    border.width: root.btnBorderWidth

    scale: pressed ? pressScale : 1.0

    Behavior on color        { ColorAnimation  { duration: root.animDuration } }
    Behavior on border.color { ColorAnimation  { duration: root.animDuration } }
    Behavior on scale        { NumberAnimation { duration: 100; easing.type: Easing.OutQuad } }

    HoverHandler { id: _hover }
    TapHandler {
        id: _tap
        cursorShape: Qt.PointingHandCursor
        onTapped: root.clicked()
    }
}
