@seij/common-ui 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +0 -1
  2. package/dist/init/SeijUIProvider.d.ts.map +1 -1
  3. package/dist/init/SeijUIProvider.js.map +1 -1
  4. package/dist/lib/applicationshell/ApplicationShell.d.ts +73 -2
  5. package/dist/lib/applicationshell/ApplicationShell.d.ts.map +1 -1
  6. package/dist/lib/applicationshell/ApplicationShell.js +75 -70
  7. package/dist/lib/applicationshell/ApplicationShell.js.map +1 -1
  8. package/dist/lib/applicationshell/ApplicationShellHamburger.d.ts +4 -0
  9. package/dist/lib/applicationshell/ApplicationShellHamburger.d.ts.map +1 -0
  10. package/dist/lib/applicationshell/ApplicationShellHamburger.js +17 -0
  11. package/dist/lib/applicationshell/ApplicationShellHamburger.js.map +1 -0
  12. package/dist/lib/applicationshell/ApplicationShellPanelContract.d.ts +5 -0
  13. package/dist/lib/applicationshell/ApplicationShellPanelContract.d.ts.map +1 -0
  14. package/dist/lib/applicationshell/ApplicationShellPanelContract.js +19 -0
  15. package/dist/lib/applicationshell/ApplicationShellPanelContract.js.map +1 -0
  16. package/dist/lib/applicationshell/ApplicationShellRails.d.ts +11 -0
  17. package/dist/lib/applicationshell/ApplicationShellRails.d.ts.map +1 -0
  18. package/dist/lib/applicationshell/ApplicationShellRails.js +111 -0
  19. package/dist/lib/applicationshell/ApplicationShellRails.js.map +1 -0
  20. package/dist/lib/applicationshell/ApplicationShellSidebar.d.ts +18 -0
  21. package/dist/lib/applicationshell/ApplicationShellSidebar.d.ts.map +1 -0
  22. package/dist/lib/applicationshell/ApplicationShellSidebar.js +52 -0
  23. package/dist/lib/applicationshell/ApplicationShellSidebar.js.map +1 -0
  24. package/dist/lib/applicationshell/TitleBar.d.ts +6 -2
  25. package/dist/lib/applicationshell/TitleBar.d.ts.map +1 -1
  26. package/dist/lib/applicationshell/TitleBar.js +39 -33
  27. package/dist/lib/applicationshell/TitleBar.js.map +1 -1
  28. package/dist/lib/button_bar/ButtonBar.d.ts.map +1 -1
  29. package/dist/lib/button_bar/ButtonBar.js.map +1 -1
  30. package/dist/lib/commons/currencysymbol.js.map +1 -1
  31. package/dist/lib/errorbox/ErrorBox.js +6 -6
  32. package/dist/lib/errorbox/ErrorBox.js.map +1 -1
  33. package/dist/lib/i18n/i18n.detect.d.ts.map +1 -1
  34. package/dist/lib/i18n/i18n.react.d.ts.map +1 -1
  35. package/dist/lib/i18n/i18n.react.js.map +1 -1
  36. package/dist/lib/i18n/i18n.types.d.ts.map +1 -1
  37. package/dist/lib/i18n/index.d.ts.map +1 -1
  38. package/dist/lib/inlineedit/InlineEdit.js +12 -12
  39. package/dist/lib/inlineedit/InlineEdit.js.map +1 -1
  40. package/dist/lib/listview/ListView.js +25 -24
  41. package/dist/lib/listview/ListView.js.map +1 -1
  42. package/dist/lib/localdate/InputLocalDate.js +3 -2
  43. package/dist/lib/localdate/InputLocalDate.js.map +1 -1
  44. package/dist/lib/month/InputMonth.js +9 -8
  45. package/dist/lib/month/InputMonth.js.map +1 -1
  46. package/dist/lib/navigation/Navigation.d.ts +5 -1
  47. package/dist/lib/navigation/Navigation.d.ts.map +1 -1
  48. package/dist/lib/navigation/Navigation.js +24 -26
  49. package/dist/lib/navigation/Navigation.js.map +1 -1
  50. package/dist/lib/navigation/Navigation.types.d.ts +59 -17
  51. package/dist/lib/navigation/Navigation.types.d.ts.map +1 -1
  52. package/dist/lib/responsive/useMobile.d.ts +2 -0
  53. package/dist/lib/responsive/useMobile.d.ts.map +1 -0
  54. package/dist/lib/responsive/useMobile.js +12 -0
  55. package/dist/lib/responsive/useMobile.js.map +1 -0
  56. package/dist/lib/view_layout/ViewTitle.d.ts.map +1 -1
  57. package/dist/lib/view_layout/ViewTitle.js +22 -25
  58. package/dist/lib/view_layout/ViewTitle.js.map +1 -1
  59. package/package.json +4 -4
package/README.md CHANGED
@@ -16,4 +16,3 @@ for our other applications..
16
16
  ## Notes
17
17
 
18
18
  - This package exposes UI primitives rather than a full design system.
