@unisim/sdk 0.123.4 → 0.124.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 (48) hide show
  1. package/README.md +103 -6
  2. package/android/build.gradle +59 -0
  3. package/android/src/main/AndroidManifest.xml +88 -0
  4. package/android/src/main/java/uk/co/unisim/sdk/SuiteAuthProvider.java +107 -0
  5. package/android/src/main/java/uk/co/unisim/sdk/SuiteAuthStore.java +179 -0
  6. package/android/src/main/java/uk/co/unisim/sdk/UnisimSuiteAuthPlugin.java +214 -0
  7. package/dist/ChangelogMenu.js +7 -0
  8. package/dist/ChangelogMenu.js.map +1 -1
  9. package/dist/SuiteSwitcher.d.ts.map +1 -1
  10. package/dist/SuiteSwitcher.js +70 -4
  11. package/dist/SuiteSwitcher.js.map +1 -1
  12. package/dist/UniversalAppsNavBar.d.ts.map +1 -1
  13. package/dist/UniversalAppsNavBar.js +92 -6
  14. package/dist/UniversalAppsNavBar.js.map +1 -1
  15. package/dist/UniversalNavBar.d.ts +25 -3
  16. package/dist/UniversalNavBar.d.ts.map +1 -1
  17. package/dist/UniversalNavBar.js +144 -61
  18. package/dist/UniversalNavBar.js.map +1 -1
  19. package/dist/UserProfile.d.ts +108 -1
  20. package/dist/UserProfile.d.ts.map +1 -1
  21. package/dist/UserProfile.js +147 -78
  22. package/dist/UserProfile.js.map +1 -1
  23. package/dist/i18n.d.ts.map +1 -1
  24. package/dist/i18n.js +7 -0
  25. package/dist/i18n.js.map +1 -1
  26. package/dist/index.d.ts +5 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +6 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/provider.d.ts.map +1 -1
  31. package/dist/provider.js +94 -1
  32. package/dist/provider.js.map +1 -1
  33. package/dist/sessionStorage.d.ts +25 -7
  34. package/dist/sessionStorage.d.ts.map +1 -1
  35. package/dist/sessionStorage.js +49 -15
  36. package/dist/sessionStorage.js.map +1 -1
  37. package/dist/suiteApps.d.ts +66 -0
  38. package/dist/suiteApps.d.ts.map +1 -0
  39. package/dist/suiteApps.js +168 -0
  40. package/dist/suiteApps.js.map +1 -0
  41. package/dist/types.d.ts +1 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/unisimMark.d.ts +1 -1
  44. package/dist/unisimMark.d.ts.map +1 -1
  45. package/dist/unisimMark.js +8 -5
  46. package/dist/unisimMark.js.map +1 -1
  47. package/ios/Sources/UnisimSuiteAuthPlugin/UnisimSuiteAuthPlugin.swift +63 -1
  48. package/package.json +8 -2
@@ -11,7 +11,7 @@ import { t } from './i18n.js';
11
11
  import { useLanguage, useUniversal } from './provider.js';
12
12
  import { useUser } from './auth.js';
13
13
  import { useProfile } from './profile.js';
14
- import { UserProfile } from './UserProfile.js';
14
+ import { PROFILE_PILL_LABEL_COST, PROFILE_PILL_LABEL_FONT, PROFILE_PILL_LABEL_MAX, UserProfile, } from './UserProfile.js';
15
15
  import { SignInDialog } from './SignInDialog.js';
16
16
  import { useSubscription } from './subscription.js';
17
17
  // ──────────────────────────────────────────────────────────────────────────────
@@ -138,10 +138,8 @@ showLanguageSelector = true, products = DEFAULT_UNIVERSAL_APPS_PRODUCTS, portalH
138
138
  ? undefined
139
139
  : firstNameOf(profile?.display_name ?? undefined) ?? firstNameFromEmail(user?.email ?? undefined);
140
140
  const identityLabel = noAccounts ? undefined : greetedLabel(greeting, firstName, signedOut);
141
- // The bar is already carrying the product identity on the left and the suite
142
- // switcher beside it; below the mobile breakpoint a label as well pushes the
143
- // right cluster into the product name, so it drops back to the plain circle.
144
- const profileLabel = actions || isMobile ? undefined : identityLabel;
141
+ // Whether it is SHOWN on a phone is decided further down, once the refs the
142
+ // measurement needs exist (see `labelFits`).
145
143
  // The centred "100% free · open source" claim needs clear room either side
146
144
  // of the left identity cluster and the right changelog icon, so it only
147
145
  // shows once the bar is comfortably wide (hidden on tablet + mobile).
@@ -192,6 +190,81 @@ showLanguageSelector = true, products = DEFAULT_UNIVERSAL_APPS_PRODUCTS, portalH
192
190
  window.removeEventListener('resize', measure);
193
191
  };
194
192
  }, [showClaim]);
