@reforma/site 0.0.1 → 0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAErG,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAEjE,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CAC1B,CAAC;AAEF,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CAAE,CAAC;AAe/E,8EAA8E;AAC9E,wBAAgB,OAAO,qBAEtB;AAMD,wBAAgB,QAAQ,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,WAAgC,EAChC,WAAkB,GACrB,EAAE;IACC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,+BAqGA"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAErG,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAEjE,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CAC1B,CAAC;AAEF,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CAAE,CAAC;AAe/E,8EAA8E;AAC9E,wBAAgB,OAAO,qBAEtB;AAMD,wBAAgB,QAAQ,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,WAAgC,EAChC,WAAkB,GACrB,EAAE;IACC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,+BA6FA"}
package/dist/root.js CHANGED
@@ -20,7 +20,7 @@ function modeNames(modes) {
20
20
  }
21
21
  export function SiteRoot({ children, modes, appearances = defaultAppearances, systemModes = null, }) {
22
22
  const defaultMode = modes.default ?? '';
23
- const [state, setState] = useState({
23
+ const [modeState, setModeState] = useState({
24
24
  mode: defaultMode,
25
25
  siteMode: defaultMode,
26
26
  preview: null,
@@ -29,19 +29,11 @@ export function SiteRoot({ children, modes, appearances = defaultAppearances, sy
29
29
  });
30
30
  const latestState = useRef(null);
31
31
  const selectVisitorMode = useRef(null);
32
- const modesRef = useRef(modes);
33
- const appearancesRef = useRef(appearances);
34
- const systemModesRef = useRef(systemModes);
35
- modesRef.current = modes;
36
- appearancesRef.current = appearances;
37
- systemModesRef.current = systemModes;
38
32
  // Hydrate the server default first, then apply visitor preferences without masking mismatches.
39
33
  useLayoutEffect(() => {
40
34
  const storageKey = 'project-mode';
41
- const names = modeNames(modesRef.current);
42
- const defaultMode = modesRef.current.default ?? '';
43
- const appearances = appearancesRef.current;
44
- const systemModes = systemModesRef.current;
35
+ const names = modeNames(modes);
36
+ const defaultMode = modes.default ?? '';
45
37
  const valid = (mode) => mode !== null && names.includes(mode) ? mode : null;
46
38
  const media = systemModes ? window.matchMedia('(prefers-color-scheme: dark)') : null;
47
39
  let preference = latestState.current?.preference ?? null;
@@ -65,7 +57,7 @@ export function SiteRoot({ children, modes, appearances = defaultAppearances, sy
65
57
  document.documentElement.setAttribute('data-appearance', appearance);
66
58
  document.documentElement.style.colorScheme = appearance;
67
59
  latestState.current = next;
68
- setState(next);
60
+ setModeState(next);
69
61
  window.dispatchEvent(new CustomEvent('project:mode-change', { detail: next }));
70
62
  };
71
63
  const onStorage = (event) => {
@@ -112,6 +104,6 @@ export function SiteRoot({ children, modes, appearances = defaultAppearances, sy
112
104
  media?.removeEventListener('change', publishMode);
113
105
  window.removeEventListener('reforma:token-mode', onPreview);
114
106
  };
115
- }, []);
116
- return (_jsx(ModeContext, { value: { ...state, setMode: mode => selectVisitorMode.current?.(mode) }, children: children }));
107
+ }, [appearances, modes, systemModes]);
108
+ return (_jsx(ModeContext, { value: { ...modeState, setMode: mode => selectVisitorMode.current?.(mode) }, children: children }));
117
109
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reforma/site",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Visitor runtime for a Reforma site: mode, publish metadata, and the PostCSS url guard.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",