@unisim/sdk 0.142.11 → 0.143.0

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.
Files changed (41) hide show
  1. package/README.md +82 -3
  2. package/dist/PreferencesDialog.d.ts +35 -0
  3. package/dist/PreferencesDialog.d.ts.map +1 -0
  4. package/dist/PreferencesDialog.js +174 -0
  5. package/dist/PreferencesDialog.js.map +1 -0
  6. package/dist/UniversalAppsNavBar.d.ts +26 -3
  7. package/dist/UniversalAppsNavBar.d.ts.map +1 -1
  8. package/dist/UniversalAppsNavBar.js +2 -2
  9. package/dist/UniversalAppsNavBar.js.map +1 -1
  10. package/dist/UniversalNavBar.d.ts +26 -1
  11. package/dist/UniversalNavBar.d.ts.map +1 -1
  12. package/dist/UniversalNavBar.js +12 -3
  13. package/dist/UniversalNavBar.js.map +1 -1
  14. package/dist/UserProfile.d.ts +40 -7
  15. package/dist/UserProfile.d.ts.map +1 -1
  16. package/dist/UserProfile.js +40 -63
  17. package/dist/UserProfile.js.map +1 -1
  18. package/dist/colorSchemeKeys.d.ts +9 -0
  19. package/dist/colorSchemeKeys.d.ts.map +1 -0
  20. package/dist/colorSchemeKeys.js +19 -0
  21. package/dist/colorSchemeKeys.js.map +1 -0
  22. package/dist/i18n.d.ts.map +1 -1
  23. package/dist/i18n.js +122 -0
  24. package/dist/i18n.js.map +1 -1
  25. package/dist/index.d.ts +5 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +8 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/languageLabels.d.ts +3 -0
  30. package/dist/languageLabels.d.ts.map +1 -0
  31. package/dist/languageLabels.js +22 -0
  32. package/dist/languageLabels.js.map +1 -0
  33. package/dist/provider.d.ts +53 -5
  34. package/dist/provider.d.ts.map +1 -1
  35. package/dist/provider.js +251 -21
  36. package/dist/provider.js.map +1 -1
  37. package/dist/themeStore.d.ts +22 -9
  38. package/dist/themeStore.d.ts.map +1 -1
  39. package/dist/themeStore.js +62 -14
  40. package/dist/themeStore.js.map +1 -1
  41. package/package.json +2 -1
@@ -3,6 +3,7 @@ import { type ReactNode } from 'react';
3
3
  import type { ProductCode } from './types.js';
4
4
  import { type Language } from './i18n.js';
5
5
  import { type RevealOnExpandOptions } from './revealOnExpand.js';
