ActionHint is a short, non-interactive label that explains what an otherwise hard-to-discover action will do — “Preview item”, “Press to open”. It sits alongside the surface that owns the action; it never receives focus and never handles activation itself.ActionHint is built on StaticContainer, so it has no interaction states at all.import { ActionHint, Card, TextView } from '@wearables-ui-toolkit/mrbd';
import type { IconSource } from '@wearables-ui-toolkit/mrbd';
type PreviewCardProps = {
caption: string;
previewIcon: IconSource;
};
export function PreviewCard({ caption, previewIcon }: PreviewCardProps) {
return (
<Card>
<TextView>{caption}</TextView>
<div className="preview-card-footer">
<ActionHint text="Preview item" icon={previewIcon} />
</div>
</Card>
);
}
.preview-card-footer {
display: flex;
justify-content: flex-start;
padding: var(--uit-spacing-medium);
}
IconUriSource with tinting turned off:import { ActionHint } from '@wearables-ui-toolkit/mrbd';
<ActionHint text="Open details" icon={{ uri: '/icons/details.png', tinted: false }} />;
ActionHintProps. It extends StaticContainerProps minus children and material — the hint owns its material and takes its content through text and icon.| Prop | Type | Default | Description |
|---|---|---|---|
text | string | '' | The hint copy. |
icon | IconSource | — | Optional leading icon. |
| Prop | Type | Default | Description |
|---|---|---|---|
shapeProvider | ShapeProvider | rounded rectangle at the xsmall corner radius | Geometry used for clipping and every material path. |
width | number \| string | 'auto' | Explicit width. Leave it unset so the hint sizes to its content. |
height | number \| string | 'auto' | Explicit height. Leave it unset. |
backgroundStyle | BackgroundStyle | BackgroundStyle.PRIMARY | Leave it at PRIMARY to keep the hint’s own material. NONE hides the material and leaves bare text; SECONDARY replaces the hint’s material with the secondary static material. |
visualState | VisualState | VisualState.DEFAULT | Which material treatment the pill renders. Nothing changes it at runtime, because the hint has no interaction states. backgroundStyle={BackgroundStyle.NONE} forces VisualState.NONE regardless of this prop. |
useSmoothCorners | boolean | true | Render smooth corners once the hint has been measured. |
clipContent | boolean | true | Clip the content to the pill shape. |
className | string | '' | Extra class on the root element. |
contentClassName | string | '' | Extra class on the wrapper around the icon and text, between the material layers. |
style | CSSProperties | {} | Extra inline styles. They merge over the hint’s own inline display and padding, so use them for placement, not for restyling. |
div attributes, including data-* and aria-* attributes, are forwarded to the root element, and a ref resolves to that element.TextAppearance.META3 appearance in the primary text role, with additive blending so it lifts against whatever it sits over on the additive light display. The text does not wrap.icon removes the slot entirely rather than leaving a gap; omitting text renders an empty label.ActionHint is a label.aria-hidden so it is not read twice.ActionHint remains a non-interactive label.ActionHint does not wrap long text.