reshaped 3.3.13 → 3.4.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.
- package/CHANGELOG.md +10 -0
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +3 -0
- package/dist/bundle.js +11 -11
- package/dist/components/Autocomplete/Autocomplete.js +34 -24
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
- package/dist/components/Autocomplete/tests/Autocomplete.stories.js +8 -1
- package/dist/components/Carousel/Carousel.js +2 -1
- package/dist/components/Carousel/Carousel.types.d.ts +1 -0
- package/dist/components/ContextMenu/ContextMenu.js +2 -2
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js +6 -1
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +2 -2
- package/dist/components/Popover/Popover.js +1 -1
- package/dist/components/Popover/tests/Popover.test.stories.js +4 -4
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.js +101 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.module.css +1 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.types.d.ts +9 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.types.js +1 -0
- package/dist/components/ProgressIndicator/index.d.ts +2 -0
- package/dist/components/ProgressIndicator/index.js +1 -0
- package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +19 -0
- package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +85 -0
- package/dist/components/Reshaped/Reshaped.js +4 -5
- package/dist/components/TextField/TextField.module.css +1 -1
- package/dist/components/Toast/tests/Toast.stories.js +22 -7
- package/dist/components/Tooltip/tests/Tooltip.test.stories.js +1 -1
- package/dist/components/_private/Flyout/Flyout.module.css +1 -1
- package/dist/components/_private/Flyout/Flyout.types.d.ts +14 -3
- package/dist/components/_private/Flyout/FlyoutContent.js +37 -7
- package/dist/components/_private/Flyout/FlyoutControlled.js +12 -11
- package/dist/components/_private/Flyout/FlyoutUncontrolled.js +3 -5
- package/dist/components/_private/Flyout/index.d.ts +1 -1
- package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +79 -13
- package/dist/components/_private/Flyout/tests/Flyout.stories.js +526 -280
- package/dist/components/_private/Flyout/useFlyout.js +9 -3
- package/dist/components/_private/Flyout/utilities/isFullyVisible.d.ts +3 -1
- package/dist/components/_private/Flyout/utilities/isFullyVisible.js +2 -2
- package/dist/hooks/_private/usePrevious.d.ts +2 -0
- package/dist/hooks/_private/usePrevious.js +17 -0
- package/dist/hooks/_private/useSingletonEnvironment.d.ts +1 -1
- package/dist/hooks/_private/useSingletonEnvironment.js +1 -1
- package/dist/hooks/_private/useSingletonKeyboardMode.d.ts +13 -2
- package/dist/hooks/_private/useSingletonKeyboardMode.js +48 -15
- package/dist/hooks/tests/useKeyboardMode.stories.d.ts +6 -0
- package/dist/hooks/tests/useKeyboardMode.stories.js +37 -0
- package/dist/hooks/useKeyboardMode.d.ts +7 -0
- package/dist/hooks/useKeyboardMode.js +13 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/utilities/a11y/index.d.ts +1 -1
- package/dist/utilities/a11y/index.js +1 -1
- package/dist/utilities/a11y/keyboardMode.d.ts +2 -2
- package/dist/utilities/a11y/keyboardMode.js +2 -2
- package/dist/utilities/dom/find.d.ts +4 -1
- package/dist/utilities/dom/find.js +4 -4
- package/dist/utilities/scroll/lockStandard.js +1 -1
- package/package.json +3 -4
- package/dist/components/_private/Flyout/tests/Flyout.test.stories.d.ts +0 -28
- 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:
|
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: (
|
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?: (
|
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
|
-
|
11
|
-
onClose();
|
10
|
+
onClose?.(args);
|
12
11
|
};
|
13
12
|
const handleOpen = () => {
|
14
13
|
setActive(true);
|
15
|
-
|
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:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
export declare const
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
export declare const
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
export declare const
|
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
|
+
};
|