29 lines
1.1 KiB
Plaintext
29 lines
1.1 KiB
Plaintext
---
|
|
title: Overview
|
|
description: Understand the role and boundaries of the Preferences package.
|
|
order: 1
|
|
toc:
|
|
- id: package-role
|
|
title: Package role
|
|
- id: capabilities
|
|
title: Capabilities
|
|
- id: design-boundary
|
|
title: Design boundary
|
|
---
|
|
|
|
## Package role {#package-role}
|
|
|
|
`@workspace/preferences` is a small React store for application preferences such as theme mode, navigation density, and compact layouts. It keeps the preference vocabulary owned by the consuming application.
|
|
|
|
## Capabilities {#capabilities}
|
|
|
|
- Extend the preference shape through TypeScript module augmentation.
|
|
- Hydrate a deterministic server snapshot with `useSyncExternalStore`.
|
|
- Persist typed `{ key, value }` updates through an application callback.
|
|
- Synchronize preferences with browser APIs through composable effects.
|
|
- Validate external updates from cookies, requests, forms, or message channels.
|
|
|
|
## Design boundary {#design-boundary}
|
|
|
|
The package does not define product-specific keys and does not select a persistence service. The application supplies its complete initial snapshot and decides how accepted changes are stored.
|