@unisim/sdk 0.123.3 → 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.
- package/README.md +103 -6
- package/android/build.gradle +59 -0
- package/android/src/main/AndroidManifest.xml +88 -0
- package/android/src/main/java/uk/co/unisim/sdk/SuiteAuthProvider.java +107 -0
- package/android/src/main/java/uk/co/unisim/sdk/SuiteAuthStore.java +179 -0
- package/android/src/main/java/uk/co/unisim/sdk/UnisimSuiteAuthPlugin.java +214 -0
- package/dist/ChangelogMenu.js +7 -0
- package/dist/ChangelogMenu.js.map +1 -1
- package/dist/SuiteSwitcher.d.ts.map +1 -1
- package/dist/SuiteSwitcher.js +70 -4
- package/dist/SuiteSwitcher.js.map +1 -1
- package/dist/UniversalAppsNavBar.d.ts.map +1 -1
- package/dist/UniversalAppsNavBar.js +101 -9
- package/dist/UniversalAppsNavBar.js.map +1 -1
- package/dist/UniversalNavBar.d.ts +25 -3
- package/dist/UniversalNavBar.d.ts.map +1 -1
- package/dist/UniversalNavBar.js +144 -61
- package/dist/UniversalNavBar.js.map +1 -1
- package/dist/UserProfile.d.ts +108 -1
- package/dist/UserProfile.d.ts.map +1 -1
- package/dist/UserProfile.js +147 -78
- package/dist/UserProfile.js.map +1 -1
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +7 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +94 -1
- package/dist/provider.js.map +1 -1
- package/dist/sessionStorage.d.ts +25 -7
- package/dist/sessionStorage.d.ts.map +1 -1
- package/dist/sessionStorage.js +49 -15
- package/dist/sessionStorage.js.map +1 -1
- package/dist/suiteApps.d.ts +66 -0
- package/dist/suiteApps.d.ts.map +1 -0
- package/dist/suiteApps.js +168 -0
- package/dist/suiteApps.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/unisimMark.d.ts +1 -1
- package/dist/unisimMark.d.ts.map +1 -1
- package/dist/unisimMark.js +8 -5
- package/dist/unisimMark.js.map +1 -1
- package/ios/Sources/UnisimSuiteAuthPlugin/UnisimSuiteAuthPlugin.swift +63 -1
- 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
|
-
//
|
|
142
|
-
//
|
|
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',
|
|
@@ -559,7 +645,7 @@ function ProductWordmark({ name, theme, compact, }) {
|
|
|
559
645
|
// The full name stays in the accessibility tree: the lockup is a visual
|
|
560
646
|
// abbreviation, and a screen reader announcing the shortened form would be
|
|
561
647
|
// reading the user a piece of layout.
|
|
562
|
-
_jsxs("span", { style: lockupStyle, "aria-label": name, children: [_jsx("span", { "aria-hidden": true, style: suiteEyebrowStyle(theme), children: "
|
|
648
|
+
_jsxs("span", { style: lockupStyle, "aria-label": name, children: [_jsx("span", { "aria-hidden": true, style: suiteEyebrowStyle(theme), children: "UNIVERSAL" }), _jsx("span", { "aria-hidden": true, style: { ...productNameStyle(theme), color: BAR[theme].claimAccent, lineHeight: 1.1 }, children: short })] }));
|
|
563
649
|
}
|
|
564
650
|
/**
|
|
565
651
|
* The suite globe, drawn small and in ONE colour.
|
|
@@ -603,8 +689,14 @@ const lockupStyle = {
|
|
|
603
689
|
lineHeight: 1.1,
|
|
604
690
|
};
|
|
605
691
|
/**
|
|
606
|
-
* The
|
|
607
|
-
*
|
|
692
|
+
* The first half of the product's own name, above the second.
|
|
693
|
+
*
|
|
694
|
+
* ⚠️ It said "UNI SIM" for one revision and that was wrong (owner, 2026-08-30:
|
|
695
|
+
* "should actually be UNIVERSAL"). UNI SIM is the *company*; the product is
|
|
696
|
+
* "Universal BlackBook". Splitting the real name across two lines is the same
|
|
697
|
+
* move the Assess bar makes with "Cyber" / "Assess" — the shared word small,
|
|
698
|
+
* the distinctive word large — so the pair reads as one name rather than as a
|
|
699
|
+
* company badge stuck above an unrelated word.
|
|
608
700
|
*
|
|
609
701
|
* ⚠️ 9px is deliberate and is NOT a form control, so the 16px iOS-zoom floor
|
|
610
702
|
* does not apply — that rule is scoped to input/textarea/select precisely so
|
|
@@ -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":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAsC,MAAM,OAAO,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EACL,aAAa,EACb,+BAA+B,EAC/B,kBAAkB,GAInB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,GAAG,EAAiB,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAClG,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,GACZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAiNnD,iFAAiF;AACjF,YAAY;AACZ,iFAAiF;AAEjF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,OAAO,EACP,WAAW,EACX,eAAe,EACf,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,GAAG,OAAO;AACf,0EAA0E;AAC1E,4EAA4E;AAC5E,+CAA+C;AAC/C,oBAAoB,GAAG,IAAI,EAC3B,QAAQ,GAAG,+BAA+B,EAC1C,UAAU,GAAG,iCAAiC,EAC9C,UAAU,GAAG,6CAA6C,EAC1D,YAAY,GAAG,gCAAgC,EAC/C,oBAAoB,EACpB,cAAc,GAAG,IAAI,EACrB,MAAM,GAAG,IAAI,EACb,eAAe,GAAG,IAAI,EACtB,gBAAgB,EAChB,SAAS,EACT,KAAK,GACoB;IACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAA;IAClC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAA;IAChD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAA;IACzD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAA;IACxD,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAA;IAE1C,0EAA0E;IAC1E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,WAAW,GAAI,OAAO,EAAE,IAAmC,EAAE,YAAY,KAAK,IAAI,CAAA;IACxF,MAAM,YAAY,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC;QAClD,CAAC,CAAE,EAAE,QAAQ,EAAE,GAAG,EAAY;QAC9B,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC;YACtB,iEAAiE;YACjE,qEAAqE;YACrE,qEAAqE;YACrE,yCAAyC;YACzC,CAAC,CAAC,CAAC,UAAU;gBACT,CAAC,CAAE,EAAY;gBACf,CAAC,CAAE;oBACC,uDAAuD;oBACvD,8DAA8D;oBAC9D,UAAU,EAAE,YAAY;oBACxB,aAAa,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;iBAC/B,CAAC;YAClB,CAAC,CAAC;gBACE,IAAI,EAAO,OAAO,EAAE,YAAY,IAAI,SAAS;gBAC7C,KAAK,EAAM,IAAI,CAAC,KAAK,IAAI,SAAS;gBAClC,QAAQ,EAAG,OAAO,EAAE,UAAU,IAAI,IAAI;gBACtC,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC;aAClD,CAAA;IACP,MAAM,QAAQ,GAAG,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,eAAe,CAAA;IAC/F,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,mBAAmB,GAAG,CAAC,CAAC,gBAAgB,CAAA;IAE9C,4EAA4E;IAC5E,2EAA2E;IAC3E,yEAAyE;IACzE,uEAAuE;IACvE,wDAAwD;IACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,IAAI,CAAA;IAEhE,uEAAuE;IACvE,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,QAAQ,CAAA;IACxE,MAAM,YAAY,GAAG,CAAC,GAAe,EAAE;QACrC,MAAM,MAAM,GAAe,kBAAkB;aAC1C,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,KAAK;YACL,WAAW,EAAE,QAAQ,KAAK,eAAe;YACzC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;SAC1D,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,MAAM;gBACb,kEAAkE;gBAClE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;gBAC/C,QAAQ,EAAE,IAAI;aACf,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,EAAE,CAAA;IAEJ,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAA;IAE5B,2EAA2E;IAC3E,0EAA0E;IAC1E,wEAAwE;IACxE,6EAA6E;IAC7E,0EAA0E;IAC1E,2EAA2E;IAC3E,4DAA4D;IAC5D,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,yBAAyB;IACzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,SAAS,GAAG,SAAS;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,CAAA;IACnG,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IAC3F,4EAA4E;IAC5E,6CAA6C;IAC7C,2EAA2E;IAC3E,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,0EAA0E;IAC1E,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IAC7C,2EAA2E;IAC3E,sEAAsE;IACtE,6EAA6E;IAC7E,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,SAAS,GAAS,MAAM,CAAc,IAAI,CAAC,CAAA;IACjD,MAAM,WAAW,GAAO,MAAM,CAAiB,IAAI,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAU,MAAM,CAAoB,IAAI,CAAC,CAAA;IACvD,MAAM,eAAe,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACpD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,MAAM,SAAS,GAAG,EAAE,CAAA;QACpB,SAAS,OAAO;YACd,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAA;YAC9B,MAAM,IAAI,GAAI,WAAW,CAAC,OAAO,CAAA;YACjC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;gBAAE,OAAM;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAA;YAC/C,MAAM,QAAQ,GAAI,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC9C,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAA;YAClE,kBAAkB,CAChB,QAAQ,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI;gBAC3C,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAC9D,CAAA;QACH,CAAC;QACD,OAAO,EAAE,CAAA;QACT,yEAAyE;QACzE,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,EAAE,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACrF,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,SAAS,CAAC,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACpD,IAAI,WAAW,CAAC,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC1D,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,GAAG,EAAE;YACV,EAAE,EAAE,UAAU,EAAE,CAAA;YAChB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,6EAA6E;IAC7E,2EAA2E;IAC3E,gEAAgE;IAChE,EAAE;IACF,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,wDAAwD;IACxD,EAAE;IACF,2EAA2E;IAC3E,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAA;IAC9C,MAAM,iBAAiB,GAAG,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,CAAA;IAC5E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,qEAAqE;IACrE,6EAA6E;IAC7E,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAM;QACR,CAAC;QACD,sEAAsE;QACtE,mEAAmE;QACnE,MAAM,SAAS,GAAG,EAAE,CAAA;QACpB,SAAS,OAAO;YACd,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAA;YAC9B,MAAM,IAAI,GAAI,WAAW,CAAC,OAAO,CAAA;YACjC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAA;YACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAM;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC;kBAC9E,uBAAuB,CAAA;YAC3B,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,sEAAsE;YACtE,yDAAyD;YACzD,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAA;YACnF,YAAY,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,CAAA;QAC5E,CAAC;QACD,OAAO,EAAE,CAAA;QACT,MAAM,EAAE,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACrF,IAAI,EAAE,EAAE,CAAC;YACP,0EAA0E;YAC1E,0EAA0E;YAC1E,qEAAqE;YACrE,IAAI,SAAS,CAAC,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACpD,IAAI,WAAW,CAAC,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,eAAe,CAAC,OAAO;gBAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAClE,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,GAAG,EAAE;YACV,EAAE,EAAE,UAAU,EAAE,CAAA;YAChB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC,CAAA;QACD,0EAA0E;QAC1E,uEAAuE;IACzE,CAAC,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAE3D,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAC1D,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1D,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,CAAA;IAEtC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ;YAAE,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc;YAAE,OAAM;QAC3B,SAAS,MAAM,CAAC,CAAa;YAC3B,IAAI,eAAe,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE,CAAC;gBACnF,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QACD,SAAS,KAAK,CAAC,CAAgB;YAC7B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAClD,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC9C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC3C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YACjD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAChD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;IAEpB,MAAM,eAAe,GAAG,CACtB,gBAAM,KAAK,EAAE,oBAAoB,aAC9B,WAAW,EACX,WAAW,IAAI,KAAC,eAAe,IAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAI,IAClF,CACR,CAAA;IAED,6EAA6E;IAC7E,0EAA0E;IAC1E,yCAAyC;IACzC,EAAE;IACF,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,+EAA+E;IAC/E,qEAAqE;IACrE,2DAA2D;IAC3D,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,EAAE;IACF,wEAAwE;IACxE,+EAA+E;IAC/E,6EAA6E;IAC7E,6EAA6E;IAC7E,yEAAyE;IACzE,8EAA8E;IAC9E,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,8EAA8E;IAC9E,sCAAsC;IACtC,EAAE;IACF,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,eAAe;IACf,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,CACxC,gBAAM,KAAK,EAAE,oBAAoB,aAC/B,YACE,IAAI,EAAE,eAAe;gBACrB,uEAAuE;gBACvE,0EAA0E;gBAC1E,yEAAyE;gBACzE,wCAAwC;gBACxC,KAAK,EAAE,mBAAmB;oBACxB,CAAC,CAAC,EAAE,GAAG,iBAAiB,EAAE,UAAU,EAAE,CAAC,mBAAmB,EAAE;oBAC5D,CAAC,CAAC,iBAAiB,gBACT,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC,CAAC,MAAM,YAEzD,WAAW,GACV,EACH,WAAW,IAAI,KAAC,eAAe,IAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAI,IAClF,CACR,CAAC,CAAC,CAAC,CACF,eACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,mBACG,MAAM,gBACR,CAAC,CAAC,QAAQ,EAAE,sBAAsB,CAAC,EAC/C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACvC,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;YACzB,CAAC;QACH,CAAC,EACD,KAAK,EAAE,mBAAmB,YAEzB,eAAe,GACX,CACR,CAAA;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,WAAW,GAAG,CAClB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,gBACH,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,EACxC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC;QACnC,2EAA2E;QAC3E,qEAAqE;QACrE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,EAC7B,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,UAAU,CAAA;YACpE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAA;QACxE,CAAC,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAA;YACzD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAA;QAChE,CAAC,YAED,KAAC,QAAQ,KAAG,GACL,CACV,CAAA;IAED,MAAM,aAAa,GAAG,CACpB,eAAK,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,aACpC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CACxB,KAAC,aAAa,IACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK;gBACZ,sEAAsE;gBACtE,uEAAuE;gBACvE,+DAA+D;gBAC/D,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EACtB,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE;oBACX,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,sBAAsB,CAAC;oBAC5C,KAAK,EAAI,CAAC,CAAC,QAAQ,EAAE,yBAAyB,CAAC;iBAChD,EACD,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAC7D,cAAc,kBAEb,eAAe,GACF,CACf,EAIA,CAAC,OAAO,IAAI,QAAQ,IAAI,CACvB,8BACE,eAAM,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,4CAAsB,EACxD,cAAK,KAAK,EAAE,iBAAiB,YAAG,QAAQ,GAAO,IAC9C,CACJ,IACG,CACP,CAAA;IAED,MAAM,YAAY,GAAG,CACnB,eAAK,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB,aASnG,KAAC,WAAW,OACN,YAAY,EAChB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAC,OAAO,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,EACjD,OAAO,EAAE,OAAO;gBAChB,uEAAuE;gBACvE,sDAAsD;gBACtD,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,EAC1C,KAAK,EAAE,KAAK,GACZ,EACF,KAAC,aAAa,IAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,GAAI,IAC1D,CACP,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,aAC3F,cAAc,IAAI,KAAC,YAAY,KAAG,EACnC,eAAK,KAAK,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,aAG7D,iBAAiB,IAAI,CACpB,eAAM,GAAG,EAAE,QAAQ,uBAAc,KAAK,EAAE,eAAe,YAAG,aAAa,GAAQ,CAChF,EACD,kBACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,mBAAmB;4BACxB,CAAC,CAAC,EAAE,GAAG,uBAAuB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;4BACvD,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,aAE1E,aAAa,EAIb,MAAM,IAAI,cAAK,KAAK,EAAE,eAAe,YAAG,MAAM,GAAO,EAGrD,mBAAmB,IAAI,YAAY,IAC7B,EAWR,SAAS,IAAI,UAAU,IAAI,CAC1B,aACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,UAAU,EAChB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,KAAK,EAAE;4BACL,GAAG,eAAe;4BAClB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAiB,EAAE,aAAa,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBAChG,aAED,eAAM,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,qBAAa,EACnD,gBAAM,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,aACnC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAC5D,IACL,CACL,EACA,CAAC,mBAAmB,IAAI,YAAY,IACjC,EACL,CAAC,UAAU,IAAI,CACd,KAAC,YAAY,IACX,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,YAAY,EAAE,YAAY,GAC1B,CACH,IACG,CACP,CAAA;AACH,CAAC;AAED,+EAA+E;AAC/E,8DAA8D;AAC9D,SAAS,QAAQ;IACf,OAAO,CACL,eACE,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAC5E,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAC5D,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,kCAGjD,eAAM,CAAC,EAAC,oBAAoB,GAAG,EAC/B,eAAM,CAAC,EAAC,oBAAoB,GAAG,EAC/B,eAAM,CAAC,EAAC,eAAe,GAAG,IACtB,CACP,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,mEAAmE;AACnE,iFAAiF;AAEjF,SAAS,SAAS,CAAC,UAAU,GAAG,GAAG;IACjC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,UAAU,GAAG,CAAC,KAAK,CAAC,CAAA;QAChE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QACvB,MAAM,OAAO,GAAG,CAAC,CAAsB,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAClE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACtC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAChB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,iFAAiF;AACjF,SAAS;AACT,iFAAiF;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,GAAG,GAAG,CAAA;AASlB,MAAM,gBAAgB,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IAC/D,UAAU,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO;IACnC,YAAY,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;IACjD,UAAU,EAAI,sFAAsF;IACpG,KAAK,EAAS,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI;IAChC,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,EAAQ,IAAI;CACnB,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,kBAAkB,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IACjE,QAAQ,EAAM,QAAQ;IACtB,GAAG,EAAW,CAAC;IACf,MAAM,EAAQ,IAAI;IAClB,UAAU,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO;IACnC,UAAU,EAAI,0BAA0B;IACxC,SAAS,EAAK,qCAAqC;CACpD,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAkB;IACtC,OAAO,EAAS,MAAM;IACtB,UAAU,EAAM,QAAQ;IACxB,cAAc,EAAE,YAAY;IAC5B,GAAG,EAAa,CAAC;IACjB,OAAO,EAAS,qBAAqB;IACrC,MAAM,EAAU,QAAQ;IACxB,SAAS,EAAO,EAAE;IAClB,SAAS,EAAO,YAAY;CAC7B,CAAA;AAED,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,iEAAiE;AACjE,MAAM,uBAAuB,GAAkB;IAC7C,OAAO,EAAS,MAAM;IACtB,UAAU,EAAM,QAAQ;IACxB,cAAc,EAAE,YAAY;IAC5B,UAAU,EAAM,EAAE;IAClB,aAAa,EAAG,EAAE;IAClB,SAAS,EAAO,EAAE;IAClB,SAAS,EAAO,YAAY;CAC7B,CAAA;AAED,4EAA4E;AAC5E,MAAM,uBAAuB,GAAkB;IAC7C,UAAU,EAAE,MAAM;IAClB,OAAO,EAAK,aAAa;IACzB,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAS,CAAC;IACb,UAAU,EAAE,CAAC;CACd,CAAA;AAED,MAAM,sBAAsB,GAAkB;IAC5C,OAAO,EAAS,MAAM;IACtB,UAAU,EAAM,QAAQ;IACxB,cAAc,EAAE,YAAY;IAC5B,GAAG,EAAa,CAAC;IACjB,OAAO,EAAS,qBAAqB;IACrC,MAAM,EAAU,QAAQ;IACxB,SAAS,EAAO,EAAE;IAClB,SAAS,EAAO,YAAY;CAC7B,CAAA;AAED,MAAM,SAAS,GAAkB;IAC/B,OAAO,EAAK,aAAa;IACzB,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAS,CAAC;IACb,QAAQ,EAAI,CAAC;IACb,UAAU,EAAE,CAAC;IACb,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,iDAAiD;IACjD,QAAQ,EAAI,QAAQ;CACrB,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IAC7D,KAAK,EAAK,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;IACjC,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAI,OAAO;CAClB,CAAC,CAAA;AAEF,8EAA8E;AAC9E,4DAA4D;AAC5D,MAAM,oBAAoB,GAAkB;IAC1C,OAAO,EAAK,aAAa;IACzB,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAS,CAAC;IACb,QAAQ,EAAI,CAAC;CACd,CAAA;AAED,kEAAkE;AAClE,iFAAiF;AACjF,uDAAuD;AACvD,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B,+EAA+E;AAC/E,yEAAyE;AACzE,6EAA6E;AAC7E,qDAAqD;AACrD,MAAM,mBAAmB,GAAkB;IACzC,OAAO,EAAO,aAAa;IAC3B,UAAU,EAAI,QAAQ;IACtB,kEAAkE;IAClE,QAAQ,EAAM,CAAC;IACf,YAAY,EAAE,CAAC;IACf,MAAM,EAAQ,SAAS;CACxB,CAAA;AAED,4EAA4E;AAC5E,0EAA0E;AAC1E,MAAM,iBAAiB,GAAkB;IACvC,OAAO,EAAS,aAAa;IAC7B,UAAU,EAAM,QAAQ;IACxB,yEAAyE;IACzE,iEAAiE;IACjE,QAAQ,EAAQ,CAAC;IACjB,cAAc,EAAE,MAAM;IACtB,KAAK,EAAW,SAAS;IACzB,OAAO,EAAS,OAAO,mBAAmB,IAAI;IAC9C,YAAY,EAAI,CAAC;IACjB,MAAM,EAAU,SAAS;CAC1B,CAAA;AAED,0EAA0E;AAC1E,gFAAgF;AAChF,yEAAyE;AACzE,yEAAyE;AACzE,4EAA4E;AAC5E,gFAAgF;AAChF,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,eAAe,GAAkB;IACrC,GAAG,uBAAuB;IAC1B,QAAQ,EAAO,UAAU;IACzB,GAAG,EAAY,CAAC;IAChB,IAAI,EAAW,CAAC;IAChB,UAAU,EAAK,QAAQ;IACvB,aAAa,EAAE,MAAM;IACrB,UAAU,EAAK,QAAQ;CACxB,CAAA;AAED,MAAM,eAAe,GAAkB;IACrC,IAAI,EAAY,UAAU;IAC1B,OAAO,EAAS,MAAM;IACtB,UAAU,EAAM,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,QAAQ,EAAQ,CAAC;IACjB,GAAG,EAAa,CAAC;CAClB,CAAA;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,iDAAiD;AACjD,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IAC9D,OAAO,EAAS,aAAa;IAC7B,UAAU,EAAM,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,UAAU,EAAM,CAAC;IACjB,KAAK,EAAW,EAAE;IAClB,MAAM,EAAU,EAAE;IAClB,OAAO,EAAS,CAAC;IACjB,YAAY,EAAI,KAAK;IACrB,MAAM,EAAU,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;IACzD,UAAU,EAAM,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ;IACtC,KAAK,EAAW,SAAS;IACzB,MAAM,EAAU,SAAS;IACzB,UAAU,EAAM,sCAAsC;CACvD,CAAC,CAAA;AAEF,0EAA0E;AAC1E,uBAAuB;AACvB,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC,CAAC;IAC/C,UAAU,EAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO;IAClC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW;CACvC,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,SAAS,eAAe,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,OAAO,GAKR;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,eAAM,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,YAAG,IAAI,GAAQ,CAAA;IACtE,OAAO;IACL,wEAAwE;IACxE,2EAA2E;IAC3E,sCAAsC;IACtC,gBAAM,KAAK,EAAE,WAAW,gBAAc,IAAI,aACxC,oCAAkB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,0BAAkB,EACnE,oCAEE,KAAK,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,YAEpF,KAAK,GACD,IACF,CACR,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAQ,aAAa;IAC5B,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,QAAQ;IACxB,QAAQ,EAAO,CAAC;IAChB,UAAU,EAAK,GAAG;CACnB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IAChE,QAAQ,EAAO,CAAC;IAChB,UAAU,EAAK,GAAG;IAClB,aAAa,EAAE,QAAQ;IACvB,KAAK,EAAU,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK;IAC/B,UAAU,EAAK,QAAQ;IACvB,aAAa,EAAE,WAAW;CAC3B,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IACzD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3B,CAAC;AAED,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IAC/D,QAAQ,EAAM,EAAE;IAChB,UAAU,EAAI,GAAG;IACjB,KAAK,EAAS,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI;IAChC,UAAU,EAAI,QAAQ;IACtB,aAAa,EAAE,SAAS;IACxB,6EAA6E;IAC7E,6EAA6E;IAC7E,yEAAyE;IACzE,QAAQ,EAAM,QAAQ;IACtB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAM,CAAC;CAChB,CAAC,CAAA;AAEF,MAAM,iBAAiB,GAAkB;IACvC,OAAO,EAAK,aAAa;IACzB,UAAU,EAAE,QAAQ;CACrB,CAAA;AAED,MAAM,mBAAmB,GAAkB;IACzC,QAAQ,EAAI,UAAU;IACtB,KAAK,EAAO,EAAE;IACd,GAAG,EAAS,KAAK;IACjB,SAAS,EAAG,kBAAkB;IAC9B,OAAO,EAAK,aAAa;IACzB,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAS,CAAC;IACb,MAAM,EAAM,CAAC;CACd,CAAA;AAED,uEAAuE;AACvE,uEAAuE;AACvE,MAAM,eAAe,GAAkB;IACrC,QAAQ,EAAQ,UAAU;IAC1B,IAAI,EAAY,KAAK;IACrB,GAAG,EAAa,KAAK;IACrB,SAAS,EAAO,uBAAuB;IACvC,OAAO,EAAS,aAAa;IAC7B,UAAU,EAAM,QAAQ;IACxB,GAAG,EAAa,CAAC;IACjB,QAAQ,EAAQ,EAAE;IAClB,UAAU,EAAM,GAAG;IACnB,UAAU,EAAM,QAAQ;IACxB,aAAa,EAAG,QAAQ;IACxB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAM,MAAM;CACvB,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;CAC3B,CAAC,CAAA;AAEF,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,wCAAwC;AACxC,MAAM,kBAAkB,GAAG,CAAC,KAAkB,EAAiB,EAAE,CAAC,CAAC;IACjE,mEAAmE;IACnE,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAC9E,4EAA4E;IAC5E,8EAA8E;IAC9E,4CAA4C;IAC5C,KAAK,EAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW;IACrC,UAAU,EAAE,GAAG;CAChB,CAAC,CAAA"}
|
|
@@ -9,12 +9,20 @@ export interface UniversalNavBarProps {
|
|
|
9
9
|
/**
|
|
10
10
|
* ICON-ONLY version of the mark, for the phone bar.
|
|
11
11
|
*
|
|
12
|
-
* ⚠️
|
|
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".
|
|
17
|
-
*
|
|
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,
|
|
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"}
|
package/dist/UniversalNavBar.js
CHANGED
|
@@ -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
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
// know.
|
|
118
|
-
const identityBlock = (_jsxs("div", { style: leftStyle, children: [_jsxs(SuiteSwitcher, { current: product, align: "left", appGroups: DEFAULT_APP_GROUPS,
|
|
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 })] })] }),
|
|
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
|
-
/**
|
|
450
|
-
|
|
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:
|
|
527
|
+
gap: labelled ? 7 : 4,
|
|
454
528
|
height: 38,
|
|
455
|
-
|
|
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:
|
|
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: '
|
|
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
|
|
554
|
+
* The company logo's slot on the phone row.
|
|
470
555
|
*
|
|
471
|
-
*
|
|
472
|
-
*
|
|
473
|
-
*
|
|
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
|
|
476
|
-
display: 'flex',
|
|
561
|
+
const mobileCompanyBadgeStyle = {
|
|
562
|
+
display: 'inline-flex',
|
|
477
563
|
alignItems: 'center',
|
|
478
|
-
|
|
479
|
-
|
|
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
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
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
|