@unisim/sdk 0.106.0 → 0.107.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 (46) hide show
  1. package/README.md +8 -0
  2. package/dist/AccountLimits.d.ts +7 -0
  3. package/dist/AccountLimits.d.ts.map +1 -0
  4. package/dist/AccountLimits.js +145 -0
  5. package/dist/AccountLimits.js.map +1 -0
  6. package/dist/ChangelogMenu.d.ts +11 -1
  7. package/dist/ChangelogMenu.d.ts.map +1 -1
  8. package/dist/ChangelogMenu.js +94 -72
  9. package/dist/ChangelogMenu.js.map +1 -1
  10. package/dist/DropdownSurface.d.ts +24 -1
  11. package/dist/DropdownSurface.d.ts.map +1 -1
  12. package/dist/DropdownSurface.js +33 -3
  13. package/dist/DropdownSurface.js.map +1 -1
  14. package/dist/SuiteSwitcher.d.ts +18 -4
  15. package/dist/SuiteSwitcher.d.ts.map +1 -1
  16. package/dist/SuiteSwitcher.js +101 -112
  17. package/dist/SuiteSwitcher.js.map +1 -1
  18. package/dist/UniversalAppsNavBar.d.ts +23 -17
  19. package/dist/UniversalAppsNavBar.d.ts.map +1 -1
  20. package/dist/UniversalAppsNavBar.js +12 -13
  21. package/dist/UniversalAppsNavBar.js.map +1 -1
  22. package/dist/UserProfile.d.ts +49 -3
  23. package/dist/UserProfile.d.ts.map +1 -1
  24. package/dist/UserProfile.js +215 -63
  25. package/dist/UserProfile.js.map +1 -1
  26. package/dist/entitlements.d.ts +55 -0
  27. package/dist/entitlements.d.ts.map +1 -0
  28. package/dist/entitlements.js +116 -0
  29. package/dist/entitlements.js.map +1 -0
  30. package/dist/i18n.d.ts.map +1 -1
  31. package/dist/i18n.js +119 -0
  32. package/dist/i18n.js.map +1 -1
  33. package/dist/index.d.ts +6 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +9 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/menuTheme.d.ts +85 -0
  38. package/dist/menuTheme.d.ts.map +1 -0
  39. package/dist/menuTheme.js +195 -0
  40. package/dist/menuTheme.js.map +1 -0
  41. package/dist/mockAuth.d.ts.map +1 -1
  42. package/dist/mockAuth.js +19 -2
  43. package/dist/mockAuth.js.map +1 -1
  44. package/dist/types.d.ts +7 -3
  45. package/dist/types.d.ts.map +1 -1
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownSurface.d.ts","sourceRoot":"","sources":["../src/DropdownSurface.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AA2Bd;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aAAgB,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,IAAI,EAAE,OAAO,CAAA;IACb,qEAAqE;IACrE,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACxC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAmCD,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,KAAc,EACd,GAAO,EACP,MAAU,EACV,KAAa,EACb,YAAY,EACZ,IAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,oBAAoB,sCA8LtB"}
1
+ {"version":3,"file":"DropdownSurface.d.ts","sourceRoot":"","sources":["../src/DropdownSurface.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AA2Bd;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aAAgB,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,IAAI,EAAE,OAAO,CAAA;IACb,qEAAqE;IACrE,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACxC;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAmCD,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,KAAc,EACd,SAAmB,EACnB,IAAa,EACb,GAAO,EACP,MAAU,EACV,KAAa,EACb,YAAY,EACZ,IAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,oBAAoB,sCAoOtB"}
@@ -50,7 +50,7 @@ function clamp(value, lo, hi) {
50
50
  // server so the positioning pass stays warning-free. On the client we want the
51
51
  // layout variant so the panel is positioned before the browser paints.
52
52
  const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
53
- export function DropdownSurface({ open, anchorRef, align = 'left', gap = 8, margin = 8, arrow = false, surfaceStyle, role = 'menu', className, onMouseEnter, onMouseLeave, onRequestClose, children, }) {
53
+ export function DropdownSurface({ open, anchorRef, align = 'left', placement = 'below', side = 'left', gap = 8, margin = 8, arrow = false, surfaceStyle, role = 'menu', className, onMouseEnter, onMouseLeave, onRequestClose, children, }) {
54
54
  const menuRef = useRef(null);
55
55
  const [mounted, setMounted] = useState(false);
56
56
  const [pos, setPos] = useState(null);
@@ -77,6 +77,36 @@ export function DropdownSurface({ open, anchorRef, align = 'left', gap = 8, marg
77
77
  // lift, it would overflow again, and the ResizeObserver would flip it
78
78
  // back and forth forever. scrollHeight is the content, capped or not.
79
79
  const mh = Math.max(menu.scrollHeight, menu.offsetHeight);
80
+ // ── Side placement ──────────────────────────────────────────────────
81
+ // A flyout beside its anchor rather than under it. Same two ideas as the
82
+ // below/above case, rotated 90°: take the preferred side if the panel
83
+ // fits there, else the other side if it fits, else whichever has more
84
+ // room and let the clamp deal with the shortfall.
85
+ if (placement === 'side') {
86
+ const roomLeft = a.left - gap - margin;
87
+ const roomRight = vw - a.right - gap - margin;
88
+ const onLeft = side === 'left'
89
+ ? (mw <= roomLeft ? true : mw <= roomRight ? false : roomLeft >= roomRight)
90
+ : (mw <= roomRight ? false : mw <= roomLeft ? true : roomLeft > roomRight);
91
+ const sideLeft = clamp(onLeft ? a.left - gap - mw : a.right + gap, margin, Math.max(margin, vw - mw - margin));
92
+ // Top-aligned to the anchor row, like every submenu, then slid up if
93
+ // the panel would run off the bottom. There is no "flip" on this axis —
94
+ // a flyout is beside its row, so the room it has is the whole viewport
95
+ // height rather than the gap on one side of the trigger.
96
+ const sideMaxHeight = Math.max(MIN_PANEL_HEIGHT, vh - margin * 2);
97
+ const sideHeight = Math.min(mh, sideMaxHeight);
98
+ const sideTop = clamp(a.top, margin, Math.max(margin, vh - sideHeight - margin));
99
+ setPos({
100
+ left: sideLeft,
101
+ top: sideTop,
102
+ // The caret points back at a trigger directly above the panel, which
103
+ // is not this geometry. `arrow` is left unsupported for side flyouts.
104
+ arrowLeft: 16,
105
+ above: false,
106
+ maxHeight: sideMaxHeight,
107
+ });
108
+ return;
109
+ }
80
110
  // ── Horizontal ──────────────────────────────────────────────────────
81
111
  // Width needs no special case any more: the surface is capped to the
82
112
  // viewport in CSS, so `mw` can't exceed it and the clamp always has a
@@ -123,7 +153,7 @@ export function DropdownSurface({ open, anchorRef, align = 'left', gap = 8, marg
123
153
  window.removeEventListener('resize', onReflow);
124
154
  ro.disconnect();
125
155
  };
126
- }, [open, mounted, align, gap, margin, anchorRef]);
156
+ }, [open, mounted, align, placement, side, gap, margin, anchorRef]);
127
157
  // Outside-click + Escape, centralised. The trigger and the portaled panel
128
158
  // both count as "inside" so neither dismisses the menu.
129
159
  useEffect(() => {
@@ -202,7 +232,7 @@ export function DropdownSurface({ open, anchorRef, align = 'left', gap = 8, marg
202
232
  // top edge). Positioned in the same viewport coordinates, painted one layer
203
233
  // up so it covers the panel's own border, it looks identical to the child it
204
234
  // replaces — and survives the panel becoming scrollable.
205
- const showArrow = arrow && pos && !pos.above;
235
+ const showArrow = arrow && placement === 'below' && pos && !pos.above;
206
236
  const arrowFixedStyle = showArrow
207
237
  ? {
208
238
  ...arrowStyle(pos.arrowLeft),
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownSurface.js","sourceRoot":"","sources":["../src/DropdownSurface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownSurface.js","sourceRoot":"","sources":["../src/DropdownSurface.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { type ReactNode, type CSSProperties } from 'react';
2
+ import { type MenuTheme } from './menuTheme.js';
2
3
  /**
3
- * Which product the suite menu is being rendered *for*. This is a superset of
4
- * `ProductCode`: it also names products that have no usage tracking and
5
- * therefore no enum value (`ai`, `screens`).
4
+ * Which product the suite menu is being rendered *for*. Historically a superset
5
+ * of `ProductCode` it named the apps that recorded no usage and so had no
6
+ * Postgres enum value (`ai`, `screens`) — but migration 0125 closed that gap,
7
+ * so the two lists now hold the same ids.
6
8
  *
7
9
  * ⚠️ **`| (string & {})` means every string type-checks here.** That escape
8
10
  * hatch is deliberate — the menu should not fail to compile because a new app
@@ -125,6 +127,18 @@ export interface SuiteSwitcherProps {
125
127
  * Simulation org. Omit for the Assess suite (closed-source).
126
128
  */
127
129
  githubHref?: string;
130
+ /**
131
+ * Colourway for the trigger button and the dropdown panel. `'light'`
132
+ * (default) is what every consumer rendered before 0.107.0;
133
+ * `UniversalAppsNavBar` passes its own `theme` through.
134
+ *
135
+ * ⚠️ The product GLYPHS are not themed and must not be. Each one is a
136
+ * miniature of that product's own app mark, drawn on its own dark tile — so
137
+ * they already read on either surface, and re-colouring them would mean
138
+ * showing somebody a different logo depending on which app they happened to
139
+ * open the menu from.
140
+ */
141
+ theme?: MenuTheme;
128
142
  /**
129
143
  * Extra product families shown as collapsible (collapsed by default) groups
130
144
  * below the main product list — used by the Assess switcher to surface the
@@ -206,5 +220,5 @@ export declare const APP_CATEGORY_ORDER: {
206
220
  label: string;
207
221
  }[];
208
222
  export declare const DEFAULT_APP_GROUPS: AppGroup[];
209
- export declare function SuiteSwitcher({ current, products, iconSrc, ariaLabel, children, align, chip, portalHref, portalLabel, githubHref, appGroups, groupedDisplay, hideOtherProducts, disableOpen, style, className, }: SuiteSwitcherProps): import("react/jsx-runtime").JSX.Element;
223
+ export declare function SuiteSwitcher({ current, products, iconSrc, ariaLabel, children, align, chip, portalHref, portalLabel, githubHref, appGroups, groupedDisplay, hideOtherProducts, disableOpen, theme, style, className, }: SuiteSwitcherProps): import("react/jsx-runtime").JSX.Element;
210
224
  //# sourceMappingURL=SuiteSwitcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuiteSwitcher.d.ts","sourceRoot":"","sources":["../src/SuiteSwitcher.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SuiteSwitcher.d.ts","sourceRoot":"","sources":["../src/SuiteSwitcher.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { useLanguage } from './provider.js';
6
6
  import { DropdownSurface } from './DropdownSurface.js';
7
7
  import { APP_MARKS, APP_MARK_CSS } from './appMarks.js';
8
8
  import { useCanHover } from './hover.js';
9
+ import { MENU } from './menuTheme.js';
9
10
  // ──────────────────────────────────────────────────────────────────────────────
10
11
  // Default product catalogue
11
12
  //
@@ -453,7 +454,7 @@ const DEFAULT_TRIGGER_ICON = 'data:image/svg+xml;utf8,' +
453
454
  // ──────────────────────────────────────────────────────────────────────────────
454
455
  // Component
455
456
  // ──────────────────────────────────────────────────────────────────────────────
456
- export function SuiteSwitcher({ current, products = DEFAULT_SUITE_PRODUCTS, iconSrc = DEFAULT_TRIGGER_ICON, ariaLabel, children, align = 'right', chip, portalHref = 'https://assess.unisim.co.uk', portalLabel, githubHref, appGroups, groupedDisplay = false, hideOtherProducts = false, disableOpen = false, style, className, }) {
457
+ export function SuiteSwitcher({ current, products = DEFAULT_SUITE_PRODUCTS, iconSrc = DEFAULT_TRIGGER_ICON, ariaLabel, children, align = 'right', chip, portalHref = 'https://assess.unisim.co.uk', portalLabel, githubHref, appGroups, groupedDisplay = false, hideOtherProducts = false, disableOpen = false, theme = 'light', style, className, }) {
457
458
  useGlyphHoverAnimation();
458
459
  const { language } = useLanguage();
459
460
  const resolvedAriaLabel = ariaLabel ?? t(language, 'suite.switch_product');
@@ -531,79 +532,67 @@ export function SuiteSwitcher({ current, products = DEFAULT_SUITE_PRODUCTS, icon
531
532
  // wrapper — a flex item defaults to min-width:auto and would keep
532
533
  // the trigger at its intrinsic width, hard-clipping the product name
533
534
  // instead of letting it ellipsize.
534
- style: { cursor: disableOpen ? 'default' : 'pointer', display: 'inline-flex', alignItems: 'center', gap: 6, minWidth: 0 }, children: [children, !disableOpen && _jsx(SwitcherChevron, { open: open })] })) : (_jsx("button", { type: "button", "aria-label": resolvedAriaLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => { if (!disableOpen)
535
- setOpen((v) => !v); }, onFocus: hoverOpen, style: triggerStyle(open), children: _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: { width: 28, height: 28, display: 'block' } }) })), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: align, arrow: true, role: "menu", surfaceStyle: menuSurfaceStyle, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [!hideOtherProducts && (_jsxs(_Fragment, { children: [_jsxs("a", { role: "menuitem", href: portalHref, className: "unisim-suite-row", style: portalItemStyle, onMouseEnter: (e) => { e.currentTarget.style.background = '#fff7ed'; }, onMouseLeave: (e) => { e.currentTarget.style.background = 'transparent'; }, children: [_jsx("span", { className: "unisim-suite-glyph", style: glyphStyle, children: iconSrc && iconSrc !== DEFAULT_TRIGGER_ICON
535
+ style: { cursor: disableOpen ? 'default' : 'pointer', display: 'inline-flex', alignItems: 'center', gap: 6, minWidth: 0 }, children: [children, !disableOpen && _jsx(SwitcherChevron, { open: open, theme: theme })] })) : (_jsx("button", { type: "button", "aria-label": resolvedAriaLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => { if (!disableOpen)
536
+ setOpen((v) => !v); }, onFocus: hoverOpen, style: triggerStyle(open, theme), children: _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: { width: 28, height: 28, display: 'block' } }) })), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: align, arrow: true, role: "menu", surfaceStyle: menuSurfaceStyle(theme), onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [!hideOtherProducts && (_jsxs(_Fragment, { children: [_jsxs("a", { role: "menuitem", href: portalHref, className: "unisim-suite-row", style: portalItemStyle, onMouseEnter: (e) => { e.currentTarget.style.background = MENU[theme].accentBg; }, onMouseLeave: (e) => { e.currentTarget.style.background = 'transparent'; }, children: [_jsx("span", { className: "unisim-suite-glyph", style: glyphStyle, children: iconSrc && iconSrc !== DEFAULT_TRIGGER_ICON
536
537
  ? _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: portalIconImgStyle })
537
- : UNISIM_GLYPH }), _jsxs("span", { style: { flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column', gap: 1 }, children: [_jsx("span", { style: portalEyebrowStyle, children: resolvedPortalLabel.eyebrow }), _jsx("span", { style: portalTitleStyle, children: resolvedPortalLabel.title })] }), chip && _jsx("div", { style: { flexShrink: 0 }, children: chip })] }), _jsx("div", { style: portalDividerStyle, "aria-hidden": true })] })), visibleProducts.map((p) => {
538
- const isCurrent = p.id === current;
539
- const isComingSoon = p.comingSoon === true;
540
- const isDisabled = isCurrent || isComingSoon;
541
- // Render <a> only for navigable items so keyboard users skip the current/disabled one cleanly.
542
- let Wrapper;
543
- let wrapperProps;
544
- if (isComingSoon) {
545
- Wrapper = 'div';
546
- wrapperProps = { 'aria-disabled': 'true' };
547
- }
548
- else if (isCurrent) {
549
- Wrapper = 'button';
550
- wrapperProps = { type: 'button', 'aria-current': 'page' };
551
- }
552
- else {
553
- Wrapper = 'a';
554
- wrapperProps = { href: p.href };
555
- }
556
- return (_jsxs(Wrapper, { role: "menuitem", ...wrapperProps, className: "unisim-suite-row", style: itemStyle(isCurrent, isComingSoon), onMouseEnter: (e) => {
557
- if (!isDisabled)
558
- e.currentTarget.style.background = '#f8fafc';
559
- }, onMouseLeave: (e) => {
560
- if (!isDisabled)
561
- e.currentTarget.style.background = 'transparent';
562
- }, children: [_jsx("span", { className: "unisim-suite-glyph", style: glyphStyle, children: p.glyph }), _jsxs("span", { style: { flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column', gap: 1 }, children: [_jsxs("span", { style: {
563
- fontSize: 14,
564
- fontWeight: 600,
565
- color: isComingSoon ? '#64748b' : '#0f172a',
566
- lineHeight: 1.2,
567
- display: 'inline-flex',
568
- alignItems: 'center',
569
- gap: 6,
570
- }, children: [p.name, p.flag] }), _jsx("span", { style: { fontSize: 11, color: '#94a3b8', lineHeight: 1.3 }, children: p.desc })] }), isCurrent && _jsx("span", { style: badgeStyle, children: t(language, 'suite.youre_here') }), isComingSoon && _jsx("span", { style: comingSoonBadgeStyle, children: t(language, 'suite.coming_soon') })] }, p.id));
571
- }), appGroups && appGroups.length > 0 && (_jsxs(_Fragment, { children: [!useGroupedDisplay && _jsx("div", { style: portalDividerStyle, "aria-hidden": true }), appGroups.map((group) => (_jsxs("details", { open: group.defaultOpen, style: groupDetailsStyle, children: [_jsxs("summary", { style: groupSummaryStyle, children: [_jsx("span", { children: group.label }), _jsx("span", { style: groupChevronStyle, "aria-hidden": true, children: "\u25B8" })] }), group.products.map((p) => {
572
- const isCurrent = p.id === current;
573
- const isComingSoon = p.comingSoon === true;
574
- const isDisabled = isCurrent || isComingSoon;
575
- let Wrapper;
576
- let wrapperProps;
577
- if (isComingSoon) {
578
- Wrapper = 'div';
579
- wrapperProps = { 'aria-disabled': 'true' };
580
- }
581
- else if (isCurrent) {
582
- Wrapper = 'button';
583
- wrapperProps = { type: 'button', 'aria-current': 'page' };
584
- }
585
- else {
586
- Wrapper = 'a';
587
- wrapperProps = { href: p.href };
588
- }
589
- return (_jsxs(Wrapper, { role: "menuitem", ...wrapperProps, className: "unisim-suite-row", style: itemStyle(isCurrent, isComingSoon), onMouseEnter: (e) => { if (!isDisabled)
590
- e.currentTarget.style.background = '#f8fafc'; }, onMouseLeave: (e) => { if (!isDisabled)
591
- e.currentTarget.style.background = 'transparent'; }, children: [_jsx("span", { className: "unisim-suite-glyph", style: glyphStyle, children: p.glyph }), _jsxs("span", { style: { flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column', gap: 1 }, children: [_jsxs("span", { style: {
592
- fontSize: 14,
593
- fontWeight: 600,
594
- color: isComingSoon ? '#64748b' : '#0f172a',
595
- lineHeight: 1.2,
596
- display: 'inline-flex',
597
- alignItems: 'center',
598
- gap: 6,
599
- }, children: [p.name, p.flag] }), _jsx("span", { style: { fontSize: 11, color: '#94a3b8', lineHeight: 1.3 }, children: p.desc })] }), isCurrent && _jsx("span", { style: badgeStyle, children: t(language, 'suite.youre_here') }), isComingSoon && _jsx("span", { style: comingSoonBadgeStyle, children: t(language, 'suite.coming_soon') })] }, p.id));
600
- })] }, group.label)))] })), _jsxs("div", { style: { ...footerStyle, justifyContent: githubHref ? 'space-between' : 'flex-end' }, children: [githubHref && (_jsxs("a", { href: githubHref, target: "_blank", rel: "noreferrer", style: footerLinkStyle, children: [_jsx(GitHubMark, {}), "GitHub \u2197"] })), _jsx("a", { href: "https://www.unisim.co.uk", target: "_blank", rel: "noreferrer", style: footerLinkStyle, children: "unisim.co.uk \u2197" })] })] })] }));
538
+ : UNISIM_GLYPH }), _jsxs("span", { style: { flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column', gap: 1 }, children: [_jsx("span", { style: portalEyebrowStyle(theme), children: resolvedPortalLabel.eyebrow }), _jsx("span", { style: portalTitleStyle(theme), children: resolvedPortalLabel.title })] }), chip && _jsx("div", { style: { flexShrink: 0 }, children: chip })] }), _jsx("div", { style: portalDividerStyle(theme), "aria-hidden": true })] })), visibleProducts.map((p) => (_jsx(ProductRow, { product: p, current: current, language: language, theme: theme }, p.id))), appGroups && appGroups.length > 0 && (_jsxs(_Fragment, { children: [!useGroupedDisplay && _jsx("div", { style: portalDividerStyle(theme), "aria-hidden": true }), appGroups.map((group) => (_jsxs("details", { open: group.defaultOpen, style: groupDetailsStyle, children: [_jsxs("summary", { style: groupSummaryStyle(theme), children: [_jsx("span", { children: group.label }), _jsx("span", { style: groupChevronStyle(theme), "aria-hidden": true, children: "\u25B8" })] }), group.products.map((p) => (_jsx(ProductRow, { product: p, current: current, language: language, theme: theme }, p.id)))] }, group.label)))] })), _jsxs("div", { style: { ...footerStyle(theme), justifyContent: githubHref ? 'space-between' : 'flex-end' }, children: [githubHref && (_jsxs("a", { href: githubHref, target: "_blank", rel: "noreferrer", style: footerLinkStyle(theme), children: [_jsx(GitHubMark, {}), "GitHub \u2197"] })), _jsx("a", { href: "https://www.unisim.co.uk", target: "_blank", rel: "noreferrer", style: footerLinkStyle(theme), children: "unisim.co.uk \u2197" })] })] })] }));
539
+ }
540
+ /**
541
+ * One product row in the dropdown.
542
+ *
543
+ * Extracted in 0.107.0 because the flat list and the grouped (`groupedDisplay`)
544
+ * list held two byte-identical copies of this markup, indented differently —
545
+ * and the theming pass would have made that two copies to keep in step
546
+ * forever. They were already drifting: only one of them carried the "render
547
+ * <a> only for navigable items" comment explaining why the element type
548
+ * changes.
549
+ *
550
+ * The element type is the accessibility-carrying part. A coming-soon row is a
551
+ * `div` (nothing to activate), the current product is a `button` with
552
+ * `aria-current`, and everything else is a real `<a href>` — so a keyboard
553
+ * user tabs past the rows that go nowhere instead of landing on a link that
554
+ * does not navigate.
555
+ */
556
+ function ProductRow({ product: p, current, language, theme, }) {
557
+ const isCurrent = p.id === current;
558
+ const isComingSoon = p.comingSoon === true;
559
+ const isDisabled = isCurrent || isComingSoon;
560
+ let Wrapper;
561
+ let wrapperProps;
562
+ if (isComingSoon) {
563
+ Wrapper = 'div';
564
+ wrapperProps = { 'aria-disabled': 'true' };
565
+ }
566
+ else if (isCurrent) {
567
+ Wrapper = 'button';
568
+ wrapperProps = { type: 'button', 'aria-current': 'page' };
569
+ }
570
+ else {
571
+ Wrapper = 'a';
572
+ wrapperProps = { href: p.href };
573
+ }
574
+ return (_jsxs(Wrapper, { role: "menuitem", ...wrapperProps, className: "unisim-suite-row", style: itemStyle(isCurrent, isComingSoon, theme),
575
+ // Written straight to the node rather than held in state: a hover that
576
+ // re-rendered the menu would re-run every row on every pointer move
577
+ // across it. `isDisabled` rows keep their resting fill — the current
578
+ // product's row is already tinted and a coming-soon row is not a target.
579
+ onMouseEnter: (e) => { if (!isDisabled)
580
+ e.currentTarget.style.background = MENU[theme].rowHover; }, onMouseLeave: (e) => { if (!isDisabled)
581
+ e.currentTarget.style.background = 'transparent'; }, children: [_jsx("span", { className: "unisim-suite-glyph", style: glyphStyle, children: p.glyph }), _jsxs("span", { style: { flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column', gap: 1 }, children: [_jsxs("span", { style: {
582
+ fontSize: 14,
583
+ fontWeight: 600,
584
+ color: isComingSoon ? MENU[theme].muted : MENU[theme].text,
585
+ lineHeight: 1.2,
586
+ display: 'inline-flex',
587
+ alignItems: 'center',
588
+ gap: 6,
589
+ }, children: [p.name, p.flag] }), _jsx("span", { style: { fontSize: 11, color: MENU[theme].faint, lineHeight: 1.3 }, children: p.desc })] }), isCurrent && _jsx("span", { style: badgeStyle(theme), children: t(language, 'suite.youre_here') }), isComingSoon && _jsx("span", { style: comingSoonBadgeStyle(theme), children: t(language, 'suite.coming_soon') })] }));
601
590
  }
602
591
  // ──────────────────────────────────────────────────────────────────────────────
603
592
  // Inline styles (kept here rather than in a CSS file so the SDK works in any
604
593
  // React host — Tailwind, plain CSS, CSS-in-JS, doesn't matter).
605
594
  // ──────────────────────────────────────────────────────────────────────────────
606
- function triggerStyle(open) {
595
+ function triggerStyle(open, theme) {
607
596
  return {
608
597
  display: 'inline-flex',
609
598
  alignItems: 'center',
@@ -611,32 +600,32 @@ function triggerStyle(open) {
611
600
  width: 38,
612
601
  height: 38,
613
602
  borderRadius: 10,
614
- border: `1px solid ${open ? '#fed7aa' : '#e2e8f0'}`,
615
- background: open ? '#fff7ed' : '#ffffff',
603
+ border: `1px solid ${open ? MENU[theme].triggerOpenBorder : MENU[theme].triggerBorder}`,
604
+ background: open ? MENU[theme].triggerOpenBg : MENU[theme].triggerBg,
616
605
  cursor: 'pointer',
617
606
  transition: 'all 150ms cubic-bezier(0.16,1,0.3,1)',
618
607
  padding: 0,
619
- boxShadow: open ? '0 0 0 4px rgba(224,85,4,0.08)' : 'none',
608
+ boxShadow: open ? MENU[theme].triggerOpenRing : 'none',
620
609
  };
621
610
  }
622
611
  // Visual styling only — positioning, stacking, the caret and the open/close
623
612
  // transition are owned by <DropdownSurface />.
624
- const menuSurfaceStyle = {
613
+ const menuSurfaceStyle = (theme) => ({
625
614
  width: 320,
626
- background: '#ffffff',
627
- border: '1px solid #e2e8f0',
615
+ background: MENU[theme].surface,
616
+ border: `1px solid ${MENU[theme].border}`,
628
617
  borderRadius: 16,
629
- boxShadow: '0 16px 32px -8px rgba(15,23,42,0.16), 0 4px 8px -2px rgba(15,23,42,0.08)',
618
+ boxShadow: MENU[theme].shadow,
630
619
  padding: 12,
631
- color: '#0f172a',
632
- };
620
+ color: MENU[theme].text,
621
+ });
633
622
  // Small ▾ chevron rendered next to a custom trigger so it visually reads as
634
623
  // a dropdown. Rotates 180° when open.
635
- function SwitcherChevron({ open }) {
624
+ function SwitcherChevron({ open, theme }) {
636
625
  return (_jsx("svg", { width: "10", height: "10", viewBox: "0 0 12 12", "aria-hidden": true, style: {
637
626
  transition: 'transform 150ms cubic-bezier(0.16,1,0.3,1)',
638
627
  transform: open ? 'rotate(180deg)' : 'rotate(0deg)',
639
- color: '#94a3b8',
628
+ color: MENU[theme].faint,
640
629
  flexShrink: 0,
641
630
  }, children: _jsx("path", { d: "M2.5 4.5 L6 8 L9.5 4.5", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round" }) }));
642
631
  }
@@ -664,25 +653,25 @@ const portalItemStyle = {
664
653
  color: 'inherit',
665
654
  fontFamily: 'inherit',
666
655
  };
667
- const portalEyebrowStyle = {
656
+ const portalEyebrowStyle = (theme) => ({
668
657
  fontSize: 11,
669
- color: '#64748b',
658
+ color: MENU[theme].muted,
670
659
  fontWeight: 600,
671
660
  letterSpacing: '0.06em',
672
661
  textTransform: 'uppercase',
673
662
  lineHeight: 1.2,
674
- };
675
- const portalTitleStyle = {
663
+ });
664
+ const portalTitleStyle = (theme) => ({
676
665
  fontSize: 13,
677
- color: '#334155',
666
+ color: MENU[theme].body,
678
667
  lineHeight: 1.3,
679
- };
680
- const portalDividerStyle = {
668
+ });
669
+ const portalDividerStyle = (theme) => ({
681
670
  height: 1,
682
- background: '#e2e8f0',
671
+ background: MENU[theme].divider,
683
672
  margin: '6px 0 8px',
684
- };
685
- function itemStyle(isCurrent, isComingSoon = false) {
673
+ });
674
+ function itemStyle(isCurrent, isComingSoon, theme) {
686
675
  return {
687
676
  display: 'flex',
688
677
  alignItems: 'center',
@@ -690,7 +679,7 @@ function itemStyle(isCurrent, isComingSoon = false) {
690
679
  padding: '10px 10px',
691
680
  borderRadius: 10,
692
681
  border: 0,
693
- background: isCurrent ? '#fff7ed' : 'transparent',
682
+ background: isCurrent ? MENU[theme].accentBg : 'transparent',
694
683
  cursor: isCurrent || isComingSoon ? 'default' : 'pointer',
695
684
  opacity: isComingSoon ? 0.7 : 1,
696
685
  width: '100%',
@@ -722,7 +711,7 @@ const portalIconImgStyle = {
722
711
  const groupDetailsStyle = {
723
712
  marginTop: 2,
724
713
  };
725
- const groupSummaryStyle = {
714
+ const groupSummaryStyle = (theme) => ({
726
715
  display: 'flex',
727
716
  alignItems: 'center',
728
717
  justifyContent: 'space-between',
@@ -733,53 +722,53 @@ const groupSummaryStyle = {
733
722
  fontWeight: 700,
734
723
  letterSpacing: '0.06em',
735
724
  textTransform: 'uppercase',
736
- color: '#64748b',
725
+ color: MENU[theme].muted,
737
726
  userSelect: 'none',
738
727
  borderRadius: 8,
739
- };
740
- const groupChevronStyle = {
728
+ });
729
+ const groupChevronStyle = (theme) => ({
741
730
  fontSize: 10,
742
- color: '#cbd5e1',
743
- };
744
- const badgeStyle = {
731
+ color: MENU[theme].faint,
732
+ });
733
+ const badgeStyle = (theme) => ({
745
734
  fontSize: 9,
746
735
  fontWeight: 700,
747
736
  letterSpacing: '0.08em',
748
737
  textTransform: 'uppercase',
749
738
  padding: '2px 7px',
750
739
  borderRadius: 999,
751
- background: '#fff7ed',
752
- color: '#c2410c',
753
- border: '1px solid #fed7aa',
740
+ background: MENU[theme].accentBg,
741
+ color: MENU[theme].accentText,
742
+ border: `1px solid ${MENU[theme].accentBorder}`,
754
743
  flexShrink: 0,
755
- };
756
- const comingSoonBadgeStyle = {
744
+ });
745
+ const comingSoonBadgeStyle = (theme) => ({
757
746
  fontSize: 9,
758
747
  fontWeight: 700,
759
748
  letterSpacing: '0.08em',
760
749
  textTransform: 'uppercase',
761
750
  padding: '2px 7px',
762
751
  borderRadius: 999,
763
- background: '#f1f5f9',
764
- color: '#64748b',
765
- border: '1px solid #e2e8f0',
752
+ background: MENU[theme].chipBg,
753
+ color: MENU[theme].chipText,
754
+ border: `1px solid ${MENU[theme].chipBorder}`,
766
755
  flexShrink: 0,
767
- };
768
- const footerStyle = {
756
+ });
757
+ const footerStyle = (theme) => ({
769
758
  display: 'flex',
770
759
  justifyContent: 'flex-end',
771
760
  alignItems: 'center',
772
761
  paddingTop: 10,
773
762
  marginTop: 6,
774
- borderTop: '1px solid #e2e8f0',
775
- };
776
- const footerLinkStyle = {
763
+ borderTop: `1px solid ${MENU[theme].divider}`,
764
+ });
765
+ const footerLinkStyle = (theme) => ({
777
766
  display: 'inline-flex',
778
767
  alignItems: 'center',
779
768
  gap: 4,
780
769
  fontSize: 11,
781
- color: '#c2410c',
770
+ color: MENU[theme].accentText,
782
771
  fontWeight: 600,
783
772
  textDecoration: 'none',
784
- };
773
+ });
785
774
  //# sourceMappingURL=SuiteSwitcher.js.map