@vritti/quantum-ui 0.2.5 → 0.2.7

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 (71) hide show
  1. package/dist/Button2.js +2 -1
  2. package/dist/Button2.js.map +1 -1
  3. package/dist/Checkbox.js +3 -5
  4. package/dist/Checkbox.js.map +1 -1
  5. package/dist/DatePicker.js +416 -139
  6. package/dist/DatePicker.js.map +1 -1
  7. package/dist/Form.js.map +1 -1
  8. package/dist/Label.js +1 -1
  9. package/dist/Label.js.map +1 -1
  10. package/dist/OTPField.js +1 -1
  11. package/dist/OTPField.js.map +1 -1
  12. package/dist/PasswordField.js +3 -16
  13. package/dist/PasswordField.js.map +1 -1
  14. package/dist/PhoneField.js +23 -7
  15. package/dist/PhoneField.js.map +1 -1
  16. package/dist/Sonner.js +1249 -0
  17. package/dist/Sonner.js.map +1 -0
  18. package/dist/Spinner.js +1 -12
  19. package/dist/Spinner.js.map +1 -1
  20. package/dist/ThemeToggle.js +2 -2
  21. package/dist/ThemeToggle.js.map +1 -1
  22. package/dist/assets/quantum-ui.css +41 -10
  23. package/dist/axios.js +186 -59
  24. package/dist/axios.js.map +1 -1
  25. package/dist/circle-check-big.js +18 -0
  26. package/dist/circle-check-big.js.map +1 -0
  27. package/dist/components/Progress.js +61 -2
  28. package/dist/components/Progress.js.map +1 -1
  29. package/dist/components/Sonner.js +3 -0
  30. package/dist/components/Sonner.js.map +1 -0
  31. package/dist/createLucideIcon.js +4 -4
  32. package/dist/createLucideIcon.js.map +1 -1
  33. package/dist/field.js +2 -36
  34. package/dist/field.js.map +1 -1
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/index2.js +130 -54
  38. package/dist/index2.js.map +1 -1
  39. package/dist/index3.js +1 -103
  40. package/dist/index3.js.map +1 -1
  41. package/dist/index4.js +36 -35
  42. package/dist/index4.js.map +1 -1
  43. package/dist/index5.js +303 -3
  44. package/dist/index5.js.map +1 -1
  45. package/dist/lib/components/Sonner/Sonner.d.ts +5 -0
  46. package/dist/lib/components/Sonner/Sonner.d.ts.map +1 -0
  47. package/dist/lib/components/Sonner/index.d.ts +4 -0
  48. package/dist/lib/components/Sonner/index.d.ts.map +1 -0
  49. package/dist/lib/components/Sonner/toast.d.ts +29 -0
  50. package/dist/lib/components/Sonner/toast.d.ts.map +1 -0
  51. package/dist/lib/components/index.d.ts +1 -0
  52. package/dist/lib/components/index.d.ts.map +1 -1
  53. package/dist/lib/utils/axios.d.ts +5 -0
  54. package/dist/lib/utils/axios.d.ts.map +1 -1
  55. package/dist/loader-circle.js +15 -0
  56. package/dist/loader-circle.js.map +1 -0
  57. package/dist/shadcn/index.d.ts +1 -0
  58. package/dist/shadcn/index.d.ts.map +1 -1
  59. package/dist/shadcn/shadcnSonner/index.d.ts +2 -0
  60. package/dist/shadcn/shadcnSonner/index.d.ts.map +1 -0
  61. package/dist/shadcn/shadcnSonner/sonner.d.ts +4 -0
  62. package/dist/shadcn/shadcnSonner/sonner.d.ts.map +1 -0
  63. package/dist/toast.js +72 -0
  64. package/dist/toast.js.map +1 -0
  65. package/dist/utils/axios.js +1 -0
  66. package/dist/utils/axios.js.map +1 -1
  67. package/dist/utils.js +229 -150
  68. package/dist/utils.js.map +1 -1
  69. package/package.json +38 -32
  70. package/dist/index6.js +0 -246
  71. package/dist/index6.js.map +0 -1
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.2.5",
8
+ "version": "0.2.7",
9
9
  "type": "module",
10
10
  "sideEffects": false,
11
11
  "repository": {
@@ -92,6 +92,10 @@
92
92
  "types": "./dist/lib/components/Skeleton/index.d.ts",
93
93
  "import": "./dist/components/Skeleton.js"
94
94
  },
