@visin/frontend-core 0.1.10 → 0.1.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../src/apiClient.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,oJAAoJ;IACpJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;gBAEF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB;cAChC,CAAC,kBAAkB,MAAM,SAAQ,iBAAiB,KAAQ,OAAO,CAAC,CAAC,CAAC;UAmCnF,CAAC,kBAAkB,MAAM,SAAS,iBAAiB;WAClD,CAAC,kBAAkB,MAAM,SAAS,OAAO,SAAS,iBAAiB;UAEpE,CAAC,kBAAkB,MAAM,SAAS,OAAO,SAAS,iBAAiB;YAEjE,CAAC,kBAAkB,MAAM,SAAS,OAAO,SAAS,iBAAiB;aAElE,CAAC,kBAAkB,MAAM,SAAS,iBAAiB;EAE/D;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../src/apiClient.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,oJAAoJ;IACpJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;gBAEF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB;cAChC,CAAC,kBAAkB,MAAM,SAAQ,iBAAiB,KAAQ,OAAO,CAAC,CAAC,CAAC;UAgDnF,CAAC,kBAAkB,MAAM,SAAS,iBAAiB;WAClD,CAAC,kBAAkB,MAAM,SAAS,OAAO,SAAS,iBAAiB;UAEpE,CAAC,kBAAkB,MAAM,SAAS,OAAO,SAAS,iBAAiB;YAEjE,CAAC,kBAAkB,MAAM,SAAS,OAAO,SAAS,iBAAiB;aAElE,CAAC,kBAAkB,MAAM,SAAS,iBAAiB;EAE/D;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
package/dist/apiClient.js CHANGED
@@ -18,7 +18,8 @@ export class ApiError extends Error {
18
18
  export function createApiClient(options) {
19
19
  async function request(path, init = {}) {
20
20
  const { skipAuthRedirect, headers, ...rest } = init;
21
- const response = await fetch(`${options.baseUrl()}${path}`, {
21
+ const url = `${options.baseUrl()}${path}`;
22
+ const response = await fetch(url, {
22
23
  credentials: 'include',
23
24
  ...rest,
24
25
  headers: {
@@ -43,7 +44,16 @@ export function createApiClient(options) {
43
44
  if (response.status === 204) {
44
45
  return undefined;
45
46
  }
46
- return response.json();
47
+ try {
48
+ return await response.json();
49
+ }
50
+ catch {
51
+ // Almost always a misconfigured base URL: the request fell through to the
52
+ // app's own origin and a dev server or nginx answered with index.html, so
53
+ // the raw `JSON.parse: unexpected character` gave no hint where to look.
54
+ const contentType = response.headers.get('content-type') ?? 'unknown';
55
+ throw new ApiError(response.status, `Expected JSON from ${url} but received ${contentType}. Check the service base URL is configured.`);
56
+ }
47
57
  }
48
58
  return {
49
59
  request,
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../src/apiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../src/apiClient.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Fields observed across the auth-service endpoints frontends call:
3
- * `/auth/verify` always returns `groups` (JWT-derived); `/auth/profile`
4
- * returns `firstName`/`lastName` (DB-derived) but not `groups`. Optional
3
+ * `/auth/verify` always returns `groupRoles` (JWT-derived); `/auth/profile`
4
+ * returns `firstName`/`lastName` (DB-derived) but not `groupRoles`. Optional
5
5
  * fields reflect which endpoint populated the result, not that the field
6
6
  * is unreliable.
7
7
  */
@@ -13,7 +13,18 @@ export interface AuthUser {
13
13
  firstName?: string;
14
14
  lastName?: string;
15
15
  username?: string;
16
- groups?: string[];
16
+ /**
17
+ * Distinct roles ('owner' | 'admin' | 'member') the user holds across their
18
+ * groups — what admin-only UI gates on. The token carries no group ids;
19
+ * anything needing the groups themselves calls group-service.
20
+ */
21
+ groupRoles?: string[];
22
+ /**
23
+ * Whether the account has a password set. False for one created through
24
+ * Google, which can set one from account settings. Only `/auth/profile`
25
+ * reports it.
26
+ */
27
+ hasPassword?: boolean;
17
28
  }
18
29
  export interface AuthCheckResult {
19
30
  authenticated: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,kBAAkB;qBAS9D,OAAO,CAAC,eAAe,CAAC;0BA+Bb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;sBAK5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;2BAUnB,OAAO,CAAC,OAAO,CAAC;kBAKzB,OAAO,CAAC,OAAO,CAAC;kCAUJ,MAAM,KAAG,IAAI;EAMnD;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,kBAAkB;qBAS9D,OAAO,CAAC,eAAe,CAAC;0BA+Bb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;sBAK5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;2BAUnB,OAAO,CAAC,OAAO,CAAC;kBAKzB,OAAO,CAAC,OAAO,CAAC;kCAUJ,MAAM,KAAG,IAAI;EAMnD;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,21 @@
1
1
  import { ReactNode } from 'react';
2
- export interface AppLayoutNavItem {
2
+ interface NavItemBase {
3
3
  text: string;
4
4
  icon: ReactNode;
5
+ /** Draws a divider above this item, to separate groups of sections. */
6
+ dividerBefore?: boolean;
7
+ }
8
+ /** A section of the current app, navigated to client-side. */
9
+ export interface AppLayoutInternalNavItem extends NavItemBase {
5
10
  path: string;
11
+ href?: undefined;
12
+ }
13
+ /** A section owned by a sibling app, reached by a full page load. */
14
+ export interface AppLayoutExternalNavItem extends NavItemBase {
15
+ href: string;
16
+ path?: undefined;
6
17
  }
18
+ export type AppLayoutNavItem = AppLayoutInternalNavItem | AppLayoutExternalNavItem;
7
19
  export interface AppLayoutFooterLink {
8
20
  text: string;
9
21
  icon: ReactNode;
@@ -27,14 +39,35 @@ export interface AppLayoutProps {
27
39
  footerLink?: AppLayoutFooterLink;
28
40
  /** Max width of the centered content column. Defaults to 800. */
29
41
  maxContentWidth?: number;
42
+ /**
43
+ * False shows a Login button in place of the user block. Defaults to true —
44
+ * only vision-front serves anonymous visitors.
45
+ */
46
+ isAuthenticated?: boolean;
47
+ /** Required when `isAuthenticated` can be false. */
48
+ onLogin?: () => void;
49
+ /** Adds an "Account" entry to the user menu, linking to account-front. */
50
+ accountUrl?: string;
51
+ /** Lets the desktop drawer collapse to an icon rail. Defaults to false. */
52
+ collapsible?: boolean;
53
+ /**
54
+ * False drops the page title/subtitle header, for apps whose pages render
55
+ * their own headings. Defaults to true.
56
+ */
57
+ showPageHeader?: boolean;
30
58
  }
31
59
  /**
32
- * Shared sidebar/appbar shell used by the account and label fronts: fixed
33
- * dark drawer with nav items, mobile temporary drawer, avatar menu with
34
- * logout, and a centered content column with a page title derived from the
35
- * active nav item. vision-front's collapsible-drawer layout has different
36
- * enough behavior (login/logout dual state, no page-title header) that it
37
- * stays a standalone component rather than forcing it through these props.
60
+ * The single sidebar/appbar shell behind every Visin front: dark drawer with
61
+ * nav items, mobile temporary drawer, a user block pinned to the drawer
62
+ * bottom, and a content column. vision-front used to carry its own
63
+ * near-duplicate of this so it could collapse the drawer and serve anonymous
64
+ * visitors; those are now options here, so navigation looks and behaves
65
+ * identically across apps.
66
+ *
67
+ * Account, Logout and Login all live in the drawer's user block, never in a
68
+ * page header: a header user block costs every page a band of vertical space
69
+ * and puts account actions somewhere different from the navigation.
38
70
  */
39
- export declare function AppLayout({ children, appName, subtitle, navItems, user, onLogout, footerLink, maxContentWidth }: AppLayoutProps): import("react").JSX.Element;
71
+ export declare function AppLayout({ children, appName, subtitle, navItems, user, onLogout, footerLink, maxContentWidth, isAuthenticated, onLogin, accountUrl, collapsible, showPageHeader }: AppLayoutProps): import("react").JSX.Element;
72
+ export {};
40
73
  //# sourceMappingURL=AppLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppLayout.d.ts","sourceRoot":"","sources":["../../../src/components/AppLayout/AppLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;AA0BxD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,eAAqB,EACtB,EAAE,cAAc,+BAiQhB"}
1
+ {"version":3,"file":"AppLayout.d.ts","sourceRoot":"","sources":["../../../src/components/AppLayout/AppLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;AAoCxD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,eAAqB,EACrB,eAAsB,EACtB,OAAO,EACP,UAAU,EACV,WAAmB,EACnB,cAAqB,EACtB,EAAE,cAAc,+BAsWhB"}
@@ -2,48 +2,93 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useState } from 'react';
3
3
  import { Box, Drawer, List, Typography, Divider, ListItem, ListItemButton, ListItemIcon, ListItemText, Avatar, Menu, MenuItem, useTheme, CssBaseline, AppBar, Toolbar, IconButton } from '@mui/material';
4
4
  import { alpha } from '@mui/material/styles';
5
- import { Menu as MenuIcon, Logout, Person } from '@mui/icons-material';
5
+ import { Menu as MenuIcon, Logout, Person, Login, ChevronLeft, ChevronRight, ExpandMore, AccountCircle } from '@mui/icons-material';
6
6
  import { Link, useLocation } from 'react-router-dom';
7
7
  const DRAWER_WIDTH = 260;
8
+ const COLLAPSED_DRAWER_WIDTH = 88;
8
9
  /**
9
- * Shared sidebar/appbar shell used by the account and label fronts: fixed
10
- * dark drawer with nav items, mobile temporary drawer, avatar menu with
11
- * logout, and a centered content column with a page title derived from the
12
- * active nav item. vision-front's collapsible-drawer layout has different
13
- * enough behavior (login/logout dual state, no page-title header) that it
14
- * stays a standalone component rather than forcing it through these props.
10
+ * The single sidebar/appbar shell behind every Visin front: dark drawer with
11
+ * nav items, mobile temporary drawer, a user block pinned to the drawer
12
+ * bottom, and a content column. vision-front used to carry its own
13
+ * near-duplicate of this so it could collapse the drawer and serve anonymous
14
+ * visitors; those are now options here, so navigation looks and behaves
15
+ * identically across apps.
16
+ *
17
+ * Account, Logout and Login all live in the drawer's user block, never in a
18
+ * page header: a header user block costs every page a band of vertical space
19
+ * and puts account actions somewhere different from the navigation.
15
20
  */
16
- export function AppLayout({ children, appName, subtitle, navItems, user, onLogout, footerLink, maxContentWidth = 800 }) {
21
+ export function AppLayout({ children, appName, subtitle, navItems, user, onLogout, footerLink, maxContentWidth = 800, isAuthenticated = true, onLogin, accountUrl, collapsible = false, showPageHeader = true }) {
17
22
  const location = useLocation();
18
23
  const theme = useTheme();
19
24
  const [anchorElUser, setAnchorElUser] = useState(null);
20
25
  const [mobileOpen, setMobileOpen] = useState(false);
26
+ const [desktopOpen, setDesktopOpen] = useState(true);
27
+ const drawerWidth = collapsible && !desktopOpen ? COLLAPSED_DRAWER_WIDTH : DRAWER_WIDTH;
21
28
  const handleDrawerToggle = () => setMobileOpen(!mobileOpen);
22
29
  const handleOpenUserMenu = (event) => setAnchorElUser(event.currentTarget);
23
30
  const handleCloseUserMenu = () => setAnchorElUser(null);
24
31
  // An exact match always wins; a prefix match only counts if no other nav
25
32
  // item is an exact match for the current path (avoids '/jobs' lighting up
26
- // while on '/jobs/new').
27
- const isActive = (path) => location.pathname === path ||
28
- (location.pathname.startsWith(path + '/') &&
29
- !navItems.some((item) => item.path !== path && item.path === location.pathname));
30
- const activeItem = navItems.find((item) => isActive(item.path));
31
- const drawer = (_jsxs(Box, { sx: { height: '100%', display: 'flex', flexDirection: 'column', bgcolor: '#111827', color: '#fff' }, children: [_jsxs(Box, { sx: { p: 3, display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(Box, { component: "img", src: "/logo.svg", alt: "Visin Logo", sx: { width: 32, height: 32 } }), _jsx(Typography, { variant: "h6", sx: { fontWeight: 700, color: 'inherit', letterSpacing: '-0.5px' }, children: "Visin" })] }), _jsx(List, { sx: { px: 2, flexGrow: 1 }, children: navItems.map((item) => {
32
- const active = isActive(item.path);
33
- return (_jsx(ListItem, { disablePadding: true, sx: { mb: 0.5 }, children: _jsxs(ListItemButton, { component: Link, to: item.path, selected: active, onClick: () => setMobileOpen(false), sx: {
33
+ // while on '/jobs/new'). External items are never active — they belong to a
34
+ // different app.
35
+ const isActive = (item) => item.path !== undefined &&
36
+ (location.pathname === item.path ||
37
+ (location.pathname.startsWith(item.path + '/') &&
38
+ !navItems.some((other) => other.path !== item.path && other.path === location.pathname)));
39
+ const activeItem = navItems.find(isActive);
40
+ // The mobile drawer is temporary and always renders expanded — collapsing to
41
+ // an icon rail only makes sense for the permanent desktop one.
42
+ const renderDrawer = (variant) => {
43
+ const collapsed = variant === 'desktop' && collapsible && !desktopOpen;
44
+ const showCollapseToggle = variant === 'desktop' && collapsible;
45
+ return (_jsxs(Box, { sx: { height: '100%', display: 'flex', flexDirection: 'column', bgcolor: '#111827', color: '#fff' }, children: [_jsxs(Box, { sx: {
46
+ p: 3,
47
+ display: 'flex',
48
+ alignItems: 'center',
49
+ gap: 2,
50
+ justifyContent: collapsed ? 'center' : 'space-between'
51
+ }, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(Box, { component: "img", src: "/logo.svg", alt: "Visin Logo", sx: { width: 32, height: 32, flexShrink: 0 } }), !collapsed && (_jsx(Typography, { variant: "h6", sx: { fontWeight: 700, color: 'inherit', letterSpacing: '-0.5px' }, children: "Visin" }))] }), showCollapseToggle && (_jsx(IconButton, { onClick: () => setDesktopOpen(!desktopOpen), "aria-label": collapsed ? 'expand navigation' : 'collapse navigation', sx: { color: 'rgba(255,255,255,0.5)', display: { xs: 'none', sm: 'flex' }, p: 0.5 }, children: collapsed ? _jsx(ChevronRight, {}) : _jsx(ChevronLeft, {}) }))] }), _jsx(List, { sx: { px: 2, flexGrow: 1 }, children: navItems.map((item) => {
52
+ const active = isActive(item);
53
+ // An external item is a plain anchor: it belongs to a sibling app,
54
+ // so it needs a full page load, not a client-side route change.
55
+ const linkProps = item.path !== undefined
56
+ ? { component: Link, to: item.path }
57
+ : { component: 'a', href: item.href };
58
+ return (_jsxs(ListItem, { disablePadding: true, sx: { mb: 0.5, display: 'block' }, children: [item.dividerBefore && _jsx(Divider, { sx: { my: 1.5, mx: 1, borderColor: 'rgba(255,255,255,0.1)' } }), _jsxs(ListItemButton, { ...linkProps, selected: active, onClick: () => setMobileOpen(false), sx: {
59
+ borderRadius: 2,
60
+ py: 1.2,
61
+ justifyContent: collapsed ? 'center' : 'initial',
62
+ color: 'rgba(255,255,255,0.7)',
63
+ '&.Mui-selected': {
64
+ bgcolor: alpha(theme.palette.primary.main, 0.15),
65
+ color: theme.palette.primary.light,
66
+ '&:hover': {
67
+ bgcolor: alpha(theme.palette.primary.main, 0.25)
68
+ },
69
+ '& .MuiListItemIcon-root': {
70
+ color: theme.palette.primary.light
71
+ }
72
+ },
73
+ '&:hover': {
74
+ bgcolor: 'rgba(255,255,255,0.05)',
75
+ color: '#fff',
76
+ '& .MuiListItemIcon-root': {
77
+ color: '#fff'
78
+ }
79
+ }
80
+ }, children: [_jsx(ListItemIcon, { sx: {
81
+ minWidth: collapsed ? 0 : 40,
82
+ justifyContent: 'center',
83
+ color: active ? 'inherit' : 'rgba(255,255,255,0.5)'
84
+ }, children: item.icon }), !collapsed && (_jsx(ListItemText, { primary: item.text, slotProps: {
85
+ primary: { sx: { fontWeight: active ? 600 : 500, fontSize: '0.925rem' } }
86
+ } }))] })] }, item.text));
87
+ }) }), footerLink && (_jsx(List, { sx: { px: 2 }, children: _jsx(ListItem, { disablePadding: true, children: _jsxs(ListItemButton, { component: "a", href: footerLink.href, sx: {
34
88
  borderRadius: 2,
35
89
  py: 1.2,
36
- color: 'rgba(255,255,255,0.7)',
37
- '&.Mui-selected': {
38
- bgcolor: alpha(theme.palette.primary.main, 0.15),
39
- color: theme.palette.primary.light,
40
- '&:hover': {
41
- bgcolor: alpha(theme.palette.primary.main, 0.25)
42
- },
43
- '& .MuiListItemIcon-root': {
44
- color: theme.palette.primary.light
45
- }
46
- },
90
+ justifyContent: collapsed ? 'center' : 'initial',
91
+ color: 'rgba(255,255,255,0.5)',
47
92
  '&:hover': {
48
93
  bgcolor: 'rgba(255,255,255,0.05)',
49
94
  color: '#fff',
@@ -51,28 +96,26 @@ export function AppLayout({ children, appName, subtitle, navItems, user, onLogou
51
96
  color: '#fff'
52
97
  }
53
98
  }
54
- }, children: [_jsx(ListItemIcon, { sx: { minWidth: 40, color: active ? 'inherit' : 'rgba(255,255,255,0.5)' }, children: item.icon }), _jsx(ListItemText, { primary: item.text, slotProps: {
55
- primary: { sx: { fontWeight: active ? 600 : 500, fontSize: '0.925rem' } }
56
- } })] }) }, item.text));
57
- }) }), footerLink && (_jsxs(_Fragment, { children: [_jsx(Divider, { sx: { mx: 2, opacity: 0.1, bgcolor: 'rgba(255,255,255,0.1)' } }), _jsx(List, { sx: { px: 2, py: 2 }, children: _jsx(ListItem, { disablePadding: true, children: _jsxs(ListItemButton, { component: "a", href: footerLink.href, sx: {
58
- borderRadius: 2,
59
- py: 1.2,
60
- color: 'rgba(255,255,255,0.5)',
61
- '&:hover': {
62
- bgcolor: 'rgba(255,255,255,0.05)',
63
- color: '#fff',
64
- '& .MuiListItemIcon-root': {
65
- color: '#fff'
66
- }
67
- }
68
- }, children: [_jsx(ListItemIcon, { sx: { minWidth: 40, color: 'inherit' }, children: footerLink.icon }), _jsx(ListItemText, { primary: footerLink.text, slotProps: { primary: { sx: { fontWeight: 500, fontSize: '0.925rem' } } } })] }) }) })] }))] }));
99
+ }, children: [_jsx(ListItemIcon, { sx: { minWidth: collapsed ? 0 : 40, justifyContent: 'center', color: 'inherit' }, children: footerLink.icon }), !collapsed && (_jsx(ListItemText, { primary: footerLink.text, slotProps: { primary: { sx: { fontWeight: 500, fontSize: '0.925rem' } } } }))] }) }) })), _jsx(Divider, { sx: { mx: 2, borderColor: 'rgba(255,255,255,0.1)' } }), _jsx(Box, { sx: { p: 2 }, children: isAuthenticated ? (_jsxs(ListItemButton, { onClick: handleOpenUserMenu, "aria-label": "open user menu", sx: {
100
+ borderRadius: 2,
101
+ justifyContent: collapsed ? 'center' : 'initial',
102
+ px: collapsed ? 1 : 2,
103
+ '&:hover': { bgcolor: 'rgba(255,255,255,0.05)' }
104
+ }, children: [_jsx(Avatar, { src: user?.picture, sx: { width: 32, height: 32, mr: collapsed ? 0 : 2, bgcolor: theme.palette.secondary.main }, children: user?.name?.charAt(0) || _jsx(Person, { fontSize: "small" }) }), !collapsed && (_jsxs(_Fragment, { children: [_jsxs(Box, { sx: { flexGrow: 1, minWidth: 0 }, children: [_jsx(Typography, { variant: "body2", noWrap: true, sx: { fontWeight: 600 }, children: user?.name || 'User' }), _jsx(Typography, { variant: "caption", noWrap: true, sx: { color: 'rgba(255,255,255,0.5)', display: 'block' }, children: user?.email })] }), _jsx(ExpandMore, { sx: { color: 'rgba(255,255,255,0.5)' } })] }))] })) : (_jsxs(ListItemButton, { onClick: onLogin, sx: {
105
+ borderRadius: 2,
106
+ justifyContent: collapsed ? 'center' : 'initial',
107
+ px: collapsed ? 1 : 2,
108
+ color: 'rgba(255,255,255,0.7)',
109
+ '&:hover': { bgcolor: 'rgba(255,255,255,0.05)', color: '#fff' }
110
+ }, children: [_jsx(ListItemIcon, { sx: { minWidth: collapsed ? 0 : 40, justifyContent: 'center', color: 'rgba(255,255,255,0.5)' }, children: _jsx(Login, {}) }), !collapsed && (_jsx(ListItemText, { primary: "Login", slotProps: { primary: { sx: { fontWeight: 600, fontSize: '0.925rem' } } } }))] })) })] }));
111
+ };
69
112
  return (_jsxs(Box, { sx: { display: 'flex', minHeight: '100vh', bgcolor: 'background.default' }, children: [_jsx(CssBaseline, {}), _jsx(AppBar, { position: "fixed", sx: {
70
113
  display: { sm: 'none' },
71
114
  bgcolor: '#111827',
72
115
  color: '#fff',
73
116
  boxShadow: 'none',
74
117
  borderBottom: '1px solid rgba(255,255,255,0.1)'
75
- }, children: _jsxs(Toolbar, { children: [_jsx(IconButton, { color: "inherit", "aria-label": "open drawer", edge: "start", onClick: handleDrawerToggle, sx: { mr: 2 }, children: _jsx(MenuIcon, {}) }), _jsx(Typography, { variant: "h6", noWrap: true, component: "div", sx: { fontWeight: 700, flexGrow: 1 }, children: appName }), _jsx(Avatar, { src: user?.picture, sx: { width: 32, height: 32, border: '1px solid rgba(255,255,255,0.1)' }, onClick: handleOpenUserMenu })] }) }), _jsxs(Box, { component: "nav", sx: { width: { sm: DRAWER_WIDTH }, flexShrink: { sm: 0 } }, children: [_jsx(Drawer, { variant: "temporary", open: mobileOpen, onClose: handleDrawerToggle, ModalProps: { keepMounted: true }, sx: {
118
+ }, children: _jsxs(Toolbar, { children: [_jsx(IconButton, { color: "inherit", "aria-label": "open drawer", edge: "start", onClick: handleDrawerToggle, sx: { mr: 2 }, children: _jsx(MenuIcon, {}) }), _jsx(Typography, { variant: "h6", noWrap: true, component: "div", sx: { fontWeight: 700, flexGrow: 1 }, children: appName })] }) }), _jsxs(Box, { component: "nav", sx: { width: { sm: drawerWidth }, flexShrink: { sm: 0 }, transition: 'width 0.2s' }, children: [_jsx(Drawer, { variant: "temporary", open: mobileOpen, onClose: handleDrawerToggle, ModalProps: { keepMounted: true }, sx: {
76
119
  display: { xs: 'block', sm: 'none' },
77
120
  '& .MuiDrawer-paper': {
78
121
  boxSizing: 'border-box',
@@ -81,28 +124,34 @@ export function AppLayout({ children, appName, subtitle, navItems, user, onLogou
81
124
  bgcolor: '#111827',
82
125
  color: '#fff'
83
126
  }
84
- }, children: drawer }), _jsx(Drawer, { variant: "permanent", sx: {
127
+ }, children: renderDrawer('mobile') }), _jsx(Drawer, { variant: "permanent", sx: {
85
128
  display: { xs: 'none', sm: 'block' },
86
129
  '& .MuiDrawer-paper': {
87
130
  boxSizing: 'border-box',
88
- width: DRAWER_WIDTH,
131
+ width: drawerWidth,
89
132
  borderRight: '1px solid rgba(255,255,255,0.1)',
90
133
  bgcolor: '#111827',
91
- color: '#fff'
134
+ color: '#fff',
135
+ transition: 'width 0.2s',
136
+ overflowX: 'hidden'
92
137
  }
93
- }, open: true, children: drawer })] }), _jsx(Box, { component: "main", sx: {
138
+ }, open: true, children: renderDrawer('desktop') })] }), _jsxs(Menu, { anchorEl: anchorElUser, open: Boolean(anchorElUser), onClose: handleCloseUserMenu, transformOrigin: { horizontal: 'left', vertical: 'bottom' }, anchorOrigin: { horizontal: 'left', vertical: 'top' }, slotProps: {
139
+ paper: { sx: { minWidth: 200, borderRadius: 2, boxShadow: '0 10px 15px -3px rgb(0 0 0 / 0.1)' } }
140
+ }, children: [accountUrl && (_jsxs(MenuItem, { onClick: () => {
141
+ handleCloseUserMenu();
142
+ window.location.href = accountUrl;
143
+ }, sx: { py: 1.5 }, children: [_jsx(ListItemIcon, { children: _jsx(AccountCircle, { fontSize: "small" }) }), "Account"] })), accountUrl && _jsx(Divider, {}), _jsxs(MenuItem, { onClick: () => {
144
+ handleCloseUserMenu();
145
+ onLogout();
146
+ }, sx: { py: 1.5 }, children: [_jsx(ListItemIcon, { children: _jsx(Logout, { fontSize: "small" }) }), "Logout"] })] }), _jsx(Box, { component: "main", sx: {
94
147
  flexGrow: 1,
95
148
  p: { xs: 2, sm: 4, md: 8 },
96
- width: { sm: `calc(100% - ${DRAWER_WIDTH}px)` },
149
+ width: { sm: `calc(100% - ${drawerWidth}px)` },
150
+ transition: 'width 0.2s',
97
151
  mt: { xs: 7, sm: 0 },
98
152
  display: 'flex',
99
153
  flexDirection: 'column',
100
154
  alignItems: 'center'
101
- }, children: _jsxs(Box, { sx: { width: '100%', maxWidth: maxContentWidth }, children: [_jsxs(Box, { sx: { display: { xs: 'none', sm: 'flex' }, justifyContent: 'space-between', alignItems: 'center', mb: 8 }, children: [_jsxs(Box, { children: [_jsx(Typography, { variant: "h4", sx: { fontWeight: 700, letterSpacing: '-1px', mb: 1 }, children: activeItem?.text || appName }), _jsx(Typography, { variant: "body1", sx: { color: 'text.secondary' }, children: subtitle })] }), _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsxs(Box, { sx: { textAlign: 'right' }, children: [_jsx(Typography, { variant: "subtitle2", sx: { fontWeight: 600 }, children: user?.name || 'User' }), _jsx(Typography, { variant: "caption", sx: { color: 'text.secondary' }, children: user?.email })] }), _jsx(IconButton, { onClick: handleOpenUserMenu, sx: { p: 0.5, border: '1px solid', borderColor: 'divider' }, children: _jsx(Avatar, { src: user?.picture, sx: { width: 40, height: 40 }, children: _jsx(Person, {}) }) }), _jsxs(Menu, { anchorEl: anchorElUser, open: Boolean(anchorElUser), onClose: handleCloseUserMenu, transformOrigin: { horizontal: 'right', vertical: 'top' }, anchorOrigin: { horizontal: 'right', vertical: 'bottom' }, slotProps: {
102
- paper: { sx: { mt: 1.5, minWidth: 200, borderRadius: 2, boxShadow: '0 10px 15px -3px rgb(0 0 0 / 0.1)' } }
103
- }, children: [_jsxs(Box, { sx: { px: 2, py: 1.5 }, children: [_jsx(Typography, { variant: "subtitle2", noWrap: true, children: user?.name }), _jsx(Typography, { variant: "caption", noWrap: true, sx: { color: 'text.secondary' }, children: user?.email })] }), _jsx(Divider, {}), _jsxs(MenuItem, { onClick: () => {
104
- handleCloseUserMenu();
105
- onLogout();
106
- }, sx: { py: 1.5 }, children: [_jsx(ListItemIcon, { children: _jsx(Logout, { fontSize: "small" }) }), "Logout"] })] })] })] }), children] }) })] }));
155
+ }, children: _jsxs(Box, { sx: { width: '100%', maxWidth: maxContentWidth }, children: [showPageHeader && (_jsxs(Box, { sx: { display: { xs: 'none', sm: 'block' }, mb: 6 }, children: [_jsx(Typography, { variant: "h4", sx: { fontWeight: 700, letterSpacing: '-1px', mb: 1 }, children: activeItem?.text || appName }), _jsx(Typography, { variant: "body1", sx: { color: 'text.secondary' }, children: subtitle })] })), children] }) })] }));
107
156
  }
108
157
  //# sourceMappingURL=AppLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppLayout.js","sourceRoot":"","sources":["../../../src/components/AppLayout/AppLayout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppLayout.js","sourceRoot":"","sources":["../../../src/components/AppLayout/AppLayout.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { AppLayout } from './AppLayout';
2
- export type { AppLayoutProps, AppLayoutNavItem, AppLayoutFooterLink, AppLayoutUser } from './AppLayout';
2
+ export type { AppLayoutProps, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutFooterLink, AppLayoutUser } from './AppLayout';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AppLayout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AppLayout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACd,MAAM,aAAa,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,9 @@ export type { LoaderProps } from './components/Loader';
5
5
  export { ErrorPage } from './components/ErrorPage';
6
6
  export type { ErrorPageProps } from './components/ErrorPage';
7
7
  export { AppLayout } from './components/AppLayout';
8
- export type { AppLayoutProps, AppLayoutNavItem, AppLayoutFooterLink, AppLayoutUser } from './components/AppLayout';
8
+ export type { AppLayoutProps, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutFooterLink, AppLayoutUser } from './components/AppLayout';
9
+ export { createVisinNavItems } from './navigation';
10
+ export type { VisinApp, VisinAppUrls } from './navigation';
9
11
  export { createProtectedRoute } from './components/ProtectedRoute';
10
12
  export type { ProtectedRouteProps, ProtectedRouteAuth } from './components/ProtectedRoute';
11
13
  export { createLoginRedirect } from './components/LoginRedirect';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { createApiClient, ApiError } from './apiClient';
3
3
  export { Loader } from './components/Loader';
4
4
  export { ErrorPage } from './components/ErrorPage';
5
5
  export { AppLayout } from './components/AppLayout';
6
+ export { createVisinNavItems } from './navigation';
6
7
  export { createProtectedRoute } from './components/ProtectedRoute';
7
8
  export { createLoginRedirect } from './components/LoginRedirect';
8
9
  export { createAuthService } from './auth/authService';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { AppLayoutNavItem } from './components/AppLayout';
2
+ /** The fronts that share a navigation menu. */
3
+ export type VisinApp = 'vision' | 'label';
4
+ export interface VisinAppUrls {
5
+ /** Base URL of vision-front, e.g. https://app.visin.eu */
6
+ vision?: string;
7
+ /** Base URL of label-front, e.g. https://label.visin.eu */
8
+ label?: string;
9
+ }
10
+ /**
11
+ * Builds the sidebar for one app: its own sections as client-side routes, plus
12
+ * one absolute link to the sibling app.
13
+ *
14
+ * The cross-app entry is omitted when that app has no URL configured, rather
15
+ * than rendered as a dead link into the current origin — a missing
16
+ * `LABEL_FRONT_URL` should hide Labeling, not leave a link that 404s inside
17
+ * Vision.
18
+ */
19
+ export declare function createVisinNavItems(currentApp: VisinApp, urls: VisinAppUrls): AppLayoutNavItem[];
20
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,+CAA+C;AAC/C,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyCD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAoBhG"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Folder, ModelTraining, Storage, Assignment, AddBox, Inventory2, Image, Visibility } from '@mui/icons-material';
3
+ /**
4
+ * What each app puts in its own sidebar. Both apps are built by the same
5
+ * function from the same shape, so the menu looks and behaves identically —
6
+ * same drawer, same ordering, same active-state rules — while listing only the
7
+ * sections that app actually owns.
8
+ */
9
+ const APP_SECTIONS = {
10
+ vision: [
11
+ { text: 'Projects', icon: _jsx(Folder, {}), path: '/projects' },
12
+ { text: 'Trainings', icon: _jsx(ModelTraining, {}), path: '/trainings' },
13
+ { text: 'Datasets', icon: _jsx(Storage, {}), path: '/datasets' }
14
+ ],
15
+ label: [
16
+ { text: 'Jobs', icon: _jsx(Assignment, {}), path: '/jobs' },
17
+ { text: 'New job', icon: _jsx(AddBox, {}), path: '/jobs/new' },
18
+ { text: 'Bundles', icon: _jsx(Inventory2, {}), path: '/bundles' }
19
+ ]
20
+ };
21
+ /**
22
+ * The single entry that crosses to the other app, pinned below a divider. It
23
+ * lands on that app's first section, where its own menu takes over — the two
24
+ * apps' sections stay in their own sidebars rather than being interleaved.
25
+ */
26
+ const APP_LINKS = {
27
+ vision: { text: 'Vision', icon: _jsx(Visibility, {}), path: '/projects' },
28
+ label: { text: 'Labeling', icon: _jsx(Image, {}), path: '/jobs' }
29
+ };
30
+ const stripTrailingSlash = (url) => url.replace(/\/$/, '');
31
+ const otherApp = (app) => (app === 'vision' ? 'label' : 'vision');
32
+ /**
33
+ * Builds the sidebar for one app: its own sections as client-side routes, plus
34
+ * one absolute link to the sibling app.
35
+ *
36
+ * The cross-app entry is omitted when that app has no URL configured, rather
37
+ * than rendered as a dead link into the current origin — a missing
38
+ * `LABEL_FRONT_URL` should hide Labeling, not leave a link that 404s inside
39
+ * Vision.
40
+ */
41
+ export function createVisinNavItems(currentApp, urls) {
42
+ const items = APP_SECTIONS[currentApp].map((section) => ({
43
+ text: section.text,
44
+ icon: section.icon,
45
+ path: section.path
46
+ }));
47
+ const sibling = otherApp(currentApp);
48
+ const baseUrl = urls[sibling];
49
+ if (baseUrl) {
50
+ const link = APP_LINKS[sibling];
51
+ items.push({
52
+ text: link.text,
53
+ icon: link.icon,
54
+ href: `${stripTrailingSlash(baseUrl)}${link.path}`,
55
+ dividerBefore: true
56
+ });
57
+ }
58
+ return items;
59
+ }
60
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,aAAa,EACb,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,KAAK,EACL,UAAU,EACX,MAAM,qBAAqB,CAAC;AAmB7B;;;;;GAKG;AACH,MAAM,YAAY,GAAmC;IACnD,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAC,MAAM,KAAG,EAAE,IAAI,EAAE,WAAW,EAAE;QACzD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAC,aAAa,KAAG,EAAE,IAAI,EAAE,YAAY,EAAE;QAClE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAC,OAAO,KAAG,EAAE,IAAI,EAAE,WAAW,EAAE;KAC3D;IACD,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAC,UAAU,KAAG,EAAE,IAAI,EAAE,OAAO,EAAE;QACrD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAC,MAAM,KAAG,EAAE,IAAI,EAAE,WAAW,EAAE;QACxD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAC,UAAU,KAAG,EAAE,IAAI,EAAE,UAAU,EAAE;KAC5D;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,SAAS,GAAiC;IAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAC,UAAU,KAAG,EAAE,IAAI,EAAE,WAAW,EAAE;IACnE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAC,KAAK,KAAG,EAAE,IAAI,EAAE,OAAO,EAAE;CAC5D,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAE3E,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAY,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEtF;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAoB,EAAE,IAAkB;IAC1E,MAAM,KAAK,GAAuB,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;YAClD,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visin/frontend-core",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Shared frontend auth/API-client logic for Visin frontends",
5
5
  "author": "Toomas Tahves",
6
6
  "license": "MIT",