@unisim/sdk 0.95.0 → 0.97.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/dist/ChangelogMenu.d.ts.map +1 -1
- package/dist/ChangelogMenu.js +8 -1
- package/dist/ChangelogMenu.js.map +1 -1
- package/dist/CompanyMenu.d.ts.map +1 -1
- package/dist/CompanyMenu.js +9 -2
- package/dist/CompanyMenu.js.map +1 -1
- package/dist/KnowledgeBaseMenu.d.ts.map +1 -1
- package/dist/KnowledgeBaseMenu.js +8 -1
- package/dist/KnowledgeBaseMenu.js.map +1 -1
- package/dist/SuiteSwitcher.d.ts +1 -1
- package/dist/SuiteSwitcher.d.ts.map +1 -1
- package/dist/SuiteSwitcher.js +50 -72
- package/dist/SuiteSwitcher.js.map +1 -1
- package/dist/UserProfile.d.ts.map +1 -1
- package/dist/UserProfile.js +9 -2
- package/dist/UserProfile.js.map +1 -1
- package/dist/appMarks.d.ts +9 -0
- package/dist/appMarks.d.ts.map +1 -0
- package/dist/appMarks.js +223 -0
- package/dist/appMarks.js.map +1 -0
- package/dist/hover.d.ts +19 -0
- package/dist/hover.d.ts.map +1 -0
- package/dist/hover.js +39 -0
- package/dist/hover.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangelogMenu.d.ts","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChangelogMenu.d.ts","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,OAAO,CAAA;AAYd,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAeD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAA8B,EAC9B,KAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,2CAyFpB"}
|
package/dist/ChangelogMenu.js
CHANGED
|
@@ -5,6 +5,7 @@ import { useChangelog } from './changelog.js';
|
|
|
5
5
|
import { t } from './i18n.js';
|
|
6
6
|
import { useLanguage } from './provider.js';
|
|
7
7
|
import { DropdownSurface } from './DropdownSurface.js';
|
|
8
|
+
import { useCanHover } from './hover.js';
|
|
8
9
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
9
10
|
// Component
|
|
10
11
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
@@ -40,7 +41,13 @@ export function ChangelogMenu({ iconSrc = DEFAULT_TRIGGER_ICON, limit = 5, produ
|
|
|
40
41
|
clearTimeout(closeTimer.current);
|
|
41
42
|
closeTimer.current = setTimeout(() => setOpen(false), 220);
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
// Hover-to-open is desktop-only. On a touch screen one tap fires a
|
|
45
|
+
// synthesised mouseenter AND a click, so hovering open then toggling shut
|
|
46
|
+
// meant these menus could never be opened by touch at all — see hover.ts.
|
|
47
|
+
const canHover = useCanHover();
|
|
48
|
+
const hoverOpen = canHover ? openNow : undefined;
|
|
49
|
+
const hoverClose = canHover ? closeSoon : undefined;
|
|
50
|
+
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": resolvedAriaLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => setOpen((v) => !v), onFocus: hoverOpen, style: triggerStyle, children: _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: { width: 28, height: 28, display: 'block' } }) }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: "right", arrow: true, role: "menu", surfaceStyle: menuSurfaceStyle, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [_jsxs("div", { style: headerStyle, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', lineHeight: 1.1, minWidth: 0 }, children: [_jsx("span", { style: eyebrowStyle, children: t(language, 'suite.portal_eyebrow') }), _jsx("span", { style: titleStyle, children: t(language, 'changelog.title') })] }), _jsx("span", { style: versionChipStyle, children: currentVersion ?? '…' })] }), _jsx("div", { style: bodyStyle, children: loading ? (_jsx("p", { style: emptyStyle, children: t(language, 'changelog.loading') })) : releases.length === 0 ? (_jsx("p", { style: emptyStyle, children: t(language, 'changelog.no_entries') })) : (releases.map((r) => _jsx(ReleaseBlock, { release: r, language: language }, r.version))) }), _jsx("div", { style: footerStyle, children: _jsxs("a", { href: "https://changelog.unisim.co.uk/changelog.json", target: "_blank", rel: "noreferrer", style: footerLinkStyle, children: [t(language, 'changelog.full_changelog'), " \u2197"] }) })] })] }));
|
|
44
51
|
}
|
|
45
52
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
46
53
|
// Subcomponents
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangelogMenu.js","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EACL,QAAQ,EACR,MAAM,GAEP,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"ChangelogMenu.js","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyMenu.d.ts","sourceRoot":"","sources":["../src/CompanyMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CompanyMenu.d.ts","sourceRoot":"","sources":["../src/CompanyMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,OAAO,CAAA;AAWd,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;IACpD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;IACrD,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD,eAAO,MAAM,oBAAoB;;;;;;;CAOvB,CAAA;AAiFV,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,YAA4C,EAC5C,UAAwC,EACxC,UAAwC,EACxC,YAA4C,EAC5C,WAA0C,EAC1C,SAAsC,EACtC,OAAO,EACP,QAAQ,EACR,SAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,KAAK,EACL,SAAS,GACV,EAAE,gBAAgB,2CAsGlB"}
|
package/dist/CompanyMenu.js
CHANGED
|
@@ -5,6 +5,7 @@ import { t } from './i18n.js';
|
|
|
5
5
|
import { useLanguage } from './provider.js';
|
|
6
6
|
import { useOrgRole } from './auth.js';
|
|
7
7
|
import { DropdownSurface } from './DropdownSurface.js';
|
|
8
|
+
import { useCanHover } from './hover.js';
|
|
8
9
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
9
10
|
// Defaults — single source of truth for the suite's "My Company" hub URLs.
|
|
10
11
|
// Updating these here propagates to every product on the next SDK release.
|
|
@@ -73,7 +74,13 @@ export function CompanyMenu({ label, projectsHref = DEFAULT_COMPANY_URLS.project
|
|
|
73
74
|
clearTimeout(closeTimer.current);
|
|
74
75
|
closeTimer.current = setTimeout(() => setOpen(false), 220);
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
+
// Hover-to-open is desktop-only. On a touch screen one tap fires a
|
|
78
|
+
// synthesised mouseenter AND a click, so hovering open then toggling shut
|
|
79
|
+
// meant these menus could never be opened by touch at all — see hover.ts.
|
|
80
|
+
const canHover = useCanHover();
|
|
81
|
+
const hoverOpen = canHover ? openNow : undefined;
|
|
82
|
+
const hoverClose = canHover ? closeSoon : undefined;
|
|
83
|
+
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsxs("button", { type: "button", "aria-label": resolvedLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => setOpen((v) => !v), onFocus: hoverOpen, className: triggerClassName, style: triggerClassName
|
|
77
84
|
? undefined
|
|
78
85
|
: {
|
|
79
86
|
display: 'inline-flex',
|
|
@@ -87,7 +94,7 @@ export function CompanyMenu({ label, projectsHref = DEFAULT_COMPANY_URLS.project
|
|
|
87
94
|
cursor: 'pointer',
|
|
88
95
|
fontFamily: 'inherit',
|
|
89
96
|
...triggerStyle,
|
|
90
|
-
}, children: [resolvedLabel, _jsx(IconChevron, {})] }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: "left", role: "menu", surfaceStyle: menuSurfaceStyle, onMouseEnter:
|
|
97
|
+
}, children: [resolvedLabel, _jsx(IconChevron, {})] }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: "left", role: "menu", surfaceStyle: menuSurfaceStyle, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [_jsx(Item, { href: projectsHref, icon: _jsx(IconProjects, {}), label: t(language, 'company.projects') }), _jsx(Item, { href: peopleHref, icon: _jsx(IconPeople, {}), label: t(language, 'company.people') }), _jsx(Item, { href: placesHref, icon: _jsx(IconPlaces, {}), label: t(language, 'company.places') }), _jsx(Item, { href: brandingHref, icon: _jsx(IconBranding, {}), label: t(language, 'company.branding') }), billingLocked ? (_jsx(LockedItem, { icon: _jsx(IconBilling, {}), label: `${t(language, 'company.billing')} 🔒`, hint: t(language, 'company.billing_locked') })) : (_jsx(Item, { href: billingHref, icon: _jsx(IconBilling, {}), label: t(language, 'company.billing') })), !hideLogin && onLogout && (_jsxs(_Fragment, { children: [_jsx(Divider, {}), _jsx(Item, { onClick: onLogout, icon: _jsx(IconLogout, {}), label: t(language, 'company.sign_out'), danger: true })] }))] })] }));
|
|
91
98
|
}
|
|
92
99
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
93
100
|
// Subcomponents + styles
|
package/dist/CompanyMenu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyMenu.js","sourceRoot":"","sources":["../src/CompanyMenu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EACL,QAAQ,EACR,MAAM,GAGP,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"CompanyMenu.js","sourceRoot":"","sources":["../src/CompanyMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnowledgeBaseMenu.d.ts","sourceRoot":"","sources":["../src/KnowledgeBaseMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"KnowledgeBaseMenu.d.ts","sourceRoot":"","sources":["../src/KnowledgeBaseMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,OAAO,CAAA;AAUd,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAS,MAAM,CAAA;IACjB,sEAAsE;IACtE,IAAI,EAAO,MAAM,CAAA;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4EAA4E;IAC5E,IAAI,EAAO,MAAM,CAAA;IACjB,gFAAgF;IAChF,KAAK,CAAC,EAAK,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAK,iBAAiB,EAAE,CAAA;IACrC,uDAAuD;IACvD,aAAa,CAAC,EAAI,MAAM,CAAA;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAK,MAAM,CAAA;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAK,iBAAiB,EAAE,CAAA;IACrC,uDAAuD;IACvD,aAAa,CAAC,EAAI,MAAM,CAAA;IACxB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,0EAA0E;IAC1E,YAAY,CAAC,EAAK,aAAa,CAAA;IAC/B,KAAK,CAAC,EAAY,aAAa,CAAA;IAC/B,SAAS,CAAC,EAAQ,MAAM,CAAA;CACzB;AASD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAQpD,CAAA;AA2BD,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,KAAK,EACL,SAAS,GACV,EAAE,sBAAsB,2CAiGxB"}
|
|
@@ -4,6 +4,7 @@ import { useState, useRef, } from 'react';
|
|
|
4
4
|
import { t } from './i18n.js';
|
|
5
5
|
import { useLanguage } from './provider.js';
|
|
6
6
|
import { DropdownSurface } from './DropdownSurface.js';
|
|
7
|
+
import { useCanHover } from './hover.js';
|
|
7
8
|
/**
|
|
8
9
|
* Cap on items shown per section in the dropdown. Anything beyond this is
|
|
9
10
|
* surfaced via the "View all" row, so the menu stays compact regardless of
|
|
@@ -64,6 +65,12 @@ export function KnowledgeBaseMenu({ productItems, productKBHref, productLabel, c
|
|
|
64
65
|
clearTimeout(closeTimer.current);
|
|
65
66
|
closeTimer.current = setTimeout(() => setOpen(false), 220);
|
|
66
67
|
}
|
|
68
|
+
// Hover-to-open is desktop-only. On a touch screen one tap fires a
|
|
69
|
+
// synthesised mouseenter AND a click, so hovering open then toggling shut
|
|
70
|
+
// meant these menus could never be opened by touch at all — see hover.ts.
|
|
71
|
+
const canHover = useCanHover();
|
|
72
|
+
const hoverOpen = canHover ? openNow : undefined;
|
|
73
|
+
const hoverClose = canHover ? closeSoon : undefined;
|
|
67
74
|
const visibleProductItems = productItems?.slice(0, MAX_ITEMS) ?? [];
|
|
68
75
|
// Fall back to the suite-wide default ("About Universal Simulation") when
|
|
69
76
|
// the consumer doesn't pass anything explicit. Pass `companyItems={[]}` to
|
|
@@ -72,7 +79,7 @@ export function KnowledgeBaseMenu({ productItems, productKBHref, productLabel, c
|
|
|
72
79
|
const visibleCompanyItems = effectiveCompanyItems.slice(0, MAX_ITEMS);
|
|
73
80
|
const hasProductItems = visibleProductItems.length > 0;
|
|
74
81
|
const hasCompanyItems = visibleCompanyItems.length > 0;
|
|
75
|
-
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter:
|
|
82
|
+
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsxs("button", { type: "button", "aria-label": t(language, 'kb.label'), "aria-expanded": open, "aria-haspopup": "true", onClick: () => setOpen((v) => !v), onFocus: hoverOpen, className: triggerClassName, style: triggerClassName ? undefined : { ...defaultTriggerStyle, ...triggerStyle }, children: [t(language, 'kb.label'), _jsx(IconChevron, {})] }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: "left", role: "menu", surfaceStyle: menuSurfaceStyle, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [_jsx(SectionHeader, { label: resolvedProductLabel }), hasProductItems ? (_jsxs(_Fragment, { children: [_jsx("div", { style: listStyle, children: visibleProductItems.map((item) => (_jsx(KBLink, { item: item }, item.id))) }), _jsx(SeeAllRow, { href: productKBHref ?? '#', label: t(language, 'kb.view_all') })] })) : (_jsx(EmptyState, { text: t(language, 'kb.no_articles') })), _jsx(Divider, {}), _jsx(SectionHeader, { label: t(language, 'kb.company_knowledge') }), hasCompanyItems ? (_jsxs(_Fragment, { children: [_jsx("div", { style: listStyle, children: visibleCompanyItems.map((item) => (_jsx(KBLink, { item: item }, item.id))) }), _jsx(SeeAllRow, { href: companyKBHref ?? '#', label: t(language, 'kb.view_all') })] })) : (_jsx(EmptyState, { text: t(language, 'kb.company_coming_soon') }))] })] }));
|
|
76
83
|
}
|
|
77
84
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
78
85
|
// Subcomponents
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnowledgeBaseMenu.js","sourceRoot":"","sources":["../src/KnowledgeBaseMenu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EACL,QAAQ,EACR,MAAM,GAGP,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"KnowledgeBaseMenu.js","sourceRoot":"","sources":["../src/KnowledgeBaseMenu.tsx"],"names":[],"mappings":"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"}
|
package/dist/SuiteSwitcher.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { type ReactNode, type CSSProperties } from 'react';
|
|
|
13
13
|
* exact on purpose. Keep this list complete anyway, so nobody ever needs to
|
|
14
14
|
* lean on the hatch.
|
|
15
15
|
*/
|
|
16
|
-
export type SuiteProductId = 'ergo_assess' | 'cyber_assess' | 'workplace_assess' | 'fire_assess' | 'coshh_assess' | 'risk_assess' | 'pdf' | 'webinar' | 'images' | 'exports' | 'qr' | 'polling' | 'signatures' | 'recorder' | 'ai' | 'screens' | 'usb' | 'converter' | '
|
|
16
|
+
export type SuiteProductId = 'ergo_assess' | 'cyber_assess' | 'workplace_assess' | 'fire_assess' | 'coshh_assess' | 'risk_assess' | 'pdf' | 'webinar' | 'images' | 'exports' | 'qr' | 'polling' | 'signatures' | 'recorder' | 'ai' | 'screens' | 'usb' | 'converter' | 'diy' | 'beam' | 'video' | 'compress' | 'charts' | 'palspayin' | 'central' | (string & {});
|
|
17
17
|
export interface SuiteProduct {
|
|
18
18
|
id: SuiteProductId;
|
|
19
19
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuiteSwitcher.d.ts","sourceRoot":"","sources":["../src/SuiteSwitcher.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SuiteSwitcher.d.ts","sourceRoot":"","sources":["../src/SuiteSwitcher.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,OAAO,CAAA;AAWd;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,aAAa,GACb,KAAK,GACL,SAAS,GACT,QAAQ,GACR,SAAS,GACT,IAAI,GACJ,SAAS,GACT,YAAY,GACZ,UAAU,GACV,IAAI,GACJ,SAAS,GACT,KAAK,GACL,WAAW,GACX,KAAK,GACL,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,WAAW,GACX,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,cAAc,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,KAAK,EAAE,SAAS,CAAA;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;CAC/E;AAED,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,OAAO,EAAE,cAAc,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,uEAAuE;IACvE,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAeD,wBAAgB,MAAM,CAAC,EAAE,KAAU,EAAE,MAAW,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,2CAoBtF;AA8ID,eAAO,MAAM,sBAAsB,EAAE,YAAY,EA+ChD,CAAA;AAuBD,eAAO,MAAM,+BAA+B,EAAE,YAAY,EAwKzD,CAAA;AAgBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAKnE,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,EAGD,CAAA;AAuFxC,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,QAAiC,EACjC,OAA8B,EAC9B,SAAS,EACT,QAAQ,EACR,KAAe,EACf,IAAI,EACJ,UAA0C,EAC1C,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAsB,EACtB,iBAAyB,EACzB,WAAmB,EACnB,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,2CA0TpB"}
|
package/dist/SuiteSwitcher.js
CHANGED
|
@@ -4,6 +4,8 @@ import { useState, useRef, useEffect, } from 'react';
|
|
|
4
4
|
import { t } from './i18n.js';
|
|
5
5
|
import { useLanguage } from './provider.js';
|
|
6
6
|
import { DropdownSurface } from './DropdownSurface.js';
|
|
7
|
+
import { APP_MARKS, APP_MARK_CSS } from './appMarks.js';
|
|
8
|
+
import { useCanHover } from './hover.js';
|
|
7
9
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
8
10
|
// Default product catalogue
|
|
9
11
|
//
|
|
@@ -119,65 +121,22 @@ export const DEFAULT_SUITE_PRODUCTS = [
|
|
|
119
121
|
// the suite-home row in the dropdown lands on the apps portal instead of the
|
|
120
122
|
// Assess portal.
|
|
121
123
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
//
|
|
130
|
-
//
|
|
131
|
-
// arrow, on the suite's 64-unit tile grid (rx 14 ≈ the rx 7 the other 32-grid
|
|
132
|
-
// glyphs use). Keep this in sync with that asset if the app rebrands.
|
|
133
|
-
const EXPORTS_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 64 64", "aria-hidden": "true", children: [_jsx("rect", { width: "64", height: "64", rx: "14", fill: "#0f172a" }), _jsxs("g", { fill: "none", stroke: "#FFFFFF", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "27", cy: "36", r: "13", strokeWidth: "2.4" }), _jsx("ellipse", { cx: "27", cy: "36", rx: "13", ry: "4.6", strokeWidth: "1.4", opacity: "0.55" }), _jsx("line", { x1: "27", y1: "23", x2: "27", y2: "49", strokeWidth: "1.4", opacity: "0.55" }), _jsx("path", { d: "M27 23c4.6 3.6 4.6 22.4 0 26", strokeWidth: "1.4", opacity: "0.55" }), _jsx("path", { d: "M27 23c-4.6 3.6-4.6 22.4 0 26", strokeWidth: "1.4", opacity: "0.55" })] }), _jsxs("g", { fill: "none", stroke: "#fe8c01", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M40 22 L54 8", strokeWidth: "3" }), _jsx("path", { d: "M44 8 L54 8 L54 18", strokeWidth: "3" })] })] }));
|
|
134
|
-
// Mirrors Universal QR's favicon.svg (halved to the 32 grid) — dark-slate tile,
|
|
135
|
-
// white finder rings with orange centre dots + accent module.
|
|
136
|
-
const QR_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("rect", { x: "5", y: "5", width: "8", height: "8", fill: "white" }), _jsx("rect", { x: "7", y: "7", width: "4", height: "4", fill: "#0f172a" }), _jsx("rect", { x: "8", y: "8", width: "2", height: "2", fill: "#fe8c01" }), _jsx("rect", { x: "19", y: "5", width: "8", height: "8", fill: "white" }), _jsx("rect", { x: "21", y: "7", width: "4", height: "4", fill: "#0f172a" }), _jsx("rect", { x: "22", y: "8", width: "2", height: "2", fill: "#fe8c01" }), _jsx("rect", { x: "5", y: "19", width: "8", height: "8", fill: "white" }), _jsx("rect", { x: "7", y: "21", width: "4", height: "4", fill: "#0f172a" }), _jsx("rect", { x: "8", y: "22", width: "2", height: "2", fill: "#fe8c01" }), _jsx("rect", { x: "16", y: "7", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "16", y: "11", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "16", y: "16", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "20", y: "16", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "24", y: "16", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "16", y: "20", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "20", y: "20", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "20", y: "24", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "24", y: "24", width: "2", height: "2", fill: "white" }), _jsx("rect", { x: "24", y: "20", width: "2", height: "2", fill: "#fe8c01" })] }));
|
|
137
|
-
// Mirrors Universal Date Polling's favicon.svg — orange calendar + tick on
|
|
138
|
-
// dark slate.
|
|
139
|
-
const POLLING_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("rect", { x: "6", y: "8", width: "20", height: "17", rx: "3", fill: "none", stroke: "#fe8c01", strokeWidth: "2.4" }), _jsx("path", { d: "M6 13 H26", stroke: "#fe8c01", strokeWidth: "2.4" }), _jsx("path", { d: "M11 6 V10 M21 6 V10", stroke: "#fe8c01", strokeWidth: "2.4", strokeLinecap: "round" }), _jsx("path", { d: "M12 18.5 L15 21.5 L21 15.5", fill: "none", stroke: "#fe8c01", strokeWidth: "2.6", strokeLinecap: "round", strokeLinejoin: "round" })] }));
|
|
140
|
-
// Mirrors Universal Signatures' favicon.svg — orange signature stroke +
|
|
141
|
-
// baseline on dark slate.
|
|
142
|
-
const SIGNATURES_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("path", { d: "M6 21c3-1 4-9 6-9s1 7 3 7 3-6 5-6 1 3 3 3", fill: "none", stroke: "#fe8c01", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M6 25h20", stroke: "#ff9a1f", strokeWidth: "1.6", strokeLinecap: "round" })] }));
|
|
143
|
-
// Mirrors Universal Recorder's mic mark — orange microphone (capsule, cradle,
|
|
144
|
-
// stand) on dark slate. Keep in sync with the app's favicon when it ships.
|
|
145
|
-
const RECORDER_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("rect", { x: "12.5", y: "5.5", width: "7", height: "13", rx: "3.5", fill: "none", stroke: "#fe8c01", strokeWidth: "2.2" }), _jsx("path", { d: "M9 14a7 7 0 0 0 14 0", fill: "none", stroke: "#fe8c01", strokeWidth: "2.2", strokeLinecap: "round" }), _jsx("path", { d: "M16 21.5V25.5", stroke: "#fe8c01", strokeWidth: "2.2", strokeLinecap: "round" }), _jsx("path", { d: "M11.5 25.5h9", stroke: "#ff9a1f", strokeWidth: "2.2", strokeLinecap: "round" })] }));
|
|
146
|
-
// Universal AI — the "spark" motif (a bright four-point star + a smaller one)
|
|
147
|
-
// in the brand orange on dark slate.
|
|
148
|
-
const AI_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("path", { d: "M14 5c1 6.2 2.8 8 9 9-6.2 1-8 2.8-9 9-1-6.2-2.8-8-9-9 6.2-1 8-2.8 9-9Z", fill: "#fe8c01" }), _jsx("path", { d: "M24 19c.5 2.6 1.4 3.5 4 4-2.6.5-3.5 1.4-4 4-.5-2.6-1.4-3.5-4-4 2.6-.5 3.5-1.4 4-4Z", fill: "#ff9a1f" })] }));
|
|
149
|
-
// Universal Screens — a second display extending off the first, orange outlines
|
|
150
|
-
// on dark slate (the brighter front screen is the "extended" one).
|
|
151
|
-
const SCREENS_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("rect", { x: "4.5", y: "8", width: "15", height: "11", rx: "2", fill: "none", stroke: "#ff9a1f", strokeWidth: "2.2" }), _jsx("rect", { x: "14.5", y: "13", width: "13", height: "10", rx: "2", fill: "#0f172a", stroke: "#fe8c01", strokeWidth: "2.2" }), _jsx("path", { d: "M17.5 23v2.5M14 25.5h7", stroke: "#fe8c01", strokeWidth: "2", strokeLinecap: "round" })] }));
|
|
152
|
-
// Universal USB Detector — the classic USB "trident" in the suite's orange on
|
|
153
|
-
// the shared dark rounded tile (matches the geeky-family glyph treatment).
|
|
154
|
-
const USB_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsxs("g", { fill: "none", stroke: "#fe8c01", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M16 8v16" }), _jsx("path", { d: "M16 15l-4 2.5v2.5" }), _jsx("path", { d: "M16 13l4 2.5v2" })] }), _jsx("path", { d: "M16 5.5l-2.6 4h5.2z", fill: "#ff9a1f" }), _jsx("circle", { cx: "16", cy: "24.5", r: "2.1", fill: "#ff9a1f" }), _jsx("rect", { x: "10", y: "19.4", width: "3.4", height: "3.4", rx: "0.6", fill: "#ff9a1f" }), _jsx("circle", { cx: "20", cy: "17", r: "1.9", fill: "#ff9a1f" })] }));
|
|
155
|
-
// Universal Converter — a conversion ring (two arcs, two arrowheads) around an
|
|
156
|
-
// audio waveform: "format in, format out", with the bars naming the phase that
|
|
157
|
-
// shipped first (audio; video is the same core, one tab over). Kept clear of
|
|
158
|
-
// Recorder's microphone and Exports' globe-plus-arrow. Mirrors the app's own
|
|
159
|
-
// favicon.svg / ProductLogo.tsx — the navbar copy carries heavier strokes
|
|
160
|
-
// because this weight goes muddy at 16 px.
|
|
161
|
-
const CONVERTER_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsxs("g", { fill: "none", stroke: "#fe8c01", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M8 13.1A8.5 8.5 0 0 1 24 13.1" }), _jsx("path", { d: "M21.2 11.6 24 13.1 22.6 16" }), _jsx("path", { d: "M24 18.9A8.5 8.5 0 0 1 8 18.9" }), _jsx("path", { d: "M10.8 20.4 8 18.9 9.4 16" })] }), _jsxs("g", { fill: "#ff9a1f", children: [_jsx("rect", { x: "12.6", y: "13.6", width: "1.8", height: "4.8", rx: "0.9" }), _jsx("rect", { x: "15.1", y: "11.4", width: "1.8", height: "9.2", rx: "0.9" }), _jsx("rect", { x: "17.6", y: "14.2", width: "1.8", height: "3.6", rx: "0.9" })] })] }));
|
|
162
|
-
// Mirrors Universal_DIY public/favicon.svg — a box net, one panel lapping the next.
|
|
163
|
-
const DIY_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsxs("g", { fill: "none", stroke: "#fe8c01", strokeWidth: "2", strokeLinejoin: "round", children: [_jsx("rect", { x: "5", y: "9", width: "22", height: "15", rx: "1.5" }), _jsx("path", { d: "M5 14h22" }), _jsx("path", { d: "M12 9v15" })] }), _jsx("rect", { x: "5", y: "25.5", width: "22", height: "2", rx: "1", fill: "#ff9a1f" })] }));
|
|
164
|
-
// Mirrors Universal_Beam public/favicon.svg — two devices, a beam between them.
|
|
165
|
-
const BEAM_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsxs("g", { fill: "#ff9a1f", children: [_jsx("rect", { x: "3", y: "8", width: "8", height: "16", rx: "2" }), _jsx("rect", { x: "21", y: "8", width: "8", height: "16", rx: "2" })] }), _jsxs("g", { fill: "none", stroke: "#fe8c01", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M13 16h6" }), _jsx("path", { d: "M17.5 13.5 20 16l-2.5 2.5" })] })] }));
|
|
166
|
-
// Mirrors Universal_Video public/favicon.svg — a film frame with a play mark.
|
|
167
|
-
// Two arrows pressing in on a bar from above and below — squeeze, not download.
|
|
168
|
-
// The same drawing as the app's own logo and favicon; keep the three in sync.
|
|
169
|
-
const COMPRESS_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsxs("g", { fill: "none", stroke: "#fe8c01", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M16 5.5v5" }), _jsx("path", { d: "M12.8 7.8 16 11l3.2-3.2" }), _jsx("path", { d: "M16 26.5v-5" }), _jsx("path", { d: "M12.8 24.2 16 21l3.2 3.2" })] }), _jsx("rect", { x: "7", y: "14.6", width: "18", height: "2.8", rx: "1.4", fill: "#ff9a1f" })] }));
|
|
170
|
-
// A coin cracked in two — a bill split between friends. Mirrors
|
|
171
|
-
// Universal_PalsPayIn public/favicon.svg; keep the two in sync.
|
|
172
|
-
const PALSPAYIN_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("defs", { children: _jsxs("linearGradient", { id: "sdk-palspayin-coin", x1: "0", y1: "0", x2: "1", y2: "0", children: [_jsx("stop", { offset: "0", stopColor: "#ff9a1f" }), _jsx("stop", { offset: "1", stopColor: "#e05504" })] }) }), _jsx("circle", { cx: "16", cy: "16", r: "9.5", fill: "url(#sdk-palspayin-coin)" }), _jsx("path", { d: "M16 5.5 13.9 10.2 18 13.8 13.9 18.2 18 21.8 16 26.5", fill: "none", stroke: "#0f172a", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round" })] }));
|
|
173
|
-
const VIDEO_GLYPH = (_jsxs("svg", { width: "22", height: "22", viewBox: "0 0 32 32", "aria-hidden": "true", children: [_jsx("rect", { width: "32", height: "32", rx: "7", fill: "#0f172a" }), _jsx("rect", { x: "4", y: "7", width: "24", height: "18", rx: "2.5", fill: "none", stroke: "#fe8c01", strokeWidth: "2" }), _jsxs("g", { fill: "#ff9a1f", children: [_jsx("rect", { x: "6.5", y: "9.5", width: "3", height: "3", rx: "0.6" }), _jsx("rect", { x: "6.5", y: "19.5", width: "3", height: "3", rx: "0.6" }), _jsx("rect", { x: "22.5", y: "9.5", width: "3", height: "3", rx: "0.6" }), _jsx("rect", { x: "22.5", y: "19.5", width: "3", height: "3", rx: "0.6" }), _jsx("path", { d: "M14 12.2 20 16l-6 3.8z" })] })] }));
|
|
124
|
+
// The 19 Universal Apps marks are GENERATED, not drawn here — see
|
|
125
|
+
// `appMarks.tsx` and the spec it comes from,
|
|
126
|
+
// scripts/app-marks/marks.mjs. Each mark also ships as the app's favicon, its
|
|
127
|
+
// in-app navbar logo, the portal's tiles and the marketing site's tiles; those
|
|
128
|
+
// five copies were hand-maintained until 2026-08-11, and by then Beam and Video
|
|
129
|
+
// were both showing Charts' bar chart.
|
|
130
|
+
//
|
|
131
|
+
// To change a mark, edit the spec and run the generator. Editing the glyph here
|
|
132
|
+
// only makes the dropdown disagree with the favicon again.
|
|
174
133
|
export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
175
134
|
{
|
|
176
135
|
id: 'pdf',
|
|
177
136
|
name: 'Universal PDF',
|
|
178
137
|
desc: 'View, edit, sign & redact PDFs locally',
|
|
179
138
|
href: 'https://opensource.unisim.co.uk/pdf',
|
|
180
|
-
glyph:
|
|
139
|
+
glyph: APP_MARKS['pdf'],
|
|
181
140
|
category: 'everyday',
|
|
182
141
|
},
|
|
183
142
|
// Universal Webinar — "Business" family on the portal (live hosting has real
|
|
@@ -188,7 +147,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
188
147
|
name: 'Universal Webinar',
|
|
189
148
|
desc: 'Live webinars with real-time reactions & Q&A',
|
|
190
149
|
href: 'https://opensource.unisim.co.uk/webinar',
|
|
191
|
-
glyph:
|
|
150
|
+
glyph: APP_MARKS['webinar'],
|
|
192
151
|
category: 'business',
|
|
193
152
|
},
|
|
194
153
|
{
|
|
@@ -196,7 +155,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
196
155
|
name: 'Universal Images',
|
|
197
156
|
desc: 'Drag, resize & optimise images in-browser',
|
|
198
157
|
href: 'https://opensource.unisim.co.uk/images',
|
|
199
|
-
glyph:
|
|
158
|
+
glyph: APP_MARKS['images'],
|
|
200
159
|
category: 'everyday',
|
|
201
160
|
},
|
|
202
161
|
{
|
|
@@ -204,7 +163,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
204
163
|
name: 'Universal Exports',
|
|
205
164
|
desc: 'Compose, schedule & deliver data exports',
|
|
206
165
|
href: 'https://opensource.unisim.co.uk/exports',
|
|
207
|
-
glyph:
|
|
166
|
+
glyph: APP_MARKS['exports'],
|
|
208
167
|
category: 'business',
|
|
209
168
|
},
|
|
210
169
|
{
|
|
@@ -212,7 +171,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
212
171
|
name: 'Universal QR',
|
|
213
172
|
desc: 'Design branded, styled QR codes in-browser',
|
|
214
173
|
href: 'https://opensource.unisim.co.uk/qr',
|
|
215
|
-
glyph:
|
|
174
|
+
glyph: APP_MARKS['qr'],
|
|
216
175
|
category: 'everyday',
|
|
217
176
|
},
|
|
218
177
|
{
|
|
@@ -220,7 +179,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
220
179
|
name: 'Universal Video',
|
|
221
180
|
desc: 'Trim, resize & compress a video in-browser',
|
|
222
181
|
href: 'https://opensource.unisim.co.uk/video',
|
|
223
|
-
glyph:
|
|
182
|
+
glyph: APP_MARKS['video'],
|
|
224
183
|
category: 'everyday-plus',
|
|
225
184
|
},
|
|
226
185
|
{
|
|
@@ -228,7 +187,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
228
187
|
name: 'Universal Compress',
|
|
229
188
|
desc: 'Make any file smaller, on your device',
|
|
230
189
|
href: 'https://opensource.unisim.co.uk/compress',
|
|
231
|
-
glyph:
|
|
190
|
+
glyph: APP_MARKS['compress'],
|
|
232
191
|
category: 'everyday-plus',
|
|
233
192
|
},
|
|
234
193
|
{
|
|
@@ -236,7 +195,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
236
195
|
name: 'Universal PalsPayIn',
|
|
237
196
|
desc: 'Split bills with friends — no account, never moves money',
|
|
238
197
|
href: 'https://opensource.unisim.co.uk/palspayin',
|
|
239
|
-
glyph:
|
|
198
|
+
glyph: APP_MARKS['palspayin'],
|
|
240
199
|
category: 'everyday-plus',
|
|
241
200
|
},
|
|
242
201
|
{
|
|
@@ -244,7 +203,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
244
203
|
name: 'Universal DIY',
|
|
245
204
|
desc: 'Cut lists for simple butt-joint boxes',
|
|
246
205
|
href: 'https://opensource.unisim.co.uk/diy',
|
|
247
|
-
glyph:
|
|
206
|
+
glyph: APP_MARKS['diy'],
|
|
248
207
|
category: 'geeky',
|
|
249
208
|
},
|
|
250
209
|
{
|
|
@@ -252,7 +211,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
252
211
|
name: 'Universal Beam',
|
|
253
212
|
desc: 'Send text straight between your devices',
|
|
254
213
|
href: 'https://opensource.unisim.co.uk/beam',
|
|
255
|
-
glyph:
|
|
214
|
+
glyph: APP_MARKS['beam'],
|
|
256
215
|
category: 'everyday-plus',
|
|
257
216
|
},
|
|
258
217
|
{
|
|
@@ -260,15 +219,28 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
260
219
|
name: 'Universal Date Polling',
|
|
261
220
|
desc: 'Find a time that works for everyone',
|
|
262
221
|
href: 'https://opensource.unisim.co.uk/polling',
|
|
263
|
-
glyph:
|
|
222
|
+
glyph: APP_MARKS['polling'],
|
|
264
223
|
category: 'everyday-plus',
|
|
265
224
|
},
|
|
225
|
+
// Universal Charts — LIVE at opensource.unisim.co.uk/charts. Was missing from
|
|
226
|
+
// this catalogue AND from the portal entirely, so Beam and Video ended up
|
|
227
|
+
// shipping ITS bar chart as their favicon while Charts itself had no tile.
|
|
228
|
+
// Filed under Business alongside Exports: it is a reporting tool, not an
|
|
229
|
+
// everyday errand. Move it if that reads wrong on the portal.
|
|
230
|
+
{
|
|
231
|
+
id: 'charts',
|
|
232
|
+
name: 'Universal Charts',
|
|
233
|
+
desc: 'Turn CSV into clean, shareable charts',
|
|
234
|
+
href: 'https://opensource.unisim.co.uk/charts',
|
|
235
|
+
glyph: APP_MARKS['charts'],
|
|
236
|
+
category: 'business',
|
|
237
|
+
},
|
|
266
238
|
{
|
|
267
239
|
id: 'signatures',
|
|
268
240
|
name: 'Universal Signatures',
|
|
269
241
|
desc: 'Draw or type a signature & sign PDFs in-browser',
|
|
270
242
|
href: 'https://opensource.unisim.co.uk/signatures',
|
|
271
|
-
glyph:
|
|
243
|
+
glyph: APP_MARKS['signatures'],
|
|
272
244
|
category: 'business',
|
|
273
245
|
},
|
|
274
246
|
// Universal Recorder — LIVE at opensource.unisim.co.uk/recorder.
|
|
@@ -277,7 +249,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
277
249
|
name: 'Universal Recorder',
|
|
278
250
|
desc: 'Record mic, system audio or both, in-browser',
|
|
279
251
|
href: 'https://opensource.unisim.co.uk/recorder',
|
|
280
|
-
glyph:
|
|
252
|
+
glyph: APP_MARKS['recorder'],
|
|
281
253
|
category: 'everyday-plus',
|
|
282
254
|
},
|
|
283
255
|
// Universal Screens — "Geeky" family on the portal. Marketing + download page
|
|
@@ -289,7 +261,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
289
261
|
name: 'Universal Screens',
|
|
290
262
|
desc: 'Use another machine as an extended display',
|
|
291
263
|
href: 'https://opensource.unisim.co.uk/screens',
|
|
292
|
-
glyph:
|
|
264
|
+
glyph: APP_MARKS['screens'],
|
|
293
265
|
category: 'geeky',
|
|
294
266
|
},
|
|
295
267
|
// Universal USB Detector — "Geeky" family. Desktop app (Electron + node-usb)
|
|
@@ -300,7 +272,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
300
272
|
name: 'Universal USB Detector',
|
|
301
273
|
desc: 'Identify any USB device — version, speed & power',
|
|
302
274
|
href: 'https://opensource.unisim.co.uk/usb',
|
|
303
|
-
glyph:
|
|
275
|
+
glyph: APP_MARKS['usb'],
|
|
304
276
|
category: 'geeky',
|
|
305
277
|
},
|
|
306
278
|
// Universal Converter — LIVE at opensource.unisim.co.uk/converter. Converts
|
|
@@ -311,7 +283,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
311
283
|
name: 'Universal Converter',
|
|
312
284
|
desc: 'Convert audio & images without uploading a thing',
|
|
313
285
|
href: 'https://opensource.unisim.co.uk/converter',
|
|
314
|
-
glyph:
|
|
286
|
+
glyph: APP_MARKS['converter'],
|
|
315
287
|
category: 'everyday-plus',
|
|
316
288
|
},
|
|
317
289
|
// Roadmap — shown with the family glyph + a "Coming soon" badge (no
|
|
@@ -322,7 +294,7 @@ export const DEFAULT_UNIVERSAL_APPS_PRODUCTS = [
|
|
|
322
294
|
name: 'Universal AI',
|
|
323
295
|
desc: 'Offline LLM chatbot grounded on your own docs',
|
|
324
296
|
href: 'https://opensource.unisim.co.uk/ai',
|
|
325
|
-
glyph:
|
|
297
|
+
glyph: APP_MARKS['ai'],
|
|
326
298
|
category: 'everyday-plus',
|
|
327
299
|
comingSoon: true,
|
|
328
300
|
},
|
|
@@ -430,7 +402,7 @@ function useGlyphHoverAnimation() {
|
|
|
430
402
|
return;
|
|
431
403
|
const el = document.createElement('style');
|
|
432
404
|
el.id = GLYPH_ANIM_STYLE_ID;
|
|
433
|
-
el.textContent = GLYPH_ANIM_CSS;
|
|
405
|
+
el.textContent = GLYPH_ANIM_CSS + APP_MARK_CSS;
|
|
434
406
|
document.head.appendChild(el);
|
|
435
407
|
}, []);
|
|
436
408
|
}
|
|
@@ -491,6 +463,12 @@ export function SuiteSwitcher({ current, products = DEFAULT_SUITE_PRODUCTS, icon
|
|
|
491
463
|
clearTimeout(closeTimer.current);
|
|
492
464
|
closeTimer.current = setTimeout(() => setOpen(false), 220);
|
|
493
465
|
}
|
|
466
|
+
// Hover-to-open is desktop-only. On a touch screen one tap fires a
|
|
467
|
+
// synthesised mouseenter AND a click, so hovering open then toggling shut
|
|
468
|
+
// meant these menus could never be opened by touch at all — see hover.ts.
|
|
469
|
+
const canHover = useCanHover();
|
|
470
|
+
const hoverOpen = canHover ? openNow : undefined;
|
|
471
|
+
const hoverClose = canHover ? closeSoon : undefined;
|
|
494
472
|
// Toggle on click — but only if the click hit the wrapper itself or a
|
|
495
473
|
// non-interactive descendant. Lets a child <a> still navigate without us
|
|
496
474
|
// swallowing the click. No-op when `disableOpen` so the logo only ever
|
|
@@ -509,14 +487,14 @@ export function SuiteSwitcher({ current, products = DEFAULT_SUITE_PRODUCTS, icon
|
|
|
509
487
|
// company badge (which is itself inline-flex). align-items:center keeps the
|
|
510
488
|
// logo + chevron vertically centred. The dropdown is portaled to <body>, so
|
|
511
489
|
// it isn't a flex child here and the layout stays unchanged.
|
|
512
|
-
style: { position: 'relative', display: 'inline-flex', alignItems: 'center', verticalAlign: 'middle', ...style }, onMouseEnter:
|
|
490
|
+
style: { position: 'relative', display: 'inline-flex', alignItems: 'center', verticalAlign: 'middle', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onFocusCapture: hoverOpen, children: [children ? (_jsxs("div", { "aria-haspopup": disableOpen ? undefined : 'true', "aria-expanded": disableOpen ? undefined : open, onClick: onWrapperClick,
|
|
513
491
|
// minWidth:0 so a caller that constrains the switcher (the apps
|
|
514
492
|
// navbar clamps it on a narrow viewport) can actually squeeze this
|
|
515
493
|
// wrapper — a flex item defaults to min-width:auto and would keep
|
|
516
494
|
// the trigger at its intrinsic width, hard-clipping the product name
|
|
517
495
|
// instead of letting it ellipsize.
|
|
518
496
|
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)
|
|
519
|
-
setOpen((v) => !v); }, onFocus:
|
|
497
|
+
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
|
|
520
498
|
? _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: portalIconImgStyle })
|
|
521
499
|
: 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) => {
|
|
522
500
|
const isCurrent = p.id === current;
|