193
+ // ── Does the greeting fit on a phone? ───────────────────────────────────
194
+ // It used to be a flat `isMobile ? undefined : label` — the bar carries the
195
+ // product identity and the suite switcher on the left, and a label as well
196
+ // pushed the right cluster into the product name. But that dropped the
197
+ // greeting on EVERY phone, including the ones with room to spare: the mobile
198
+ // wordmark is the compact "UNIVERSAL / PDF" lockup, which leaves most of a
199
+ // 390px row empty. Owner's ask, 2026-08-30: show it "if space".
200
+ //
201
+ // So measure, don't guess. `probeRef` renders the exact label text off-screen
202
+ // in the pill's own typography — the width of a string in Inter at 13px/600
203
+ // is not something to estimate, and the label is a rotating greeting in one
204
+ // of eight languages joined to an arbitrary first name.
205
+ //
206
+ // ⚠️ Never on an app that fills the `centre` slot. That slot is `flex: 1 1
207
+ // auto`, so it swallows exactly the free space this measures — the gap
208
+ // between the identity and the controls would read as wide open while the
209
+ // room actually belongs to the app's own controls, and the label would push
210
+ // them off centre. A phone with a centre toolbar has no space to offer.
211
+ const probeRef = useRef(null);
212
+ const showLabelOnMobile = isMobile && !actions && !centre && !!identityLabel;
213
+ const [labelFits, setLabelFits] = useState(false);
214
+ // Read inside `measure` rather than closed over, so the callback the
215
+ // ResizeObserver holds always sees the state the box it just measured is in.
216
+ const labelShownRef = useRef(false);
217
+ useEffect(() => {
218
+ if (!showLabelOnMobile) {
219
+ setLabelFits(false);
220
+ return;
221
+ }
222
+ // Slack the row must keep between the identity and the controls. Also
223
+ // absorbs the couple of pixels of slop in PROFILE_PILL_LABEL_COST.
224
+ const CLEARANCE = 12;
225
+ function measure() {
226
+ const probe = probeRef.current;
227
+ const left = identityRef.current;
228
+ const right = rightClusterRef.current;
229
+ if (!probe || !left || !right)
230
+ return;
231
+ const cost = Math.min(probe.getBoundingClientRect().width, PROFILE_PILL_LABEL_MAX)
232
+ + PROFILE_PILL_LABEL_COST;
233
+ // ⚠️ Normalised to the label-HIDDEN geometry, which is what makes this
234
+ // converge instead of flapping. Showing the label moves the cluster's
235
+ // left edge in by `cost` (or, once the identity is being squeezed, eats
236
+ // the same width out of the product name and pins the gap at ~0), so a
237
+ // raw gap measured while it is up would say "no room" and hiding it
238
+ // would immediately say "room" again — the classic resize oscillation.
239
+ // Adding the cost back when it is up asks the one question that has a
240
+ // stable answer: how much room is there when it is DOWN?
241
+ const gap = right.getBoundingClientRect().left - left.getBoundingClientRect().right;
242
+ setLabelFits(gap + (labelShownRef.current ? cost : 0) >= cost + CLEARANCE);
243
+ }
244
+ measure();
245
+ const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(measure) : null;
246
+ if (ro) {
247
+ // The cluster resizes when the label goes up or down, which is the second
248
+ // pass that settles the answer; the header and identity cover a rotation,
249
+ // a split-screen resize and a host that reflows the bar's container.
250
+ if (headerRef.current)
251
+ ro.observe(headerRef.current);
252
+ if (identityRef.current)
253
+ ro.observe(identityRef.current);
254
+ if (rightClusterRef.current)
255
+ ro.observe(rightClusterRef.current);
256
+ }
257
+ window.addEventListener('resize', measure);
258
+ return () => {
259
+ ro?.disconnect();
260
+ window.removeEventListener('resize', measure);
261
+ };
262
+ // `identityLabel` is a dependency because the text width is: the greeting
263
+ // rotates per load, and the first name arrives after the profile does.
264
+ }, [showLabelOnMobile, identityLabel, useContentContainer]);
265
+ const showLabel = showLabelOnMobile ? labelFits : !actions;
266
+ const profileLabel = showLabel ? identityLabel : undefined;
267
+ labelShownRef.current = !!profileLabel;
195
268
  const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
196
269
  const mobileHeaderRef = useRef(null);
197
270
  useEffect(() => {
@@ -296,7 +369,7 @@ showLanguageSelector = true, products = DEFAULT_UNIVERSAL_APPS_PRODUCTS, portalH
296
369
  // Undefined whenever `actions` is set, so the merged pill keeps saying
297
370
  // "Actions" — see the profile-pill-label block above.
298
371
  actionsLabel: profileLabel, showLanguageSelector: showLanguageSelector, theme: theme }), _jsx(ChangelogMenu, { iconSrc: suiteSwitcherIconSrc, theme: theme })] }));
