+ Please enter your email related to your champs bay account +
++ Use these awesome forms to login or create new account in your + project for free. +
+Do you have an account?
+ + Sign Up + ++ Please insert your new password you'd like to use +
++ Use these awesome forms to login or create new account in your + project for free. +
+Already have an account?
+ + Sign in + +But before continuing to log in, make sure you verify your email through the link we sent you !
*/} + {showModal && ( ++ Get 25% off with our sponsor promo code +
+ + + ++ You successfully purchased products at champs bay. +
+no image found!
+ )} +{productDescription}
++ No related products available. +
+ )} +No product found
+ ) : ( +no image found!
+ )} +{productDescription}
+No ratings yet.
+ )} ++ We have sent a verification code via your email please enter here +
+Wait for new OTP code ........
+ ) : ( + <> +Didn't get the code?
+ + Resend code + + > + )} +no image found
+ )} +no image found!
+ )} +{productDescription}
+No ratings yet.
+ )} ++ {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext() + )} + | + ) + } +
---|
+ {flexRender(cell.column.columnDef.cell, cell.getContext())} + | + ))} +
+ {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext(), + )} + | + ))} +
---|
+ {flexRender( + cell.column.columnDef.cell, + cell.getContext(), + )} + | + ))} +
+ {productDescription.length < 50 + ? productDescription + : `${productDescription.substring(0, 50)}...`} +
++ {`You have ${carts.length} item in your cart `}{' '} +
+ {carts.map((prod, index: number) => ( +last Active
++ {message? message.length > 20 ? message.substring(0,20) + "...": message: "No message yet"} +
+
+
+
+ {' '}
+
{items.description}
++ Special Offer +
+{nameuse}
+ + {error &&{error}
} +Price:{price.toLocaleString()} RWF
++ {bodyText} +
+ +{feedback}
+No ratings yet.
+ )} +seller summary
+No categories available
+ )} +Price
++ No + | ++ Product name + | ++ Stock Level + | ++ Price + | ++ Discount + | ++ View + | + {Role === 'seller' && ( + <> + {' '} ++ Delete + | ++ Update + | ++ Status + | + > + )} +
---|---|---|---|---|---|---|---|---|
+ {index + 1} + | +{product.productName} | +{product.stockLevel} | ++ {product.productPrice?.toLocaleString()}{' '} + {product.productCurrency} + | +{product.productDiscount} | ++ + + + | + {Role === 'seller' && ( + <> ++ + | ++ + + + | ++ + | + > + )} +
+ {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext(), + )} + | + ))} +
---|
+ {flexRender( + cell.column.columnDef.cell, + cell.getContext(), + )} + | + ))} +
No product found
+ ) : ( +{el.firstName}
+{el.email}
+{el.categoryName}
+no image found!
+ )} +{productDescription}
++ No related products available. +
+ )} +{user.User?.Role.name}
++ {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext(), + )} + | + ))} +
---|
+ {flexRender( + cell.column.columnDef.cell, + cell.getContext(), + )} + | + ))} +
+ {name} +
+no image found!
+ )} +{productDescription}
+No ratings yet.
+ )} +
+
No new notification
+updateallNotifications()} + > + Mark all as Read +
+ )} ++ {notification.message} +
+
+
setNotificationCounter(notificationCounter + 5)} + > + Load More +
+ )} +9 ? 'right-[5px] top-[1px]' : 'right-[9px] top-[3px]'}`} + > + {count > 9 ? `9+` : count} +
+ + +); + +export default PingCounter; diff --git a/src/components/updatepassword.tsx b/src/components/updatepassword.tsx new file mode 100644 index 0000000..81b48a0 --- /dev/null +++ b/src/components/updatepassword.tsx @@ -0,0 +1,95 @@ +'use client'; + +import React, { useEffect, useState } from 'react'; + +import { useDispatch, useSelector } from 'react-redux'; +import { AppDispatch, RootState } from '@/redux/store'; +import { getUserProfile } from '@/redux/slices/profileSlice'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { useRouter } from 'next/navigation'; +import GlobarPopUp from '@/components/UsablePopUp'; +import { Button } from '@/components/Button'; +import InputBox from '@/components/InputBox'; +import PopUpModels from '@/components/PopUpModels'; +import { Updatepassword } from '@/validations/Updatepassword'; +import UpdatePassword from '@/hooks/updatepassword'; + +import { useForm } from 'react-hook-form'; +export interface FormDataType { + confirmPassword: string; + newPassword: string; + oldPassword: string; +} + +interface Properities { + handleshow: () => void; + showlModal: boolean; +} + +const UpdatePasswords: React.FC