eleven-solutions-common-website-unique-web 21.0.56 → 22.0.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/App.d.ts +0 -3
- package/dist/App.js +0 -2
- package/dist/components/admin/Sidebar.d.ts +0 -1
- package/dist/components/admin/Sidebar.js +2 -2
- package/dist/components/admin/UserForm.js +6 -5
- package/dist/components/admin/Users.js +4 -3
- package/dist/components/footer/Footer.d.ts +3 -2
- package/dist/components/footer/Footer.js +2 -3
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +3 -2
- package/dist/components/login/GoogleButton.js +4 -1
- package/dist/components/login/Header.d.ts +3 -1
- package/dist/components/login/Header.js +135 -31
- package/dist/components/login/Login.d.ts +2 -1
- package/dist/components/login/Login.js +15 -65
- package/dist/components/login/Setcookie.d.ts +2 -0
- package/dist/components/login/Setcookie.js +7 -0
- package/dist/components/redux/slices/types/types.d.ts +3 -0
- package/dist/components/redux/slices/types/types.js +1 -0
- package/dist/components/redux/slices/userSlice.d.ts +20 -0
- package/dist/components/redux/slices/userSlice.js +90 -0
- package/dist/components/useraccount/UpdateUserDetails.d.ts +1 -0
- package/dist/components/useraccount/UpdateUserDetails.js +15 -22
- package/package.json +9 -4
- package/.github/workflows/main.yml +0 -22
- package/azure-pipelines.yml +0 -20
- package/dist/components/Navbar.d.ts +0 -6
- package/dist/components/Navbar.js +0 -5
- package/dist/components/login/View.d.ts +0 -2
- package/dist/components/login/View.js +0 -10
- package/dist/components/useraccount/AddMissingDetails.d.ts +0 -9
- package/dist/components/useraccount/AddMissingDetails.js +0 -56
- package/dist/components/useraccount/AddUserDetails.d.ts +0 -9
- package/dist/components/useraccount/AddUserDetails.js +0 -21
- package/src/App.tsx +0 -21
- package/src/components/Navbar.tsx +0 -21
- package/src/components/admin/Dashboard.tsx +0 -7
- package/src/components/admin/Editor.tsx +0 -25
- package/src/components/admin/Sidebar.tsx +0 -102
- package/src/components/admin/Taxionomies.tsx +0 -314
- package/src/components/admin/TaxonomyForm.tsx +0 -744
- package/src/components/admin/Template.tsx +0 -304
- package/src/components/admin/TemplateForm.tsx +0 -141
- package/src/components/admin/UserForm.tsx +0 -231
- package/src/components/admin/Users.tsx +0 -479
- package/src/components/api/api.ts +0 -59
- package/src/components/api/taxonomy.ts +0 -201
- package/src/components/api/template.ts +0 -114
- package/src/components/api/updateuser.ts +0 -53
- package/src/components/api/user.ts +0 -133
- package/src/components/footer/Footer.tsx +0 -128
- package/src/components/footer/Privacy.tsx +0 -82
- package/src/components/footer/Terms.tsx +0 -156
- package/src/components/index.ts +0 -19
- package/src/components/login/GoogleButton.tsx +0 -85
- package/src/components/login/Header.tsx +0 -340
- package/src/components/login/Login.tsx +0 -277
- package/src/components/useraccount/AddUserDetails.tsx +0 -136
- package/src/components/useraccount/UpdateUserDetails.tsx +0 -214
- package/src/index.ts +0 -1
- package/tsconfig.json +0 -15
@@ -1,201 +0,0 @@
|
|
1
|
-
import axios from "axios";
|
2
|
-
import Cookies from "universal-cookie";
|
3
|
-
const apiUrl = "http://localhost:5260";
|
4
|
-
const cookies = new Cookies();
|
5
|
-
|
6
|
-
export const addTaxonomyApi = async (
|
7
|
-
url: string,
|
8
|
-
type: string,
|
9
|
-
code: number,
|
10
|
-
value: string
|
11
|
-
) => {
|
12
|
-
const token = cookies.get("authToken");
|
13
|
-
|
14
|
-
try {
|
15
|
-
const response = await axios.post(
|
16
|
-
`${url}/taxonomy/add`,
|
17
|
-
{
|
18
|
-
Type: type,
|
19
|
-
Code: code,
|
20
|
-
Value: value,
|
21
|
-
},
|
22
|
-
{
|
23
|
-
headers: {
|
24
|
-
Authorization: `Bearer ${token}`,
|
25
|
-
},
|
26
|
-
}
|
27
|
-
);
|
28
|
-
return response;
|
29
|
-
} catch (error) {
|
30
|
-
console.error(error);
|
31
|
-
|
32
|
-
throw error;
|
33
|
-
}
|
34
|
-
};
|
35
|
-
|
36
|
-
export const fetchTaxonomiessApi = async (url: string) => {
|
37
|
-
const token = cookies.get("authToken");
|
38
|
-
|
39
|
-
try {
|
40
|
-
const response = await axios.get(`${url}/taxonomy/gettaxonomy`, {
|
41
|
-
headers: {
|
42
|
-
Authorization: `Bearer ${token}`,
|
43
|
-
},
|
44
|
-
});
|
45
|
-
return response.data;
|
46
|
-
} catch (error) {
|
47
|
-
console.error(error);
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
};
|
51
|
-
|
52
|
-
export const deleteTaxonomyApi = async (url: string, id: string) => {
|
53
|
-
const token = cookies.get("authToken");
|
54
|
-
|
55
|
-
try {
|
56
|
-
const response = await axios.request({
|
57
|
-
method: "DELETE",
|
58
|
-
url: `${url}/taxonomy/delete`,
|
59
|
-
headers: {
|
60
|
-
Authorization: `Bearer ${token}`,
|
61
|
-
"Content-Type": "application/json",
|
62
|
-
},
|
63
|
-
data: {
|
64
|
-
id,
|
65
|
-
},
|
66
|
-
});
|
67
|
-
return response.data;
|
68
|
-
} catch (error) {
|
69
|
-
console.error("Error deleting taxonomy:", error);
|
70
|
-
throw error;
|
71
|
-
}
|
72
|
-
};
|
73
|
-
|
74
|
-
export const fetchTaxonomyByIdApi = async (url: string, taxonomyId: string) => {
|
75
|
-
const cookies = new Cookies();
|
76
|
-
const token = cookies.get("authToken");
|
77
|
-
|
78
|
-
try {
|
79
|
-
const response = await axios.get(
|
80
|
-
`${url}/taxonomy/gettaxonomybyid/${taxonomyId}`,
|
81
|
-
{
|
82
|
-
headers: {
|
83
|
-
Authorization: `Bearer ${token}`,
|
84
|
-
},
|
85
|
-
}
|
86
|
-
);
|
87
|
-
|
88
|
-
return response.data;
|
89
|
-
} catch (error) {
|
90
|
-
console.error("Error fetching user by ID:", error);
|
91
|
-
return false;
|
92
|
-
}
|
93
|
-
};
|
94
|
-
|
95
|
-
export const updateTaxonomyApi = async (
|
96
|
-
url: string,
|
97
|
-
id: string,
|
98
|
-
type: string,
|
99
|
-
code: number,
|
100
|
-
value: string
|
101
|
-
) => {
|
102
|
-
const token = cookies.get("authToken");
|
103
|
-
|
104
|
-
try {
|
105
|
-
const response = await axios.post(
|
106
|
-
`${url}/taxonomy/updatetaxonomy`,
|
107
|
-
{
|
108
|
-
Id: id,
|
109
|
-
Type: type,
|
110
|
-
Code: code,
|
111
|
-
Value: value,
|
112
|
-
},
|
113
|
-
{
|
114
|
-
headers: {
|
115
|
-
Authorization: `Bearer ${token}`,
|
116
|
-
},
|
117
|
-
}
|
118
|
-
);
|
119
|
-
return response.data;
|
120
|
-
} catch (error) {
|
121
|
-
throw error;
|
122
|
-
}
|
123
|
-
};
|
124
|
-
|
125
|
-
export const addMultipleTaxonomiesApi = async (
|
126
|
-
url: string,
|
127
|
-
taxonomies: { type: string; code: number; value: string }[]
|
128
|
-
) => {
|
129
|
-
const token = cookies.get("authToken");
|
130
|
-
|
131
|
-
try {
|
132
|
-
const response = await axios.post(
|
133
|
-
`${url}/taxonomy/addmultipletaxonomies`,
|
134
|
-
taxonomies,
|
135
|
-
{
|
136
|
-
headers: {
|
137
|
-
Authorization: `Bearer ${token}`,
|
138
|
-
"Content-Type": "application/json",
|
139
|
-
},
|
140
|
-
}
|
141
|
-
);
|
142
|
-
return response;
|
143
|
-
} catch (error: any) {
|
144
|
-
console.error(
|
145
|
-
"Error adding multiple taxonomies:",
|
146
|
-
error.response?.data || error
|
147
|
-
);
|
148
|
-
throw error;
|
149
|
-
}
|
150
|
-
};
|
151
|
-
|
152
|
-
export const isMultipleApi = async (url: string, type: string) => {
|
153
|
-
const token = cookies.get("authToken");
|
154
|
-
|
155
|
-
try {
|
156
|
-
const response = await axios.get(
|
157
|
-
`${url}/taxonomy/IsTaxonomyMultipleByType/${type}`,
|
158
|
-
{
|
159
|
-
headers: {
|
160
|
-
Authorization: `Bearer ${token}`,
|
161
|
-
},
|
162
|
-
}
|
163
|
-
);
|
164
|
-
return response.data;
|
165
|
-
} catch (error) {
|
166
|
-
console.error("Error checking if taxonomy is multiple:", error);
|
167
|
-
throw error;
|
168
|
-
}
|
169
|
-
};
|
170
|
-
|
171
|
-
export const addSubTypeApi = async (
|
172
|
-
url: string,
|
173
|
-
parentid: string,
|
174
|
-
type: string,
|
175
|
-
code: number,
|
176
|
-
value: string
|
177
|
-
) => {
|
178
|
-
const token = cookies.get("authToken");
|
179
|
-
|
180
|
-
try {
|
181
|
-
const response = await axios.post(
|
182
|
-
`${url}/taxonomy/addsubtype`,
|
183
|
-
{
|
184
|
-
ParentId: parentid,
|
185
|
-
Type: type,
|
186
|
-
Code: code,
|
187
|
-
Value: value,
|
188
|
-
},
|
189
|
-
{
|
190
|
-
headers: {
|
191
|
-
Authorization: `Bearer ${token}`,
|
192
|
-
},
|
193
|
-
}
|
194
|
-
);
|
195
|
-
return response;
|
196
|
-
} catch (error) {
|
197
|
-
console.error(error);
|
198
|
-
|
199
|
-
throw error;
|
200
|
-
}
|
201
|
-
};
|
@@ -1,114 +0,0 @@
|
|
1
|
-
import axios from "axios";
|
2
|
-
import Cookies from "universal-cookie";
|
3
|
-
const apiUrl = "http://localhost:5260";
|
4
|
-
const cookies = new Cookies();
|
5
|
-
|
6
|
-
export const addTemplateApi = async (
|
7
|
-
url: string,
|
8
|
-
name: string,
|
9
|
-
content: string
|
10
|
-
) => {
|
11
|
-
const token = cookies.get("authToken");
|
12
|
-
|
13
|
-
try {
|
14
|
-
const response = await axios.post(
|
15
|
-
`${url}/template/add`,
|
16
|
-
{
|
17
|
-
Name: name,
|
18
|
-
Content: content,
|
19
|
-
},
|
20
|
-
{
|
21
|
-
headers: {
|
22
|
-
Authorization: `Bearer ${token}`,
|
23
|
-
},
|
24
|
-
}
|
25
|
-
);
|
26
|
-
return response;
|
27
|
-
} catch (error) {
|
28
|
-
console.error(error);
|
29
|
-
throw error;
|
30
|
-
}
|
31
|
-
};
|
32
|
-
|
33
|
-
export const fetchTemplatesApi = async (url: string) => {
|
34
|
-
const token = cookies.get("authToken");
|
35
|
-
|
36
|
-
try {
|
37
|
-
const response = await axios.get(`${url}/template/gettemplate`, {
|
38
|
-
headers: {
|
39
|
-
Authorization: `Bearer ${token}`,
|
40
|
-
},
|
41
|
-
});
|
42
|
-
return response.data;
|
43
|
-
} catch (error) {
|
44
|
-
console.error(error);
|
45
|
-
return false;
|
46
|
-
}
|
47
|
-
};
|
48
|
-
|
49
|
-
export const fetchTemplateByIdApi = async (url: string, id: string) => {
|
50
|
-
const cookies = new Cookies();
|
51
|
-
const token = cookies.get("authToken");
|
52
|
-
|
53
|
-
try {
|
54
|
-
const response = await axios.get(`${url}/template/gettemplatebyid/${id}`, {
|
55
|
-
headers: {
|
56
|
-
Authorization: `Bearer ${token}`,
|
57
|
-
},
|
58
|
-
});
|
59
|
-
|
60
|
-
return response.data;
|
61
|
-
} catch (error) {
|
62
|
-
console.error("Error fetching template by ID:", error);
|
63
|
-
return false;
|
64
|
-
}
|
65
|
-
};
|
66
|
-
|
67
|
-
export const updateTemplateApi = async (
|
68
|
-
url: string,
|
69
|
-
id: string,
|
70
|
-
name: string,
|
71
|
-
content: string
|
72
|
-
) => {
|
73
|
-
const token = cookies.get("authToken");
|
74
|
-
|
75
|
-
try {
|
76
|
-
const response = await axios.post(
|
77
|
-
`${url}/template/updatetemplate`,
|
78
|
-
{
|
79
|
-
id: id,
|
80
|
-
name: name,
|
81
|
-
content: content,
|
82
|
-
},
|
83
|
-
{
|
84
|
-
headers: {
|
85
|
-
Authorization: `Bearer ${token}`,
|
86
|
-
},
|
87
|
-
}
|
88
|
-
);
|
89
|
-
return response.data;
|
90
|
-
} catch (error) {
|
91
|
-
throw error;
|
92
|
-
}
|
93
|
-
};
|
94
|
-
|
95
|
-
export const deleteTemplateApi = async (url: string, id: string) => {
|
96
|
-
const token = cookies.get("authToken");
|
97
|
-
|
98
|
-
try {
|
99
|
-
const response = await axios.post(
|
100
|
-
`${url}/template/deletetemplate`,
|
101
|
-
{
|
102
|
-
id: id,
|
103
|
-
},
|
104
|
-
{
|
105
|
-
headers: {
|
106
|
-
Authorization: `Bearer ${token}`,
|
107
|
-
},
|
108
|
-
}
|
109
|
-
);
|
110
|
-
return response.data;
|
111
|
-
} catch (error) {
|
112
|
-
throw error;
|
113
|
-
}
|
114
|
-
};
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import axios from "axios";
|
2
|
-
interface UserProfile {
|
3
|
-
name: string;
|
4
|
-
mobile: string;
|
5
|
-
address: string;
|
6
|
-
// add any other fields that `userProfile` is expected to have
|
7
|
-
}
|
8
|
-
|
9
|
-
export const getProfileApi = async (
|
10
|
-
token: string,
|
11
|
-
apiurl: string
|
12
|
-
): Promise<UserProfile | false> => {
|
13
|
-
try {
|
14
|
-
const response = await axios.get<UserProfile>(`${apiurl}/login/get`, {
|
15
|
-
headers: {
|
16
|
-
Authorization: `Bearer ${token}`,
|
17
|
-
},
|
18
|
-
});
|
19
|
-
return response.data;
|
20
|
-
} catch (error: any) {
|
21
|
-
console.error(error);
|
22
|
-
return false;
|
23
|
-
}
|
24
|
-
};
|
25
|
-
|
26
|
-
export const updateProfileApi = async (
|
27
|
-
url: string,
|
28
|
-
token: string,
|
29
|
-
name: string,
|
30
|
-
mobile: string,
|
31
|
-
address: string
|
32
|
-
) => {
|
33
|
-
try {
|
34
|
-
const response = await axios.post(
|
35
|
-
`${url}/login/update`,
|
36
|
-
{
|
37
|
-
url,
|
38
|
-
name,
|
39
|
-
mobile,
|
40
|
-
address,
|
41
|
-
},
|
42
|
-
{
|
43
|
-
headers: {
|
44
|
-
Authorization: `Bearer ${token}`,
|
45
|
-
},
|
46
|
-
}
|
47
|
-
);
|
48
|
-
return response;
|
49
|
-
} catch (error) {
|
50
|
-
console.error("Error during API call:", error);
|
51
|
-
throw error;
|
52
|
-
}
|
53
|
-
};
|
@@ -1,133 +0,0 @@
|
|
1
|
-
import axios from "axios";
|
2
|
-
import Cookies from "universal-cookie";
|
3
|
-
const apiUrl = "http://localhost:5260";
|
4
|
-
const cookies = new Cookies();
|
5
|
-
|
6
|
-
export const addUserApi = async (
|
7
|
-
url: string,
|
8
|
-
name: string,
|
9
|
-
email: string,
|
10
|
-
mobile: string,
|
11
|
-
address: string,
|
12
|
-
roleType: string,
|
13
|
-
gender: string
|
14
|
-
) => {
|
15
|
-
const token = cookies.get("authToken");
|
16
|
-
|
17
|
-
try {
|
18
|
-
const response = await axios.post(
|
19
|
-
`${url}/login/adduser`,
|
20
|
-
{
|
21
|
-
Name: name,
|
22
|
-
Email: email,
|
23
|
-
Mobile: mobile,
|
24
|
-
Address: address,
|
25
|
-
RoleType: Number(roleType),
|
26
|
-
Gender: Number(gender),
|
27
|
-
},
|
28
|
-
{
|
29
|
-
headers: {
|
30
|
-
Authorization: `Bearer ${token}`,
|
31
|
-
},
|
32
|
-
}
|
33
|
-
);
|
34
|
-
return response;
|
35
|
-
} catch (error) {
|
36
|
-
console.error(error);
|
37
|
-
|
38
|
-
throw error;
|
39
|
-
}
|
40
|
-
};
|
41
|
-
|
42
|
-
export const fetchUsersApi = async (url: string) => {
|
43
|
-
const token = cookies.get("authToken");
|
44
|
-
|
45
|
-
try {
|
46
|
-
const response = await axios.get(`${url}/login/getuser`, {
|
47
|
-
headers: {
|
48
|
-
Authorization: `Bearer ${token}`,
|
49
|
-
},
|
50
|
-
});
|
51
|
-
return response.data;
|
52
|
-
} catch (error) {
|
53
|
-
console.error(error);
|
54
|
-
return false;
|
55
|
-
}
|
56
|
-
};
|
57
|
-
|
58
|
-
export const fetchUserByIdApi = async (url: string, userId: string) => {
|
59
|
-
const cookies = new Cookies();
|
60
|
-
const token = cookies.get("authToken");
|
61
|
-
|
62
|
-
try {
|
63
|
-
const response = await axios.get(`${url}/login/getuserbyid/${userId}`, {
|
64
|
-
headers: {
|
65
|
-
Authorization: `Bearer ${token}`,
|
66
|
-
},
|
67
|
-
});
|
68
|
-
|
69
|
-
return response.data;
|
70
|
-
} catch (error) {
|
71
|
-
console.error("Error fetching user by ID:", error);
|
72
|
-
return false;
|
73
|
-
}
|
74
|
-
};
|
75
|
-
|
76
|
-
export const deleteUserApi = async (url: string, id: string) => {
|
77
|
-
const token = cookies.get("authToken");
|
78
|
-
|
79
|
-
try {
|
80
|
-
const response = await axios.request({
|
81
|
-
method: "DELETE",
|
82
|
-
url: `${url}/login/delete`,
|
83
|
-
headers: {
|
84
|
-
Authorization: `Bearer ${token}`,
|
85
|
-
"Content-Type": "application/json",
|
86
|
-
},
|
87
|
-
data: {
|
88
|
-
id,
|
89
|
-
},
|
90
|
-
});
|
91
|
-
return response.data;
|
92
|
-
} catch (error) {
|
93
|
-
console.error("Error deleting user:", error);
|
94
|
-
throw error;
|
95
|
-
}
|
96
|
-
};
|
97
|
-
|
98
|
-
export const updateUserApi = async (
|
99
|
-
url: string,
|
100
|
-
|
101
|
-
id: string,
|
102
|
-
name: string,
|
103
|
-
email: string,
|
104
|
-
mobile: string,
|
105
|
-
address: string,
|
106
|
-
roleType: string,
|
107
|
-
gender: string
|
108
|
-
) => {
|
109
|
-
const token = cookies.get("authToken");
|
110
|
-
|
111
|
-
try {
|
112
|
-
const response = await axios.post(
|
113
|
-
`${url}/login/updateuser`,
|
114
|
-
{
|
115
|
-
Id: id,
|
116
|
-
Name: name,
|
117
|
-
Email: email,
|
118
|
-
Mobile: mobile,
|
119
|
-
Address: address,
|
120
|
-
RoleType: Number(roleType),
|
121
|
-
Gender: Number(gender),
|
122
|
-
},
|
123
|
-
{
|
124
|
-
headers: {
|
125
|
-
Authorization: `Bearer ${token}`,
|
126
|
-
},
|
127
|
-
}
|
128
|
-
);
|
129
|
-
return response.data;
|
130
|
-
} catch (error) {
|
131
|
-
throw error;
|
132
|
-
}
|
133
|
-
};
|
@@ -1,128 +0,0 @@
|
|
1
|
-
import React from "react";
|
2
|
-
|
3
|
-
const data = [
|
4
|
-
{
|
5
|
-
title: "About",
|
6
|
-
links: [
|
7
|
-
{ label: "About Us", link: "/about" },
|
8
|
-
{ label: "Terms and Conditions", link: "/termsandconditions" },
|
9
|
-
{ label: "Privacy and Policy", link: "/privacyandpolicy" },
|
10
|
-
{ label: "Refund Policy", link: "/refundpolicy" },
|
11
|
-
],
|
12
|
-
},
|
13
|
-
{
|
14
|
-
title: "Services",
|
15
|
-
links: [
|
16
|
-
{ label: "Coming Soon", link: "#" },
|
17
|
-
{ label: "Coming Soon", link: "#" },
|
18
|
-
{ label: "Coming Soon", link: "#" },
|
19
|
-
{ label: "Coming Soon", link: "#" },
|
20
|
-
],
|
21
|
-
},
|
22
|
-
{
|
23
|
-
title: "Departments",
|
24
|
-
links: [
|
25
|
-
{ label: "Coming Soon", link: "#" },
|
26
|
-
{ label: "Coming Soon", link: "#" },
|
27
|
-
{ label: "Coming Soon", link: "#" },
|
28
|
-
{ label: "Coming Soon", link: "#" },
|
29
|
-
],
|
30
|
-
},
|
31
|
-
];
|
32
|
-
|
33
|
-
interface FooterProps {
|
34
|
-
companyName?: string;
|
35
|
-
isDarkMode?: boolean;
|
36
|
-
}
|
37
|
-
|
38
|
-
const Footer: React.FC<FooterProps> = ({
|
39
|
-
companyName = "Eleven Software Solutions Pvt. Ltd.",
|
40
|
-
isDarkMode = false,
|
41
|
-
}) => {
|
42
|
-
const handleNavigation = (event: React.MouseEvent, path: string) => {
|
43
|
-
event.preventDefault();
|
44
|
-
window.history.pushState({}, "", path);
|
45
|
-
window.dispatchEvent(new PopStateEvent("popstate"));
|
46
|
-
};
|
47
|
-
|
48
|
-
const groups = data.map((group) => (
|
49
|
-
<div key={group.title}>
|
50
|
-
<h3
|
51
|
-
className={`${
|
52
|
-
isDarkMode ? " text-[#ffff]" : " text-[#000000]"
|
53
|
-
} text-lg font-bold mb-3`}
|
54
|
-
>
|
55
|
-
{group.title}
|
56
|
-
</h3>
|
57
|
-
<ul>
|
58
|
-
{group.links.map((link, index) => (
|
59
|
-
<li key={index} className="mb-2">
|
60
|
-
<a
|
61
|
-
href={link.link}
|
62
|
-
onClick={(event) => handleNavigation(event, link.link)}
|
63
|
-
className={`${
|
64
|
-
isDarkMode ? "text-[#B8B8B8]" : "bg-[#f8f9fa] text-[#b69B96]"
|
65
|
-
} cursor-pointer hover:text-blue-200 hover:underline`}
|
66
|
-
>
|
67
|
-
{link.label}
|
68
|
-
</a>
|
69
|
-
</li>
|
70
|
-
))}
|
71
|
-
</ul>
|
72
|
-
</div>
|
73
|
-
));
|
74
|
-
|
75
|
-
const thisName = "Barelvi";
|
76
|
-
|
77
|
-
return (
|
78
|
-
<footer
|
79
|
-
className={`${
|
80
|
-
isDarkMode
|
81
|
-
? "bg-[#2e2e2e] lg:border-t lg:border-[#3b3b3b] md:border-t md:border-[#3b3b3b]"
|
82
|
-
: "bg-[#f8f9fa] border-t border-[#E9ECEF]"
|
83
|
-
} py-8`}
|
84
|
-
>
|
85
|
-
<div className="container mx-auto px-6 flex flex-col lg:flex-row lg:justify-between items-center">
|
86
|
-
<div className="flex flex-col items-center lg:items-start lg:mb-0 ">
|
87
|
-
<img
|
88
|
-
src="images/BarelviLogo.png"
|
89
|
-
alt="Logo"
|
90
|
-
className="w-16 h-16 mb-0"
|
91
|
-
/>
|
92
|
-
<h2 className="text-2xl font-semibold bg-gradient-to-r from-red-500 to-yellow-400 bg-clip-text text-transparent">
|
93
|
-
{thisName}
|
94
|
-
</h2>
|
95
|
-
<p className="text-sm text-[#6c8282]">
|
96
|
-
A step towards digitalization for Islamic Learning
|
97
|
-
</p>
|
98
|
-
</div>
|
99
|
-
<div className="hidden md:flex md:flex:row md:mt-4 lg:flex lg:flex-row justify-between w-full lg:w-1/2 ">
|
100
|
-
{groups}
|
101
|
-
</div>
|
102
|
-
</div>
|
103
|
-
|
104
|
-
<div
|
105
|
-
className={`${
|
106
|
-
isDarkMode ? "border-t border-[#424242]" : "border-t border-[#e9efec]"
|
107
|
-
} py-4 mt-4 justify-between`}
|
108
|
-
>
|
109
|
-
<div className="container mx-auto text-[#828282] text-sm px-6 text-center lg:flex lg:justify-between md:flex md:justify-between">
|
110
|
-
<p>© 2024 {thisName}. All rights reserved.</p>
|
111
|
-
<p>
|
112
|
-
Developed By:{" "}
|
113
|
-
<a
|
114
|
-
href="http://www.11.Solutions"
|
115
|
-
target="_blank"
|
116
|
-
rel="noreferrer"
|
117
|
-
className="text-blue-300 hover:underline"
|
118
|
-
>
|
119
|
-
{companyName}
|
120
|
-
</a>
|
121
|
-
</p>
|
122
|
-
</div>
|
123
|
-
</div>
|
124
|
-
</footer>
|
125
|
-
);
|
126
|
-
};
|
127
|
-
|
128
|
-
export default Footer;
|
@@ -1,82 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
|
3
|
-
function Privacy({isDarkMode}) {
|
4
|
-
|
5
|
-
|
6
|
-
return (
|
7
|
-
<div className={`min-h-[70vh] p-4 text-justify lg:px-72 lg:text-justify ${isDarkMode ? "bg-globalBg text-[#ffff]" : "bg-white text-black"}`}>
|
8
|
-
<h2 className="text-xl font-extrabold mt-4 text-blue-400 text-center">PRIVACY AND POLICY</h2>
|
9
|
-
<p className="text-sm text-gray-500 mt-3">
|
10
|
-
Welcome to TajushShariah Foundation - Islamic Trust For Donation. This Privacy Policy is
|
11
|
-
designed to help you understand how we collect, use, disclose, and safeguard your personal
|
12
|
-
information when you use our website, services, or interact with us.
|
13
|
-
</p>
|
14
|
-
|
15
|
-
<h5 className="text-lg font-medium mt-4">1. Information We Collect</h5>
|
16
|
-
<p className="text-sm text-gray-500 mt-2">
|
17
|
-
<strong>Personal Information: </strong>We may collect personal information that you
|
18
|
-
provide to us voluntarily, such as your name, contact information, and donation details when
|
19
|
-
you use our website or engage with our services.
|
20
|
-
</p>
|
21
|
-
<p className="text-sm text-gray-500 mt-2">
|
22
|
-
<strong>Non-Personal Information: </strong>We may also collect non-personal information,
|
23
|
-
such as aggregated data, browser type, and IP address, for analytical and statistical
|
24
|
-
purposes.
|
25
|
-
</p>
|
26
|
-
|
27
|
-
<h5 className="text-lg font-medium mt-4">2. How We Use Your Information</h5>
|
28
|
-
<p className="text-sm text-gray-500 mt-2">
|
29
|
-
<strong>Donation Processing: </strong>We use your personal information to process and
|
30
|
-
manage your donations, provide receipts, and communicate with you regarding your
|
31
|
-
contributions.
|
32
|
-
</p>
|
33
|
-
<p className="text-sm text-gray-500 mt-2">
|
34
|
-
<strong>Communication: </strong>We may use your contact information to send you updates,
|
35
|
-
newsletters, or information about our initiatives, events, and fundraising activities.
|
36
|
-
</p>
|
37
|
-
<p className="text-sm text-gray-500 mt-2">
|
38
|
-
<strong>Analytics: </strong>Non-personal information may be used for analytics and to
|
39
|
-
improve our website functionality, content, and user experience.
|
40
|
-
</p>
|
41
|
-
|
42
|
-
<h5 className="text-lg font-medium mt-4">3. Information Sharing</h5>
|
43
|
-
<p className="text-sm text-gray-500 mt-2">
|
44
|
-
We do not sell, trade, or rent your personal information to third parties. Your information
|
45
|
-
may be shared with trusted third parties, such as payment processors, solely for the purpose
|
46
|
-
of processing your donations.
|
47
|
-
</p>
|
48
|
-
|
49
|
-
<h5 className="text-lg font-medium mt-4">4. Security</h5>
|
50
|
-
<p className="text-sm text-gray-500 mt-2">
|
51
|
-
We are committed to protecting the security of your personal information. We implement
|
52
|
-
appropriate technical and organizational measures to safeguard against unauthorized access,
|
53
|
-
disclosure, alteration, and destruction of data.
|
54
|
-
</p>
|
55
|
-
|
56
|
-
<h5 className="text-lg font-medium mt-4">5. Cookies</h5>
|
57
|
-
<p className="text-sm text-gray-500 mt-2">
|
58
|
-
Our website may use cookies to enhance your browsing experience. You can manage cookie
|
59
|
-
preferences through your browser settings.
|
60
|
-
</p>
|
61
|
-
|
62
|
-
<h5 className="text-lg font-medium mt-4">6. Your Choices</h5>
|
63
|
-
<p className="text-sm text-gray-500 mt-2">
|
64
|
-
You have the right to update, correct, or delete your personal information. You can also
|
65
|
-
opt-out of receiving communications from us.
|
66
|
-
</p>
|
67
|
-
|
68
|
-
<h5 className="text-lg font-medium mt-4">7. Changes to this Privacy Policy</h5>
|
69
|
-
<p className="text-sm text-gray-500 mt-2">
|
70
|
-
We reserve the right to update this Privacy Policy. Any changes will be effective upon
|
71
|
-
posting the revised policy on our website.
|
72
|
-
</p>
|
73
|
-
|
74
|
-
<h5 className="text-lg font-medium mt-4">8. Contact Us</h5>
|
75
|
-
<p className="text-sm text-gray-500 mb-4">
|
76
|
-
If you have any questions or concerns about this Privacy Policy, please contact us.
|
77
|
-
</p>
|
78
|
-
</div>
|
79
|
-
);
|
80
|
-
}
|
81
|
-
|
82
|
-
export default Privacy;
|