remoraid 3.1.1 → 3.3.2

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/README.md CHANGED
@@ -1,11 +1,15 @@
1
1
  # Usage
2
2
 
3
3
  Import Mantine and Remoraid styles once at the root of your application.
4
- `@mantine/dates/styles.css` is required when using `remoraid/jsonforms`.
4
+ Some subpackages require additional Mantine stylesheets:
5
+
6
+ - `@mantine/dates/styles.css` when using `remoraid/jsonforms`
7
+ - `@mantine/charts/styles.css` when using `remoraid/data-visualization`
5
8
 
6
9
  ```typescript
7
10
  import "@mantine/core/styles.css";
8
11
  import "@mantine/dates/styles.css";
12
+ import "@mantine/charts/styles.css";
9
13
  import "remoraid/core/styles.css";
10
14
  ```
11
15
 
@@ -5967,6 +5967,18 @@ var createRemoraidTheme = (customTheme, dependencies) => {
5967
5967
  ["medium" /* Medium */]: { size: 24, stroke: 1.7 },
5968
5968
  ["large" /* Large */]: { size: 28, stroke: 1.7 },
5969
5969
  ["huge" /* Huge */]: { size: 44, stroke: 1.7 }
5970
+ },
5971
+ Scroller: {
5972
+ edgeGradientColor: "transparent",
5973
+ className: "remoraid-masked-scroller",
5974
+ startControlIcon: /* @__PURE__ */ jsx_runtime3.jsx(import_icons_react.IconArrowLeft, {
5975
+ size: "var(--remoraid-icon-size-extraSmall)",
5976
+ stroke: "var(--remoraid-icon-stroke-extraSmall)"
5977
+ }),
5978
+ endControlIcon: /* @__PURE__ */ jsx_runtime3.jsx(import_icons_react.IconArrowRight, {
5979
+ size: "var(--remoraid-icon-size-extraSmall)",
5980
+ stroke: "var(--remoraid-icon-stroke-extraSmall)"
5981
+ })
5970
5982
  }
5971
5983
  }
5972
5984
  };
@@ -5978,7 +5990,8 @@ var getCssVars = (theme) => {
5978
5990
  transitionDurations,
5979
5991
  primaryGutter,
5980
5992
  containerSize,
5981
- transparentBackground
5993
+ transparentBackground,
5994
+ componentsProps: { icons }
5982
5995
  } = theme;
5983
5996
  return {
5984
5997
  "--mantine-color-body": bodyColor,
@@ -5990,6 +6003,11 @@ var getCssVars = (theme) => {
5990
6003
  ...Object.entries(transitionDurations).reduce((t, [key, value]) => ({
5991
6004
  ...t,
5992
6005
  [`--remoraid-transition-duration-${key}`]: `${value}ms`
6006
+ }), {}),
6007
+ ...Object.entries(icons).reduce((t, [key, { size, stroke }]) => ({
6008
+ ...t,
6009
+ [`--remoraid-icon-size-${key}`]: typeof size === "number" ? `${size}px` : size,
6010
+ [`--remoraid-icon-stroke-${key}`]: `${stroke}`
5993
6011
  }), {})
5994
6012
  };
5995
6013
  };
@@ -7483,23 +7501,28 @@ var import_react20 = require("react");
7483
7501
 
7484
7502
  // src/core/components/ScrollableChipGroup/index.tsx
7485
7503
  var import_core15 = require("@mantine/core");
7504
+ var import_lodash14 = __toESM(require_lodash());
7486
7505
  var jsx_runtime26 = require("react/jsx-runtime");
