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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "realtimex-crm",
3
- "version": "0.7.13",
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
- const handleClickOpenPasswordChange = () => {
110
- // Redirect to forgot-password page which uses OTP flow
111
- navigate('/forgot-password');
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
- <div className="relative z-20 flex items-center text-lg font-medium">
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
- </div>
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]">