@unisim/sdk 0.106.0 → 0.108.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,13 +1,15 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useRef, } from 'react';
3
+ import { useEffect, useState, useRef, } from 'react';
4
4
  import { t } from './i18n.js';
5
5
  import { SUPPORTED_LANGUAGES } from './i18n.js';
6
6
  import { useLanguage } from './provider.js';
7
7
  import { DropdownSurface } from './DropdownSurface.js';
8
+ import { AccountLimits } from './AccountLimits.js';
8
9
  import { useCanHover } from './hover.js';
9
10
  import { ProfileAvatarIcon } from './ProfileAvatarIcon.js';
10
11
  import { BRAND } from './brand.js';
12
+ import { MENU, MENU_TIER_BADGE } from './menuTheme.js';
11
13
  // Native-name labels for the language picker. Kept here (not in i18n.ts) since
12
14
  // these are endonyms — they read the same regardless of the active UI locale.
13
15
  const LANGUAGE_LABELS = {
@@ -23,8 +25,12 @@ const LANGUAGE_LABELS = {
23
25
  // ──────────────────────────────────────────────────────────────────────────────
24
26
  // Component
25
27
  // ──────────────────────────────────────────────────────────────────────────────
26
- export function UserProfile({ name, email, photoUrl, initials, profileHref = 'https://app.unisim.co.uk/profile', signInHref, onSignInClick, appSettingsHref, onSignOut, extras, showLanguageSelector = true, actionsLabel, actions, pillTheme = 'light', menuAlign = 'right', ariaLabel, noAccount = false, tier, style, className, }) {
28
+ export function UserProfile({ name, email, photoUrl, initials, profileHref = 'https://app.unisim.co.uk/profile', signInHref, onSignInClick, appSettingsHref, onSignOut, extras, showLanguageSelector = true, actionsLabel, actions, pillTheme, theme = 'light', menuAlign = 'right', ariaLabel, noAccount = false, tier, showLimits = true, style, className, }) {
27
29
  const { language, setLanguage } = useLanguage();
30
+ // Not a destructuring default: `pillTheme` and `theme` are separate props and
31
+ // the fallback has to read the OTHER one, which a default in the pattern
32
+ // above cannot do without depending on declaration order.
33
+ const resolvedPillTheme = pillTheme ?? theme;
28
34
  const resolvedAriaLabel = ariaLabel ?? t(language, 'profile.label');
29
35
  // Passing `actions` is enough to get the pill — the label defaults to the
30
36
  // localised "Actions" so no caller has to reach for the SDK's i18n to say
@@ -45,6 +51,15 @@ export function UserProfile({ name, email, photoUrl, initials, profileHref = 'ht
45
51
  const [open, setOpen] = useState(false);
46
52
  const wrapRef = useRef(null);
47
53
  const closeTimer = useRef(null);
54
+ // ── Plan & limits flyout ────────────────────────────────────────────────
55
+ // `seen` gates the MOUNT, `open` gates the animation. Keeping them separate
56
+ // is what makes the Supabase queries lazy (nothing is mounted until the first
57
+ // click) without the panel flashing empty on every reopen afterwards.
58
+ const limitsEnabled = showLimits && showHeader;
59
+ const [limitsOpen, setLimitsOpen] = useState(false);
60
+ const [limitsSeen, setLimitsSeen] = useState(false);
61
+ const headerRef = useRef(null);
62
+ const limitsRef = useRef(null);
48
63
  function openNow() {
49
64
  if (closeTimer.current)
50
65
  clearTimeout(closeTimer.current);
@@ -55,6 +70,45 @@ export function UserProfile({ name, email, photoUrl, initials, profileHref = 'ht
55
70
  clearTimeout(closeTimer.current);
56
71
  closeTimer.current = setTimeout(() => setOpen(false), 220);
57
72
  }
73
+ // The flyout is a child of the menu, so it cannot outlive it — otherwise
74
+ // clicking away leaves a limits panel floating beside nothing.
75
+ useEffect(() => {
76
+ if (!open)
77
+ setLimitsOpen(false);
78
+ }, [open]);
79
+ // Two CAPTURE-phase listeners on `document`, which is where DropdownSurface
80
+ // puts its own (bubble-phase) ones. Capture runs first, so these get to
81
+ // decide what the menus below them are allowed to see.
82
+ //
83
+ // ⚠️ The mousedown one is load-bearing, not defensive. The flyout is
84
+ // portaled to <body>, so it is inside NEITHER the profile trigger nor the
85
+ // profile panel — which is exactly the test the parent menu's outside-click
86
+ // handler applies. Without this, clicking anything in the flyout closes the
87
+ // menu that opened it, taking the flyout with it.
88
+ useEffect(() => {
89
+ if (!limitsOpen)
90
+ return;
91
+ function onDown(e) {
92
+ if (limitsRef.current?.contains(e.target))
93
+ e.stopPropagation();
94
+ }
95
+ // Escape backs out one level, the way a submenu should: first press closes
96
+ // the flyout, a second closes the menu. Both surfaces listen on document,
97
+ // so without stopping here they would collapse together.
98
+ function onKey(e) {
99
+ if (e.key !== 'Escape')
100
+ return;
101
+ e.stopPropagation();
102
+ setLimitsOpen(false);
103
+ headerRef.current?.focus();
104
+ }
105
+ document.addEventListener('mousedown', onDown, true);
106
+ document.addEventListener('keydown', onKey, true);
107
+ return () => {
108
+ document.removeEventListener('mousedown', onDown, true);
109
+ document.removeEventListener('keydown', onKey, true);
110
+ };
111
+ }, [limitsOpen]);
58
112
  // Hover-to-open is desktop-only. On a touch screen one tap fires a
59
113
  // synthesised mouseenter AND a click, so hovering open then toggling shut
60
114
  // meant these menus could never be opened by touch at all — see hover.ts.
@@ -88,10 +142,35 @@ export function UserProfile({ name, email, photoUrl, initials, profileHref = 'ht
88
142
  const isPill = !!pillLabel || !!actions;
89
143
  const avatarSize = isPill ? PILL_AVATAR : 36;
90
144
  const sized = (base) => avatarSize === 36 ? base : { ...base, width: avatarSize, height: avatarSize };
91
- const avatar = photoUrl ? (_jsx("img", { src: photoUrl, alt: "", "aria-hidden": true, style: sized(avatarImgStyle) })) : showAvatarIcon ? (_jsx(ProfileAvatarIcon, { size: avatarSize })) : (_jsx("span", { style: sized(noAccount ? avatarGlyphStyle : avatarFallbackStyle), children: derivedInitials }));
145
+ // Written once and rendered by both header branches. They ARE the same three
146
+ // rows — the interactive version only adds a hint line and a chevron — and
147
+ // the copy that used to sit in each drifted the moment one of them changed.
148
+ //
149
+ // Spans, not divs: the interactive branch puts these inside a <button>, whose
150
+ // content model is phrasing content only. `nameStyle`/`emailStyle` carry the
151
+ // `display: block` that used to come from the element.
152
+ const identityRows = (_jsxs(_Fragment, { children: [name && _jsx("span", { style: nameStyle(theme), children: name }), email && _jsx("span", { style: emailStyle(theme), children: email }), tier && _jsx(TierBadge, { tier: tier, language: language, theme: theme })] }));
153
+ const avatar = photoUrl ? (_jsx("img", { src: photoUrl, alt: "", "aria-hidden": true, style: sized(avatarImgStyle) })) : showAvatarIcon ? (_jsx(ProfileAvatarIcon, { size: avatarSize })) : (_jsx("span", { style: sized(noAccount ? avatarGlyphStyle(theme) : avatarFallbackStyle(theme)), children: derivedInitials }));
92
154
  return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsx("button", { type: "button", "aria-label": pillLabel ? `${pillLabel} · ${resolvedAriaLabel}` : resolvedAriaLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => setOpen((v) => !v), onFocus: hoverOpen, style: isPill
93
- ? { ...pillTriggerStyle, ...PILL_THEMES[pillTheme].rest, ...(open ? PILL_THEMES[pillTheme].open : null) }
94
- : triggerStyle, children: isPill ? (_jsxs(_Fragment, { children: [pillLabel && _jsx("span", { style: pillLabelStyle, children: pillLabel }), _jsx(IconChevron, { open: open }), avatar] })) : (avatar) }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: menuAlign, role: "menu", surfaceStyle: menuSurfaceStyle, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [actions && (_jsxs(_Fragment, { children: [actions, _jsx(Divider, {})] })), showHeader && (_jsxs("div", { style: headerStyle, children: [name && _jsx("div", { style: nameStyle, children: name }), email && _jsx("div", { style: emailStyle, children: email }), tier && _jsx(TierBadge, { tier: tier, language: language })] })), showSignIn ? (
155
+ ? { ...pillTriggerStyle, ...PILL_THEMES[resolvedPillTheme].rest, ...(open ? PILL_THEMES[resolvedPillTheme].open : null) }
156
+ : triggerStyle(theme), children: isPill ? (_jsxs(_Fragment, { children: [pillLabel && _jsx("span", { style: pillLabelStyle, children: pillLabel }), _jsx(IconChevron, { open: open }), avatar] })) : (avatar) }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: menuAlign, role: "menu", surfaceStyle: menuSurfaceStyle(theme), onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [actions && (_jsxs(_Fragment, { children: [actions, _jsx(Divider, { theme: theme })] })), showHeader && (limitsEnabled ? (
157
+ // The same header, now a control. The identity rows are wrapped in
158
+ // one <span> so the chevron sits beside the block rather than under
159
+ // the email.
160
+ _jsxs("button", { ref: headerRef, type: "button", role: "menuitem", "aria-haspopup": "true", "aria-expanded": limitsOpen, onClick: () => {
161
+ setLimitsSeen(true);
162
+ setLimitsOpen((v) => !v);
163
+ }, style: headerButtonStyle(theme, limitsOpen), onMouseEnter: headerHoverIn(theme), onMouseLeave: headerHoverOut(theme, limitsOpen), children: [_jsxs("span", { style: { minWidth: 0, flex: 1 }, children: [identityRows, _jsx("span", { style: limitsHintStyle(theme), children: t(language, 'limits.title') })] }), _jsx(IconChevronRight, {})] })) : (_jsx("div", { style: headerStyle(theme), children: identityRows }))), limitsSeen && (_jsx(DropdownSurface, { open: limitsOpen, anchorRef: headerRef, placement: "side",
164
+ // The profile menu lives in the right-hand nav cluster, so the room
165
+ // is on its left. `side` is a preference — DropdownSurface flips it
166
+ // when the panel doesn't fit, which is what a narrow window does.
167
+ side: "left", gap: 6,
168
+ // The surface is a plain container; the labelled group is the div
169
+ // inside it, which is the element that can carry the accessible
170
+ // name. Not role="menu" either way — these are values, not
171
+ // commands, and announcing them as menu items would promise
172
+ // arrow-key navigation that isn't there.
173
+ role: "none", surfaceStyle: limitsSurfaceStyle(theme), onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setLimitsOpen(false), children: _jsx("div", { ref: limitsRef, role: "group", "aria-label": t(language, 'limits.title'), children: _jsx(AccountLimits, { language: language, theme: theme }) }) })), showSignIn ? (
95
174
  // Guest / anonymous: prominent sign-in CTA instead of "View profile".
96
175
  // Stays as an <a> (not a button) so middle-click / ctrl-click open the
97
176
  // hub login in a new tab like a normal nav link.
@@ -105,7 +184,7 @@ export function UserProfile({ name, email, photoUrl, initials, profileHref = 'ht
105
184
  e.preventDefault();
106
185
  setOpen(false);
107
186
  onSignInClick();
108
- }, style: primaryItemStyle, onMouseEnter: primaryHoverIn, onMouseLeave: primaryHoverOut, children: [_jsx(IconSignIn, {}), " ", t(language, 'profile.sign_in')] })) : showProfile ? (_jsxs("a", { role: "menuitem", href: profileHref, style: itemStyle, onMouseEnter: hoverIn, onMouseLeave: hoverOut, children: [_jsx(IconUser, {}), " ", t(language, 'profile.view_profile')] })) : null, appSettingsHref && (_jsxs("a", { role: "menuitem", href: appSettingsHref, style: itemStyle, onMouseEnter: hoverIn, onMouseLeave: hoverOut, children: [_jsx(IconGear, {}), " ", t(language, 'profile.app_settings')] })), showLanguageSelector && (_jsxs("div", { role: "none", style: languageRowStyle, children: [_jsx("span", { "aria-hidden": true, style: { display: 'inline-flex' }, children: _jsx(IconGlobe, {}) }), _jsx("span", { style: { flex: 1 }, children: t(language, 'profile.language') }), _jsx("select", { "aria-label": t(language, 'profile.language'), value: language, onChange: (e) => setLanguage(e.target.value), style: languageSelectStyle, children: SUPPORTED_LANGUAGES.map((lang) => (_jsx("option", { value: lang, children: LANGUAGE_LABELS[lang] ?? lang }, lang))) })] })), extras && (_jsxs(_Fragment, { children: [_jsx(Divider, {}), extras] })), showSignOut && (_jsxs(_Fragment, { children: [_jsx(Divider, {}), _jsxs("button", { type: "button", role: "menuitem", onClick: onSignOut, style: dangerItemStyle, onMouseEnter: dangerHoverIn, onMouseLeave: dangerHoverOut, children: [_jsx(IconLogout, {}), " ", t(language, 'profile.sign_out')] })] }))] })] }));
187
+ }, style: primaryItemStyle(theme), onMouseEnter: primaryHoverIn, onMouseLeave: primaryHoverOut, children: [_jsx(IconSignIn, {}), " ", t(language, 'profile.sign_in')] })) : showProfile ? (_jsxs("a", { role: "menuitem", href: profileHref, style: itemStyle(theme), onMouseEnter: hoverIn(theme), onMouseLeave: hoverOut(theme), children: [_jsx(IconUser, {}), " ", t(language, 'profile.view_profile')] })) : null, appSettingsHref && (_jsxs("a", { role: "menuitem", href: appSettingsHref, style: itemStyle(theme), onMouseEnter: hoverIn(theme), onMouseLeave: hoverOut(theme), children: [_jsx(IconGear, {}), " ", t(language, 'profile.app_settings')] })), showLanguageSelector && (_jsxs("div", { role: "none", style: languageRowStyle(theme), children: [_jsx("span", { "aria-hidden": true, style: { display: 'inline-flex' }, children: _jsx(IconGlobe, {}) }), _jsx("span", { style: { flex: 1 }, children: t(language, 'profile.language') }), _jsx("select", { "aria-label": t(language, 'profile.language'), value: language, onChange: (e) => setLanguage(e.target.value), style: languageSelectStyle(theme), children: SUPPORTED_LANGUAGES.map((lang) => (_jsx("option", { value: lang, children: LANGUAGE_LABELS[lang] ?? lang }, lang))) })] })), extras && (_jsxs(_Fragment, { children: [_jsx(Divider, { theme: theme }), extras] })), showSignOut && (_jsxs(_Fragment, { children: [_jsx(Divider, { theme: theme }), _jsxs("button", { type: "button", role: "menuitem", onClick: onSignOut, style: dangerItemStyle(theme), onMouseEnter: dangerHoverIn(theme), onMouseLeave: dangerHoverOut(theme), children: [_jsx(IconLogout, {}), " ", t(language, 'profile.sign_out')] })] }))] })] }));
109
188
  }