7487
7506
  function ScrollableChipGroup({
7488
7507
  value,
7489
- ref,
7490
7508
  onChange,
7491
7509
  gap = "xs",
7492
7510
  componentsProps,
7493
7511
  children
7494
7512
  }) {
7495
- return /* @__PURE__ */ jsx_runtime26.jsx(import_core15.ScrollArea, {
7496
- ref,
7497
- ...componentsProps?.ScrollArea,
7498
- style: { contain: "inline-size", ...componentsProps?.ScrollArea?.style },
7513
+ const theme = useRemoraidTheme();
7514
+ return /* @__PURE__ */ jsx_runtime26.jsx(import_core15.Scroller, {
7515
+ ...theme.componentsProps?.Scroller,
7516
+ ...componentsProps?.Scroller,
7517
+ className: clsx_default("remoraid-masked-scroller", theme.componentsProps?.Scroller?.className, componentsProps?.Scroller?.className),
7518
+ style: import_lodash14.merge({ contain: "inline-size" }, theme.componentsProps?.Scroller?.style, componentsProps?.Scroller?.style),
7519
+ attributes: import_lodash14.merge({
7520
+ container: { "data-remoraid-scroller-container": true }
7521
+ }, theme.componentsProps?.Scroller?.attributes, componentsProps?.Scroller?.attributes),
7499
7522
  children: /* @__PURE__ */ jsx_runtime26.jsx(import_core15.Chip.Group, {
7500
7523
  value,
7501
7524
  onChange,
7502
- ...componentsProps?.chipGroup,
7525
+ ...componentsProps?.ChipGroup,
7503
7526
  multiple: true,
7504
7527
  children: /* @__PURE__ */ jsx_runtime26.jsx(import_core15.Flex, {
7505
7528
  justify: "flex-start",
@@ -7514,12 +7537,12 @@ function ScrollableChipGroup({
7514
7537
  }
7515
7538
 
7516
7539
  // src/core/components/WidgetSelectionHeader/index.tsx
7517
- var import_lodash14 = __toESM(require_lodash());
7540
+ var import_lodash15 = __toESM(require_lodash());
7518
7541
  var jsx_runtime27 = require("react/jsx-runtime");
7519
7542
  function WidgetSelectionHeader({
7520
7543
  title,
7521
7544
  pinnableSection = "top" /* Top */,
7522
- initiallyPinned = true,
7545
+ initiallyPinned: initiallyPinnedProp,
7523
7546
  disabledWidgets,
7524
7547
  componentsProps
7525
7548
  }) {
@@ -7535,6 +7558,7 @@ function WidgetSelectionHeader({
7535
7558
  if (!page) {
7536
7559
  throw new InvalidComponentUsageError("WidgetSelectionHeader", "must be used as child of 'Page'.");
7537
7560
  }
7561
+ const initiallyPinned = pinnableSection ? initiallyPinnedProp ?? true : false;
7538
7562
  const [hover, setHover] = import_react20.useState(false);
7539
7563
  const [isPinned, setIsPinned] = import_react20.useState(initiallyPinned);
7540
7564
  const handleEnter = () => {
@@ -7543,7 +7567,7 @@ function WidgetSelectionHeader({
7543
7567
  const handleLeave = () => {
7544
7568
  setHover(false);
7545
7569
  };
7546
- const scrollAreaRef = import_react20.useRef(null);
7570
+ const containerRef = import_react20.useRef(null);
7547
7571
  const widgets = widgetsContext2.widgets[page.pageId] ?? {};
7548
7572
  const selectedWidgets = Object.entries(widgets).reduce((t, [widgetId, widget]) => widget?.selected ? [...t, widgetId] : t, []);
7549
7573
  const element = /* @__PURE__ */ jsx_runtime27.jsxs(import_core16.Flex, {
@@ -7551,6 +7575,7 @@ function WidgetSelectionHeader({
7551
7575
  align: "center",
7552
7576
  gap: "md",
7553
7577
  ...componentsProps?.container,
7578
+ ref: containerRef,
7554
7579
  onMouseEnter: (e) => {
7555
7580
  if (!pinnableSection) {
7556
7581
  handleEnter();
@@ -7561,13 +7586,14 @@ function WidgetSelectionHeader({
7561
7586
  if (!pinnableSection) {
7562
7587
  handleLeave();
7563
7588
  }
7564
- componentsProps?.container?.onMouseEnter?.(e);
7589
+ componentsProps?.container?.onMouseLeave?.(e);
7565
7590
  },
7566
7591
  className: clsx_default(!pinnableSection ? "remoraid-non-widget-segment" : undefined, !pinnableSection ? "remoraid-segment" : undefined, componentsProps?.container?.className),
7567
7592
  children: [
7568
7593
  /* @__PURE__ */ jsx_runtime27.jsx(import_core16.Text, {
7569
7594
  size: "md",
7570
7595
  ...componentsProps?.title,
7596
+ style: { whiteSpace: "nowrap", ...componentsProps?.title?.style },
7571
7597
  children: title ?? page.name
7572
7598
  }),
7573
7599
  /* @__PURE__ */ jsx_runtime27.jsx(import_core16.Divider, {
@@ -7576,13 +7602,17 @@ function WidgetSelectionHeader({
7576
7602
  }),
7577
7603
  isPageRegistered(page.pageId) && /* @__PURE__ */ jsx_runtime27.jsx(ScrollableChipGroup, {
7578
7604
  value: selectedWidgets,
7579
- ref: scrollAreaRef,
7580
7605
  ...componentsProps?.ScrollableChipGroup,
7581
7606
  onChange: (value) => {
7582
7607
  updateWidgetSelectionBulk(page.pageId, value);
7583
7608
  componentsProps?.ScrollableChipGroup?.onChange?.(value);
7584
7609
  },
7585
- componentsProps: import_lodash14.merge({ ScrollArea: { flex: 1 } }, componentsProps?.ScrollableChipGroup?.componentsProps),
7610
+ componentsProps: import_lodash15.merge({
7611
+ Scroller: {
7612
+ flex: 1,
7613
+ miw: 0
7614
+ }
7615
+ }, componentsProps?.ScrollableChipGroup?.componentsProps),
7586
7616
  children: Object.entries(widgets).map(([widgetId, widget]) => {
7587
7617
  if (!widget) {
7588
7618
  return;
@@ -7603,12 +7633,15 @@ function WidgetSelectionHeader({
7603
7633
  ...theme.componentsProps.icons.extraSmall
7604
7634
  }),
7605
7635
  ...componentsProps?.Chip,
7606
- styles: import_lodash14.merge({
7636
+ styles: import_lodash15.merge({
7607
7637
  label: {
7608
7638
  transition: "background-color var(--remoraid-transition-duration-short)"
7609
7639
  }
7610
7640
  }, componentsProps?.Chip?.styles),
7611
- id: `remoraid-widget-selection-header-chip-${widgetId}`,
7641
+ wrapperProps: {
7642
+ ...componentsProps?.Chip?.wrapperProps,
7643
+ id: `remoraid-widget-selection-header-chip-${widgetId}`
7644
+ },
7612
7645
  children: widget.name
7613
7646
  })
7614
7647
  })
@@ -7649,19 +7682,20 @@ function WidgetSelectionHeader({
7649
7682
  if (!activeWidget) {
7650
7683
  return;
7651
7684
  }
7652
- if (!isPinned) {
7685
+ if (!containerRef?.current) {
7653
7686
  return;
7654
7687
  }
7655
- if (!scrollAreaRef?.current) {
7688
+ const activeWidgetChipElement = containerRef.current.querySelector(`#remoraid-widget-selection-header-chip-${activeWidget}`);
7689
+ if (!activeWidgetChipElement) {
7656
7690
  return;
7657
7691
  }
7658
- const activeWidgetChipElement = scrollAreaRef.current.querySelector(`#remoraid-widget-selection-header-chip-${activeWidget}`);
7659
- if (!activeWidgetChipElement) {
7692
+ const scrollContainerElement = activeWidgetChipElement.closest("[data-remoraid-scroller-container]");
7693
+ if (!scrollContainerElement) {
7660
7694
  return;
7661
7695
  }
7662
- activeWidgetChipElement.scrollIntoView({
7663
- behavior: "smooth",
7664
- inline: "center"
7696
+ scrollContainerElement.scrollTo({
7697
+ left: activeWidgetChipElement.offsetLeft - scrollContainerElement.clientWidth / 2 + activeWidgetChipElement.clientWidth / 2,
7698
+ behavior: "smooth"
7665
7699
  });
7666
7700
  }, [activeWidget]);
7667
7701
  if (pinnableSection) {
@@ -7745,7 +7779,7 @@ function BadgeMinimal({
7745
7779
  }
7746
7780
 
7747
7781
  // src/core/components/BadgeGroup/index.tsx
7748
- var import_lodash15 = __toESM(require_lodash());
7782
+ var import_lodash16 = __toESM(require_lodash());
7749
7783
  var jsx_runtime29 = require("react/jsx-runtime");
7750
7784
  var react = require("react");
7751
7785
  function BadgeGroup({
@@ -7793,7 +7827,7 @@ function BadgeGroup({
7793
7827
  ...componentsProps?.cumulativeBadge,
7794
7828
  style: {
7795
7829
  cursor: "pointer",
7796
- ...import_lodash15.merge(transitionStyle, componentsProps?.cumulativeBadge?.style)
7830
+ ...import_lodash16.merge(transitionStyle, componentsProps?.cumulativeBadge?.style)
7797
7831
  },
7798
7832
  children: [
7799
7833
  numVisibleBadges,
@@ -7817,7 +7851,7 @@ function BadgeGroup({
7817
7851
  }
7818
7852
  // src/core/components/AlertMinimal/index.tsx
7819
7853
  var import_core19 = require("@mantine/core");
7820
- var import_lodash16 = __toESM(require_lodash());
7854
+ var import_lodash17 = __toESM(require_lodash());
7821
7855
  var jsx_runtime30 = require("react/jsx-runtime");
7822
7856
  function AlertMinimal({
7823
7857
  category,
@@ -7834,7 +7868,7 @@ function AlertMinimal({
7834
7868
  icon: Icon4,
7835
7869
  iconSize = "small" /* Small */,
7836
7870
  componentsProps
7837
- } = import_lodash16.merge({}, theme.componentsProps.alerts[category], props);
7871
+ } = import_lodash17.merge({}, theme.componentsProps.alerts[category], props);
7838
7872
  return /* @__PURE__ */ jsx_runtime30.jsx(import_core19.Transition, {
7839
7873
  mounted,
7840
7874
  transition: "fade",
@@ -7848,10 +7882,10 @@ function AlertMinimal({
7848
7882
  onClose,
7849
7883
  withCloseButton: onClose !== undefined,
7850
7884
  icon: Icon4 ? /* @__PURE__ */ jsx_runtime30.jsx(Icon4, {
7851
- ...import_lodash16.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
7885
+ ...import_lodash17.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
7852
7886
  }) : undefined,
7853
7887
  ...componentsProps?.alert,
7854
- style: import_lodash16.merge(transitionStyle, componentsProps?.alert?.style),
7888
+ style: import_lodash17.merge(transitionStyle, componentsProps?.alert?.style),
7855
7889
  children: [
7856
7890
  text,
7857
7891
  children
@@ -7863,7 +7897,7 @@ function AlertMinimal({
7863
7897
  var import_core20 = require("@mantine/core");
7864
7898
  var import_react22 = require("react");
7865
7899
  var import_icons_react10 = require("@tabler/icons-react");
7866
- var import_lodash17 = __toESM(require_lodash());
7900
+ var import_lodash18 = __toESM(require_lodash());
7867
7901
  var jsx_runtime31 = require("react/jsx-runtime");
7868
7902
  function WidgetWrapper({
7869
7903
  config,
@@ -7934,7 +7968,7 @@ function WidgetWrapper({
7934
7968
  handleLeave(e);
7935
7969
  componentsProps?.container?.onMouseLeave?.(e);
7936
7970
  },
7937
- style: import_lodash17.merge(transitionStyle, { flexDirection: "column" }, componentsProps?.container?.style),
7971
+ style: import_lodash18.merge(transitionStyle, { flexDirection: "column" }, componentsProps?.container?.style),
7938
7972
  className: clsx_default("remoraid-segment", componentsProps?.container?.className),
7939
7973
  id: config.widgetId,
7940
7974
  children: [
@@ -8008,7 +8042,7 @@ function WidgetWrapper({
8008
8042
  // src/core/components/Widget/index.tsx
8009
8043
  var import_core21 = require("@mantine/core");
8010
8044
  var import_react23 = require("react");
8011
- var import_lodash18 = __toESM(require_lodash());
8045
+ var import_lodash19 = __toESM(require_lodash());
8012
8046
  var jsx_runtime32 = require("react/jsx-runtime");
8013
8047
  var react2 = require("react");
8014
8048
  function Widget({
@@ -8080,7 +8114,7 @@ function Widget({
8080
8114
  size: "sm",
8081
8115
  c: "dimmed",
8082
8116
  ...componentsProps?.description,
8083
- style: import_lodash18.merge(transitionStyle, componentsProps?.description?.style),
8117
+ style: import_lodash19.merge(transitionStyle, componentsProps?.description?.style),
8084
8118
  children: description
8085
8119
  })
8086
8120
  })
@@ -8351,7 +8385,7 @@ var SettingsTable_default = Object.assign(SettingsTable, {
8351
8385
  Row
8352
8386
  });
8353
8387
  // src/core/components/NavbarSettingsWidget/index.tsx
8354
- var import_lodash19 = __toESM(require_lodash());
8388
+ var import_lodash20 = __toESM(require_lodash());
8355
8389
  var import_core25 = require("@mantine/core");
8356
8390
  var jsx_runtime39 = require("react/jsx-runtime");
8357
8391
  var defaultNavbarSettingsWidgetId = "navbar-settings";
@@ -8387,7 +8421,7 @@ function NavbarSettingsWidget({
8387
8421
  navbar: initialUserExperience.navbar
8388
8422
  }));
8389
8423
  },
8390
- custom: !import_lodash19.isEqual(userExperience.navbar, initialUserExperience.navbar),
8424
+ custom: !import_lodash20.isEqual(userExperience.navbar, initialUserExperience.navbar),
8391
8425
  children: /* @__PURE__ */ jsx_runtime39.jsxs(SettingsTable_default, {
8392
8426
  ...componentsProps?.table,
8393
8427
  children: [
@@ -8445,7 +8479,7 @@ function NavbarSettingsWidget({
8445
8479
  });
8446
8480
  }
8447
8481
  // src/core/components/FooterSettingsWidget/index.tsx
8448
- var import_lodash20 = __toESM(require_lodash());
8482
+ var import_lodash21 = __toESM(require_lodash());
8449
8483
  var import_core26 = require("@mantine/core");
8450
8484
  var jsx_runtime40 = require("react/jsx-runtime");
8451
8485
  var defaultFooterSettingsWidgetId = "footer-settings";
@@ -8476,7 +8510,7 @@ function FooterSettingsWidget({
8476
8510
  footer: initialUserExperience.footer
8477
8511
  }));
8478
8512
  },
8479
- custom: !import_lodash20.isEqual(userExperience.footer, initialUserExperience.footer),
8513
+ custom: !import_lodash21.isEqual(userExperience.footer, initialUserExperience.footer),
8480
8514
  children: /* @__PURE__ */ jsx_runtime40.jsxs(SettingsTable_default, {
8481
8515
  ...componentsProps?.table,
8482
8516
  children: [
@@ -1,5 +1,5 @@
1
1
  import { PropsWithChildren as PropsWithChildren7, ReactNode as ReactNode7 } from "react";
2
- import { MantineBreakpoint, MantineColorScheme, MantineSize, MantineTheme } from "@mantine/core";
2
+ import { MantineBreakpoint, MantineColorScheme, MantineSize, MantineTheme, ScrollerProps } from "@mantine/core";
3
3
  import { Icon as Icon2, IconProps as IconProps2 } from "@tabler/icons-react";
4
4
  import React2, { Dispatch, MouseEventHandler, ReactElement, SetStateAction } from "react";
5
5
  import { PartialDeep } from "type-fest";
@@ -168,8 +168,9 @@ interface RemoraidTheme {
168
168
  transparentBackground?: string;
169
169
  spacingPx?: Record<MantineSize, number>;
170
170
  componentsProps: {
171
- icons: Record<RemoraidIconSize, Partial<IconProps2>>
171
+ icons: Record<RemoraidIconSize, Partial<IconProps2> & Required<Pick<IconProps2, "size" | "stroke">>>
172
172
  alerts: Record<AlertCategory, Omit<Partial<AlertMinimalProps>, "category">>
173
+ Scroller: Partial<ScrollerProps>
173
174
  };
174
175
  }
175
176
  interface RemoraidThemeDependencies {
@@ -600,20 +601,19 @@ declare const defaultUserExperienceCookieName = "remoraid-core-user-experience";
600
601
  declare const useRemoraidUserExperience: () => UserExperienceContext<CoreUserExperience>;
601
602
  import { ChipProps, DividerProps, FlexProps as FlexProps2, MenuProps as MenuProps2, TextProps } from "@mantine/core";
602
603
  import { ReactNode as ReactNode27 } from "react";
603
- import { ChipGroupProps, FlexProps, MantineSize as MantineSize7, ScrollAreaProps as ScrollAreaProps2 } from "@mantine/core";
604
- import { PropsWithChildren as PropsWithChildren17, ReactNode as ReactNode26, RefObject as RefObject2 } from "react";
604
+ import { ChipGroupProps, FlexProps, MantineSize as MantineSize7, ScrollerProps as ScrollerProps2 } from "@mantine/core";
605
+ import { PropsWithChildren as PropsWithChildren17, ReactNode as ReactNode26 } from "react";
605
606
  interface ScrollableChipGroupProps {
606
607
  value: string[];
607
- ref?: RefObject2<HTMLDivElement | null>;
608
608
  onChange?: (value: string[]) => void;
609
609
  gap?: MantineSize7 | number;
610
610
  componentsProps?: {
611
- chipGroup?: Partial<ChipGroupProps<true>>
612
611
  container?: Partial<FlexProps>
613
- ScrollArea?: Partial<ScrollAreaProps2>
612
+ ChipGroup?: Partial<ChipGroupProps<true>>
613
+ Scroller?: Partial<ScrollerProps2>
614
614
  };
615
615
  }
616
- declare function ScrollableChipGroup2({ value, ref, onChange, gap, componentsProps, children }: PropsWithChildren17<ScrollableChipGroupProps>): ReactNode26;
616
+ declare function ScrollableChipGroup2({ value, onChange, gap, componentsProps, children }: PropsWithChildren17<ScrollableChipGroupProps>): ReactNode26;
617
617
  interface WidgetSelectionHeaderProps {
618
618
  title?: string;
619
619
  pinnableSection?: FrameLayoutSection.Top | FrameLayoutSection.Bottom | null;
@@ -629,7 +629,7 @@ interface WidgetSelectionHeaderProps {
629
629
  Pinnable?: Partial<PinnableProps>
630
630
  };
631
631
  }
632
- declare function WidgetSelectionHeader({ title, pinnableSection, initiallyPinned, disabledWidgets, componentsProps }: WidgetSelectionHeaderProps): ReactNode27;
632
+ declare function WidgetSelectionHeader({ title, pinnableSection, initiallyPinned: initiallyPinnedProp, disabledWidgets, componentsProps }: WidgetSelectionHeaderProps): ReactNode27;
633
633
  import { BadgeProps as BadgeProps2, GroupProps as GroupProps3, HoverCardProps, MantineBreakpoint as MantineBreakpoint4, MantineSize as MantineSize8, StackProps as StackProps2, TransitionProps as TransitionProps7 } from "@mantine/core";
634
634
  import { ReactNode as ReactNode29 } from "react";
635
635
  import { BadgeProps, TooltipProps as TooltipProps3, TransitionProps as TransitionProps6 } from "@mantine/core";
@@ -823,7 +823,7 @@ declare function ContextClusterProvider<
823
823
  Context,
824
824
  StaticID extends string = never
825
825
  >({ cluster, values, children }: PropsWithChildren25<ContextClusterProviderProps<Context, StaticID>>): ReactNode41;
826
- import { BoxProps as BoxProps4, InputWrapperProps, ScrollAreaProps as ScrollAreaProps3 } from "@mantine/core";
826
+ import { BoxProps as BoxProps4, InputWrapperProps, ScrollAreaProps as ScrollAreaProps2 } from "@mantine/core";
827
827
  import { PropsWithChildren as PropsWithChildren26, ReactNode as ReactNode42 } from "react";
828
828
  interface InputWrapperScrollAreaProps {
829
829
  label?: string;
@@ -833,7 +833,7 @@ interface InputWrapperScrollAreaProps {
833
833
  required?: boolean;
834
834
  componentsProps?: {
835
835
  container?: Partial<InputWrapperProps>
836
- ScrollArea?: Partial<ScrollAreaProps3>
836
+ ScrollArea?: Partial<ScrollAreaProps2>
837
837
  childrenContainer?: Partial<BoxProps4>
838
838
  };
839
839
  }