Skip to main content

Setting Types Reference

This page provides detailed reference documentation for all setting-related types and interfaces in the AugmentOS SDK.

Enums​

AppSettingType​

Enumeration of all available setting types.

enum AppSettingType {
TOGGLE = 'toggle',
TEXT = 'text',
SELECT = 'select',
SLIDER = 'slider',
GROUP = 'group',
TEXT_NO_SAVE_BUTTON = 'text_no_save_button',
SELECT_WITH_SEARCH = 'select_with_search',
MULTISELECT = 'multiselect',
TITLE_VALUE = 'titleValue'
}

Interfaces​

BaseAppSetting​

Base interface for all app settings.

interface BaseAppSetting {
/** Unique identifier for the setting */
key: string;

/** Human-readable label displayed to users */
label: string;

/** Current value selected by the user */
value?: any;

/** Default value if user hasn't set a preference */
defaultValue?: any;
}

Setting Type Definitions​

ToggleSetting​

Boolean on/off switch setting.

interface ToggleSetting extends BaseAppSetting {
type: AppSettingType.TOGGLE;
defaultValue: boolean;
value?: boolean;
}

Example:

{
"type": "toggle",
"key": "enable_notifications",
"label": "Enable Notifications",
"defaultValue": true
}

TextSetting​

Single-line text input setting.

interface TextSetting extends BaseAppSetting {
type: AppSettingType.TEXT;
defaultValue?: string;
value?: string;
}

Example:

{
"type": "text",
"key": "user_name",
"label": "Your Name",
"defaultValue": "User"
}

TextNoSaveButtonSetting​

Multi-line text input without save button. Updates on blur.

interface TextNoSaveButtonSetting extends BaseAppSetting {
type: AppSettingType.TEXT_NO_SAVE_BUTTON;
defaultValue?: string;
value?: string;
/** Maximum number of visible lines */
maxLines?: number;
}

Example:

{
"type": "text_no_save_button",
"key": "notes",
"label": "Personal Notes",
"defaultValue": "",
"maxLines": 5
}

SelectSetting​

Dropdown selection from predefined options.

interface SelectSetting extends BaseAppSetting {
type: AppSettingType.SELECT;
options: Array<{
/** Display text for the option */
label: string;
/** Value stored when option is selected */
value: any;
}>;
defaultValue?: any;
value?: any;
}

Example:

{
"type": "select",
"key": "theme",
"label": "Color Theme",
"options": [
{ "label": "Light", "value": "light" },
{ "label": "Dark", "value": "dark" },
{ "label": "Auto", "value": "auto" }
],
"defaultValue": "auto"
}

SelectWithSearchSetting​

Dropdown with search functionality for long option lists.

interface SelectWithSearchSetting extends BaseAppSetting {
type: AppSettingType.SELECT_WITH_SEARCH;
options: Array<{
label: string;
value: any;
}>;
defaultValue?: any;
value?: any;
}

Example:

{
"type": "select_with_search",
"key": "country",
"label": "Country",
"options": [
{ "label": "United States", "value": "US" },
{ "label": "United Kingdom", "value": "UK" },
{ "label": "Canada", "value": "CA" }
// ... many more options
],
"defaultValue": "US"
}

MultiselectSetting​

Multiple selection from options with checkboxes.

interface MultiselectSetting extends BaseAppSetting {
type: AppSettingType.MULTISELECT;
options: Array<{
label: string;
value: any;
}>;
defaultValue?: any[];
value?: any[];
}

Example:

{
"type": "multiselect",
"key": "features",
"label": "Enabled Features",
"options": [
{ "label": "Auto-save", "value": "autosave" },
{ "label": "Spell Check", "value": "spellcheck" },
{ "label": "Dark Mode", "value": "darkmode" }
],
"defaultValue": ["autosave"]
}

SliderSetting​

Numeric value selection with slider control.

interface SliderSetting extends BaseAppSetting {
type: AppSettingType.SLIDER;
/** Minimum allowed value */
min: number;
/** Maximum allowed value */
max: number;
defaultValue: number;
value?: number;
}

Example:

{
"type": "slider",
"key": "volume",
"label": "Volume",
"min": 0,
"max": 100,
"defaultValue": 50
}

GroupSetting​

Visual grouping of related settings. Not a setting itself.

interface GroupSetting {
type: AppSettingType.GROUP;
/** Title displayed for the group */
title: string;
/** Groups don't have keys */
key?: never;
}

Example:

{
"type": "group",
"title": "Display Settings"
}

TitleValueSetting​

Read-only display of information.

interface TitleValueSetting {
type: AppSettingType.TITLE_VALUE;
/** Label shown to user */
label: string;
/** Value to display */
value: any;
/** Title/value settings don't need keys */
key?: never;
}

Example:

{
"type": "titleValue",
"label": "App Version",
"value": "2.1.0"
}

AppSetting​

Union type of all possible setting types.

type AppSetting =
| ToggleSetting
| TextSetting
| TextNoSaveButtonSetting
| SelectSetting
| SelectWithSearchSetting
| MultiselectSetting
| SliderSetting
| GroupSetting
| TitleValueSetting;

AppSettings​

Array of app settings.

type AppSettings = AppSetting[];

Setting Change Types​

SettingChange​

Information about a single setting change.

interface SettingChange {
/** Previous value before the change */
oldValue: any;
/** New value after the change */
newValue: any;
}

SettingsChangeMap​

Map of setting keys to their change information.

type SettingsChangeMap = Record<string, SettingChange>;

Callback Types​

SettingsChangeHandler​

Callback for when any setting changes.

type SettingsChangeHandler = (changes: SettingsChangeMap) => void;

SettingValueChangeHandler​

Callback for when a specific setting value changes.

type SettingValueChangeHandler<T = any> = (
newValue: T,
oldValue: T
) => void;