Pebble App Framework: Phone API
    Preparing search index...

    Interface ClayConfigItem

    One Clay config item (a section, heading, select, toggle, input, custom component, etc.). The fields both the config builder and the runtime touch are declared. Custom-component props ride along as optional. No index signature, so a face's own typed config array stays assignable to this.

    interface ClayConfigItem {
        attributes?: Record<string, unknown>;
        capabilities?: string[];
        defaultValue?: string | number | boolean;
        description?: string;
        group?: string;
        id?: string;
        items?: ClayConfigItem[];
        label?: string;
        messageKey?: string;
        moduleOptions?: unknown;
        moduleThumbnails?: unknown;
        options?: ClayOption[];
        previews?:
            | Record<string, ThemePreviewPictures>
            | Record<string, Record<string, ThemePreviewPictures>>;
        previewsByKey?: string;
        serializeValueAs?: "string" | "integer";
        step?: number;
        storeClass?: string;
        sunlight?: boolean;
        timeZone?: boolean;
        type: string;
        visibleWhen?: VisibilityCondition | VisibilityCondition[];
    }
    Index
    attributes?: Record<string, unknown>
    capabilities?: string[]

    Clay's own per-item filter, resolved against the watch the page was opened from. Names come from Clay's capability map (PLATFORM_GABBRO, BW, HEALTH and so on) and take a NOT_ prefix to invert, so ['NOT_PLATFORM_GABBRO'] drops the item on a round watch and keeps it everywhere else. An item with none declared is always shown.

    defaultValue?: string | number | boolean
    description?: string
    group?: string

    A name Clay's getItemsByGroup finds the item by, for a custom function that works on several items at once.

    id?: string

    Names the item for Clay's getItemById, for an item a custom function has to reach.

    items?: ClayConfigItem[]
    label?: string
    messageKey?: string
    moduleOptions?: unknown
    moduleThumbnails?: unknown
    options?: ClayOption[]
    previews?:
        | Record<string, ThemePreviewPictures>
        | Record<string, Record<string, ThemePreviewPictures>>

    themePreview only: the pictures for each option, keyed by the option's value as a string, from the face's theme-previews.g.js. A value is a list of data URLs, drawn side by side, so a theme can carry one picture or a few (such as a day and a night shot). A value can instead be a map keyed by platform, so a round and a rectangular watch each show their own shots. With previewsByKey set, it nests one level deeper, keyed first by the sibling control's value.

    previewsByKey?: string

    themePreview only: the messageKey of another control on the page whose value picks which set of previews to draw. The previews map then nests, keyed first by that control's value and then by the option's value, so the shots under the picker follow a second choice such as the scene. The named control is read once the page is built, and the preview redraws whenever it changes.

    serializeValueAs?: "string" | "integer"

    input, select, and radiogroup only: how Clay sends the value to the watch. 'string', the default, sends it as it is. 'integer' sends a whole number, and Clay turns any value that is not one into 0, so it only suits a select whose option values are all numbers and that fills a choice setting. A text setting on the watch drops an integer, and a word would land as the first choice.

    step?: number

    slider only: the gap between values. Its decimal places are how far Clay scales the value up for the watch.

    storeClass?: string

    hiddenStore only: the extra class that tells one store on a page from another.

    sunlight?: boolean

    color only: false shows the true colours instead of their washed-out sunlight pair.

    timeZone?: boolean

    Marks a locationsearch item as a time zone picker. It offers zones and plain offsets beside the places, and the phone sends it to the watch as "offset,label" with the offset read off the zone.

    type: string

    Shows this item only while another control holds one of the given values, so a row that does nothing under the current choice is hidden rather than left on the page. One condition, or a list of them that all have to hold. key is a control's messageKey and in the values that reveal this item (a toggle's are true/false). The framework wires the showing and hiding when a page has any, as long as the face passes no customClay of its own.