reshaped 3.3.13 → 3.4.0-rc.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 (61) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +3 -0
  4. package/dist/bundle.js +11 -11
  5. package/dist/components/Autocomplete/Autocomplete.js +34 -24
  6. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
  7. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +8 -1
  8. package/dist/components/Carousel/Carousel.js +2 -1
  9. package/dist/components/Carousel/Carousel.types.d.ts +1 -0
  10. package/dist/components/ContextMenu/ContextMenu.js +2 -2
  11. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +1 -1
  12. package/dist/components/DropdownMenu/DropdownMenu.js +6 -1
  13. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +2 -2
  14. package/dist/components/Popover/Popover.js +1 -1
  15. package/dist/components/Popover/tests/Popover.test.stories.js +4 -4
  16. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -0
  17. package/dist/components/ProgressIndicator/ProgressIndicator.js +101 -0
  18. package/dist/components/ProgressIndicator/ProgressIndicator.module.css +1 -0
  19. package/dist/components/ProgressIndicator/ProgressIndicator.types.d.ts +9 -0
  20. package/dist/components/ProgressIndicator/ProgressIndicator.types.js +1 -0
  21. package/dist/components/ProgressIndicator/index.d.ts +2 -0
  22. package/dist/components/ProgressIndicator/index.js +1 -0
  23. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +19 -0
  24. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +85 -0
  25. package/dist/components/Reshaped/Reshaped.js +4 -5
  26. package/dist/components/TextField/TextField.module.css +1 -1
  27. package/dist/components/Toast/tests/Toast.stories.js +22 -7
  28. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +1 -1
  29. package/dist/components/_private/Flyout/Flyout.module.css +1 -1
  30. package/dist/components/_private/Flyout/Flyout.types.d.ts +14 -3
  31. package/dist/components/_private/Flyout/FlyoutContent.js +37 -7
  32. package/dist/components/_private/Flyout/FlyoutControlled.js +12 -11
  33. package/dist/components/_private/Flyout/FlyoutUncontrolled.js +3 -5
  34. package/dist/components/_private/Flyout/index.d.ts +1 -1
  35. package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +79 -13
  36. package/dist/components/_private/Flyout/tests/Flyout.stories.js +526 -280
  37. package/dist/components/_private/Flyout/useFlyout.js +9 -3
  38. package/dist/components/_private/Flyout/utilities/isFullyVisible.d.ts +3 -1
  39. package/dist/components/_private/Flyout/utilities/isFullyVisible.js +2 -2
  40. package/dist/hooks/_private/usePrevious.d.ts +2 -0
  41. package/dist/hooks/_private/usePrevious.js +17 -0
  42. package/dist/hooks/_private/useSingletonEnvironment.d.ts +1 -1
  43. package/dist/hooks/_private/useSingletonEnvironment.js +1 -1
  44. package/dist/hooks/_private/useSingletonKeyboardMode.d.ts +13 -2
  45. package/dist/hooks/_private/useSingletonKeyboardMode.js +48 -15
  46. package/dist/hooks/tests/useKeyboardMode.stories.d.ts +6 -0
  47. package/dist/hooks/tests/useKeyboardMode.stories.js +37 -0
  48. package/dist/hooks/useKeyboardMode.d.ts +7 -0
  49. package/dist/hooks/useKeyboardMode.js +13 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.js +2 -0
  52. package/dist/utilities/a11y/index.d.ts +1 -1
  53. package/dist/utilities/a11y/index.js +1 -1
  54. package/dist/utilities/a11y/keyboardMode.d.ts +2 -2
  55. package/dist/utilities/a11y/keyboardMode.js +2 -2
  56. package/dist/utilities/dom/find.d.ts +4 -1
  57. package/dist/utilities/dom/find.js +4 -4
  58. package/dist/utilities/scroll/lockStandard.js +1 -1
  59. package/package.json +3 -4
  60. package/dist/components/_private/Flyout/tests/Flyout.test.stories.d.ts +0 -28
  61. package/dist/components/_private/Flyout/tests/Flyout.test.stories.js +0 -205
