import { Palette } from "Palette.slint"; import { VText } from "Text.slint"; export component VActionButton inherits Rectangle { in property icon-source; in property icon-colorize: Palette.foreground; in property icon-size: 1rem; in property icon-svg; in property icon-svg-stroke-width: 2px; in property enabled <=> ta.enabled; callback clicked; private property active: false; background: enabled ? Palette.control-background : Palette.control-background.darker(0.2); border-radius: 4px; ta := TouchArea { mouse-cursor: pointer; clicked => { active = !active; root.clicked(); } } HorizontalLayout { alignment: center; spacing: 8px; padding: 8px; if root.icon-svg != "" : VerticalLayout { alignment: center; Path { padding: 8px; commands: root.icon-svg; stroke: icon-colorize; stroke-width: icon-svg-stroke-width; width: icon-size; height: icon-size; fill: icon-colorize; } } if root.icon-source.width != 0 : Image { padding: 8px; source: icon-source; colorize: icon-colorize; width: icon-size; } } }