@telicent-oss/ds 0.22.0 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ds.js CHANGED
@@ -55046,7 +55046,7 @@ const AppChrome = ({
55046
55046
  ] });
55047
55047
  };
55048
55048
  const Container = (containerProps) => /* @__PURE__ */ jsx$1(Container$1, { ...containerProps });
55049
- const FlexBox = (props) => /* @__PURE__ */ jsx$1(Stack, { ...props, children: props.children });
55049
+ const FlexBox = forwardRef((props, ref) => /* @__PURE__ */ jsx$1(Stack, { ref, ...props, children: props.children }));
55050
55050
  const TelicentMark = ({
55051
55051
  width: width2 = 24,
55052
55052
  height: height2 = 24,
@@ -55119,9 +55119,9 @@ const DownArrow = ({
55119
55119
  ...iconProps
55120
55120
  }) => {
55121
55121
  const theme = useTheme$1();
55122
- return /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: faAngleDown, css: /* @__PURE__ */ css({
55122
+ return /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: faAngleDown, size: "sm", css: /* @__PURE__ */ css({
55123
55123
  color: color2 === "primary" ? theme.palette.primary.main : "inherit"
55124
- }, process.env.NODE_ENV === "production" ? "" : ";label:DownArrow;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3RlbGljZW50LWRzL3RlbGljZW50LWRzL3NyYy92MS9jb21wb25lbnRzL2RhdGEtZGlzcGxheS9Gb250QXdlc29tZUljb25zL0Rvd25BcnJvd0ljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCTSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay90ZWxpY2VudC1kcy90ZWxpY2VudC1kcy9zcmMvdjEvY29tcG9uZW50cy9kYXRhLWRpc3BsYXkvRm9udEF3ZXNvbWVJY29ucy9Eb3duQXJyb3dJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIEZvbnRBd2Vzb21lSWNvbixcbiAgRm9udEF3ZXNvbWVJY29uUHJvcHMsXG59IGZyb20gXCJAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWVcIjtcbmltcG9ydCB7IGZhQW5nbGVEb3duIH0gZnJvbSBcIkBmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29uc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcblxudHlwZSBEb3duQXJyb3dJY29uUHJvcHMgPSBPbWl0PEZvbnRBd2Vzb21lSWNvblByb3BzLCBcImljb25cIj4gJiB7XG4gIGNvbG9yPzogXCJwcmltYXJ5XCIgfCBcImluaGVyaXRcIjtcbn07XG5cbmNvbnN0IERvd25BcnJvdzogUmVhY3QuRkM8RG93bkFycm93SWNvblByb3BzPiA9ICh7IGNvbG9yLCAuLi5pY29uUHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICBpY29uPXtmYUFuZ2xlRG93bn1cbiAgICAgIGNzcz17e1xuICAgICAgICBjb2xvcjogY29sb3IgPT09IFwicHJpbWFyeVwiID8gdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4gOiBcImluaGVyaXRcIixcbiAgICAgIH19XG4gICAgICB7Li4uaWNvblByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEb3duQXJyb3c7XG4iXX0= */"), ...iconProps });
55124
+ }, process.env.NODE_ENV === "production" ? "" : ";label:DownArrow;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3RlbGljZW50LWRzL3RlbGljZW50LWRzL3NyYy92MS9jb21wb25lbnRzL2RhdGEtZGlzcGxheS9Gb250QXdlc29tZUljb25zL0Rvd25BcnJvd0ljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CTSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay90ZWxpY2VudC1kcy90ZWxpY2VudC1kcy9zcmMvdjEvY29tcG9uZW50cy9kYXRhLWRpc3BsYXkvRm9udEF3ZXNvbWVJY29ucy9Eb3duQXJyb3dJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIEZvbnRBd2Vzb21lSWNvbixcbiAgRm9udEF3ZXNvbWVJY29uUHJvcHMsXG59IGZyb20gXCJAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWVcIjtcbmltcG9ydCB7IGZhQW5nbGVEb3duIH0gZnJvbSBcIkBmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29uc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcblxudHlwZSBEb3duQXJyb3dJY29uUHJvcHMgPSBPbWl0PEZvbnRBd2Vzb21lSWNvblByb3BzLCBcImljb25cIj4gJiB7XG4gIGNvbG9yPzogXCJwcmltYXJ5XCIgfCBcImluaGVyaXRcIjtcbn07XG5cbmNvbnN0IERvd25BcnJvdzogUmVhY3QuRkM8RG93bkFycm93SWNvblByb3BzPiA9ICh7IGNvbG9yLCAuLi5pY29uUHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICBpY29uPXtmYUFuZ2xlRG93bn1cbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICBjc3M9e3tcbiAgICAgICAgY29sb3I6IGNvbG9yID09PSBcInByaW1hcnlcIiA/IHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluIDogXCJpbmhlcml0XCIsXG4gICAgICB9fVxuICAgICAgey4uLmljb25Qcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRG93bkFycm93O1xuIl19 */"), ...iconProps });
55125
55125
  };