6
+ import type { ThemePref } from './themeStore.js';
6
7
  export interface UniversalConfig {
7
8
  supabaseUrl: string;
8
9
  supabaseAnonKey: string;
@@ -60,8 +61,28 @@ interface UniversalContextValue {
60
61
  * could never work.
61
62
  */
62
63
  noAccounts: boolean;
64
+ /**
65
+ * The language this app is SHOWING: its own override when it has one, else
66
+ * the global choice. Everything that renders text reads this one, which is
67
+ * why its name did not change when the other two arrived (0.143.0).
68
+ */
63
69
  language: Language;
70
+ /**
71
+ * Back-compat alias of {@link setGlobalLanguage}. Every caller written
72
+ * before 0.143.0 meant "the language", and at the time there was only one;
73
+ * the global one is the reading that keeps their behaviour.
74
+ */
64
75
  setLanguage: (lang: Language) => void;
76
+ /** The suite-wide choice — Global preferences. */
77
+ globalLanguage: Language;
78
+ /** This app's own override — App preferences. `null` = follow global. */
79
+ appLanguage: Language | null;
80
+ setGlobalLanguage: (lang: Language) => void;
81
+ /** `null` removes the override, so the app follows global again. */
82
+ setAppLanguage: (lang: Language | null) => void;
83
+ /** The suite-wide colour scheme — Global preferences. `'light'` until chosen. */
84
+ globalColorScheme: ThemePref;
85
+ setGlobalColorScheme: (pref: ThemePref) => void;
65
86
  }
66
87
  /**
67
88
  * The persisted active-org choice, read synchronously and outside React.
@@ -92,19 +113,46 @@ export declare function useUniversal(): UniversalContextValue;
92
113
  */
93
114
  export declare function useOptionalLanguage(): Language | null;
94
115
  /**
95
- * Read and update the suite-wide language preference. On Assess products
96
- * (when UniversalProvider has a cookieDomain) the choice persists in a
97
- * cookie scoped to .unisim.co.uk so it follows the user across products.
98
- * On the Universal Apps (no cookieDomain — separate origins) it persists in
99
- * localStorage scoped to the current origin.
116
+ * Read and update the language.
117
+ *
118
+ * `language` is what this app shows — its own override from App preferences
119
+ * when it has one, else the global choice. `globalLanguage` / `appLanguage`
120
+ * are the two halves, for a picker that needs to show both.
121
+ *
122
+ * On Assess products (when UniversalProvider has a cookieDomain) the GLOBAL
123
+ * choice persists in a cookie scoped to .unisim.co.uk so it follows the user
124
+ * across products; on the Universal Apps it persists in localStorage scoped to
125
+ * the current origin. Signed in, it also follows the account (the `suite` row
126
+ * of `user_app_prefs`). An app override is always localStorage, under
127
+ * `universal:language:<product>`.
100
128
  *
101
129
  * Each host product's own translation layer (Ergo's i18next, Exports'
102
130
  * Context, etc.) should call setLanguage() alongside its existing setter so
103
131
  * the SDK-rendered navbar flips in lockstep with the app body.
132
+ *
133
+ * ⚠️ Since 0.143.0 `setLanguage` sets the GLOBAL language — which is what it
134
+ * always did — so a host whose app has an override will not see its own body
135
+ * change from it. A host that drives its body from `language` stays right.
104
136
  */
105
137
  export declare function useLanguage(): {
106
138
  language: Language;
107
139
  setLanguage: (lang: Language) => void;
140
+ globalLanguage: Language;
141
+ appLanguage: Language | null;
142
+ setGlobalLanguage: (lang: Language) => void;
143
+ setAppLanguage: (lang: Language | null) => void;
144
+ };
145
+ /**
146
+ * The suite-wide preferences — what the navbar's Global preferences dialog
147
+ * edits. Values are the GLOBAL ones, never an app's override: an app's colour
148
+ * scheme override lives in its own `createThemeStore`, and its language
149
+ * override in {@link useLanguage}'s `appLanguage`.
150
+ */
151
+ export declare function useGlobalPreferences(): {
152
+ language: Language;
153
+ setLanguage: (lang: Language) => void;
154
+ colorScheme: ThemePref;
155
+ setColorScheme: (pref: ThemePref) => void;
108
156
  };
109
157
  export {};
110
158
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEvF,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAA;AAE5E,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEvF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAA;CACjD;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,cAAc,CAAA;IACxB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CACtC;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAexD;AAqFD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA8S7E;AAED,wBAAgB,YAAY,IAAI,qBAAqB,CAMpD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,GAAG,IAAI,CAErD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,IAAI;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CAAE,CAG3F"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
package/dist/provider.js CHANGED
@@ -6,6 +6,7 @@ import { createContext, useContext, useEffect, useMemo, useRef, useState, } from
6
6
  import { DEFAULT_LANGUAGE, resolveLanguage } from './i18n.js';
7
7
  import { createMockSupabase } from './mockAuth.js';
8
8
  import { installRevealOnExpand } from './revealOnExpand.js';
9
+ import { GLOBAL_COLOR_SCHEME_EVENT, GLOBAL_COLOR_SCHEME_KEY } from './colorSchemeKeys.js';
9
10
  const UniversalContext = createContext(null);
10
11
  const ACTIVE_ORG_STORAGE_KEY = 'universal:active_org_id';
11
12
  /**
@@ -85,6 +86,21 @@ function applyOrgHeader(client, orgId) {
85
86
  }
86
87
  }
87
88
  const LANGUAGE_STORAGE_KEY = 'universal:language';
89
+ /**
90
+ * One app's language OVERRIDE, set from its App preferences. Absent means
91
+ * "follow global". Always localStorage, never the shared cookie, even on an
92
+ * Assess product: an override is by definition about this app alone, and a
93
+ * `.unisim.co.uk` cookie is precisely the thing that would carry it to the
94
+ * next one.
95
+ */
96
+ function appLanguageKey(product) {
97
+ return `${LANGUAGE_STORAGE_KEY}:${product}`;
98
+ }
99
+ /** The row in `user_app_prefs` (migration 0151) that holds the GLOBAL prefs. */
100
+ const SUITE_PREFS_APP = 'suite';
101
+ function isThemePref(v) {
102
+ return v === 'light' || v === 'dark' || v === 'system';
103
+ }
88
104
  // Products that are part of the open-source local-first Universal Apps
89
105
  // suite. These all set cookieDomain so the SDK's Supabase session storage
90
106
  // can ride on .unisim.co.uk like the Assess apps do, but language
@@ -215,19 +231,87 @@ export function UniversalProvider({ config, children }) {
215
231
  // client render produce identical markup. A useEffect below upgrades to
216
232
  // the persisted choice (or browser locale) after hydration completes —
217
233
  // mirrors the pattern Ergo's i18next setup uses in lib/i18n.ts.
218
- const [language, setLanguageState] = useState(DEFAULT_LANGUAGE);
234
+ const [globalLanguage, setGlobalLanguageState] = useState(DEFAULT_LANGUAGE);
235
+ const [appLanguage, setAppLanguageState] = useState(null);
236
+ const [globalColorScheme, setGlobalColorSchemeState] = useState('light');
237
+ const language = appLanguage ?? globalLanguage;
238
+ // The setters below need the CURRENT pair to write the account row, and they
239
+ // are closures over whichever render created them — a host that captured
240
+ // `setGlobalLanguage` in an effect would otherwise upsert a stale colour
241
+ // scheme next to the new language.
242
+ const globalsRef = useRef({ language: globalLanguage, colorScheme: globalColorScheme });
243
+ globalsRef.current = { language: globalLanguage, colorScheme: globalColorScheme };
244
+ // Global prefs live in the same store as ever — the `.unisim.co.uk` cookie on
245
+ // an Assess product, localStorage on a Universal App (see `languageStore`).
246
+ const readGlobal = (key) => {
247
+ try {
248
+ return languageStore ? languageStore.getItem(key) : window.localStorage.getItem(key);
249
+ }
250
+ catch {
251
+ return null;
252
+ }
253
+ };
254
+ const writeGlobal = (key, value) => {
255
+ try {
256
+ if (languageStore)
257
+ languageStore.setItem(key, value);
258
+ else
259
+ window.localStorage.setItem(key, value);
260
+ }
261
+ catch { /* private mode / storage disabled: state still holds for this page */ }
262
+ };
263
+ /**
264
+ * Put a global colour scheme on screen: state, storage, and the event
265
+ * `createThemeStore` listens for.
266
+ *
267
+ * ⚠️ **The localStorage mirror is not redundant on an Assess product.** The
268
+ * canonical copy is the cookie there, but `createThemeStore` runs at IMPORT
269
+ * time — before this provider exists — so it can only read localStorage, and
270
+ * the pre-paint snippet in each app's index.html can only read localStorage
271
+ * too. Without the mirror a dark-mode Assess user gets a light first frame
272
+ * on every load.
273
+ */
274
+ const applyGlobalColorScheme = (pref, persist) => {
275
+ setGlobalColorSchemeState(pref);
276
+ if (typeof window === 'undefined')
277
+ return;
278
+ if (persist)
279
+ writeGlobal(GLOBAL_COLOR_SCHEME_KEY, pref);
280
+ try {
281
+ window.localStorage.setItem(GLOBAL_COLOR_SCHEME_KEY, pref);
282
+ }
283
+ catch { /* ignore */ }
284
+ window.dispatchEvent(new CustomEvent(GLOBAL_COLOR_SCHEME_EVENT, { detail: pref }));
285
+ };
219
286
  useEffect(() => {
220
287
  if (typeof window === 'undefined')
221
288
  return;
222
- const stored = languageStore
223
- ? languageStore.getItem(LANGUAGE_STORAGE_KEY)
224
- : window.localStorage.getItem(LANGUAGE_STORAGE_KEY);
289
+ const stored = readGlobal(LANGUAGE_STORAGE_KEY);
225
290
  const resolved = resolveLanguage(stored) ??
226
291
  resolveLanguage(typeof navigator !== 'undefined' ? navigator.language : null) ??
227
292
  DEFAULT_LANGUAGE;
228
- if (resolved !== language)
229
- setLanguageState(resolved);
230
- // Only fire on mount — subsequent updates flow through setLanguage().
293
+ setGlobalLanguageState(resolved);
294
+ let override = null;
295
+ try {
296
+ override = window.localStorage.getItem(appLanguageKey(config.product));
297
+ }
298
+ catch { /* ignore */ }
299
+ setAppLanguageState(resolveLanguage(override));
300
+ // Cookie first on an Assess product: another subdomain may have changed it
301
+ // since this origin's mirror was written, and re-applying refreshes the
302
+ // mirror (and any theme store already painted from the stale one).
303
+ let scheme = readGlobal(GLOBAL_COLOR_SCHEME_KEY);
304
+ if (!isThemePref(scheme)) {
305
+ try {
306
+ scheme = window.localStorage.getItem(GLOBAL_COLOR_SCHEME_KEY);
307
+ }
308
+ catch {
309
+ scheme = null;
310
+ }
311
+ }
312
+ if (isThemePref(scheme))
313
+ applyGlobalColorScheme(scheme, false);
314
+ // Only fire on mount — subsequent updates flow through the setters.
231
315
  // eslint-disable-next-line react-hooks/exhaustive-deps
232
316
  }, []);
233
317
  // ⚠️ NO `initialised` REF GUARD HERE. There was one until 2026-08-29, and it
@@ -368,6 +452,102 @@ export function UniversalProvider({ config, children }) {
368
452
  window.removeEventListener('pageshow', onPageShow);
369
453
  };
370
454
  }, [supabase]);