110
189
  // ──────────────────────────────────────────────────────────────────────────────
111
190
  // Helpers
@@ -120,30 +199,35 @@ function deriveInitials(name) {
120
199
  return parts[0].slice(0, 2).toUpperCase();
121
200
  return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
122
201
  }
123
- function hoverIn(e) { e.currentTarget.style.background = '#f3f4f6'; e.currentTarget.style.color = '#111827'; }
124
- function hoverOut(e) { e.currentTarget.style.background = 'transparent'; e.currentTarget.style.color = '#374151'; }
125
- function dangerHoverIn(e) { e.currentTarget.style.background = '#fef2f2'; e.currentTarget.style.color = '#b91c1c'; }
126
- function dangerHoverOut(e) { e.currentTarget.style.background = 'transparent'; e.currentTarget.style.color = '#dc2626'; }
202
+ // Hover is written to the DOM node rather than held in state — one style write
203
+ // beats re-rendering the whole menu on every pointer move across it. Each of
204
+ // these is now a factory: the handler has to close over the theme because the
205
+ // colour it restores on the way out is the theme's resting colour, not a
206
+ // constant. Restoring the wrong one leaves a row permanently mis-coloured
207
+ // after the first hover, which is the failure a naive `theme` lookup inside
208
+ // the handler would have produced.
209
+ const hoverIn = (theme) => (e) => { e.currentTarget.style.background = MENU[theme].rowHover; e.currentTarget.style.color = MENU[theme].rowHoverText; };
210
+ const hoverOut = (theme) => (e) => { e.currentTarget.style.background = 'transparent'; e.currentTarget.style.color = MENU[theme].body; };
211
+ const dangerHoverIn = (theme) => (e) => { e.currentTarget.style.background = MENU[theme].dangerHoverBg; e.currentTarget.style.color = MENU[theme].dangerHoverText; };
212
+ const dangerHoverOut = (theme) => (e) => { e.currentTarget.style.background = 'transparent'; e.currentTarget.style.color = MENU[theme].danger; };
127
213
  // Ink, not white — see BRAND.onOrange. Both stops of the brand orange are far
