@rivm-loculus-tools/common-frontend 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/@types/common-frontend.d.ts +2 -0
  2. package/dist/@types/mui.d.ts +48 -0
  3. package/dist/components/fasta/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.d.ts +4 -0
  4. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js +18 -22
  5. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js.map +1 -1
  6. package/dist/components/fasta/FastaPageHeaderImportButton/FastaPageHeaderImportButton.d.ts +4 -0
  7. package/dist/components/fasta/FastaPageHeaderImportButton/index.js +17 -15
  8. package/dist/components/fasta/FastaPageHeaderImportButton/index.js.map +1 -1
  9. package/dist/components/ui/ButtonWithMenu/ButtonWithMenu.d.ts +7 -1
  10. package/dist/components/ui/ButtonWithMenu/index.js +32 -27
  11. package/dist/components/ui/ButtonWithMenu/index.js.map +1 -1
  12. package/dist/components/ui/PageCommonHeader/PageCommonHeader.d.ts +5 -1
  13. package/dist/components/ui/PageCommonHeader/index.js +42 -35
  14. package/dist/components/ui/PageCommonHeader/index.js.map +1 -1
  15. package/dist/components/ui/SearchBar/SearchBar.d.ts +15 -0
  16. package/dist/components/ui/SearchBar/SearchBarNodeCounter.d.ts +8 -0
  17. package/dist/components/ui/SearchBar/index.js +136 -0
  18. package/dist/components/ui/SearchBar/index.js.map +1 -0
  19. package/dist/theme/demoTheme/index.js +26 -1
  20. package/dist/theme/demoTheme/index.js.map +1 -1
  21. package/package.json +9 -5
  22. package/dist/components/SearchBar/SearchBar.d.ts +0 -10
  23. package/dist/components/SearchBar/SearchBarNodeCounter.d.ts +0 -4
  24. package/dist/components/SearchBar/index.js +0 -128
  25. package/dist/components/SearchBar/index.js.map +0 -1
  26. /package/dist/components/{SearchBar → ui/SearchBar}/index.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ /* eslint-disable import-x/unambiguous */
2
+ /// <reference types="./mui.d.ts" />
@@ -0,0 +1,48 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { ComponentsProps } from '@mui/material/styles';
3
+
4
+ import type { FastaPageHeaderCenterComponentTheme } from '../components/fasta/FastaPageHeaderCenterComponent';
5
+ import type { FastaPageHeaderImportButtonTheme } from '../components/fasta/FastaPageHeaderImportButton';
6
+ import type {
7
+ SearchBarNodeCounterProps,
8
+ SearchBarNodeCounterTheme,
9
+ } from '../components/ui/SearchBar/SearchBarNodeCounter';
10
+ import type {
11
+ ButtonWithMenuProps,
12
+ ButtonWithMenuTheme,
13
+ } from '../components/ui/ButtonWithMenu/ButtonWithMenu';
14
+ import type {
15
+ PageCommonHeaderProps,
16
+ PageCommonHeaderTheme,
17
+ } from '../components/ui/PageCommonHeader';
18
+ import type {
19
+ SearchBarProps,
20
+ SearchBarTheme,
21
+ } from '../components/ui/SearchBar';
22
+
23
+ declare module '@mui/material/styles' {
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Required to augment MUI's generic interface.
25
+ interface Components<TTheme = unknown> {
26
+ RivmLoculusToolsCommonFrontendButtonWithMenu?: {
27
+ defaultProps?: ComponentsProps['RivmLoculusToolsCommonFrontendButtonWithMenu'];
28
+ } & ButtonWithMenuTheme;
29
+ RivmLoculusToolsCommonFrontendFastaPageHeaderCenterComponent?: FastaPageHeaderCenterComponentTheme;
30
+ RivmLoculusToolsCommonFrontendFastaPageHeaderImportButton?: FastaPageHeaderImportButtonTheme;
31
+ RivmLoculusToolsCommonFrontendPageCommonHeader?: {
32
+ defaultProps?: ComponentsProps['RivmLoculusToolsCommonFrontendPageCommonHeader'];
33
+ } & PageCommonHeaderTheme;
34
+ RivmLoculusToolsCommonFrontendSearchBar?: {
35
+ defaultProps?: ComponentsProps['RivmLoculusToolsCommonFrontendSearchBar'];
36
+ } & SearchBarTheme;
37
+ RivmLoculusToolsCommonFrontendSearchBarNodeCounter?: {
38
+ defaultProps?: ComponentsProps['RivmLoculusToolsCommonFrontendSearchBarNodeCounter'];
39
+ } & SearchBarNodeCounterTheme;
40
+ }
41
+
42
+ interface ComponentsPropsList {
43
+ RivmLoculusToolsCommonFrontendButtonWithMenu: ButtonWithMenuProps;
44
+ RivmLoculusToolsCommonFrontendPageCommonHeader: PageCommonHeaderProps;
45
+ RivmLoculusToolsCommonFrontendSearchBar: SearchBarProps;
46
+ RivmLoculusToolsCommonFrontendSearchBarNodeCounter: SearchBarNodeCounterProps;
47
+ }
48
+ }
@@ -1,6 +1,10 @@
1
+ import { ComponentsOverrides, Theme } from '@mui/material/styles';
1
2
  import { StoreApi } from 'zustand';
2
3
  import { FastaDataStore } from '../../../stores/fastaDataStore';
3
4
  export type FastaPageHeaderCenterComponentProps = {
4
5
  store: StoreApi<FastaDataStore>;
5
6
  };
7
+ export type FastaPageHeaderCenterComponentTheme = {
8
+ styleOverrides?: ComponentsOverrides<Theme>['MuiChip'];
9
+ };
6
10
  export declare const FastaPageHeaderCenterComponent: ({ store }: FastaPageHeaderCenterComponentProps) => import('react').JSX.Element;
@@ -1,36 +1,32 @@
1
1
  import { t as e } from "../../../_chunks/react.js";
2
- import { Box as t, Chip as n } from "@mui/material";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
2
+ import { Box as t, Chip as n, styled as r } from "@mui/material";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
4
  // src/components/fasta/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.tsx