55126
55126
  const Download = ({
55127
55127
  color: color2,
@@ -57729,6 +57729,90 @@ const UserStatus = ({
57729
57729
  /* @__PURE__ */ jsx$1(Grid, { item: true, xs: 5, children: children2 })
57730
57730
  ] })
57731
57731
  ] });
57732
+ const DropdownButtonMenuItem = ({
57733
+ onClick,
57734
+ faIcon,
57735
+ id: id2,
57736
+ icon: icon2,
57737
+ value,
57738
+ selected = false
57739
+ }) => {
57740
+ const Icon2 = icon2;
57741
+ const theme = useExtendedTheme();
57742
+ return /* @__PURE__ */ jsxs(MenuItem, { onClick: () => onClick(value), id: id2, selected, sx: {
57743
+ display: "flex",
57744
+ alignItems: "center",
57745
+ marginX: 1,
57746
+ borderRadius: "4px",
57747
+ border: "1px solid rgba(0, 0, 0, 0)",
57748
+ "&.Mui-selected.Mui-selected": {
57749
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.background.default : "rgba(0, 0, 0, 0.04)"
57750
+ },
57751
+ "&.Mui-selected.Mui-selected:hover": {
57752
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.background.default : "rgba(0, 0, 0, 0.04)"
57753
+ },
57754
+ "&:hover": {
57755
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.background.default : "rgba(0, 0, 0, 0.04)",
57756
+ border: `1px solid ${theme.palette.primary.main}`
57757
+ }
57758
+ }, children: [
57759
+ (Icon2 || faIcon) && /* @__PURE__ */ jsxs(ListItemIcon$1, { children: [
57760
+ Icon2 && /* @__PURE__ */ jsx$1(Icon2, { color: selected ? "primary" : "inherit" }),
57761
+ faIcon && /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: faIcon, fontSize: "medium", color: selected ? theme.palette.primary.main : "white" })
57762
+ ] }),
57763
+ /* @__PURE__ */ jsx$1(ListItemText$1, { children: /* @__PURE__ */ jsx$1(Typography, { variant: "h1", sx: {
57764
+ marginTop: 0.5,
57765
+ fontFamily: "Figtree",
57766
+ fontSize: 16,
57767
+ fontWeight: 400,
57768
+ color: `${selected ? theme.palette.primary.main : "primary"}`,
57769
+ display: "flex",
57770
+ alignItems: "center"
57771
+ }, children: value }) })
57772
+ ] });
57773
+ };
57774
+ const DropdownButton = ({
57775
+ ariaLabel,
57776
+ id: id2,
57777
+ menuItems
57778
+ }) => {
57779
+ const [anchorEl, setAnchorEl] = useState(null);
57780
+ const [selectedMenuItem, setSelectedMenuItem] = useState(menuItems.find((menuItem) => menuItem.default) ?? menuItems[0]);
57781
+ const theme = useExtendedTheme();
57782
+ const open = Boolean(anchorEl);
57783
+ const handleClick = (event) => {
57784
+ setAnchorEl(event.currentTarget);
57785
+ };
57786
+ const handleClose = () => {
57787
+ setAnchorEl(null);
57788
+ };
57789
+ return /* @__PURE__ */ jsxs(FlexBox, { children: [
57790
+ /* @__PURE__ */ jsxs(IconButton2, { "aria-label": ariaLabel, "aria-controls": open ? id2 : void 0, "aria-haspopup": "true", sx: {
57791
+ border: 0,
57792
+ "&:hover": {
57793
+ backgroundColor: "rgba(255, 255, 255, 0.08)"
57794
+ }
57795
+ }, "aria-expanded": open ? "true" : void 0, onClick: handleClick, color: "primary", children: [
57796
+ selectedMenuItem.icon && /* @__PURE__ */ jsx$1(selectedMenuItem.icon, { color: "primary", className: "mr-2" }),
57797
+ selectedMenuItem.faIcon && /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: selectedMenuItem.faIcon, fontSize: "medium", color: theme.palette.primary.main ?? "white", className: "mr-2" }),
57798
+ /* @__PURE__ */ jsx$1(DownArrow, {})
57799
+ ] }),
57800
+ /* @__PURE__ */ jsx$1(Menu, { id: id2, anchorEl, open, transformOrigin: {
57801
+ vertical: -20,
57802
+ horizontal: "left"
57803
+ }, onClose: handleClose, MenuListProps: {
57804
+ "aria-labelledby": id2
57805
+ }, sx: {
57806
+ "& .MuiPaper-root": {
57807
+ backgroundColor: theme.palette.mode === "dark" ? "#2A2A2A" : "#ffffff"
57808
+ }
57809
+ }, children: menuItems.map((menuItem, index) => /* @__PURE__ */ jsx$1(DropdownButtonMenuItem, { id: `${id2}-item-${index}`, onClick: () => {
57810
+ menuItem.onClick(menuItem.value);
57811
+ setSelectedMenuItem(menuItem);
57812
+ handleClose();
57813
+ }, icon: menuItem == null ? void 0 : menuItem.icon, faIcon: menuItem == null ? void 0 : menuItem.faIcon, value: menuItem.value, selected: menuItem.value === selectedMenuItem.value }, `${id2}-item-${index}`)) })
57814
+ ] });
57815
+ };
57732
57816
  const LinearProgress2 = ({
57733
57817
  // isActive,
57734
57818
  // transition = 500,
@@ -57785,6 +57869,7 @@ const Button2 = forwardRef((props, ref) => {
57785
57869
  if (variant === "primary") return /* @__PURE__ */ jsx$1(PrimaryButton, { ...buttonProps, ref });
57786
57870
  if (variant === "secondary") return /* @__PURE__ */ jsx$1(SecondaryButton, { ...buttonProps, ref });
57787
57871
  if (variant === "link") return /* @__PURE__ */ jsx$1(LinkButton, { ...buttonProps, ref });
57872
+ if (variant === "noStyle") return /* @__PURE__ */ jsx$1(ButtonBase, { ...buttonProps, ref });
57788
57873
  return /* @__PURE__ */ jsx$1(Button$1, { variant: "text", color: color2, ...buttonProps, ref, children: buttonProps.children });
57789
57874
  });
57790
57875
  const TextField2 = (props) => /* @__PURE__ */ jsx$1(TextField$1, { ...props });
@@ -80696,6 +80781,7 @@ export {
80696
80781
  DownArrow as DownArrowIcon,
80697
80782
  Download as DownloadIcon,
80698
80783
  DragHandleIcon,
80784
+ DropdownButton,
80699
80785
  ENCODE_SEARCH_PARAMS_MODES_Schema,
80700
80786
  FeatureMap,
80701
80787
  Panel as FixedPanel,
package/dist/ds.umd.cjs CHANGED
@@ -55064,7 +55064,7 @@ Please use another name.` : formatMuiErrorMessage$1(18));
55064
55064
  ] });
55065
55065
  };
55066
55066
  const Container = (containerProps) => /* @__PURE__ */ jsx$1(Container$1, { ...containerProps });
55067
- const FlexBox = (props) => /* @__PURE__ */ jsx$1(Stack, { ...props, children: props.children });
55067
+ const FlexBox = React$2.forwardRef((props, ref) => /* @__PURE__ */ jsx$1(Stack, { ref, ...props, children: props.children }));
55068
55068
  const TelicentMark = ({
55069
55069
  width: width2 = 24,
55070
55070
  height: height2 = 24,
@@ -55137,9 +55137,9 @@ Please use another name.` : formatMuiErrorMessage$1(18));
55137
55137
  ...iconProps
55138
55138
  }) => {
55139
55139
  const theme = useTheme$1();
55140
- return /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: faAngleDown, css: /* @__PURE__ */ css({
55140
+ return /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: faAngleDown, size: "sm", css: /* @__PURE__ */ css({
55141
55141
  color: color2 === "primary" ? theme.palette.primary.main : "inherit"
55142
- }, process.env.NODE_ENV === "production" ? "" : ";label:DownArrow;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3RlbGljZW50LWRzL3RlbGljZW50LWRzL3NyYy92MS9jb21wb25lbnRzL2RhdGEtZGlzcGxheS9Gb250QXdlc29tZUljb25zL0Rvd25BcnJvd0ljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCTSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay90ZWxpY2VudC1kcy90ZWxpY2VudC1kcy9zcmMvdjEvY29tcG9uZW50cy9kYXRhLWRpc3BsYXkvRm9udEF3ZXNvbWVJY29ucy9Eb3duQXJyb3dJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIEZvbnRBd2Vzb21lSWNvbixcbiAgRm9udEF3ZXNvbWVJY29uUHJvcHMsXG59IGZyb20gXCJAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWVcIjtcbmltcG9ydCB7IGZhQW5nbGVEb3duIH0gZnJvbSBcIkBmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29uc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcblxudHlwZSBEb3duQXJyb3dJY29uUHJvcHMgPSBPbWl0PEZvbnRBd2Vzb21lSWNvblByb3BzLCBcImljb25cIj4gJiB7XG4gIGNvbG9yPzogXCJwcmltYXJ5XCIgfCBcImluaGVyaXRcIjtcbn07XG5cbmNvbnN0IERvd25BcnJvdzogUmVhY3QuRkM8RG93bkFycm93SWNvblByb3BzPiA9ICh7IGNvbG9yLCAuLi5pY29uUHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICBpY29uPXtmYUFuZ2xlRG93bn1cbiAgICAgIGNzcz17e1xuICAgICAgICBjb2xvcjogY29sb3IgPT09IFwicHJpbWFyeVwiID8gdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4gOiBcImluaGVyaXRcIixcbiAgICAgIH19XG4gICAgICB7Li4uaWNvblByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEb3duQXJyb3c7XG4iXX0= */"), ...iconProps });
55142
+ }, process.env.NODE_ENV === "production" ? "" : ";label:DownArrow;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3RlbGljZW50LWRzL3RlbGljZW50LWRzL3NyYy92MS9jb21wb25lbnRzL2RhdGEtZGlzcGxheS9Gb250QXdlc29tZUljb25zL0Rvd25BcnJvd0ljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CTSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay90ZWxpY2VudC1kcy90ZWxpY2VudC1kcy9zcmMvdjEvY29tcG9uZW50cy9kYXRhLWRpc3BsYXkvRm9udEF3ZXNvbWVJY29ucy9Eb3duQXJyb3dJY29uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIEZvbnRBd2Vzb21lSWNvbixcbiAgRm9udEF3ZXNvbWVJY29uUHJvcHMsXG59IGZyb20gXCJAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWVcIjtcbmltcG9ydCB7IGZhQW5nbGVEb3duIH0gZnJvbSBcIkBmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29uc1wiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcblxudHlwZSBEb3duQXJyb3dJY29uUHJvcHMgPSBPbWl0PEZvbnRBd2Vzb21lSWNvblByb3BzLCBcImljb25cIj4gJiB7XG4gIGNvbG9yPzogXCJwcmltYXJ5XCIgfCBcImluaGVyaXRcIjtcbn07XG5cbmNvbnN0IERvd25BcnJvdzogUmVhY3QuRkM8RG93bkFycm93SWNvblByb3BzPiA9ICh7IGNvbG9yLCAuLi5pY29uUHJvcHMgfSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICBpY29uPXtmYUFuZ2xlRG93bn1cbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICBjc3M9e3tcbiAgICAgICAgY29sb3I6IGNvbG9yID09PSBcInByaW1hcnlcIiA/IHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluIDogXCJpbmhlcml0XCIsXG4gICAgICB9fVxuICAgICAgey4uLmljb25Qcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRG93bkFycm93O1xuIl19 */"), ...iconProps });
55143
55143
  };
