import { Theme } from "./theme.slint"; export component BrowserItem inherits Rectangle { in property browser-icon; in property browser-name; in property is-default; in property selected; callback clicked; height: 84px; background: transparent; panel := Rectangle { y: 4px; height: 76px; border-radius: 12px; background: touch.has-hover ? Theme.surface-hover : root.selected ? Theme.surface-elevated : Theme.surface-item; border-width: root.selected ? 2px : 1px; border-color: root.selected ? #3b82f680 : transparent; touch := TouchArea { mouse-cursor: pointer; clicked => { root.clicked(); } } HorizontalLayout { padding: 14px; spacing: 16px; Rectangle { width: 48px; vertical-stretch: 0; border-radius: 12px; background: Theme.surface-elevated; Image { x: (parent.width - self.width) / 2; y: (parent.height - self.height) / 2; width: 30px; height: 30px; source: root.browser-icon; } } VerticalLayout { alignment: center; HorizontalLayout { spacing: 8px; alignment: start; Text { text: root.browser-name; color: Theme.text-main; font-size: 16px; font-weight: 500; vertical-alignment: center; } if root.is-default: Rectangle { height: 22px; border-radius: 11px; background: #3b82f620; HorizontalLayout { padding-left: 10px; padding-right: 10px; Text { text: "По умолчанию"; color: #60a5fa; font-size: 12px; vertical-alignment: center; } } } } } Rectangle { width: 24px; border-radius: 12px; background: root.selected ? #3b82f6 : Theme.surface-elevated; Image { x: (parent.width - self.width) / 2; y: (parent.height - self.height) / 2; width: 12px; height: 12px; source: @image-url("../icons/check.svg"); colorize: #ffffff; visible: root.selected; } Text { width: 100%; height: 100%; horizontal-alignment: center; vertical-alignment: center; text: "›"; color: Theme.text-muted; font-size: 14px; visible: !root.selected; } } } } }