import { execAsync } from 'astal';
import { Astal } from 'astal/gtk3';

import { hyprMessage } from '../../lib';

import PopupWindow from '../misc/popup-window';


const PowermenuWidget = () => (
    <centerbox className="powermenu widget">
        <button
            className="shutdown button"
            cursor="pointer"
            onButtonReleaseEvent={() => execAsync(['systemctl', 'poweroff']).catch(print)}
        >
            <icon icon="system-shutdown-symbolic" />
        </button>

        <button
            className="reboot button"
            cursor="pointer"
            onButtonReleaseEvent={() => execAsync(['systemctl', 'reboot']).catch(print)}
        >
            <icon icon="system-restart-symbolic" />
        </button>

        <button
            className="logout button"
            cursor="pointer"
            onButtonReleaseEvent={() => hyprMessage('dispatch exit').catch(print)}
        >
            <icon icon="system-log-out-symbolic" />
        </button>
    </centerbox>
);

export default () => (
    <PopupWindow
        name="powermenu"
        transition="slide bottom"
        // To put it at the center of the screen
        exclusivity={Astal.Exclusivity.IGNORE}
    >
        <PowermenuWidget />
    </PopupWindow>
);