55144
55144
  const Download = ({
55145
55145
  color: color2,
@@ -57747,6 +57747,90 @@ Please use another name.` : formatMuiErrorMessage$1(18));
57747
57747
  /* @__PURE__ */ jsx$1(Grid, { item: true, xs: 5, children: children2 })
57748
57748
  ] })
57749
57749
  ] });
57750
+ const DropdownButtonMenuItem = ({
57751
+ onClick,
57752
+ faIcon,
57753
+ id: id2,
57754
+ icon: icon2,
57755
+ value,
57756
+ selected = false
57757
+ }) => {
57758
+ const Icon2 = icon2;
57759
+ const theme = useExtendedTheme();
57760
+ return /* @__PURE__ */ jsxs(MenuItem, { onClick: () => onClick(value), id: id2, selected, sx: {
57761
+ display: "flex",
57762
+ alignItems: "center",
57763
+ marginX: 1,
57764
+ borderRadius: "4px",
57765
+ border: "1px solid rgba(0, 0, 0, 0)",
57766
+ "&.Mui-selected.Mui-selected": {
57767
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.background.default : "rgba(0, 0, 0, 0.04)"
57768
+ },
57769
+ "&.Mui-selected.Mui-selected:hover": {
57770
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.background.default : "rgba(0, 0, 0, 0.04)"
57771
+ },
57772
+ "&:hover": {
57773
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.background.default : "rgba(0, 0, 0, 0.04)",
57774
+ border: `1px solid ${theme.palette.primary.main}`
57775
+ }
57776
+ }, children: [
57777
+ (Icon2 || faIcon) && /* @__PURE__ */ jsxs(ListItemIcon$1, { children: [
57778
+ Icon2 && /* @__PURE__ */ jsx$1(Icon2, { color: selected ? "primary" : "inherit" }),
57779
+ faIcon && /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: faIcon, fontSize: "medium", color: selected ? theme.palette.primary.main : "white" })
57780
+ ] }),
57781
+ /* @__PURE__ */ jsx$1(ListItemText$1, { children: /* @__PURE__ */ jsx$1(Typography, { variant: "h1", sx: {
57782
+ marginTop: 0.5,
57783
+ fontFamily: "Figtree",
57784
+ fontSize: 16,
57785
+ fontWeight: 400,
57786
+ color: `${selected ? theme.palette.primary.main : "primary"}`,
57787
+ display: "flex",
57788
+ alignItems: "center"
57789
+ }, children: value }) })
57790
+ ] });
57791
+ };
57792
+ const DropdownButton = ({
57793
+ ariaLabel,
57794
+ id: id2,
57795
+ menuItems
57796
+ }) => {
57797
+ const [anchorEl, setAnchorEl] = React$2.useState(null);
57798
+ const [selectedMenuItem, setSelectedMenuItem] = React$2.useState(menuItems.find((menuItem) => menuItem.default) ?? menuItems[0]);
57799
+ const theme = useExtendedTheme();
57800
+ const open = Boolean(anchorEl);
57801
+ const handleClick = (event) => {
57802
+ setAnchorEl(event.currentTarget);
57803
+ };
57804
+ const handleClose = () => {
57805
+ setAnchorEl(null);
57806
+ };
57807
+ return /* @__PURE__ */ jsxs(FlexBox, { children: [
57808
+ /* @__PURE__ */ jsxs(IconButton, { "aria-label": ariaLabel, "aria-controls": open ? id2 : void 0, "aria-haspopup": "true", sx: {
57809
+ border: 0,
57810
+ "&:hover": {
57811
+ backgroundColor: "rgba(255, 255, 255, 0.08)"
57812
+ }
57813
+ }, "aria-expanded": open ? "true" : void 0, onClick: handleClick, color: "primary", children: [
57814
+ selectedMenuItem.icon && /* @__PURE__ */ jsx$1(selectedMenuItem.icon, { color: "primary", className: "mr-2" }),
57815
+ selectedMenuItem.faIcon && /* @__PURE__ */ jsx$1(FontAwesomeIcon, { icon: selectedMenuItem.faIcon, fontSize: "medium", color: theme.palette.primary.main ?? "white", className: "mr-2" }),
57816
+ /* @__PURE__ */ jsx$1(DownArrow, {})
57817
+ ] }),
57818
+ /* @__PURE__ */ jsx$1(Menu, { id: id2, anchorEl, open, transformOrigin: {
57819
+ vertical: -20,
57820
+ horizontal: "left"
57821
+ }, onClose: handleClose, MenuListProps: {
57822
+ "aria-labelledby": id2
57823
+ }, sx: {
57824
+ "& .MuiPaper-root": {
57825
+ backgroundColor: theme.palette.mode === "dark" ? "#2A2A2A" : "#ffffff"
57826
+ }
57827
+ }, children: menuItems.map((menuItem, index) => /* @__PURE__ */ jsx$1(DropdownButtonMenuItem, { id: `${id2}-item-${index}`, onClick: () => {
57828
+ menuItem.onClick(menuItem.value);
57829
+ setSelectedMenuItem(menuItem);
57830
+ handleClose();
57831
+ }, icon: menuItem == null ? void 0 : menuItem.icon, faIcon: menuItem == null ? void 0 : menuItem.faIcon, value: menuItem.value, selected: menuItem.value === selectedMenuItem.value }, `${id2}-item-${index}`)) })
57832
+ ] });
57833
+ };
57750
57834
  const LinearProgress = ({
57751
57835
  // isActive,
57752
57836
  // transition = 500,
@@ -57803,6 +57887,7 @@ Please use another name.` : formatMuiErrorMessage$1(18));
57803
57887
  if (variant === "primary") return /* @__PURE__ */ jsx$1(PrimaryButton, { ...buttonProps, ref });
57804
57888
  if (variant === "secondary") return /* @__PURE__ */ jsx$1(SecondaryButton, { ...buttonProps, ref });
57805
57889
  if (variant === "link") return /* @__PURE__ */ jsx$1(LinkButton, { ...buttonProps, ref });
57890
+ if (variant === "noStyle") return /* @__PURE__ */ jsx$1(ButtonBase, { ...buttonProps, ref });
57806
57891
  return /* @__PURE__ */ jsx$1(Button$1, { variant: "text", color: color2, ...buttonProps, ref, children: buttonProps.children });
57807
57892
  });
