Preferences
The preferences module provides utilities for storing and managing user preferences.
Overview
Section titled “Overview”DS One stores user preferences in localStorage to persist settings across sessions.
Basic Usage
Section titled “Basic Usage”import { savePreferences } from 'ds-one';
// Save user preferencessavePreferences({ language: 'ja', theme: 'dark'});Preference Types
Section titled “Preference Types”Language
Section titled “Language”import { savePreferences } from 'ds-one';
savePreferences({ language: 'en-US' // or 'ja', 'zh-Hant', etc.});savePreferences({ theme: 'dark' // or 'light'});Custom Preferences
Section titled “Custom Preferences”savePreferences({ customSetting: 'value', anotherSetting: 123});Storage
Section titled “Storage”Preferences are stored in localStorage under the key ds-one:preferences:
// Storage structure{ "language": "en-US", "theme": "light", "customSetting": "value"}Type Definition
Section titled “Type Definition”type Preferences = { language?: LanguageCode; theme?: ThemeType; [key: string]: unknown;};Error Handling
Section titled “Error Handling”The module handles storage errors gracefully:
import { savePreferences } from 'ds-one';
// Won't throw if localStorage is unavailablesavePreferences({ theme: 'dark' });// Logs warning if storage failsIntegration
Section titled “Integration”Preferences integrate with other DS One modules:
With Theme
Section titled “With Theme”import { setTheme, savePreferences } from 'ds-one';
function updateTheme(theme) { setTheme(theme); savePreferences({ theme });}With i18n
Section titled “With i18n”import { setLanguage, savePreferences } from 'ds-one';
function updateLanguage(lang) { setLanguage(lang); savePreferences({ language: lang });}Best Practices
Section titled “Best Practices”- Merge preferences - Use spread operator to preserve existing settings
- Handle errors - Storage might be unavailable in private browsing
- Validate values - Ensure preference values are valid before saving