@visin/frontend-core 1.0.0 → 1.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,gGAAgG;IAChG,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW;iCAGpB;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;mBAsCvC,gBAAgB;EASrC"}
1
+ {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,gGAAgG;IAChG,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW;iCAUpB;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;mBAuCvC,gBAAgB;EASrC"}
@@ -7,17 +7,23 @@ import { createContext, useCallback, useContext, useEffect, useState } from 'rea
7
7
  */
8
8
  export function createAuthContext(authService) {
9
9
  const AuthContext = createContext(undefined);
10
+ // The last session this context resolved; `undefined` until the first check.
11
+ // shell-front mounts a remote's provider each time the user navigates into
12
+ // that app, so starting from what is already known keeps protected pages from
13
+ // flashing "Checking authentication..." on every visit. The check still runs
14
+ // on each mount and corrects it.
15
+ let lastKnownUser;
10
16
  function AuthProvider({ children }) {
11
- const [user, setUser] = useState(null);
12
- const [isLoading, setIsLoading] = useState(true);
17
+ const [user, setUser] = useState(lastKnownUser ?? null);
18
+ const [isLoading, setIsLoading] = useState(lastKnownUser === undefined);
13
19
  const refresh = useCallback(async () => {
14
20
  const result = await authService.checkAuth();
21
+ lastKnownUser = result.user;
15
22
  setUser(result.user);
16
23
  return result;
17
24
  }, []);
18
25
  useEffect(() => {
19
26
  let cancelled = false;
20
- setIsLoading(true);
21
27
  refresh().finally(() => {
22
28
  if (!cancelled)
23
29
  setIsLoading(false);
@@ -31,6 +37,7 @@ export function createAuthContext(authService) {
31
37
  }, []);
32
38
  const logout = useCallback(async () => {
33
39
  await authService.logout();
40
+ lastKnownUser = null;
34
41
  setUser(null);
35
42
  window.location.reload();
36
43
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAcpG;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAwB;IACxD,MAAM,WAAW,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;IAE3E,SAAS,YAAY,CAAC,EAAE,QAAQ,EAA2B;QACzD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAA8B,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACrB,IAAI,CAAC,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,EAAE;gBACV,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAS,EAAE;YACnC,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAmB,EAAE;YACnD,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAC9F,QAAQ,GACY,CACxB,CAAC;IACJ,CAAC;IAED,SAAS,OAAO;QACd,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAcpG;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAwB;IACxD,MAAM,WAAW,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;IAE3E,6EAA6E;IAC7E,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,iCAAiC;IACjC,IAAI,aAA0C,CAAC;IAE/C,SAAS,YAAY,CAAC,EAAE,QAAQ,EAA2B;QACzD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAkB,aAAa,IAAI,IAAI,CAAC,CAAC;QACzE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAA8B,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,CAAC;YAC7C,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBACrB,IAAI,CAAC,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,EAAE;gBACV,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAS,EAAE;YACnC,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAmB,EAAE;YACnD,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAC9F,QAAQ,GACY,CACxB,CAAC;IACJ,CAAC;IAED,SAAS,OAAO;QACd,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC"}
@@ -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;;;;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
+ {"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;EAcnD;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -72,8 +72,16 @@ export function createAuthService({ authServiceUrl, authFrontUrl }) {
72
72
  }
73
73
  }
74
74
  function redirectToLogin(returnUrl) {
75
+ const loginUrl = authFrontUrl();
76
+ if (!loginUrl) {
77
+ // With no auth-front address the target would be `?redirect_uri=…` on this
78
+ // same page: it reloads, finds no session, redirects again, forever. Say
79
+ // what is missing and stay put instead.
80
+ console.error('Cannot redirect to sign-in: the auth-front URL (AUTH_FRONT_URL) is not configured.');
81
+ return;
82
+ }
75
83
  const currentUrl = returnUrl || window.location.href;
76
- window.location.href = `${authFrontUrl()}?redirect_uri=${encodeURIComponent(currentUrl)}`;
84
+ window.location.href = `${loginUrl}?redirect_uri=${encodeURIComponent(currentUrl)}`;
77
85
  }
78
86
  return { checkAuth, getCurrentUser, getProfile, isAuthenticated, logout, redirectToLogin };
79
87
  }
@@ -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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"}
@@ -2,8 +2,11 @@ import { ReactNode } from 'react';
2
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;
5
+ /**
6
+ * Heading this item is listed under. Consecutive items sharing a group are
7
+ * drawn together beneath one heading; an item without one gets no heading.
8
+ */
9
+ group?: string;
7
10
  }
8
11
  /** A section of the current app, navigated to client-side. */
9
12
  export interface AppLayoutInternalNavItem extends NavItemBase {
@@ -16,11 +19,6 @@ export interface AppLayoutExternalNavItem extends NavItemBase {
16
19
  path?: undefined;
17
20
  }
18
21
  export type AppLayoutNavItem = AppLayoutInternalNavItem | AppLayoutExternalNavItem;
19
- export interface AppLayoutFooterLink {
20
- text: string;
21
- icon: ReactNode;
22
- href: string;
23
- }
24
22
  export interface AppLayoutUser {
25
23
  name?: string;
26
24
  email?: string;
@@ -35,8 +33,6 @@ export interface AppLayoutProps {
35
33
  navItems: AppLayoutNavItem[];
36
34
  user: AppLayoutUser | null;
37
35
  onLogout: () => void;
38
- /** Optional link pinned below the nav list, e.g. "Back to Vision". */
39
- footerLink?: AppLayoutFooterLink;
40
36
  /** Max width of the centered content column. Defaults to 800. */
41
37
  maxContentWidth?: number;
42
38
  /**
@@ -48,6 +44,12 @@ export interface AppLayoutProps {
48
44
  onLogin?: () => void;
49
45
  /** Adds an "Account" entry to the user menu, linking to account-front. */
50
46
  accountUrl?: string;
47
+ /**
48
+ * Adds an "Account" entry to the user menu that routes client-side, for an
49
+ * app that serves Account itself (shell-front). Takes precedence over
50
+ * `accountUrl`.
51
+ */
52
+ accountPath?: string;
51
53
  /** Lets the desktop drawer collapse to an icon rail. Defaults to false. */
52
54
  collapsible?: boolean;
53
55
  /**
@@ -68,6 +70,6 @@ export interface AppLayoutProps {
68
70
  * page header: a header user block costs every page a band of vertical space
69
71
  * and puts account actions somewhere different from the navigation.
70
72
  */
71
- export declare function AppLayout({ children, appName, subtitle, navItems, user, onLogout, footerLink, maxContentWidth, isAuthenticated, onLogin, accountUrl, collapsible, showPageHeader }: AppLayoutProps): import("react").JSX.Element;
73
+ export declare function AppLayout({ children, appName, subtitle, navItems, user, onLogout, maxContentWidth, isAuthenticated, onLogin, accountUrl, accountPath, collapsible, showPageHeader }: AppLayoutProps): import("react").JSX.Element;
72
74
  export {};
73
75
  //# 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;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"}
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;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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,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,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;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,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,eAAqB,EACrB,eAAsB,EACtB,OAAO,EACP,UAAU,EACV,WAAW,EACX,WAAmB,EACnB,cAAqB,EACtB,EAAE,cAAc,+BAkWhB"}
@@ -3,7 +3,7 @@ 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
5
  import { Menu as MenuIcon, Logout, Person, Login, ChevronLeft, ChevronRight, ExpandMore, AccountCircle } from '@mui/icons-material';
6
- import { Link, useLocation } from 'react-router-dom';
6
+ import { Link, useLocation, useNavigate } from 'react-router-dom';
7
7
  const DRAWER_WIDTH = 260;
8
8
  const COLLAPSED_DRAWER_WIDTH = 88;
9
9
  /**
@@ -18,8 +18,10 @@ const COLLAPSED_DRAWER_WIDTH = 88;
18
18
  * page header: a header user block costs every page a band of vertical space
19
19
  * and puts account actions somewhere different from the navigation.
20
20
  */
21
- export function AppLayout({ children, appName, subtitle, navItems, user, onLogout, footerLink, maxContentWidth = 800, isAuthenticated = true, onLogin, accountUrl, collapsible = false, showPageHeader = true }) {
21
+ export function AppLayout({ children, appName, subtitle, navItems, user, onLogout, maxContentWidth = 800, isAuthenticated = true, onLogin, accountUrl, accountPath, collapsible = false, showPageHeader = true }) {
22
22
  const location = useLocation();
23
+ const navigate = useNavigate();
24
+ const hasAccountEntry = Boolean(accountPath || accountUrl);
23
25
  const theme = useTheme();
24
26
  const [anchorElUser, setAnchorElUser] = useState(null);
25
27
  const [mobileOpen, setMobileOpen] = useState(false);
@@ -48,14 +50,30 @@ export function AppLayout({ children, appName, subtitle, navItems, user, onLogou
48
50
  alignItems: 'center',
49
51
  gap: 2,
50
52
  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) => {
53
+ }, 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, overflowY: 'auto' }, children: navItems.map((item, index) => {
52
54
  const active = isActive(item);
53
55
  // 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.
56
+ // so it needs a full page load, not a client-side route change. It
57
+ // is otherwise drawn exactly like a local one — the menu is one
58
+ // product, not a list of apps.
55
59
  const linkProps = item.path !== undefined
56
60
  ? { component: Link, to: item.path }
57
61
  : { 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: {
62
+ const startsGroup = item.group !== undefined && item.group !== navItems[index - 1]?.group;
63
+ return (_jsxs(ListItem, { disablePadding: true, sx: { mb: 0.5, display: 'block' }, children: [startsGroup &&
64
+ (collapsed ? (
65
+ // The icon rail has no room for a label; a rule still shows
66
+ // where one group ends.
67
+ index > 0 && _jsx(Divider, { sx: { my: 1.5, mx: 1, borderColor: 'rgba(255,255,255,0.1)' } })) : (_jsx(Typography, { component: "div", sx: {
68
+ px: 2,
69
+ pt: index > 0 ? 2 : 0,
70
+ pb: 1,
71
+ fontSize: '0.7rem',
72
+ fontWeight: 600,
73
+ letterSpacing: '0.08em',
74
+ textTransform: 'uppercase',
75
+ color: 'rgba(255,255,255,0.4)'
76
+ }, children: item.group }))), _jsxs(ListItemButton, { ...linkProps, selected: active, onClick: () => setMobileOpen(false), sx: {
59
77
  borderRadius: 2,
60
78
  py: 1.2,
61
79
  justifyContent: collapsed ? 'center' : 'initial',
@@ -84,19 +102,7 @@ export function AppLayout({ children, appName, subtitle, navItems, user, onLogou
84
102
  }, children: item.icon }), !collapsed && (_jsx(ListItemText, { primary: item.text, slotProps: {
85
103
  primary: { sx: { fontWeight: active ? 600 : 500, fontSize: '0.925rem' } }
86
104
  } }))] })] }, item.text));
87
- }) }), footerLink && (_jsx(List, { sx: { px: 2 }, children: _jsx(ListItem, { disablePadding: true, children: _jsxs(ListItemButton, { component: "a", href: footerLink.href, sx: {
88
- borderRadius: 2,
89
- py: 1.2,
90
- justifyContent: collapsed ? 'center' : 'initial',
91
- color: 'rgba(255,255,255,0.5)',
92
- '&:hover': {
93
- bgcolor: 'rgba(255,255,255,0.05)',
94
- color: '#fff',
95
- '& .MuiListItemIcon-root': {
96
- color: '#fff'
97
- }
98
- }
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: {
105
+ }) }), _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
106
  borderRadius: 2,
101
107
  justifyContent: collapsed ? 'center' : 'initial',
102
108
  px: collapsed ? 1 : 2,
@@ -137,10 +143,15 @@ export function AppLayout({ children, appName, subtitle, navItems, user, onLogou
137
143
  }
138
144
  }, 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
145
  paper: { sx: { minWidth: 200, borderRadius: 2, boxShadow: '0 10px 15px -3px rgb(0 0 0 / 0.1)' } }
140
- }, children: [accountUrl && (_jsxs(MenuItem, { onClick: () => {
146
+ }, children: [hasAccountEntry && (_jsxs(MenuItem, { onClick: () => {
141
147
  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: () => {
148
+ if (accountPath) {
149
+ navigate(accountPath);
150
+ }
151
+ else if (accountUrl) {
152
+ window.location.href = accountUrl;
153
+ }
154
+ }, sx: { py: 1.5 }, children: [_jsx(ListItemIcon, { children: _jsx(AccountCircle, { fontSize: "small" }) }), "Account"] })), hasAccountEntry && _jsx(Divider, {}), _jsxs(MenuItem, { onClick: () => {
144
155
  handleCloseUserMenu();
145
156
  onLogout();
146
157
  }, sx: { py: 1.5 }, children: [_jsx(ListItemIcon, { children: _jsx(Logout, { fontSize: "small" }) }), "Logout"] })] }), _jsx(Box, { component: "main", sx: {
@@ -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":";AAAA,OAAO,EAAa,QAAQ,EAAc,MAAM,OAAO,CAAC;AACxD,OAAO,EACL,GAAG,EACH,MAAM,EACN,IAAI,EACJ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EACL,IAAI,IAAI,QAAQ,EAChB,MAAM,EACN,MAAM,EACN,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAmElC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,eAAe,GAAG,GAAG,EACrB,eAAe,GAAG,IAAI,EACtB,OAAO,EACP,UAAU,EACV,WAAW,EACX,WAAW,GAAG,KAAK,EACnB,cAAc,GAAG,IAAI,EACN;IACf,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,YAAY,CAAC;IAExF,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACpG,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAExD,yEAAyE;IACzE,0EAA0E;IAC1E,4EAA4E;IAC5E,iBAAiB;IACjB,MAAM,QAAQ,GAAG,CAAC,IAAsB,EAAE,EAAE,CAC1C,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI;YAC9B,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;gBAC5C,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhG,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3C,6EAA6E;IAC7E,+DAA+D;IAC/D,MAAM,YAAY,GAAG,CAAC,OAA6B,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC;QACvE,MAAM,kBAAkB,GAAG,OAAO,KAAK,SAAS,IAAI,WAAW,CAAC;QAEhE,OAAO,CACL,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,aACtG,MAAC,GAAG,IACF,EAAE,EAAE;wBACF,CAAC,EAAE,CAAC;wBACJ,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;wBACN,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;qBACvD,aAED,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aACxD,KAAC,GAAG,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,WAAW,EAAC,GAAG,EAAC,YAAY,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,GAAI,EACrG,CAAC,SAAS,IAAI,CACb,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAE9E,CACd,IACG,EACL,kBAAkB,IAAI,CACrB,KAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,gBAC/B,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EACnE,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,YAElF,SAAS,CAAC,CAAC,CAAC,KAAC,YAAY,KAAG,CAAC,CAAC,CAAC,KAAC,WAAW,KAAG,GACpC,CACd,IACG,EAEN,KAAC,IAAI,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,YAChD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAC9B,mEAAmE;wBACnE,mEAAmE;wBACnE,gEAAgE;wBAChE,+BAA+B;wBAC/B,MAAM,SAAS,GACb,IAAI,CAAC,IAAI,KAAK,SAAS;4BACrB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;4BACpC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;wBACnD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;wBAE1F,OAAO,CACL,MAAC,QAAQ,IAAiB,cAAc,QAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aACvE,WAAW;oCACV,CAAC,SAAS,CAAC,CAAC,CAAC;oCACX,4DAA4D;oCAC5D,wBAAwB;oCACxB,KAAK,GAAG,CAAC,IAAI,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,GAAI,CACvF,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IACT,SAAS,EAAC,KAAK,EACf,EAAE,EAAE;4CACF,EAAE,EAAE,CAAC;4CACL,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4CACrB,EAAE,EAAE,CAAC;4CACL,QAAQ,EAAE,QAAQ;4CAClB,UAAU,EAAE,GAAG;4CACf,aAAa,EAAE,QAAQ;4CACvB,aAAa,EAAE,WAAW;4CAC1B,KAAK,EAAE,uBAAuB;yCAC/B,YAEA,IAAI,CAAC,KAAK,GACA,CACd,CAAC,EACJ,MAAC,cAAc,OACT,SAAS,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,EAAE,EAAE;wCACF,YAAY,EAAE,CAAC;wCACf,EAAE,EAAE,GAAG;wCACP,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;wCAChD,KAAK,EAAE,uBAAuB;wCAC9B,gBAAgB,EAAE;4CAChB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;4CAChD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;4CAClC,SAAS,EAAE;gDACT,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;6CACjD;4CACD,yBAAyB,EAAE;gDACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;6CACnC;yCACF;wCACD,SAAS,EAAE;4CACT,OAAO,EAAE,wBAAwB;4CACjC,KAAK,EAAE,MAAM;4CACb,yBAAyB,EAAE;gDACzB,KAAK,EAAE,MAAM;6CACd;yCACF;qCACF,aAED,KAAC,YAAY,IACX,EAAE,EAAE;gDACF,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gDAC5B,cAAc,EAAE,QAAQ;gDACxB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB;6CACpD,YAEA,IAAI,CAAC,IAAI,GACG,EACd,CAAC,SAAS,IAAI,CACb,KAAC,YAAY,IACX,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,SAAS,EAAE;gDACT,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;6CAC1E,GACD,CACH,IACc,KApEJ,IAAI,CAAC,IAAI,CAqEb,CACZ,CAAC;oBACJ,CAAC,CAAC,GACG,EAEP,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,GAAI,EAEhE,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,YACd,eAAe,CAAC,CAAC,CAAC,CACjB,MAAC,cAAc,IACb,OAAO,EAAE,kBAAkB,gBAChB,gBAAgB,EAC3B,EAAE,EAAE;4BACF,YAAY,EAAE,CAAC;4BACf,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;4BAChD,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACrB,SAAS,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;yBACjD,aAED,KAAC,MAAM,IACL,GAAG,EAAE,IAAI,EAAE,OAAO,EAClB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,YAE1F,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,KAAC,MAAM,IAAC,QAAQ,EAAC,OAAO,GAAG,GAC9C,EACR,CAAC,SAAS,IAAI,CACb,8BACE,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aACnC,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,MAAM,QAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YACvD,IAAI,EAAE,IAAI,IAAI,MAAM,GACV,EACb,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,MAAM,QAAC,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE,YAC1F,IAAI,EAAE,KAAK,GACD,IACT,EACN,KAAC,UAAU,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,GAAI,IACrD,CACJ,IACc,CAClB,CAAC,CAAC,CAAC,CACF,MAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE;4BACF,YAAY,EAAE,CAAC;4BACf,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;4BAChD,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACrB,KAAK,EAAE,uBAAuB;4BAC9B,SAAS,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE;yBAChE,aAED,KAAC,YAAY,IACX,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAE9F,KAAC,KAAK,KAAG,GACI,EACd,CAAC,SAAS,IAAI,CACb,KAAC,YAAY,IACX,OAAO,EAAC,OAAO,EACf,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,GACzE,CACH,IACc,CAClB,GACG,IACF,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,aAC7E,KAAC,WAAW,KAAG,EAEf,KAAC,MAAM,IACL,QAAQ,EAAC,OAAO,EAChB,EAAE,EAAE;oBACF,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;oBACvB,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,MAAM;oBACjB,YAAY,EAAE,iCAAiC;iBAChD,YAED,MAAC,OAAO,eACN,KAAC,UAAU,IAAC,KAAK,EAAC,SAAS,gBAAY,aAAa,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAC1G,KAAC,QAAQ,KAAG,GACD,EACb,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAC,SAAS,EAAC,KAAK,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,YACjF,OAAO,GACG,IACL,GACH,EAET,MAAC,GAAG,IAAC,SAAS,EAAC,KAAK,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,aACtG,KAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EACjC,EAAE,EAAE;4BACF,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE;4BACpC,oBAAoB,EAAE;gCACpB,SAAS,EAAE,YAAY;gCACvB,KAAK,EAAE,YAAY;gCACnB,WAAW,EAAE,MAAM;gCACnB,OAAO,EAAE,SAAS;gCAClB,KAAK,EAAE,MAAM;6BACd;yBACF,YAEA,YAAY,CAAC,QAAQ,CAAC,GAChB,EAET,KAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,EAAE,EAAE;4BACF,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;4BACpC,oBAAoB,EAAE;gCACpB,SAAS,EAAE,YAAY;gCACvB,KAAK,EAAE,WAAW;gCAClB,WAAW,EAAE,iCAAiC;gCAC9C,OAAO,EAAE,SAAS;gCAClB,KAAK,EAAE,MAAM;gCACb,UAAU,EAAE,YAAY;gCACxB,SAAS,EAAE,QAAQ;6BACpB;yBACF,EACD,IAAI,kBAEH,YAAY,CAAC,SAAS,CAAC,GACjB,IACL,EAGN,MAAC,IAAI,IACH,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAC3B,OAAO,EAAE,mBAAmB,EAC5B,eAAe,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC3D,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EACrD,SAAS,EAAE;oBACT,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,mCAAmC,EAAE,EAAE;iBAClG,aAEA,eAAe,IAAI,CAClB,MAAC,QAAQ,IACP,OAAO,EAAE,GAAG,EAAE;4BACZ,mBAAmB,EAAE,CAAC;4BACtB,IAAI,WAAW,EAAE,CAAC;gCAChB,QAAQ,CAAC,WAAW,CAAC,CAAC;4BACxB,CAAC;iCAAM,IAAI,UAAU,EAAE,CAAC;gCACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC;4BACpC,CAAC;wBACH,CAAC,EACD,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,aAEf,KAAC,YAAY,cACX,KAAC,aAAa,IAAC,QAAQ,EAAC,OAAO,GAAG,GACrB,eAEN,CACZ,EACA,eAAe,IAAI,KAAC,OAAO,KAAG,EAC/B,MAAC,QAAQ,IACP,OAAO,EAAE,GAAG,EAAE;4BACZ,mBAAmB,EAAE,CAAC;4BACtB,QAAQ,EAAE,CAAC;wBACb,CAAC,EACD,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,aAEf,KAAC,YAAY,cACX,KAAC,MAAM,IAAC,QAAQ,EAAC,OAAO,GAAG,GACd,cAEN,IACN,EAGP,KAAC,GAAG,IACF,SAAS,EAAC,MAAM,EAChB,EAAE,EAAE;oBACF,QAAQ,EAAE,CAAC;oBACX,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;oBAC1B,KAAK,EAAE,EAAE,EAAE,EAAE,eAAe,WAAW,KAAK,EAAE;oBAC9C,UAAU,EAAE,YAAY;oBACxB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;oBACpB,OAAO,EAAE,MAAM;oBACf,aAAa,EAAE,QAAQ;oBACvB,UAAU,EAAE,QAAQ;iBACrB,YAED,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAClD,cAAc,IAAI,CACjB,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,aACtD,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,YAC3E,UAAU,EAAE,IAAI,IAAI,OAAO,GACjB,EACb,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,YACxD,QAAQ,GACE,IACT,CACP,EAEA,QAAQ,IACL,GACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { AppLayout } from './AppLayout';
2
- export type { AppLayoutProps, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutFooterLink, AppLayoutUser } from './AppLayout';
2
+ export type { AppLayoutProps, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, 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,EACV,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACd,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,aAAa,EACd,MAAM,aAAa,CAAC"}
@@ -10,6 +10,14 @@ export interface CreateConfigProviderOptions<T> {
10
10
  renderChildren?: (children: ReactNode) => ReactNode;
11
11
  /** Rendered while config is loading. Defaults to the shared Loader. */
12
12
  loadingFallback?: ReactNode;
13
+ /**
14
+ * Where the production config lives. Defaults to `/config.json`, which a
15
+ * browser resolves against the *page*. A module-federation remote runs inside
16
+ * shell-front's page, where that is the shell's file, so remotes pass a URL
17
+ * resolved against their own module instead:
18
+ * `new URL('/config.json', import.meta.url).href`.
19
+ */
20
+ configUrl?: string;
13
21
  }
14
22
  export declare function createConfigProvider<T>(options: CreateConfigProviderOptions<T>): {
15
23
  ConfigProvider: ({ children }: {
@@ -1 +1 @@
1
- {"version":3,"file":"createConfigProvider.d.ts","sourceRoot":"","sources":["../../src/config/createConfigProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkD,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzF,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,0KAA0K;IAC1K,eAAe,EAAE,MAAM,CAAC,CAAC;IACzB,kIAAkI;IAClI,KAAK,EAAE,OAAO,CAAC;IACf,+KAA+K;IAC/K,YAAY,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACzC,2HAA2H;IAC3H,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;IACpD,uEAAuE;IACvE,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC;mCA8BvC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;;qBAJvC,CAAC;2BAbK,CAAC;EAoE9B"}
1
+ {"version":3,"file":"createConfigProvider.d.ts","sourceRoot":"","sources":["../../src/config/createConfigProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkD,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzF,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,0KAA0K;IAC1K,eAAe,EAAE,MAAM,CAAC,CAAC;IACzB,kIAAkI;IAClI,KAAK,EAAE,OAAO,CAAC;IACf,+KAA+K;IAC/K,YAAY,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACzC,2HAA2H;IAC3H,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;IACpD,uEAAuE;IACvE,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC;mCA+BvC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;;qBAJvC,CAAC;2BAbK,CAAC;EA2E9B"}
@@ -3,7 +3,7 @@ import { createContext, useContext, useEffect, useState } from 'react';
3
3
  import { Loader } from '../components/Loader';
4
4
  import { ErrorPage } from '../components/ErrorPage';
5
5
  export function createConfigProvider(options) {
6
- const { createDevConfig, isDev, onFetchError = 'error-page', renderChildren = (children) => children, loadingFallback = _jsx(Loader, {}) } = options;
6
+ const { createDevConfig, isDev, onFetchError = 'error-page', renderChildren = (children) => children, loadingFallback = _jsx(Loader, {}), configUrl = '/config.json' } = options;
7
7
  let globalConfig = null;
8
8
  const ConfigContext = createContext({});
9
9
  function getGlobalConfig() {
@@ -22,9 +22,15 @@ export function createConfigProvider(options) {
22
22
  return useContext(ConfigContext);
23
23
  }
24
24
  function ConfigProvider({ children }) {
25
- const [config, setConfig] = useState(null);
25
+ // Starts from an already-loaded config: shell-front mounts a remote's
26
+ // provider every time the user navigates into that app, and re-fetching
27
+ // (with a loader in between) on each visit is the reload this avoids.
28
+ const [config, setConfig] = useState(() => globalConfig);
26
29
  const [error, setError] = useState(null);
27
30
  useEffect(() => {
31
+ if (globalConfig) {
32
+ return;
33
+ }
28
34
  // In development, use environment variables directly
29
35
  if (isDev) {
30
36
  const devConfig = createDevConfig();
@@ -33,7 +39,7 @@ export function createConfigProvider(options) {
33
39
  return;
34
40
  }
35
41
  // In production, fetch config.json
36
- fetch('/config.json')
42
+ fetch(configUrl)
37
43
  .then((res) => {
38
44
  if (!res.ok)
39
45
  throw new Error('Config fetch failed');
@@ -1 +1 @@
1
- {"version":3,"file":"createConfigProvider.js","sourceRoot":"","sources":["../../src/config/createConfigProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createConfigProvider.js","sourceRoot":"","sources":["../../src/config/createConfigProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Module-federation settings every Visin front has to agree on. shell-front is
3
+ * the host; vision-front, label-front and account-front are remotes it loads at
4
+ * runtime from their own origins.
5
+ *
6
+ * The shared singletons are the libraries that hold React context or global
7
+ * state. A remote running its own copy of React breaks hooks outright, and its
8
+ * own copy of the router, Emotion or React Query reads an empty context instead
9
+ * of the one the host's providers filled — so every app must take the single
10
+ * copy the host loaded. The list lives here rather than in four vite configs
11
+ * because drift between those copies is precisely that failure.
12
+ *
13
+ * Plain data with no React imports: each `vite.config.ts` loads it in Node.
14
+ */
15
+ export declare const VISIN_FEDERATION_SHARED: {
16
+ react: {
17
+ singleton: boolean;
18
+ };
19
+ 'react-dom': {
20
+ singleton: boolean;
21
+ };
22
+ 'react-router-dom': {
23
+ singleton: boolean;
24
+ };
25
+ '@emotion/react': {
26
+ singleton: boolean;
27
+ };
28
+ '@emotion/styled': {
29
+ singleton: boolean;
30
+ };
31
+ '@mui/material': {
32
+ singleton: boolean;
33
+ };
34
+ '@tanstack/react-query': {
35
+ singleton: boolean;
36
+ };
37
+ };
38
+ /** File each remote serves its federation entry as, at the root of its origin. */
39
+ export declare const VISIN_REMOTE_ENTRY = "remoteEntry.js";
40
+ /** The one module every remote exposes: its routes wrapped in its own providers. */
41
+ export declare const VISIN_REMOTE_MODULE = "./App";
42
+ //# sourceMappingURL=federation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;CAQnC,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,UAAU,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Module-federation settings every Visin front has to agree on. shell-front is
3
+ * the host; vision-front, label-front and account-front are remotes it loads at
4
+ * runtime from their own origins.
5
+ *
6
+ * The shared singletons are the libraries that hold React context or global
7
+ * state. A remote running its own copy of React breaks hooks outright, and its
8
+ * own copy of the router, Emotion or React Query reads an empty context instead
9
+ * of the one the host's providers filled — so every app must take the single
10
+ * copy the host loaded. The list lives here rather than in four vite configs
11
+ * because drift between those copies is precisely that failure.
12
+ *
13
+ * Plain data with no React imports: each `vite.config.ts` loads it in Node.
14
+ */
15
+ export const VISIN_FEDERATION_SHARED = {
16
+ react: { singleton: true },
17
+ 'react-dom': { singleton: true },
18
+ 'react-router-dom': { singleton: true },
19
+ '@emotion/react': { singleton: true },
20
+ '@emotion/styled': { singleton: true },
21
+ '@mui/material': { singleton: true },
22
+ '@tanstack/react-query': { singleton: true }
23
+ };
24
+ /** File each remote serves its federation entry as, at the root of its origin. */
25
+ export const VISIN_REMOTE_ENTRY = 'remoteEntry.js';
26
+ /** The one module every remote exposes: its routes wrapped in its own providers. */
27
+ export const VISIN_REMOTE_MODULE = './App';
28
+ //# sourceMappingURL=federation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1B,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAChC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IACvC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IACrC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IACtC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IACpC,uBAAuB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;CAC7C,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,8 +5,8 @@ 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, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutFooterLink, AppLayoutUser } from './components/AppLayout';
9
- export { createVisinNavItems } from './navigation';
8
+ export type { AppLayoutProps, AppLayoutNavItem, AppLayoutInternalNavItem, AppLayoutExternalNavItem, AppLayoutUser } from './components/AppLayout';
9
+ export { createVisinNavItems, createAccountNavItems } from './navigation';
10
10
  export type { VisinApp, VisinAppUrls } from './navigation';
11
11
  export { createProtectedRoute } from './components/ProtectedRoute';
12
12
  export type { ProtectedRouteProps, ProtectedRouteAuth } from './components/ProtectedRoute';
@@ -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,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"}
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,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,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,7 +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
+ export { createVisinNavItems, createAccountNavItems } from './navigation';
7
7
  export { createProtectedRoute } from './components/ProtectedRoute';
8
8
  export { createLoginRedirect } from './components/LoginRedirect';
9
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;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"}
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;AAQnD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1E,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,20 +1,27 @@
1
1
  import type { AppLayoutNavItem } from './components/AppLayout';
2
- /** The fronts that share a navigation menu. */
2
+ /** The fronts whose sections make up the shared menu. */
3
3
  export type VisinApp = 'vision' | 'label';
4
4
  export interface VisinAppUrls {
5
- /** Base URL of vision-front, e.g. https://app.visin.eu */
5
+ /** Base URL of vision-front, e.g. https://ml.example.com */
6
6
  vision?: string;
7
- /** Base URL of label-front, e.g. https://label.visin.eu */
7
+ /** Base URL of label-front, e.g. https://label.example.com */
8
8
  label?: string;
9
9
  }
10
10
  /**
11
- * Builds the sidebar for one app: its own sections as client-side routes, plus
12
- * one absolute link to the sibling app.
11
+ * Builds the shared menu. `localApps` are the apps whose sections are routes of
12
+ * the page drawing the menu: one app in a standalone front, both in shell-front
13
+ * (which renders every app on one page), and none in account-front, where every
14
+ * entry links across. Every other app's sections are absolute links to that app.
13
15
  *
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.
16
+ * A non-local app with no URL configured has its group omitted, rather than
17
+ * rendered as dead links into the current origin — a missing `LABEL_FRONT_URL`
18
+ * should hide Labeling, not leave entries that 404 inside Vision.
18
19
  */
19
- export declare function createVisinNavItems(currentApp: VisinApp, urls: VisinAppUrls): AppLayoutNavItem[];
20
+ export declare function createVisinNavItems(localApps: VisinApp | readonly VisinApp[] | null, urls: VisinAppUrls): AppLayoutNavItem[];
21
+ /**
22
+ * Account's own sections, under an Account heading, as local routes. Shown only
23
+ * while the user is in Account (account-front, or shell-front's Account routes);
24
+ * everywhere else Account is a single entry in the user menu.
25
+ */
26
+ export declare function createAccountNavItems(): AppLayoutNavItem[];
20
27
  //# sourceMappingURL=navigation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AACA,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;AA2CD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAoBhG"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsDD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,IAAI,EAChD,IAAI,EAAE,YAAY,GACjB,gBAAgB,EAAE,CAmBpB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAE1D"}
@@ -1,62 +1,76 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Folder, ModelTraining, Storage, Assignment, Inventory2, Image, Visibility } from '@mui/icons-material';
2
+ import { Folder, ModelTraining, Storage, Assignment, Inventory2, Person, Groups, Key, Link as LinkIcon, Insights } from '@mui/icons-material';
3
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.
4
+ * The whole menu, in the order every app shows it. It used to list only the
5
+ * current app's sections plus one link across, so following that link swapped
6
+ * the entire sidebar out from under the user. Now every app renders the same
7
+ * groups in the same places; crossing apps changes which item is highlighted,
8
+ * never what the menu contains.
8
9
  */
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
- // "New job" is deliberately not here: it is an action on the Jobs list, not a
16
- // section of the app, and a nav entry for it made the menu read as three
17
- // destinations when there are two.
18
- label: [
19
- { text: 'Jobs', icon: _jsx(Assignment, {}), path: '/jobs' },
20
- { text: 'Bundles', icon: _jsx(Inventory2, {}), path: '/bundles' }
21
- ]
22
- };
23
- /**
24
- * The single entry that crosses to the other app, pinned below a divider. It
25
- * lands on that app's first section, where its own menu takes over — the two
26
- * apps' sections stay in their own sidebars rather than being interleaved.
27
- */
28
- const APP_LINKS = {
29
- vision: { text: 'Vision', icon: _jsx(Visibility, {}), path: '/projects' },
30
- label: { text: 'Labeling', icon: _jsx(Image, {}), path: '/jobs' }
31
- };
10
+ const NAV_GROUPS = [
11
+ {
12
+ app: 'vision',
13
+ label: 'Vision',
14
+ sections: [
15
+ { text: 'Projects', icon: _jsx(Folder, {}), path: '/projects' },
16
+ { text: 'Trainings', icon: _jsx(ModelTraining, {}), path: '/trainings' },
17
+ { text: 'Datasets', icon: _jsx(Storage, {}), path: '/datasets' }
18
+ ]
19
+ },
20
+ {
21
+ app: 'label',
22
+ label: 'Labeling',
23
+ // "New job" is deliberately not here: it is an action on the Jobs list, not a
24
+ // section of the app, and a nav entry for it made the menu read as three
25
+ // destinations when there are two.
26
+ sections: [
27
+ { text: 'Jobs', icon: _jsx(Assignment, {}), path: '/jobs' },
28
+ { text: 'Bundles', icon: _jsx(Inventory2, {}), path: '/bundles' }
29
+ ]
30
+ }
31
+ ];
32
+ const ACCOUNT_SECTIONS = [
33
+ { text: 'Profile', icon: _jsx(Person, {}), path: '/account/profile' },
34
+ { text: 'Groups', icon: _jsx(Groups, {}), path: '/account/groups' },
35
+ { text: 'API keys', icon: _jsx(Key, {}), path: '/account/api-keys' },
36
+ { text: 'Connected apps', icon: _jsx(LinkIcon, {}), path: '/account/connections' },
37
+ { text: 'Assistant activity', icon: _jsx(Insights, {}), path: '/account/activity' }
38
+ ];
32
39
  const stripTrailingSlash = (url) => url.replace(/\/$/, '');
33
- const otherApp = (app) => (app === 'vision' ? 'label' : 'vision');
34
40
  /**
35
- * Builds the sidebar for one app: its own sections as client-side routes, plus
36
- * one absolute link to the sibling app.
41
+ * Builds the shared menu. `localApps` are the apps whose sections are routes of
42
+ * the page drawing the menu: one app in a standalone front, both in shell-front
43
+ * (which renders every app on one page), and none in account-front, where every
44
+ * entry links across. Every other app's sections are absolute links to that app.
37
45
  *
38
- * The cross-app entry is omitted when that app has no URL configured, rather
39
- * than rendered as a dead link into the current origin — a missing
40
- * `LABEL_FRONT_URL` should hide Labeling, not leave a link that 404s inside
41
- * Vision.
46
+ * A non-local app with no URL configured has its group omitted, rather than
47
+ * rendered as dead links into the current origin — a missing `LABEL_FRONT_URL`
48
+ * should hide Labeling, not leave entries that 404 inside Vision.
42
49
  */
43
- export function createVisinNavItems(currentApp, urls) {
44
- const items = APP_SECTIONS[currentApp].map((section) => ({
45
- text: section.text,
46
- icon: section.icon,
47
- path: section.path
48
- }));
49
- const sibling = otherApp(currentApp);
50
- const baseUrl = urls[sibling];
51
- if (baseUrl) {
52
- const link = APP_LINKS[sibling];
53
- items.push({
54
- text: link.text,
55
- icon: link.icon,
56
- href: `${stripTrailingSlash(baseUrl)}${link.path}`,
57
- dividerBefore: true
58
- });
59
- }
60
- return items;
50
+ export function createVisinNavItems(localApps, urls) {
51
+ const local = new Set(localApps === null ? [] : typeof localApps === 'string' ? [localApps] : localApps);
52
+ return NAV_GROUPS.flatMap(({ app, label, sections }) => {
53
+ if (local.has(app)) {
54
+ return sections.map(({ text, icon, path }) => ({ text, icon, path, group: label }));
55
+ }
56
+ const baseUrl = urls[app];
57
+ if (!baseUrl) {
58
+ return [];
59
+ }
60
+ return sections.map(({ text, icon, path }) => ({
61
+ text,
62
+ icon,
63
+ href: `${stripTrailingSlash(baseUrl)}${path}`,
64
+ group: label
65
+ }));
66
+ });
67
+ }
68
+ /**
69
+ * Account's own sections, under an Account heading, as local routes. Shown only
70
+ * while the user is in Account (account-front, or shell-front's Account routes);
71
+ * everywhere else Account is a single entry in the user menu.
72
+ */
73
+ export function createAccountNavItems() {
74
+ return ACCOUNT_SECTIONS.map(({ text, icon, path }) => ({ text, icon, path, group: 'Account' }));
61
75
  }
62
76
  //# sourceMappingURL=navigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAmBhH;;;;;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,8EAA8E;IAC9E,yEAAyE;IACzE,mCAAmC;IACnC,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,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"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,24 @@
1
1
  {
2
2
  "name": "@visin/frontend-core",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "Shared frontend auth/API-client logic for Visin frontends",
5
5
  "author": "Toomas Tahves",
6
6
  "license": "MIT",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./federation": {
17
+ "types": "./dist/federation.d.ts",
18
+ "import": "./dist/federation.js",
19
+ "default": "./dist/federation.js"
20
+ }
21
+ },
10
22
  "files": [
11
23
  "dist"
12
24
  ],