@alfiexco/settings
v0.1.0
Published
A typed React settings provider factory with optional localStorage persistence.
Readme
@alfiexco/settings
Typed React settings runtime migrated from Inksight's standalone settings
package. It creates a provider/hook pair for a settings schema and can persist
to localStorage.
import { createSettings } from "@alfiexco/settings";
type AppSettings = {
theme: "light" | "dark";
rain: { intensity: number };
};
const appSettings = createSettings<AppSettings>({
defaultSettings: {
theme: "dark",
rain: { intensity: 0.65 },
},
storageKey: "app-settings",
getStyle: (settings) => ({
"--rain-intensity": String(settings.rain.intensity),
}),
});
export const SettingsProvider = appSettings.SettingsProvider;
export const useSettings = appSettings.useSettings;Use normalize when stored settings need validation, clamping, migration, or
deep merging with nested defaults.
API
createSettings({ defaultSettings })returnsSettingsProvideranduseSettings.storageKeyenables browserlocalStoragepersistence.getStylemaps settings into inherited CSS variables or inline styles.normalizeconverts partially trusted stored data into a full settings object.- The hook exposes
settings,setSettings,update,patch, andreset.