5
- var a = ({ store: a }) => {
6
- let o = e(a, (e) => e.parsedFasta), s = e(a, (e) => e.parsedMetadata), c = o?.sequences?.length || 0, l = s?.records?.length || 0;
7
- return /* @__PURE__ */ i(t, {
5
+ var o = r(n, {
6
+ name: "RivmLoculusToolsCommonFrontendFastaPageHeaderCenterComponent",
7
+ slot: "Root"
8
+ })({
9
+ backgroundColor: "rgba(255, 255, 255, 0.2)",
10
+ color: "#FFFFFF",
11
+ fontSize: "0.75rem",
12
+ fontWeight: 600
13
+ }), s = ({ store: n }) => {
14
+ let r = e(n, (e) => e.parsedFasta), s = e(n, (e) => e.parsedMetadata), c = r?.sequences?.length || 0, l = s?.records?.length || 0;
15
+ return /* @__PURE__ */ a(t, {
8
16
  sx: {
9
17
  alignItems: "center",
10
18
  display: "flex",
11
19
  gap: 1
12
20
  },
13
- children: [c > 0 && /* @__PURE__ */ r(n, {
21
+ children: [c > 0 && /* @__PURE__ */ i(o, {
14
22
  label: `${c} Sequences`,
15
- size: "small",
16
- sx: {
17
- backgroundColor: "rgba(255, 255, 255, 0.2)",
18
- color: "#FFFFFF",
19
- fontSize: "0.75rem",
20
- fontWeight: 600
21
- }
22
- }), l > 0 && /* @__PURE__ */ r(n, {
23
+ size: "small"
24
+ }), l > 0 && /* @__PURE__ */ i(o, {
23
25
  label: `${l} Metadata Records`,
24
- size: "small",
25
- sx: {
26
- backgroundColor: "rgba(255, 255, 255, 0.2)",
27
- color: "#FFFFFF",
28
- fontSize: "0.75rem",
29
- fontWeight: 600
30
- }
26
+ size: "small"
31
27
  })]
32
28
  });
33
29
  };
34
- export { a as FastaPageHeaderCenterComponent };
30
+ export { s as FastaPageHeaderCenterComponent };
35
31
 
36
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useStore","FastaPageHeaderCenterComponent","parsedFasta","store","state","parsedMetadata","seqCount","metaCount","Box","Chip"],"sources":["../../../../src/components/fasta/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.tsx"],"sourcesContent":["import {\n Box,\n Chip,\n} from '@mui/material';\nimport type { StoreApi } from 'zustand';\nimport { useStore } from 'zustand';\n\nimport type { FastaDataStore } from '../../../stores/fastaDataStore';\n\n\nexport type FastaPageHeaderCenterComponentProps = {\n store: StoreApi<FastaDataStore>;\n};\n\nexport const FastaPageHeaderCenterComponent = ({ store }: FastaPageHeaderCenterComponentProps) => {\n const parsedFasta = useStore(store, (state) => state.parsedFasta);\n const parsedMetadata = useStore(store, (state) => state.parsedMetadata);\n\n const seqCount = parsedFasta?.sequences?.length || 0;\n const metaCount = parsedMetadata?.records?.length || 0;\n\n return (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {seqCount > 0 && (\n <Chip\n label={`${seqCount} Sequences`}\n size={'small'}\n sx={{\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n color: '#FFFFFF',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}\n />\n )}\n {metaCount > 0 && (\n <Chip\n label={`${metaCount} Metadata Records`}\n size={'small'}\n sx={{\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n color: '#FFFFFF',\n fontSize: '0.75rem',\n fontWeight: 600,\n }}\n />\n )}\n </Box>\n );\n};\n"],"mappings":";;;;AAcA,IAAaC,KAAkC,EAAE,eAAiD;CAChG,IAAMC,IAAcF,EAASG,IAAQ,MAAUC,EAAM,WAAW,GAC1DC,IAAiBL,EAASG,IAAQ,MAAUC,EAAM,cAAc,GAEhEE,IAAWJ,GAAa,WAAW,UAAU,GAC7CK,IAAYF,GAAgB,SAAS,UAAU;CAErD,OACE,kBAACG,GAAD;EAAK,IAAI;GAAE,YAAY;GAAU,SAAS;GAAQ,KAAK;EAAE;EAAzD,UAAA,CACGF,IAAW,KACV,kBAACG,GAAD;GACE,OAAO,GAAGH,EAAS;GACnB,MAAM;GACN,IAAI;IACF,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,YAAY;GACd;EACD,CAAA,GAEFC,IAAY,KACX,kBAACE,GAAD;GACE,OAAO,GAAGF,EAAU;GACpB,MAAM;GACN,IAAI;IACF,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,YAAY;GACd;EACD,CAAA,CAEA;;AAET"}
1
+ {"version":3,"file":"index.js","names":["useStore","FastaPageHeaderCenterChip","styled","Chip","FastaPageHeaderCenterComponent","parsedFasta","store","state","parsedMetadata","seqCount","metaCount","Box"],"sources":["../../../../src/components/fasta/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.tsx"],"sourcesContent":["import {\n Box,\n Chip,\n styled,\n} from '@mui/material';\nimport type {\n ComponentsOverrides,\n Theme,\n} from '@mui/material/styles';\nimport type { StoreApi } from 'zustand';\nimport { useStore } from 'zustand';\n\nimport type { FastaDataStore } from '../../../stores/fastaDataStore';\n\n\nexport type FastaPageHeaderCenterComponentProps = {\n store: StoreApi<FastaDataStore>;\n};\n\nexport type FastaPageHeaderCenterComponentTheme = {\n styleOverrides?: ComponentsOverrides<Theme>['MuiChip'];\n};\n\nconst FastaPageHeaderCenterChip = styled(Chip, {\n name: 'RivmLoculusToolsCommonFrontendFastaPageHeaderCenterComponent',\n slot: 'Root',\n})({\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n color: '#FFFFFF',\n fontSize: '0.75rem',\n fontWeight: 600,\n});\n\nexport const FastaPageHeaderCenterComponent = ({ store }: FastaPageHeaderCenterComponentProps) => {\n const parsedFasta = useStore(store, (state) => state.parsedFasta);\n const parsedMetadata = useStore(store, (state) => state.parsedMetadata);\n\n const seqCount = parsedFasta?.sequences?.length || 0;\n const metaCount = parsedMetadata?.records?.length || 0;\n\n return (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {seqCount > 0 && (\n <FastaPageHeaderCenterChip\n label={`${seqCount} Sequences`}\n size={'small'}\n />\n )}\n {metaCount > 0 && (\n <FastaPageHeaderCenterChip\n label={`${metaCount} Metadata Records`}\n size={'small'}\n />\n )}\n </Box>\n );\n};\n"],"mappings":";;;;AAuBA,IAAMC,IAA4BC,EAAOC,GAAM;CAC7C,MAAM;CACN,MAAM;AACR,CAAC,CAAC,CAAC;CACD,iBAAiB;CACjB,OAAO;CACP,UAAU;CACV,YAAY;AACd,CAAC,GAEYC,KAAkC,EAAE,eAAiD;CAChG,IAAMC,IAAcL,EAASM,IAAQ,MAAUC,EAAM,WAAW,GAC1DC,IAAiBR,EAASM,IAAQ,MAAUC,EAAM,cAAc,GAEhEE,IAAWJ,GAAa,WAAW,UAAU,GAC7CK,IAAYF,GAAgB,SAAS,UAAU;CAErD,OACE,kBAACG,GAAD;EAAK,IAAI;GAAE,YAAY;GAAU,SAAS;GAAQ,KAAK;EAAE;EAAzD,UAAA,CACGF,IAAW,KACV,kBAACR,GAAD;GACE,OAAO,GAAGQ,EAAS;GACnB,MAAM;EACP,CAAA,GAEFC,IAAY,KACX,kBAACT,GAAD;GACE,OAAO,GAAGS,EAAU;GACpB,MAAM;EACP,CAAA,CAEA;;AAET"}
@@ -1 +1,5 @@
1
+ import { ComponentsOverrides, Theme } from '@mui/material/styles';
2
+ export type FastaPageHeaderImportButtonTheme = {
3
+ styleOverrides?: ComponentsOverrides<Theme>['MuiButton'];
4
+ };
1
5
  export declare const FastaPageHeaderImportButton: () => import('react').JSX.Element;
@@ -1,26 +1,28 @@
1
1
  import { FastaDataEventBusService as e } from "../../../classes/services/FastaDataEventBusService/index.js";
2
2
  import { container as t } from "tsyringe";
3
- import { Button as n } from "@mui/material";
4
- import { jsx as r } from "react/jsx-runtime";
5
- import { useCallback as i } from "react";
6
- import a from "@mui/icons-material/FileUploadOutlined";
3
+ import { Button as n, styled as r } from "@mui/material";
4
+ import { jsx as i } from "react/jsx-runtime";
5
+ import { useCallback as a } from "react";
6
+ import o from "@mui/icons-material/FileUploadOutlined";
7
7
  // src/components/fasta/FastaPageHeaderImportButton/FastaPageHeaderImportButton.tsx
8
- var o = () => {
9
- let o = i(() => t.resolve(e).emit("onShowImportDialog"), []);
10
- return /* @__PURE__ */ r(n, {
8
+ var s = r(n, {
9
+ name: "RivmLoculusToolsCommonFrontendFastaPageHeaderImportButton",
10
+ slot: "Root"
11
+ })({
12
+ "&:hover": { backgroundColor: "rgba(255, 255, 255, 0.25)" },
13
+ backgroundColor: "rgba(255, 255, 255, 0.15)",
14
+ color: "#FFFFFF"
15
+ }), c = () => {
16
+ let n = a(() => t.resolve(e).emit("onShowImportDialog"), []);
17
+ return /* @__PURE__ */ i(s, {
11
18
  color: "inherit",
12
- onClick: o,
19
+ onClick: n,
13
20
  size: "small",
14
- startIcon: /* @__PURE__ */ r(a, {}),
15
- sx: {
16
- "&:hover": { backgroundColor: "rgba(255, 255, 255, 0.25)" },
17
- backgroundColor: "rgba(255, 255, 255, 0.15)",
18
- color: "#FFFFFF"
19
- },
21
+ startIcon: /* @__PURE__ */ i(o, {}),
20
22
  variant: "contained",
21
23
  children: "Import Data"
22
24
  });
23
25
  };
24
- export { o as FastaPageHeaderImportButton };
26
+ export { c as FastaPageHeaderImportButton };
25
27
 
26
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FileUploadOutlinedIcon","FastaPageHeaderImportButton","onImportDataButtonClick","useCallback","container","FastaDataEventBusService","Button"],"sources":["../../../../src/components/fasta/FastaPageHeaderImportButton/FastaPageHeaderImportButton.tsx"],"sourcesContent":["import { container } from 'tsyringe';\nimport FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport { Button } from '@mui/material';\nimport { useCallback } from 'react';\n\nimport { FastaDataEventBusService } from '../../../classes/services/FastaDataEventBusService';\n\nexport const FastaPageHeaderImportButton = () => {\n const onImportDataButtonClick = useCallback(() => container.resolve(FastaDataEventBusService).emit('onShowImportDialog'), []);\n\n return (\n <Button\n color={'inherit'}\n onClick={onImportDataButtonClick}\n size={'small'}\n startIcon={<FileUploadOutlinedIcon />}\n sx={{\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\n },\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\n color: '#FFFFFF',\n }}\n variant={'contained'}\n >\n {'Import Data'}\n </Button>\n );\n};\n"],"mappings":";;;;;;;AAOA,IAAaC,UAAoC;CAC/C,IAAMC,IAA0BC,QAAkBC,EAAU,QAAQC,CAAwB,CAAC,CAAC,KAAK,oBAAoB,GAAG,CAAC,CAAC;CAE5H,OACE,kBAACC,GAAD;EACE,OAAO;EACP,SAASJ;EACT,MAAM;EACN,WAAW,kBAACF,GAAD,CAAyB,CAAA;EACpC,IAAI;GACF,WAAW,EACT,iBAAiB,4BACnB;GACA,iBAAiB;GACjB,OAAO;EACT;EACA,SAAS;EAER,UAAA;CACK,CAAA;AAEZ"}
1
+ {"version":3,"file":"index.js","names":["FileUploadOutlinedIcon","FastaPageHeaderImportButtonComponent","styled","Button","FastaPageHeaderImportButton","onImportDataButtonClick","useCallback","container","FastaDataEventBusService"],"sources":["../../../../src/components/fasta/FastaPageHeaderImportButton/FastaPageHeaderImportButton.tsx"],"sourcesContent":["import { container } from 'tsyringe';\nimport FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport {\n Button,\n styled,\n} from '@mui/material';\nimport type {\n ComponentsOverrides,\n Theme,\n} from '@mui/material/styles';\nimport { useCallback } from 'react';\n\nimport { FastaDataEventBusService } from '../../../classes/services/FastaDataEventBusService';\n\nexport type FastaPageHeaderImportButtonTheme = {\n styleOverrides?: ComponentsOverrides<Theme>['MuiButton'];\n};\n\nconst FastaPageHeaderImportButtonComponent = styled(Button, {\n name: 'RivmLoculusToolsCommonFrontendFastaPageHeaderImportButton',\n slot: 'Root',\n})({\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\n },\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\n color: '#FFFFFF',\n});\n\nexport const FastaPageHeaderImportButton = () => {\n const onImportDataButtonClick = useCallback(() => container.resolve(FastaDataEventBusService).emit('onShowImportDialog'), []);\n\n return (\n <FastaPageHeaderImportButtonComponent\n color={'inherit'}\n onClick={onImportDataButtonClick}\n size={'small'}\n startIcon={<FileUploadOutlinedIcon />}\n variant={'contained'}\n >\n {'Import Data'}\n </FastaPageHeaderImportButtonComponent>\n );\n};\n"],"mappings":";;;;;;;AAkBA,IAAMC,IAAuCC,EAAOC,GAAQ;CAC1D,MAAM;CACN,MAAM;AACR,CAAC,CAAC,CAAC;CACD,WAAW,EACT,iBAAiB,4BACnB;CACA,iBAAiB;CACjB,OAAO;AACT,CAAC,GAEYC,UAAoC;CAC/C,IAAMC,IAA0BC,QAAkBC,EAAU,QAAQC,CAAwB,CAAC,CAAC,KAAK,oBAAoB,GAAG,CAAC,CAAC;CAE5H,OACE,kBAACP,GAAD;EACE,OAAO;EACP,SAASI;EACT,MAAM;EACN,WAAW,kBAACL,GAAD,CAAyB,CAAA;EACpC,SAAS;EAER,UAAA;CACmC,CAAA;AAE1C"}
@@ -1,5 +1,8 @@
1
+ import { ButtonOwnProps } from '@mui/material';
2
+ import { ComponentsOverrides, Theme } from '@mui/material/styles';
1
3
  import { ReactElement } from 'react';
2
4
  export type ButtonWithMenuProps = {
5
+ buttonColor?: ButtonOwnProps['color'];
3
6
  disabled?: boolean;
4
7
  items: Array<{
5
8
  icon: ReactElement;
@@ -9,4 +12,7 @@ export type ButtonWithMenuProps = {
9
12
  label: string;
10
13
  startIcon?: ReactElement;
11
14
  };
12
- export declare const ButtonWithMenu: ({ disabled, items, label, startIcon }: ButtonWithMenuProps) => import('react').JSX.Element;
15
+ export type ButtonWithMenuTheme = {
16
+ styleOverrides?: ComponentsOverrides<Theme>['MuiButton'];
17
+ };
18
+ export declare const ButtonWithMenu: (inProps: ButtonWithMenuProps) => import('react').JSX.Element;
@@ -1,46 +1,51 @@
1
- import { Button as e, ListItemIcon as t, ListItemText as n, Menu as r, MenuItem as i } from "@mui/material";
2
- import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
3
- import { useCallback as c, useState as l } from "react";
1
+ import { Button as e, ListItemIcon as t, ListItemText as n, Menu as r, MenuItem as i, styled as a, useThemeProps as o } from "@mui/material";
2
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
3
+ import { useCallback as u, useState as d } from "react";
4
4
  // src/components/ui/ButtonWithMenu/ButtonWithMenu.tsx
5
- var u = ({ disabled: u, items: d, label: f, startIcon: p }) => {
6
- let [m, h] = l(null), g = !!m, _ = c((e) => {
7
- h(e.currentTarget);
8
- }, []), v = c(() => {
9
- h(null);
5
+ var f = a(e, {
6
+ name: "RivmLoculusToolsCommonFrontendButtonWithMenu",
7
+ slot: "Root"
8
+ })({
9
+ "&:hover": { backgroundColor: "rgba(255, 255, 255, 0.25)" },
10
+ backgroundColor: "rgba(255, 255, 255, 0.15)",
11
+ color: "#FFFFFF"
12
+ }), p = (e) => {
13
+ let { buttonColor: a = "inherit", disabled: p, items: m, label: h, startIcon: g } = o({
14
+ name: "RivmLoculusToolsCommonFrontendButtonWithMenu",
15
+ props: e
16
+ }), [_, v] = d(null), y = !!_, b = u((e) => {
17
+ v(e.currentTarget);
18
+ }, []), x = u(() => {
19
+ v(null);
10
20
  }, []);
11
- return /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o(e, {
12
- color: "inherit",
13
- disabled: u,
14
- onClick: _,
21
+ return /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(f, {
22
+ color: a,
23
+ disabled: p,
24
+ onClick: b,
15
25
  size: "small",
16
- startIcon: p,
17
- sx: {
18
- "&:hover": { backgroundColor: "rgba(255, 255, 255, 0.25)" },
19
- backgroundColor: "rgba(255, 255, 255, 0.15)",
20
- color: "#FFFFFF"
21
- },
26
+ startIcon: g,
22
27
  variant: "contained",
23
- children: f
24
- }), /* @__PURE__ */ o(r, {
25
- anchorEl: m,
28
+ children: h
29
+ }), /* @__PURE__ */ c(r, {
30
+ anchorEl: _,
26
31
  anchorOrigin: {
27
32
  horizontal: "right",
28
33
  vertical: "bottom"
29
34
  },
30
- onClose: v,
31
- open: g,
35
+ onClose: x,
36
+ open: y,
32
37
  transformOrigin: {
33
38
  horizontal: "right",
34
39
  vertical: "top"
35
40
  },
36
- children: d.map(({ icon: e, label: r, onClick: a }) => /* @__PURE__ */ s(i, {
41
+ children: m.map(({ icon: e, label: r, onClick: a }) => /* @__PURE__ */ l(i, {
37
42
  onClick: () => {
38
- v(), a();
43
+ x(), a();
39
44
  },
40
- children: [/* @__PURE__ */ o(t, { children: e }), /* @__PURE__ */ o(n, { primary: r })]
45
+ children: [/* @__PURE__ */ c(t, { children: e }), /* @__PURE__ */ c(n, { primary: r })]
41
46
  }, r))
42
47
  })] });
43
48
  };
44
- export { u as ButtonWithMenu };
49
+ export { p as ButtonWithMenu };
45
50
 
46
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_Fragment","ButtonWithMenu","anchorElement","setAnchorElement","useState","isMenuOpen","onClickMenu","useCallback","event","onCloseMenu","Fragment","Button","label","Menu","items","itemLabel","MenuItem","onClick","ListItemIcon","icon","ListItemText"],"sources":["../../../../src/components/ui/ButtonWithMenu/ButtonWithMenu.tsx"],"sourcesContent":["import {\n Button,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport {\n useCallback,\n useState,\n} from 'react';\nimport type {\n MouseEvent,\n ReactElement,\n} from 'react';\n\nexport type ButtonWithMenuProps = {\n disabled?: boolean;\n items: Array<{\n icon: ReactElement;\n label: string;\n onClick: () => void;\n }>;\n label: string;\n startIcon?: ReactElement;\n};\n\nexport const ButtonWithMenu = ({ disabled, items, label, startIcon }: ButtonWithMenuProps) => {\n const [anchorElement, setAnchorElement] = useState<HTMLElement | null>(null);\n const isMenuOpen = Boolean(anchorElement);\n\n const onClickMenu = useCallback((event: MouseEvent<HTMLButtonElement>) => {\n setAnchorElement(event.currentTarget);\n }, []);\n\n const onCloseMenu = useCallback(() => {\n setAnchorElement(null);\n }, []);\n\n return (\n <>\n <Button\n color={'inherit'}\n disabled={disabled}\n onClick={onClickMenu}\n size={'small'}\n startIcon={startIcon}\n sx={{\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\n },\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\n color: '#FFFFFF',\n }}\n variant={'contained'}\n >\n {label}\n </Button>\n <Menu\n anchorEl={anchorElement}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n onClose={onCloseMenu}\n open={isMenuOpen}\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n >\n {items.map(({ icon, label: itemLabel, onClick }) => (\n <MenuItem\n key={itemLabel}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={() => {\n onCloseMenu();\n onClick();\n }}\n >\n <ListItemIcon>\n {icon}\n </ListItemIcon>\n <ListItemText primary={itemLabel} />\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n};\n"],"mappings":";;;;AA2BA,IAAaC,KAAkB,EAAE,aAAU,UAAO,UAAO,mBAAqC;CAC5F,IAAM,CAACC,GAAeC,KAAoBC,EAA6B,IAAI,GACrEC,IAAa,EAAQH,GAErBI,IAAcC,GAAa,MAAyC;EACxE,EAAiBC,EAAM,aAAa;CACtC,GAAG,CAAC,CAAC,GAECC,IAAcF,QAAkB;EACpC,EAAiB,IAAI;CACvB,GAAG,CAAC,CAAC;CAEL,OACE,kBAAAP,GAAA,EAAA,UAAA,CACE,kBAACW,GAAD;EACE,OAAO;EACG;EACV,SAASL;EACT,MAAM;EACK;EACX,IAAI;GACF,WAAW,EACT,iBAAiB,4BACnB;GACA,iBAAiB;GACjB,OAAO;EACT;EACA,SAAS;EAER,UAAAM;CACK,CAAA,GACR,kBAACC,GAAD;EACE,UAAUX;EACV,cAAc;GAAE,YAAY;GAAS,UAAU;EAAS;EACxD,SAASO;EACT,MAAMJ;EACN,iBAAiB;GAAE,YAAY;GAAS,UAAU;EAAM;EAEvD,UAAAS,EAAM,KAAK,EAAE,SAAM,OAAOC,GAAW,iBACpC,kBAACC,GAAD;GAGE,eAAe;IAEb,AADAP,EAAY,GACZQ,EAAQ;GACV;GANF,UAAA,CAQE,kBAACC,GAAD,EAAA,UACGC,EACW,CAAA,GACd,kBAACC,GAAD,EAAc,SAASL,EAAY,CAAA,CAC3B;EAXH,GAAAA,CAWG,CACX;CACG,CAAA,CACN,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"index.js","names":["_Fragment","ButtonWithMenuButton","styled","Button","ButtonWithMenu","useThemeProps","inProps","anchorElement","setAnchorElement","useState","isMenuOpen","onClickMenu","useCallback","event","onCloseMenu","Fragment","buttonColor","label","Menu","items","itemLabel","MenuItem","onClick","ListItemIcon","icon","ListItemText"],"sources":["../../../../src/components/ui/ButtonWithMenu/ButtonWithMenu.tsx"],"sourcesContent":["import {\n Button,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n styled,\n useThemeProps,\n} from '@mui/material';\nimport type { ButtonOwnProps } from '@mui/material';\nimport type {\n ComponentsOverrides,\n Theme,\n} from '@mui/material/styles';\nimport {\n useCallback,\n useState,\n} from 'react';\nimport type {\n MouseEvent,\n ReactElement,\n} from 'react';\n\nexport type ButtonWithMenuProps = {\n buttonColor?: ButtonOwnProps['color'];\n disabled?: boolean;\n items: Array<{\n icon: ReactElement;\n label: string;\n onClick: () => void;\n }>;\n label: string;\n startIcon?: ReactElement;\n};\n\nexport type ButtonWithMenuTheme = {\n styleOverrides?: ComponentsOverrides<Theme>['MuiButton'];\n};\n\nconst ButtonWithMenuButton = styled(Button, {\n name: 'RivmLoculusToolsCommonFrontendButtonWithMenu',\n slot: 'Root',\n})({\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\n },\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\n color: '#FFFFFF',\n});\n\nexport const ButtonWithMenu = (inProps: ButtonWithMenuProps) => {\n const {\n buttonColor = 'inherit',\n disabled,\n items,\n label,\n startIcon,\n } = useThemeProps({ name: 'RivmLoculusToolsCommonFrontendButtonWithMenu', props: inProps });\n const [anchorElement, setAnchorElement] = useState<HTMLElement | null>(null);\n const isMenuOpen = Boolean(anchorElement);\n\n const onClickMenu = useCallback((event: MouseEvent<HTMLButtonElement>) => {\n setAnchorElement(event.currentTarget);\n }, []);\n\n const onCloseMenu = useCallback(() => {\n setAnchorElement(null);\n }, []);\n\n return (\n <>\n <ButtonWithMenuButton\n color={buttonColor}\n disabled={disabled}\n onClick={onClickMenu}\n size={'small'}\n startIcon={startIcon}\n variant={'contained'}\n >\n {label}\n </ButtonWithMenuButton>\n <Menu\n anchorEl={anchorElement}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n onClose={onCloseMenu}\n open={isMenuOpen}\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n >\n {items.map(({ icon, label: itemLabel, onClick }) => (\n <MenuItem\n key={itemLabel}\n // eslint-disable-next-line @eslint-react/kit/jsx-no-bind\n onClick={() => {\n onCloseMenu();\n onClick();\n }}\n >\n <ListItemIcon>\n {icon}\n </ListItemIcon>\n <ListItemText primary={itemLabel} />\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n};\n"],"mappings":";;;;AAuCA,IAAMC,IAAuBC,EAAOC,GAAQ;CAC1C,MAAM;CACN,MAAM;AACR,CAAC,CAAC,CAAC;CACD,WAAW,EACT,iBAAiB,4BACnB;CACA,iBAAiB;CACjB,OAAO;AACT,CAAC,GAEYC,KAAkB,MAAiC;CAC9D,IAAM,EACJ,iBAAc,WACd,aACA,UACA,UACA,iBACEC,EAAc;EAAE,MAAM;EAAgD,OAAOC;CAAQ,CAAC,GACpF,CAACC,GAAeC,KAAoBC,EAA6B,IAAI,GACrEC,IAAa,EAAQH,GAErBI,IAAcC,GAAa,MAAyC;EACxE,EAAiBC,EAAM,aAAa;CACtC,GAAG,CAAC,CAAC,GAECC,IAAcF,QAAkB;EACpC,EAAiB,IAAI;CACvB,GAAG,CAAC,CAAC;CAEL,OACE,kBAAAZ,GAAA,EAAA,UAAA,CACE,kBAACC,GAAD;EACE,OAAOe;EACG;EACV,SAASL;EACT,MAAM;EACK;EACX,SAAS;EAER,UAAAM;CACmB,CAAA,GACtB,kBAACC,GAAD;EACE,UAAUX;EACV,cAAc;GAAE,YAAY;GAAS,UAAU;EAAS;EACxD,SAASO;EACT,MAAMJ;EACN,iBAAiB;GAAE,YAAY;GAAS,UAAU;EAAM;EAEvD,UAAAS,EAAM,KAAK,EAAE,SAAM,OAAOC,GAAW,iBACpC,kBAACC,GAAD;GAGE,eAAe;IAEb,AADAP,EAAY,GACZQ,EAAQ;GACV;GANF,UAAA,CAQE,kBAACC,GAAD,EAAA,UACGC,EACW,CAAA,GACd,kBAACC,GAAD,EAAc,SAASL,EAAY,CAAA,CAC3B;EAXH,GAAAA,CAWG,CACX;CACG,CAAA,CACN,EAAA,CAAA;AAEN"}
@@ -4,4 +4,8 @@ export type PageCommonHeaderProps = {
4
4
  readonly rightComponent?: ReactNode;
5
5
  readonly title: string;
6
6
  };
7
- export declare const PageCommonHeader: ({ centerComponent, rightComponent, title }: PageCommonHeaderProps) => import('react').JSX.Element;
7
+ export interface PageCommonHeaderTheme {
8
+ backgroundColor: string;
9
+ color: string;
10
+ }
11
+ export declare const PageCommonHeader: (inProps: PageCommonHeaderProps) => import('react').JSX.Element;
@@ -1,49 +1,56 @@
1
1
  import { PageCommonContext as e } from "../../../context/pageCommonContext/index.js";
2
- import { AppBar as t, Box as n, IconButton as r, Toolbar as i, Typography as a, useTheme as o } from "@mui/material";
3
- import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
4
- import { use as u, useCallback as d } from "react";
5
- import f from "@mui/icons-material/Menu";
2
+ import { AppBar as t, Box as n, IconButton as r, Toolbar as i, Typography as a, useTheme as o, useThemeProps as s } from "@mui/material";
3
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ import { use as d, useCallback as f, useMemo as p } from "react";
5
+ import m from "@mui/icons-material/Menu";
6
6
  // src/components/ui/PageCommonHeader/PageCommonHeader.tsx
7
- var p = ({ centerComponent: p, rightComponent: m, title: h }) => {
8
- let g = o(), { afterAppBarComponent: _, afterAppBarRightComponent: v, appBarHeight: y = 48, appBarIcon: b, beforeAppBarComponent: x, beforeAppBarRightComponent: S, isDrawerOpen: C, isNoInteraction: w, setIsDrawerOpen: T } = u(e), E = d(() => {
9
- T(!C);
10
- }, [C, T]);
11
- return /* @__PURE__ */ l(n, { children: [
12
- x,
13
- /* @__PURE__ */ c(t, {
7
+ var h = (h) => {
8
+ let { centerComponent: g, rightComponent: _, title: v } = s({
9
+ name: "RivmLoculusToolsCommonFrontendPageCommonHeader",
10
+ props: h
11
+ }), y = o(), b = p(() => ({
12
+ backgroundColor: y.palette.primary.main,
13
+ color: y.palette.primary.contrastText,
14
+ ...y.components?.RivmLoculusToolsCommonFrontendPageCommonHeader ?? {}
15
+ }), [y]), { afterAppBarComponent: x, afterAppBarRightComponent: S, appBarHeight: C = 48, appBarIcon: w, beforeAppBarComponent: T, beforeAppBarRightComponent: E, isDrawerOpen: D, isNoInteraction: O, setIsDrawerOpen: k } = d(e), A = f(() => {
16
+ k(!D);
17
+ }, [D, k]);
18
+ return /* @__PURE__ */ u(n, { children: [
19
+ T,
20
+ /* @__PURE__ */ l(t, {
14
21
  elevation: 1,
15
22
  position: "static",
16
23
  sx: {
17
- backgroundColor: "primary.main",
18
- color: "#FFFFFF",
19
- height: y,
24
+ backgroundColor: b.backgroundColor,
25
+ color: b.color,
26
+ height: C,
20
27
  justifyContent: "center",
21
- zIndex: g.zIndex.drawer + 1
28
+ zIndex: y.zIndex.drawer + 1
22
29
  },
23
- children: /* @__PURE__ */ l(i, {
30
+ children: /* @__PURE__ */ u(i, {
24
31
  sx: {
25
32
  display: "flex",
26
33
  justifyContent: "space-between",
27
- px: `${g.spacing(1)} !important`
34
+ px: `${y.spacing(1)} !important`
28
35
  },
29
36
  variant: "dense",
30
- children: [/* @__PURE__ */ l(n, {
37
+ children: [/* @__PURE__ */ u(n, {
31
38
  sx: {
32
39
  alignItems: "center",
33
40
  display: "flex",
34
41
  gap: 1.5
35
42
  },
36
43
  children: [
37
- !w && /* @__PURE__ */ c(r, {
44
+ !O && /* @__PURE__ */ l(r, {
38
45
  "aria-label": "open drawer",
39
46
  color: "inherit",
40
47
  edge: "start",
41
- onClick: E,
48
+ onClick: A,
42
49
  size: "small",
43
- children: /* @__PURE__ */ c(f, {})
50
+ children: /* @__PURE__ */ l(m, {})
44
51
  }),
45
- b && /* @__PURE__ */ c(s, { children: b }),
46
- /* @__PURE__ */ c(a, {
52
+ w && /* @__PURE__ */ l(c, { children: w }),
53
+ /* @__PURE__ */ l(a, {
47
54
  component: "div",
48
55
  noWrap: !0,
49
56
  sx: {
@@ -53,54 +60,54 @@ var p = ({ centerComponent: p, rightComponent: m, title: h }) => {
53
60
  letterSpacing: "-0.01em"
54
61
  },
55
62
  variant: "h6",
56
- children: h
63
+ children: v
57
64
  })
58
65
  ]
59
- }), !w && /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(n, {
66
+ }), !O && /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l(n, {
60
67
  sx: {
61
68
  alignItems: "center",
62
69
  display: "flex",
63
70
  gap: 1
64
71
  },
65
- children: p
66
- }), /* @__PURE__ */ l(n, {
72
+ children: g
73
+ }), /* @__PURE__ */ u(n, {
67
74
  sx: {
68
75
  alignItems: "center",
69
76
  display: "flex",
70
77
  gap: 1
71
78
  },
72
79
  children: [
73
- S && /* @__PURE__ */ c(n, {
80
+ E && /* @__PURE__ */ l(n, {
74
81
  sx: {
75
82
  alignItems: "center",
76
83
  display: "flex",
77
84
  gap: 1
78
85
  },
79
- children: S
86
+ children: E
80
87
  }),
81
- /* @__PURE__ */ c(n, {
88
+ /* @__PURE__ */ l(n, {
82
89
  sx: {
83
90
  alignItems: "center",
84
91
  display: "flex",
85
92
  gap: 1
86
93
  },
87
- children: m
94
+ children: _
88
95
  }),
89
- v && /* @__PURE__ */ c(n, {
96
+ S && /* @__PURE__ */ l(n, {
90
97
  sx: {
91
98
  alignItems: "center",
92
99
  display: "flex",
93
100
  gap: 1
94
101
  },
95
- children: v
102
+ children: S
96
103
  })
97
104
  ]
98
105
  })] })]
99
106
  })
100
107
  }),
101
- _
108
+ x
102
109
  ] });
103
110
  };
104
- export { p as PageCommonHeader };
111
+ export { h as PageCommonHeader };
105
112
 
106
113
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_Fragment","MenuIcon","PageCommonHeader","theme","useTheme","use","PageCommonContext","onToggleDrawerButtonClick","useCallback","isDrawerOpen","setIsDrawerOpen","Box","beforeAppBarComponent","AppBar","appBarHeight","Toolbar","isNoInteraction","IconButton","appBarIcon","Fragment","Typography","title","centerComponent","beforeAppBarRightComponent","rightComponent","afterAppBarRightComponent","afterAppBarComponent"],"sources":["../../../../src/components/ui/PageCommonHeader/PageCommonHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n use,\n useCallback,\n} from 'react';\nimport {\n AppBar,\n Box,\n IconButton,\n Toolbar,\n Typography,\n useTheme,\n} from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\n\nimport { PageCommonContext } from '../../../context/pageCommonContext';\n\n\nexport type PageCommonHeaderProps = {\n readonly centerComponent?: ReactNode;\n readonly rightComponent?: ReactNode;\n readonly title: string;\n};\n\nexport const PageCommonHeader = ({ centerComponent, rightComponent, title }: PageCommonHeaderProps) => {\n const theme = useTheme();\n const { afterAppBarComponent, afterAppBarRightComponent, appBarHeight = 48, appBarIcon, beforeAppBarComponent, beforeAppBarRightComponent, isDrawerOpen, isNoInteraction, setIsDrawerOpen } = use(PageCommonContext);\n\n const onToggleDrawerButtonClick = useCallback(() => {\n setIsDrawerOpen(!isDrawerOpen);\n }, [isDrawerOpen, setIsDrawerOpen]);\n\n return (\n <Box>\n {beforeAppBarComponent}\n <AppBar\n elevation={1}\n position={'static'}\n sx={{\n backgroundColor: 'primary.main',\n color: '#FFFFFF',\n height: appBarHeight,\n justifyContent: 'center',\n zIndex: theme.zIndex.drawer + 1,\n }}\n >\n <Toolbar\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n px: `${theme.spacing(1)} !important`, // using !important to override media queries\n }}\n variant={'dense'}\n >\n {/* Left: Menu toggle and App Branding */}\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1.5 }}>\n {!isNoInteraction && (\n <IconButton\n aria-label={'open drawer'}\n color={'inherit'}\n edge={'start'}\n onClick={onToggleDrawerButtonClick}\n size={'small'}\n >\n <MenuIcon />\n </IconButton>\n )}\n {appBarIcon && (\n <>\n {appBarIcon}\n </>\n )}\n <Typography\n component={'div'}\n noWrap\n sx={{ color: 'inherit', fontSize: '1.05rem', fontWeight: 700, letterSpacing: '-0.01em' }}\n variant={'h6'}\n >\n {title}\n </Typography>\n </Box>\n {!isNoInteraction && (\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {centerComponent}\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {beforeAppBarRightComponent && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {beforeAppBarRightComponent}\n </Box>\n )}\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {rightComponent}\n </Box>\n {afterAppBarRightComponent && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {afterAppBarRightComponent}\n </Box>\n )}\n </Box>\n </>\n )}\n </Toolbar>\n </AppBar>\n {afterAppBarComponent}\n </Box>\n );\n};\n"],"mappings":";;;;;;AAwBA,IAAaE,KAAoB,EAAE,oBAAiB,mBAAgB,eAAmC;CACrG,IAAMC,IAAQC,EAAS,GACjB,EAAE,yBAAsB,8BAA2B,kBAAe,IAAI,eAAY,0BAAuB,+BAA4B,iBAAc,oBAAiB,uBAAoBC,EAAIC,CAAiB,GAE7MC,IAA4BC,QAAkB;EAClD,EAAgB,CAACC,CAAY;CAC/B,GAAG,CAACA,GAAcC,CAAe,CAAC;CAElC,OACE,kBAACC,GAAD,EAAA,UAAA;EACGC;EACD,kBAACC,GAAD;GACE,WAAW;GACX,UAAU;GACV,IAAI;IACF,iBAAiB;IACjB,OAAO;IACP,QAAQC;IACR,gBAAgB;IAChB,QAAQX,EAAM,OAAO,SAAS;GAChC;GAEA,UAAA,kBAACY,GAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI,GAAGZ,EAAM,QAAQ,CAAC,EAAE;IAC1B;IACA,SAAS;IANX,UAAA,CASE,kBAACQ,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAI;KAA3D,UAAA;MACG,CAACK,KACA,kBAACC,GAAD;OACE,cAAY;OACZ,OAAO;OACP,MAAM;OACN,SAASV;OACT,MAAM;OAEN,UAAA,kBAACN,GAAD,CAAW,CAAA;MACD,CAAA;MAEbiB,KACC,kBAAAlB,GAAA,EAAA,UACGkB,EACD,CAAA;MAEJ,kBAACE,GAAD;OACE,WAAW;OACX,QAAA;OACA,IAAI;QAAE,OAAO;QAAW,UAAU;QAAW,YAAY;QAAK,eAAe;OAAU;OACvF,SAAS;OAER,UAAAC;MACS,CAAA;KACT;IACJ,CAAA,GAAA,CAACL,KACA,kBAAAhB,GAAA,EAAA,UAAA,CACE,kBAACW,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAE;KACtD,UAAAW;IACE,CAAA,GACL,kBAACX,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAE;KAAzD,UAAA;MACGY,KACC,kBAACZ,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAY;MACE,CAAA;MAEP,kBAACZ,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAa;MACE,CAAA;MACJC,KACC,kBAACd,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAc;MACE,CAAA;KAEJ;IACL,CAAA,CAAA,EAAA,CAAA,CAEG;;EACH,CAAA;EACPC;CACE,EAAA,CAAA;AAET"}
1
+ {"version":3,"file":"index.js","names":["_Fragment","MenuIcon","PageCommonHeader","useThemeProps","inProps","theme","useTheme","pageCommonHeaderTheme","useMemo","use","PageCommonContext","onToggleDrawerButtonClick","useCallback","isDrawerOpen","setIsDrawerOpen","Box","beforeAppBarComponent","AppBar","appBarHeight","Toolbar","isNoInteraction","IconButton","appBarIcon","Fragment","Typography","title","centerComponent","beforeAppBarRightComponent","rightComponent","afterAppBarRightComponent","afterAppBarComponent"],"sources":["../../../../src/components/ui/PageCommonHeader/PageCommonHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n use,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n AppBar,\n Box,\n IconButton,\n Toolbar,\n Typography,\n useTheme,\n useThemeProps,\n} from '@mui/material';\nimport MenuIcon from '@mui/icons-material/Menu';\n\nimport { PageCommonContext } from '../../../context/pageCommonContext';\n\nexport type PageCommonHeaderProps = {\n readonly centerComponent?: ReactNode;\n readonly rightComponent?: ReactNode;\n readonly title: string;\n};\n\nexport interface PageCommonHeaderTheme {\n backgroundColor: string;\n color: string;\n}\n\nexport const PageCommonHeader = (inProps: PageCommonHeaderProps) => {\n const { centerComponent, rightComponent, title } = useThemeProps({ name: 'RivmLoculusToolsCommonFrontendPageCommonHeader', props: inProps });\n const theme = useTheme();\n const pageCommonHeaderTheme = useMemo<PageCommonHeaderTheme>(() => ({\n ...{\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n } satisfies PageCommonHeaderTheme,\n ...(theme.components?.RivmLoculusToolsCommonFrontendPageCommonHeader ?? {}),\n }), [theme]);\n\n\n const { afterAppBarComponent, afterAppBarRightComponent, appBarHeight = 48, appBarIcon, beforeAppBarComponent, beforeAppBarRightComponent, isDrawerOpen, isNoInteraction, setIsDrawerOpen } = use(PageCommonContext);\n\n const onToggleDrawerButtonClick = useCallback(() => {\n setIsDrawerOpen(!isDrawerOpen);\n }, [isDrawerOpen, setIsDrawerOpen]);\n\n return (\n <Box>\n {beforeAppBarComponent}\n <AppBar\n elevation={1}\n position={'static'}\n sx={{\n backgroundColor: pageCommonHeaderTheme.backgroundColor,\n color: pageCommonHeaderTheme.color,\n height: appBarHeight,\n justifyContent: 'center',\n zIndex: theme.zIndex.drawer + 1,\n }}\n >\n <Toolbar\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n px: `${theme.spacing(1)} !important`, // using !important to override media queries\n }}\n variant={'dense'}\n >\n {/* Left: Menu toggle and App Branding */}\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1.5 }}>\n {!isNoInteraction && (\n <IconButton\n aria-label={'open drawer'}\n color={'inherit'}\n edge={'start'}\n onClick={onToggleDrawerButtonClick}\n size={'small'}\n >\n <MenuIcon />\n </IconButton>\n )}\n {appBarIcon && (\n <>\n {appBarIcon}\n </>\n )}\n <Typography\n component={'div'}\n noWrap\n sx={{ color: 'inherit', fontSize: '1.05rem', fontWeight: 700, letterSpacing: '-0.01em' }}\n variant={'h6'}\n >\n {title}\n </Typography>\n </Box>\n {!isNoInteraction && (\n <>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {centerComponent}\n </Box>\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {beforeAppBarRightComponent && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {beforeAppBarRightComponent}\n </Box>\n )}\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {rightComponent}\n </Box>\n {afterAppBarRightComponent && (\n <Box sx={{ alignItems: 'center', display: 'flex', gap: 1 }}>\n {afterAppBarRightComponent}\n </Box>\n )}\n </Box>\n </>\n )}\n </Toolbar>\n </AppBar>\n {afterAppBarComponent}\n </Box>\n );\n};\n"],"mappings":";;;;;;AA8BA,IAAaE,KAAoB,MAAmC;CAClE,IAAM,EAAE,oBAAiB,mBAAgB,aAAUC,EAAc;EAAE,MAAM;EAAkD,OAAOC;CAAQ,CAAC,GACrIC,IAAQC,EAAS,GACjBC,IAAwBC,SAAsC;EAEhE,iBAAiBH,EAAM,QAAQ,QAAQ;EACvC,OAAOA,EAAM,QAAQ,QAAQ;EAE/B,GAAIA,EAAM,YAAY,kDAAkD,CAAC;CAC3E,IAAI,CAACA,CAAK,CAAC,GAGL,EAAE,yBAAsB,8BAA2B,kBAAe,IAAI,eAAY,0BAAuB,+BAA4B,iBAAc,oBAAiB,uBAAoBI,EAAIC,CAAiB,GAE7MC,IAA4BC,QAAkB;EAClD,EAAgB,CAACC,CAAY;CAC/B,GAAG,CAACA,GAAcC,CAAe,CAAC;CAElC,OACE,kBAACC,GAAD,EAAA,UAAA;EACGC;EACD,kBAACC,GAAD;GACE,WAAW;GACX,UAAU;GACV,IAAI;IACF,iBAAiBV,EAAsB;IACvC,OAAOA,EAAsB;IAC7B,QAAQW;IACR,gBAAgB;IAChB,QAAQb,EAAM,OAAO,SAAS;GAChC;GAEA,UAAA,kBAACc,GAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI,GAAGd,EAAM,QAAQ,CAAC,EAAE;IAC1B;IACA,SAAS;IANX,UAAA,CASE,kBAACU,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAI;KAA3D,UAAA;MACG,CAACK,KACA,kBAACC,GAAD;OACE,cAAY;OACZ,OAAO;OACP,MAAM;OACN,SAASV;OACT,MAAM;OAEN,UAAA,kBAACV,GAAD,CAAW,CAAA;MACD,CAAA;MAEbqB,KACC,kBAAAtB,GAAA,EAAA,UACGsB,EACD,CAAA;MAEJ,kBAACE,GAAD;OACE,WAAW;OACX,QAAA;OACA,IAAI;QAAE,OAAO;QAAW,UAAU;QAAW,YAAY;QAAK,eAAe;OAAU;OACvF,SAAS;OAER,UAAAC;MACS,CAAA;KACT;IACJ,CAAA,GAAA,CAACL,KACA,kBAAApB,GAAA,EAAA,UAAA,CACE,kBAACe,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAE;KACtD,UAAAW;IACE,CAAA,GACL,kBAACX,GAAD;KAAK,IAAI;MAAE,YAAY;MAAU,SAAS;MAAQ,KAAK;KAAE;KAAzD,UAAA;MACGY,KACC,kBAACZ,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAY;MACE,CAAA;MAEP,kBAACZ,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAa;MACE,CAAA;MACJC,KACC,kBAACd,GAAD;OAAK,IAAI;QAAE,YAAY;QAAU,SAAS;QAAQ,KAAK;OAAE;OACtD,UAAAc;MACE,CAAA;KAEJ;IACL,CAAA,CAAA,EAAA,CAAA,CAEG;;EACH,CAAA;EACPC;CACE,EAAA,CAAA;AAET"}
@@ -0,0 +1,15 @@
1
+ import { ComponentsOverrides, Theme } from '@mui/material/styles';
2
+ export type SearchBarProps = {
3
+ allowNavigation?: boolean;
4
+ highlightedIndex?: null | number;
5
+ numResults?: number;
6
+ onHighlightedIndexChange?: (index: number) => void;
7
+ onSearchQueryChange: (query: string) => void;
8
+ searchQuery: string;
9
+ truncated?: boolean;
10
+ };
11
+ export interface SearchBarTheme {
12
+ buttonColor: string;
13
+ styleOverrides?: ComponentsOverrides<Theme>['MuiFilledInput'];
14
+ }
15
+ export declare const SearchBar: (inProps: SearchBarProps) => import('react').JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { ChipOwnProps } from '@mui/material';
2
+ export type SearchBarNodeCounterProps = {
3
+ hasResultsChipColor?: ChipOwnProps['color'];
4
+ noResultsChipColor?: ChipOwnProps['color'];
5
+ numResults?: number;
6
+ };
7
+ export type SearchBarNodeCounterTheme = object;
8
+ export declare const SearchBarNodeCounter: (inProps: SearchBarNodeCounterProps) => import('react').JSX.Element | null;