455
+ // ── Global preferences follow the ACCOUNT, not just the device ─────────────
456
+ //
457
+ // The `suite` row of `user_app_prefs` (migration 0151, the table useUserPrefs
458
+ // already uses per app) holds `{ language, colorScheme }`. Signing in on a
459
+ // new device picks them up; changing one writes it back.
460
+ //
461
+ // ⚠️ **This deliberately crosses the line `UNIVERSAL_APP_PRODUCTS` draws.**
462
+ // That list keeps a Universal App's language out of the Assess cookie, and
463
+ // the reason it gives is an ANONYMOUS visitor: somebody picking French in
464
+ // Universal PDF must not reframe the Assess SaaS for a different person on
465
+ // the same machine. A row keyed on the signed-in user's id cannot do that —
466
+ // it only ever reaches the same person — so "global" can honestly mean the
467
+ // whole suite once there is an account behind it.
468
+ //
469
+ // The rules, each of which has a way to go wrong:
470
+ // • **Remote wins on sign-in**, and is applied WITHOUT being written back —
471
+ // echoing it would be a pointless write on every page load.
472
+ // • **No row → seed one from what this device explicitly STORED**, never
473
+ // from defaults or `navigator.language`. Seeding a default would stamp
474
+ // "English, light" onto the account from the first browser that merely
475
+ // looked, and every other device would then be overwritten with it.
476
+ // • **Fire-and-forget and silent.** Offline, the migration missing on a
477
+ // self-hosted fork, an RLS refusal: all of them cost cross-device sync
478
+ // and nothing else. A preference is not worth an error on screen.
479
+ // • **Not in mock mode.** The fixture has no such table, and the whole
480
+ // point of it is making no network calls.
481
+ //
482
+ // Same subscribe-in-step shape as the auth effect above, so a StrictMode
483
+ // remount cancels the first read rather than applying it twice.
484
+ const userId = session?.user?.id ?? null;
485
+ const userIdRef = useRef(null);
486
+ userIdRef.current = mockActive ? null : userId;
487
+ useEffect(() => {
488
+ if (!userId || mockActive || typeof window === 'undefined')
489
+ return;
490
+ let cancelled = false;
491
+ void (async () => {
492
+ try {
493
+ const { data, error } = await supabase
494
+ .from('user_app_prefs')
495
+ .select('data')
496
+ .eq('app', SUITE_PREFS_APP)
497
+ .maybeSingle();
498
+ if (cancelled || error)
499
+ return;
500
+ const remote = data?.data;
501
+ if (remote) {
502
+ const lang = typeof remote.language === 'string' ? resolveLanguage(remote.language) : null;
503
+ if (lang) {
504
+ setGlobalLanguageState(lang);
505
+ writeGlobal(LANGUAGE_STORAGE_KEY, lang);
506
+ }
507
+ if (isThemePref(remote.colorScheme))
508
+ applyGlobalColorScheme(remote.colorScheme, true);
509
+ return;
510
+ }
511
+ const storedLang = resolveLanguage(readGlobal(LANGUAGE_STORAGE_KEY));
512
+ let storedScheme = readGlobal(GLOBAL_COLOR_SCHEME_KEY);
513
+ if (!isThemePref(storedScheme)) {
514
+ try {
515
+ storedScheme = window.localStorage.getItem(GLOBAL_COLOR_SCHEME_KEY);
516
+ }
517
+ catch {
518
+ storedScheme = null;
519
+ }
520
+ }
521
+ const seed = {};
522
+ if (storedLang)
523
+ seed.language = storedLang;
524
+ if (isThemePref(storedScheme))
525
+ seed.colorScheme = storedScheme;
526
+ if (Object.keys(seed).length === 0 || cancelled)
527
+ return;
528
+ await supabase
529
+ .from('user_app_prefs')
530
+ .upsert({ user_id: userId, app: SUITE_PREFS_APP, data: seed }, { onConflict: 'user_id,app' });
531
+ }
532
+ catch {
533
+ /* no sync this session — see the rules above */
534
+ }
535
+ })();
536
+ return () => { cancelled = true; };
537
+ // eslint-disable-next-line react-hooks/exhaustive-deps
538
+ }, [supabase, userId, mockActive]);
539
+ const pushGlobals = (next) => {
540
+ const uid = userIdRef.current;
541
+ if (!uid)
542
+ return;
543
+ try {
544
+ void supabase
545
+ .from('user_app_prefs')
546
+ .upsert({ user_id: uid, app: SUITE_PREFS_APP, data: next }, { onConflict: 'user_id,app' })
547
+ .then(() => { }, () => { });
548
+ }
549
+ catch { /* see the rules above */ }
550
+ };
371
551
  const setActiveOrgId = (orgId) => {
372
552
  setActiveOrgIdState(orgId);
373
553
  // Synchronously too, not just on the next render: a switcher's click
@@ -389,21 +569,39 @@ export function UniversalProvider({ config, children }) {
389
569
  window.localStorage.removeItem(ACTIVE_ORG_STORAGE_KEY);
390
570
  }
391
571
  };
