@a-tech.jo/auth-sdk 1.0.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/AuthContext.d.ts +20 -0
- package/dist/AuthContext.d.ts.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/components/AuthContainer.d.ts +14 -0
- package/dist/components/AuthContainer.d.ts.map +1 -0
- package/dist/components/ForgotPasswordForm.d.ts +8 -0
- package/dist/components/ForgotPasswordForm.d.ts.map +1 -0
- package/dist/components/LoginForm.d.ts +9 -0
- package/dist/components/LoginForm.d.ts.map +1 -0
- package/dist/components/RegisterForm.d.ts +14 -0
- package/dist/components/RegisterForm.d.ts.map +1 -0
- package/dist/config.d.ts +64 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +767 -0
- package/dist/index.mjs +731 -0
- package/dist/styles.css +246 -0
- package/dist/types.d.ts +102 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +47 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,731 @@
|
|
|
1
|
+
// src/config.ts
|
|
2
|
+
var DEFAULT_ENVIRONMENT_URLS = {
|
|
3
|
+
production: "https://auth.atech-workspace.com",
|
|
4
|
+
stage: "https://stage.auth.atech-workspace.com",
|
|
5
|
+
local: "http://localhost:3000"
|
|
6
|
+
};
|
|
7
|
+
var DEFAULT_ENDPOINTS = {
|
|
8
|
+
login: "/api/auth/login",
|
|
9
|
+
register: "/api/auth/signup",
|
|
10
|
+
forgotPassword: "/api/auth/forgot-password",
|
|
11
|
+
resetPassword: "/api/auth/reset-password",
|
|
12
|
+
refreshToken: "/api/auth/refresh-token",
|
|
13
|
+
me: "/api/auth/me"
|
|
14
|
+
};
|
|
15
|
+
var DEFAULT_STORAGE_KEYS = {
|
|
16
|
+
accessToken: "atech_access_token",
|
|
17
|
+
refreshToken: "atech_refresh_token"
|
|
18
|
+
};
|
|
19
|
+
var DEFAULT_THEME = {
|
|
20
|
+
primary: "#7c3aed",
|
|
21
|
+
// Purple
|
|
22
|
+
navy: "#0f172a",
|
|
23
|
+
// Dark Slate/Navy
|
|
24
|
+
pink: "#ec4899",
|
|
25
|
+
// Pink Accent
|
|
26
|
+
bg: "#ffffff"
|
|
27
|
+
// White Card
|
|
28
|
+
};
|
|
29
|
+
var DEFAULT_SDK_CONFIG = {
|
|
30
|
+
environment: "production",
|
|
31
|
+
environmentUrls: DEFAULT_ENVIRONMENT_URLS,
|
|
32
|
+
endpoints: DEFAULT_ENDPOINTS,
|
|
33
|
+
storageKeys: DEFAULT_STORAGE_KEYS,
|
|
34
|
+
theme: DEFAULT_THEME,
|
|
35
|
+
brand: {
|
|
36
|
+
logoUrl: "/images/logo.png",
|
|
37
|
+
companyName: "A-Tech"
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function getSDKConfig(options = {}) {
|
|
41
|
+
const environment = options.environment || DEFAULT_SDK_CONFIG.environment;
|
|
42
|
+
const baseUrl = (options.customBaseUrl || options.environmentUrls?.[environment] || DEFAULT_ENVIRONMENT_URLS[environment]).replace(/\/$/, "");
|
|
43
|
+
return {
|
|
44
|
+
environment,
|
|
45
|
+
baseUrl,
|
|
46
|
+
endpoints: {
|
|
47
|
+
...DEFAULT_ENDPOINTS,
|
|
48
|
+
...options.endpoints
|
|
49
|
+
},
|
|
50
|
+
storageKeys: {
|
|
51
|
+
...DEFAULT_STORAGE_KEYS,
|
|
52
|
+
...options.storageKeys
|
|
53
|
+
},
|
|
54
|
+
theme: {
|
|
55
|
+
...DEFAULT_THEME,
|
|
56
|
+
...options.theme
|
|
57
|
+
},
|
|
58
|
+
brand: {
|
|
59
|
+
...DEFAULT_SDK_CONFIG.brand,
|
|
60
|
+
...options.brand
|
|
61
|
+
},
|
|
62
|
+
onSuccess: options.onSuccess,
|
|
63
|
+
onError: options.onError
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// src/client.ts
|
|
68
|
+
var AuthClient = class {
|
|
69
|
+
constructor(options = {}) {
|
|
70
|
+
this.config = getSDKConfig(options);
|
|
71
|
+
}
|
|
72
|
+
async request(endpoint, data) {
|
|
73
|
+
const url = `${this.config.baseUrl}${endpoint}`;
|
|
74
|
+
const response = await fetch(url, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
headers: { "Content-Type": "application/json" },
|
|
77
|
+
body: JSON.stringify(data)
|
|
78
|
+
});
|
|
79
|
+
const result = await response.json();
|
|
80
|
+
if (!response.ok) {
|
|
81
|
+
throw new Error(result.error || result.message || "Authentication request failed");
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
async login(payload) {
|
|
86
|
+
return this.request(this.config.endpoints.login, payload);
|
|
87
|
+
}
|
|
88
|
+
async register(payload) {
|
|
89
|
+
return this.request(this.config.endpoints.register, payload);
|
|
90
|
+
}
|
|
91
|
+
async forgotPassword(payload) {
|
|
92
|
+
return this.request(this.config.endpoints.forgotPassword, payload);
|
|
93
|
+
}
|
|
94
|
+
async resetPassword(payload) {
|
|
95
|
+
return this.request(this.config.endpoints.resetPassword, payload);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// src/AuthContext.tsx
|
|
100
|
+
import { createContext, useContext, useState, useEffect, useMemo } from "react";
|
|
101
|
+
import { jsx } from "react/jsx-runtime";
|
|
102
|
+
var AuthContext = createContext(null);
|
|
103
|
+
function isTokenExpired(token) {
|
|
104
|
+
if (!token) return true;
|
|
105
|
+
try {
|
|
106
|
+
const base64Url = token.split(".")[1];
|
|
107
|
+
if (!base64Url) return true;
|
|
108
|
+
const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
|
|
109
|
+
const jsonPayload = decodeURIComponent(
|
|
110
|
+
window.atob(base64).split("").map((c) => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join("")
|
|
111
|
+
);
|
|
112
|
+
const { exp } = JSON.parse(jsonPayload);
|
|
113
|
+
if (!exp) return false;
|
|
114
|
+
return Date.now() >= exp * 1e3;
|
|
115
|
+
} catch {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
var AuthProvider = ({ config = {}, children }) => {
|
|
120
|
+
const [client] = useState(() => new AuthClient(config));
|
|
121
|
+
const [token, setToken] = useState(null);
|
|
122
|
+
const [user, setUser] = useState(null);
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
if (typeof window !== "undefined") {
|
|
125
|
+
const savedToken = localStorage.getItem("auth_token");
|
|
126
|
+
if (savedToken) setToken(savedToken);
|
|
127
|
+
}
|
|
128
|
+
}, []);
|
|
129
|
+
const saveSession = (res) => {
|
|
130
|
+
if (res.token) {
|
|
131
|
+
setToken(res.token);
|
|
132
|
+
if (typeof window !== "undefined") {
|
|
133
|
+
localStorage.setItem("auth_token", res.token);
|
|
134
|
+
if (res.refreshToken) {
|
|
135
|
+
localStorage.setItem("auth_refresh_token", res.refreshToken);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (res.user) setUser(res.user);
|
|
140
|
+
if (config.onSuccess) config.onSuccess(res);
|
|
141
|
+
};
|
|
142
|
+
const login = async (payload) => {
|
|
143
|
+
try {
|
|
144
|
+
const res = await client.login(payload);
|
|
145
|
+
saveSession(res);
|
|
146
|
+
return res;
|
|
147
|
+
} catch (err) {
|
|
148
|
+
if (config.onError) config.onError(err);
|
|
149
|
+
throw err;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const register = async (payload) => {
|
|
153
|
+
try {
|
|
154
|
+
const res = await client.register(payload);
|
|
155
|
+
saveSession(res);
|
|
156
|
+
return res;
|
|
157
|
+
} catch (err) {
|
|
158
|
+
if (config.onError) config.onError(err);
|
|
159
|
+
throw err;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const logout = () => {
|
|
163
|
+
setToken(null);
|
|
164
|
+
setUser(null);
|
|
165
|
+
if (typeof window !== "undefined") {
|
|
166
|
+
localStorage.removeItem("auth_token");
|
|
167
|
+
localStorage.removeItem("auth_refresh_token");
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
const isExpired = useMemo(() => isTokenExpired(token), [token]);
|
|
171
|
+
return /* @__PURE__ */ jsx(
|
|
172
|
+
AuthContext.Provider,
|
|
173
|
+
{
|
|
174
|
+
value: {
|
|
175
|
+
client,
|
|
176
|
+
token,
|
|
177
|
+
user,
|
|
178
|
+
login,
|
|
179
|
+
register,
|
|
180
|
+
logout,
|
|
181
|
+
isAuthenticated: !!token && !isExpired,
|
|
182
|
+
isExpired
|
|
183
|
+
},
|
|
184
|
+
children
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
};
|
|
188
|
+
var useAuth = () => {
|
|
189
|
+
const context = useContext(AuthContext);
|
|
190
|
+
if (!context) {
|
|
191
|
+
throw new Error("useAuth must be used within an <AuthProvider />");
|
|
192
|
+
}
|
|
193
|
+
return context;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
// src/components/AuthContainer.tsx
|
|
197
|
+
import { useState as useState5 } from "react";
|
|
198
|
+
|
|
199
|
+
// src/components/LoginForm.tsx
|
|
200
|
+
import { useState as useState2 } from "react";
|
|
201
|
+
|
|
202
|
+
// src/assets/images/logo.png
|
|
203
|
+
var logo_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAswAAADuCAMAAAAa9KE8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFbgnMaArEIRBhHhFd6NH7cgnSqYbS6+H2dAnUZAq+KBBrFRFRagrGeAjaXgu2RA2R8eD+pIbMYUuV3NHrYwq8jgb4fgjiOQ6CTwyhiAfwbQnKjQf2VAyohAfqu4TrGBFVmIe7WAuufQjg9fD6Og6EYAu5egjcWguwdwnYcAnPJhBoiXiwSg2bcDqySA2YigfzUAyiUgymUi6R3cL1Pg6KEhJNhgfuXAu0ZUubDRJFJBBmonbTvKTbZwrCw6TllC7pZgrBLw90gwfp1cLqrkT/Qg2PgAjlChJBtYXjRg2VYQu6GhFYXEyOMA92kAb7dgnXcQnQdynGQA2NTAydkAb6yMTYgQjmhUjGwYP0Kg9uNg5+48H+TAyc2rL7VwusoCn8w7TaLA9xXAuy1qL+bArJy7PlfUm70sLmMg95hgfsgDjJxYP5p5bGEBJKnIfBPQ6IqWXlVgyqPA6HyYP/mGfOiwf0l3fEmBb8HBFaypP3umP8tZTaRw2WQg2OfWmoWxuohVi9LQ9ynmbWMg94IhBkDhJInEbmZBq1AxM45eHuUgykVgurBhM8a1uapUXysIXcKSBkSwyc8vD3BBM62MLvz8PhraXFplXri1fGNw6AvoTwhhfku5TioYbH////oUbtFBFPc0quakqhPB5+cxnJvHT1nZe5CBM/zaLytKXPjoiumlbajEfQkwb/SB2OubXNSDWBvbTTbBnAUxyexJPvfBjVjgb3tVT/e1mvrpXQimi6Sx2S0LLtqEX3YiqpkVfOPx6CMx9xawrIYgq7UQykewjecgnRfAjfQQ2OWwuydQnWaArDSA2XWAutZQq/jAf1Lg9zhQfsMQ94QA6Mkgb+Pg6JggjnFxFTTgyfbwnNVQypeAjZggjojwb5fwjjXQu1kgb9bQnLKw9vRQ2TXwu3NA97iQfxhwfveQjbUwynaQrFYwq9NQ59fQjhkwb+CxJDPw6LcwnTIBBfWQuvSQ2ZwnP/0JL/9/D+uITobArKXDuXr1X3LSBogRfdqXXdAAAAHWn4xgAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAACUvSURBVHja7J17eFTVucajYGKxIpBSULHgSQALUuUiWKAECCAS0EbkIEQuFrkYEImhJAKHICIMRYxGQFEYwVuBQ61FLUKFtqK2gFDEokBVqtwsUovFGuX0ON0zmcu+rPV939p77T179t6f9I8+j848w/z4ePOutd83KxJMJDJo0PbofOc7n376LWX2KNNbmR8ps+ucc845efLkt5V5TZnbb7/9kksu+eijLGUOHjz4fWV+rMybb5533ufKnH/++TuVuVGZK6644i9/ufDCT5Rpo8wbyvxBmf/6+9+/q8yHygwYMOC/lXn33fff79u372XKvK1MV2VOnDhxsTLHlbnqqqt+qsyflLn00kt/3bRp0w+UufmG6Pz1r3/+859/EUxisvzO8dGjrZUZlMD50yTOveM479oVo1mPc5xmPc7ngzjHaE7hPCCFc18tzidSOF+Vwlmh+dKmdTjX0RzD+bOA4gDmSKShMkePGnA2LGctzrrlnMD5TQXnz7U4x2lO4Kxazn9PLecBqeWcwPmOFM7HUzj/KYWzejkHOAcwR7odVkaF8yBca5xka42DRq1xvnY5X0jVGn0pWoOBcwCyn2He0U0ZLc0srbEH1hofOaU1dDgHWiOAOYWyMj+poxnCGdYatzO0xo+NWkOH8xtanD9U48zTGmzpHGiNAOZIpK0yfJz5WmOXnVpjgFFriErnAGbfoXxGmQTO3bQ4t8alsyyt8YZWawQ2XQCz+OzefbmaZoLW+BZfa7xmVmsENl0As/UZPVqhmYDzdvM23Y+NNt2NDtp0Acw+mbLFo0cbce5mxHmQG44EA5sugJk/h8rKFutxTixn6zZdVhpsukBr+BXmQ4cUmtnL2Rabjn0kKNGmC44EfQtzixaHYjgvFsDZzTZdoDX8C/Pf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";
|
|
204
|
+
|
|
205
|
+
// src/components/LoginForm.tsx
|
|
206
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
207
|
+
var SDKLoginForm = ({
|
|
208
|
+
onSuccess,
|
|
209
|
+
onForgotPasswordClick,
|
|
210
|
+
onRegisterClick,
|
|
211
|
+
className = ""
|
|
212
|
+
}) => {
|
|
213
|
+
const { login, client } = useAuth();
|
|
214
|
+
const [email, setEmail] = useState2("");
|
|
215
|
+
const [password, setPassword] = useState2("");
|
|
216
|
+
const [loading, setLoading] = useState2(false);
|
|
217
|
+
const [error, setError] = useState2(null);
|
|
218
|
+
const colors = client?.config?.theme || {
|
|
219
|
+
primary: "#7c3aed",
|
|
220
|
+
navy: "#0f172a",
|
|
221
|
+
pink: "#ec4899",
|
|
222
|
+
bg: "#ffffff"
|
|
223
|
+
};
|
|
224
|
+
const dynamicThemeVars = {
|
|
225
|
+
"--atech-primary": colors.primary,
|
|
226
|
+
"--atech-navy": colors.navy,
|
|
227
|
+
"--atech-pink": colors.pink,
|
|
228
|
+
"--atech-bg": colors.bg
|
|
229
|
+
};
|
|
230
|
+
const logoSrc = client?.config?.brand?.logoUrl || logo_default;
|
|
231
|
+
const handleSubmit = async (e) => {
|
|
232
|
+
e.preventDefault();
|
|
233
|
+
setLoading(true);
|
|
234
|
+
setError(null);
|
|
235
|
+
try {
|
|
236
|
+
await login({ email, password });
|
|
237
|
+
if (onSuccess) onSuccess();
|
|
238
|
+
} catch (err) {
|
|
239
|
+
setError(err.message || "Invalid credentials provided.");
|
|
240
|
+
} finally {
|
|
241
|
+
setLoading(false);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
return /* @__PURE__ */ jsxs("div", { className: `atech-card ${className}`, style: dynamicThemeVars, children: [
|
|
245
|
+
/* @__PURE__ */ jsx2("div", { className: "atech-header", children: /* @__PURE__ */ jsx2(
|
|
246
|
+
"img",
|
|
247
|
+
{
|
|
248
|
+
src: logoSrc,
|
|
249
|
+
alt: client?.config?.brand?.companyName || "Logo",
|
|
250
|
+
className: "atech-logo"
|
|
251
|
+
}
|
|
252
|
+
) }),
|
|
253
|
+
/* @__PURE__ */ jsx2("h1", { className: "atech-title", children: "Sign In" }),
|
|
254
|
+
error && /* @__PURE__ */ jsx2("div", { className: "atech-error", children: error }),
|
|
255
|
+
/* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "atech-form", children: [
|
|
256
|
+
/* @__PURE__ */ jsxs("div", { className: "atech-field", children: [
|
|
257
|
+
/* @__PURE__ */ jsx2("label", { className: "atech-label", children: "Email Address" }),
|
|
258
|
+
/* @__PURE__ */ jsx2(
|
|
259
|
+
"input",
|
|
260
|
+
{
|
|
261
|
+
type: "email",
|
|
262
|
+
required: true,
|
|
263
|
+
placeholder: "john@example.com",
|
|
264
|
+
value: email,
|
|
265
|
+
onChange: (e) => setEmail(e.target.value),
|
|
266
|
+
className: "atech-input"
|
|
267
|
+
}
|
|
268
|
+
)
|
|
269
|
+
] }),
|
|
270
|
+
/* @__PURE__ */ jsxs("div", { className: "atech-field", children: [
|
|
271
|
+
/* @__PURE__ */ jsx2("label", { className: "atech-label", children: "Password" }),
|
|
272
|
+
/* @__PURE__ */ jsx2(
|
|
273
|
+
"input",
|
|
274
|
+
{
|
|
275
|
+
type: "password",
|
|
276
|
+
required: true,
|
|
277
|
+
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
278
|
+
value: password,
|
|
279
|
+
onChange: (e) => setPassword(e.target.value),
|
|
280
|
+
className: "atech-input"
|
|
281
|
+
}
|
|
282
|
+
)
|
|
283
|
+
] }),
|
|
284
|
+
/* @__PURE__ */ jsx2("button", { type: "submit", disabled: loading, className: "atech-button", children: loading ? "Signing in..." : "Sign In" })
|
|
285
|
+
] }),
|
|
286
|
+
/* @__PURE__ */ jsxs("div", { className: "atech-footer", children: [
|
|
287
|
+
onForgotPasswordClick ? /* @__PURE__ */ jsx2("button", { type: "button", onClick: onForgotPasswordClick, className: "atech-link", children: "Forgot Password?" }) : /* @__PURE__ */ jsx2("span", {}),
|
|
288
|
+
onRegisterClick && /* @__PURE__ */ jsx2("button", { type: "button", onClick: onRegisterClick, className: "atech-link", children: "Create Account" })
|
|
289
|
+
] })
|
|
290
|
+
] });
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
// src/components/RegisterForm.tsx
|
|
294
|
+
import { useEffect as useEffect2, useState as useState3, useRef } from "react";
|
|
295
|
+
import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
296
|
+
var SDKRegisterForm = ({
|
|
297
|
+
onSuccess,
|
|
298
|
+
onLoginClick,
|
|
299
|
+
className = ""
|
|
300
|
+
}) => {
|
|
301
|
+
const { register, client } = useAuth();
|
|
302
|
+
const [firstName, setFirstName] = useState3("");
|
|
303
|
+
const [lastName, setLastName] = useState3("");
|
|
304
|
+
const [email, setEmail] = useState3("");
|
|
305
|
+
const [phoneNumber, setPhoneNumber] = useState3("");
|
|
306
|
+
const [password, setPassword] = useState3("");
|
|
307
|
+
const [loading, setLoading] = useState3(false);
|
|
308
|
+
const [error, setError] = useState3(null);
|
|
309
|
+
const [countries, setCountries] = useState3([]);
|
|
310
|
+
const [selectedCountry, setSelectedCountry] = useState3({
|
|
311
|
+
id: 0,
|
|
312
|
+
name: "United States",
|
|
313
|
+
phoneCode: "+1",
|
|
314
|
+
nameIso2: "US"
|
|
315
|
+
});
|
|
316
|
+
const [isDropdownOpen, setIsDropdownOpen] = useState3(false);
|
|
317
|
+
const [searchQuery, setSearchQuery] = useState3("");
|
|
318
|
+
const dropdownRef = useRef(null);
|
|
319
|
+
const colors = client?.config?.theme || {
|
|
320
|
+
primary: "#7c3aed",
|
|
321
|
+
navy: "#0f172a",
|
|
322
|
+
pink: "#ec4899",
|
|
323
|
+
bg: "#ffffff"
|
|
324
|
+
};
|
|
325
|
+
const dynamicThemeVars = {
|
|
326
|
+
"--atech-primary": colors.primary,
|
|
327
|
+
"--atech-navy": colors.navy,
|
|
328
|
+
"--atech-pink": colors.pink,
|
|
329
|
+
"--atech-bg": colors.bg
|
|
330
|
+
};
|
|
331
|
+
const logoSrc = client?.config?.brand?.logoUrl || logo_default;
|
|
332
|
+
useEffect2(() => {
|
|
333
|
+
if (client && typeof client.searchCountries === "function") {
|
|
334
|
+
client.searchCountries("").then((res) => {
|
|
335
|
+
if (res?.data && Array.isArray(res.data) && res.data.length > 0) {
|
|
336
|
+
setCountries(res.data);
|
|
337
|
+
const defaultC = res.data.find((c) => c.phoneCode);
|
|
338
|
+
if (defaultC) setSelectedCountry(defaultC);
|
|
339
|
+
}
|
|
340
|
+
}).catch(() => fallbackCountries());
|
|
341
|
+
} else {
|
|
342
|
+
fallbackCountries();
|
|
343
|
+
}
|
|
344
|
+
}, [client]);
|
|
345
|
+
const fallbackCountries = () => {
|
|
346
|
+
setCountries([
|
|
347
|
+
{ id: 1, name: "United States", phoneCode: "+1", nameIso2: "US" },
|
|
348
|
+
{ id: 2, name: "Jordan", phoneCode: "+962", nameIso2: "JO" },
|
|
349
|
+
{ id: 3, name: "United Kingdom", phoneCode: "+44", nameIso2: "GB" },
|
|
350
|
+
{ id: 4, name: "Germany", phoneCode: "+49", nameIso2: "DE" },
|
|
351
|
+
{ id: 5, name: "Canada", phoneCode: "+1", nameIso2: "CA" }
|
|
352
|
+
]);
|
|
353
|
+
};
|
|
354
|
+
useEffect2(() => {
|
|
355
|
+
const handleClickOutside = (event) => {
|
|
356
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
357
|
+
setIsDropdownOpen(false);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
361
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
362
|
+
}, []);
|
|
363
|
+
const getFlagEmoji = (isoCode) => {
|
|
364
|
+
if (!isoCode || isoCode.length !== 2) return "\u{1F310}";
|
|
365
|
+
const codePoints = isoCode.toUpperCase().split("").map((char) => 127397 + char.charCodeAt(0));
|
|
366
|
+
return String.fromCodePoint(...codePoints);
|
|
367
|
+
};
|
|
368
|
+
const filteredCountries = countries.filter((c) => {
|
|
369
|
+
const q = searchQuery.toLowerCase();
|
|
370
|
+
return c.name.toLowerCase().includes(q) || c.nameIso2 && c.nameIso2.toLowerCase().includes(q) || c.phoneCode && c.phoneCode.includes(q);
|
|
371
|
+
});
|
|
372
|
+
const handleSubmit = async (e) => {
|
|
373
|
+
e.preventDefault();
|
|
374
|
+
setLoading(true);
|
|
375
|
+
setError(null);
|
|
376
|
+
try {
|
|
377
|
+
const code = selectedCountry.phoneCode ? selectedCountry.phoneCode.startsWith("+") ? selectedCountry.phoneCode : `+${selectedCountry.phoneCode}` : "+1";
|
|
378
|
+
const rawPhone = phoneNumber ? phoneNumber.trim().replace(/^\+/, "") : "";
|
|
379
|
+
const formattedPhoneNumber = rawPhone ? `${code} ${rawPhone}` : "";
|
|
380
|
+
const payload = {
|
|
381
|
+
firstName,
|
|
382
|
+
lastName,
|
|
383
|
+
email,
|
|
384
|
+
phoneNumber: formattedPhoneNumber,
|
|
385
|
+
password
|
|
386
|
+
};
|
|
387
|
+
await register(payload);
|
|
388
|
+
if (onSuccess) onSuccess();
|
|
389
|
+
} catch (err) {
|
|
390
|
+
setError(err.message || "Registration failed. Please try again.");
|
|
391
|
+
} finally {
|
|
392
|
+
setLoading(false);
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
return /* @__PURE__ */ jsxs2("div", { className: `atech-card ${className}`, style: dynamicThemeVars, children: [
|
|
396
|
+
/* @__PURE__ */ jsx3("div", { className: "atech-header", children: /* @__PURE__ */ jsx3(
|
|
397
|
+
"img",
|
|
398
|
+
{
|
|
399
|
+
src: logoSrc,
|
|
400
|
+
alt: client?.config?.brand?.companyName || "Logo",
|
|
401
|
+
className: "atech-logo"
|
|
402
|
+
}
|
|
403
|
+
) }),
|
|
404
|
+
/* @__PURE__ */ jsx3("h1", { className: "atech-title", children: "Create Account" }),
|
|
405
|
+
error && /* @__PURE__ */ jsx3("div", { className: "atech-error", children: error }),
|
|
406
|
+
/* @__PURE__ */ jsxs2("form", { onSubmit: handleSubmit, className: "atech-form", children: [
|
|
407
|
+
/* @__PURE__ */ jsxs2("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: "0.75rem" }, children: [
|
|
408
|
+
/* @__PURE__ */ jsxs2("div", { className: "atech-field", children: [
|
|
409
|
+
/* @__PURE__ */ jsx3("label", { className: "atech-label", children: "First Name" }),
|
|
410
|
+
/* @__PURE__ */ jsx3(
|
|
411
|
+
"input",
|
|
412
|
+
{
|
|
413
|
+
type: "text",
|
|
414
|
+
required: true,
|
|
415
|
+
placeholder: "John",
|
|
416
|
+
value: firstName,
|
|
417
|
+
onChange: (e) => setFirstName(e.target.value),
|
|
418
|
+
className: "atech-input"
|
|
419
|
+
}
|
|
420
|
+
)
|
|
421
|
+
] }),
|
|
422
|
+
/* @__PURE__ */ jsxs2("div", { className: "atech-field", children: [
|
|
423
|
+
/* @__PURE__ */ jsx3("label", { className: "atech-label", children: "Last Name" }),
|
|
424
|
+
/* @__PURE__ */ jsx3(
|
|
425
|
+
"input",
|
|
426
|
+
{
|
|
427
|
+
type: "text",
|
|
428
|
+
required: true,
|
|
429
|
+
placeholder: "Doe",
|
|
430
|
+
value: lastName,
|
|
431
|
+
onChange: (e) => setLastName(e.target.value),
|
|
432
|
+
className: "atech-input"
|
|
433
|
+
}
|
|
434
|
+
)
|
|
435
|
+
] })
|
|
436
|
+
] }),
|
|
437
|
+
/* @__PURE__ */ jsxs2("div", { className: "atech-field", children: [
|
|
438
|
+
/* @__PURE__ */ jsx3("label", { className: "atech-label", children: "Email Address" }),
|
|
439
|
+
/* @__PURE__ */ jsx3(
|
|
440
|
+
"input",
|
|
441
|
+
{
|
|
442
|
+
type: "email",
|
|
443
|
+
required: true,
|
|
444
|
+
placeholder: "john@example.com",
|
|
445
|
+
value: email,
|
|
446
|
+
onChange: (e) => setEmail(e.target.value),
|
|
447
|
+
className: "atech-input"
|
|
448
|
+
}
|
|
449
|
+
)
|
|
450
|
+
] }),
|
|
451
|
+
/* @__PURE__ */ jsxs2("div", { className: "atech-field", children: [
|
|
452
|
+
/* @__PURE__ */ jsx3("label", { className: "atech-label", children: "Phone Number" }),
|
|
453
|
+
/* @__PURE__ */ jsxs2("div", { style: { display: "flex", gap: "0.5rem", position: "relative" }, ref: dropdownRef, children: [
|
|
454
|
+
/* @__PURE__ */ jsxs2(
|
|
455
|
+
"button",
|
|
456
|
+
{
|
|
457
|
+
type: "button",
|
|
458
|
+
onClick: () => setIsDropdownOpen(!isDropdownOpen),
|
|
459
|
+
className: "atech-country-trigger",
|
|
460
|
+
children: [
|
|
461
|
+
/* @__PURE__ */ jsx3("span", { children: getFlagEmoji(selectedCountry.nameIso2) }),
|
|
462
|
+
/* @__PURE__ */ jsx3("span", { style: { fontWeight: 600 }, children: selectedCountry.phoneCode ? selectedCountry.phoneCode.startsWith("+") ? selectedCountry.phoneCode : `+${selectedCountry.phoneCode}` : "+1" }),
|
|
463
|
+
/* @__PURE__ */ jsx3("span", { style: { fontSize: "0.75rem", opacity: 0.6 }, children: "\u25BC" })
|
|
464
|
+
]
|
|
465
|
+
}
|
|
466
|
+
),
|
|
467
|
+
isDropdownOpen && /* @__PURE__ */ jsxs2("div", { className: "atech-country-popover", children: [
|
|
468
|
+
/* @__PURE__ */ jsx3(
|
|
469
|
+
"input",
|
|
470
|
+
{
|
|
471
|
+
type: "text",
|
|
472
|
+
autoFocus: true,
|
|
473
|
+
placeholder: "Search country or code...",
|
|
474
|
+
value: searchQuery,
|
|
475
|
+
onChange: (e) => setSearchQuery(e.target.value),
|
|
476
|
+
className: "atech-input",
|
|
477
|
+
style: { padding: "0.375rem 0.5rem", fontSize: "0.75rem", marginBottom: "0.5rem" }
|
|
478
|
+
}
|
|
479
|
+
),
|
|
480
|
+
/* @__PURE__ */ jsx3("div", { className: "atech-country-list", children: filteredCountries.length > 0 ? filteredCountries.map((c) => {
|
|
481
|
+
const code = c.phoneCode ? c.phoneCode.startsWith("+") ? c.phoneCode : `+${c.phoneCode}` : "+1";
|
|
482
|
+
return /* @__PURE__ */ jsxs2(
|
|
483
|
+
"button",
|
|
484
|
+
{
|
|
485
|
+
type: "button",
|
|
486
|
+
onClick: () => {
|
|
487
|
+
setSelectedCountry(c);
|
|
488
|
+
setIsDropdownOpen(false);
|
|
489
|
+
setSearchQuery("");
|
|
490
|
+
},
|
|
491
|
+
className: "atech-country-option",
|
|
492
|
+
children: [
|
|
493
|
+
/* @__PURE__ */ jsxs2("span", { style: { display: "flex", alignItems: "center", gap: "0.5rem", overflow: "hidden" }, children: [
|
|
494
|
+
/* @__PURE__ */ jsx3("span", { children: getFlagEmoji(c.nameIso2) }),
|
|
495
|
+
/* @__PURE__ */ jsx3("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: c.name })
|
|
496
|
+
] }),
|
|
497
|
+
/* @__PURE__ */ jsx3("span", { style: { fontFamily: "monospace", color: "#64748b", fontWeight: 600 }, children: code })
|
|
498
|
+
]
|
|
499
|
+
},
|
|
500
|
+
c.id
|
|
501
|
+
);
|
|
502
|
+
}) : /* @__PURE__ */ jsx3("div", { style: { padding: "0.5rem", fontSize: "0.75rem", color: "#94a3b8", textAlign: "center" }, children: "No countries found" }) })
|
|
503
|
+
] }),
|
|
504
|
+
/* @__PURE__ */ jsx3(
|
|
505
|
+
"input",
|
|
506
|
+
{
|
|
507
|
+
type: "tel",
|
|
508
|
+
placeholder: "(555) 000-0000",
|
|
509
|
+
value: phoneNumber,
|
|
510
|
+
onChange: (e) => setPhoneNumber(e.target.value),
|
|
511
|
+
className: "atech-input",
|
|
512
|
+
style: { flex: 1 }
|
|
513
|
+
}
|
|
514
|
+
)
|
|
515
|
+
] })
|
|
516
|
+
] }),
|
|
517
|
+
/* @__PURE__ */ jsxs2("div", { className: "atech-field", children: [
|
|
518
|
+
/* @__PURE__ */ jsx3("label", { className: "atech-label", children: "Password" }),
|
|
519
|
+
/* @__PURE__ */ jsx3(
|
|
520
|
+
"input",
|
|
521
|
+
{
|
|
522
|
+
type: "password",
|
|
523
|
+
required: true,
|
|
524
|
+
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
525
|
+
value: password,
|
|
526
|
+
onChange: (e) => setPassword(e.target.value),
|
|
527
|
+
className: "atech-input"
|
|
528
|
+
}
|
|
529
|
+
)
|
|
530
|
+
] }),
|
|
531
|
+
/* @__PURE__ */ jsx3("button", { type: "submit", disabled: loading, className: "atech-button", children: loading ? /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
532
|
+
/* @__PURE__ */ jsxs2(
|
|
533
|
+
"svg",
|
|
534
|
+
{
|
|
535
|
+
className: "atech-spinner",
|
|
536
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
537
|
+
fill: "none",
|
|
538
|
+
viewBox: "0 0 24 24",
|
|
539
|
+
children: [
|
|
540
|
+
/* @__PURE__ */ jsx3(
|
|
541
|
+
"circle",
|
|
542
|
+
{
|
|
543
|
+
style: { opacity: 0.25 },
|
|
544
|
+
cx: "12",
|
|
545
|
+
cy: "12",
|
|
546
|
+
r: "10",
|
|
547
|
+
stroke: "currentColor",
|
|
548
|
+
strokeWidth: "4"
|
|
549
|
+
}
|
|
550
|
+
),
|
|
551
|
+
/* @__PURE__ */ jsx3(
|
|
552
|
+
"path",
|
|
553
|
+
{
|
|
554
|
+
style: { opacity: 0.75 },
|
|
555
|
+
fill: "currentColor",
|
|
556
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
557
|
+
}
|
|
558
|
+
)
|
|
559
|
+
]
|
|
560
|
+
}
|
|
561
|
+
),
|
|
562
|
+
/* @__PURE__ */ jsx3("span", { children: "Creating Account..." })
|
|
563
|
+
] }) : "Register" })
|
|
564
|
+
] }),
|
|
565
|
+
/* @__PURE__ */ jsx3("div", { className: "atech-footer", style: { justifyContent: "center" }, children: onLoginClick && /* @__PURE__ */ jsx3("button", { type: "button", onClick: onLoginClick, className: "atech-link", children: "Already have an account? Sign In" }) })
|
|
566
|
+
] });
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
// src/components/ForgotPasswordForm.tsx
|
|
570
|
+
import { useState as useState4 } from "react";
|
|
571
|
+
import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
572
|
+
var SDKForgotPasswordForm = ({
|
|
573
|
+
onSuccess,
|
|
574
|
+
onLoginClick,
|
|
575
|
+
className = ""
|
|
576
|
+
}) => {
|
|
577
|
+
const { client } = useAuth();
|
|
578
|
+
const [email, setEmail] = useState4("");
|
|
579
|
+
const [loading, setLoading] = useState4(false);
|
|
580
|
+
const [submitted, setSubmitted] = useState4(false);
|
|
581
|
+
const [error, setError] = useState4(null);
|
|
582
|
+
const colors = client?.config?.theme || {
|
|
583
|
+
primary: "#7c3aed",
|
|
584
|
+
navy: "#0f172a",
|
|
585
|
+
pink: "#ec4899",
|
|
586
|
+
bg: "#ffffff"
|
|
587
|
+
};
|
|
588
|
+
const dynamicThemeVars = {
|
|
589
|
+
"--atech-primary": colors.primary,
|
|
590
|
+
"--atech-navy": colors.navy,
|
|
591
|
+
"--atech-pink": colors.pink,
|
|
592
|
+
"--atech-bg": colors.bg
|
|
593
|
+
};
|
|
594
|
+
const logoSrc = client?.config?.brand?.logoUrl || logo_default;
|
|
595
|
+
const handleSubmit = async (e) => {
|
|
596
|
+
e.preventDefault();
|
|
597
|
+
setLoading(true);
|
|
598
|
+
setError(null);
|
|
599
|
+
try {
|
|
600
|
+
await client.forgotPassword({ email });
|
|
601
|
+
setSubmitted(true);
|
|
602
|
+
if (onSuccess) onSuccess();
|
|
603
|
+
} catch (err) {
|
|
604
|
+
setError(err.message || "Failed to send reset email. Please try again.");
|
|
605
|
+
} finally {
|
|
606
|
+
setLoading(false);
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
return /* @__PURE__ */ jsxs3("div", { className: `atech-card ${className}`, style: dynamicThemeVars, children: [
|
|
610
|
+
/* @__PURE__ */ jsx4("div", { className: "atech-header", children: /* @__PURE__ */ jsx4(
|
|
611
|
+
"img",
|
|
612
|
+
{
|
|
613
|
+
src: logoSrc,
|
|
614
|
+
alt: client?.config?.brand?.companyName || "Logo",
|
|
615
|
+
className: "atech-logo"
|
|
616
|
+
}
|
|
617
|
+
) }),
|
|
618
|
+
/* @__PURE__ */ jsx4("h1", { className: "atech-title", children: "Reset Password" }),
|
|
619
|
+
submitted ? /* @__PURE__ */ jsxs3("div", { style: { textAlign: "center" }, children: [
|
|
620
|
+
/* @__PURE__ */ jsxs3("p", { style: { fontSize: "0.875rem", color: "#334155", marginBottom: "1.5rem" }, children: [
|
|
621
|
+
"If an account exists for ",
|
|
622
|
+
/* @__PURE__ */ jsx4("strong", { children: email }),
|
|
623
|
+
", a password reset link has been sent."
|
|
624
|
+
] }),
|
|
625
|
+
onLoginClick && /* @__PURE__ */ jsx4("button", { type: "button", onClick: onLoginClick, className: "atech-button", children: "Return to Sign In" })
|
|
626
|
+
] }) : /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
627
|
+
error && /* @__PURE__ */ jsx4("div", { className: "atech-error", children: error }),
|
|
628
|
+
/* @__PURE__ */ jsxs3("form", { onSubmit: handleSubmit, className: "atech-form", children: [
|
|
629
|
+
/* @__PURE__ */ jsxs3("div", { className: "atech-field", children: [
|
|
630
|
+
/* @__PURE__ */ jsx4("label", { className: "atech-label", children: "Email Address" }),
|
|
631
|
+
/* @__PURE__ */ jsx4(
|
|
632
|
+
"input",
|
|
633
|
+
{
|
|
634
|
+
type: "email",
|
|
635
|
+
required: true,
|
|
636
|
+
placeholder: "john@example.com",
|
|
637
|
+
value: email,
|
|
638
|
+
onChange: (e) => setEmail(e.target.value),
|
|
639
|
+
className: "atech-input"
|
|
640
|
+
}
|
|
641
|
+
)
|
|
642
|
+
] }),
|
|
643
|
+
/* @__PURE__ */ jsx4("button", { type: "submit", disabled: loading, className: "atech-button", children: loading ? /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
644
|
+
/* @__PURE__ */ jsxs3(
|
|
645
|
+
"svg",
|
|
646
|
+
{
|
|
647
|
+
className: "atech-spinner",
|
|
648
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
649
|
+
fill: "none",
|
|
650
|
+
viewBox: "0 0 24 24",
|
|
651
|
+
children: [
|
|
652
|
+
/* @__PURE__ */ jsx4(
|
|
653
|
+
"circle",
|
|
654
|
+
{
|
|
655
|
+
style: { opacity: 0.25 },
|
|
656
|
+
cx: "12",
|
|
657
|
+
cy: "12",
|
|
658
|
+
r: "10",
|
|
659
|
+
stroke: "currentColor",
|
|
660
|
+
strokeWidth: "4"
|
|
661
|
+
}
|
|
662
|
+
),
|
|
663
|
+
/* @__PURE__ */ jsx4(
|
|
664
|
+
"path",
|
|
665
|
+
{
|
|
666
|
+
style: { opacity: 0.75 },
|
|
667
|
+
fill: "currentColor",
|
|
668
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
669
|
+
}
|
|
670
|
+
)
|
|
671
|
+
]
|
|
672
|
+
}
|
|
673
|
+
),
|
|
674
|
+
/* @__PURE__ */ jsx4("span", { children: "Sending Reset Link..." })
|
|
675
|
+
] }) : "Send Reset Link" })
|
|
676
|
+
] }),
|
|
677
|
+
/* @__PURE__ */ jsx4("div", { className: "atech-footer", style: { justifyContent: "center" }, children: onLoginClick && /* @__PURE__ */ jsx4("button", { type: "button", onClick: onLoginClick, className: "atech-link", children: "Back to Sign In" }) })
|
|
678
|
+
] })
|
|
679
|
+
] });
|
|
680
|
+
};
|
|
681
|
+
|
|
682
|
+
// src/components/AuthContainer.tsx
|
|
683
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
684
|
+
var SDKAuthContainer = ({
|
|
685
|
+
initialMode = "login",
|
|
686
|
+
onSuccess,
|
|
687
|
+
className = "",
|
|
688
|
+
ssoMessage = "A-Tech Single Sign-On"
|
|
689
|
+
}) => {
|
|
690
|
+
const [mode, setMode] = useState5(initialMode);
|
|
691
|
+
return /* @__PURE__ */ jsxs4("div", { className: `atech-auth-wrapper ${className}`, children: [
|
|
692
|
+
/* @__PURE__ */ jsxs4("div", { className: "atech-sso-badge", children: [
|
|
693
|
+
/* @__PURE__ */ jsx5("span", { className: "atech-sso-pulse" }),
|
|
694
|
+
/* @__PURE__ */ jsx5("span", { className: "atech-sso-text", children: ssoMessage })
|
|
695
|
+
] }),
|
|
696
|
+
mode === "login" && /* @__PURE__ */ jsx5(
|
|
697
|
+
SDKLoginForm,
|
|
698
|
+
{
|
|
699
|
+
onSuccess,
|
|
700
|
+
onRegisterClick: () => setMode("register"),
|
|
701
|
+
onForgotPasswordClick: () => setMode("forgot-password")
|
|
702
|
+
}
|
|
703
|
+
),
|
|
704
|
+
mode === "register" && /* @__PURE__ */ jsx5(
|
|
705
|
+
SDKRegisterForm,
|
|
706
|
+
{
|
|
707
|
+
onSuccess,
|
|
708
|
+
onLoginClick: () => setMode("login")
|
|
709
|
+
}
|
|
710
|
+
),
|
|
711
|
+
mode === "forgot-password" && /* @__PURE__ */ jsx5(
|
|
712
|
+
SDKForgotPasswordForm,
|
|
713
|
+
{
|
|
714
|
+
onSuccess,
|
|
715
|
+
onLoginClick: () => setMode("login")
|
|
716
|
+
}
|
|
717
|
+
)
|
|
718
|
+
] });
|
|
719
|
+
};
|
|
720
|
+
export {
|
|
721
|
+
AuthClient,
|
|
722
|
+
AuthProvider,
|
|
723
|
+
DEFAULT_ENDPOINTS,
|
|
724
|
+
DEFAULT_ENVIRONMENT_URLS,
|
|
725
|
+
DEFAULT_SDK_CONFIG,
|
|
726
|
+
DEFAULT_STORAGE_KEYS,
|
|
727
|
+
DEFAULT_THEME,
|
|
728
|
+
SDKAuthContainer,
|
|
729
|
+
getSDKConfig,
|
|
730
|
+
useAuth
|
|
731
|
+
};
|