95
+ "./Sonner": {
96
+ "types": "./dist/lib/components/Sonner/index.d.ts",
97
+ "import": "./dist/components/Sonner.js"
98
+ },
95
99
  "./Spinner": {
96
100
  "types": "./dist/lib/components/Spinner/index.d.ts",
97
101
  "import": "./dist/components/Spinner.js"
@@ -121,51 +125,53 @@
121
125
  }
122
126
  },
123
127
  "devDependencies": {
124
- "@biomejs/biome": "2.2.3",
125
- "@storybook/addon-docs": "10.1.11",
126
- "@storybook/addon-themes": "^10.1.11",
127
- "@storybook/react-vite": "10.1.11",
128
- "@tailwindcss/postcss": "^4.1.13",
129
- "@tanstack/react-query": "^5.90.17",
130
- "@types/node": "^22.18.1",
131
- "@types/react": "^19.1.2",
132
- "@types/react-dom": "^19.1.2",
133
- "@vitejs/plugin-react": "^4.4.1",
128
+ "@biomejs/biome": "2.3.11",
129
+ "@storybook/addon-docs": "10.2.0",
130
+ "@storybook/addon-themes": "10.2.0",
131
+ "@storybook/react": "10.2.0",
132
+ "@storybook/react-vite": "10.2.0",
133
+ "@tailwindcss/postcss": "^4.1.18",
134
+ "@tanstack/react-query": "^5.90.19",
135
+ "@types/node": "^25.0.9",
136
+ "@types/react": "^19.2.9",
137
+ "@types/react-dom": "^19.2.3",
138
+ "@vitejs/plugin-react": "^5.1.2",
134
139
  "ajv": "^8.17.1",
135
- "glob": "^11.0.2",
136
- "react": "19.2.1",
137
- "react-dom": "19.2.1",
138
- "react-router-dom": "^7.9.4",
139
- "storybook": "10.1.11",
140
- "tailwindcss": "^4.1.17",
141
- "tw-animate-css": "^1.3.8",
142
- "typescript": "~5.8.3",
143
- "vite": "^7.1.6",
140
+ "glob": "^13.0.0",
141
+ "react": "19.2.3",
142
+ "react-dom": "19.2.3",
143
+ "react-router-dom": "^7.12.0",
144
+ "storybook": "10.2.0",
145
+ "tailwindcss": "^4.1.18",
146
+ "tw-animate-css": "^1.4.0",
147
+ "typescript": "~5.9.3",
148
+ "vite": "^7.3.1",
144
149
  "vite-plugin-dts": "^4.5.4"
145
150
  },
146
151
  "dependencies": {
147
152
  "@hookform/resolvers": "^5.2.2",
148
153
  "@radix-ui/react-checkbox": "^1.3.3",
149
154
  "@radix-ui/react-dialog": "^1.1.15",
150
- "@radix-ui/react-dropdown-menu": "^2.1.15",
151
- "@radix-ui/react-label": "^2.1.7",
155
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
156
+ "@radix-ui/react-label": "^2.1.8",
152
157
  "@radix-ui/react-popover": "^1.1.15",
153
- "@radix-ui/react-progress": "^1.1.7",
158
+ "@radix-ui/react-progress": "^1.1.8",
154
159
  "@radix-ui/react-select": "^2.2.6",
155
160
  "@radix-ui/react-separator": "^1.1.8",
156
- "@radix-ui/react-slot": "^1.2.3",
157
- "@radix-ui/react-tooltip": "^1.1.15",
158
- "@tailwindcss/vite": "^4.1.17",
159
- "axios": "^1.12.2",
161
+ "@radix-ui/react-slot": "^1.2.4",
162
+ "@radix-ui/react-tooltip": "^1.2.8",
163
+ "@tailwindcss/vite": "^4.1.18",
164
+ "axios": "^1.13.2",
160
165
  "class-variance-authority": "^0.7.1",
161
166
  "clsx": "^2.1.1",
162
167
  "input-otp": "^1.4.2",
163
- "lucide-react": "^0.544.0",
164
- "react-day-picker": "^9.11.3",
168
+ "lucide-react": "^0.562.0",
169
+ "react-day-picker": "^9.13.0",
165
170
  "react-hook-form": "^7.71.1",
166
- "react-phone-number-input": "^3.4.12",
167
- "tailwind-merge": "^3.3.1",
168
- "zod": "^4.1.12"
171
+ "react-phone-number-input": "^3.4.14",
172
+ "sonner": "^2.0.7",
173
+ "tailwind-merge": "^3.4.0",
174
+ "zod": "^4.3.5"
169
175
  },
