// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0 import { EditorSizeSettings } from "./styling.slint"; import { StateLayer } from "./state-layer.slint"; import { Palette } from "std-widgets.slint"; export component IconButton { in property icon <=> icon-image.source; callback clicked <=> touch-area.clicked; min-width: content-layer.min-width; min-height: content-layer.min-height; accessible-role: button; accessible-action-default => { touch-area.clicked(); } touch-area := TouchArea {} state-layer := StateLayer { width: 100%; height: 100%; border-radius: max(self.width, self.height) / 2; pressed: touch-area.pressed; has-hover: touch-area.has-hover; } content-layer := HorizontalLayout { icon-image := Image { width: EditorSizeSettings.default-icon-width; colorize: Palette.alternate-foreground; } } }