128
214
  // too light to carry white text (2.34:1 and 3.84:1 against a 4.5:1 floor).
129
215
  function primaryHoverIn(e) { e.currentTarget.style.background = BRAND.orangeDeep; e.currentTarget.style.color = BRAND.onOrange; }
130
216
  function primaryHoverOut(e) { e.currentTarget.style.background = BRAND.orange; e.currentTarget.style.color = BRAND.onOrange; }
131
- function Divider() {
132
- return _jsx("div", { style: { height: 1, background: '#e5e7eb', margin: '4px 0' }, "aria-hidden": true });
217
+ function Divider({ theme }) {
218
+ return _jsx("div", { style: { height: 1, background: MENU[theme].divider, margin: '4px 0' }, "aria-hidden": true });
133
219
  }
134
220
  const tierBadgeBase = {
135
221
  display: 'inline-block', marginTop: 5, padding: '2px 7px',
136
222
  borderRadius: 99, fontSize: 10, fontWeight: 700,
137
223
  letterSpacing: '0.06em', textTransform: 'uppercase',
138
224
  };
139
- const TIER_BADGE_STYLES = {
140
- free: { ...tierBadgeBase, background: '#f1f5f9', color: '#64748b' },
141
- solo: { ...tierBadgeBase, background: '#ecfdf5', color: '#047857' },
142
- pro: { ...tierBadgeBase, background: '#fff7ed', color: '#c2410c' },
143
- enterprise: { ...tierBadgeBase, background: '#f0f9ff', color: '#0369a1' },
144
- };
145
- function TierBadge({ tier, language }) {
146
- return (_jsx("span", { style: TIER_BADGE_STYLES[tier], children: t(language, `profile.tier.${tier}`) }));
225
+ function tierBadgeStyle(tier, theme) {
226
+ const pair = MENU_TIER_BADGE[theme][tier] ?? MENU_TIER_BADGE[theme].free;
227
+ return { ...tierBadgeBase, background: pair.bg, color: pair.fg };
228
+ }
229
+ function TierBadge({ tier, language, theme }) {
230
+ return (_jsx("span", { style: tierBadgeStyle(tier, theme), children: t(language, `profile.tier.${tier}`) }));
147
231
  }
148
232
  function IconUser() {
149
233
  return (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: [_jsx("path", { d: "M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2" }), _jsx("circle", { cx: "12", cy: "7", r: "4" })] }));
@@ -170,6 +254,12 @@ function IconChevron({ open }) {
170
254
  transformOrigin: 'center',
171
255
  }, children: _jsx("path", { d: "M2 4 L6 8 L10 4", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
172
256
  }
257
+ // Points sideways, not down: the panel it opens sits BESIDE the menu, and a
258
+ // down-chevron here would promise the drawer-style expansion this deliberately
259
+ // isn't.
260
+ function IconChevronRight() {
261
+ return (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", "aria-hidden": true, style: { flexShrink: 0 }, children: _jsx("path", { d: "M4.5 2 L8.5 6 L4.5 10", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
262
+ }
173
263
  function IconGlobe() {
174
264
  return (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "2", y1: "12", x2: "22", y2: "12" }), _jsx("path", { d: "M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z" })] }));
