@yahoo/uds 3.150.1-beta.1 → 3.152.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/dist/components/client/IconButton.cjs +62 -31
- package/dist/components/client/IconButton.d.cts +2 -1
- package/dist/components/client/IconButton.d.ts +2 -1
- package/dist/components/client/IconButton.js +63 -32
- package/dist/components/client/Modal/ManagedModal.cjs +52 -0
- package/dist/components/client/Modal/ManagedModal.d.cts +16 -0
- package/dist/components/client/Modal/ManagedModal.d.ts +17 -0
- package/dist/components/client/Modal/ManagedModal.js +50 -0
- package/dist/components/client/Modal/ModalPortal.cjs +17 -0
- package/dist/components/client/Modal/ModalPortal.d.cts +10 -0
- package/dist/components/client/Modal/ModalPortal.d.ts +11 -0
- package/dist/components/client/Modal/ModalPortal.js +15 -0
- package/dist/components/client/Modal/createModal.cjs +18 -0
- package/dist/components/client/Modal/createModal.d.cts +11 -0
- package/dist/components/client/Modal/createModal.d.ts +12 -0
- package/dist/components/client/Modal/createModal.js +17 -0
- package/dist/components/client/Modal/index.cjs +4 -0
- package/dist/components/client/Modal/index.d.cts +3 -1
- package/dist/components/client/Modal/index.d.ts +3 -1
- package/dist/components/client/Modal/index.js +3 -1
- package/dist/components/client/Modal/modalStore.cjs +254 -0
- package/dist/components/client/Modal/modalStore.d.cts +35 -0
- package/dist/components/client/Modal/modalStore.d.ts +36 -0
- package/dist/components/client/Modal/modalStore.js +248 -0
- package/dist/components/client/index.cjs +4 -0
- package/dist/components/client/index.d.cts +3 -1
- package/dist/components/client/index.d.ts +3 -1
- package/dist/components/client/index.js +3 -1
- package/dist/components/index.cjs +4 -0
- package/dist/components/index.d.cts +3 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +3 -1
- package/dist/css/dist/purger/optimized/purgeFromCode.cjs +3 -5
- package/dist/css/dist/purger/optimized/purgeFromCode.js +3 -5
- package/dist/index.cjs +4 -0
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/styles/styler.d.cts +3 -3
- package/dist/styles/styler.d.ts +3 -3
- package/dist/types/dist/index.d.cts +2 -0
- package/dist/types/dist/index.d.ts +2 -0
- package/dist/uds/generated/componentData.cjs +1807 -1766
- package/dist/uds/generated/componentData.js +1807 -1766
- package/dist/uds/generated/tailwindPurge.cjs +8 -42
- package/dist/uds/generated/tailwindPurge.js +8 -42
- package/generated/componentData.json +2584 -2535
- package/generated/tailwindPurge.ts +3 -3
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
4
4
|
require("../../_virtual/_rolldown/runtime.cjs");
|
|
5
5
|
const require_index = require("../../css-tokens/dist/index.cjs");
|
|
6
6
|
const require_styles_styler = require("../../styles/styler.cjs");
|
|
7
|
+
const require_utils_createSlot = require("../../utils/createSlot.cjs");
|
|
7
8
|
const require_components_Icon = require("../Icon.cjs");
|
|
8
9
|
const require_generateDefaultClassName = require("../../automated-config/dist/utils/generateDefaultClassName.cjs");
|
|
9
10
|
require("./buttonConstants.cjs");
|
|
@@ -44,13 +45,15 @@ const defaultVariantIconClass = require_generateDefaultClassName.generateDefault
|
|
|
44
45
|
* @related [Icon](https://uds.build/docs/components/icon), [Button](https://uds.build/docs/components/button), and [Pressable](https://uds.build/docs/components/pressable)
|
|
45
46
|
*
|
|
46
47
|
**/
|
|
47
|
-
const IconButton = (0, react.forwardRef)(function IconButton({ variant, size, iconVariant, loading, disableEffects, name, slotProps, type = "button", htmlName, className, children, ...rest }, forwardedRef) {
|
|
48
|
+
const IconButton = (0, react.forwardRef)(function IconButton({ variant, size, iconVariant, loading, disableEffects, name, asChild = false, slotProps, type = "button", htmlName, className, children, ...rest }, forwardedRef) {
|
|
48
49
|
const ref = (0, react.useRef)(null);
|
|
49
50
|
(0, react.useImperativeHandle)(forwardedRef, () => ref.current);
|
|
50
51
|
const { className: iconSlotClassName, ...iconSlotProps } = slotProps?.icon ?? {};
|
|
51
52
|
const prefersReducedMotion = (0, motion_react.useReducedMotion)();
|
|
52
53
|
const disableMotion = !!disableEffects || !!rest?.disabled;
|
|
53
54
|
const layoutVariant = (0, react.useMemo)(() => prefersReducedMotion ? "smooth" : "subtle", [prefersReducedMotion]);
|
|
55
|
+
const Slot = (0, react.useMemo)(() => require_utils_createSlot.createSlot(), []);
|
|
56
|
+
const MotionSlot = (0, react.useMemo)(() => motion_react.m.create(Slot), [Slot]);
|
|
54
57
|
const buttonVariants = (0, react.useMemo)(() => ({
|
|
55
58
|
rest: { scale: disableMotion ? 1 : `var(${require_index.BUTTON_SCALE_EFFECT_REST})` },
|
|
56
59
|
hover: { scale: disableMotion ? 1 : `var(${require_index.BUTTON_SCALE_EFFECT_HOVER})` },
|
|
@@ -78,6 +81,63 @@ const IconButton = (0, react.forwardRef)(function IconButton({ variant, size, ic
|
|
|
78
81
|
rootSizeClass,
|
|
79
82
|
rootVariantClass
|
|
80
83
|
]);
|
|
84
|
+
const iconContent = (0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(motion_react.AnimatePresence, {
|
|
85
|
+
initial: false,
|
|
86
|
+
mode: "popLayout",
|
|
87
|
+
children: [loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.m.span, {
|
|
88
|
+
variants: require_components_client_Button.loadingMotionVariants,
|
|
89
|
+
initial: "loading",
|
|
90
|
+
animate: "loading",
|
|
91
|
+
exit: "hide",
|
|
92
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Icon.Icon, {
|
|
93
|
+
size: "sm",
|
|
94
|
+
name: _yahoo_uds_icons.Progress,
|
|
95
|
+
variant: iconVariant,
|
|
96
|
+
color: "current",
|
|
97
|
+
className: styles.loadingIcon
|
|
98
|
+
})
|
|
99
|
+
}, "loading"), name && !loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.m.span, {
|
|
100
|
+
variants: require_components_client_Button.iconMotionVariants,
|
|
101
|
+
initial: "icon",
|
|
102
|
+
animate: "icon",
|
|
103
|
+
exit: "hide",
|
|
104
|
+
children: !asChild && children || /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Icon.Icon, {
|
|
105
|
+
size: "sm",
|
|
106
|
+
name,
|
|
107
|
+
variant: iconVariant,
|
|
108
|
+
color: "current",
|
|
109
|
+
className: require_styles_styler.cx(styles.icon, iconSlotClassName),
|
|
110
|
+
...iconSlotProps
|
|
111
|
+
})
|
|
112
|
+
}, name.name)]
|
|
113
|
+
}), [
|
|
114
|
+
asChild,
|
|
115
|
+
children,
|
|
116
|
+
iconSlotClassName,
|
|
117
|
+
iconSlotProps,
|
|
118
|
+
iconVariant,
|
|
119
|
+
loading,
|
|
120
|
+
name,
|
|
121
|
+
styles
|
|
122
|
+
]);
|
|
123
|
+
if (asChild && (0, react.isValidElement)(children)) {
|
|
124
|
+
const childProps = children.props;
|
|
125
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_SpringMotionConfig.SpringMotionConfig, {
|
|
126
|
+
layoutSpeed: "3",
|
|
127
|
+
layoutVariant,
|
|
128
|
+
reducedMotion: disableEffects ? "always" : "user",
|
|
129
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MotionSlot, {
|
|
130
|
+
type,
|
|
131
|
+
className: styles.root,
|
|
132
|
+
initial: "icon",
|
|
133
|
+
variants: buttonVariants,
|
|
134
|
+
whileHover: "hover",
|
|
135
|
+
whileTap: "pressed",
|
|
136
|
+
...rest,
|
|
137
|
+
children: (0, react.cloneElement)(children, childProps, iconContent)
|
|
138
|
+
})
|
|
139
|
+
});
|
|
140
|
+
}
|
|
81
141
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_SpringMotionConfig.SpringMotionConfig, {
|
|
82
142
|
layoutSpeed: "3",
|
|
83
143
|
layoutVariant,
|
|
@@ -92,36 +152,7 @@ const IconButton = (0, react.forwardRef)(function IconButton({ variant, size, ic
|
|
|
92
152
|
whileHover: "hover",
|
|
93
153
|
whileTap: "pressed",
|
|
94
154
|
...rest,
|
|
95
|
-
children:
|
|
96
|
-
initial: false,
|
|
97
|
-
mode: "popLayout",
|
|
98
|
-
children: [loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.m.span, {
|
|
99
|
-
variants: require_components_client_Button.loadingMotionVariants,
|
|
100
|
-
initial: "loading",
|
|
101
|
-
animate: "loading",
|
|
102
|
-
exit: "hide",
|
|
103
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Icon.Icon, {
|
|
104
|
-
size: "sm",
|
|
105
|
-
name: _yahoo_uds_icons.Progress,
|
|
106
|
-
variant: iconVariant,
|
|
107
|
-
color: "current",
|
|
108
|
-
className: styles.loadingIcon
|
|
109
|
-
})
|
|
110
|
-
}, "loading"), name && !loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.m.span, {
|
|
111
|
-
variants: require_components_client_Button.iconMotionVariants,
|
|
112
|
-
initial: "icon",
|
|
113
|
-
animate: "icon",
|
|
114
|
-
exit: "hide",
|
|
115
|
-
children: children || /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Icon.Icon, {
|
|
116
|
-
size: "sm",
|
|
117
|
-
name,
|
|
118
|
-
variant: iconVariant,
|
|
119
|
-
color: "current",
|
|
120
|
-
className: require_styles_styler.cx(styles.icon, iconSlotClassName),
|
|
121
|
-
...iconSlotProps
|
|
122
|
-
})
|
|
123
|
-
}, name.name)]
|
|
124
|
-
})
|
|
155
|
+
children: iconContent
|
|
125
156
|
})
|
|
126
157
|
});
|
|
127
158
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { IconPropsWithSVGProps, UniversalIconButtonProps } from "../../tokens/types.cjs";
|
|
3
3
|
import * as _$react from "react";
|
|
4
|
+
import { ForwardRefExoticComponent } from "react";
|
|
4
5
|
import { HTMLMotionProps } from "motion/react";
|
|
5
6
|
|
|
6
7
|
//#region src/components/client/IconButton.d.ts
|
|
@@ -40,6 +41,6 @@ interface IconButtonProps extends HtmlButtonProps, UniversalIconButtonProps {
|
|
|
40
41
|
* @related [Icon](https://uds.build/docs/components/icon), [Button](https://uds.build/docs/components/button), and [Pressable](https://uds.build/docs/components/pressable)
|
|
41
42
|
*
|
|
42
43
|
**/
|
|
43
|
-
declare const IconButton:
|
|
44
|
+
declare const IconButton: ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & _$react.RefAttributes<HTMLButtonElement>>;
|
|
44
45
|
//#endregion
|
|
45
46
|
export { IconButton, type IconButtonProps };
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
import { IconPropsWithSVGProps, UniversalIconButtonProps } from "../../tokens/types.js";
|
|
4
4
|
import * as _$react from "react";
|
|
5
|
+
import { ForwardRefExoticComponent } from "react";
|
|
5
6
|
import { HTMLMotionProps } from "motion/react";
|
|
6
7
|
|
|
7
8
|
//#region src/components/client/IconButton.d.ts
|
|
@@ -41,6 +42,6 @@ interface IconButtonProps extends HtmlButtonProps, UniversalIconButtonProps {
|
|
|
41
42
|
* @related [Icon](https://uds.build/docs/components/icon), [Button](https://uds.build/docs/components/button), and [Pressable](https://uds.build/docs/components/pressable)
|
|
42
43
|
*
|
|
43
44
|
**/
|
|
44
|
-
declare const IconButton:
|
|
45
|
+
declare const IconButton: ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & _$react.RefAttributes<HTMLButtonElement>>;
|
|
45
46
|
//#endregion
|
|
46
47
|
export { IconButton, type IconButtonProps };
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
import { BUTTON_SCALE_EFFECT_HOVER, BUTTON_SCALE_EFFECT_PRESSED, BUTTON_SCALE_EFFECT_REST } from "../../css-tokens/dist/index.js";
|
|
4
4
|
import { cx, getStyles } from "../../styles/styler.js";
|
|
5
|
+
import { createSlot } from "../../utils/createSlot.js";
|
|
5
6
|
import { Icon } from "../Icon.js";
|
|
6
7
|
import { generateDefaultClassName } from "../../automated-config/dist/utils/generateDefaultClassName.js";
|
|
7
8
|
import "./buttonConstants.js";
|
|
8
9
|
import { SpringMotionConfig } from "./SpringMotionConfig.js";
|
|
9
10
|
import { iconMotionVariants, loadingMotionVariants } from "./Button.js";
|
|
10
11
|
import { Progress } from "@yahoo/uds-icons";
|
|
11
|
-
import { forwardRef, useImperativeHandle, useMemo, useRef } from "react";
|
|
12
|
+
import { cloneElement, forwardRef, isValidElement, useImperativeHandle, useMemo, useRef } from "react";
|
|
12
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
14
|
import { AnimatePresence, m, useReducedMotion } from "motion/react";
|
|
14
15
|
//#region src/components/client/IconButton.tsx
|
|
@@ -42,13 +43,15 @@ const defaultVariantIconClass = generateDefaultClassName("button", "variant", "i
|
|
|
42
43
|
* @related [Icon](https://uds.build/docs/components/icon), [Button](https://uds.build/docs/components/button), and [Pressable](https://uds.build/docs/components/pressable)
|
|
43
44
|
*
|
|
44
45
|
**/
|
|
45
|
-
const IconButton = forwardRef(function IconButton({ variant, size, iconVariant, loading, disableEffects, name, slotProps, type = "button", htmlName, className, children, ...rest }, forwardedRef) {
|
|
46
|
+
const IconButton = forwardRef(function IconButton({ variant, size, iconVariant, loading, disableEffects, name, asChild = false, slotProps, type = "button", htmlName, className, children, ...rest }, forwardedRef) {
|
|
46
47
|
const ref = useRef(null);
|
|
47
48
|
useImperativeHandle(forwardedRef, () => ref.current);
|
|
48
49
|
const { className: iconSlotClassName, ...iconSlotProps } = slotProps?.icon ?? {};
|
|
49
50
|
const prefersReducedMotion = useReducedMotion();
|
|
50
51
|
const disableMotion = !!disableEffects || !!rest?.disabled;
|
|
51
52
|
const layoutVariant = useMemo(() => prefersReducedMotion ? "smooth" : "subtle", [prefersReducedMotion]);
|
|
53
|
+
const Slot = useMemo(() => createSlot(), []);
|
|
54
|
+
const MotionSlot = useMemo(() => m.create(Slot), [Slot]);
|
|
52
55
|
const buttonVariants = useMemo(() => ({
|
|
53
56
|
rest: { scale: disableMotion ? 1 : `var(${BUTTON_SCALE_EFFECT_REST})` },
|
|
54
57
|
hover: { scale: disableMotion ? 1 : `var(${BUTTON_SCALE_EFFECT_HOVER})` },
|
|
@@ -76,6 +79,63 @@ const IconButton = forwardRef(function IconButton({ variant, size, iconVariant,
|
|
|
76
79
|
rootSizeClass,
|
|
77
80
|
rootVariantClass
|
|
78
81
|
]);
|
|
82
|
+
const iconContent = useMemo(() => /* @__PURE__ */ jsxs(AnimatePresence, {
|
|
83
|
+
initial: false,
|
|
84
|
+
mode: "popLayout",
|
|
85
|
+
children: [loading && /* @__PURE__ */ jsx(m.span, {
|
|
86
|
+
variants: loadingMotionVariants,
|
|
87
|
+
initial: "loading",
|
|
88
|
+
animate: "loading",
|
|
89
|
+
exit: "hide",
|
|
90
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
91
|
+
size: "sm",
|
|
92
|
+
name: Progress,
|
|
93
|
+
variant: iconVariant,
|
|
94
|
+
color: "current",
|
|
95
|
+
className: styles.loadingIcon
|
|
96
|
+
})
|
|
97
|
+
}, "loading"), name && !loading && /* @__PURE__ */ jsx(m.span, {
|
|
98
|
+
variants: iconMotionVariants,
|
|
99
|
+
initial: "icon",
|
|
100
|
+
animate: "icon",
|
|
101
|
+
exit: "hide",
|
|
102
|
+
children: !asChild && children || /* @__PURE__ */ jsx(Icon, {
|
|
103
|
+
size: "sm",
|
|
104
|
+
name,
|
|
105
|
+
variant: iconVariant,
|
|
106
|
+
color: "current",
|
|
107
|
+
className: cx(styles.icon, iconSlotClassName),
|
|
108
|
+
...iconSlotProps
|
|
109
|
+
})
|
|
110
|
+
}, name.name)]
|
|
111
|
+
}), [
|
|
112
|
+
asChild,
|
|
113
|
+
children,
|
|
114
|
+
iconSlotClassName,
|
|
115
|
+
iconSlotProps,
|
|
116
|
+
iconVariant,
|
|
117
|
+
loading,
|
|
118
|
+
name,
|
|
119
|
+
styles
|
|
120
|
+
]);
|
|
121
|
+
if (asChild && isValidElement(children)) {
|
|
122
|
+
const childProps = children.props;
|
|
123
|
+
return /* @__PURE__ */ jsx(SpringMotionConfig, {
|
|
124
|
+
layoutSpeed: "3",
|
|
125
|
+
layoutVariant,
|
|
126
|
+
reducedMotion: disableEffects ? "always" : "user",
|
|
127
|
+
children: /* @__PURE__ */ jsx(MotionSlot, {
|
|
128
|
+
type,
|
|
129
|
+
className: styles.root,
|
|
130
|
+
initial: "icon",
|
|
131
|
+
variants: buttonVariants,
|
|
132
|
+
whileHover: "hover",
|
|
133
|
+
whileTap: "pressed",
|
|
134
|
+
...rest,
|
|
135
|
+
children: cloneElement(children, childProps, iconContent)
|
|
136
|
+
})
|
|
137
|
+
});
|
|
138
|
+
}
|
|
79
139
|
return /* @__PURE__ */ jsx(SpringMotionConfig, {
|
|
80
140
|
layoutSpeed: "3",
|
|
81
141
|
layoutVariant,
|
|
@@ -90,36 +150,7 @@ const IconButton = forwardRef(function IconButton({ variant, size, iconVariant,
|
|
|
90
150
|
whileHover: "hover",
|
|
91
151
|
whileTap: "pressed",
|
|
92
152
|
...rest,
|
|
93
|
-
children:
|
|
94
|
-
initial: false,
|
|
95
|
-
mode: "popLayout",
|
|
96
|
-
children: [loading && /* @__PURE__ */ jsx(m.span, {
|
|
97
|
-
variants: loadingMotionVariants,
|
|
98
|
-
initial: "loading",
|
|
99
|
-
animate: "loading",
|
|
100
|
-
exit: "hide",
|
|
101
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
102
|
-
size: "sm",
|
|
103
|
-
name: Progress,
|
|
104
|
-
variant: iconVariant,
|
|
105
|
-
color: "current",
|
|
106
|
-
className: styles.loadingIcon
|
|
107
|
-
})
|
|
108
|
-
}, "loading"), name && !loading && /* @__PURE__ */ jsx(m.span, {
|
|
109
|
-
variants: iconMotionVariants,
|
|
110
|
-
initial: "icon",
|
|
111
|
-
animate: "icon",
|
|
112
|
-
exit: "hide",
|
|
113
|
-
children: children || /* @__PURE__ */ jsx(Icon, {
|
|
114
|
-
size: "sm",
|
|
115
|
-
name,
|
|
116
|
-
variant: iconVariant,
|
|
117
|
-
color: "current",
|
|
118
|
-
className: cx(styles.icon, iconSlotClassName),
|
|
119
|
-
...iconSlotProps
|
|
120
|
-
})
|
|
121
|
-
}, name.name)]
|
|
122
|
-
})
|
|
153
|
+
children: iconContent
|
|
123
154
|
})
|
|
124
155
|
});
|
|
125
156
|
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
require("../../../_virtual/_rolldown/runtime.cjs");
|
|
5
|
+
const require_components_client_Modal_modalStore = require("./modalStore.cjs");
|
|
6
|
+
const require_components_client_Modal_UDSModalConfigProvider = require("./UDSModalConfigProvider.cjs");
|
|
7
|
+
const require_components_client_Modal_ModalActions = require("./ModalActions.cjs");
|
|
8
|
+
const require_components_client_Modal_ModalContent = require("./ModalContent.cjs");
|
|
9
|
+
const require_components_client_Modal_ModalDescription = require("./ModalDescription.cjs");
|
|
10
|
+
const require_components_client_Modal_ModalTitle = require("./ModalTitle.cjs");
|
|
11
|
+
const require_components_client_Modal_Modal = require("./Modal.cjs");
|
|
12
|
+
let react = require("react");
|
|
13
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
14
|
+
let motion_react = require("motion/react");
|
|
15
|
+
//#region src/components/client/Modal/ManagedModal.tsx
|
|
16
|
+
const ManagedModal = ({ slot }) => {
|
|
17
|
+
const { animationDuration } = require_components_client_Modal_UDSModalConfigProvider.useModalConfig();
|
|
18
|
+
const durationOut = typeof animationDuration === "number" ? animationDuration : animationDuration.out;
|
|
19
|
+
const exitDuration = (0, motion_react.useReducedMotion)() || slot.props.reduceMotion ? 0 : durationOut;
|
|
20
|
+
(0, react.useEffect)(() => {
|
|
21
|
+
if (!slot.closing) return;
|
|
22
|
+
const ownerId = slot.ownerId;
|
|
23
|
+
const timer = window.setTimeout(() => require_components_client_Modal_modalStore.removeModalEntry(ownerId), exitDuration);
|
|
24
|
+
return () => window.clearTimeout(timer);
|
|
25
|
+
}, [
|
|
26
|
+
slot.closing,
|
|
27
|
+
slot.ownerId,
|
|
28
|
+
exitDuration
|
|
29
|
+
]);
|
|
30
|
+
const { onClose, title, description, content, actions, ...modalProps } = slot.props;
|
|
31
|
+
const { actionStartContent } = slot.options;
|
|
32
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_components_client_Modal_Modal.Modal, {
|
|
33
|
+
...modalProps,
|
|
34
|
+
open: slot.open,
|
|
35
|
+
onClose: (event) => {
|
|
36
|
+
onClose?.(event);
|
|
37
|
+
require_components_client_Modal_modalStore.closeModalEntry(slot.ownerId);
|
|
38
|
+
},
|
|
39
|
+
children: [
|
|
40
|
+
title != null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_Modal_ModalTitle.ModalTitle, { children: title }) : null,
|
|
41
|
+
description != null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_Modal_ModalDescription.ModalDescription, { children: description }) : null,
|
|
42
|
+
content != null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_Modal_ModalContent.ModalContent, { children: content }) : null,
|
|
43
|
+
actions != null || actionStartContent != null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_Modal_ModalActions.ModalActions, {
|
|
44
|
+
startContent: actionStartContent,
|
|
45
|
+
children: actions
|
|
46
|
+
}) : null
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
ManagedModal.displayName = "ManagedModal";
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.ManagedModal = ManagedModal;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
import { ModalSlotState } from "./modalStore.cjs";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/client/Modal/ManagedModal.d.ts
|
|
6
|
+
interface ManagedModalProps {
|
|
7
|
+
slot: ModalSlotState;
|
|
8
|
+
}
|
|
9
|
+
declare const ManagedModal: {
|
|
10
|
+
({
|
|
11
|
+
slot
|
|
12
|
+
}: ManagedModalProps): _$react_jsx_runtime0.JSX.Element;
|
|
13
|
+
displayName: string;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ManagedModal };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";
|
|
3
|
+
import { ModalSlotState } from "./modalStore.js";
|
|
4
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/components/client/Modal/ManagedModal.d.ts
|
|
7
|
+
interface ManagedModalProps {
|
|
8
|
+
slot: ModalSlotState;
|
|
9
|
+
}
|
|
10
|
+
declare const ManagedModal: {
|
|
11
|
+
({
|
|
12
|
+
slot
|
|
13
|
+
}: ManagedModalProps): _$react_jsx_runtime0.JSX.Element;
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ManagedModal };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
+
"use client";
|
|
3
|
+
import { closeModalEntry, removeModalEntry } from "./modalStore.js";
|
|
4
|
+
import { useModalConfig } from "./UDSModalConfigProvider.js";
|
|
5
|
+
import { ModalActions } from "./ModalActions.js";
|
|
6
|
+
import { ModalContent } from "./ModalContent.js";
|
|
7
|
+
import { ModalDescription } from "./ModalDescription.js";
|
|
8
|
+
import { ModalTitle } from "./ModalTitle.js";
|
|
9
|
+
import { Modal } from "./Modal.js";
|
|
10
|
+
import { useEffect } from "react";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
import { useReducedMotion } from "motion/react";
|
|
13
|
+
//#region src/components/client/Modal/ManagedModal.tsx
|
|
14
|
+
const ManagedModal = ({ slot }) => {
|
|
15
|
+
const { animationDuration } = useModalConfig();
|
|
16
|
+
const durationOut = typeof animationDuration === "number" ? animationDuration : animationDuration.out;
|
|
17
|
+
const exitDuration = useReducedMotion() || slot.props.reduceMotion ? 0 : durationOut;
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!slot.closing) return;
|
|
20
|
+
const ownerId = slot.ownerId;
|
|
21
|
+
const timer = window.setTimeout(() => removeModalEntry(ownerId), exitDuration);
|
|
22
|
+
return () => window.clearTimeout(timer);
|
|
23
|
+
}, [
|
|
24
|
+
slot.closing,
|
|
25
|
+
slot.ownerId,
|
|
26
|
+
exitDuration
|
|
27
|
+
]);
|
|
28
|
+
const { onClose, title, description, content, actions, ...modalProps } = slot.props;
|
|
29
|
+
const { actionStartContent } = slot.options;
|
|
30
|
+
return /* @__PURE__ */ jsxs(Modal, {
|
|
31
|
+
...modalProps,
|
|
32
|
+
open: slot.open,
|
|
33
|
+
onClose: (event) => {
|
|
34
|
+
onClose?.(event);
|
|
35
|
+
closeModalEntry(slot.ownerId);
|
|
36
|
+
},
|
|
37
|
+
children: [
|
|
38
|
+
title != null ? /* @__PURE__ */ jsx(ModalTitle, { children: title }) : null,
|
|
39
|
+
description != null ? /* @__PURE__ */ jsx(ModalDescription, { children: description }) : null,
|
|
40
|
+
content != null ? /* @__PURE__ */ jsx(ModalContent, { children: content }) : null,
|
|
41
|
+
actions != null || actionStartContent != null ? /* @__PURE__ */ jsx(ModalActions, {
|
|
42
|
+
startContent: actionStartContent,
|
|
43
|
+
children: actions
|
|
44
|
+
}) : null
|
|
45
|
+
]
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
ManagedModal.displayName = "ManagedModal";
|
|
49
|
+
//#endregion
|
|
50
|
+
export { ManagedModal };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
require("../../../_virtual/_rolldown/runtime.cjs");
|
|
5
|
+
const require_components_client_Modal_modalStore = require("./modalStore.cjs");
|
|
6
|
+
const require_components_client_Modal_ManagedModal = require("./ManagedModal.cjs");
|
|
7
|
+
let react = require("react");
|
|
8
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
//#region src/components/client/Modal/ModalPortal.tsx
|
|
10
|
+
const ModalPortal = () => {
|
|
11
|
+
const slot = (0, react.useSyncExternalStore)(require_components_client_Modal_modalStore.subscribe, require_components_client_Modal_modalStore.getSnapshot, require_components_client_Modal_modalStore.getSnapshot);
|
|
12
|
+
if (!slot) return null;
|
|
13
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_client_Modal_ManagedModal.ManagedModal, { slot }, slot.slotId);
|
|
14
|
+
};
|
|
15
|
+
ModalPortal.displayName = "ModalPortal";
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.ModalPortal = ModalPortal;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/client/Modal/ModalPortal.d.ts
|
|
5
|
+
declare const ModalPortal: {
|
|
6
|
+
(): _$react_jsx_runtime0.JSX.Element | null;
|
|
7
|
+
displayName: string;
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ModalPortal };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/client/Modal/ModalPortal.d.ts
|
|
6
|
+
declare const ModalPortal: {
|
|
7
|
+
(): _$react_jsx_runtime0.JSX.Element | null;
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { ModalPortal };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
+
"use client";
|
|
3
|
+
import { getSnapshot, subscribe } from "./modalStore.js";
|
|
4
|
+
import { ManagedModal } from "./ManagedModal.js";
|
|
5
|
+
import { useSyncExternalStore } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/client/Modal/ModalPortal.tsx
|
|
8
|
+
const ModalPortal = () => {
|
|
9
|
+
const slot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
10
|
+
if (!slot) return null;
|
|
11
|
+
return /* @__PURE__ */ jsx(ManagedModal, { slot }, slot.slotId);
|
|
12
|
+
};
|
|
13
|
+
ModalPortal.displayName = "ModalPortal";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { ModalPortal };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
const require_components_client_Modal_modalStore = require("./modalStore.cjs");
|
|
5
|
+
//#region src/components/client/Modal/createModal.tsx
|
|
6
|
+
function createModal(args) {
|
|
7
|
+
const id = require_components_client_Modal_modalStore.addModalEntry(args);
|
|
8
|
+
return {
|
|
9
|
+
update(next) {
|
|
10
|
+
require_components_client_Modal_modalStore.updateModalEntry(id, next);
|
|
11
|
+
},
|
|
12
|
+
close() {
|
|
13
|
+
require_components_client_Modal_modalStore.closeModalEntry(id);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.createModal = createModal;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
import { CreateModalArgs } from "./modalStore.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/components/client/Modal/createModal.d.ts
|
|
5
|
+
interface ModalAPI {
|
|
6
|
+
update(args: Partial<CreateModalArgs>): void;
|
|
7
|
+
close(): void;
|
|
8
|
+
}
|
|
9
|
+
declare function createModal(args: CreateModalArgs): ModalAPI;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { type ModalAPI, createModal };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";
|
|
3
|
+
import { CreateModalArgs } from "./modalStore.js";
|
|
4
|
+
|
|
5
|
+
//#region src/components/client/Modal/createModal.d.ts
|
|
6
|
+
interface ModalAPI {
|
|
7
|
+
update(args: Partial<CreateModalArgs>): void;
|
|
8
|
+
close(): void;
|
|
9
|
+
}
|
|
10
|
+
declare function createModal(args: CreateModalArgs): ModalAPI;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { type ModalAPI, createModal };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
+
"use client";
|
|
3
|
+
import { addModalEntry, closeModalEntry, updateModalEntry } from "./modalStore.js";
|
|
4
|
+
//#region src/components/client/Modal/createModal.tsx
|
|
5
|
+
function createModal(args) {
|
|
6
|
+
const id = addModalEntry(args);
|
|
7
|
+
return {
|
|
8
|
+
update(next) {
|
|
9
|
+
updateModalEntry(id, next);
|
|
10
|
+
},
|
|
11
|
+
close() {
|
|
12
|
+
closeModalEntry(id);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { createModal };
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
2
|
"use client";
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
const require_components_client_Modal_createModal = require("./createModal.cjs");
|
|
4
5
|
const require_components_client_Modal_UDSModalConfigProvider = require("./UDSModalConfigProvider.cjs");
|
|
5
6
|
const require_components_client_Modal_ModalActions = require("./ModalActions.cjs");
|
|
6
7
|
const require_components_client_Modal_ModalContent = require("./ModalContent.cjs");
|
|
7
8
|
const require_components_client_Modal_ModalDescription = require("./ModalDescription.cjs");
|
|
8
9
|
const require_components_client_Modal_ModalTitle = require("./ModalTitle.cjs");
|
|
9
10
|
const require_components_client_Modal_Modal = require("./Modal.cjs");
|
|
11
|
+
const require_components_client_Modal_ModalPortal = require("./ModalPortal.cjs");
|
|
10
12
|
exports.Modal = require_components_client_Modal_Modal.Modal;
|
|
11
13
|
exports.ModalActions = require_components_client_Modal_ModalActions.ModalActions;
|
|
12
14
|
exports.ModalContent = require_components_client_Modal_ModalContent.ModalContent;
|
|
13
15
|
exports.ModalDescription = require_components_client_Modal_ModalDescription.ModalDescription;
|
|
16
|
+
exports.ModalPortal = require_components_client_Modal_ModalPortal.ModalPortal;
|
|
14
17
|
exports.ModalTitle = require_components_client_Modal_ModalTitle.ModalTitle;
|
|
15
18
|
exports.UDSModalConfigProvider = require_components_client_Modal_UDSModalConfigProvider.UDSModalConfigProvider;
|
|
19
|
+
exports.createModal = require_components_client_Modal_createModal.createModal;
|
|
16
20
|
exports.useModalConfig = require_components_client_Modal_UDSModalConfigProvider.useModalConfig;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
|
|
2
|
+
import { ModalAPI, createModal } from "./createModal.cjs";
|
|
2
3
|
import { ModalActions, ModalActionsProps } from "./ModalActions.cjs";
|
|
3
4
|
import { ModalContent, ModalContentProps } from "./ModalContent.cjs";
|
|
4
5
|
import { ModalDescription, ModalDescriptionProps } from "./ModalDescription.cjs";
|
|
6
|
+
import { ModalPortal } from "./ModalPortal.cjs";
|
|
5
7
|
import { ModalTitle, ModalTitleProps } from "./ModalTitle.cjs";
|
|
6
8
|
import { UDSModalConfigProvider, UDSModalConfigProviderProps, useModalConfig } from "./UDSModalConfigProvider.cjs";
|
|
7
9
|
import { Modal, ModalProps } from "./Modal.cjs";
|
|
8
|
-
export { Modal, ModalActions, type ModalActionsProps, ModalContent, type ModalContentProps, ModalDescription, type ModalDescriptionProps, type ModalProps, ModalTitle, type ModalTitleProps, UDSModalConfigProvider, type UDSModalConfigProviderProps, useModalConfig };
|
|
10
|
+
export { Modal, type ModalAPI, ModalActions, type ModalActionsProps, ModalContent, type ModalContentProps, ModalDescription, type ModalDescriptionProps, ModalPortal, type ModalProps, ModalTitle, type ModalTitleProps, UDSModalConfigProvider, type UDSModalConfigProviderProps, createModal, useModalConfig };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
"use client";
|
|
3
|
+
import { ModalAPI, createModal } from "./createModal.js";
|
|
3
4
|
import { ModalActions, ModalActionsProps } from "./ModalActions.js";
|
|
4
5
|
import { ModalContent, ModalContentProps } from "./ModalContent.js";
|
|
5
6
|
import { ModalDescription, ModalDescriptionProps } from "./ModalDescription.js";
|
|
7
|
+
import { ModalPortal } from "./ModalPortal.js";
|
|
6
8
|
import { ModalTitle, ModalTitleProps } from "./ModalTitle.js";
|
|
7
9
|
import { UDSModalConfigProvider, UDSModalConfigProviderProps, useModalConfig } from "./UDSModalConfigProvider.js";
|
|
8
10
|
import { Modal, ModalProps } from "./Modal.js";
|
|
9
|
-
export { Modal, ModalActions, type ModalActionsProps, ModalContent, type ModalContentProps, ModalDescription, type ModalDescriptionProps, type ModalProps, ModalTitle, type ModalTitleProps, UDSModalConfigProvider, type UDSModalConfigProviderProps, useModalConfig };
|
|
11
|
+
export { Modal, type ModalAPI, ModalActions, type ModalActionsProps, ModalContent, type ModalContentProps, ModalDescription, type ModalDescriptionProps, ModalPortal, type ModalProps, ModalTitle, type ModalTitleProps, UDSModalConfigProvider, type UDSModalConfigProviderProps, createModal, useModalConfig };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
2
|
"use client";
|
|
3
|
+
import { createModal } from "./createModal.js";
|
|
3
4
|
import { UDSModalConfigProvider, useModalConfig } from "./UDSModalConfigProvider.js";
|
|
4
5
|
import { ModalActions } from "./ModalActions.js";
|
|
5
6
|
import { ModalContent } from "./ModalContent.js";
|
|
6
7
|
import { ModalDescription } from "./ModalDescription.js";
|
|
7
8
|
import { ModalTitle } from "./ModalTitle.js";
|
|
8
9
|
import { Modal } from "./Modal.js";
|
|
9
|
-
|
|
10
|
+
import { ModalPortal } from "./ModalPortal.js";
|
|
11
|
+
export { Modal, ModalActions, ModalContent, ModalDescription, ModalPortal, ModalTitle, UDSModalConfigProvider, createModal, useModalConfig };
|