doct-ui-auth-kit 1.0.14 → 1.0.15
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/index.js +321 -313
- package/dist/pages.js +1 -1
- package/dist/{signup-page-ChXnxtSS.js → signup-page-LsYojX4-.js} +43 -38
- package/dist/types/auth/flow.d.ts +7 -1
- package/package.json +110 -113
package/dist/pages.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { L as e, a as n, M as g, b as s, O as o, c as t, R as p, d as L, S as r, e as P } from "./signup-page-
|
|
2
|
+
import { L as e, a as n, M as g, b as s, O as o, c as t, R as p, d as L, S as r, e as P } from "./signup-page-LsYojX4-.js";
|
|
3
3
|
export {
|
|
4
4
|
e as LoginEntry,
|
|
5
5
|
n as LoginEntryPage,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as m, jsxs as k, Fragment as $e } from "react/jsx-runtime";
|
|
3
3
|
import { DoctButton as B, DoctTypography as R, DoctPhoneInput as Ze, DoctLabeledInput as Qe, DoctCircularProgress as ve, DoctOtpInput as et } from "docthub-core-components";
|
|
4
4
|
import { MdArrowBack as tt, MdChevronRight as nt } from "react-icons/md";
|
|
5
|
-
import
|
|
5
|
+
import Y, { createContext as lt, useContext as it, useState as K, useEffect as te, useRef as le } from "react";
|
|
6
6
|
import { useFormContext as ne, Controller as de, useForm as ye, FormProvider as Ce } from "react-hook-form";
|
|
7
7
|
import { z as j } from "zod";
|
|
8
8
|
var ae = { exports: {} }, ge = {};
|
|
@@ -10,7 +10,7 @@ var Oe;
|
|
|
10
10
|
function ot() {
|
|
11
11
|
if (Oe) return ge;
|
|
12
12
|
Oe = 1;
|
|
13
|
-
var n =
|
|
13
|
+
var n = Y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
|
14
14
|
return ge.c = function(e) {
|
|
15
15
|
return n.H.useMemoCache(e);
|
|
16
16
|
}, ge;
|
|
@@ -19,7 +19,7 @@ var pe = {};
|
|
|
19
19
|
var Te;
|
|
20
20
|
function rt() {
|
|
21
21
|
return Te || (Te = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
22
|
-
var n =
|
|
22
|
+
var n = Y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
|
23
23
|
pe.c = function(e) {
|
|
24
24
|
var t = n.H;
|
|
25
25
|
return t === null && console.error(
|
|
@@ -277,7 +277,7 @@ function St(n) {
|
|
|
277
277
|
let a;
|
|
278
278
|
return e[7] !== o || e[8] !== s ? (a = /* @__PURE__ */ m("footer", { className: o, children: s }), e[7] = o, e[8] = s, e[9] = a) : a = e[9], a;
|
|
279
279
|
}
|
|
280
|
-
const
|
|
280
|
+
const q = {
|
|
281
281
|
Root: ht,
|
|
282
282
|
Header: gt,
|
|
283
283
|
Main: Ct,
|
|
@@ -436,32 +436,32 @@ function ie(n) {
|
|
|
436
436
|
e[7] !== w || e[8] !== r ? (L = () => r ? typeof r == "string" ? /* @__PURE__ */ m(R, { variant: "body1", align: w, className: "text-neutral-black", children: r }) : r : null, e[7] = w, e[8] = r, e[9] = L) : L = e[9];
|
|
437
437
|
const M = L;
|
|
438
438
|
let I;
|
|
439
|
-
e[10] !== a ? (I = a && /* @__PURE__ */ m(
|
|
439
|
+
e[10] !== a ? (I = a && /* @__PURE__ */ m(q.Header, { children: a }), e[10] = a, e[11] = I) : I = e[11];
|
|
440
440
|
let U;
|
|
441
441
|
e[12] !== $ ? (U = $(), e[12] = $, e[13] = U) : U = e[13];
|
|
442
|
-
let z;
|
|
443
|
-
e[14] !== w || e[15] !== U ? (z = /* @__PURE__ */ m(H.Logo, { align: w, children: U }), e[14] = w, e[15] = U, e[16] = z) : z = e[16];
|
|
444
442
|
let G;
|
|
445
|
-
e[
|
|
443
|
+
e[14] !== w || e[15] !== U ? (G = /* @__PURE__ */ m(q.Logo, { align: w, children: U }), e[14] = w, e[15] = U, e[16] = G) : G = e[16];
|
|
446
444
|
let V;
|
|
447
|
-
e[
|
|
445
|
+
e[17] !== w || e[18] !== T || e[19] !== o ? (V = o && /* @__PURE__ */ m(q.Title, { align: w, children: T() }), e[17] = w, e[18] = T, e[19] = o, e[20] = V) : V = e[20];
|
|
446
|
+
let H;
|
|
447
|
+
e[21] !== w || e[22] !== r || e[23] !== M ? (H = r && /* @__PURE__ */ m(q.Description, { align: w, children: M() }), e[21] = w, e[22] = r, e[23] = M, e[24] = H) : H = e[24];
|
|
448
448
|
let W;
|
|
449
|
-
e[25] !== t ? (W = /* @__PURE__ */ m(
|
|
450
|
-
let
|
|
451
|
-
e[27] !==
|
|
452
|
-
z,
|
|
449
|
+
e[25] !== t ? (W = /* @__PURE__ */ m(q.Body, { children: t }), e[25] = t, e[26] = W) : W = e[26];
|
|
450
|
+
let z;
|
|
451
|
+
e[27] !== G || e[28] !== V || e[29] !== H || e[30] !== W || e[31] !== E ? (z = /* @__PURE__ */ k(q.Main, { sm: E, children: [
|
|
453
452
|
G,
|
|
454
453
|
V,
|
|
454
|
+
H,
|
|
455
455
|
W
|
|
456
|
-
] }), e[27] =
|
|
456
|
+
] }), e[27] = G, e[28] = V, e[29] = H, e[30] = W, e[31] = E, e[32] = z) : z = e[32];
|
|
457
457
|
let J;
|
|
458
|
-
e[33] !== s ? (J = s && /* @__PURE__ */ m(
|
|
458
|
+
e[33] !== s ? (J = s && /* @__PURE__ */ m(q.Footer, { children: s }), e[33] = s, e[34] = J) : J = e[34];
|
|
459
459
|
let oe;
|
|
460
|
-
e[35] !== I || e[36] !==
|
|
460
|
+
e[35] !== I || e[36] !== z || e[37] !== J ? (oe = /* @__PURE__ */ k($e, { children: [
|
|
461
461
|
I,
|
|
462
|
-
|
|
462
|
+
z,
|
|
463
463
|
J
|
|
464
|
-
] }), e[35] = I, e[36] =
|
|
464
|
+
] }), e[35] = I, e[36] = z, e[37] = J, e[38] = oe) : oe = e[38];
|
|
465
465
|
const X = oe;
|
|
466
466
|
if (C === "withSlider") {
|
|
467
467
|
let Q;
|
|
@@ -469,7 +469,7 @@ function ie(n) {
|
|
|
469
469
|
className: y
|
|
470
470
|
}, e[39] = y, e[40] = Q) : Q = e[40];
|
|
471
471
|
let ee;
|
|
472
|
-
e[41] !== X || e[42] !== x || e[43] !== O ? (ee = /* @__PURE__ */ m(
|
|
472
|
+
e[41] !== X || e[42] !== x || e[43] !== O ? (ee = /* @__PURE__ */ m(q.Root, { variant: O, maxWidth: x, className: "bg-transparent", children: X }), e[41] = X, e[42] = x, e[43] = O, e[44] = ee) : ee = e[44];
|
|
473
473
|
let se;
|
|
474
474
|
return e[45] !== S || e[46] !== N || e[47] !== f || e[48] !== Q || e[49] !== ee ? (se = /* @__PURE__ */ m(wt, { sliderImages: N, sliderAutoPlayInterval: S, sliderTitles: f, ...Q, children: ee }), e[45] = S, e[46] = N, e[47] = f, e[48] = Q, e[49] = ee, e[50] = se) : se = e[50], se;
|
|
475
475
|
}
|
|
@@ -478,7 +478,7 @@ function ie(n) {
|
|
|
478
478
|
className: y
|
|
479
479
|
}, e[51] = y, e[52] = Z) : Z = e[52];
|
|
480
480
|
let re;
|
|
481
|
-
return e[53] !== X || e[54] !== x || e[55] !== O || e[56] !== Z ? (re = /* @__PURE__ */ m(
|
|
481
|
+
return e[53] !== X || e[54] !== x || e[55] !== O || e[56] !== Z ? (re = /* @__PURE__ */ m(q.Root, { variant: O, maxWidth: x, ...Z, children: X }), e[53] = X, e[54] = x, e[55] = O, e[56] = Z, e[57] = re) : re = e[57], re;
|
|
482
482
|
}
|
|
483
483
|
function _t(n) {
|
|
484
484
|
return {
|
|
@@ -900,7 +900,7 @@ var qe = {
|
|
|
900
900
|
className: void 0,
|
|
901
901
|
style: void 0,
|
|
902
902
|
attr: void 0
|
|
903
|
-
}, ke =
|
|
903
|
+
}, ke = Y.createContext && /* @__PURE__ */ Y.createContext(qe), Vt = ["attr", "size", "title"];
|
|
904
904
|
function Ht(n, e) {
|
|
905
905
|
if (n == null) return {};
|
|
906
906
|
var t = qt(n, e), l, i;
|
|
@@ -970,12 +970,12 @@ function Jt(n, e) {
|
|
|
970
970
|
return (e === "string" ? String : Number)(n);
|
|
971
971
|
}
|
|
972
972
|
function Ye(n) {
|
|
973
|
-
return n && n.map((e, t) => /* @__PURE__ */
|
|
973
|
+
return n && n.map((e, t) => /* @__PURE__ */ Y.createElement(e.tag, he({
|
|
974
974
|
key: t
|
|
975
975
|
}, e.attr), Ye(e.child)));
|
|
976
976
|
}
|
|
977
977
|
function Ke(n) {
|
|
978
|
-
return (e) => /* @__PURE__ */
|
|
978
|
+
return (e) => /* @__PURE__ */ Y.createElement(Xt, me({
|
|
979
979
|
attr: he({}, n.attr)
|
|
980
980
|
}, e), Ye(n.child));
|
|
981
981
|
}
|
|
@@ -986,7 +986,7 @@ function Xt(n) {
|
|
|
986
986
|
size: i,
|
|
987
987
|
title: o
|
|
988
988
|
} = n, r = Ht(n, Vt), s = i || t.size || "1em", a;
|
|
989
|
-
return t.className && (a = t.className), n.className && (a = (a ? a + " " : "") + n.className), /* @__PURE__ */
|
|
989
|
+
return t.className && (a = t.className), n.className && (a = (a ? a + " " : "") + n.className), /* @__PURE__ */ Y.createElement("svg", me({
|
|
990
990
|
stroke: "currentColor",
|
|
991
991
|
fill: "currentColor",
|
|
992
992
|
strokeWidth: "0"
|
|
@@ -998,9 +998,9 @@ function Xt(n) {
|
|
|
998
998
|
height: s,
|
|
999
999
|
width: s,
|
|
1000
1000
|
xmlns: "http://www.w3.org/2000/svg"
|
|
1001
|
-
}), o && /* @__PURE__ */
|
|
1001
|
+
}), o && /* @__PURE__ */ Y.createElement("title", null, o), n.children);
|
|
1002
1002
|
};
|
|
1003
|
-
return ke !== void 0 ? /* @__PURE__ */
|
|
1003
|
+
return ke !== void 0 ? /* @__PURE__ */ Y.createElement(ke.Consumer, null, (t) => e(t)) : e(qe);
|
|
1004
1004
|
}
|
|
1005
1005
|
function Zt(n) {
|
|
1006
1006
|
return Ke({ attr: { viewBox: "0 0 384 512" }, child: [{ tag: "path", attr: { d: "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z" }, child: [] }] })(n);
|
|
@@ -1097,26 +1097,27 @@ function rn(n) {
|
|
|
1097
1097
|
e[4] !== f ? (N = () => {
|
|
1098
1098
|
if (f <= 0)
|
|
1099
1099
|
return;
|
|
1100
|
-
const
|
|
1100
|
+
const G = setInterval(() => {
|
|
1101
1101
|
p(an);
|
|
1102
1102
|
}, 1e3);
|
|
1103
|
-
return () => clearInterval(
|
|
1103
|
+
return () => clearInterval(G);
|
|
1104
1104
|
}, S = [f], e[4] = f, e[5] = N, e[6] = S) : (N = e[5], S = e[6]), te(N, S);
|
|
1105
1105
|
let x;
|
|
1106
|
-
e[7] !== C || e[8] !== s || e[9] !== l || e[10] !== r || e[11] !== o || e[12] !== a ? (x = async (
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1106
|
+
e[7] !== C || e[8] !== s || e[9] !== l || e[10] !== r || e[11] !== o || e[12] !== a ? (x = async (G) => {
|
|
1107
|
+
C.clearErrors("otp");
|
|
1108
|
+
const V = He.safeParse(G);
|
|
1109
|
+
if (!V.success) {
|
|
1110
|
+
const W = V.error.issues[0]?.message ?? "Invalid OTP";
|
|
1110
1111
|
C.setError("otp", {
|
|
1111
1112
|
message: W
|
|
1112
1113
|
});
|
|
1113
1114
|
return;
|
|
1114
1115
|
}
|
|
1115
|
-
const
|
|
1116
|
+
const H = V.data.otp.join("");
|
|
1116
1117
|
if (a) {
|
|
1117
1118
|
u(!0);
|
|
1118
1119
|
try {
|
|
1119
|
-
const W = await a(
|
|
1120
|
+
const W = await a(H);
|
|
1120
1121
|
if (W !== !0) {
|
|
1121
1122
|
C.setError("otp", {
|
|
1122
1123
|
type: "validate",
|
|
@@ -1131,16 +1132,20 @@ function rn(n) {
|
|
|
1131
1132
|
o || u(!1);
|
|
1132
1133
|
}
|
|
1133
1134
|
if (o) {
|
|
1134
|
-
u(!0), o(
|
|
1135
|
+
u(!0), o(H).then(() => {
|
|
1135
1136
|
r?.();
|
|
1136
1137
|
}).catch((W) => {
|
|
1137
|
-
|
|
1138
|
+
const z = W?.message;
|
|
1139
|
+
C.setError("otp", {
|
|
1140
|
+
type: "submit",
|
|
1141
|
+
message: typeof z == "string" && z.length > 0 ? z : "OTP verification failed"
|
|
1142
|
+
}), s?.(W);
|
|
1138
1143
|
}).finally(() => {
|
|
1139
1144
|
u(!1);
|
|
1140
1145
|
});
|
|
1141
1146
|
return;
|
|
1142
1147
|
}
|
|
1143
|
-
l?.(
|
|
1148
|
+
l?.(H);
|
|
1144
1149
|
}, e[7] = C, e[8] = s, e[9] = l, e[10] = r, e[11] = o, e[12] = a, e[13] = x) : x = e[13];
|
|
1145
1150
|
const A = x;
|
|
1146
1151
|
let w;
|
|
@@ -1666,7 +1671,7 @@ export {
|
|
|
1666
1671
|
On as d,
|
|
1667
1672
|
Tn as e,
|
|
1668
1673
|
_ as f,
|
|
1669
|
-
|
|
1674
|
+
q as g,
|
|
1670
1675
|
_t as h,
|
|
1671
1676
|
Tt as i,
|
|
1672
1677
|
Be as j,
|
|
@@ -104,7 +104,13 @@ export interface AuthFlowActions {
|
|
|
104
104
|
email?: string;
|
|
105
105
|
countryCode?: string;
|
|
106
106
|
}) => void;
|
|
107
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Verifies the OTP against the auth API. Resolves on success (after the
|
|
109
|
+
* reducer has been advanced) and rejects with an `AuthError` whose
|
|
110
|
+
* `message` carries the API's failure reason — callers can surface it
|
|
111
|
+
* as a field-level error.
|
|
112
|
+
*/
|
|
113
|
+
verifyOtp: (otp: string) => Promise<void>;
|
|
108
114
|
resendOtp: () => void;
|
|
109
115
|
providerCallback: (params: {
|
|
110
116
|
provider: 'google' | 'apple';
|
package/package.json
CHANGED
|
@@ -1,113 +1,110 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "doct-ui-auth-kit",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Composable React auth SDK – layouts, login/signup/OTP pages, SSO provider, and auth flow hooks for Docthub",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"module": "./dist/index.js",
|
|
8
|
-
"types": "./dist/index.d.ts",
|
|
9
|
-
"files": [
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"lint": "biome lint .",
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"
|
|
56
|
-
"react": "^
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"react": "^
|
|
67
|
-
"react-
|
|
68
|
-
"react-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"@
|
|
76
|
-
"@
|
|
77
|
-
"@
|
|
78
|
-
"@storybook/addon-
|
|
79
|
-
"@storybook/
|
|
80
|
-
"@
|
|
81
|
-
"@
|
|
82
|
-
"@
|
|
83
|
-
"@
|
|
84
|
-
"@
|
|
85
|
-
"@
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
"vitest": "^4.0.18"
|
|
112
|
-
}
|
|
113
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "doct-ui-auth-kit",
|
|
3
|
+
"version": "1.0.15",
|
|
4
|
+
"description": "Composable React auth SDK – layouts, login/signup/OTP pages, SSO provider, and auth flow hooks for Docthub",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": ["dist", "README.md"],
|
|
10
|
+
"keywords": [
|
|
11
|
+
"react",
|
|
12
|
+
"auth",
|
|
13
|
+
"sdk",
|
|
14
|
+
"docthub",
|
|
15
|
+
"login",
|
|
16
|
+
"signup",
|
|
17
|
+
"sso",
|
|
18
|
+
"otp"
|
|
19
|
+
],
|
|
20
|
+
"license": "UNLICENSED",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/docthub/doct-ui-auth-kit"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"dev": "vite",
|
|
27
|
+
"build": "vite build && tsc --build tsconfig.build.json --force && tsc-alias -p tsconfig.build.json",
|
|
28
|
+
"prepublishOnly": "npm run build",
|
|
29
|
+
"lint": "biome lint .",
|
|
30
|
+
"preview": "vite preview",
|
|
31
|
+
"format": "biome format --write .",
|
|
32
|
+
"lint:biome": "biome lint .",
|
|
33
|
+
"check": "biome check .",
|
|
34
|
+
"check:fix": "biome check --write .",
|
|
35
|
+
"type-check": "tsc --noEmit",
|
|
36
|
+
"prepare": "husky",
|
|
37
|
+
"storybook": "storybook dev -p 6006",
|
|
38
|
+
"build-storybook": "storybook build"
|
|
39
|
+
},
|
|
40
|
+
"exports": {
|
|
41
|
+
".": {
|
|
42
|
+
"types": "./dist/index.d.ts",
|
|
43
|
+
"import": "./dist/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./style.css": "./dist/doct-ui-auth-kit.css",
|
|
46
|
+
"./pages": {
|
|
47
|
+
"types": "./dist/pages/index.d.ts",
|
|
48
|
+
"import": "./dist/pages.js"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"docthub-core-components": "2.99.0",
|
|
53
|
+
"react": "^19.0.0",
|
|
54
|
+
"react-dom": "^19.0.0",
|
|
55
|
+
"react-hook-form": "^7.50.0",
|
|
56
|
+
"react-icons": "^5.5.0",
|
|
57
|
+
"zod": "^4.0.0"
|
|
58
|
+
},
|
|
59
|
+
"dependencies": {
|
|
60
|
+
"clsx": "^2.1.1",
|
|
61
|
+
"dayjs": "^1.11.19",
|
|
62
|
+
"docthub-core-components": "2.99.0",
|
|
63
|
+
"react": "^19.0.0",
|
|
64
|
+
"react-dom": "^19.0.0",
|
|
65
|
+
"react-hook-form": "^7.50.0",
|
|
66
|
+
"react-icons": "^5.5.0",
|
|
67
|
+
"react-phone-number-input": "^3.4.14",
|
|
68
|
+
"react-router-dom": "^7.13.0",
|
|
69
|
+
"zod": "^4.0.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@biomejs/biome": "^2.3.14",
|
|
73
|
+
"@chromatic-com/storybook": "^5.0.0",
|
|
74
|
+
"@eslint/js": "^9.39.1",
|
|
75
|
+
"@storybook/addon-a11y": "^10.2.6",
|
|
76
|
+
"@storybook/addon-docs": "^10.2.6",
|
|
77
|
+
"@storybook/addon-onboarding": "^10.2.6",
|
|
78
|
+
"@storybook/addon-vitest": "^10.2.6",
|
|
79
|
+
"@storybook/react-vite": "^10.2.6",
|
|
80
|
+
"@types/node": "^24.10.1",
|
|
81
|
+
"@types/react": "^19.2.5",
|
|
82
|
+
"@types/react-dom": "^19.2.3",
|
|
83
|
+
"@vitejs/plugin-react": "^5.1.1",
|
|
84
|
+
"@vitest/browser-playwright": "^4.0.18",
|
|
85
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
86
|
+
"autoprefixer": "^10.4.24",
|
|
87
|
+
"babel-plugin-react-compiler": "^1.0.0",
|
|
88
|
+
"eslint": "^9.39.1",
|
|
89
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
90
|
+
"eslint-plugin-react-refresh": "^0.4.24",
|
|
91
|
+
"glob": "^13.0.1",
|
|
92
|
+
"globals": "^16.5.0",
|
|
93
|
+
"husky": "^9.1.7",
|
|
94
|
+
"lint-staged": "^16.2.7",
|
|
95
|
+
"playwright": "^1.58.1",
|
|
96
|
+
"postcss": "^8.5.6",
|
|
97
|
+
"react": "^19.2.0",
|
|
98
|
+
"react-dom": "^19.2.0",
|
|
99
|
+
"storybook": "^10.2.6",
|
|
100
|
+
"tailwind-merge": "^3.0.1",
|
|
101
|
+
"tailwindcss": "^3.4.16",
|
|
102
|
+
"tailwindcss-animate": "^1.0.7",
|
|
103
|
+
"tsc-alias": "^1.8.17",
|
|
104
|
+
"typescript": "~5.6.2",
|
|
105
|
+
"typescript-eslint": "^8.46.4",
|
|
106
|
+
"vite": "^7.2.4",
|
|
107
|
+
"vite-plugin-dts": "^4.5.0",
|
|
108
|
+
"vitest": "^4.0.18"
|
|
109
|
+
}
|
|
110
|
+
}
|