57808
57893
  const TextField = (props) => /* @__PURE__ */ jsx$1(TextField$1, { ...props });
@@ -80718,6 +80803,7 @@ uniform ${i3} ${s4} u_${a3};
80718
80803
  exports2.DownArrowIcon = DownArrow;
80719
80804
  exports2.DownloadIcon = Download;
80720
80805
  exports2.DragHandleIcon = DragHandleIcon;
80806
+ exports2.DropdownButton = DropdownButton;
80721
80807
  exports2.ENCODE_SEARCH_PARAMS_MODES_Schema = ENCODE_SEARCH_PARAMS_MODES_Schema;
80722
80808
  exports2.FeatureMap = FeatureMap;
80723
80809
  exports2.FixedPanel = Panel;
@@ -0,0 +1,20 @@
1
+ import { SvgIconProps } from '@mui/material/SvgIcon';
2
+ import { default as React } from 'react';
3
+ import { IconProp } from '@fortawesome/fontawesome-svg-core';
4
+
5
+ export interface DropdownButtonProps {
6
+ ariaLabel: string;
7
+ id: string;
8
+ menuItems: DropDownButtonMenuItemProps[];
9
+ }
10
+ export interface DropDownButtonMenuItemProps {
11
+ id: string;
12
+ onClick: (val: string) => void;
13
+ faIcon?: IconProp;
14
+ icon?: React.ElementType<SvgIconProps>;
15
+ value: string;
16
+ default?: boolean;
17
+ selected: boolean;
18
+ }
19
+ declare const DropdownButton: React.FC<DropdownButtonProps>;
20
+ export default DropdownButton;
@@ -0,0 +1,47 @@
1
+ import { StoryObj } from '@storybook/react';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: import('react').FC<import('./DropdownButton').DropdownButtonProps>;
6
+ tags: string[];
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: string;
11
+ };
12
+ };
13
+ id: string;
14
+ ariaLabel: string;
15
+ menuItems: {
16
+ id: string;
17
+ icon: (() => import("@emotion/react/jsx-runtime").JSX.Element) | (() => import("@emotion/react/jsx-runtime").JSX.Element);
18
+ value: string;
19
+ default: boolean;
20
+ onClick: () => void;
21
+ selected: boolean;
22
+ }[];
23
+ };
24
+ argTypes: {
25
+ ariaLabel: {
26
+ control: "text";
27
+ description: string;
28
+ };
29
+ id: {
30
+ control: "text";
31
+ description: string;
32
+ };
33
+ menuItems: {
34
+ control: "object";
35
+ description: string;
36
+ };
37
+ };
38
+ decorators: (Story: import('@storybook/csf').PartialStoryFn<import('@storybook/react').ReactRenderer, {
39
+ ariaLabel: string;
40
+ id: string;
41
+ menuItems: import('./DropdownButton').DropDownButtonMenuItemProps[];
42
+ }>) => import("@emotion/react/jsx-runtime").JSX.Element;
43
+ };
44
+ export default meta;
45
+ type Story = StoryObj<typeof meta>;
46
+ export declare const DropdownWithFontAwesome: Story;
47
+ export declare const DropdownWithCustomIcons: Story;
@@ -0,0 +1,2 @@
1
+ export declare const TestCatalogIcon: () => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const TestGraphIcon: () => import("@emotion/react/jsx-runtime").JSX.Element;
@@ -18,3 +18,4 @@ export { default as UserProfileContent } from './UserProfile/UserProfileContent/
18
18
  export { default as TitleAndContent } from './Text/TitleAndContent/TitleAndContent';