299
- return (_jsxs("div", { className: className, style: { ...(sticky ? stickyWrapperStyle(theme) : null), ...style }, children: [showBrandStrip && _jsx(UniversalBar, {}), _jsxs("div", { style: { ...headerOuterStyle(theme), position: 'relative' }, children: [_jsxs("header", { ref: headerRef, className: contentClassName, style: useContentContainer
372
+ return (_jsxs("div", { className: className, style: { ...(sticky ? stickyWrapperStyle(theme) : null), ...style }, children: [showBrandStrip && _jsx(UniversalBar, {}), _jsxs("div", { style: { ...headerOuterStyle(theme), position: 'relative' }, children: [showLabelOnMobile && (_jsx("span", { ref: probeRef, "aria-hidden": true, style: labelProbeStyle, children: identityLabel })), _jsxs("header", { ref: headerRef, className: contentClassName, style: useContentContainer
300
373
  ? { ...contentHeaderInnerStyle, gap: isMobile ? 6 : 8 }
301
374
  : { ...(isMobile ? mobileHeaderInnerStyle : headerInnerStyle), maxWidth }, children: [identityBlock, centre && _jsx("div", { style: centreSlotStyle, children: centre }), useContentContainer && rightCluster] }), showClaim && githubHref && (_jsxs("a", { ref: claimRef, href: githubHref, target: "_blank", rel: "noreferrer", style: {
302
375
  ...brandClaimStyle,
@@ -482,6 +555,19 @@ const identityLinkStyle = {
482
555
  // controls sit centred between the identity and the right cluster, and gives up
483
556
  // that slack first when the bar narrows — minWidth:0 lets the host's own
484
557
  // overflow handling (scroll, or Tailwind's responsive hiding) take over.
558
+ // The off-screen probe that answers "would this label fit?". Absolute so it
559
+ // costs the row nothing, `visibility: hidden` rather than unmounted so it still
560
+ // has a box to measure, and no maxWidth — the whole point is the label's
561
+ // natural width, which the caller then clamps to PROFILE_PILL_LABEL_MAX.
562
+ const labelProbeStyle = {
563
+ ...PROFILE_PILL_LABEL_FONT,
564
+ position: 'absolute',
565
+ top: 0,
566
+ left: 0,
567
+ visibility: 'hidden',
568
+ pointerEvents: 'none',
569
+ whiteSpace: 'nowrap',
570
+ };
485
571
  const centreSlotStyle = {
486
572
  flex: '1 1 auto',
487
573
  display: 'flex',
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalAppsNavBar.js","sourceRoot":"","sources":["../src/UniversalAppsNavBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalAppsNavBar.js","sourceRoot":"","sources":["../src/UniversalAppsNavBar.tsx"],"names":[],"mappings":"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"}
@@ -9,12 +9,20 @@ export interface UniversalNavBarProps {
9
9
  /**
10
10
  * ICON-ONLY version of the mark, for the phone bar.
11
11
  *
12
- * ⚠️ Pass this and the SDK draws the product name for you on a phone —
12
+ * ⚠️ **Every Assess product is expected to pass this.** It is what makes the
13
+ * phone bar read "<Product> ASSESS" instead of the product's own wordmark
14
+ * over the "Universal Simulation" byline it ships in `productLogo` (owner's
15
+ * ask, 2026-08-30: "for all assess mobile apps I would like it to read [App]
16
+ * Assess, instead of the universal simulation").
17
+ *
18
+ * Pass this and the SDK draws the product name for you on a phone —
13
19
  * **Cyber** with a small **ASSESS** under it — in place of `productLogo`.
14
20
  * Without it the phone bar keeps `productLogo` exactly as it is and draws no
15
21
  * name, because every Assess product's logo has its own wordmark baked in and
16
- * rendering both printed "Cyber Cyber ASSESS". So this is opt-in per product,
17
- * and an app that has not been updated is unchanged rather than broken.
22
+ * rendering both printed "Cyber Cyber ASSESS". It stays technically optional
23
+ * for exactly that reason — an app that has not been updated is unchanged
24
+ * rather than broken — but "not updated" now means "still showing the wrong
25
+ * thing", not "fine as it is".
18
26
  *
19
27
  * The Universal Apps bar settled this the other way round: `productLogo` there
20
28
  * is icon-only by contract and the SDK always draws the name. This bar cannot
@@ -159,6 +167,20 @@ export interface UniversalNavBarProps {
159
167
  * │ [Logo] for [Icon] [Org] New Assessment · KB · My Company │
160
168
  * │ · ⚙ · 👤 · ⊞ │
161
169
  * └──────────────────────────────────────────────────────────────────────┘
170
+ *
171
+ * On a phone it is ONE row, in this order (owner's ask, 2026-08-30):
172
+ * ┌──────────────────────────────────────────────────────────────────────┐
173
+ * │ [Mark] Workplace/ASSESS ⌄ [Company] [ Actions ⌄ (face) ] ⊞ │
174
+ * └──────────────────────────────────────────────────────────────────────┘
175
+ * — the product's own name where "Universal Simulation" used to be, the
176
+ * company's logo alone (no "for", no company name, and nothing at all when
177
+ * there is no company), then the controls. Nothing lives under the bar.
178
+ *
179
+ * The Actions pill carries the signed-in user's face (photo → initials →
180
+ * rotating suite figure), the same `<ProfileAvatar />` the profile menu inside
181
+ * the panel draws. On a phone narrower than 360px that also has a company tile
182
+ * on the bar the word "Actions" drops and the pill is chevron + face, so the
183
+ * product name keeps its room — see `showPillLabel`.
162
184
  */
163
185
  export declare function UniversalNavBar({ product, productLogo, productMark, companyLabel, companyIconUrl, newAssessmentHref, newAssessmentLabel, knowledgeBase, settingsHref, user, profileExtras, showLanguageSelector, versionChip, suiteSwitcherIconSrc, showBrandStrip, theme, hubLoginHref, contentMaxWidth, className, style, }: UniversalNavBarProps): import("react/jsx-runtime").JSX.Element;
164
186
  //# sourceMappingURL=UniversalNavBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalNavBar.d.ts","sourceRoot":"","sources":["../src/UniversalNavBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGvF,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAarE,MAAM,WAAW,oBAAoB;IAEnC,2EAA2E;IAC3E,OAAO,EAAE,cAAc,CAAA;IACvB;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,2EAA2E;IAC3E,WAAW,EAAE,SAAS,CAAA;IAGtB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAG9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,kFAAkF;IAClF,aAAa,CAAC,EAAE;QACd,YAAY,CAAC,EAAG,iBAAiB,EAAE,CAAA;QACnC,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAG,MAAM,CAAA;QACtB,YAAY,CAAC,EAAG,iBAAiB,EAAE,CAAA;QACnC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IAGD;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAE9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAA;IAEzB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IAEvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAA;IAEhB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAGjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAM,aAAa,CAAA;CAC1B;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAA0B,EAC1B,kBAAkB,EAClB,aAAa,EACb,YAA0B,EAC1B,IAAI,EACJ,aAAa,EACb,oBAA2B,EAC3B,WAAW,EACX,oBAAoB,EACpB,cAAqB,EACrB,KAAe,EACf,YAA+C,EAC/C,eAAsB,EACtB,SAAS,EACT,KAAK,GACN,EAAE,oBAAoB,2CAuQtB"}
1
+ {"version":3,"file":"UniversalNavBar.d.ts","sourceRoot":"","sources":["../src/UniversalNavBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGvF,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAmD,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAazG,MAAM,WAAW,oBAAoB;IAEnC,2EAA2E;IAC3E,OAAO,EAAE,cAAc,CAAA;IACvB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,2EAA2E;IAC3E,WAAW,EAAE,SAAS,CAAA;IAGtB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAG9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,kFAAkF;IAClF,aAAa,CAAC,EAAE;QACd,YAAY,CAAC,EAAG,iBAAiB,EAAE,CAAA;QACnC,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAG,MAAM,CAAA;QACtB,YAAY,CAAC,EAAG,iBAAiB,EAAE,CAAA;QACnC,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IAGD;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAE9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAA;IAEzB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IAEvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAA;IAEhB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAGjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAM,aAAa,CAAA;CAC1B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAA0B,EAC1B,kBAAkB,EAClB,aAAa,EACb,YAA0B,EAC1B,IAAI,EACJ,aAAa,EACb,oBAA2B,EAC3B,WAAW,EACX,oBAAoB,EACpB,cAAqB,EACrB,KAAe,EACf,YAA+C,EAC/C,eAAsB,EACtB,SAAS,EACT,KAAK,GACN,EAAE,oBAAoB,2CAkXtB"}
@@ -7,7 +7,7 @@ import { SuiteSwitcher, DEFAULT_APP_GROUPS, DEFAULT_SUITE_PRODUCTS, } from './Su
7
7
  import { UniversalBar } from './UniversalBar.js';
8
8
  import { BAR } from './barTheme.js';
9
9
  import { KnowledgeBaseMenu } from './KnowledgeBaseMenu.js';
10
- import { UserProfile } from './UserProfile.js';
10
+ import { PROFILE_PILL_AVATAR, ProfileAvatar, UserProfile } from './UserProfile.js';
11
11
  import { useOrg, useUser } from './auth.js';
12
12
  import { useOrgBranding } from './branding.js';
13
13
  import { firstNameFromEmail, firstNameOf, greetedLabel, useRotatingGreeting } from './greeting.js';
@@ -31,6 +31,20 @@ import { useSubscription } from './subscription.js';
31
31
  * │ [Logo] for [Icon] [Org] New Assessment · KB · My Company │
32
32
  * │ · ⚙ · 👤 · ⊞ │
33
33
  * └──────────────────────────────────────────────────────────────────────┘
34
+ *
35
+ * On a phone it is ONE row, in this order (owner's ask, 2026-08-30):
36
+ * ┌──────────────────────────────────────────────────────────────────────┐
37
+ * │ [Mark] Workplace/ASSESS ⌄ [Company] [ Actions ⌄ (face) ] ⊞ │
38
+ * └──────────────────────────────────────────────────────────────────────┘
39
+ * — the product's own name where "Universal Simulation" used to be, the
40
+ * company's logo alone (no "for", no company name, and nothing at all when
41
+ * there is no company), then the controls. Nothing lives under the bar.
42
+ *
43
+ * The Actions pill carries the signed-in user's face (photo → initials →
44
+ * rotating suite figure), the same `<ProfileAvatar />` the profile menu inside
45
+ * the panel draws. On a phone narrower than 360px that also has a company tile
46
+ * on the bar the word "Actions" drops and the pill is chevron + face, so the
47
+ * product name keeps its room — see `showPillLabel`.
34
48
  */
35
49
  export function UniversalNavBar({ product, productLogo, productMark, companyLabel, companyIconUrl, newAssessmentHref = '/new', newAssessmentLabel, knowledgeBase, settingsHref = '/settings', user, profileExtras, showLanguageSelector = true, versionChip, suiteSwitcherIconSrc, showBrandStrip = true, theme = 'light', hubLoginHref = 'https://app.unisim.co.uk/login', contentMaxWidth = 1280, className, style, }) {
36
50
  // ── Company label + icon ────────────────────────────────────────────────
@@ -79,6 +93,17 @@ export function UniversalNavBar({ product, productLogo, productMark, companyLabe
79
93
  const isCompact = useMobile(1024);
80
94
  // ── Mobile ─────────────────────────────────────────────────────────────
81
95
  const isMobile = useMobile();
96
+ // The pill grew an avatar (see the Actions button below), which costs the row
97
+ // ~39px it did not have to spare at 320px — the narrowest phone worth
98
+ // designing for. See `showPillLabel` below for what gives way.
99
+ //
100
+ // Two floors, because the identity slot has two shapes. A product that passes
101
+ // `productMark` gets the compact "Cyber / ASSESS" lockup (~144px) and the row
102
+ // is comfortable from ~355px. A caller that does NOT — today that is the hub,
103
+ // whose bar carries a full "Universal Simulation" wordmark — needs about 50px
104
+ // more before the same pill fits, and its wordmark has no ellipsis to give:
105
+ // `mobileLeftStyle` would simply clip it mid-word.
106
+ const isNarrowPhone = useMobile(productMark ? 360 : 430);
82
107
  const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
83
108
  const mobileHeaderRef = useRef(null);
84
109
  useEffect(() => {
@@ -104,36 +129,57 @@ export function UniversalNavBar({ product, productLogo, productMark, companyLabe
104
129
  document.removeEventListener('keydown', onKey);
105
130
  };
106
131
  }, [mobileMenuOpen]);
132
+ /**
133
+ * The company on a phone: the LOGO, and only the logo.
134
+ *
135
+ * ⚠️ Owner's ask, 2026-08-30 (second pass): "just the company logo (if
136
+ * exists) then the rest — every assess app all the nav on one line". The
137
+ * first pass had moved "for [icon] [Org]" to a thin strip UNDER the bar
138
+ * because the words would not fit beside the controls at 390px. The words
139
+ * were the problem, not the mark: dropping "for" and the org name leaves a
140
+ * 30px tile that fits on the row with the product name and the controls, so
141
+ * the bar is one line again and nothing is pushed off it.
142
+ *
143
+ * "If exists" is literal — an anonymous session has no company, and the "·"
144
+ * placeholder tile the desktop bar shows in that case is noise on a phone, so
145
+ * nothing is rendered at all. The company's NAME still has a home: it is the
146
+ * "My Company" row inside the Actions panel.
147
+ *
148
+ * The tile carries the name as its accessible label, so a screen reader and a
149
+ * long-press still say which company you are working in.
150
+ */
151
+ const hasCompany = !!(resolvedIconUrl || companyLabel || org?.name);
152
+ const mobileCompanyBadge = hasCompany ? (_jsx("span", { role: "img", "aria-label": resolvedCompany, title: resolvedCompany, style: mobileCompanyBadgeStyle, children: _jsx(CompanyBadge, { iconUrl: resolvedIconUrl, initial: (resolvedCompany[0] ?? '?').toUpperCase(), iconBg: iconBg, hasOrg: true, theme: theme, size: 30 }) })) : null;
153
+ /**
154
+ * Does the Actions pill keep its WORD on this phone?
155
+ *
156
+ * Measured, not guessed: at 390px the row is 144px of identity + 169px of
157
+ * controls + 42px of padding and gap, so the full pill fits from about 355px
158
+ * up. Below that something has to give, and it is the label rather than the
159
+ * product name — "Actions" is the one thing in that row a chevron and a face
160
+ * already say between them, while the product name is the only thing on the
161
+ * bar that says which app you are in. The button keeps its aria-label either
162
+ * way, so a screen reader hears the same control at every width.
163
+ *
164
+ * The company tile is exactly the ~32px that tips it over, so a phone with no
165
+ * company on the bar keeps the word all the way down to 320.
166
+ */
167
+ const showPillLabel = !isNarrowPhone || !hasCompany;
107
168
  // ── Shared left-side identity block ────────────────────────────────────
108
169
  // Since SDK 0.6.0 the suite-switcher dropdown attaches here, around the
109
170
  // product logo. Hover/focus opens the dropdown; clicks inside the logo's
110
171
  // own <a> (e.g. clicking the wordmark to go home) still navigate as
111
172
  // before. A small ▾ chevron sits next to the logo so the affordance is
112
173
  // visible.
113
- // ⚠️ On a phone the identity is the PRODUCT ONLY. The "for [icon] [Org]"
114
- // half moves to its own strip under the bar (`companyStrip` below) — see the
115
- // note there for why. Above the breakpoint nothing changes: the desktop row
116
- // has always had room for both, and it is the layout six products' users
117
- // know.
118
- const identityBlock = (_jsxs("div", { style: leftStyle, children: [_jsxs(SuiteSwitcher, { current: product, align: "left", appGroups: DEFAULT_APP_GROUPS, hideOtherProducts: signedOut, disableOpen: signedOut, iconSrc: suiteSwitcherIconSrc, theme: theme, children: [isMobile && productMark ? productMark : productLogo, isMobile && productMark && _jsx(ProductLockup, { product: product, theme: theme })] }), !isMobile && (_jsxs(_Fragment, { children: [_jsx("span", { style: separatorStyle(theme), "aria-hidden": true, children: "\u00B7" }), _jsx("span", { style: { color: BAR[theme].faint, marginRight: 6 }, children: t(language, 'nav.for') }), _jsx(CompanyBadge, { iconUrl: resolvedIconUrl, initial: initial, iconBg: iconBg, hasOrg: !!org, theme: theme }), _jsx("span", { style: companyLabelStyle, children: _jsx("span", { style: { color: org?.name ? BAR[theme].text : BAR[theme].faint }, children: resolvedCompany }) })] }))] }));
119
- /**
120
- * The company, on its own thin line under the bar — phone only.
121
- *
122
- * ⚠️ This is the whole point of the mobile change (owner's ask, 2026-08-30).
123
- * The bar was carrying the product mark, a separator, the word "for", a
124
- * company badge, the company name AND a hamburger across 390px, and it did
125
- * not fit: measured in Risk Assess the hamburger sat ON TOP of "Your
126
- * Company". Something had to leave the row, and the company is the half that
127
- * does not change while you use the app — so it gets a quiet strip of its own
128
- * rather than competing for the same 390px as the controls.
129
- *
130
- * Same move BlackBook's footer made on a phone, for the same reason: two
131
- * things fighting over one strip, and the one that is not a control loses.
132
- */
133
- const companyStrip = (_jsxs("div", { style: companyStripStyle(theme), children: [_jsx(CompanyBadge, { iconUrl: resolvedIconUrl, initial: initial, iconBg: iconBg, hasOrg: !!org, theme: theme }), _jsxs("span", { style: companyStripLabelStyle, children: [_jsxs("span", { style: { color: BAR[theme].faint }, children: [t(language, 'nav.for'), " "] }), _jsx("span", { style: { color: org?.name ? BAR[theme].text : BAR[theme].faint }, children: resolvedCompany })] })] }));
174
+ // ⚠️ On a phone the identity is the PRODUCT NAME plus the company's LOGO
175
+ // ALONE — no separator, no "for", no company name. See `mobileCompanyBadge`
176
+ // above. Above the breakpoint nothing changes: the desktop row has always had
177
+ // room for the full "· for [icon] [Org]" lockup, and it is the layout six
178
+ // products' users know.
179
+ const identityBlock = (_jsxs("div", { style: isMobile ? mobileLeftStyle : leftStyle, children: [_jsxs(SuiteSwitcher, { current: product, align: "left", appGroups: DEFAULT_APP_GROUPS, iconSrc: suiteSwitcherIconSrc, theme: theme, style: isMobile ? { minWidth: 0 } : undefined, children: [isMobile && productMark ? productMark : productLogo, isMobile && productMark && _jsx(ProductLockup, { product: product, theme: theme })] }), isMobile && mobileCompanyBadge, !isMobile && (_jsxs(_Fragment, { children: [_jsx("span", { style: separatorStyle(theme), "aria-hidden": true, children: "\u00B7" }), _jsx("span", { style: { color: BAR[theme].faint, marginRight: 6 }, children: t(language, 'nav.for') }), _jsx(CompanyBadge, { iconUrl: resolvedIconUrl, initial: initial, iconBg: iconBg, hasOrg: !!org, theme: theme }), _jsx("span", { style: companyLabelStyle, children: _jsx("span", { style: { color: org?.name ? BAR[theme].text : BAR[theme].faint }, children: resolvedCompany }) })] }))] }));
134
180
  return (_jsxs("div", { className: className, style: style, children: [showBrandStrip && _jsx(UniversalBar, {}), isMobile ? (
135
181
  // ── Mobile layout ─────────────────────────────────────────────────
136
- _jsxs("div", { ref: mobileHeaderRef, style: { ...headerOuterStyle(theme), position: 'relative' }, children: [_jsxs("header", { style: mobileHeaderInnerStyle, children: [identityBlock, _jsxs("div", { style: mobileActionsRowStyle, children: [_jsxs("button", { type: "button", "aria-label": mobileMenuOpen ? t(language, 'nav.menu_close') : t(language, 'nav.menu_open'), "aria-expanded": mobileMenuOpen, "aria-controls": "universal-mobile-menu", onClick: () => setMobileMenuOpen((v) => !v), style: actionsPillStyle(theme), children: [_jsx("span", { children: t(language, 'profile.actions') }), _jsx(Chevron, { open: mobileMenuOpen })] }), _jsx(ChangelogMenu, { iconSrc: suiteSwitcherIconSrc, theme: theme })] })] }), companyStrip, _jsxs("div", { id: "universal-mobile-menu", role: "navigation", "aria-label": t(language, 'nav.menu_primary'), style: mobilePanelStyle(mobileMenuOpen, theme), children: [newAssessmentHref && (_jsx("a", { href: newAssessmentHref, style: mobileLinkRowStyle(theme), onClick: () => setMobileMenuOpen(false), children: newAssessmentLabel ?? t(language, 'nav.new_assessment') })), knowledgeBase && (_jsx("div", { style: mobileMenuWrapStyle(theme), children: _jsx(KnowledgeBaseMenu, { productItems: knowledgeBase.productItems, productKBHref: knowledgeBase.productKBHref, productLabel: knowledgeBase.productLabel, companyItems: knowledgeBase.companyItems, companyKBHref: knowledgeBase.companyKBHref, style: { display: 'block' }, triggerStyle: mobileMenuTriggerStyle(theme), theme: theme }) })), _jsx("div", { style: mobileMenuWrapStyle(theme), children: _jsx(CompanyMenu, { style: { display: 'block' }, triggerStyle: mobileMenuTriggerStyle(theme), theme: theme }) }), _jsx("div", { style: mobileDividerStyle(theme) }), _jsx("div", { style: mobileIconRowStyle, children: _jsx(UserProfile, { ...resolvedUser, appSettingsHref: resolvedUser.appSettingsHref ?? settingsHref, extras: resolvedUser.extras ?? profileExtras, showLanguageSelector: showLanguageSelector, menuAlign: "left", actionsLabel: profileLabel, tier: subscription?.tier, theme: theme }) })] })] })) : (
182
+ _jsxs("div", { ref: mobileHeaderRef, style: { ...headerOuterStyle(theme), position: 'relative' }, children: [_jsxs("header", { style: mobileHeaderInnerStyle, children: [identityBlock, _jsxs("div", { style: mobileActionsRowStyle, children: [_jsxs("button", { type: "button", "aria-label": mobileMenuOpen ? t(language, 'nav.menu_close') : t(language, 'nav.menu_open'), "aria-expanded": mobileMenuOpen, "aria-controls": "universal-mobile-menu", onClick: () => setMobileMenuOpen((v) => !v), style: actionsPillStyle(theme, mobileMenuOpen, showPillLabel), children: [showPillLabel && _jsx("span", { style: actionsPillLabelStyle, children: t(language, 'profile.actions') }), _jsx(Chevron, { open: mobileMenuOpen }), _jsx(ProfileAvatar, { photoUrl: resolvedUser.photoUrl, name: resolvedUser.name, initials: resolvedUser.initials, size: PROFILE_PILL_AVATAR, theme: theme })] }), _jsx(ChangelogMenu, { iconSrc: suiteSwitcherIconSrc, theme: theme })] })] }), _jsxs("div", { id: "universal-mobile-menu", role: "navigation", "aria-label": t(language, 'nav.menu_primary'), style: mobilePanelStyle(mobileMenuOpen, theme), children: [newAssessmentHref && (_jsx("a", { href: newAssessmentHref, style: mobileLinkRowStyle(theme), onClick: () => setMobileMenuOpen(false), children: newAssessmentLabel ?? t(language, 'nav.new_assessment') })), knowledgeBase && (_jsx("div", { style: mobileMenuWrapStyle(theme), children: _jsx(KnowledgeBaseMenu, { productItems: knowledgeBase.productItems, productKBHref: knowledgeBase.productKBHref, productLabel: knowledgeBase.productLabel, companyItems: knowledgeBase.companyItems, companyKBHref: knowledgeBase.companyKBHref, style: { display: 'block' }, triggerStyle: mobileMenuTriggerStyle(theme), theme: theme }) })), _jsx("div", { style: mobileMenuWrapStyle(theme), children: _jsx(CompanyMenu, { style: { display: 'block' }, triggerStyle: mobileMenuTriggerStyle(theme), theme: theme }) }), _jsx("div", { style: mobileAccountStyle(theme), children: _jsx(UserProfile, { ...resolvedUser, inline: true, onClose: () => setMobileMenuOpen(false), appSettingsHref: resolvedUser.appSettingsHref ?? settingsHref, extras: resolvedUser.extras ?? profileExtras, showLanguageSelector: showLanguageSelector, tier: subscription?.tier, theme: theme }) })] })] })) : (
137
183
  // ── Desktop layout ────────────────────────────────────────────────
138
184
  // The ChangelogMenu is intentionally lifted out of the inner row and
139
185
  // pinned to the viewport's right edge (outside the maxWidth content
@@ -229,12 +275,15 @@ function useMobile(breakpoint = 768) {
229
275
  // ──────────────────────────────────────────────────────────────────────────────
230
276
  // Subcomponents
231
277
  // ──────────────────────────────────────────────────────────────────────────────
232
- function CompanyBadge({ iconUrl, initial, iconBg, hasOrg, theme, }) {
278
+ function CompanyBadge({ iconUrl, initial, iconBg, hasOrg, theme, size = 38, }) {
233
279
  if (iconUrl) {
234
- return (_jsx("span", { style: iconImgWrapperStyle(theme), children: _jsx("img", { src: iconUrl, alt: "", "aria-hidden": true, style: iconImgStyle }) }));
280
+ return (_jsx("span", { style: { ...iconImgWrapperStyle(theme), width: size, height: size }, children: _jsx("img", { src: iconUrl, alt: "", "aria-hidden": true, style: iconImgStyle }) }));
235
281
  }
236
282
  return (_jsx("span", { style: {
237
283
  ...iconFallbackStyle,
284
+ width: size,
285
+ height: size,
286
+ fontSize: Math.round(size * 0.45),
238
287
  background: hasOrg ? iconBg : BAR[theme].iconFallbackBg,
239
288
  color: hasOrg ? readableTextOn(iconBg) : BAR[theme].iconFallbackText,
240
289
  }, "aria-hidden": true, children: hasOrg ? initial : '·' }));
@@ -288,6 +337,20 @@ const leftStyle = {
288
337
  minWidth: 0,
289
338
  flexShrink: 0,
290
339
  };
340
+ /**
341
+ * The same block on a phone, but allowed to SHRINK.
342
+ *
343
+ * ⚠️ `flexShrink: 0` is what let the identity overrun the controls on a narrow
344
+ * phone in the first place — the row could not give anywhere, so the hamburger
345
+ * ended up drawn on top of the company name. Now the product name is the one
346
+ * elastic thing in the row: it ellipsises (see `lockupNameStyle`) and every
347
+ * control keeps its full width.
348
+ */
349
+ const mobileLeftStyle = {
350
+ ...leftStyle,
351
+ flexShrink: 1,
352
+ overflow: 'hidden',
353
+ };
291
354
  const separatorStyle = (theme) => ({
292
355
  color: BAR[theme].separator,
293
356
  fontSize: 12,
@@ -446,52 +509,70 @@ const mobileActionsRowStyle = {
446
509
  gap: 8,
447
510
  flexShrink: 0,
448
511
  };
449
- /** The Actions pill — the Apps bar's control, in the Assess bar. */
450
- const actionsPillStyle = (theme) => ({
512
+ /**
513
+ * The Actions pill — the Apps bar's control, in the Assess bar.
514
+ *
515
+ * Geometry copied from `UserProfile`'s combined pill deliberately: 38px tall so
516
+ * it lines up with the changelog mark beside it, and padded asymmetrically
517
+ * (13px under the label, 3px under the avatar) so the face keeps a visible ring
518
+ * of pill around it instead of being punched through the right edge. The two
519
+ * pills are the same control in two bars and should measure the same.
520
+ *
521
+ * `open` keeps it visibly pressed while the panel is down, so the chevron isn't
522
+ * the only thing saying the two belong together.
523
+ */
524
+ const actionsPillStyle = (theme, open, labelled) => ({
451
525
  display: 'inline-flex',
452
526
  alignItems: 'center',
453
- gap: 6,
527
+ gap: labelled ? 7 : 4,
454
528
  height: 38,
455
- padding: '0 12px',
529
+ // Asymmetric only while there IS a label to breathe: with the word gone the
530
+ // 13px would sit as dead space in front of the chevron and the pill would
531
+ // read as an empty box with a face pushed into one end.
532
+ padding: labelled ? '0 3px 0 13px' : '0 3px 0 8px',
456
533
  borderRadius: 999,
457
- border: `1px solid ${BAR[theme].buttonBorder}`,
458
- background: BAR[theme].buttonBg,
534
+ border: `1px solid ${open ? BAR[theme].hoverBorder : BAR[theme].buttonBorder}`,
535
+ background: open ? BAR[theme].hoverBg : BAR[theme].buttonBg,
459
536
  color: BAR[theme].link,
460
- fontSize: 14,
537
+ fontSize: 13,
461
538
  fontWeight: 600,
539
+ letterSpacing: '-0.01em',
462
540
  fontFamily: 'inherit',
463
541
  cursor: 'pointer',
464
542
  flexShrink: 0,
465
543
  whiteSpace: 'nowrap',
466
- transition: 'background 120ms, border-color 120ms',
544
+ transition: 'all 150ms cubic-bezier(0.16,1,0.3,1)',
467
545
  });
546
+ /** The word inside the pill. Matches `UserProfile`'s `pillLabelStyle`. */
547
+ const actionsPillLabelStyle = {
548
+ display: 'inline-block',
549
+ lineHeight: 1,
550
+ // The 13px label sits a hair low against the avatar's optical centre.
551
+ paddingTop: 1,
552
+ };
468
553
  /**
469
- * The company strip under the bar on a phone.
554
+ * The company logo's slot on the phone row.
470
555
  *
471
- * Quiet on purpose — it is context, not a control. It carries the bar's own
472
- * bottom border so the two read as one piece of chrome rather than as a bar
473
- * with a banner stuck under it.
556
+ * A little air to its left separates it from the product lockup without a
557
+ * divider — the two marks are different enough to read as two things. It never
558
+ * shrinks: it is a fixed 30px tile, and it is the product NAME that gives way
559
+ * (see `mobileLeftStyle`) when a long one meets a narrow phone.
474
560
  */
475
- const companyStripStyle = (theme) => ({
476
- display: 'flex',
561
+ const mobileCompanyBadgeStyle = {
562
+ display: 'inline-flex',
477
563
  alignItems: 'center',
478
- gap: 8,
479
- padding: '6px 16px 8px',
480
- background: BAR[theme].surface,
481
- borderBottom: `1px solid ${BAR[theme].border}`,
482
- fontSize: 12,
483
- minWidth: 0,
484
- });
485
- const companyStripLabelStyle = {
486
- minWidth: 0,
487
- overflow: 'hidden',
488
- textOverflow: 'ellipsis',
489
- whiteSpace: 'nowrap',
564
+ marginLeft: 2,
565
+ flexShrink: 0,
490
566
  };
491
567
  const mobileHeaderInnerStyle = {
492
568
  display: 'flex',
493
569
  alignItems: 'center',
494
570
  justifyContent: 'space-between',
571
+ // A hard floor between the identity and the controls. `space-between` alone
572
+ // only spaces them while there is slack, and the identity is now allowed to
573
+ // shrink into that slack — without a gap a long product name would ellipsise
574
+ // right up against the Actions pill.
575
+ gap: 10,
495
576
  padding: '10px 16px',
496
577
  minHeight: 56,
497
578
  boxSizing: 'border-box',
@@ -536,15 +617,17 @@ const mobileMenuTriggerStyle = (theme) => ({
536
617
  fontWeight: 500,
537
618
  color: BAR[theme].link,
538
619
  });
539
- const mobileDividerStyle = (theme) => ({
540
- height: 1,
541
- background: BAR[theme].rowBorder,
542
- margin: '2px 0',
620
+ /**
621
+ * The account section at the foot of the mobile panel.
622
+ *
623
+ * `UserProfile`'s own rows are denser than the nav rows above them (13px on
624
+ * 8×14 padding, against 15px on 14×20) and that is left alone on purpose: they
625
+ * are a different KIND of thing — what this app can do, then who you are — and
626
+ * the change of rhythm says so without needing a heading. The padding here is
627
+ * what keeps them off the panel's edges; the rule separates the two groups.
628
+ */
629
+ const mobileAccountStyle = (theme) => ({
630
+ borderTop: `1px solid ${BAR[theme].rowBorder}`,
631
+ padding: '6px 6px 8px',
543
632
  });
544
- const mobileIconRowStyle = {
545
- display: 'flex',
546
- alignItems: 'center',
547
- gap: 4,
548
- padding: '10px 16px 12px',
549
- };
550
633
  //# sourceMappingURL=UniversalNavBar.js.map