170
176
  "scripts": {
171
177
  "dev": "vite",
package/dist/index6.js DELETED
@@ -1,246 +0,0 @@
1
- import * as React from 'react';
2
- import { u as useComposedRefs } from './index4.js';
3
-
4
- // src/primitive.tsx
5
- function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
6
- return function handleEvent(event) {
7
- originalEventHandler?.(event);
8
- if (checkForDefaultPrevented === false || !event.defaultPrevented) {
9
- return ourEventHandler?.(event);
10
- }
11
- };
12
- }
13
-
14
- // packages/react/use-layout-effect/src/use-layout-effect.tsx
15
- var useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {
16
- };
17
-
18
- // src/use-controllable-state.tsx
19
- var useInsertionEffect = React[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
20
- function useControllableState({
21
- prop,
22
- defaultProp,
23
- onChange = () => {
24
- },
25
- caller
26
- }) {
27
- const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({
28
- defaultProp,
29
- onChange
30
- });
31
- const isControlled = prop !== void 0;
32
- const value = isControlled ? prop : uncontrolledProp;
33
- {
34
- const isControlledRef = React.useRef(prop !== void 0);
35
- React.useEffect(() => {
36
- const wasControlled = isControlledRef.current;
37
- if (wasControlled !== isControlled) {
38
- const from = wasControlled ? "controlled" : "uncontrolled";
39
- const to = isControlled ? "controlled" : "uncontrolled";
40
- console.warn(
41
- `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`
42
- );
43
- }
44
- isControlledRef.current = isControlled;
45
- }, [isControlled, caller]);
46
- }
47
- const setValue = React.useCallback(
48
- (nextValue) => {
49
- if (isControlled) {
50
- const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
51
- if (value2 !== prop) {
52
- onChangeRef.current?.(value2);
53
- }
54
- } else {
55
- setUncontrolledProp(nextValue);
56
- }
57
- },
58
- [isControlled, prop, setUncontrolledProp, onChangeRef]
59
- );
60
- return [value, setValue];
61
- }
62
- function useUncontrolledState({
63
- defaultProp,
64
- onChange
65
- }) {
66
- const [value, setValue] = React.useState(defaultProp);
67
- const prevValueRef = React.useRef(value);
68
- const onChangeRef = React.useRef(onChange);
69
- useInsertionEffect(() => {
70
- onChangeRef.current = onChange;
71
- }, [onChange]);
72
- React.useEffect(() => {
73
- if (prevValueRef.current !== value) {
74
- onChangeRef.current?.(value);
75
- prevValueRef.current = value;
76
- }
77
- }, [value, prevValueRef]);
78
- return [value, setValue, onChangeRef];
79
- }
80
- function isFunction(value) {
81
- return typeof value === "function";
82
- }
83
-
84
- // packages/react/use-size/src/use-size.tsx
85
- function useSize(element) {
86
- const [size, setSize] = React.useState(void 0);
87
- useLayoutEffect2(() => {
88
- if (element) {
89
- setSize({ width: element.offsetWidth, height: element.offsetHeight });
90
- const resizeObserver = new ResizeObserver((entries) => {
91
- if (!Array.isArray(entries)) {
92
- return;
93
- }
94
- if (!entries.length) {
95
- return;
96
- }
97
- const entry = entries[0];
98
- let width;
99
- let height;
100
- if ("borderBoxSize" in entry) {
101
- const borderSizeEntry = entry["borderBoxSize"];
102
- const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
103
- width = borderSize["inlineSize"];
104
- height = borderSize["blockSize"];
105
- } else {
106
- width = element.offsetWidth;
107
- height = element.offsetHeight;
108
- }
109
- setSize({ width, height });
110
- });
111
- resizeObserver.observe(element, { box: "border-box" });
112
- return () => resizeObserver.unobserve(element);
113
- } else {
114
- setSize(void 0);
115
- }
116
- }, [element]);
117
- return size;
118
- }
119
-
120
- function useStateMachine(initialState, machine) {
121
- return React.useReducer((state, event) => {
122
- const nextState = machine[state][event];
123
- return nextState ?? state;
124
- }, initialState);
125
- }
126
-
127
- // src/presence.tsx
128
- var Presence = (props) => {
129
- const { present, children } = props;
130
- const presence = usePresence(present);
131
- const child = typeof children === "function" ? children({ present: presence.isPresent }) : React.Children.only(children);
132
- const ref = useComposedRefs(presence.ref, getElementRef(child));
133
- const forceMount = typeof children === "function";
134
- return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;
135
- };
136
- Presence.displayName = "Presence";
137
- function usePresence(present) {
138
- const [node, setNode] = React.useState();
139
- const stylesRef = React.useRef(null);
140
- const prevPresentRef = React.useRef(present);
141
- const prevAnimationNameRef = React.useRef("none");
142
- const initialState = present ? "mounted" : "unmounted";
143
- const [state, send] = useStateMachine(initialState, {
144
- mounted: {
145
- UNMOUNT: "unmounted",
146
- ANIMATION_OUT: "unmountSuspended"
147
- },
148
- unmountSuspended: {
149
- MOUNT: "mounted",
150
- ANIMATION_END: "unmounted"
151
- },
152
- unmounted: {
153
- MOUNT: "mounted"
154
- }
155
- });
156
- React.useEffect(() => {
157
- const currentAnimationName = getAnimationName(stylesRef.current);
158
- prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
159
- }, [state]);
160
- useLayoutEffect2(() => {
161
- const styles = stylesRef.current;
162
- const wasPresent = prevPresentRef.current;
163
- const hasPresentChanged = wasPresent !== present;
164
- if (hasPresentChanged) {
165
- const prevAnimationName = prevAnimationNameRef.current;
166
- const currentAnimationName = getAnimationName(styles);
167
- if (present) {
168
- send("MOUNT");
169
- } else if (currentAnimationName === "none" || styles?.display === "none") {
170
- send("UNMOUNT");
171
- } else {
172
- const isAnimating = prevAnimationName !== currentAnimationName;
173
- if (wasPresent && isAnimating) {
174
- send("ANIMATION_OUT");
175
- } else {
176
- send("UNMOUNT");
177
- }
178
- }
179
- prevPresentRef.current = present;
180
- }
181
- }, [present, send]);
182
- useLayoutEffect2(() => {
183
- if (node) {
184
- let timeoutId;
185
- const ownerWindow = node.ownerDocument.defaultView ?? window;
186
- const handleAnimationEnd = (event) => {
187
- const currentAnimationName = getAnimationName(stylesRef.current);
188
- const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
189
- if (event.target === node && isCurrentAnimation) {
190
- send("ANIMATION_END");
191
- if (!prevPresentRef.current) {
192
- const currentFillMode = node.style.animationFillMode;
193
- node.style.animationFillMode = "forwards";
194
- timeoutId = ownerWindow.setTimeout(() => {
195
- if (node.style.animationFillMode === "forwards") {
196
- node.style.animationFillMode = currentFillMode;
197
- }
198
- });
199
- }
200
- }
201
- };
202
- const handleAnimationStart = (event) => {
203
- if (event.target === node) {
204
- prevAnimationNameRef.current = getAnimationName(stylesRef.current);
205
- }
206
- };
207
- node.addEventListener("animationstart", handleAnimationStart);
208
- node.addEventListener("animationcancel", handleAnimationEnd);
209
- node.addEventListener("animationend", handleAnimationEnd);
210
- return () => {
211
- ownerWindow.clearTimeout(timeoutId);
212
- node.removeEventListener("animationstart", handleAnimationStart);
213
- node.removeEventListener("animationcancel", handleAnimationEnd);
214
- node.removeEventListener("animationend", handleAnimationEnd);
215
- };
216
- } else {
217
- send("ANIMATION_END");
218
- }
219
- }, [node, send]);
220
- return {
221
- isPresent: ["mounted", "unmountSuspended"].includes(state),
222
- ref: React.useCallback((node2) => {
223
- stylesRef.current = node2 ? getComputedStyle(node2) : null;
224
- setNode(node2);
225
- }, [])
226
- };
227
- }
228
- function getAnimationName(styles) {
229
- return styles?.animationName || "none";
230
- }
231
- function getElementRef(element) {
232
- let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
233
- let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
234
- if (mayWarn) {
235
- return element.ref;
236
- }
237
- getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
238
- mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
239
- if (mayWarn) {
240
- return element.props.ref;
241
- }
242
- return element.props.ref || element.ref;
243
- }
244
-
245
- export { Presence as P, useSize as a, useLayoutEffect2 as b, composeEventHandlers as c, useControllableState as u };
246
- //# sourceMappingURL=index6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index6.js","sources":["../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.1.6_react@19.2.1/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.1.6_react@19.2.1/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.1.6_react@19.2.1/node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.1.5_@types+react@19.1.6__@types+reac_7b67a14daea702da9cb176c126a918cb/node_modules/@radix-ui/react-presence/dist/index.mjs"],"sourcesContent":["// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useLayoutEffect","React2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}