175
265
  }
@@ -179,20 +269,20 @@ function IconGlobe() {
179
269
  // Trigger sits in the right-cluster alongside the SuiteSwitcher (38×38 with
180
270
  // chrome) — match its dimensions and resting chrome so the row reads as a
181
271
  // uniform set of buttons rather than a chip next to a floating avatar.
182
- const triggerStyle = {
272
+ const triggerStyle = (theme) => ({
183
273
  display: 'inline-flex',
184
274
  alignItems: 'center',
185
275
  justifyContent: 'center',
186
276
  width: 38,
187
277
  height: 38,
188
278
  borderRadius: '50%',
189
- border: '1px solid #e2e8f0',
190
- background: '#ffffff',
279
+ border: `1px solid ${MENU[theme].triggerBorder}`,
280
+ background: MENU[theme].triggerBg,
191
281
  cursor: 'pointer',
192
282
  padding: 0,
193
283
  overflow: 'hidden',
194
284
  transition: 'all 150ms cubic-bezier(0.16,1,0.3,1)',
195
- };
285
+ });
196
286
  // ── Combined pill trigger (actionsLabel / actions set) ───────────────────────
197
287
  // One control instead of two: the app's actions menu and the profile avatar
198
288
  // share a single rounded button. Same 38px outer height as the circular
@@ -263,72 +353,128 @@ const avatarImgStyle = {
263
353
  // it sits flush inside the triggerStyle border ring. The orange/peach tint
264
354
  // is kept as a subtle brand cue — readable on both signed-in and anonymous
265
355
  // states without competing with the avatar photo when it does exist.
266
- const avatarFallbackStyle = {
356
+ const avatarFallbackStyle = (theme) => ({
267
357
  width: 36,
268
358
  height: 36,
269
359
  borderRadius: '50%',
270
- background: '#fff7ed',
271
- color: '#c2410c',
360
+ background: MENU[theme].accentBg,
361
+ color: MENU[theme].accentText,
272
362
  fontSize: 12,
273
363
  fontWeight: 700,
274
364
  display: 'inline-flex',
275
365
  alignItems: 'center',
276
366
  justifyContent: 'center',
277
367
  letterSpacing: '0.04em',
278
- };
368
+ });
279
369
  // A single settings glyph, not two bold initials: the 12px/letter-spaced
280
370
  // treatment above is tuned for "JM" and leaves one character looking lost in a
281
371
  // 38px circle. Bigger, and no letter-spacing (which shunts a lone glyph
282
372
  // off-centre).
283
- const avatarGlyphStyle = {
284
- ...avatarFallbackStyle,
373
+ const avatarGlyphStyle = (theme) => ({
374
+ ...avatarFallbackStyle(theme),
285
375
  fontSize: 19,
286
376
  fontWeight: 400,
287
377
  letterSpacing: 0,
288
378
  // The gear sits fractionally high in its em box; nudge it back to centre.
289
379
  lineHeight: 1,
290
380
  paddingTop: 1,
291
- };
381
+ });
292
382
  // Visual styling only — positioning, stacking and the open/close transition
293
383
  // are owned by <DropdownSurface />.
294
- const menuSurfaceStyle = {
384
+ const menuSurfaceStyle = (theme) => ({
295
385
  minWidth: 220,
296
- background: '#ffffff',
297
- border: '1px solid #e5e7eb',
386
+ background: MENU[theme].surface,
387
+ border: `1px solid ${MENU[theme].border}`,
298
388
  borderRadius: 12,
299
- boxShadow: '0 16px 32px -8px rgba(15,23,42,0.16), 0 4px 8px -2px rgba(15,23,42,0.08)',
389
+ boxShadow: MENU[theme].shadow,
300
390
  padding: '6px 0',
301
- color: '#111827',
302
- };
303
- const headerStyle = {
391
+ color: MENU[theme].text,
392
+ });
393
+ const headerStyle = (theme) => ({
304
394
  padding: '8px 14px 10px',
305
- borderBottom: '1px solid #e5e7eb',
395
+ borderBottom: `1px solid ${MENU[theme].divider}`,
306
396
  marginBottom: 4,
307
397
  minWidth: 0,
398
+ });
399
+ // The same header, as a button. Everything below the border is a reset of what
400
+ // a <button> brings with it; the padding, rule and spacing are headerStyle's,
401
+ // kept identical so the two branches are the same block of pixels apart from
402
+ // the chevron and the hover fill.
403
+ const headerButtonStyle = (theme, active) => ({
404
+ ...headerStyle(theme),
405
+ display: 'flex',
406
+ alignItems: 'center',
407
+ gap: 10,
408
+ width: '100%',
409
+ textAlign: 'left',
410
+ font: 'inherit',
411
+ color: MENU[theme].muted,
412
+ border: 0,
413
+ borderBottom: `1px solid ${MENU[theme].divider}`,
414
+ background: active ? MENU[theme].rowHover : 'transparent',
415
+ cursor: 'pointer',
416
+ transition: 'background 120ms',
417
+ });
418
+ // Written to the node like the other hover handlers. `active` closes over
419
+ // whether the flyout is open, so leaving the header while its panel is still
420
+ // up restores the OPEN fill rather than wiping it — otherwise the control that
421
+ // owns the visible panel stops looking like it does the moment you move the
422
+ // pointer into that panel.
423
+ const headerHoverIn = (theme) => (e) => { e.currentTarget.style.background = MENU[theme].rowHover; };
424
+ const headerHoverOut = (theme, active) => (e) => {
425
+ e.currentTarget.style.background = active ? MENU[theme].rowHover : 'transparent';
308
426
  };
309
- const nameStyle = {
427
+ // The one line of copy that says the header does something — without it, a
428
+ // chevron beside a name is a guess.
429
+ //
430
+ // Deliberately NOT the 10px uppercase treatment of the tier badge sitting
431
+ // directly above it: two small-caps chips stacked read as two badges, and this
432
+ // is an action, not a label. Sentence case in the accent colour reads as the
433
+ // link it behaves like. (accentText on surface is 5.18:1 light / 8.67:1 dark —
434
+ // `node scripts/check-menu-contrast.mjs`.)
435
+ const limitsHintStyle = (theme) => ({
436
+ display: 'block',
437
+ marginTop: 6,
438
+ fontSize: 11,
439
+ fontWeight: 600,
440
+ color: MENU[theme].accentText,
441
+ });
442
+ // Wider than the 220px profile menu it hangs off: this panel carries app names
443
+ // against status chips on the same line, and 220 puts "Universal Signatures"
444
+ // into an ellipsis next to "AVAILABLE".
445
+ const limitsSurfaceStyle = (theme) => ({
446
+ width: 286,
447
+ background: MENU[theme].surface,
448
+ border: `1px solid ${MENU[theme].border}`,
449
+ borderRadius: 12,
450
+ boxShadow: MENU[theme].shadow,
451
+ color: MENU[theme].text,
452
+ });
453
+ const nameStyle = (theme) => ({
454
+ display: 'block',
310
455
  fontSize: 13,
311
456
  fontWeight: 600,
312
- color: '#0f172a',
457
+ color: MENU[theme].text,
313
458
  overflow: 'hidden',
314
459
  textOverflow: 'ellipsis',
315
460
  whiteSpace: 'nowrap',
316
- };
317
- const emailStyle = {
461
+ });
462
+ const emailStyle = (theme) => ({
463
+ display: 'block',
318
464
  fontSize: 11,
319
- color: '#64748b',
465
+ color: MENU[theme].muted,
320
466
  marginTop: 2,
321
467
  overflow: 'hidden',
322
468
  textOverflow: 'ellipsis',
323
469
  whiteSpace: 'nowrap',
324
- };
325
- const itemStyle = {
470
+ });
471
+ const itemStyle = (theme) => ({
326
472
  display: 'flex',
327
473
  alignItems: 'center',
328
474
  gap: 10,
329
475
  padding: '8px 14px',
330
476
  fontSize: 13,
331
- color: '#374151',
477
+ color: MENU[theme].body,
332
478
  background: 'transparent',
333
479
  border: 0,
334
480
  cursor: 'pointer',
@@ -337,39 +483,45 @@ const itemStyle = {
337
483
  textDecoration: 'none',
338
484
  fontFamily: 'inherit',
339
485
  transition: 'background 120ms, color 120ms',
340
- };
341
- const dangerItemStyle = {
342
- ...itemStyle,
343
- color: '#dc2626',
344
- };
486
+ });
487
+ const dangerItemStyle = (theme) => ({
488
+ ...itemStyle(theme),
489
+ color: MENU[theme].danger,
490
+ });
345
491
  // Language row: same padding rhythm as itemStyle but holds a <select> on the
346
492
  // right rather than being a clickable row itself.
347
- const languageRowStyle = {
493
+ const languageRowStyle = (theme) => ({
348
494
  display: 'flex',
349
495
  alignItems: 'center',
350
496
  gap: 10,
351
497
  padding: '8px 14px',
352
498
  fontSize: 13,
353
- color: '#374151',
499
+ color: MENU[theme].body,
354
500
  fontFamily: 'inherit',
355
- };
356
- const languageSelectStyle = {
501
+ });
502
+ const languageSelectStyle = (theme) => ({
357
503
  fontSize: 12,
358
504
  fontFamily: 'inherit',
359
505
  padding: '3px 6px',
360
- border: '1px solid #d1d5db',
506
+ border: `1px solid ${MENU[theme].inputBorder}`,
361
507
  borderRadius: 6,
362
- background: '#f9fafb',
363
- color: '#0f172a',
508
+ background: MENU[theme].inputBg,
509
+ color: MENU[theme].inputText,
510
+ // ⚠️ Load-bearing on dark, and only there. A <select> paints its own dropdown
511
+ // list from the UA stylesheet, not from this element's colours, so a dark
512
+ // control with a light popup is the default outcome unless the element
513
+ // declares which scheme it is in. Same trick, and the same reason, as the
514
+ // `color-scheme: dark` on Universal BlackBook's <html>.
515
+ colorScheme: theme,
364
516
  cursor: 'pointer',
365
517
  outline: 'none',
366
- };
518
+ });
367
519
  // "Sign in" is the primary call-to-action for guest sessions, so it gets
368
520
  // the brand orange fill rather than the neutral hover-row treatment used for
369
521
  // "View profile". Sits inset 6px on each side so it reads as a button card
370
522
  // inside the dropdown rather than an edge-to-edge menu row.
371
- const primaryItemStyle = {
372
- ...itemStyle,
523
+ const primaryItemStyle = (theme) => ({
524
+ ...itemStyle(theme),
373
525
  background: BRAND.orange,
374
526
  // Ink rather than white: white on this orange is 2.34:1. See BRAND.onOrange.
375
527
  color: BRAND.onOrange,
@@ -379,5 +531,5 @@ const primaryItemStyle = {
379
531
  width: 'calc(100% - 12px)',
380
532
  padding: '9px 12px',
381
533
  justifyContent: 'flex-start',
382
- };
534
+ });
383
535
  //# sourceMappingURL=UserProfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserProfile.js","sourceRoot":"","sources":["../src/UserProfile.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserProfile.js","sourceRoot":"","sources":["../src/UserProfile.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { SubTier, Subscription } from './types.js';
2
+ /**
3
+ * `available` — untouched, or no row yet.
4
+ * `held` — spent on something refundable that is still in flight (a stored
5
+ * upload, a signature request, a live poll). Deleting that returns the token.
6
+ * `spent` — gone for good. Only Universal Webinar does this, deliberately:
7
+ * live hosting has already cost real infrastructure by the time it ends.
8
+ */
9
+ export type AppTokenStatus = 'available' | 'held' | 'spent';
10
+ export interface AppToken {
11
+ /** SDK product code — 'pdf', 'qr', 'webinar', … */
12
+ app: string;
13
+ status: AppTokenStatus;
14
+ }
15
+ export interface AdminContact {
16
+ /** Display name of an owner/admin of the org, when one has set a name. */
17
+ name: string | null;
18
+ /** The org's billing email. NOT the admin's own address — `profiles` has no
19
+ * email column, and inventing one from `auth.users` would need service-role
20
+ * access the browser will never have. */
21
+ email: string | null;
22
+ }
23
+ export interface AccountLimits {
24
+ /** 'free' when the org has no subscription row at all, which is the common
25
+ * case for someone who just signed in to a free app. */
26
+ tier: SubTier;
27
+ status: Subscription['status'] | null;
28
+ /** ISO timestamp this paid period ends. Null on free AND on Lifetime. */
29
+ periodEnd: string | null;
30
+ /** Set only on the Lifetime plan (tier 'enterprise' + no periodEnd). */
31
+ lifetimeAt: string | null;
32
+ /** The PURCHASED wallet — top-ups and admin grants. Separate from, and spent
33
+ * after, the per-app free tokens. */
34
+ credits: number;
35
+ /** Only the rows that exist. Any app not listed still has its free token. */
36
+ tokens: AppToken[];
37
+ /** This app's own free token, resolved against the absence rule above. */
38
+ thisApp: AppToken;
39
+ /** Who to ask about the plan, when the viewer is not an admin themselves. */
40
+ admin: AdminContact | null;
41
+ /** The viewer is an owner/admin of the org, so the limits ARE theirs to
42
+ * change and there is nobody to be told to ask. */
43
+ isAdmin: boolean;
44
+ loading: boolean;
45
+ }
46
+ /**
47
+ * Everything the plan & limits flyout shows, for the active org.
48
+ *
49
+ * Mount it lazily — the component that calls it should only be rendered once
50
+ * the user has actually asked to see their limits. Two round-trips on every
51
+ * navbar render, in eighteen apps, to populate a panel most sessions never
52
+ * open, is not a trade worth making.
53
+ */
54
+ export declare function useAccountLimits(): AccountLimits;
55
+ //# sourceMappingURL=entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAA;AAE3D,MAAM,WAAW,QAAQ;IACvB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB;;6CAEyC;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B;4DACwD;IACxD,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IACrC,yEAAyE;IACzE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;yCACqC;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,0EAA0E;IAC1E,OAAO,EAAE,QAAQ,CAAA;IACjB,6EAA6E;IAC7E,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1B;uDACmD;IACnD,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAWD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAmGhD"}