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()
getState(): ThemeState;Defined in: packages/sdk/src/theme-service.ts:84
Current frozen view of theme state.
Returns
subscribe()
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
setActive()
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()
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
saveCustom()
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
Returns
Promise<void>
deleteCustom()
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()
reloadCustom(): Promise<void>;Defined in: packages/sdk/src/theme-service.ts:96
Reload custom themes from disk into the store.
Returns
Promise<void>
exportTheme()
exportTheme(theme): ThemeExport;Defined in: packages/sdk/src/theme-service.ts:98
Strip the id from a custom theme for sharing/serialization.
Parameters
theme
Returns
importTheme()
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
registerPreset()
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
Returns
Example
ctx.theme.registerPreset({
id: "my-theme",
name: "My Theme",
base: "dark",
colorScheme: "dark",
vars: { "--silo-color-bg": "#1a1a2e" },
});