Preferences

The preferences module provides utilities for storing and managing user preferences.

DS One stores user preferences in localStorage to persist settings across sessions.

import { savePreferences } from 'ds-one';
// Save user preferences
savePreferences({
language: 'ja',
theme: 'dark'
});
import { savePreferences } from 'ds-one';
savePreferences({
language: 'en-US' // or 'ja', 'zh-Hant', etc.
});
savePreferences({
theme: 'dark' // or 'light'
});
savePreferences({
customSetting: 'value',
anotherSetting: 123
});

Preferences are stored in localStorage under the key ds-one:preferences:

// Storage structure
{
"language": "en-US",
"theme": "light",
"customSetting": "value"
}
type Preferences = {
language?: LanguageCode;
theme?: ThemeType;
[key: string]: unknown;
};

The module handles storage errors gracefully:

import { savePreferences } from 'ds-one';
// Won't throw if localStorage is unavailable
savePreferences({ theme: 'dark' });
// Logs warning if storage fails

Preferences integrate with other DS One modules:

import { setTheme, savePreferences } from 'ds-one';
function updateTheme(theme) {
setTheme(theme);
savePreferences({ theme });
}
import { setLanguage, savePreferences } from 'ds-one';
function updateLanguage(lang) {
setLanguage(lang);
savePreferences({ language: lang });
}
  1. Merge preferences - Use spread operator to preserve existing settings
  2. Handle errors - Storage might be unavailable in private browsing
  3. Validate values - Ensure preference values are valid before saving