Skip to content

Interface: ThemeService

Defined in: packages/sdk/src/theme-service.ts:82

Consumer API for the theme domain, exposed as ExtensionContext.theme. Read via getState / subscribe (e.g. with useSyncExternalStore); drive via setActive and the custom-theme methods. Contribute a new preset via ThemeService.registerPreset.

Methods

getState()

ts
getState(): ThemeState;

Defined in: packages/sdk/src/theme-service.ts:84

Current frozen view of theme state.

Returns

ThemeState


subscribe()

ts
subscribe(listener): Disposable;

Defined in: packages/sdk/src/theme-service.ts:86

Subscribe to theme-state changes (active theme, custom themes, or presets).

Parameters

listener

(s) => void

Returns

Disposable


setActive()

ts
setActive(id): void;

Defined in: packages/sdk/src/theme-service.ts:88

Set the active theme by id (a built-in preset, registered preset, or custom).

Parameters

id

string

Returns

void


resolve()

ts
resolve(id): ResolvedTheme;

Defined in: packages/sdk/src/theme-service.ts:90

Resolve a theme id to its base + effective vars (for previews/swatches).

Parameters

id

string

Returns

ResolvedTheme


saveCustom()

ts
saveCustom(theme): Promise<void>;

Defined in: packages/sdk/src/theme-service.ts:92

Persist a custom theme to disk and refresh the in-memory list.

Parameters

theme

CustomTheme

Returns

Promise<void>


deleteCustom()

ts
deleteCustom(id): Promise<void>;

Defined in: packages/sdk/src/theme-service.ts:94

Delete a custom theme from disk and refresh the in-memory list.

Parameters

id

string

Returns

Promise<void>


reloadCustom()

ts
reloadCustom(): Promise<void>;

Defined in: packages/sdk/src/theme-service.ts:96

Reload custom themes from disk into the store.

Returns

Promise<void>


exportTheme()

ts
exportTheme(theme): ThemeExport;

Defined in: packages/sdk/src/theme-service.ts:98

Strip the id from a custom theme for sharing/serialization.

Parameters

theme

CustomTheme

Returns

ThemeExport


importTheme()

ts
importTheme(data): CustomTheme;

Defined in: packages/sdk/src/theme-service.ts:100

Validate/parse imported JSON into a custom theme (assigns a fresh id).

Parameters

data

unknown

Returns

CustomTheme


registerPreset()

ts
registerPreset(preset): Disposable;

Defined in: packages/sdk/src/theme-service.ts:117

Register a ThemePreset (a selectable theme in the picker). The preset appears immediately and is removed when the returned Disposable is disposed (typically when the extension deactivates).

Parameters

preset

ThemePreset

Returns

Disposable

Example

ts
ctx.theme.registerPreset({
  id: "my-theme",
  name: "My Theme",
  base: "dark",
  colorScheme: "dark",
  vars: { "--silo-color-bg": "#1a1a2e" },
});