import QtQuick
import ZShell.Config
import qs.Services

ButtonBase {
	id: root

	readonly property alias label: label
	property alias text: label.text

	activeColor: type === TextButton.Filled ? Colors.palette.m3primary : Colors.palette.m3secondary
	activeOnColor: {
		if (type === TextButton.Text)
			return Colors.palette.m3primary;
		return type === TextButton.Filled ? Colors.palette.m3onPrimary : Colors.palette.m3onSecondary;
	}
	horizontalPadding: Tokens.padding.small
	implicitHeight: label.implicitHeight + verticalPadding * 2
	implicitWidth: label.implicitWidth + horizontalPadding * 2
	inactiveColor: {
		if (!isToggle && type === TextButton.Filled)
			return Colors.palette.m3primary;
		return type === TextButton.Filled ? Colors.tPalette.m3surfaceContainer : Colors.palette.m3secondaryContainer;
	}
	inactiveOnColor: {
		if (!isToggle && type === TextButton.Filled)
			return Colors.palette.m3onPrimary;
		if (type === TextButton.Text)
			return Colors.palette.m3primary;
		return type === TextButton.Filled ? Colors.palette.m3onSurface : Colors.palette.m3onSecondaryContainer;
	}
	verticalPadding: Tokens.padding.extraSmall

	CustomText {
		id: label

		anchors.centerIn: parent
		color: root.onColor
		font: root.font
	}
}
