import QtQuick
import QtQuick.Layouts
import QtQuick.Controls

Rectangle {
    id: root
    Layout.fillWidth: true
    Layout.preferredHeight: SettingsStyle.itemHeight
    Layout.minimumHeight: SettingsStyle.itemHeight
    Layout.maximumHeight: SettingsStyle.itemHeight
    implicitHeight: SettingsStyle.itemHeight
    
    color: hHandler.hovered ? SettingsStyle.surfaceHover : "transparent"
    radius: 0 // Continuous list style (clipped by container container) 
    
    // Properties
    property string label: "Setting Name"
    property string description: ""
    property alias control: controlContainer.data
    property bool showSeparator: true
    Accessible.name: root.label
    Accessible.role: Accessible.Row

    Behavior on color { ColorAnimation { duration: 150 } }

    HoverHandler {
        id: hHandler
    }

    // Label & Description
    Column {
        id: labelCol
        anchors.left: parent.left
        anchors.leftMargin: 16
        anchors.right: controlContainer.left
        anchors.rightMargin: 16
        anchors.verticalCenter: parent.verticalCenter
        spacing: 2
        
        Text {
            id: labelText
            text: root.label
            color: SettingsStyle.textPrimary
            font.family: "JetBrains Mono"
            font.pixelSize: 13
            font.weight: Font.Medium
            width: parent.width
            elide: Text.ElideRight
            
            // Text Layout Normalization
            verticalAlignment: Text.AlignVCenter
            topPadding: 0
            bottomPadding: 0
        }
        
        Text {
            id: descText
            text: root.description
            color: SettingsStyle.textSecondary
            font.family: "JetBrains Mono"
            font.pixelSize: 11
            width: parent.width
            visible: text !== ""
            wrapMode: Text.WordWrap
            
            // Text Layout Normalization
            verticalAlignment: Text.AlignVCenter
            topPadding: 0
            bottomPadding: 0
        }
    }

    // Control Container
    Item {
        id: controlContainer
        anchors.right: parent.right
        anchors.rightMargin: 16
        anchors.verticalCenter: parent.verticalCenter
        implicitWidth: childrenRect.width
        implicitHeight: childrenRect.height
    }

    // Bottom Separator
    Rectangle {
        anchors.bottom: parent.bottom
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.leftMargin: 16
        anchors.rightMargin: 16
        height: 1
        color: SettingsStyle.borderSubtle
        visible: root.showSeparator
    }
}
