eleven-solutions-common-website-unique-web 2.0.2 → 2.0.4

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.
@@ -1,386 +1,388 @@
1
- // import React from "react";
2
- // import { useState, useEffect } from "react";
3
-
4
- // import { FaPlus } from "react-icons/fa";
5
-
6
- // import { fetchUsersApi, deleteUserApi } from "../api/user";
7
-
8
- // function Users() {
9
- // const [users, setUsers] = useState<any[]>([]);
10
-
11
- // const fetchUsersData = async () => {
12
- // const data = await fetchUsersApi();
13
- // if (data) {
14
- // setUsers(data as any[]);
15
- // } else {
16
- // console.error("Failed to fetch users");
17
- // }
18
- // };
19
-
20
- // useEffect(() => {
21
- // fetchUsersData();
22
- // }, []);
23
- // // const handleNav = (e: React.FormEvent) => {
24
- // // e.preventDefault();
25
- // // window.history.pushState({}, "", "/admin/users/userform");
1
+ import React from "react";
2
+ import { useState, useEffect } from "react";
26
3
 
27
- // // // Trigger React's routing logic manually if required
28
- // // const navEvent = new PopStateEvent("popstate");
29
- // // window.dispatchEvent(navEvent);
30
- // // };
4
+ import { FaPlus } from "react-icons/fa";
31
5
 
32
- // const handleNavigation = (event: React.MouseEvent, path: string) => {
33
- // event.preventDefault();
34
- // window.history.pushState({}, "", path);
35
- // window.dispatchEvent(new PopStateEvent("popstate"));
36
- // };
6
+ import { fetchUsersApi, deleteUserApi } from "../api/user";
37
7
 