392
- const setLanguage = (requested) => {
572
+ const setGlobalLanguage = (requested) => {
393
573
  // Normalised, because the type is only a promise at the call site: an app
394
574
  // written before 0.141.5 can still hand over a legacy `pt` (cast, or from
395
575
  // its own untyped list), and storing that would leave the picker showing
396
576
  // no selection. `pt` → `pt-PT`, `en-GB` → `en-gb`; nonsense → English.
397
577
  const lang = resolveLanguage(requested) ?? DEFAULT_LANGUAGE;
398
- setLanguageState(lang);
578
+ setGlobalLanguageState(lang);
399
579
  if (typeof window === 'undefined')
400
580
  return;
401
- if (languageStore) {
402
- languageStore.setItem(LANGUAGE_STORAGE_KEY, lang);
403
- }
404
- else {
405
- window.localStorage.setItem(LANGUAGE_STORAGE_KEY, lang);
581
+ writeGlobal(LANGUAGE_STORAGE_KEY, lang);
582
+ pushGlobals({ language: lang, colorScheme: globalsRef.current.colorScheme });
583
+ };
584
+ // ⚠️ Kept, and it means GLOBAL. Hosts call this alongside their own i18n
585
+ // setter (Ergo's i18next, Exports' Context) so the navbar flips in step with
586
+ // the body — and before 0.143.0 there was no other language for it to mean.
587
+ const setLanguage = setGlobalLanguage;
588
+ const setAppLanguage = (requested) => {
589
+ const lang = requested === null ? null : (resolveLanguage(requested) ?? DEFAULT_LANGUAGE);
590
+ setAppLanguageState(lang);
591
+ if (typeof window === 'undefined')
592
+ return;
593
+ try {
594
+ if (lang)
595
+ window.localStorage.setItem(appLanguageKey(config.product), lang);
596
+ else
597
+ window.localStorage.removeItem(appLanguageKey(config.product));
406
598
  }
599
+ catch { /* ignore */ }
600
+ };
601
+ const setGlobalColorScheme = (pref) => {
602
+ const next = isThemePref(pref) ? pref : 'light';
603
+ applyGlobalColorScheme(next, true);
604
+ pushGlobals({ language: globalsRef.current.language, colorScheme: next });
407
605
  };
408
606
  const value = {
409
607
  config,
@@ -414,6 +612,12 @@ export function UniversalProvider({ config, children }) {
414
612
  setActiveOrgId,
415
613
  language,
416
614
  setLanguage,
615
+ globalLanguage,
616
+ appLanguage,
617
+ setGlobalLanguage,
618
+ setAppLanguage,
619
+ globalColorScheme,
620
+ setGlobalColorScheme,
417
621
  noAccounts: !!config.noAccounts,
418
622
  };
419
623
  return _jsx(UniversalContext.Provider, { value: value, children: children });
@@ -436,18 +640,44 @@ export function useOptionalLanguage() {
436
640
  return useContext(UniversalContext)?.language ?? null;
437
641
  }
438
642
  /**
439
- * Read and update the suite-wide language preference. On Assess products
440
- * (when UniversalProvider has a cookieDomain) the choice persists in a
441
- * cookie scoped to .unisim.co.uk so it follows the user across products.
442
- * On the Universal Apps (no cookieDomain — separate origins) it persists in
443
- * localStorage scoped to the current origin.
643
+ * Read and update the language.
644
+ *
645
+ * `language` is what this app shows — its own override from App preferences
646
+ * when it has one, else the global choice. `globalLanguage` / `appLanguage`
647
+ * are the two halves, for a picker that needs to show both.
648
+ *
649
+ * On Assess products (when UniversalProvider has a cookieDomain) the GLOBAL
650
+ * choice persists in a cookie scoped to .unisim.co.uk so it follows the user
651
+ * across products; on the Universal Apps it persists in localStorage scoped to
652
+ * the current origin. Signed in, it also follows the account (the `suite` row
653
+ * of `user_app_prefs`). An app override is always localStorage, under
654
+ * `universal:language:<product>`.
444
655
  *
445
656
  * Each host product's own translation layer (Ergo's i18next, Exports'
446
657
  * Context, etc.) should call setLanguage() alongside its existing setter so
447
658
  * the SDK-rendered navbar flips in lockstep with the app body.
659
+ *
660
+ * ⚠️ Since 0.143.0 `setLanguage` sets the GLOBAL language — which is what it
661
+ * always did — so a host whose app has an override will not see its own body
662
+ * change from it. A host that drives its body from `language` stays right.
448
663
  */
449
664
  export function useLanguage() {
450
- const { language, setLanguage } = useUniversal();
451
- return { language, setLanguage };
665
+ const { language, setLanguage, globalLanguage, appLanguage, setGlobalLanguage, setAppLanguage } = useUniversal();
666
+ return { language, setLanguage, globalLanguage, appLanguage, setGlobalLanguage, setAppLanguage };
667
+ }
668
+ /**
669
+ * The suite-wide preferences — what the navbar's Global preferences dialog
670
+ * edits. Values are the GLOBAL ones, never an app's override: an app's colour
671
+ * scheme override lives in its own `createThemeStore`, and its language
672
+ * override in {@link useLanguage}'s `appLanguage`.
673
+ */
674
+ export function useGlobalPreferences() {
675
+ const { globalLanguage, setGlobalLanguage, globalColorScheme, setGlobalColorScheme } = useUniversal();
676
+ return {
677
+ language: globalLanguage,
678
+ setLanguage: setGlobalLanguage,
679
+ colorScheme: globalColorScheme,
680
+ setColorScheme: setGlobalColorScheme,
681
+ };
452
682
  }
453
683
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,20 @@
1
1
  export type ThemePref = 'light' | 'dark' | 'system';
2
+ export { GLOBAL_COLOR_SCHEME_EVENT, GLOBAL_COLOR_SCHEME_KEY } from './colorSchemeKeys.js';
2
3
  export interface ThemeState {
3
- /** What the user chose. `'light'` until they choose otherwise. */
4
+ /** What applies to this app: `override ?? global`. `'light'` until chosen. */
4
5
  pref: ThemePref;
5
6
  /** What is actually on screen — `pref` with `'system'` resolved. */
6
7
  effective: 'light' | 'dark';
7
- /** Persist and apply a new preference. Stable across renders. */
8
+ /** This app's own choice, from its App preferences. `null` = follow global. */
9
+ override: ThemePref | null;
10
+ /** The suite-wide choice, from Global preferences. */
11
+ global: ThemePref;
12
+ /** Persist and apply this app's override; `null` removes it. Stable across renders. */
13
+ setOverride(pref: ThemePref | null): void;
14
+ /**
15
+ * Back-compat: `setOverride(pref)`. Before 0.143.0 the app's choice was the
16
+ * only one there was, and it is still what this sets. Stable across renders.
17
+ */
8
18
  setPref(pref: ThemePref): void;
9
19
  }
10
20
  export interface ThemeStore {
@@ -16,7 +26,7 @@ export interface ThemeStore {
16
26
  getState(): ThemeState;
17
27
  /** Low-level change listener; returns the unsubscribe. */
18
28
  subscribe(listener: () => void): () => void;
19
- /** The localStorage key this store persists under. */
29
+ /** The localStorage key this store persists the app's override under. */
20
30
  readonly storageKey: string;
21
31
  }
22
32
  /**
@@ -29,15 +39,18 @@ export interface ThemeStore {
29
39
  * export const useThemeStore = createThemeStore('unisim-video-theme')
30
40
  * ```
31
41
  *
32
- * The stored preference is read and applied to `<html>` immediately — at
42
+ * The resolved preference is read and applied to `<html>` immediately — at
33
43
  * import time, before React renders — so a dark-mode user does not see a light
34
- * frame first.
44
+ * frame first. Pass the store to the navbar (`themeStore={useThemeStore}`) and
45
+ * App preferences offers the override.
35
46
  *
36
- * ⚠️ **The key is the user's saved choice.** Changing it on an existing app
37
- * resets everyone's theme to light without a word. Existing apps keep the key
38
- * their copy used (`unisim-<app>-theme`); a new app should follow that pattern.
47
+ * ⚠️ **The key is the user's saved choice** — since 0.143.0, their override of
48
+ * the global one. Changing it on an existing app silently puts everyone who
49
+ * chose something in that app back to following global. Existing apps keep
50
+ * the key their copy used (`unisim-<app>-theme`); a new app should follow that
51
+ * pattern.
39
52
  *
40
- * Only follows the OS live while the user has actually chosen `'system'`.
53
+ * Only follows the OS live while the resolved preference is `'system'`.
41
54
  */
42
55
  export declare function createThemeStore(storageKey: string): ThemeStore;
43
56
  //# sourceMappingURL=themeStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeStore.d.ts","sourceRoot":"","sources":["../src/themeStore.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEnD,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,IAAI,EAAE,SAAS,CAAA;IACf,oEAAoE;IACpE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,iEAAiE;IACjE,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,IAAI,UAAU,CAAA;IACd,yEAAyE;IACzE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1C,yDAAyD;IACzD,QAAQ,IAAI,UAAU,CAAA;IACtB,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAgCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAuC/D"}
1
+ {"version":3,"file":"themeStore.d.ts","sourceRoot":"","sources":["../src/themeStore.ts"],"names":[],"mappings":"AAqDA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEnD,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAEzF,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,IAAI,EAAE,SAAS,CAAA;IACf,oEAAoE;IACpE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAA;IAC1B,sDAAsD;IACtD,MAAM,EAAE,SAAS,CAAA;IACjB,uFAAuF;IACvF,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;IACzC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,IAAI,UAAU,CAAA;IACd,yEAAyE;IACzE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1C,yDAAyD;IACzD,QAAQ,IAAI,UAAU,CAAA;IACtB,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAqCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAiF/D"}