19
-
@@ -1 +1 @@
1
- {"version":3,"file":"SeijUIProvider.d.ts","sourceRoot":"","sources":["../../src/init/SeijUIProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAc1C,UAAU,mBAAoB,SAAQ,iBAAiB;CAEtD;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAS/D"}
1
+ {"version":3,"file":"SeijUIProvider.d.ts","sourceRoot":"","sources":["../../src/init/SeijUIProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAc1C,UAAU,mBAAoB,SAAQ,iBAAiB;CAAG;AAE1D,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAS/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SeijUIProvider.js","sources":["../../src/init/SeijUIProvider.tsx"],"sourcesContent":["import { FluentProvider, Theme, webLightTheme } from \"@fluentui/react-components\";\n\nimport { PropsWithChildren } from \"react\";\nimport { ErrorManager } from \"../lib/error_notifier/ErrorNotifier\";\nimport { I18nProvider } from \"../lib/i18n/i18n.react\";\n\n// noinspection SpellCheckingInspection\nconst theme: Theme = {\n ...webLightTheme,\n fontFamilyBase:\n \"'Noto Sans', 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n fontFamilyMonospace: \"Fira Mono, Consolas, 'Courier New', Courier, monospace\",\n fontFamilyNumeric:\n \"Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n};\n\ninterface SeijUIProviderProps extends PropsWithChildren {\n\n}\n\nexport function SeijUIProvider({ children }: SeijUIProviderProps) {\n return (\n <I18nProvider>\n <FluentProvider theme={theme}>\n {children}\n <ErrorManager />\n </FluentProvider>\n </I18nProvider>\n );\n}\n"],"names":["theme","webLightTheme","SeijUIProvider","children","jsx","I18nProvider","jsxs","FluentProvider","ErrorManager"],"mappings":";;;;AAOA,MAAMA,IAAe;AAAA,EACnB,GAAGC;AAAA,EACH,gBACE;AAAA,EACF,qBAAqB;AAAA,EACrB,mBACE;AACJ;AAMO,SAASC,EAAe,EAAE,UAAAC,KAAiC;AAChE,SACE,gBAAAC,EAACC,GAAA,EACC,UAAA,gBAAAC,EAACC,GAAA,EAAe,OAAAP,GACb,UAAA;AAAA,IAAAG;AAAA,sBACAK,GAAA,CAAA,CAAa;AAAA,EAAA,EAAA,CAChB,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"SeijUIProvider.js","sources":["../../src/init/SeijUIProvider.tsx"],"sourcesContent":["import { FluentProvider, Theme, webLightTheme } from \"@fluentui/react-components\";\n\nimport { PropsWithChildren } from \"react\";\nimport { ErrorManager } from \"../lib/error_notifier/ErrorNotifier\";\nimport { I18nProvider } from \"../lib/i18n/i18n.react\";\n\n// noinspection SpellCheckingInspection\nconst theme: Theme = {\n ...webLightTheme,\n fontFamilyBase:\n \"'Noto Sans', 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n fontFamilyMonospace: \"Fira Mono, Consolas, 'Courier New', Courier, monospace\",\n fontFamilyNumeric:\n \"Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n};\n\ninterface SeijUIProviderProps extends PropsWithChildren {}\n\nexport function SeijUIProvider({ children }: SeijUIProviderProps) {\n return (\n <I18nProvider>\n <FluentProvider theme={theme}>\n {children}\n <ErrorManager />\n </FluentProvider>\n </I18nProvider>\n );\n}\n"],"names":["theme","webLightTheme","SeijUIProvider","children","jsx","I18nProvider","jsxs","FluentProvider","ErrorManager"],"mappings":";;;;AAOA,MAAMA,IAAe;AAAA,EACnB,GAAGC;AAAA,EACH,gBACE;AAAA,EACF,qBAAqB;AAAA,EACrB,mBACE;AACJ;AAIO,SAASC,EAAe,EAAE,UAAAC,KAAiC;AAChE,SACE,gBAAAC,EAACC,GAAA,EACC,UAAA,gBAAAC,EAACC,GAAA,EAAe,OAAAP,GACb,UAAA;AAAA,IAAAG;AAAA,sBACAK,GAAA,CAAA,CAAa;AAAA,EAAA,EAAA,CAChB,EAAA,CACF;AAEJ;"}
@@ -1,13 +1,84 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { NavigationTreeItem } from '../navigation/Navigation.types';
3
3
  import { UserStatus } from './ApplicationShell.types';
4
- export declare function ApplicationShell({ applicationName, main, navigationItems, userStatus, onClickHome, navigate, matchPath, }: {
4
+ /**
5
+ * Props for the `ApplicationShell` layout component.
6
+ *
7
+ * The shell renders a persistent left navigation (Fluent UI `NavDrawer`), a top `TitleBar`,
8
+ * and your main application content. It also wires navigation events so the currently
9
+ * selected item reflects the browser URL and clicking items triggers navigation.
10
+ */
11
+ export interface ApplicationShellProps {
12
+ /**
13
+ * Human‑readable name of the application displayed in the `TitleBar`.
14
+ * Example: "Orders Console".
15
+ */
5
16
  applicationName: string;
17
+ /**
18
+ * Icon to display next to the application name
19
+ */
20
+ applicationIcon?: ReactNode;
21
+ /**
22
+ * Main content of the page. This is rendered in the scrollable content area on the right
23
+ * of the navigation drawer. Typically the routed page/component for the current URL.
24
+ */
6
25
  main: ReactNode;
26
+ /**
27
+ * Tree of navigation items used to render the side navigation and compute selection.
28
+ * Items may be categories or leaf entries with a `path`. When a leaf item is selected
29
+ * and has a `path`, `navigate(path)` is invoked.
30
+ */
7
31
  navigationItems: NavigationTreeItem[];
32
+ /**
33
+ * Current user status information shown in the `TitleBar` (e.g., username, avatar, roles).
34
+ */
8
35
  userStatus: UserStatus;
36
+ /**
37
+ * Called when the home button in the `TitleBar` is clicked.
38
+ * Use this to navigate to your application home route or perform any related action.
39
+ */
9
40
  onClickHome: () => void;
41
+ /**
42
+ * Imperative navigation function called when a navigation leaf item with a `path`
43
+ * is selected. Provide the function from your router (e.g., react-router navigate).
44
+ */
10
45
  navigate: (path: string) => void;
46
+ /**
47
+ * Function used to check whether the current browser location matches a given item `path`.
48
+ * It is used at render time to preselect the item that corresponds to the current URL.
49
+ * Return `true` if the provided `path` matches the active route.
50
+ */
11
51
  matchPath: (path: string | undefined) => boolean;
12
- }): import("react/jsx-runtime").JSX.Element;
52
+ }
53
+ /**
54
+ * ApplicationShell
55
+ *
56
+ * High‑level layout component that composes the application chrome:
57
+ * - Top `TitleBar` showing the application name and user status
58
+ * - Left `NavDrawer` for hierarchical navigation
59
+ * - Main scrollable content area where your routed page is rendered
60
+ *
61
+ * Behavior
62
+ * - Preselects the navigation item that matches the current URL via `matchPath`
63
+ * - When a leaf item with a `path` is clicked, calls `navigate(path)`
64
+ * - Keeps track of opened navigation categories and the selected item
65
+ * - Displays a hamburger in the TitleBar to toggle the navigation drawer
66
+ *
67
+ * Usage (example)
68
+ *
69
+ * ```tsx
70
+ * <ApplicationShell
71
+ * applicationName="Orders Console"
72
+ * navigationItems={items}
73
+ * userStatus={{ displayName: "Jane Doe" }}
74
+ * onClickHome={() => navigate("/")}
75
+ * navigate={(path) => navigate(path)}
76
+ * matchPath={(path) => !!path && !!match(path)}
77
+ * main={<Outlet />}
78
+ * />
79
+ * ```
80
+ * Where `navigate`/`match` typically come from your router (e.g., react‑router v6's
81
+ * `useNavigate`/`useMatch`). See `ApplicationShellProps` for details on each prop.
82
+ */
83
+ export declare function ApplicationShell({ applicationName, applicationIcon, main, navigationItems, userStatus, onClickHome, navigate, matchPath, }: ApplicationShellProps): import("react/jsx-runtime").JSX.Element;
13
84
  //# sourceMappingURL=ApplicationShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationShell.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAqCtD,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,IAAI,EACJ,eAAe,EACf,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;CAClD,2CA2FA"}
1
+ {"version":3,"file":"ApplicationShell.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgC,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAmCtD;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;OAGG;IACH,IAAI,EAAE,SAAS,CAAC;IAEhB;;;;OAIG;IACH,eAAe,EAAE,kBAAkB,EAAE,CAAC;IAEtC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,eAAe,EACf,IAAI,EACJ,eAAe,EACf,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,2CAqHvB"}
@@ -1,10 +1,13 @@
1
- import { jsxs as h, jsx as n } from "react/jsx-runtime";
2
- import { makeStyles as j, tokens as m, NavDrawer as M, NavDrawerHeader as A, NavDrawerBody as H, Tooltip as V, Hamburger as U } from "@fluentui/react-components";
3
- import { useState as u, useMemo as q } from "react";
4
- import { Navigation as z } from "../navigation/Navigation.js";
5
- import { createNavigationTreeItemServiceImpl as E } from "../navigation/NavigationService.js";
6
- import { TitleBar as I } from "./TitleBar.js";
7
- const y = j({
1
+ import { jsxs as S, jsx as a } from "react/jsx-runtime";
2
+ import { makeStyles as E, tokens as F } from "@fluentui/react-components";
3
+ import { useState as c, useMemo as R, useEffect as T } from "react";
4
+ import { createNavigationTreeItemServiceImpl as P } from "../navigation/NavigationService.js";
5
+ import { TitleBar as U } from "./TitleBar.js";
6
+ import { useIsMobile as q } from "../responsive/useMobile.js";
7
+ import { Rails as z } from "./ApplicationShellRails.js";
8
+ import { Sidebar as G } from "./ApplicationShellSidebar.js";
9
+ import { MenuBurger as H } from "./ApplicationShellHamburger.js";
10
+ const J = E({
8
11
  shell: {
9
12
  width: "100vw",
10
13
  height: "100vh",
@@ -28,83 +31,85 @@ const y = j({
28
31
  justifyContent: "flex-start",
29
32
  alignItems: "flex-start",
30
33
  overflow: "auto",
31
- backgroundColor: m.colorNeutralBackground2
32
- },
33
- bugerIcon: {
34
- color: m.colorNeutralForegroundOnBrand,
35
- ":hover": {
36
- color: m.colorNeutralForegroundOnBrand
37
- }
34
+ backgroundColor: F.colorNeutralBackground2
38
35
  }
39
36
  });
40
- function R({
41
- applicationName: a,
42
- main: d,
43
- navigationItems: o,
37
+ function te({
38
+ applicationName: o,
39
+ applicationIcon: p,
40
+ main: M,
41
+ navigationItems: d,
44
42
  userStatus: f,
45
- onClickHome: g,
46
- navigate: C,
47
- matchPath: w
43
+ onClickHome: m,
44
+ navigate: k,
45
+ matchPath: v
48
46
  }) {
49
- const l = o.find((t) => "path" in t && t.path !== null && w(t.path)), x = l?.id, b = l && "parentId" in l && l.parentId !== null ? [l.parentId] : [], i = y(), [s, B] = u(!0), [S, k] = u(x ?? ""), [r, c] = u(b), _ = q(() => E(o), [o]), v = () => {
50
- B(!s);
51
- }, D = (t) => {
52
- const e = _.findById(t);
53
- k(e.id);
54
- const p = "parentId" in e ? e.parentId : null;
55
- p && (r.find((T) => T === p) || c([...r, p])), "path" in e && e.path && C(e.path);
56
- }, O = (t) => {
57
- r.find((e) => e === t) ? c(r.filter((e) => e !== t)) : c([...r, t]);
58
- }, F = [];
59
- return l && "parentId" in l && l.parentId !== null && F.push(l.parentId), /* @__PURE__ */ h("div", { "data-e2e-id": "shell", className: i.shell, children: [
60
- /* @__PURE__ */ n("div", { "data-e2e-id": "shell__menu_top", className: i.titleBar, children: s ? null : /* @__PURE__ */ n(
61
- I,
47
+ const t = d.find((n) => "path" in n && n.path !== null && v(n.path)), y = t?.id, w = t && "parentId" in t && t.parentId !== null ? [t.parentId] : [], i = q(), s = J(), [l, g] = c(K), [x, _] = c(!1), [B, N] = c(y ?? ""), [r, h] = c(w), O = R(() => P(d), [d]);
48
+ T(() => {
49
+ i || localStorage.setItem("sidebarMode", l);
50
+ }, [i, l]);
51
+ const C = () => {
52
+ _(!x);
53
+ }, b = () => {
54
+ l === "expanded" && g("rails"), l === "rails" && g("expanded");
55
+ }, I = (n) => {
56
+ const e = O.findById(n);
57
+ N(e.id);
58
+ const u = "parentId" in e ? e.parentId : null;
59
+ u && (r.find((A) => A === u) || h([...r, u])), "path" in e && e.path && k(e.path);
60
+ }, j = (n) => {
61
+ r.find((e) => e === n) ? h(r.filter((e) => e !== n)) : h([...r, n]);
62
+ }, D = [];
63
+ return t && "parentId" in t && t.parentId !== null && D.push(t.parentId), /* @__PURE__ */ S("div", { "data-e2e-id": "shell", className: s.shell, children: [
64
+ /* @__PURE__ */ a("div", { "data-e2e-id": "shell__menu_top", className: s.titleBar, children: i ? /* @__PURE__ */ a(
65
+ U,
62
66
  {
63
- applicationName: a,
67
+ applicationName: o,
68
+ applicationIcon: p,
64
69
  userStatus: f,
65
- onClickHome: g,
66
- hamburger: /* @__PURE__ */ n(N, { onClick: v })
70
+ onClickHome: m,
71
+ hamburger: /* @__PURE__ */ a(H, { onClick: C })
67
72
  }
68
- ) }),
69
- /* @__PURE__ */ h("div", { "data-e2e-id": "shell__main", className: i.main, children: [
70
- /* @__PURE__ */ h(
71
- M,
73
+ ) : null }),
74
+ /* @__PURE__ */ S("div", { "data-e2e-id": "shell__main", className: s.main, children: [
75
+ (!i && l === "expanded" || i) && /* @__PURE__ */ a(
76
+ G,
77
+ {
78
+ selectedItem: B,
79
+ openedCategories: r,
80
+ drawerOpen: x,
81
+ isMobile: i,
82
+ applicationName: o,
83
+ applicationIcon: p,
84
+ userStatus: f,
85
+ navigationItems: d,
86
+ onClickHome: m,
87
+ onClickHamburger: C,
88
+ onClickMenuItem: I,
89
+ onClickCategory: j,
90
+ onClickPanelReduce: b
91
+ }
92
+ ),
93
+ l === "rails" && /* @__PURE__ */ a(
94
+ z,
72
95
  {
73
- selectedValue: S,
74
- open: s,
75
- density: "small",
76
- type: "inline",
77
- openCategories: r,
78
- onNavItemSelect: (t, e) => {
79
- D(e.value);
80
- },
81
- onNavCategoryItemToggle: (t, e) => {
82
- O(e.categoryValue ?? "");
83
- },
84
- children: [
85
- /* @__PURE__ */ n(
86
- I,
87
- {
88
- applicationName: a,
89
- userStatus: f,
90
- onClickHome: g,
91
- hamburger: /* @__PURE__ */ n(N, { onClick: v })
92
- }
93
- ),
94
- /* @__PURE__ */ n(A, {}),
95
- /* @__PURE__ */ n(H, { children: /* @__PURE__ */ n(z, { items: o }) })
96
- ]
96
+ applicationIcon: p,
97
+ navigationItems: d,
98
+ userStatus: f,
99
+ onClickHome: m,
100
+ onClickMenuItem: I,
101
+ onClickSidebarExpand: b
97
102
  }
98
103
  ),
99
- /* @__PURE__ */ n("div", { "data-e2e-id": "shell__content", className: i.content, children: d })
104
+ /* @__PURE__ */ a("div", { "data-e2e-id": "shell__content", className: s.content, children: M })
100
105
  ] })
101
106
  ] });
102
107
  }
103
- const N = ({ onClick: a }) => {
104
- const d = y();
105
- return /* @__PURE__ */ n(V, { content: "Navigation", relationship: "label", children: /* @__PURE__ */ n(U, { className: d.bugerIcon, onClick: a }) });
108
+ const K = () => {
109
+ const o = localStorage.getItem("sidebarMode");
110
+ return o === "expanded" ? "expanded" : o === "rails" ? "rails" : "expanded";
106
111
  };
107
112
  export {
108
- R as ApplicationShell
113
+ te as ApplicationShell
109
114
  };
110
115
  //# sourceMappingURL=ApplicationShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationShell.js","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"sourcesContent":["import {\n Hamburger,\n makeStyles,\n NavDrawer,\n NavDrawerBody,\n NavDrawerHeader,\n tokens,\n Tooltip,\n} from \"@fluentui/react-components\";\nimport { ReactNode, useMemo, useState } from \"react\";\nimport { Navigation } from \"../navigation/Navigation\";\nimport { NavigationTreeItem } from \"../navigation/Navigation.types\";\nimport { createNavigationTreeItemServiceImpl } from \"../navigation/NavigationService\";\nimport { UserStatus } from \"./ApplicationShell.types\";\nimport { TitleBar } from \"./TitleBar\";\n\nconst useApplicationShellStyles = makeStyles({\n shell: {\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n },\n titleBar: {\n width: \"100%\",\n height: \"48px\",\n flex: 0,\n },\n main: {\n overflow: \"hidden\",\n display: \"flex\",\n height: \"100%\",\n },\n content: {\n flex: \"1\",\n display: \"bloc\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n overflow: \"auto\",\n backgroundColor: tokens.colorNeutralBackground2,\n },\n bugerIcon: {\n color: tokens.colorNeutralForegroundOnBrand,\n \":hover\": {\n color: tokens.colorNeutralForegroundOnBrand,\n },\n },\n});\n\nexport function ApplicationShell({\n applicationName,\n main,\n navigationItems,\n userStatus,\n onClickHome,\n navigate,\n matchPath,\n}: {\n applicationName: string;\n main: ReactNode;\n navigationItems: NavigationTreeItem[];\n userStatus: UserStatus;\n onClickHome: () => void;\n navigate: (path: string) => void;\n matchPath: (path: string | undefined) => boolean;\n}) {\n // test si le chemin courant du navigateur correspond à cet item\n // attention, on est obligés de tester tous les items, qu'ils aient\n // un lien ou pas, d'où le url-inconnue pour ceux qui n'ont pas de lien.\n // On est obligés car useMatch est un hook que l'on ne peut pas lancer\n // de manière conditionnelle\n const navigationItemFound = navigationItems.find((it) => \"path\" in it && it.path !== null && matchPath(it.path));\n const navigationItemSelectedFromUrl = navigationItemFound?.id;\n const defaultOpenCategory =\n navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null\n ? [navigationItemFound.parentId]\n : [];\n\n const styles = useApplicationShellStyles();\n const [navDrawerOpened, setNavDrawerOpened] = useState<boolean>(true);\n const [selectedItem, setSelectedItem] = useState<string>(navigationItemSelectedFromUrl ?? \"\");\n const [openedCategories, setOpenCategories] = useState<string[]>(defaultOpenCategory);\n\n const navigationService = useMemo(() => createNavigationTreeItemServiceImpl(navigationItems), [navigationItems]);\n const handleClickHamburger = () => {\n setNavDrawerOpened(!navDrawerOpened);\n };\n\n const handleClickMenuItem = (itemId: string) => {\n const item = navigationService.findById(itemId);\n setSelectedItem(item.id);\n const parentId = \"parentId\" in item ? item.parentId : null;\n if (parentId) {\n if (!openedCategories.find((cat) => cat === parentId)) {\n setOpenCategories([...openedCategories, parentId]);\n }\n }\n if (\"path\" in item && item.path) navigate(item.path);\n };\n\n const handleClickCategory = (categoryId: string) => {\n if (!openedCategories.find((cat) => cat === categoryId)) {\n setOpenCategories([...openedCategories, categoryId]);\n } else {\n setOpenCategories(openedCategories.filter((it) => it !== categoryId));\n }\n };\n\n const openCategories: string[] = [];\n if (navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null) {\n openCategories.push(navigationItemFound.parentId);\n }\n\n return (\n <div data-e2e-id=\"shell\" className={styles.shell}>\n <div data-e2e-id=\"shell__menu_top\" className={styles.titleBar}>\n {!navDrawerOpened ? (\n <TitleBar\n applicationName={applicationName}\n userStatus={userStatus}\n onClickHome={onClickHome}\n hamburger={<MenuBurger onClick={handleClickHamburger} />}\n />\n ) : null}\n </div>\n <div data-e2e-id=\"shell__main\" className={styles.main}>\n <NavDrawer\n selectedValue={selectedItem}\n open={navDrawerOpened}\n density={\"small\"}\n type={\"inline\"}\n openCategories={openedCategories}\n onNavItemSelect={(e, data) => {\n handleClickMenuItem(data.value);\n }}\n onNavCategoryItemToggle={(e, data) => {\n handleClickCategory(data.categoryValue ?? \"\");\n }}\n >\n <TitleBar\n applicationName={applicationName}\n userStatus={userStatus}\n onClickHome={onClickHome}\n hamburger={<MenuBurger onClick={handleClickHamburger} />}\n />\n <NavDrawerHeader></NavDrawerHeader>\n <NavDrawerBody>\n <Navigation items={navigationItems} />\n </NavDrawerBody>\n </NavDrawer>\n <div data-e2e-id=\"shell__content\" className={styles.content}>\n {main}\n </div>\n </div>\n </div>\n );\n}\n\nconst MenuBurger = ({ onClick }: { onClick: () => void }) => {\n const styles = useApplicationShellStyles();\n return (\n <Tooltip content=\"Navigation\" relationship=\"label\">\n <Hamburger className={styles.bugerIcon} onClick={onClick} />\n </Tooltip>\n );\n};\n"],"names":["useApplicationShellStyles","makeStyles","tokens","ApplicationShell","applicationName","main","navigationItems","userStatus","onClickHome","navigate","matchPath","navigationItemFound","it","navigationItemSelectedFromUrl","defaultOpenCategory","styles","navDrawerOpened","setNavDrawerOpened","useState","selectedItem","setSelectedItem","openedCategories","setOpenCategories","navigationService","useMemo","createNavigationTreeItemServiceImpl","handleClickHamburger","handleClickMenuItem","itemId","item","parentId","cat","handleClickCategory","categoryId","openCategories","jsx","TitleBar","MenuBurger","jsxs","NavDrawer","e","data","NavDrawerHeader","NavDrawerBody","Navigation","onClick","Tooltip","Hamburger"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationShell.js","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"sourcesContent":["import { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { NavigationTreeItem } from \"../navigation/Navigation.types\";\nimport { createNavigationTreeItemServiceImpl } from \"../navigation/NavigationService\";\nimport { UserStatus } from \"./ApplicationShell.types\";\nimport { TitleBar } from \"./TitleBar\";\nimport { useIsMobile } from \"../responsive/useMobile\";\nimport { Rails } from \"./ApplicationShellRails\";\nimport { Sidebar } from \"./ApplicationShellSidebar\";\nimport { MenuBurger } from \"./ApplicationShellHamburger\";\n\nconst useApplicationShellStyles = makeStyles({\n shell: {\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n },\n titleBar: {\n width: \"100%\",\n height: \"48px\",\n flex: 0,\n },\n main: {\n overflow: \"hidden\",\n display: \"flex\",\n height: \"100%\",\n },\n content: {\n flex: \"1\",\n display: \"bloc\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n overflow: \"auto\",\n backgroundColor: tokens.colorNeutralBackground2,\n },\n});\n\n/**\n * Props for the `ApplicationShell` layout component.\n *\n * The shell renders a persistent left navigation (Fluent UI `NavDrawer`), a top `TitleBar`,\n * and your main application content. It also wires navigation events so the currently\n * selected item reflects the browser URL and clicking items triggers navigation.\n */\nexport interface ApplicationShellProps {\n /**\n * Human‑readable name of the application displayed in the `TitleBar`.\n * Example: \"Orders Console\".\n */\n applicationName: string;\n /**\n * Icon to display next to the application name\n */\n applicationIcon?: ReactNode;\n /**\n * Main content of the page. This is rendered in the scrollable content area on the right\n * of the navigation drawer. Typically the routed page/component for the current URL.\n */\n main: ReactNode;\n\n /**\n * Tree of navigation items used to render the side navigation and compute selection.\n * Items may be categories or leaf entries with a `path`. When a leaf item is selected\n * and has a `path`, `navigate(path)` is invoked.\n */\n navigationItems: NavigationTreeItem[];\n\n /**\n * Current user status information shown in the `TitleBar` (e.g., username, avatar, roles).\n */\n userStatus: UserStatus;\n\n /**\n * Called when the home button in the `TitleBar` is clicked.\n * Use this to navigate to your application home route or perform any related action.\n */\n onClickHome: () => void;\n\n /**\n * Imperative navigation function called when a navigation leaf item with a `path`\n * is selected. Provide the function from your router (e.g., react-router navigate).\n */\n navigate: (path: string) => void;\n\n /**\n * Function used to check whether the current browser location matches a given item `path`.\n * It is used at render time to preselect the item that corresponds to the current URL.\n * Return `true` if the provided `path` matches the active route.\n */\n matchPath: (path: string | undefined) => boolean;\n}\n\n/**\n * ApplicationShell\n *\n * High‑level layout component that composes the application chrome:\n * - Top `TitleBar` showing the application name and user status\n * - Left `NavDrawer` for hierarchical navigation\n * - Main scrollable content area where your routed page is rendered\n *\n * Behavior\n * - Preselects the navigation item that matches the current URL via `matchPath`\n * - When a leaf item with a `path` is clicked, calls `navigate(path)`\n * - Keeps track of opened navigation categories and the selected item\n * - Displays a hamburger in the TitleBar to toggle the navigation drawer\n *\n * Usage (example)\n *\n * ```tsx\n * <ApplicationShell\n * applicationName=\"Orders Console\"\n * navigationItems={items}\n * userStatus={{ displayName: \"Jane Doe\" }}\n * onClickHome={() => navigate(\"/\")}\n * navigate={(path) => navigate(path)}\n * matchPath={(path) => !!path && !!match(path)}\n * main={<Outlet />}\n * />\n * ```\n * Where `navigate`/`match` typically come from your router (e.g., react‑router v6's\n * `useNavigate`/`useMatch`). See `ApplicationShellProps` for details on each prop.\n */\nexport function ApplicationShell({\n applicationName,\n applicationIcon,\n main,\n navigationItems,\n userStatus,\n onClickHome,\n navigate,\n matchPath,\n}: ApplicationShellProps) {\n // test si le chemin courant du navigateur correspond à cet item\n // attention, on est obligés de tester tous les items, qu'ils aient\n // un lien ou pas, d'où le url-inconnue pour ceux qui n'ont pas de lien.\n // On est obligés car useMatch est un hook que l'on ne peut pas lancer\n // de manière conditionnelle\n const navigationItemFound = navigationItems.find((it) => \"path\" in it && it.path !== null && matchPath(it.path));\n const navigationItemSelectedFromUrl = navigationItemFound?.id;\n const defaultOpenCategory =\n navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null\n ? [navigationItemFound.parentId]\n : [];\n\n // Hooks\n const isMobile = useIsMobile();\n const styles = useApplicationShellStyles();\n\n const [sidebarMode, setSidebarMode] = useState<\"rails\" | \"expanded\">(initialSidebarModeDetect);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState<string>(navigationItemSelectedFromUrl ?? \"\");\n const [openedCategories, setOpenCategories] = useState<string[]>(defaultOpenCategory);\n const navigationService = useMemo(() => createNavigationTreeItemServiceImpl(navigationItems), [navigationItems]);\n\n useEffect(() => {\n // Persist user choice for the rails or sidebar mode\n if (!isMobile) {\n localStorage.setItem(\"sidebarMode\", sidebarMode);\n }\n }, [isMobile, sidebarMode]);\n\n // Events\n\n const handleClickHamburger = () => {\n setDrawerOpen(!drawerOpen);\n };\n\n const handleChangeSidebarMode = () => {\n if (sidebarMode === \"expanded\") {\n setSidebarMode(\"rails\");\n }\n if (sidebarMode === \"rails\") {\n setSidebarMode(\"expanded\");\n }\n };\n\n const handleClickMenuItem = (itemId: string) => {\n const item = navigationService.findById(itemId);\n setSelectedItem(item.id);\n const parentId = \"parentId\" in item ? item.parentId : null;\n if (parentId) {\n if (!openedCategories.find((cat) => cat === parentId)) {\n setOpenCategories([...openedCategories, parentId]);\n }\n }\n if (\"path\" in item && item.path) navigate(item.path);\n };\n\n const handleClickCategory = (categoryId: string) => {\n if (!openedCategories.find((cat) => cat === categoryId)) {\n setOpenCategories([...openedCategories, categoryId]);\n } else {\n setOpenCategories(openedCategories.filter((it) => it !== categoryId));\n }\n };\n\n const openCategories: string[] = [];\n if (navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null) {\n openCategories.push(navigationItemFound.parentId);\n }\n\n return (\n <div data-e2e-id=\"shell\" className={styles.shell}>\n <div data-e2e-id=\"shell__menu_top\" className={styles.titleBar}>\n {isMobile ? (\n <TitleBar\n applicationName={applicationName}\n applicationIcon={applicationIcon}\n userStatus={userStatus}\n onClickHome={onClickHome}\n hamburger={<MenuBurger onClick={handleClickHamburger} />}\n />\n ) : null}\n </div>\n <div data-e2e-id=\"shell__main\" className={styles.main}>\n {((!isMobile && sidebarMode === \"expanded\") || isMobile) && (\n <Sidebar\n selectedItem={selectedItem}\n openedCategories={openedCategories}\n drawerOpen={drawerOpen}\n isMobile={isMobile}\n applicationName={applicationName}\n applicationIcon={applicationIcon}\n userStatus={userStatus}\n navigationItems={navigationItems}\n onClickHome={onClickHome}\n onClickHamburger={handleClickHamburger}\n onClickMenuItem={handleClickMenuItem}\n onClickCategory={handleClickCategory}\n onClickPanelReduce={handleChangeSidebarMode}\n />\n )}\n {sidebarMode === \"rails\" && (\n <Rails\n applicationIcon={applicationIcon}\n navigationItems={navigationItems}\n userStatus={userStatus}\n onClickHome={onClickHome}\n onClickMenuItem={handleClickMenuItem}\n onClickSidebarExpand={handleChangeSidebarMode}\n />\n )}\n <div data-e2e-id=\"shell__content\" className={styles.content}>\n {main}\n </div>\n </div>\n </div>\n );\n}\n\nconst initialSidebarModeDetect = () => {\n const value = localStorage.getItem(\"sidebarMode\");\n if (value === \"expanded\") return \"expanded\";\n if (value === \"rails\") return \"rails\";\n return \"expanded\";\n};\n"],"names":["useApplicationShellStyles","makeStyles","tokens","ApplicationShell","applicationName","applicationIcon","main","navigationItems","userStatus","onClickHome","navigate","matchPath","navigationItemFound","it","navigationItemSelectedFromUrl","defaultOpenCategory","isMobile","useIsMobile","styles","sidebarMode","setSidebarMode","useState","initialSidebarModeDetect","drawerOpen","setDrawerOpen","selectedItem","setSelectedItem","openedCategories","setOpenCategories","navigationService","useMemo","createNavigationTreeItemServiceImpl","useEffect","handleClickHamburger","handleChangeSidebarMode","handleClickMenuItem","itemId","item","parentId","cat","handleClickCategory","categoryId","openCategories","jsx","TitleBar","MenuBurger","Sidebar","Rails","value"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const MenuBurger: ({ onClick }: {
2
+ onClick: () => void;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=ApplicationShellHamburger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellHamburger.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellHamburger.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU,GAAI,aAAa;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,4CAO9D,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { makeStyles as t, tokens as r, Tooltip as l, Hamburger as a } from "@fluentui/react-components";
3
+ const c = t({
4
+ bugerIcon: {
5
+ color: r.colorNeutralForegroundOnBrand,
6
+ ":hover": {
7
+ color: r.colorNeutralForegroundOnBrand
8
+ }
9
+ }
10
+ }), i = ({ onClick: e }) => {
11
+ const n = c();
12
+ return /* @__PURE__ */ o(l, { content: "Navigation", relationship: "label", children: /* @__PURE__ */ o(a, { className: n.bugerIcon, onClick: e }) });
13
+ };
14
+ export {
15
+ i as MenuBurger
16
+ };
17
+ //# sourceMappingURL=ApplicationShellHamburger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellHamburger.js","sources":["../../../src/lib/applicationshell/ApplicationShellHamburger.tsx"],"sourcesContent":["import { Hamburger, makeStyles, tokens, Tooltip } from \"@fluentui/react-components\";\nconst useApplicationShellStyles = makeStyles({\n bugerIcon: {\n color: tokens.colorNeutralForegroundOnBrand,\n \":hover\": {\n color: tokens.colorNeutralForegroundOnBrand,\n },\n },\n});\nexport const MenuBurger = ({ onClick }: { onClick: () => void }) => {\n const styles = useApplicationShellStyles();\n return (\n <Tooltip content=\"Navigation\" relationship=\"label\">\n <Hamburger className={styles.bugerIcon} onClick={onClick} />\n </Tooltip>\n );\n};\n"],"names":["useApplicationShellStyles","makeStyles","tokens","MenuBurger","onClick","styles","jsx","Tooltip","Hamburger"],"mappings":";;AACA,MAAMA,IAA4BC,EAAW;AAAA,EAC3C,WAAW;AAAA,IACT,OAAOC,EAAO;AAAA,IACd,UAAU;AAAA,MACR,OAAOA,EAAO;AAAA,IAAA;AAAA,EAChB;AAEJ,CAAC,GACYC,IAAa,CAAC,EAAE,SAAAC,QAAuC;AAClE,QAAMC,IAASL,EAAA;AACf,SACE,gBAAAM,EAACC,GAAA,EAAQ,SAAQ,cAAa,cAAa,SACzC,UAAA,gBAAAD,EAACE,GAAA,EAAU,WAAWH,EAAO,WAAW,SAAAD,EAAA,CAAkB,GAC5D;AAEJ;"}
@@ -0,0 +1,5 @@
1
+ export declare const PanelLeftContract: ({ panelState, onClick, }: {
2
+ panelState: "expanded" | "rails";
3
+ onClick: () => void;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ApplicationShellPanelContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellPanelContract.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellPanelContract.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,GAAI,0BAG/B;IACD,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,4CAWA,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { Tooltip as o, Button as r } from "@fluentui/react-components";
3
+ import { Icon as a } from "@seij/common-ui-icons";
4
+ const c = ({
5
+ panelState: n,
6
+ onClick: t
7
+ }) => /* @__PURE__ */ e(o, { content: "Reduce panel", relationship: "label", children: /* @__PURE__ */ e(
8
+ r,
9
+ {
10
+ onClick: t,
11
+ icon: /* @__PURE__ */ e(a, { name: n === "expanded" ? "panel_left_reduce" : "panel_left_expand" }),
12
+ size: "medium",
13
+ appearance: "subtle"
14
+ }
15
+ ) });
16
+ export {
17
+ c as PanelLeftContract
18
+ };
19
+ //# sourceMappingURL=ApplicationShellPanelContract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellPanelContract.js","sources":["../../../src/lib/applicationshell/ApplicationShellPanelContract.tsx"],"sourcesContent":["import { Button, Tooltip } from \"@fluentui/react-components\";\nimport { Icon } from \"@seij/common-ui-icons\";\n\nexport const PanelLeftContract = ({\n panelState,\n onClick,\n}: {\n panelState: \"expanded\" | \"rails\";\n onClick: () => void;\n}) => {\n return (\n <Tooltip content=\"Reduce panel\" relationship=\"label\">\n <Button\n onClick={onClick}\n icon={<Icon name={panelState === \"expanded\" ? \"panel_left_reduce\" : \"panel_left_expand\"} />}\n size=\"medium\"\n appearance=\"subtle\"\n />\n </Tooltip>\n );\n};\n"],"names":["PanelLeftContract","panelState","onClick","jsx","Tooltip","Button","Icon"],"mappings":";;;AAGO,MAAMA,IAAoB,CAAC;AAAA,EAChC,YAAAC;AAAA,EACA,SAAAC;AACF,MAKI,gBAAAC,EAACC,GAAA,EAAQ,SAAQ,gBAAe,cAAa,SAC3C,UAAA,gBAAAD;AAAA,EAACE;AAAA,EAAA;AAAA,IACC,SAAAH;AAAA,IACA,MAAM,gBAAAC,EAACG,GAAA,EAAK,MAAML,MAAe,aAAa,sBAAsB,qBAAqB;AAAA,IACzF,MAAK;AAAA,IACL,YAAW;AAAA,EAAA;AAAA,GAEf;"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ import { NavigationTreeItem, UserStatus } from '@seij/common-ui';
3
+ export declare function Rails({ applicationIcon, navigationItems, userStatus, onClickHome, onClickMenuItem, onClickSidebarExpand, }: {
4
+ applicationIcon?: ReactNode;
5
+ navigationItems: NavigationTreeItem[];
6
+ userStatus: UserStatus;
7
+ onClickHome: () => void;
8
+ onClickMenuItem: (id: string) => void;
9
+ onClickSidebarExpand: () => void;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=ApplicationShellRails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellRails.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellRails.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAmD,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAsBlH,wBAAgB,KAAK,CAAC,EACpB,eAAe,EACf,eAAe,EACf,UAAU,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,GACrB,EAAE;IACD,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC,2CAgDA"}
@@ -0,0 +1,111 @@
1
+ import { jsxs as d, jsx as n } from "react/jsx-runtime";
2
+ import { makeStyles as f, tokens as m, Tooltip as r } from "@fluentui/react-components";
3
+ import { User as h } from "./TitleBar.js";
4
+ import { PanelLeftContract as x } from "./ApplicationShellPanelContract.js";
5
+ import { Icon as c, parseIconName as p } from "@seij/common-ui-icons";
6
+ const a = f({
7
+ container: {
8
+ display: "flex",
9
+ textAlign: "center",
10
+ width: "32px",
11
+ height: "32px",
12
+ alignItems: "center",
13
+ alignContent: "center",
14
+ "& > div": {
15
+ width: "100%"
16
+ },
17
+ "&:hover": {
18
+ cursor: "pointer",
19
+ backgroundColor: m.colorNeutralBackground4Hover
20
+ }
21
+ }
22
+ });
23
+ function j({
24
+ applicationIcon: t,
25
+ navigationItems: i,
26
+ userStatus: l,
27
+ onClickHome: e,
28
+ onClickMenuItem: o,
29
+ onClickSidebarExpand: u
30
+ }) {
31
+ return /* @__PURE__ */ d(
32
+ "div",
33
+ {
34
+ style: {
35
+ backgroundColor: m.colorNeutralBackground4,
36
+ width: "48px",
37
+ height: "100%",
38
+ display: "flex",
39
+ flexDirection: "column"
40
+ },
41
+ children: [
42
+ /* @__PURE__ */ n(
43
+ "div",
44
+ {
45
+ style: {
46
+ display: "flex",
47
+ flexDirection: "column",
48
+ alignItems: "center",
49
+ justifyContent: "start",
50
+ paddingTop: "0.5em"
51
+ },
52
+ children: /* @__PURE__ */ n(y, { applicationIcon: t, onClick: e })
53
+ }
54
+ ),
55
+ /* @__PURE__ */ n(
56
+ "div",
57
+ {
58
+ style: {
59
+ flex: 1,
60
+ display: "flex",
61
+ flexDirection: "column",
62
+ alignItems: "center",
63
+ justifyContent: "start"
64
+ },
65
+ children: i.map((s) => /* @__PURE__ */ n(g, { item: s, onClick: o }, s.id))
66
+ }
67
+ ),
68
+ /* @__PURE__ */ d(
69
+ "div",
70
+ {
71
+ style: {
72
+ display: "flex",
73
+ flexDirection: "column",
74
+ alignItems: "center",
75
+ justifyContent: "start"
76
+ },
77
+ children: [
78
+ /* @__PURE__ */ n(h, { status: l }),
79
+ /* @__PURE__ */ n(v, { onClick: u })
80
+ ]
81
+ }
82
+ )
83
+ ]
84
+ }
85
+ );
86
+ }
87
+ const y = ({ applicationIcon: t, onClick: i }) => {
88
+ const l = a();
89
+ return /* @__PURE__ */ n("div", { className: l.container, onClick: () => i(), children: /* @__PURE__ */ n(r, { content: "Home", relationship: "description", children: /* @__PURE__ */ n("span", { children: t || /* @__PURE__ */ n(c, { name: "dashboard" }) }) }) });
90
+ }, v = ({ onClick: t }) => {
91
+ const i = a();
92
+ return /* @__PURE__ */ n("div", { className: i.container, onClick: () => t(), children: /* @__PURE__ */ n(x, { panelState: "rails", onClick: t }) });
93
+ }, g = ({ item: t, onClick: i }) => {
94
+ const l = a();
95
+ if (t.type === "divider") return null;
96
+ if (t.type === "group") {
97
+ const e = t, o = e.icon ? p(e.icon) : void 0;
98
+ return /* @__PURE__ */ n("div", { className: l.container, onClick: () => i(e.id), children: /* @__PURE__ */ n(r, { content: e.label, relationship: "description", children: o && /* @__PURE__ */ n(c, { name: o }) }) }, e.id);
99
+ }
100
+ if (t.type === "page") {
101
+ const e = t;
102
+ if (e.parentId !== null) return null;
103
+ const o = e.icon ? p(e.icon) : void 0;
104
+ return /* @__PURE__ */ n(r, { content: e.label, relationship: "description", children: /* @__PURE__ */ n("div", { className: l.container, onClick: () => i(e.id), children: /* @__PURE__ */ n("div", { children: o && /* @__PURE__ */ n(c, { name: o }) }) }, e.id) });
105
+ }
106
+ return null;
107
+ };
108
+ export {
109
+ j as Rails
110
+ };
111
+ //# sourceMappingURL=ApplicationShellRails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellRails.js","sources":["../../../src/lib/applicationshell/ApplicationShellRails.tsx"],"sourcesContent":["import { makeStyles, tokens, Tooltip } from \"@fluentui/react-components\";\nimport { User } from \"./TitleBar\";\nimport { ReactNode } from \"react\";\nimport { NavigationTreeItem, NavigationTreeItemGroup, NavigationTreeItemPage, UserStatus } from \"@seij/common-ui\";\nimport { PanelLeftContract } from \"./ApplicationShellPanelContract\";\nimport { Icon, IconName, parseIconName } from \"@seij/common-ui-icons\";\n\nconst useStylesRailboxItem = makeStyles({\n container: {\n display: \"flex\",\n textAlign: \"center\",\n width: \"32px\",\n height: \"32px\",\n alignItems: \"center\",\n alignContent: \"center\",\n \"& > div\": {\n width: \"100%\",\n },\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: tokens.colorNeutralBackground4Hover,\n },\n },\n});\n\nexport function Rails({\n applicationIcon,\n navigationItems,\n userStatus,\n onClickHome,\n onClickMenuItem,\n onClickSidebarExpand,\n}: {\n applicationIcon?: ReactNode;\n navigationItems: NavigationTreeItem[];\n userStatus: UserStatus;\n onClickHome: () => void;\n onClickMenuItem: (id: string) => void;\n onClickSidebarExpand: () => void;\n}) {\n return (\n <div\n style={{\n backgroundColor: tokens.colorNeutralBackground4,\n width: \"48px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"start\",\n paddingTop: \"0.5em\",\n }}\n >\n <RailBoxApplicationIcon applicationIcon={applicationIcon} onClick={onClickHome} />\n </div>\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"start\",\n }}\n >\n {navigationItems.map((it) => (\n <RailBoxNavigationItem key={it.id} item={it} onClick={onClickMenuItem} />\n ))}\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"start\",\n }}\n >\n <User status={userStatus} />\n <RailBoxPanelLeftExpand onClick={onClickSidebarExpand} />\n </div>\n </div>\n );\n}\n\nconst RailBoxApplicationIcon = ({ applicationIcon, onClick }: { applicationIcon?: ReactNode; onClick: () => void }) => {\n const styles = useStylesRailboxItem();\n return (\n <div className={styles.container} onClick={() => onClick()}>\n <Tooltip content={\"Home\"} relationship=\"description\">\n <span>{applicationIcon ? applicationIcon : <Icon name={\"dashboard\"} />}</span>\n </Tooltip>\n </div>\n );\n};\nconst RailBoxPanelLeftExpand = ({ onClick }: { onClick: () => void }) => {\n const styles = useStylesRailboxItem();\n return (\n <div className={styles.container} onClick={() => onClick()}>\n <PanelLeftContract panelState={\"rails\"} onClick={onClick} />\n </div>\n );\n};\nconst RailBoxNavigationItem = ({ item, onClick }: { item: NavigationTreeItem; onClick: (id: string) => void }) => {\n const styles = useStylesRailboxItem();\n if (item.type === \"divider\") return null;\n if (item.type === \"group\") {\n const nav = item as NavigationTreeItemGroup;\n const iconName: IconName | undefined = nav.icon ? parseIconName(nav.icon) : undefined;\n return (\n <div key={nav.id} className={styles.container} onClick={() => onClick(nav.id)}>\n <Tooltip content={nav.label} relationship=\"description\">\n {iconName && <Icon name={iconName} />}\n </Tooltip>\n </div>\n );\n }\n if (item.type === \"page\") {\n const nav = item as NavigationTreeItemPage;\n if (nav.parentId !== null) return null;\n const iconName: IconName | undefined = nav.icon ? parseIconName(nav.icon) : undefined;\n return (\n <Tooltip content={nav.label} relationship=\"description\">\n <div key={nav.id} className={styles.container} onClick={() => onClick(nav.id)}>\n <div>{iconName && <Icon name={iconName} />}</div>\n </div>\n </Tooltip>\n );\n }\n return null;\n};\n"],"names":["useStylesRailboxItem","makeStyles","tokens","Rails","applicationIcon","navigationItems","userStatus","onClickHome","onClickMenuItem","onClickSidebarExpand","jsxs","jsx","RailBoxApplicationIcon","it","RailBoxNavigationItem","User","RailBoxPanelLeftExpand","onClick","styles","Tooltip","Icon","PanelLeftContract","item","nav","iconName","parseIconName"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { NavigationTreeItem, UserStatus } from '@seij/common-ui';
2
+ import { ReactNode } from 'react';
3
+ export declare function Sidebar({ selectedItem, isMobile, applicationName, drawerOpen, openedCategories, applicationIcon, userStatus, navigationItems, onClickHome, onClickMenuItem, onClickCategory, onClickHamburger, onClickPanelReduce, }: {
4
+ isMobile: boolean;
5
+ drawerOpen: boolean;
6
+ selectedItem: string;
7
+ applicationName: string;
8
+ applicationIcon?: ReactNode;
9
+ openedCategories: string[];
10
+ navigationItems: NavigationTreeItem[];
11
+ userStatus: UserStatus;
12
+ onClickHome: () => void;
13
+ onClickMenuItem: (id: string) => void;
14
+ onClickCategory: (id: string) => void;
15
+ onClickHamburger: () => void;
16
+ onClickPanelReduce: () => void;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=ApplicationShellSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationShellSidebar.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellSidebar.tsx"],"names":[],"mappings":"AASA,OAAO,EAAc,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,OAAO,CAAC,EACtB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC,2CAoCA"}