@@ -1 +1 @@
1
- .content{--rs-flyout-gap:0;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;pointer-events:none;position:absolute}.content.--hover,.inner{pointer-events:all}.inner{opacity:0;transform:scale(.9) translateY(0);transform-origin:var(--rs-flyout-origin-x) var(--rs-flyout-origin-y);transition:1ms var(--rs-easing-accelerate)}.content.--width-trigger .inner{transform:scale(1) translateY(var(--rs-unit-x2))}.content.--position-top,.content.--position-top-end,.content.--position-top-start{--rs-flyout-origin-y:100%;padding-bottom:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom,.content.--position-bottom-end,.content.--position-bottom-start{--rs-flyout-origin-y:0%;padding-top:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom-start,.content.--position-top-start{--rs-flyout-origin-x:0%}.content.--position-bottom-end,.content.--position-top-end{--rs-flyout-origin-x:100%}.content.--position-start,.content.--position-start-bottom,.content.--position-start-top{--rs-flyout-origin-x:100%;padding-right:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end,.content.--position-end-bottom,.content.--position-end-top{--rs-flyout-origin-x:0%;padding-left:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end-top,.content.--position-start-top{--rs-flyout-origin-y:0%}.content.--position-end-bottom,.content.--position-start-bottom{--rs-flyout-origin-y:100%}.content.--visible .inner{opacity:1;transform:scale(1) translateY(0)}.content.--animated .inner{transition-duration:var(--rs-duration-rapid);transition-property:opacity,transform}.content.--animated.--visible .inner{transition-duration:var(--rs-duration-fast);transition-timing-function:var(--rs-easing-decelerate)}.content.--hover-disabled{pointer-events:none}
1
+ .content{--rs-flyout-gap:0;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;pointer-events:none;position:absolute}.content.--hover{pointer-events:all}.content.--hover-disabled,.content.--hover-disabled .inner{pointer-events:none}.inner{opacity:0;pointer-events:all;transform:scale(.9) translateY(0);transform-origin:var(--rs-flyout-origin-x) var(--rs-flyout-origin-y);transition:1ms var(--rs-easing-accelerate)}.content.--width-trigger .inner{transform:scale(1) translateY(var(--rs-unit-x2))}.content.--position-top,.content.--position-top-end,.content.--position-top-start{--rs-flyout-origin-y:100%;padding-bottom:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom,.content.--position-bottom-end,.content.--position-bottom-start{--rs-flyout-origin-y:0%;padding-top:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom-start,.content.--position-top-start{--rs-flyout-origin-x:0%}.content.--position-bottom-end,.content.--position-top-end{--rs-flyout-origin-x:100%}.content.--position-start,.content.--position-start-bottom,.content.--position-start-top{--rs-flyout-origin-x:100%;padding-right:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end,.content.--position-end-bottom,.content.--position-end-top{--rs-flyout-origin-x:0%;padding-left:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end-top,.content.--position-start-top{--rs-flyout-origin-y:0%}.content.--position-end-bottom,.content.--position-start-bottom{--rs-flyout-origin-y:100%}.content.--visible .inner{opacity:1;transform:scale(1) translateY(0)}.content.--animated .inner{transition-duration:var(--rs-duration-rapid);transition-property:opacity,transform}.content.--animated.--visible .inner{transition-duration:var(--rs-duration-fast);transition-timing-function:var(--rs-easing-decelerate)}
@@ -7,6 +7,12 @@ import type { TrapMode } from "../../../utilities/a11y";
7
7
  type XSide = "start" | "end";
8
8
  type YSide = "top" | "bottom";
9
9
  export type Side = XSide | YSide;
10
+ export type CloseReason = "escape-key" | "outside-click"
11
+ /**
12
+ * Keeping the item selection type here since DropdownMenu items use Flyout context
13
+ * and not a separate DropdownMenu context
14
+ */
15
+ | "item-selection" | "close-button";
10
16
  export type Position = `${YSide}` | `${YSide}-${XSide}` | `${XSide}` | `${XSide}-${YSide}`;
11
17
  export type Width = "trigger" | string;
12
18
  export type Options = {
@@ -31,7 +37,9 @@ export type FlyoutData = {
31
37
  position: Position;
32
38
  };
33
39
  export type UseFlyoutData = Pick<State, "styles" | "position" | "status"> & {
34
- updatePosition: () => void;
40
+ updatePosition: (args?: {
41
+ sync?: boolean;
42
+ }) => void;
35
43
  render: () => void;
36
44
  hide: () => void;
37
45
  remove: () => void;
@@ -86,7 +94,9 @@ type BaseProps = {
86
94
  originCoordinates?: G.Coordinates;
87
95
  children?: React.ReactNode;
88
96
  onOpen?: () => void;
89
- onClose?: () => void;
97
+ onClose?: (args: {
98
+ reason?: CloseReason;
99
+ }) => void;
90
100
  width?: Width;
91
101
  contentGap?: number;
92
102
  contentShift?: number;
@@ -117,8 +127,9 @@ export type ContextProps = {
117
127
  width?: Width;
118
128
  triggerElRef?: React.RefObject<HTMLButtonElement | null>;
119
129
  flyoutElRef: React.RefObject<HTMLDivElement | null>;
120
- handleClose: (options?: {
130
+ handleClose: (options: {
121
131
  closeParents?: boolean;
132
+ reason?: CloseReason;
122
133
  }) => void;
123
134
  handleOpen: () => void;
124
135
  handleMouseEnter: () => void;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../../utilities/helpers.js";
4
+ import { classNames, throttleHandler } from "../../../utilities/helpers.js";
5
5
  import useIsomorphicLayoutEffect from "../../../hooks/useIsomorphicLayoutEffect.js";
6
6
  import Portal from "../Portal/index.js";
7
7
  import { findClosestRenderContainer } from "../../../utilities/dom/index.js";
@@ -10,9 +10,21 @@ import { useFlyoutContext, ContentProvider } from "./Flyout.context.js";
10
10
  import s from "./Flyout.module.css";
11
11
  const FlyoutContent = (props) => {
12
12
  const { children, className, attributes } = props;
13
- const { flyout, id, flyoutElRef, triggerElRef, handleTransitionEnd, handleTransitionStart, triggerType, handleMouseEnter, handleMouseLeave, handleContentMouseDown, handleContentMouseUp, contentGap, contentClassName, contentAttributes, trapFocusMode, disableContentHover, width, containerRef, isSubmenu, } = useFlyoutContext();
14
- const { styles, status, position } = flyout;
13
+ const { flyout, id, flyoutElRef, triggerElRef, handleClose, handleTransitionEnd, handleTransitionStart, triggerType, handleMouseEnter, handleMouseLeave, handleContentMouseDown, handleContentMouseUp, contentGap, contentClassName, contentAttributes, trapFocusMode, disableContentHover, width, containerRef, isSubmenu, } = useFlyoutContext();
14
+ const { styles, status, position, updatePosition } = flyout;
15
15
  const [mounted, setMounted] = React.useState(false);
16
+ const closestContainer = React.useMemo(() => {
17
+ if (!mounted)
18
+ return;
19
+ if (!triggerElRef)
20
+ return;
21
+ return findClosestRenderContainer({ el: triggerElRef.current });
22
+ }, [mounted, triggerElRef]);
23
+ const scrollableRef = (mounted && closestContainer?.el === document.body) ||
24
+ !closestContainer?.el ||
25
+ closestContainer.scrollable
26
+ ? undefined
27
+ : { current: closestContainer.el };
16
28
  useIsomorphicLayoutEffect(() => {
17
29
  setMounted(true);
18
30
  }, []);
@@ -26,6 +38,28 @@ const FlyoutContent = (props) => {
26
38
  el.addEventListener("transitionstart", handleTransitionStart);
27
39
  return () => el.removeEventListener("transitionstart", handleTransitionStart);
28
40
  }, [handleTransitionStart, flyoutElRef, status]);
41
+ React.useEffect(() => {
42
+ if (!closestContainer?.scrollable)
43
+ return;
44
+ const triggerEl = triggerElRef?.current;
45
+ const containerEl = closestContainer.el;
46
+ const handleScroll = throttleHandler(() => {
47
+ const triggerBounds = triggerEl?.getBoundingClientRect();
48
+ const containerBounds = containerEl.getBoundingClientRect();
49
+ if (triggerBounds &&
50
+ (triggerBounds.bottom < containerBounds.top ||
51
+ triggerBounds.right < containerBounds.left ||
52
+ triggerBounds.left > containerBounds.right ||
53
+ triggerBounds.top > containerBounds.bottom)) {
54
+ handleClose({});
55
+ }
56
+ else {
57
+ flyout.updatePosition({ sync: true });
58
+ }
59
+ }, 16);
60
+ closestContainer.el.addEventListener("scroll", handleScroll, { passive: true });
61
+ return () => closestContainer.el.removeEventListener("scroll", handleScroll);
62
+ }, [closestContainer, flyout, handleClose, triggerElRef]);
29
63
  if (status === "idle" || !mounted)
30
64
  return null;
31
65
  const contentClassNames = classNames(s.content, triggerType === "hover" && s["--hover"], status === "visible" && s["--visible"],
@@ -52,10 +86,6 @@ const FlyoutContent = (props) => {
52
86
  ...styles,
53
87
  "--rs-flyout-gap": contentGap,
54
88
  }, ref: flyoutElRef, onTransitionEnd: handleTransitionEnd, onMouseEnter: triggerType === "hover" ? handleMouseEnter : undefined, onMouseLeave: triggerType === "hover" ? handleMouseLeave : undefined, onMouseDown: handleContentMouseDown, onTouchStart: handleContentMouseDown, onMouseUp: handleContentMouseUp, onTouchEnd: handleContentMouseUp, children: _jsx("div", { role: role, ...attributes, id: id, "aria-modal": role === "dialog" ? true : undefined, style: contentAttributes?.style, className: innerClassNames, children: children }) }) }));
55
- const closestScrollable = triggerElRef && findClosestRenderContainer({ el: triggerElRef.current });
56
- const scrollableRef = closestScrollable === document.body || !closestScrollable
57
- ? undefined
58
- : { current: closestScrollable };
59
89
  return _jsx(Portal, { targetRef: containerRef || scrollableRef, children: content });
60
90
  };
61
91
  export default FlyoutContent;
@@ -93,9 +93,10 @@ const FlyoutRoot = (props) => {
93
93
  const canClose = !isLocked && (isRendered || disabled);
94
94
  if (!canClose)
95
95
  return;
96
- onCloseRef.current?.();
97
- if (options?.closeParents)
98
- parentFlyoutContext?.handleClose?.();
96
+ onCloseRef.current?.({ reason: options.reason });
97
+ if (options?.closeParents) {
98
+ parentFlyoutContext?.handleClose?.({});
99
+ }
99
100
  }, [isRendered, isDismissible, triggerType, onCloseRef, disabled, parentFlyoutContext]);
100
101
  /**
101
102
  * Trigger event handlers
@@ -111,7 +112,7 @@ const FlyoutRoot = (props) => {
111
112
  lockedBlurEffects.current) {
112
113
  return;
113
114
  }
114
- handleClose();
115
+ handleClose({});
115
116
  }, [handleClose]);
116
117
  const handleFocus = React.useCallback(() => {
117
118
  if (triggerType === "hover" && !checkKeyboardMode())
@@ -142,14 +143,14 @@ const FlyoutRoot = (props) => {
142
143
  const handleMouseLeave = React.useCallback(() => {
143
144
  cooldown.cool();
144
145
  clearTimer();
145
- timerRef.current = setTimeout(() => handleClose(), timeouts.mouseLeave);
146
+ timerRef.current = setTimeout(() => handleClose({}), timeouts.mouseLeave);
146
147
  }, [clearTimer, timerRef, handleClose]);
147
148
  const handleTriggerClick = React.useCallback(() => {
148
149
  if (!isRendered) {
149
150
  handleOpen();
150
151
  }
151
152
  else {
152
- handleClose();
153
+ handleClose({});
153
154
  }
154
155
  }, [isRendered, handleOpen, handleClose]);
155
156
  const handleTriggerMouseDown = React.useCallback(() => {
@@ -236,7 +237,7 @@ const FlyoutRoot = (props) => {
236
237
  initialFocusEl: initialFocusRef?.current,
237
238
  includeTrigger: triggerType === "hover" && trapFocusMode !== "dialog" && !isSubmenu,
238
239
  onNavigateOutside: () => {
239
- handleClose();
240
+ handleClose({});
240
241
  },
241
242
  });
242
243
  }, [status, triggerType, trapFocusMode]);
@@ -276,17 +277,17 @@ const FlyoutRoot = (props) => {
276
277
  return () => resizeObserver.disconnect();
277
278
  }, [updatePosition, triggerElRef, isRendered]);
278
279
  React.useEffect(() => {
279
- updatePosition();
280
+ updatePosition({ sync: true });
280
281
  }, [isRTL, updatePosition]);
281
282
  /**
282
283
  * Imperative methods for controlling Flyout
283
284
  */
284
285
  React.useImperativeHandle(instanceRef, () => ({
285
286
  open: handleOpen,
286
- close: handleClose,
287
+ close: () => handleClose({}),
287
288
  updatePosition: () => updatePosition({ sync: true }),
288
289
  }), [handleOpen, handleClose, updatePosition]);
289
- useHotkeys({ Escape: () => handleClose() }, [handleClose]);
290
+ useHotkeys({ Escape: () => handleClose({ reason: "escape-key" }) }, [handleClose]);
290
291
  useOnClickOutside([flyoutElRef, triggerElRef], () => {
291
292
  if (!isRendered)
292
293
  return;
@@ -294,7 +295,7 @@ const FlyoutRoot = (props) => {
294
295
  return;
295
296
  // Clicking outside changes focused element so we don't need to set it back ourselves
296
297
  shouldReturnFocusRef.current = false;
297
- handleClose();
298
+ handleClose({ reason: "outside-click" });
298
299
  }, [isRendered]);
299
300
  return (_jsx(Provider, { value: {
300
301
  id,
@@ -5,15 +5,13 @@ import FlyoutControlled from "./FlyoutControlled.js";
5
5
  const FlyoutUncontrolled = (props) => {
6
6
  const { defaultActive, onClose, onOpen } = props;
7
7
  const [active, setActive] = React.useState(defaultActive || false);
8
- const handleClose = () => {
8
+ const handleClose = (args) => {
9
9
  setActive(false);
10
- if (onClose)
11
- onClose();
10
+ onClose?.(args);
12
11
  };
13
12
  const handleOpen = () => {
14
13
  setActive(true);
15
- if (onOpen)
16
- onOpen();
14
+ onOpen?.();
17
15
  };
18
16
  return (_jsx(FlyoutControlled, { ...props, defaultActive: undefined, active: active, onClose: handleClose, onOpen: handleOpen }));
19
17
  };
@@ -1,3 +1,3 @@
1
1
  export { default } from "./Flyout";
2
2
  export { useFlyoutContext } from "./Flyout.context";
3
- export type { Props as FlyoutProps, Instance as FlyoutInstance, TriggerProps as FlyoutTriggerProps, ContentProps as FlyoutContentProps, } from "./Flyout.types";
3
+ export type { Props as FlyoutProps, Instance as FlyoutInstance, TriggerProps as FlyoutTriggerProps, ContentProps as FlyoutContentProps, CloseReason as FlyoutCloseReason, } from "./Flyout.types";
@@ -1,18 +1,84 @@
1
1
  import React from "react";
2
+ import { StoryObj } from "@storybook/react";
3
+ import { fn } from "@storybook/test";
2
4
  declare const _default: {
3
5
  title: string;
4
6
  };
5
7
  export default _default;
6
- export declare const position: () => React.JSX.Element;
7
- export declare const dynamicPosition: () => React.JSX.Element;
8
- export declare const originCoordinates: () => React.JSX.Element;
9
- export declare const modes: () => React.JSX.Element;
10
- export declare const width: () => React.JSX.Element;
11
- export declare const offset: () => React.JSX.Element;
12
- export declare const disableFlags: () => React.JSX.Element;
13
- export declare const initialFocus: () => React.JSX.Element;
14
- export declare const customPortalTarget: () => React.JSX.Element;
15
- export declare const testInsideFixed: () => React.JSX.Element;
16
- export declare const testDynamicBounds: () => React.JSX.Element;
17
- export declare const testDisableOutsideClick: () => React.JSX.Element;
18
- export declare const testScopedTheming: () => React.JSX.Element;
8
+ export declare const position: {
9
+ name: string;
10
+ render: () => React.JSX.Element;
11
+ };
12
+ export declare const defaultActive: StoryObj<{
13
+ handleOpen: ReturnType<typeof fn>;
14
+ handleClose: ReturnType<typeof fn>;
15
+ }>;
16
+ export declare const active: StoryObj<{
17
+ handleOpen: ReturnType<typeof fn>;
18
+ handleClose: ReturnType<typeof fn>;
19
+ }>;
20
+ export declare const activeFalse: StoryObj<{
21
+ handleOpen: ReturnType<typeof fn>;
22
+ handleClose: ReturnType<typeof fn>;
23
+ }>;
24
+ export declare const modes: {
25
+ name: string;
26
+ render: () => React.JSX.Element;
27
+ };
28
+ export declare const positionFallbacks: {
29
+ name: string;
30
+ render: () => React.JSX.Element;
31
+ };
32
+ export declare const originCoordinates: {
33
+ name: string;
34
+ render: () => React.JSX.Element;
35
+ };
36
+ export declare const width: {
37
+ name: string;
38
+ render: () => React.JSX.Element;
39
+ };
40
+ export declare const contentGap: {
41
+ name: string;
42
+ render: () => React.JSX.Element;
43
+ };
44
+ export declare const contentShift: {
45
+ name: string;
46
+ render: () => React.JSX.Element;
47
+ };
48
+ export declare const disableContentHover: {
49
+ name: string;
50
+ render: () => React.JSX.Element;
51
+ };
52
+ export declare const disableCloseOnOutsideClick: StoryObj;
53
+ export declare const disableHideAnimation: {
54
+ name: string;
55
+ render: () => React.JSX.Element;
56
+ };
57
+ export declare const disabled: StoryObj<{
58
+ handleOpen: ReturnType<typeof fn>;
59
+ }>;
60
+ export declare const containerRef: StoryObj;
61
+ export declare const initialFocusRef: StoryObj;
62
+ export declare const instanceRef: StoryObj<{
63
+ handleOpen: ReturnType<typeof fn>;
64
+ handleClose: ReturnType<typeof fn>;
65
+ }>;
66
+ export declare const contentAttributes: StoryObj;
67
+ export declare const testShadowDom: {
68
+ name: string;
69
+ render: () => React.JSX.Element;
70
+ };
71
+ export declare const testInsideFixed: StoryObj;
72
+ export declare const testInsideSticky: StoryObj;
73
+ export declare const testInsideScrollable: {
74
+ name: string;
75
+ render: () => React.JSX.Element;
76
+ };
77
+ export declare const testDynamicBounds: {
78
+ name: string;
79
+ render: () => React.JSX.Element;
80
+ };
81
+ export declare const testScopedTheming: {
82
+ name: string;
83
+ render: () => React.JSX.Element;
84
+ };