// CompactNavItem — one item in the CompactNav bar.
// Touch-target sized, icon + label, active highlight.
import { SteamColors, SteamSpacing, SteamType, SteamRadius } from "../../tokens/steam/mod.slint";
import { Sizes } from "../../tokens/sizes.slint";
import { NavItem } from "../types.slint";
/// One item inside the compact nav bar — icon + label, touch-target sized.
export component CompactNavItem inherits Rectangle {
/// The nav item data.
in property <NavItem> item;
/// Whether this item is currently active.
in property <bool> active: false;
/// Fired when this item is tapped.
callback navigate(string);
min-width: SteamSpacing.control-lg;
min-height: SteamSpacing.control-lg;
border-radius: SteamRadius.md;
background: root.active ? SteamColors.accent.with-alpha(Sizes.alpha-15) : transparent;
item-ta := TouchArea {
clicked => { root.navigate(root.item.id); }
}
VerticalLayout {
alignment: center;
spacing: SteamSpacing.xs;
padding: SteamSpacing.xs;
Text {
text: root.item.icon;
font-size: Sizes.icon-md;
color: root.active ? SteamColors.accent : SteamColors.text-secondary;
horizontal-alignment: center;
}
Text {
text: root.item.label;
font-size: SteamType.caption;
color: root.active ? SteamColors.text-primary : SteamColors.text-secondary;
horizontal-alignment: center;
}
}
}