Slint Kit Documentation

Choices and values

Chip for Slint

KitChip · Slint Kit 0.3.0

Compact label that requests removal of an identified item.

Compact label that requests removal of an identified item.
Native app built from the example below.

Try the component

Download the complete project, extract it and run cargo run --locked in its folder. Rust 1.92+; Slint Kit 0.3.0 from crates.io. You can also copy the four files below.

Remove the Design chip, then restore it with Restore tag.

ui/app.slint

export { KitFormValidation, HtmlInputKind, NumberInputFormat, KitInputConstraints, KitValidationResult, KitValidityState } from "@kit/kit.slint";
// SPDX-License-Identifier: GPL-3.0-or-later
import { KitChip, KitButton, KitTheme, KitThemes } from "@kit/kit.slint";
export component App inherits Window {
    title: "KitChip example";
    preferred-width: 520px;
    preferred-height: 280px;
    max-width: 100000px;
    max-height: 100000px;
    background: root.theme.canvas;
    in-out property <KitTheme> theme: KitThemes.light;
    in property <bool> showing: true;
    callback remove(int);
    callback reset();
    VerticalLayout {
        padding: 24px;
        spacing: 16px;
        alignment: start;
        if root.showing: control := KitChip { theme: root.theme; chip: { token: 11, label: "Design", removable: true }; remove-requested(token) => { root.remove(token); } }
        KitButton { theme: root.theme; text: "Restore tag"; activated => { root.reset(); } }
        result := Text { text: root.showing ? "Design selected" : "No tags selected"; color: root.theme.text-primary; }
    }

}

src/main.rs

// SPDX-License-Identifier: GPL-3.0-or-later
use slint::ComponentHandle;

mod ui { slint::include_modules!(); }
fn main() -> Result<(), slint::PlatformError> {
    let app = ui::App::new()?;
    slint_kit::init_form_validation!(ui, app);
    let weak = app.as_weak();
    app.on_remove(move |token| { if token == 11 { if let Some(app) = weak.upgrade() { app.set_showing(false); } } });
    let weak = app.as_weak();
    app.on_reset(move || { if let Some(app) = weak.upgrade() { app.set_showing(true); } });
    app.run()
}

Cargo.toml and build.rs

Cargo.toml

[package]
name = "slint-kit-chip-example"
version = "0.1.0"
edition = "2024"
rust-version = "1.92"
license = "GPL-3.0-or-later"
publish = false

[dependencies]
slint-kit = "=0.3.0"
slint = { version = "=1.18.1", default-features = false, features = ["std", "compat-1-18", "backend-winit", "renderer-skia", "accessibility"] }

[build-dependencies]
slint-kit-build = "=0.3.0"

[workspace]

build.rs

fn main() { slint_kit_build::compile("ui/app.slint").expect("compile component example"); }

Files: Cargo.toml · build.rs · ui/app.slint · src/main.rs

Supply chip: ChipRow and handle remove-requested(token) in the owning model. Set chip.removable to match removal permissions.

The token is captured when pressing begins, and changing the chip cancels that press. A non-removable chip disables the action.

Visual composition

The file below produces the screenshot. For controller-driven components, it shows the displayed state without supplying the Rust wiring. Create a project.

Show the screenshot source
Compact label that requests removal of an identified item.
Native screenshot of the same example, rendered with Skia.
// SPDX-License-Identifier: GPL-3.0-or-later
import { KitChip, KitTheme, KitThemes } from "@kit/kit.slint";

export component Example inherits Window {
    title: "KitChip example";
    preferred-width: 420px;
    preferred-height: 180px;
    max-width: 100000px;
    max-height: 100000px;
    background: root.theme.canvas;
    in-out property <KitTheme> theme: KitThemes.light;
    in-out property <string> status;
    VerticalLayout {
        padding: 24px; spacing: 16px; alignment: start;
        Text { text: "Chip"; color: root.theme.text-primary; font-size: 20px * root.theme.text-scale; font-weight: 600; }
        KitChip { theme: root.theme; chip: { token: 11, label: "Design", removable: true }; remove-requested(token) => { root.status = "Remove token " + token; } }
        if root.status != "": Text { text: root.status; color: root.theme.text-secondary; font-size: 12px * root.theme.text-scale; wrap: word-wrap; }
    }
}

Download this example

Public API

Inherits KitButton.

Properties

Name Type Direction
chip ChipRow in
Available inherited properties
Name Type Defined on
theme KitTheme KitPressable
intent ButtonIntent KitPressable
control-size ControlSize KitPressable
control-width ControlWidth KitPressable
recipe ButtonRecipe KitPressable
accessible-name string KitPressable
disabled bool KitPressable
busy bool KitPressable
tab-stop bool KitPressable
hovered bool KitPressable
pressed bool KitPressable
has-focus bool KitPressable
focus-visible bool KitPressable
text string KitButton

Types and variants

Type Declaration
struct ChipRow token: int, label: string, removable: bool

Callbacks

See also