@molecule/app-theme-css-variables 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,212 @@
1
+ <!--
2
+ AUTO-GENERATED — DO NOT EDIT THIS FILE.
3
+ Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
4
+ Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
5
+ To change this document, edit the module-level JSDoc in src/index.ts.
6
+ Generated: 2026-09-13T23:39:58.618Z
7
+ -->
8
+
9
+ # @molecule/app-theme-css-variables
10
+
11
+ > **Auto-generated, AI-first package reference** for the [molecule.dev](https://molecule.dev) ecosystem.
12
+ > It is written to be read by coding agents as much as by people, and is generated from this
13
+ > package's source — edit `src/index.ts` JSDoc, not this file.
14
+
15
+ CSS custom properties theme provider for molecule.dev.
16
+
17
+ Provides a framework-agnostic ThemeProvider implementation that applies
18
+ theme tokens as CSS custom properties (variables) to the document root.
19
+ Works with any framework -- React, Vue, Svelte, Angular, Solid, or vanilla JS.
20
+
21
+ ## Quick Start
22
+
23
+ ```typescript
24
+ import {
25
+ createCSSVariablesThemeProvider,
26
+ lightTheme,
27
+ darkTheme,
28
+ } from '@molecule/app-theme-css-variables'
29
+ import { setProvider } from '@molecule/app-theme'
30
+
31
+ const provider = createCSSVariablesThemeProvider({
32
+ themes: [lightTheme, darkTheme],
33
+ defaultTheme: 'light',
34
+ persistKey: 'molecule-theme',
35
+ })
36
+
37
+ setProvider(provider)
38
+ ```
39
+
40
+ Then use CSS variables in your stylesheets:
41
+
42
+ ```css
43
+ .button {
44
+ background-color: var(--mol-color-primary);
45
+ color: var(--mol-color-text-inverse);
46
+ padding: var(--mol-spacing-sm) var(--mol-spacing-md);
47
+ border-radius: var(--mol-radius-md);
48
+ transition: background-color var(--mol-transition-fast);
49
+ }
50
+ ```
51
+
52
+ ## Type
53
+
54
+ `provider`
55
+
56
+ ## Installation
57
+
58
+ ```bash
59
+ npm install @molecule/app-theme-css-variables @molecule/app-theme
60
+ ```
61
+
62
+ ## API
63
+
64
+ ### Interfaces
65
+
66
+ #### `CSSVariablesThemeConfig`
67
+
68
+ Configuration for css variables theme.
69
+
70
+ ```typescript
71
+ interface CSSVariablesThemeConfig {
72
+ /** Available themes. */
73
+ themes: Theme[]
74
+ /** Name of the default theme to use. */
75
+ defaultTheme?: string
76
+ /** CSS variable prefix (default: 'mol'). */
77
+ prefix?: string
78
+ /** Whether to auto-apply CSS variables to :root (default: true). */
79
+ applyToDocument?: boolean
80
+ /**
81
+ * Key for persisting the selected theme name across reloads. When `storage`
82
+ * is omitted, persistence falls back to `window.localStorage` in browser
83
+ * environments; in SSR / non-browser environments persistence is skipped.
84
+ */
85
+ persistKey?: string
86
+ /**
87
+ * Storage adapter for persisting theme preference. Optional — when omitted
88
+ * and `persistKey` is set, `window.localStorage` is used when available.
89
+ * Provide an adapter for React Native (AsyncStorage wrapper) or custom stores.
90
+ */
91
+ storage?: ThemeStorageAdapter
92
+ /**
93
+ * With no persisted choice, start on the theme whose `mode` matches the
94
+ * OS preference (`prefers-color-scheme`) instead of `defaultTheme`.
95
+ * Browser-only: a render without a window — a server, a build-time
96
+ * prerender — starts on `defaultTheme`, which `getServerTheme()` reports
97
+ * so a hydrating client renders the markup it was sent before switching.
98
+ * Default: false.
99
+ */
100
+ systemDefault?: boolean
101
+ }
102
+ ```
103
+
104
+ #### `ThemeStorageAdapter`
105
+
106
+ Minimal storage adapter for theme persistence. Compatible with
107
+ localStorage, sessionStorage, or any custom implementation
108
+ (e.g., React Native AsyncStorage wrapper, SSR no-op).
109
+
110
+ ```typescript
111
+ interface ThemeStorageAdapter {
112
+ getItem(key: string): string | null
113
+ setItem(key: string, value: string): void
114
+ }
115
+ ```
116
+
117
+ ### Functions
118
+
119
+ #### `createCSSVariablesThemeProvider(config)`
120
+
121
+ Creates a framework-agnostic ThemeProvider that applies theme tokens
122
+ as CSS custom properties on the document root element.
123
+
124
+ ```typescript
125
+ function createCSSVariablesThemeProvider(config: CSSVariablesThemeConfig): ThemeProvider
126
+ ```
127
+
128
+ - `config` — Theme provider configuration (available themes, default theme, CSS variable prefix, persistence).
129
+
130
+ **Returns:** A ThemeProvider that applies themes as CSS custom properties on the document root.
131
+
132
+ ### Constants
133
+
134
+ #### `darkTheme`
135
+
136
+ Default dark theme.
137
+
138
+ Dark backgrounds (#0f172a, #1e293b), light text, blue primary (#60a5fa).
139
+
140
+ ```typescript
141
+ const darkTheme: Theme
142
+ ```
143
+
144
+ #### `lightTheme`
145
+
146
+ Default light theme.
147
+
148
+ Near-white backgrounds (#f6f6f6 background, #ffffff surface), dark text,
149
+ blue primary (#4070e0).
150
+
151
+ ```typescript
152
+ const lightTheme: Theme
153
+ ```
154
+
155
+ #### `provider`
156
+
157
+ Default CSS variables theme provider with light and dark themes.
158
+
159
+ ```typescript
160
+ const provider: ThemeProvider
161
+ ```
162
+
163
+ ## Core Interface
164
+
165
+ Implements `@molecule/app-theme` interface.
166
+
167
+ ## Bond Wiring
168
+
169
+ Setup function to register this provider with the core interface:
170
+
171
+ ```typescript
172
+ import { setProvider } from '@molecule/app-theme'
173
+ import { provider } from '@molecule/app-theme-css-variables'
174
+
175
+ export function setupThemeCssVariables(): void {
176
+ setProvider(provider)
177
+ }
178
+ ```
179
+
180
+ ## Injection Notes
181
+
182
+ ### Requirements
183
+
184
+ Peer dependencies:
185
+
186
+ - `@molecule/app-theme` ^1.0.1
187
+
188
+ ### Runtime Dependencies
189
+
190
+ - `@molecule/app-theme`
191
+
192
+ Recoloring a scaffolded app — where the palette actually lives:
193
+
194
+ This bond writes `--mol-color-*` variables and toggles light/dark via a
195
+ `data-mol-mode` attribute. In `@molecule/app-ui-tailwind`'s `base.css` the
196
+ Tailwind `@theme` reads each core token as
197
+ `--color-primary: var(--mol-color-primary, <default>)`, so for a CUSTOM build
198
+ (no per-app `theme.css`) this bond's `Theme` objects ARE the palette — edit
199
+ `colors` here to recolor.
200
+
201
+ BUT template-based apps ship `app/src/theme.css` that hardcodes `--color-*` on
202
+ `:root` / `[data-mol-mode='dark']`. Those have the same `:root` specificity and
203
+ load last, so they SHADOW the `var(--mol-color-*)` reference — the visible
204
+ colors come only from `theme.css`. When `theme.css` defines colors, editing
205
+ this bond has NO visible effect; recolor by editing `app/src/theme.css`. This
206
+ bond still drives light/dark mode and is the palette for non-Tailwind targets
207
+ (e.g. React Native). Precedence: `theme.css` > this bond > base defaults.
208
+
209
+ The provider also toggles a `.dark` class on `<html>` (alongside the
210
+ `data-mol-mode` attribute) so Tailwind `dark:` variants react to theme
211
+ toggles — if `dark:` utilities aren't switching, check that this bond is
212
+ wired and applying to the document.
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAG/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAmHzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,uBAAuB,GAAG,aAAa,CAqF9F;AAED,uEAAuE;AACvE,eAAO,MAAM,QAAQ,EAAE,aAGrB,CAAA"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAG/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAmHzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,uBAAuB,GAAG,aAAa,CAiH9F;AAED,uEAAuE;AACvE,eAAO,MAAM,QAAQ,EAAE,aAGrB,CAAA"}
package/dist/provider.js CHANGED
@@ -135,7 +135,7 @@ function applyThemeToDocument(themes, activeTheme, prefix) {
135
135
  * @returns A ThemeProvider that applies themes as CSS custom properties on the document root.
136
136
  */
137
137
  export function createCSSVariablesThemeProvider(config) {
138
- const { themes, defaultTheme, prefix = 'mol', applyToDocument = true, persistKey } = config;
138
+ const { themes, defaultTheme, prefix = 'mol', applyToDocument = true, persistKey, systemDefault = false, } = config;
139
139
  // If a persistKey is set without an explicit storage adapter, fall back to
140
140
  // window.localStorage. The previous behavior — persistKey but no storage =
141
141
  // silent no-op — was the source of "I toggled dark mode and it reset on
@@ -157,13 +157,29 @@ export function createCSSVariablesThemeProvider(config) {
157
157
  },
158
158
  }
159
159
  : undefined);
160
- let currentTheme = themes.find((t) => t.name === defaultTheme) || themes[0];
160
+ // What a render without a browser starts on — no storage, no media query.
161
+ const serverTheme = themes.find((t) => t.name === defaultTheme) || themes[0];
162
+ let currentTheme = serverTheme;
161
163
  const listeners = new Set();
162
164
  // Try to restore from storage adapter
165
+ let restored = false;
163
166
  if (persistKey && storage) {
164
167
  const saved = storage.getItem(persistKey);
165
168
  if (saved) {
166
169
  const found = themes.find((t) => t.name === saved);
170
+ if (found) {
171
+ currentTheme = found;
172
+ restored = true;
173
+ }
174
+ }
175
+ }
176
+ // Nothing persisted: follow the OS preference when asked to (browser only).
177
+ if (!restored && systemDefault) {
178
+ const matchMedia = globalThis
179
+ .matchMedia;
180
+ if (typeof matchMedia === 'function') {
181
+ const mode = matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
182
+ const found = themes.find((t) => t.mode === mode);
167
183
  if (found)
168
184
  currentTheme = found;
169
185
  }
@@ -204,6 +220,9 @@ export function createCSSVariablesThemeProvider(config) {
204
220
  getThemes() {
205
221
  return themes;
206
222
  },
223
+ getServerTheme() {
224
+ return serverTheme;
225
+ },
207
226
  };
208
227
  return provider;
209
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -37,5 +37,14 @@ export interface CSSVariablesThemeConfig {
37
37
  * Provide an adapter for React Native (AsyncStorage wrapper) or custom stores.
38
38
  */
39
39
  storage?: ThemeStorageAdapter;
40
+ /**
41
+ * With no persisted choice, start on the theme whose `mode` matches the
42
+ * OS preference (`prefers-color-scheme`) instead of `defaultTheme`.
43
+ * Browser-only: a render without a window — a server, a build-time
44
+ * prerender — starts on `defaultTheme`, which `getServerTheme()` reports
45
+ * so a hydrating client renders the markup it was sent before switching.
46
+ * Default: false.
47
+ */
48
+ systemDefault?: boolean;
40
49
  }
41
50
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@molecule/app-theme-css-variables",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "CSS custom properties theme provider for molecule.dev",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,8 @@
17
17
  }
18
18
  },
19
19
  "files": [
20
- "dist"
20
+ "dist",
21
+ "README.md"
21
22
  ],
22
23
  "keywords": [
23
24
  "molecule",
@@ -30,10 +31,10 @@
30
31
  "devDependencies": {
31
32
  "@types/node": "26.1.2",
32
33
  "typescript": "6.0.3",
33
- "vitest": "4.1.10"
34
+ "vitest": "4.1.11"
34
35
  },
35
36
  "peerDependencies": {
36
- "@molecule/app-theme": "^1.0.0"
37
+ "@molecule/app-theme": "^1.0.1"
37
38
  },
38
39
  "repository": {
39
40
  "type": "git",