19
19
  export { default as UserStatus } from './UserProfile/UserProfileContent/UserStatus';
20
20
  export type { UserStatusProps } from './UserProfile/UserProfileContent/UserStatus';
21
+ export { default as DropdownButton } from './DropdownButton/DropdownButton';
@@ -45,7 +45,7 @@ export interface ButtonProps extends Omit<MUIButtonProps, "color" | "component"
45
45
  * The variant to use.
46
46
  * @default 'primary'
47
47
  */
48
- variant?: "primary" | "secondary" | "tertiary" | "link" | "text";
48
+ variant?: "primary" | "secondary" | "tertiary" | "link" | "text" | "noStyle";
49
49
  }
50
50
  declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
51
51
  export default Button;
@@ -289,7 +289,7 @@ declare const meta: {
289
289
  name?: string | undefined;
290
290
  component?: import('@mui/material').ButtonProps["component"];
291
291
  action?: import('react').Ref<import('@mui/material').ButtonBaseActions> | undefined;
292
- variant?: ("primary" | "secondary" | "tertiary" | "link" | "text") | undefined;
292
+ variant?: ("primary" | "secondary" | "tertiary" | "link" | "text" | "noStyle") | undefined;
293
293
  centerRipple?: boolean | undefined;
294
294
  disabled?: boolean | undefined;
295
295
  disableRipple?: boolean | undefined;
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
2
  import { StackProps } from '@mui/material/Stack';
3
3
 
4
- declare const FlexBox: React.FC<StackProps>;
4
+ declare const FlexBox: React.ForwardRefExoticComponent<Omit<StackProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
5
  export default FlexBox;
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/telicent-oss/telicent-ds.git"
8
8
  },
9
9
  "type": "module",
10
- "version": "0.22.0",
10
+ "version": "0.23.1",
11
11
  "private": false,
12
12
  "dependencies": {
13
13
  "@emotion/react": "^11.10.6",
@@ -101,6 +101,7 @@
101
101
  "@storybook/react": "8.4.0",
102
102
  "@storybook/react-vite": "8.4.0",
103
103
  "@storybook/test": "8.4.0",
104
+ "@storybook/theming": "^8.6.12",
104
105
  "@testing-library/dom": "^10.4.0",
105
106
  "@testing-library/jest-dom": "^6.6.3",
106
107
  "@testing-library/react": "^16.0.1",