import QtQuick
import QtQuick.Layouts
import Quickshell.Io

// Mirrors eww settings-menu (revealer + toggle button)
Item {
    id: root
    property string volumeInfo:  ""
    property string networkInfo: ""
    property string themeInfo:   ""

    // exposed so LogoutMenu can close us
    property bool open: false

    implicitHeight: 26
    implicitWidth:  row.implicitWidth

    Row {
        id: row
        spacing: 4
        layoutDirection: Qt.RightToLeft   // toggle btn on the right, menu slides left

        // Toggle button  (eww center-btn)
        Rectangle {
            width: 26; height: 26; radius: 13
            color: root.open ? "#89b4fa" : "#313244"

            Text {
                anchors.centerIn: parent
                text: root.open ? "󰅖" : "󰒓"
                color: root.open ? "#1e1e2e" : "#cdd6f4"
                font.pixelSize: 14
            }

            MouseArea {
                anchors.fill: parent
                onClicked: root.open = !root.open
                cursorShape: Qt.PointingHandCursor
            }
        }

        // Revealed menu (slides in from right)
        Item {
            width:  menuRow.implicitWidth + 8
            height: 26
            clip:   true

            // animate width for slide effect (like :transition slideright)
            Behavior on width { NumberAnimation { duration: 200; easing.type: Easing.InOutQuad } }
            // Collapsed when closed
            states: State {
                name: "hidden"
                when: !root.open
                PropertyChanges { target: menuReveal; width: 0 }
            }

            Item {
                id: menuReveal
                width:  root.open ? menuRow.implicitWidth + 8 : 0
                height: 26
                clip:   true

                Behavior on width { NumberAnimation { duration: 200; easing.type: Easing.InOutQuad } }

                Row {
                    id: menuRow
                    anchors.verticalCenter: parent.verticalCenter
                    spacing: 4
                    x: 4

                    ThemeWidget   { themeInfo:   root.themeInfo }
                    VolumeWidget  { volumeInfo:  root.volumeInfo }
                    NetworkWidget { networkInfo: root.networkInfo }

                    // wdisplays button
                    Rectangle {
                        width: 30; height: 22; radius: 11
                        color: "#313244"
                        Text {
                            anchors.centerIn: parent
                            text: "󰍹"
                            color: "#cdd6f4"
                            font.pixelSize: 13
                        }
                        MouseArea {
                            anchors.fill: parent
                            onClicked: {
                                root.open = false
                                Qt.createQmlObject(
                                    'import Quickshell.Io; Process { command: ["wdisplays"]; running: true }',
                                    root)
                            }
                            cursorShape: Qt.PointingHandCursor
                        }
                    }
                }
            }
        }
    }
}
