Preferences
The preferences module provides utilities for storing and managing user preferences.
Overview
Section titled “Overview”Design system 1 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 Design system 1 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