@cimplify/sdk 0.3.5 → 0.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/dist/client-Ug3b8v1t.d.mts +3166 -0
- package/dist/client-Ug3b8v1t.d.ts +3166 -0
- package/dist/index.d.mts +3 -3101
- package/dist/index.d.ts +3 -3101
- package/dist/index.js +325 -204
- package/dist/index.mjs +318 -205
- package/dist/react.d.mts +59 -0
- package/dist/react.d.ts +59 -0
- package/dist/react.js +144 -0
- package/dist/react.mjs +136 -0
- package/package.json +16 -1
package/dist/react.d.mts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { r as CimplifyElements, C as CimplifyClient, v as ElementsOptions, eh as AuthenticatedData, ef as AddressInfo, eg as PaymentMethodInfo, ej as ElementsCheckoutResult } from './client-Ug3b8v1t.mjs';
|
|
2
|
+
import React, { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
declare function useElements(): CimplifyElements | null;
|
|
5
|
+
declare function useElementsReady(): boolean;
|
|
6
|
+
interface ElementsProviderProps {
|
|
7
|
+
client: CimplifyClient;
|
|
8
|
+
businessId: string;
|
|
9
|
+
options?: ElementsOptions;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
declare function ElementsProvider({ client, businessId, options, children, }: ElementsProviderProps): React.ReactElement;
|
|
13
|
+
interface BaseElementProps {
|
|
14
|
+
className?: string;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
onReady?: () => void;
|
|
17
|
+
onError?: (error: {
|
|
18
|
+
code: string;
|
|
19
|
+
message: string;
|
|
20
|
+
}) => void;
|
|
21
|
+
}
|
|
22
|
+
interface AuthElementProps extends BaseElementProps {
|
|
23
|
+
prefillEmail?: string;
|
|
24
|
+
onAuthenticated?: (data: AuthenticatedData) => void;
|
|
25
|
+
onRequiresOtp?: (data: {
|
|
26
|
+
contactMasked: string;
|
|
27
|
+
}) => void;
|
|
28
|
+
}
|
|
29
|
+
declare function AuthElement({ className, style, prefillEmail, onReady, onAuthenticated, onRequiresOtp, onError, }: AuthElementProps): React.ReactElement | null;
|
|
30
|
+
interface AddressElementProps extends BaseElementProps {
|
|
31
|
+
mode?: "shipping" | "billing";
|
|
32
|
+
onChange?: (data: {
|
|
33
|
+
address: AddressInfo;
|
|
34
|
+
saveToLink: boolean;
|
|
35
|
+
}) => void;
|
|
36
|
+
}
|
|
37
|
+
declare function AddressElement({ className, style, mode, onReady, onChange, onError, }: AddressElementProps): React.ReactElement | null;
|
|
38
|
+
interface PaymentElementProps extends BaseElementProps {
|
|
39
|
+
amount?: number;
|
|
40
|
+
currency?: string;
|
|
41
|
+
onChange?: (data: {
|
|
42
|
+
paymentMethod: PaymentMethodInfo;
|
|
43
|
+
saveToLink: boolean;
|
|
44
|
+
}) => void;
|
|
45
|
+
}
|
|
46
|
+
declare function PaymentElement({ className, style, amount, currency, onReady, onChange, onError, }: PaymentElementProps): React.ReactElement | null;
|
|
47
|
+
declare function useCheckout(): {
|
|
48
|
+
submit: (data: {
|
|
49
|
+
cart_id: string;
|
|
50
|
+
order_type?: "delivery" | "pickup" | "dine_in";
|
|
51
|
+
location_id?: string;
|
|
52
|
+
scheduled_time?: string;
|
|
53
|
+
tip_amount?: number;
|
|
54
|
+
notes?: string;
|
|
55
|
+
}) => Promise<ElementsCheckoutResult>;
|
|
56
|
+
isLoading: boolean;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { AddressElement, AuthElement, ElementsProvider, PaymentElement, useCheckout, useElements, useElementsReady };
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { r as CimplifyElements, C as CimplifyClient, v as ElementsOptions, eh as AuthenticatedData, ef as AddressInfo, eg as PaymentMethodInfo, ej as ElementsCheckoutResult } from './client-Ug3b8v1t.js';
|
|
2
|
+
import React, { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
declare function useElements(): CimplifyElements | null;
|
|
5
|
+
declare function useElementsReady(): boolean;
|
|
6
|
+
interface ElementsProviderProps {
|
|
7
|
+
client: CimplifyClient;
|
|
8
|
+
businessId: string;
|
|
9
|
+
options?: ElementsOptions;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
declare function ElementsProvider({ client, businessId, options, children, }: ElementsProviderProps): React.ReactElement;
|
|
13
|
+
interface BaseElementProps {
|
|
14
|
+
className?: string;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
onReady?: () => void;
|
|
17
|
+
onError?: (error: {
|
|
18
|
+
code: string;
|
|
19
|
+
message: string;
|
|
20
|
+
}) => void;
|
|
21
|
+
}
|
|
22
|
+
interface AuthElementProps extends BaseElementProps {
|
|
23
|
+
prefillEmail?: string;
|
|
24
|
+
onAuthenticated?: (data: AuthenticatedData) => void;
|
|
25
|
+
onRequiresOtp?: (data: {
|
|
26
|
+
contactMasked: string;
|
|
27
|
+
}) => void;
|
|
28
|
+
}
|
|
29
|
+
declare function AuthElement({ className, style, prefillEmail, onReady, onAuthenticated, onRequiresOtp, onError, }: AuthElementProps): React.ReactElement | null;
|
|
30
|
+
interface AddressElementProps extends BaseElementProps {
|
|
31
|
+
mode?: "shipping" | "billing";
|
|
32
|
+
onChange?: (data: {
|
|
33
|
+
address: AddressInfo;
|
|
34
|
+
saveToLink: boolean;
|
|
35
|
+
}) => void;
|
|
36
|
+
}
|
|
37
|
+
declare function AddressElement({ className, style, mode, onReady, onChange, onError, }: AddressElementProps): React.ReactElement | null;
|
|
38
|
+
interface PaymentElementProps extends BaseElementProps {
|
|
39
|
+
amount?: number;
|
|
40
|
+
currency?: string;
|
|
41
|
+
onChange?: (data: {
|
|
42
|
+
paymentMethod: PaymentMethodInfo;
|
|
43
|
+
saveToLink: boolean;
|
|
44
|
+
}) => void;
|
|
45
|
+
}
|
|
46
|
+
declare function PaymentElement({ className, style, amount, currency, onReady, onChange, onError, }: PaymentElementProps): React.ReactElement | null;
|
|
47
|
+
declare function useCheckout(): {
|
|
48
|
+
submit: (data: {
|
|
49
|
+
cart_id: string;
|
|
50
|
+
order_type?: "delivery" | "pickup" | "dine_in";
|
|
51
|
+
location_id?: string;
|
|
52
|
+
scheduled_time?: string;
|
|
53
|
+
tip_amount?: number;
|
|
54
|
+
notes?: string;
|
|
55
|
+
}) => Promise<ElementsCheckoutResult>;
|
|
56
|
+
isLoading: boolean;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { AddressElement, AuthElement, ElementsProvider, PaymentElement, useCheckout, useElements, useElementsReady };
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
// src/react/index.tsx
|
|
7
|
+
|
|
8
|
+
// src/types/elements.ts
|
|
9
|
+
var ELEMENT_TYPES = {
|
|
10
|
+
AUTH: "auth",
|
|
11
|
+
ADDRESS: "address",
|
|
12
|
+
PAYMENT: "payment"
|
|
13
|
+
};
|
|
14
|
+
var EVENT_TYPES = {
|
|
15
|
+
READY: "ready",
|
|
16
|
+
AUTHENTICATED: "authenticated",
|
|
17
|
+
REQUIRES_OTP: "requires_otp",
|
|
18
|
+
ERROR: "error",
|
|
19
|
+
CHANGE: "change"};
|
|
20
|
+
var ElementsContext = react.createContext({
|
|
21
|
+
elements: null,
|
|
22
|
+
isReady: false
|
|
23
|
+
});
|
|
24
|
+
function useElements() {
|
|
25
|
+
return react.useContext(ElementsContext).elements;
|
|
26
|
+
}
|
|
27
|
+
function useElementsReady() {
|
|
28
|
+
return react.useContext(ElementsContext).isReady;
|
|
29
|
+
}
|
|
30
|
+
function ElementsProvider({
|
|
31
|
+
client,
|
|
32
|
+
businessId,
|
|
33
|
+
options,
|
|
34
|
+
children
|
|
35
|
+
}) {
|
|
36
|
+
const [elements, setElements] = react.useState(null);
|
|
37
|
+
const [isReady, setIsReady] = react.useState(false);
|
|
38
|
+
react.useEffect(() => {
|
|
39
|
+
const instance = client.elements(businessId, options);
|
|
40
|
+
setElements(instance);
|
|
41
|
+
setIsReady(true);
|
|
42
|
+
return () => instance.destroy();
|
|
43
|
+
}, [client, businessId, options]);
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ElementsContext.Provider, { value: { elements, isReady }, children });
|
|
45
|
+
}
|
|
46
|
+
function AuthElement({
|
|
47
|
+
className,
|
|
48
|
+
style,
|
|
49
|
+
prefillEmail,
|
|
50
|
+
onReady,
|
|
51
|
+
onAuthenticated,
|
|
52
|
+
onRequiresOtp,
|
|
53
|
+
onError
|
|
54
|
+
}) {
|
|
55
|
+
const containerRef = react.useRef(null);
|
|
56
|
+
const elementRef = react.useRef(null);
|
|
57
|
+
const elements = useElements();
|
|
58
|
+
react.useEffect(() => {
|
|
59
|
+
if (!elements || !containerRef.current) return;
|
|
60
|
+
const element = elements.create(ELEMENT_TYPES.AUTH, { prefillEmail });
|
|
61
|
+
elementRef.current = element;
|
|
62
|
+
element.on(EVENT_TYPES.READY, () => onReady?.());
|
|
63
|
+
element.on(EVENT_TYPES.AUTHENTICATED, (data) => onAuthenticated?.(data));
|
|
64
|
+
element.on(EVENT_TYPES.REQUIRES_OTP, (data) => onRequiresOtp?.(data));
|
|
65
|
+
element.on(EVENT_TYPES.ERROR, (data) => onError?.(data));
|
|
66
|
+
element.mount(containerRef.current);
|
|
67
|
+
return () => element.destroy();
|
|
68
|
+
}, [elements, prefillEmail, onReady, onAuthenticated, onRequiresOtp, onError]);
|
|
69
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className, style });
|
|
70
|
+
}
|
|
71
|
+
function AddressElement({
|
|
72
|
+
className,
|
|
73
|
+
style,
|
|
74
|
+
mode = "shipping",
|
|
75
|
+
onReady,
|
|
76
|
+
onChange,
|
|
77
|
+
onError
|
|
78
|
+
}) {
|
|
79
|
+
const containerRef = react.useRef(null);
|
|
80
|
+
const elementRef = react.useRef(null);
|
|
81
|
+
const elements = useElements();
|
|
82
|
+
react.useEffect(() => {
|
|
83
|
+
if (!elements || !containerRef.current) return;
|
|
84
|
+
const element = elements.create(ELEMENT_TYPES.ADDRESS, { mode });
|
|
85
|
+
elementRef.current = element;
|
|
86
|
+
element.on(EVENT_TYPES.READY, () => onReady?.());
|
|
87
|
+
element.on(EVENT_TYPES.CHANGE, (data) => onChange?.(data));
|
|
88
|
+
element.on(EVENT_TYPES.ERROR, (data) => onError?.(data));
|
|
89
|
+
element.mount(containerRef.current);
|
|
90
|
+
return () => element.destroy();
|
|
91
|
+
}, [elements, mode, onReady, onChange, onError]);
|
|
92
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className, style });
|
|
93
|
+
}
|
|
94
|
+
function PaymentElement({
|
|
95
|
+
className,
|
|
96
|
+
style,
|
|
97
|
+
amount,
|
|
98
|
+
currency,
|
|
99
|
+
onReady,
|
|
100
|
+
onChange,
|
|
101
|
+
onError
|
|
102
|
+
}) {
|
|
103
|
+
const containerRef = react.useRef(null);
|
|
104
|
+
const elementRef = react.useRef(null);
|
|
105
|
+
const elements = useElements();
|
|
106
|
+
react.useEffect(() => {
|
|
107
|
+
if (!elements || !containerRef.current) return;
|
|
108
|
+
const element = elements.create(ELEMENT_TYPES.PAYMENT, { amount, currency });
|
|
109
|
+
elementRef.current = element;
|
|
110
|
+
element.on(EVENT_TYPES.READY, () => onReady?.());
|
|
111
|
+
element.on(EVENT_TYPES.CHANGE, (data) => onChange?.(data));
|
|
112
|
+
element.on(EVENT_TYPES.ERROR, (data) => onError?.(data));
|
|
113
|
+
element.mount(containerRef.current);
|
|
114
|
+
return () => element.destroy();
|
|
115
|
+
}, [elements, amount, currency, onReady, onChange, onError]);
|
|
116
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, className, style });
|
|
117
|
+
}
|
|
118
|
+
function useCheckout() {
|
|
119
|
+
const elements = useElements();
|
|
120
|
+
const [isLoading, setIsLoading] = react.useState(false);
|
|
121
|
+
const submit = react.useCallback(
|
|
122
|
+
async (data) => {
|
|
123
|
+
if (!elements) {
|
|
124
|
+
return { success: false, error: { code: "NO_ELEMENTS", message: "Elements not initialized" } };
|
|
125
|
+
}
|
|
126
|
+
setIsLoading(true);
|
|
127
|
+
try {
|
|
128
|
+
return await elements.submitCheckout(data);
|
|
129
|
+
} finally {
|
|
130
|
+
setIsLoading(false);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
[elements]
|
|
134
|
+
);
|
|
135
|
+
return { submit, isLoading };
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
exports.AddressElement = AddressElement;
|
|
139
|
+
exports.AuthElement = AuthElement;
|
|
140
|
+
exports.ElementsProvider = ElementsProvider;
|
|
141
|
+
exports.PaymentElement = PaymentElement;
|
|
142
|
+
exports.useCheckout = useCheckout;
|
|
143
|
+
exports.useElements = useElements;
|
|
144
|
+
exports.useElementsReady = useElementsReady;
|
package/dist/react.mjs
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { createContext, useContext, useState, useEffect, useRef, useCallback } from 'react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/react/index.tsx
|
|
5
|
+
|
|
6
|
+
// src/types/elements.ts
|
|
7
|
+
var ELEMENT_TYPES = {
|
|
8
|
+
AUTH: "auth",
|
|
9
|
+
ADDRESS: "address",
|
|
10
|
+
PAYMENT: "payment"
|
|
11
|
+
};
|
|
12
|
+
var EVENT_TYPES = {
|
|
13
|
+
READY: "ready",
|
|
14
|
+
AUTHENTICATED: "authenticated",
|
|
15
|
+
REQUIRES_OTP: "requires_otp",
|
|
16
|
+
ERROR: "error",
|
|
17
|
+
CHANGE: "change"};
|
|
18
|
+
var ElementsContext = createContext({
|
|
19
|
+
elements: null,
|
|
20
|
+
isReady: false
|
|
21
|
+
});
|
|
22
|
+
function useElements() {
|
|
23
|
+
return useContext(ElementsContext).elements;
|
|
24
|
+
}
|
|
25
|
+
function useElementsReady() {
|
|
26
|
+
return useContext(ElementsContext).isReady;
|
|
27
|
+
}
|
|
28
|
+
function ElementsProvider({
|
|
29
|
+
client,
|
|
30
|
+
businessId,
|
|
31
|
+
options,
|
|
32
|
+
children
|
|
33
|
+
}) {
|
|
34
|
+
const [elements, setElements] = useState(null);
|
|
35
|
+
const [isReady, setIsReady] = useState(false);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const instance = client.elements(businessId, options);
|
|
38
|
+
setElements(instance);
|
|
39
|
+
setIsReady(true);
|
|
40
|
+
return () => instance.destroy();
|
|
41
|
+
}, [client, businessId, options]);
|
|
42
|
+
return /* @__PURE__ */ jsx(ElementsContext.Provider, { value: { elements, isReady }, children });
|
|
43
|
+
}
|
|
44
|
+
function AuthElement({
|
|
45
|
+
className,
|
|
46
|
+
style,
|
|
47
|
+
prefillEmail,
|
|
48
|
+
onReady,
|
|
49
|
+
onAuthenticated,
|
|
50
|
+
onRequiresOtp,
|
|
51
|
+
onError
|
|
52
|
+
}) {
|
|
53
|
+
const containerRef = useRef(null);
|
|
54
|
+
const elementRef = useRef(null);
|
|
55
|
+
const elements = useElements();
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (!elements || !containerRef.current) return;
|
|
58
|
+
const element = elements.create(ELEMENT_TYPES.AUTH, { prefillEmail });
|
|
59
|
+
elementRef.current = element;
|
|
60
|
+
element.on(EVENT_TYPES.READY, () => onReady?.());
|
|
61
|
+
element.on(EVENT_TYPES.AUTHENTICATED, (data) => onAuthenticated?.(data));
|
|
62
|
+
element.on(EVENT_TYPES.REQUIRES_OTP, (data) => onRequiresOtp?.(data));
|
|
63
|
+
element.on(EVENT_TYPES.ERROR, (data) => onError?.(data));
|
|
64
|
+
element.mount(containerRef.current);
|
|
65
|
+
return () => element.destroy();
|
|
66
|
+
}, [elements, prefillEmail, onReady, onAuthenticated, onRequiresOtp, onError]);
|
|
67
|
+
return /* @__PURE__ */ jsx("div", { ref: containerRef, className, style });
|
|
68
|
+
}
|
|
69
|
+
function AddressElement({
|
|
70
|
+
className,
|
|
71
|
+
style,
|
|
72
|
+
mode = "shipping",
|
|
73
|
+
onReady,
|
|
74
|
+
onChange,
|
|
75
|
+
onError
|
|
76
|
+
}) {
|
|
77
|
+
const containerRef = useRef(null);
|
|
78
|
+
const elementRef = useRef(null);
|
|
79
|
+
const elements = useElements();
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
if (!elements || !containerRef.current) return;
|
|
82
|
+
const element = elements.create(ELEMENT_TYPES.ADDRESS, { mode });
|
|
83
|
+
elementRef.current = element;
|
|
84
|
+
element.on(EVENT_TYPES.READY, () => onReady?.());
|
|
85
|
+
element.on(EVENT_TYPES.CHANGE, (data) => onChange?.(data));
|
|
86
|
+
element.on(EVENT_TYPES.ERROR, (data) => onError?.(data));
|
|
87
|
+
element.mount(containerRef.current);
|
|
88
|
+
return () => element.destroy();
|
|
89
|
+
}, [elements, mode, onReady, onChange, onError]);
|
|
90
|
+
return /* @__PURE__ */ jsx("div", { ref: containerRef, className, style });
|
|
91
|
+
}
|
|
92
|
+
function PaymentElement({
|
|
93
|
+
className,
|
|
94
|
+
style,
|
|
95
|
+
amount,
|
|
96
|
+
currency,
|
|
97
|
+
onReady,
|
|
98
|
+
onChange,
|
|
99
|
+
onError
|
|
100
|
+
}) {
|
|
101
|
+
const containerRef = useRef(null);
|
|
102
|
+
const elementRef = useRef(null);
|
|
103
|
+
const elements = useElements();
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (!elements || !containerRef.current) return;
|
|
106
|
+
const element = elements.create(ELEMENT_TYPES.PAYMENT, { amount, currency });
|
|
107
|
+
elementRef.current = element;
|
|
108
|
+
element.on(EVENT_TYPES.READY, () => onReady?.());
|
|
109
|
+
element.on(EVENT_TYPES.CHANGE, (data) => onChange?.(data));
|
|
110
|
+
element.on(EVENT_TYPES.ERROR, (data) => onError?.(data));
|
|
111
|
+
element.mount(containerRef.current);
|
|
112
|
+
return () => element.destroy();
|
|
113
|
+
}, [elements, amount, currency, onReady, onChange, onError]);
|
|
114
|
+
return /* @__PURE__ */ jsx("div", { ref: containerRef, className, style });
|
|
115
|
+
}
|
|
116
|
+
function useCheckout() {
|
|
117
|
+
const elements = useElements();
|
|
118
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
119
|
+
const submit = useCallback(
|
|
120
|
+
async (data) => {
|
|
121
|
+
if (!elements) {
|
|
122
|
+
return { success: false, error: { code: "NO_ELEMENTS", message: "Elements not initialized" } };
|
|
123
|
+
}
|
|
124
|
+
setIsLoading(true);
|
|
125
|
+
try {
|
|
126
|
+
return await elements.submitCheckout(data);
|
|
127
|
+
} finally {
|
|
128
|
+
setIsLoading(false);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
[elements]
|
|
132
|
+
);
|
|
133
|
+
return { submit, isLoading };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { AddressElement, AuthElement, ElementsProvider, PaymentElement, useCheckout, useElements, useElementsReady };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cimplify/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Cimplify Commerce SDK for storefronts",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cimplify",
|
|
@@ -20,6 +20,11 @@
|
|
|
20
20
|
"types": "./dist/index.d.ts",
|
|
21
21
|
"import": "./dist/index.mjs",
|
|
22
22
|
"require": "./dist/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./react": {
|
|
25
|
+
"types": "./dist/react.d.ts",
|
|
26
|
+
"import": "./dist/react.mjs",
|
|
27
|
+
"require": "./dist/react.js"
|
|
23
28
|
}
|
|
24
29
|
},
|
|
25
30
|
"scripts": {
|
|
@@ -31,8 +36,18 @@
|
|
|
31
36
|
"format": "oxfmt . --write",
|
|
32
37
|
"format:check": "oxfmt . --check"
|
|
33
38
|
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"react": ">=17.0.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"react": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
34
47
|
"devDependencies": {
|
|
48
|
+
"@types/react": "^19.2.7",
|
|
35
49
|
"@typescript/native-preview": "^7.0.0-dev.20260109.1",
|
|
50
|
+
"react": "^19.2.3",
|
|
36
51
|
"tsup": "^8.5.1",
|
|
37
52
|
"typescript": "5.9.3"
|
|
38
53
|
}
|