38
- // const [currentPage, setCurrentPage] = useState(1);
39
- // const itemsPerPage = 10;
8
+ function Users() {
9
+ const [users, setUsers] = useState<any[]>([]);
10
+
11
+ const fetchUsersData = async () => {
12
+ const data = await fetchUsersApi();
13
+ if (data) {
14
+ setUsers(data as any[]);
15
+ } else {
16
+ console.error("Failed to fetch users");
17
+ }
18
+ };
40
19
 
41
- // const totalPages = Math.ceil(users.length / itemsPerPage);
20
+ useEffect(() => {
21
+ fetchUsersData();
22
+ }, []);
23
+ // const handleNav = (e: React.FormEvent) => {
24
+ // e.preventDefault();
25
+ // window.history.pushState({}, "", "/admin/users/userform");
42
26
 
43
- // const handleNextPage = () => {
44
- // if (currentPage < totalPages) {
45
- // setCurrentPage(currentPage + 1);
46
- // }
47
- // };
27
+ // // Trigger React's routing logic manually if required
28
+ // const navEvent = new PopStateEvent("popstate");
29
+ // window.dispatchEvent(navEvent);
30
+ // };
48
31
 
49
- // const handlePreviousPage = () => {
50
- // if (currentPage > 1) {
51
- // setCurrentPage(currentPage - 1);
52
- // }
53
- // };
32
+ const handleNavigation = (event: React.MouseEvent, path: string) => {
33
+ event.preventDefault();
34
+ window.history.pushState({}, "", path);
35
+ window.dispatchEvent(new PopStateEvent("popstate"));
36
+ };
54
37
 
55
- // const handlePageClick = (pageNumber: number) => {
56
- // setCurrentPage(pageNumber);
57
- // };
38
+ const [currentPage, setCurrentPage] = useState(1);
39
+ const itemsPerPage = 10;
58
40
 
59
- // const paginatedUsers = users.slice(
60
- // (currentPage - 1) * itemsPerPage,
61
- // currentPage * itemsPerPage
62
- // );
41
+ const totalPages = Math.ceil(users.length / itemsPerPage);
63
42
 
64
- // const handleDeleteClick = async (id: string) => {
65
- // try {
66
- // await deleteUserApi(id);
67
- // alert("User deleted successfully");
43
+ const handleNextPage = () => {
44
+ if (currentPage < totalPages) {
45
+ setCurrentPage(currentPage + 1);
46
+ }
47
+ };
68
48
 
69
- // fetchUsersData();
70
- // } catch (error) {
71
- // console.error("Error deleting User:", error);
72
- // }
73
- // };
49
+ const handlePreviousPage = () => {
50
+ if (currentPage > 1) {
51
+ setCurrentPage(currentPage - 1);
52
+ }
53
+ };
74
54
 
75
- // // const handleEditClick = (id: string) => {
76
- // // navigate("/admin/user/userform", { state: { id } });
77
- // // };
55
+ const handlePageClick = (pageNumber: number) => {
56
+ setCurrentPage(pageNumber);
57
+ };
78
58
 
79
- // const handleEditClick = (id: string) => {
80
- // return (
81
- // <a
82
- // href={`/admin/users/userform?id=${id}`}
83
- // onClick={(e) => e.preventDefault()}
84
- // >
85
- // Edit User
86
- // </a>
87
- // );
88
- // };
59
+ const paginatedUsers = users.slice(
60
+ (currentPage - 1) * itemsPerPage,
61
+ currentPage * itemsPerPage
62
+ );
89
63
 
90
- // return (
91
- // <div className="container px-4 mx-auto mt-6">
92
- // <div className="w-3/4">
93
- // <h1 className="text-3xl font-bold text-blue-600 mb-5">Users</h1>
94
- // </div>
95
- // <div className="flex-grow ml-0 w-full mt-10">
96
- // <form className="w-full ">
97
- // <label
98
- // htmlFor="default-search"
99
- // className="mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"
100
- // >
101
- // Search
102
- // </label>
103
- // <div className="relative w-full">
104
- // <div className="absolute inset-y-0 start-0 flex items-center ps-3 pointer-events-none">
105
- // <svg
106
- // className="w-4 h-4 text-gray-500 dark:text-gray-400"
107
- // aria-hidden="true"
108
- // xmlns="http://www.w3.org/2000/svg"
109
- // fill="none"
110
- // viewBox="0 0 20 20"
111
- // >
112
- // <path
113
- // stroke="currentColor"
114
- // stroke-linecap="round"
115
- // stroke-linejoin="round"
116
- // stroke-width="2"
117
- // d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"
118
- // />
119
- // </svg>
120
- // </div>
121
- // <input
122
- // type="search"
123
- // id="default-search"
124
- // className="inline-block min-w-full p-3 ps-10 outline-none text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
125
- // placeholder="Search Users"
126
- // required
127
- // />
128
- // <button
129
- // type="submit"
130
- // className="text-white absolute end-1.5 bottom-1.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
131
- // >
132
- // Search
133
- // </button>
134
- // </div>
135
- // </form>
136
- // </div>
137
- // <div className="flex-grow ml-0 w-3/4">
138
- // <form className="w-auto">{/* Search Form */}</form>
139
- // </div>
140
- // <div className="flex-grow ml-0 mt-4 w-full">
141
- // <div className="overflow-hidden border border-gray-200 dark:border-gray-700 md:rounded-lg mt-6">
142
- // <table className="min-w-full divide-y divide-gray-200 dark:divide-gray-700">
143
- // <thead className="bg-gray-50 dark:bg-gray-800">
144
- // <tr>
145
- // <th
146
- // scope="col"
147
- // className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
148
- // >
149
- // Edit/Delete
150
- // </th>
151
- // <th
152
- // scope="col"
153
- // className="py-3.5 px-4 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
154
- // >
155
- // <div className="flex items-center gap-x-3">
156
- // <span>Name</span>
157
- // </div>
158
- // </th>
159
-
160
- // <th
161
- // scope="col"
162
- // className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
163
- // >
164
- // <button className="flex items-center gap-x-2">
165
- // <span>Email</span>
166
- // </button>
167
- // </th>
168
-
169
- // <th
170
- // scope="col"
171
- // className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
172
- // >
173
- // <button className="flex items-center gap-x-2">
174
- // <span>Mobile</span>
175
- // </button>
176
- // </th>
177
-
178
- // <th
179
- // scope="col"
180
- // className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
181
- // >
182
- // Address
183
- // </th>
184
-
185
- // <th
186
- // scope="col"
187
- // className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
188
- // >
189
- // Role Type
190
- // </th>
191
- // </tr>
192
- // </thead>
193
- // <tbody className="bg-white divide-y divide-gray-200 dark:divide-gray-700 dark:bg-gray-900">
194
- // {paginatedUsers.map((user, index) => (
195
- // <tr key={user.id || index}>
196
- // <td className="px-4 py-4 text-sm whitespace-nowrap">
197
- // <div className="flex items-center gap-x-6">
198
- // <button
199
- // onClick={() => handleDeleteClick(user.id)}
200
- // className="text-gray-500 transition-colors duration-200 dark:hover:text-red-600 dark:text-gray-300 hover:text-red-500 focus:outline-none"
201
- // >
202
- // <svg
203
- // xmlns="http://www.w3.org/2000/svg"
204
- // fill="none"
205
- // viewBox="0 0 24 24"
206
- // stroke-width="1.5"
207
- // stroke="currentColor"
208
- // className="w-5 h-5"
209
- // >
210
- // <path
211
- // stroke-linecap="round"
212
- // stroke-linejoin="round"
213
- // d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
214
- // />
215
- // </svg>
216
- // </button>
217
-
218
- // <a
219
- // href={`/admin/users/userform?id=${user.id}`}
220
- // onClick={(e) => {
221
- // e.preventDefault(); // Prevent default navigation
222
- // handleEditClick(user.id); // Trigger the edit functionality
223
- // window.location.href = `/admin/users/userform?id=${user.id}`; // Manually navigate
224
- // }}
225
- // >
226
- // <button className="text-gray-500 transition-colors duration-200 dark:hover:text-yellow-500 dark:text-gray-300 hover:text-yellow-500 focus:outline-none">
227
- // <svg
228
- // xmlns="http://www.w3.org/2000/svg"
229
- // fill="none"
230
- // viewBox="0 0 24 24"
231
- // strokeWidth="1.5"
232
- // stroke="currentColor"
233
- // className="w-5 h-5"
234
- // >
235
- // <path
236
- // strokeLinecap="round"
237
- // strokeLinejoin="round"
238
- // d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10"
239
- // />
240
- // </svg>
241
- // </button>
242
- // </a>
243
- // </div>
244
- // </td>
245
- // <td className="px-4 py-4 text-sm font-medium text-gray-700 whitespace-nowrap">
246
- // <div className="inline-flex items-center gap-x-3">
247
- // <div className="flex items-center gap-x-2">
248
- // <div>
249
- // <h2 className=" text-sm font-medium text-gray-800 dark:text-white ">
250
- // {user.name}
251
- // </h2>
252
- // </div>
253
- // </div>
254
- // </div>
255
- // </td>
256
- // <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
257
- // {user.email}
258
- // </td>
259
- // <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
260
- // {user?.mobile || "Not Provided"}
261
- // </td>
262
- // <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
263
- // {user?.address || "Not Provided"}
264
- // </td>
265
- // <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
266
- // {user.roleType === "1" ? "Guest" : "Admin"}
267
- // </td>
268
- // </tr>
269
- // ))}
270
- // </tbody>
271
- // </table>
272
- // </div>
273
-
274
- // <div className="flex items-center justify-between mt-6">
275
- // <button
276
- // onClick={handlePreviousPage}
277
- // disabled={currentPage === 1}
278
- // className="flex items-center px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 bg-white border rounded-md gap-x-2 hover:bg-gray-100 dark:bg-gray-900 dark:text-gray-200 dark:border-gray-700 dark:hover:bg-gray-800"
279
- // >
280
- // <svg
281
- // xmlns="http://www.w3.org/2000/svg"
282
- // fill="none"
283
- // viewBox="0 0 24 24"
284
- // stroke-width="1.5"
285
- // stroke="currentColor"
286
- // className="w-5 h-5 rtl:-scale-x-100"
287
- // >
288
- // <path
289
- // stroke-linecap="round"
290
- // stroke-linejoin="round"
291
- // d="M6.75 15.75L3 12m0 0l3.75-3.75M3 12h18"
292
- // />
293
- // </svg>
294
-
295
- // <span>previous</span>
296
- // </button>
297
-
298
- // <div className="items-center hidden lg:flex gap-x-3">
299
- // {Array.from({ length: totalPages }, (_, index) => (
300
- // <button
301
- // key={index + 1}
302
- // onClick={() => handlePageClick(index + 1)}
303
- // className={`px-2 py-1 text-sm ${
304
- // currentPage === index + 1
305
- // ? "text-blue-500 bg-blue-100"
306
- // : "text-gray-500 hover:bg-gray-100"
307
- // } rounded-md`}
308
- // >
309
- // {index + 1}
310
- // </button>
311
- // ))}
312
- // </div>
313
- // <button
314
- // onClick={handleNextPage}
315
- // disabled={currentPage === totalPages}
316
- // className="flex items-center px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 bg-white border rounded-md gap-x-2 hover:bg-gray-100 dark:bg-gray-900 dark:text-gray-200 dark:border-gray-700 dark:hover:bg-gray-800"
317
- // >
318
- // <span>Next</span>
319
-
320
- // <svg
321
- // xmlns="http://www.w3.org/2000/svg"
322
- // fill="none"
323
- // viewBox="0 0 24 24"
324
- // stroke-width="1.5"
325
- // stroke="currentColor"
326
- // className="w-5 h-5 rtl:-scale-x-100"
327
- // >
328
- // <path
329
- // stroke-linecap="round"
330
- // stroke-linejoin="round"
331
- // d="M17.25 8.25L21 12m0 0l-3.75 3.75M21 12H3"
332
- // />
333
- // </svg>
334
- // </button>
335
- // </div>
336
-
337
- // <div className="flex-grow ml-0 mt-4 w-0">
338
- // {/* <a href="/admin/users/userform">
339
- // <button
340
- // type="button"
341
- // className="flex items-center justify-center px-6 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-300 transform bg-blue-600 rounded-lg hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
342
- // >
343
- // <FaPlus className="mr-2 font-medium" />
344
- // User
345
- // </button>
346
- // </a> */}
347
- // <button
348
- // type="button"
349
- // onClick={(event) => handleNavigation(event, "users/userform")}
350
- // className="flex items-center justify-center px-6 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-300 transform bg-blue-600 rounded-lg hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
351
- // >
352
- // <FaPlus className="mr-2 font-medium" />
353
- // User
354
- // </button>
355
- // </div>
356
- // </div>
357
- // </div>
358
- // );
359
- // }
64
+ const handleDeleteClick = async (id: string) => {
65
+ try {
66
+ await deleteUserApi(id);
67
+ alert("User deleted successfully");
360
68
 
361
- // export default Users;
69
+ fetchUsersData();
70
+ } catch (error) {
71
+ console.error("Error deleting User:", error);
72
+ }
73
+ };
362
74
 
363
- import React from "react";
75
+ // const handleEditClick = (id: string) => {
76
+ // navigate("/admin/user/userform", { state: { id } });
77
+ // };
364
78
 
365
- function Users() {
366
- const handleNavigation = (event: React.MouseEvent, path: string) => {
367
- event.preventDefault();
368
- window.history.pushState({}, "", path);
369
- window.dispatchEvent(new PopStateEvent("popstate"));
79
+ const handleEditClick = (id: string) => {
80
+ return (
81
+ <a
82
+ href={`/admin/users/userform?id=${id}`}
83
+ onClick={(e) => e.preventDefault()}
84
+ >
85
+ Edit User
86
+ </a>
87
+ );
370
88
  };
371
89
 
372
90
  return (
373
- <div>
374
- Users
375
- <button
376
- type="button"
377
- onClick={(event) => handleNavigation(event, "/admin/users/userform")}
378
- className="flex items-center justify-center px-6 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-300 transform bg-blue-600 rounded-lg hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
379
- >
380
- User
381
- </button>
91
+ <div className="container px-4 mx-auto mt-6">
92
+ <div className="w-3/4">
93
+ <h1 className="text-3xl font-bold text-blue-600 mb-5">Users</h1>
94
+ </div>
95
+ <div className="flex-grow ml-0 w-full mt-10">
96
+ <form className="w-full ">
97
+ <label
98
+ htmlFor="default-search"
99
+ className="mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white"
100
+ >
101
+ Search
102
+ </label>
103
+ <div className="relative w-full">
104
+ <div className="absolute inset-y-0 start-0 flex items-center ps-3 pointer-events-none">
105
+ <svg
106
+ className="w-4 h-4 text-gray-500 dark:text-gray-400"
107
+ aria-hidden="true"
108
+ xmlns="http://www.w3.org/2000/svg"
109
+ fill="none"
110
+ viewBox="0 0 20 20"
111
+ >
112
+ <path
113
+ stroke="currentColor"
114
+ stroke-linecap="round"
115
+ stroke-linejoin="round"
116
+ stroke-width="2"
117
+ d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"
118
+ />
119
+ </svg>
120
+ </div>
121
+ <input
122
+ type="search"
123
+ id="default-search"
124
+ className="inline-block min-w-full p-3 ps-10 outline-none text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
125
+ placeholder="Search Users"
126
+ required
127
+ />
128
+ <button
129
+ type="submit"
130
+ className="text-white absolute end-1.5 bottom-1.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
131
+ >
132
+ Search
133
+ </button>
134
+ </div>
135
+ </form>
136
+ </div>
137
+ <div className="flex-grow ml-0 w-3/4">
138
+ <form className="w-auto">{/* Search Form */}</form>
139
+ </div>
140
+ <div className="flex-grow ml-0 mt-4 w-full">
141
+ <div className="overflow-hidden border border-gray-200 dark:border-gray-700 md:rounded-lg mt-6">
142
+ <table className="min-w-full divide-y divide-gray-200 dark:divide-gray-700">
143
+ <thead className="bg-gray-50 dark:bg-gray-800">
144
+ <tr>
145
+ <th
146
+ scope="col"
147
+ className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
148
+ >
149
+ Edit/Delete
150
+ </th>
151
+ <th
152
+ scope="col"
153
+ className="py-3.5 px-4 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
154
+ >
155
+ <div className="flex items-center gap-x-3">
156
+ <span>Name</span>
157
+ </div>
158
+ </th>
159
+
160
+ <th
161
+ scope="col"
162
+ className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
163
+ >
164
+ <button className="flex items-center gap-x-2">
165
+ <span>Email</span>
166
+ </button>
167
+ </th>
168
+
169
+ <th
170
+ scope="col"
171
+ className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
172
+ >
173
+ <button className="flex items-center gap-x-2">
174
+ <span>Mobile</span>
175
+ </button>
176
+ </th>
177
+
178
+ <th
179
+ scope="col"
180
+ className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
181
+ >
182
+ Address
183
+ </th>
184
+
185
+ <th
186
+ scope="col"
187
+ className="px-4 py-3.5 text-md font-normal text-left rtl:text-right text-gray-500 dark:text-gray-400"
188
+ >
189
+ Role Type
190
+ </th>
191
+ </tr>
192
+ </thead>
193
+ <tbody className="bg-white divide-y divide-gray-200 dark:divide-gray-700 dark:bg-gray-900">
194
+ {paginatedUsers.map((user, index) => (
195
+ <tr key={user.id || index}>
196
+ <td className="px-4 py-4 text-sm whitespace-nowrap">
197
+ <div className="flex items-center gap-x-6">
198
+ <button
199
+ onClick={() => handleDeleteClick(user.id)}
200
+ className="text-gray-500 transition-colors duration-200 dark:hover:text-red-600 dark:text-gray-300 hover:text-red-500 focus:outline-none"
201
+ >
202
+ <svg
203
+ xmlns="http://www.w3.org/2000/svg"
204
+ fill="none"
205
+ viewBox="0 0 24 24"
206
+ stroke-width="1.5"
207
+ stroke="currentColor"
208
+ className="w-5 h-5"
209
+ >
210
+ <path
211
+ stroke-linecap="round"
212
+ stroke-linejoin="round"
213
+ d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
214
+ />
215
+ </svg>
216
+ </button>
217
+
218
+ <a
219
+ href={`/admin/users/userform?id=${user.id}`}
220
+ onClick={(e) => {
221
+ e.preventDefault(); // Prevent default navigation
222
+ handleEditClick(user.id); // Trigger the edit functionality
223
+ window.location.href = `/admin/users/userform?id=${user.id}`; // Manually navigate
224
+ }}
225
+ >
226
+ <button className="text-gray-500 transition-colors duration-200 dark:hover:text-yellow-500 dark:text-gray-300 hover:text-yellow-500 focus:outline-none">
227
+ <svg
228
+ xmlns="http://www.w3.org/2000/svg"
229
+ fill="none"
230
+ viewBox="0 0 24 24"
231
+ strokeWidth="1.5"
232
+ stroke="currentColor"
233
+ className="w-5 h-5"
234
+ >
235
+ <path
236
+ strokeLinecap="round"
237
+ strokeLinejoin="round"
238
+ d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10"
239
+ />
240
+ </svg>
241
+ </button>
242
+ </a>
243
+ </div>
244
+ </td>
245
+ <td className="px-4 py-4 text-sm font-medium text-gray-700 whitespace-nowrap">
246
+ <div className="inline-flex items-center gap-x-3">
247
+ <div className="flex items-center gap-x-2">
248
+ <div>
249
+ <h2 className=" text-sm font-medium text-gray-800 dark:text-white ">
250
+ {user.name}
251
+ </h2>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ </td>
256
+ <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
257
+ {user.email}
258
+ </td>
259
+ <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
260
+ {user?.mobile || "Not Provided"}
261
+ </td>
262
+ <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
263
+ {user?.address || "Not Provided"}
264
+ </td>
265
+ <td className="px-4 py-4 text-sm text-gray-500 dark:text-gray-300 whitespace-nowrap">
266
+ {user.roleType === "1" ? "Guest" : "Admin"}
267
+ </td>
268
+ </tr>
269
+ ))}
270
+ </tbody>
271
+ </table>
272
+ </div>
273
+
274
+ <div className="flex items-center justify-between mt-6">
275
+ <button
276
+ onClick={handlePreviousPage}
277
+ disabled={currentPage === 1}
278
+ className="flex items-center px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 bg-white border rounded-md gap-x-2 hover:bg-gray-100 dark:bg-gray-900 dark:text-gray-200 dark:border-gray-700 dark:hover:bg-gray-800"
279
+ >
280
+ <svg
281
+ xmlns="http://www.w3.org/2000/svg"
282
+ fill="none"
283
+ viewBox="0 0 24 24"
284
+ stroke-width="1.5"
285
+ stroke="currentColor"
286
+ className="w-5 h-5 rtl:-scale-x-100"
287
+ >
288
+ <path
289
+ stroke-linecap="round"
290
+ stroke-linejoin="round"
291
+ d="M6.75 15.75L3 12m0 0l3.75-3.75M3 12h18"
292
+ />
293
+ </svg>
294
+
295
+ <span>previous</span>
296
+ </button>
297
+
298
+ <div className="items-center hidden lg:flex gap-x-3">
299
+ {Array.from({ length: totalPages }, (_, index) => (
300
+ <button
301
+ key={index + 1}
302
+ onClick={() => handlePageClick(index + 1)}
303
+ className={`px-2 py-1 text-sm ${
304
+ currentPage === index + 1
305
+ ? "text-blue-500 bg-blue-100"
306
+ : "text-gray-500 hover:bg-gray-100"
307
+ } rounded-md`}
308
+ >
309
+ {index + 1}
310
+ </button>
311
+ ))}
312
+ </div>
313
+ <button
314
+ onClick={handleNextPage}
315
+ disabled={currentPage === totalPages}
316
+ className="flex items-center px-5 py-2 text-sm text-gray-700 capitalize transition-colors duration-200 bg-white border rounded-md gap-x-2 hover:bg-gray-100 dark:bg-gray-900 dark:text-gray-200 dark:border-gray-700 dark:hover:bg-gray-800"
317
+ >
318
+ <span>Next</span>
319
+
320
+ <svg
321
+ xmlns="http://www.w3.org/2000/svg"
322
+ fill="none"
323
+ viewBox="0 0 24 24"
324
+ stroke-width="1.5"
325
+ stroke="currentColor"
326
+ className="w-5 h-5 rtl:-scale-x-100"
327
+ >
328
+ <path
329
+ stroke-linecap="round"
330
+ stroke-linejoin="round"
331
+ d="M17.25 8.25L21 12m0 0l-3.75 3.75M21 12H3"
332
+ />
333
+ </svg>
334
+ </button>
335
+ </div>
336
+
337
+ <div className="flex-grow ml-0 mt-4 w-0">
338
+ {/* <a href="/admin/users/userform">
339
+ <button
340
+ type="button"
341
+ className="flex items-center justify-center px-6 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-300 transform bg-blue-600 rounded-lg hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
342
+ >
343
+ <FaPlus className="mr-2 font-medium" />
344
+ User
345
+ </button>
346
+ </a> */}
347
+ <button
348
+ type="button"
349
+ onClick={(event) =>
350
+ handleNavigation(event, "/admin/users/userform")
351
+ }
352
+ className="flex items-center justify-center px-6 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-300 transform bg-blue-600 rounded-lg hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
353
+ >
354
+ <FaPlus className="mr-2 font-medium" />
355
+ User
356
+ </button>
357
+ </div>
358
+ </div>
382
359
  </div>
383
360
  );
384
361
  }
385
362
 
386
363
  export default Users;
364
+
365
+ // import React from "react";
366
+
367
+ // function Users() {
368
+ // const handleNavigation = (event: React.MouseEvent, path: string) => {
369
+ // event.preventDefault();
370
+ // window.history.pushState({}, "", path);
371
+ // window.dispatchEvent(new PopStateEvent("popstate"));
372
+ // };
373
+
374
+ // return (
375
+ // <div>
376
+ // Users
377
+ // <button
378
+ // type="button"
379
+ // onClick={(event) => handleNavigation(event, "/admin/users/userform")}
380
+ // className="flex items-center justify-center px-6 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-300 transform bg-blue-600 rounded-lg hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
381
+ // >
382
+ // User
383
+ // </button>
384
+ // </div>
385
+ // );
386
+ // }
387
+
388
+ // export default Users;