realtimex-crm 0.7.13 → 0.8.1
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/assets/{DealList-KrnFWRm0.js → DealList-B3alafQv.js} +2 -2
- package/dist/assets/{DealList-KrnFWRm0.js.map → DealList-B3alafQv.js.map} +1 -1
- package/dist/assets/{index-CdoQZFIX.css → index-CHk72bAf.css} +1 -1
- package/dist/assets/{index-2BRppCGo.js → index-mhAjQ1_w.js} +20 -20
- package/dist/assets/{index-2BRppCGo.js.map → index-mhAjQ1_w.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/stats.html +1 -1
- package/package.json +1 -1
- package/src/components/atomic-crm/settings/SettingsPage.tsx +4 -5
- package/src/components/supabase/change-password-page.tsx +9 -1
- package/src/components/supabase/forgot-password-page.tsx +30 -0
- package/src/components/supabase/layout.tsx +6 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "realtimex-crm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "RealTimeX CRM - A full-featured CRM built with React, shadcn-admin-kit, and Supabase. Fork of Atomic CRM with RealTimeX App SDK integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -106,11 +106,10 @@ const SettingsForm = ({
|
|
|
106
106
|
});
|
|
107
107
|
if (!identity) return null;
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
const handleClickOpenPasswordChange = () => {
|
|
110
|
+
// Navigate directly to the change password page for authenticated users
|
|
111
|
+
navigate('/change-password');
|
|
112
|
+
};
|
|
114
113
|
const handleAvatarUpdate = async (values: any) => {
|
|
115
114
|
mutateSale(values);
|
|
116
115
|
};
|
|
@@ -5,7 +5,7 @@ import type { FieldValues, SubmitHandler } from "react-hook-form";
|
|
|
5
5
|
import { TextInput } from "@/components/admin/text-input";
|
|
6
6
|
import { Button } from "@/components/ui/button";
|
|
7
7
|
import { supabase } from "@/components/atomic-crm/providers/supabase/supabase";
|
|
8
|
-
import { useNavigate } from "react-router";
|
|
8
|
+
import { useNavigate, Link } from "react-router";
|
|
9
9
|
|
|
10
10
|
interface FormData {
|
|
11
11
|
password: string;
|
|
@@ -112,6 +112,14 @@ export const ChangePasswordPage = () => {
|
|
|
112
112
|
{loading ? "Updating..." : "Update password"}
|
|
113
113
|
</Button>
|
|
114
114
|
</Form>
|
|
115
|
+
<div className="text-center">
|
|
116
|
+
<Link
|
|
117
|
+
to="/"
|
|
118
|
+
className="text-sm text-muted-foreground hover:text-primary underline-offset-4 hover:underline"
|
|
119
|
+
>
|
|
120
|
+
Back to login
|
|
121
|
+
</Link>
|
|
122
|
+
</div>
|
|
115
123
|
</Layout>
|
|
116
124
|
);
|
|
117
125
|
};
|
|
@@ -6,6 +6,7 @@ import { TextInput } from "@/components/admin/text-input";
|
|
|
6
6
|
import { Button } from "@/components/ui/button";
|
|
7
7
|
import { OtpInput } from "@/components/supabase/otp-input";
|
|
8
8
|
import { supabase } from "@/components/atomic-crm/providers/supabase/supabase";
|
|
9
|
+
import { Link } from "react-router";
|
|
9
10
|
|
|
10
11
|
interface EmailFormData {
|
|
11
12
|
email: string;
|
|
@@ -175,6 +176,14 @@ export const ForgotPasswordPage = () => {
|
|
|
175
176
|
})}
|
|
176
177
|
</Button>
|
|
177
178
|
</Form>
|
|
179
|
+
<div className="text-center">
|
|
180
|
+
<Link
|
|
181
|
+
to="/"
|
|
182
|
+
className="text-sm text-muted-foreground hover:text-primary underline-offset-4 hover:underline"
|
|
183
|
+
>
|
|
184
|
+
Back to login
|
|
185
|
+
</Link>
|
|
186
|
+
</div>
|
|
178
187
|
</>
|
|
179
188
|
) : (
|
|
180
189
|
<>
|
|
@@ -220,8 +229,29 @@ export const ForgotPasswordPage = () => {
|
|
|
220
229
|
>
|
|
221
230
|
Resend code
|
|
222
231
|
</Button>
|
|
232
|
+
<Button
|
|
233
|
+
type="button"
|
|
234
|
+
variant="ghost"
|
|
235
|
+
className="cursor-pointer w-full"
|
|
236
|
+
disabled={loading}
|
|
237
|
+
onClick={() => {
|
|
238
|
+
setStep('email');
|
|
239
|
+
setOtp('');
|
|
240
|
+
setOtpError(false);
|
|
241
|
+
}}
|
|
242
|
+
>
|
|
243
|
+
← Back to email
|
|
244
|
+
</Button>
|
|
223
245
|
</div>
|
|
224
246
|
</div>
|
|
247
|
+
<div className="text-center">
|
|
248
|
+
<Link
|
|
249
|
+
to="/"
|
|
250
|
+
className="text-sm text-muted-foreground hover:text-primary underline-offset-4 hover:underline"
|
|
251
|
+
>
|
|
252
|
+
Back to login
|
|
253
|
+
</Link>
|
|
254
|
+
</div>
|
|
225
255
|
</>
|
|
226
256
|
)}
|
|
227
257
|
</Layout>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { Link } from "react-router";
|
|
2
3
|
import { Notification } from "@/components/admin/notification";
|
|
3
4
|
import { useConfigurationContext } from "@/components/atomic-crm/root/ConfigurationContext";
|
|
4
5
|
|
|
@@ -10,10 +11,13 @@ export const Layout = ({ children }: React.PropsWithChildren) => {
|
|
|
10
11
|
<div className="container relative grid flex-col items-center justify-center sm:max-w-none lg:grid-cols-2 lg:px-0">
|
|
11
12
|
<div className="relative hidden h-full flex-col bg-muted p-10 text-white dark:border-r lg:flex">
|
|
12
13
|
<div className="absolute inset-0 bg-zinc-900" />
|
|
13
|
-
<
|
|
14
|
+
<Link
|
|
15
|
+
to="/"
|
|
16
|
+
className="relative z-20 flex items-center text-lg font-medium no-underline text-white hover:opacity-80 transition-opacity"
|
|
17
|
+
>
|
|
14
18
|
<img className="h-6 mr-2" src={darkModeLogo} alt={title} />
|
|
15
19
|
{title}
|
|
16
|
-
</
|
|
20
|
+
</Link>
|
|
17
21
|
</div>
|
|
18
22
|
<div className="lg:p-8">
|
|
19
23
|
<div className="mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]">
|