Compare commits

..

12 Commits

6 changed files with 93 additions and 46 deletions
+2 -2
View File
@@ -1,8 +1,8 @@
APP_PORT=9081 APP_PORT=9081
ESLINT_NO_DEV_ERRORS=true ESLINT_NO_DEV_ERRORS=true
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1" NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.nebula.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1" NEXT_PUBLIC_USERS_ENDPOINT="https://apigate.nebula.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_SITE_NAME='WrenchBoard' NEXT_PUBLIC_SITE_NAME='WrenchBoard'
NEXT_PUBLIC_DASH_URL='https://users.wrenchboard.com' NEXT_PUBLIC_DASH_URL='https://users.wrenchboard.com'
+30 -22
View File
@@ -1,36 +1,44 @@
"use client" "use client";
import React, { useEffect, useState } from 'react' import React, { useLayoutEffect, useState } from 'react';
//import Cookies from 'js-cookie'
export default function AcceptCookies() { export default function AcceptCookies() {
const [cookies, setCookies] = useState(true) // Safe cookie getter
function getCookie(name) {
const acceptCookies = () => { if (typeof document === 'undefined') return null; // SSR safety
// Cookies.set('useCookies', 'true') const value = `; ${document.cookie}`;
setCookies(true) const parts = value.split(`; ${name}=`);
} if (parts.length === 2) return parts.pop().split(';').shift();
return null;
}
useEffect(()=>{ const [cookies, setCookies] = useState(true); // Start as true
const useCookies = false; // Cookies.get('useCookies')
if(useCookies == 'true'){ const acceptCookies = () => {
setCookies(true) document.cookie = `use_cookies=${encodeURIComponent('true')}; path=/; max-age=31536000`; // 1 year
setCookies(true);
};
useLayoutEffect(()=>{
const useCookies = getCookie('use_cookies');
if (useCookies && decodeURIComponent(useCookies) === 'true') {
setCookies(true);
}else{ }else{
setCookies(false) setCookies(false)
} }
},[]) },[])
return ( return (
<> <>
{/* {cookies ? {cookies ? <></> : (
<></>
: */}
<div className={`${cookies ? 'slide-down' : 'slide-up'} cookies-wrapper position-fixed d-lg-flex justify-content-center align-items-center gap-5 p-2`}> <div className={`${cookies ? 'slide-down' : 'slide-up'} cookies-wrapper position-fixed d-lg-flex justify-content-center align-items-center gap-5 p-2`}>
<p className='m-0'> <p className="m-0">
This website uses cookies to provide you the best experience possible, as well as for tracking performance and marketing purposes. You can check our privacy policy for more information. By clicking &#x275B;&#x275B;Confirm&#x275C;&#x275C; or by continuing to use our website, you consent to our use of cookies. This website uses cookies to provide you the best experience possible, as well as for tracking performance and marketing purposes. You can check our privacy policy for more information. By clicking &#x275B;&#x275B;Confirm&#x275C;&#x275C; or by continuing to use our website, you consent to our use of cookies.
</p> </p>
<button onClick={acceptCookies} className='px-5 py-2'>Accept</button> <button onClick={acceptCookies} className="px-5 py-2">
Accept
</button>
</div> </div>
{/* } */} )}
</> </>
) );
} }
+28 -8
View File
@@ -31,26 +31,25 @@ function FooterHomeOne({ className }) {
<Link href="/service"> <Link href="/service">
Read More <i className="fal fa-arrow-right" /> Read More <i className="fal fa-arrow-right" />
</Link> </Link>
<div className="social mt-30"> {/* <div className="social mt-30">
<ul> <ul>
<li> <li>
<a href={site.facebook_link}> <a target='_blank' href={site.facebook_link}>
<i className="fab fa-facebook-f"/> <i className="fab fa-facebook-f"/>
</a> </a>
</li> </li>
<li> <li>
<a href={process.env.NEXT_PUBLIC_TWITTER_LINK}> <a target='_blank' href={process.env.NEXT_PUBLIC_TWITTER_LINK}>
{/* <i className="fab fa-twitter" /> */}
<i className="fab fa-x-twitter"></i> <i className="fab fa-x-twitter"></i>
</a> </a>
</li> </li>
<li> <li>
<a className="you" href={process.env.NEXT_PUBLIC_YOUTUBE_LINK}> <a target='_blank' className="you" href={process.env.NEXT_PUBLIC_YOUTUBE_LINK}>
<i className="fab fa-youtube"></i> <i className="fab fa-youtube"></i>
</a> </a>
</li> </li>
</ul> </ul>
</div> </div> */}
</div> </div>
</div> </div>
<div className="col-lg-2 col-md-6"> <div className="col-lg-2 col-md-6">
@@ -107,7 +106,7 @@ function FooterHomeOne({ className }) {
<i className="fal fa-envelope" /> {site.support_email} <i className="fal fa-envelope" /> {site.support_email}
</a> </a>
</li> </li>
<li> {/* <li>
<a href="#"> <a href="#">
<i className="fal fa-phone" /> 404-855-7966 <i className="fal fa-phone" /> 404-855-7966
</a> </a>
@@ -116,9 +115,30 @@ function FooterHomeOne({ className }) {
<a href="#"> <a href="#">
<i className="fal fa-map-marker-alt" />Atlanta, GA 30339 <i className="fal fa-map-marker-alt" />Atlanta, GA 30339
</a> </a>
</li> </li> */}
</ul> </ul>
</div> </div>
<div className='footer-about-widget'>
<div className="social mt-30">
<ul>
<li>
<a target='_blank' href={site.facebook_link}>
<i className="fab fa-facebook-f"/>
</a>
</li>
<li>
<a target='_blank' href={process.env.NEXT_PUBLIC_TWITTER_LINK}>
<i className="fab fa-x-twitter"></i>
</a>
</li>
<li>
<a target='_blank' className="you" href={process.env.NEXT_PUBLIC_YOUTUBE_LINK}>
<i className="fab fa-youtube"></i>
</a>
</li>
</ul>
</div>
</div>
</div> </div>
</div> </div>
<div className="row"> <div className="row">
+31 -11
View File
@@ -17,19 +17,38 @@ function Forms() {
terms_conditions: false terms_conditions: false
}) })
const validForm = formDetails.first_name && formDetails.last_name && formDetails.email && formDetails.phone_number && formDetails.subject && formDetails.message
const handleChange = ({target:{name, value}}) => { const handleChange = ({target:{name, value}}) => {
setFormDetails(prev => ({...prev, [name]:value})) if(name == 'terms_conditions'){
setFormDetails(prev => ({...prev, [name]:!prev.terms_conditions}))
}else{
setFormDetails(prev => ({...prev, [name]:value}))
}
} }
const [requestStatus, setRequestStatus] = useState({loading:false, status:false, msg:''}) const [requestStatus, setRequestStatus] = useState({loading:false, status:false, msg:''})
const validForm = formDetails.first_name && formDetails.last_name && formDetails.email && formDetails.phone_number && formDetails.subject && formDetails.message
function handleSubmit(e) { function handleSubmit(e) {
e.preventDefault() e.preventDefault()
const isChecked = formDetails.terms_conditions
setRequestStatus({loading:true, status:false, msg:''}) setRequestStatus({loading:true, status:false, msg:''})
if(!validForm){ if(!validForm){
setRequestStatus({loading:false, status:false, msg:'please, fill all fields'}) setRequestStatus({loading:false, status:false, msg:'Please, fill all fields'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
if(!(/^\d{7,15}$/.test(formDetails.phone_number))){
setRequestStatus({loading:false, status:false, msg:'Please, enter a valid phone number'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
if(!isChecked){
setRequestStatus({loading:false, status:false, msg:'Please, Accept Terms & Conditions'})
setTimeout(()=>{ setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''}) setRequestStatus({loading:false, status:false, msg:''})
},3000) },3000)
@@ -79,7 +98,7 @@ function Forms() {
<div className="contact--info-area"> <div className="contact--info-area">
<h3>Get in touch</h3> <h3>Get in touch</h3>
<p>Looking for help? Fill the form and start a new discussion.</p> <p>Looking for help? Fill the form and start a new discussion.</p>
<div className="single-info"> {/* <div className="single-info">
<h5>Headquaters</h5> <h5>Headquaters</h5>
<p> <p>
<i className="fal fa-home"></i> <i className="fal fa-home"></i>
@@ -93,7 +112,7 @@ function Forms() {
{process.env.NEXT_PUBLIC_SUPPORT_PHONE} {process.env.NEXT_PUBLIC_SUPPORT_PHONE}
<br /> <br />
</p> </p>
</div> </div> */}
<div className="single-info"> <div className="single-info">
<h5>Support</h5> <h5>Support</h5>
<p> <p>
@@ -135,14 +154,14 @@ function Forms() {
type="email" type="email"
name="email" name="email"
placeholder="Email Address" placeholder="Email Address"
maxLength={35} maxLength={55}
onChange={handleChange} onChange={handleChange}
value={formDetails.email} value={formDetails.email}
/> />
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
<input <input
type="number" type="text"
name="phone_number" name="phone_number"
placeholder="Phone Number" placeholder="Phone Number"
maxLength={15} maxLength={15}
@@ -151,7 +170,7 @@ function Forms() {
/> />
</div> </div>
<div className="col-md-12"> <div className="col-md-12">
<input type="text" name="subject" placeholder="Subject" maxLength={35} value={formDetails.subject} onChange={handleChange} /> <input type="text" name="subject" placeholder="Subject" maxLength={150} value={formDetails.subject} onChange={handleChange} />
</div> </div>
<div className="col-md-12"> <div className="col-md-12">
<textarea <textarea
@@ -159,6 +178,7 @@ function Forms() {
placeholder="How can we help?" placeholder="How can we help?"
onChange={handleChange} onChange={handleChange}
value={formDetails.message} value={formDetails.message}
maxLength={350}
></textarea> ></textarea>
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
+2 -2
View File
@@ -36,7 +36,7 @@ export default function RootLayout({
{children} {children}
<AcceptCookies /> <AcceptCookies />
</body> </body>
<Script id='chat-support'> {/* <Script id='chat-support'>
{` {`
var LHC_API = LHC_API || {}; var LHC_API = LHC_API || {};
LHC_API.args = { LHC_API.args = {
@@ -62,7 +62,7 @@ export default function RootLayout({
s.parentNode.insertBefore(po, s); s.parentNode.insertBefore(po, s);
})(); })();
`} `}
</Script> </Script> */}
</html> </html>
); );
} }
-1
View File
@@ -11,7 +11,6 @@
"dependencies": { "dependencies": {
"axios": "^1.7.2", "axios": "^1.7.2",
"caniuse-lite": "^1.0.30001651", "caniuse-lite": "^1.0.30001651",
"js-cookie": "^3.0.5",
"next": "14.2.5", "next": "14.2.5",
"react": "^18", "react": "^18",
"react-dom": "^18", "react-dom": "^18",