Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6046401aa2 | |||
| 3f6cb6afba | |||
| a52479e11f | |||
| df80cf8aae | |||
| f33b6635e5 | |||
| 86a2118816 | |||
| aba3369459 | |||
| 56b3242918 | |||
| 760c1eb2a0 | |||
| eebf5ec002 | |||
| 0deabf1614 | |||
| b4d5a4a542 | |||
| edf4b3ad30 | |||
| 8150953549 | |||
| 909553f085 | |||
| c884a67ab1 | |||
| 066ab774be | |||
| 99e0f3f45d | |||
| cfa7a6ce02 | |||
| 88baab38ed | |||
| f359634bfd | |||
| 864c59ec70 | |||
| 653b489c32 | |||
| 4e43acf825 | |||
| a244d544de | |||
| c42a5f7cd6 | |||
| 99723d55a0 | |||
| 69c7028c49 | |||
| 3b39158f32 | |||
| 82c6a2a6e1 | |||
| 9c0d7204ac | |||
| 6d2e385c18 |
@@ -5,8 +5,8 @@ REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api
|
|||||||
|
|
||||||
REACT_APP_SITE_NAME='WrenchBoard'
|
REACT_APP_SITE_NAME='WrenchBoard'
|
||||||
REACT_APP_DASH_URL='https://dev-users.wrenchboard.com'
|
REACT_APP_DASH_URL='https://dev-users.wrenchboard.com'
|
||||||
REACT_APP_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login"
|
REACT_APP_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login?cnt=ng"
|
||||||
REACT_APP_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup"
|
REACT_APP_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup?cnt=ng"
|
||||||
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
|
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
|
||||||
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
|
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
|
||||||
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
|
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
|
||||||
@@ -17,3 +17,9 @@ REACT_APP_SUPPORT_PHONE='404 855-7966'
|
|||||||
REACT_APP_SUPPORT_PHONE_NG='(+420) 336 476 328'
|
REACT_APP_SUPPORT_PHONE_NG='(+420) 336 476 328'
|
||||||
REACT_APP_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
|
REACT_APP_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
|
||||||
REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
|
REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
|
||||||
|
|
||||||
|
#AGENT LINK
|
||||||
|
REACT_APP_AGENT_LINK='https://dev-agents.wrenchboard.com'
|
||||||
|
|
||||||
|
#SOCKETS ENDS
|
||||||
|
REACT_APP_PRIMARY_SOCKET="https://socket-dev.wrenchboard.com"
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api
|
|||||||
|
|
||||||
REACT_APP_SITE_NAME='WrenchBoard'
|
REACT_APP_SITE_NAME='WrenchBoard'
|
||||||
REACT_APP_DASH_URL='https://dev-users.wrenchboard.com'
|
REACT_APP_DASH_URL='https://dev-users.wrenchboard.com'
|
||||||
REACT_APP_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login"
|
REACT_APP_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login?cnt=ng"
|
||||||
REACT_APP_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup"
|
REACT_APP_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup?cnt=ng"
|
||||||
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
|
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
|
||||||
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
|
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
|
||||||
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
|
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
|
||||||
@@ -16,4 +16,10 @@ REACT_APP_SUPPORT_EMAIL='support@wrenchboard.com'
|
|||||||
REACT_APP_SUPPORT_PHONE='404 855-7966'
|
REACT_APP_SUPPORT_PHONE='404 855-7966'
|
||||||
REACT_APP_SUPPORT_PHONE_NG='(+420) 336 476 328'
|
REACT_APP_SUPPORT_PHONE_NG='(+420) 336 476 328'
|
||||||
REACT_APP_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
|
REACT_APP_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
|
||||||
REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
|
REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
|
||||||
|
|
||||||
|
#AGENT LINK
|
||||||
|
REACT_APP_AGENT_LINK='https://dev-agents.wrenchboard.com'
|
||||||
|
|
||||||
|
#SOCKETS ENDS
|
||||||
|
REACT_APP_PRIMARY_SOCKET="https://socket-dev.wrenchboard.com"
|
||||||
@@ -5,8 +5,8 @@ REACT_APP_USERS_ENDPOINT="https://apigate.orion.g1.wrenchboard.com/en/wrench/api
|
|||||||
|
|
||||||
REACT_APP_SITE_NAME='WrenchBoard'
|
REACT_APP_SITE_NAME='WrenchBoard'
|
||||||
REACT_APP_DASH_URL='https://users.wrenchboard.com'
|
REACT_APP_DASH_URL='https://users.wrenchboard.com'
|
||||||
REACT_APP_DASH_URL_LOGIN="https://users.wrenchboard.com/login"
|
REACT_APP_DASH_URL_LOGIN="https://users.wrenchboard.com/login?cnt=ng"
|
||||||
REACT_APP_DASH_URL_SIGNUP="https://users.wrenchboard.com/signup"
|
REACT_APP_DASH_URL_SIGNUP="https://users.wrenchboard.com/signup?cnt=ng"
|
||||||
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
|
REACT_APP_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
|
||||||
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
|
REACT_APP_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
|
||||||
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
|
REACT_APP_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
|
||||||
@@ -16,4 +16,10 @@ REACT_APP_SUPPORT_EMAIL='support@wrenchboard.com'
|
|||||||
REACT_APP_SUPPORT_PHONE='404 855-7966'
|
REACT_APP_SUPPORT_PHONE='404 855-7966'
|
||||||
REACT_APP_SUPPORT_PHONE_NG='(+420) 336 476 328'
|
REACT_APP_SUPPORT_PHONE_NG='(+420) 336 476 328'
|
||||||
REACT_APP_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
|
REACT_APP_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
|
||||||
REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
|
REACT_APP_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
|
||||||
|
|
||||||
|
#AGENT LINK
|
||||||
|
REACT_APP_AGENT_LINK='https://agents.wrenchboard.com'
|
||||||
|
|
||||||
|
#SOCKETS ENDS
|
||||||
|
REACT_APP_PRIMARY_SOCKET="https://socket-dev.wrenchboard.com"
|
||||||
@@ -10,11 +10,13 @@
|
|||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-countup": "^6.0.0",
|
"react-countup": "^6.0.0",
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
|
"react-owl-carousel": "^2.3.3",
|
||||||
"react-router-dom": "^5.3.0",
|
"react-router-dom": "^5.3.0",
|
||||||
"react-scripts": "5.0.0",
|
"react-scripts": "5.0.0",
|
||||||
"react-slick": "^0.28.1",
|
"react-slick": "^0.28.1",
|
||||||
"simple-react-lightbox": "^3.6.9-0",
|
"simple-react-lightbox": "^3.6.9-0",
|
||||||
"slick-carousel": "^1.8.1",
|
"slick-carousel": "^1.8.1",
|
||||||
|
"socket.io-client": "^4.4.1",
|
||||||
"web-vitals": "^1.0.1"
|
"web-vitals": "^1.0.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -25,6 +25,10 @@
|
|||||||
work correctly both with client-side routing and a non-root public URL.
|
work correctly both with client-side routing and a non-root public URL.
|
||||||
Learn how to configure a non-root public URL by running `npm run build`.
|
Learn how to configure a non-root public URL by running `npm run build`.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!-- link to font awesome -->
|
||||||
|
<link rel="stylesheet" href="//use.fontawesome.com/releases/v6.4.2/css/all.css">
|
||||||
|
|
||||||
<title>WrenchBoard</title>
|
<title>WrenchBoard</title>
|
||||||
<meta property="og:image" content="%PUBLIC_URL%/favicon.png" />
|
<meta property="og:image" content="%PUBLIC_URL%/favicon.png" />
|
||||||
<meta property="business:contact_data:street_address" content="Cumberland Pkwy">
|
<meta property="business:contact_data:street_address" content="Cumberland Pkwy">
|
||||||
@@ -64,4 +68,7 @@
|
|||||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-- plugins js -->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,7 +1,27 @@
|
|||||||
|
import { useEffect } from 'react';
|
||||||
import Routes from './Routes';
|
import Routes from './Routes';
|
||||||
|
import { Redirect, useLocation } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { SocketValues } from './Contexts/SocketIOContext';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return <Routes />;
|
let { joinRoom } = SocketValues() // function to join market room, to be able to receive market job post update
|
||||||
|
|
||||||
|
const {pathname} = useLocation()
|
||||||
|
|
||||||
|
useEffect(()=>{ // sends an event to the socket to enable user join a room to be able to receive update when jobs enters the market
|
||||||
|
joinRoom('full-markets-jobs')
|
||||||
|
},[])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{pathname.startsWith('/@') ?
|
||||||
|
<Redirect to='/app' />
|
||||||
|
:
|
||||||
|
<Routes />
|
||||||
|
}
|
||||||
|
</>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import React, { createContext, useContext, useEffect, useState } from "react";
|
||||||
|
|
||||||
|
|
||||||
|
import io from "socket.io-client";
|
||||||
|
|
||||||
|
let SocketIOContext = createContext({})
|
||||||
|
|
||||||
|
export default function SocketIOContextProvider({children}) {
|
||||||
|
|
||||||
|
const socket = io.connect(process.env.REACT_APP_PRIMARY_SOCKET);
|
||||||
|
|
||||||
|
// //Room State
|
||||||
|
// const [room, setRoom] = useState("");
|
||||||
|
|
||||||
|
// // Messages States
|
||||||
|
// const [message, setMessage] = useState("");
|
||||||
|
const [socketMsgReceived, setSocketMsgReceived] = useState({type:'', msg:''});
|
||||||
|
|
||||||
|
const joinRoom = (room) => {
|
||||||
|
if (room !== "") {
|
||||||
|
socket.emit("join_room", room);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
socket.on("received_refreshmarket_jobs", (data) => {
|
||||||
|
setSocketMsgReceived({type: 'market', msg: data?.message});
|
||||||
|
});
|
||||||
|
}, [socket]);
|
||||||
|
|
||||||
|
let values = {
|
||||||
|
socket,
|
||||||
|
joinRoom,
|
||||||
|
setSocketMsgReceived,
|
||||||
|
socketMsgReceived,
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SocketIOContext.Provider value={values}>
|
||||||
|
{children}
|
||||||
|
</SocketIOContext.Provider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const SocketValues = () => {
|
||||||
|
return useContext(SocketIOContext)
|
||||||
|
}
|
||||||
@@ -5,14 +5,9 @@ import Contact from './components/Contact';
|
|||||||
import Error from './components/Error';
|
import Error from './components/Error';
|
||||||
import Loader from './components/Helper/Loader';
|
import Loader from './components/Helper/Loader';
|
||||||
import ScrollToTop from './components/Helper/ScrollToTop';
|
import ScrollToTop from './components/Helper/ScrollToTop';
|
||||||
// import HomeEight from './components/HomeEight';
|
|
||||||
// import HomeFive from './components/HomeFive';
|
|
||||||
// import HomeFour from './components/HomeFour';
|
|
||||||
import HomeOne from './components/HomeOne';
|
import HomeOne from './components/HomeOne';
|
||||||
import HomeSeven from './components/HomeSeven';
|
import HomeSeven from './components/HomeSeven';
|
||||||
import HomeSix from './components/HomeSix';
|
import HomeSix from './components/HomeSix';
|
||||||
// import HomeThree from './components/HomeThree';
|
|
||||||
// import Hometwo from './components/HomeTwo';
|
|
||||||
import News from './components/News';
|
import News from './components/News';
|
||||||
import SingleNews from './components/News/SingleNews';
|
import SingleNews from './components/News/SingleNews';
|
||||||
import Service from './components/Service';
|
import Service from './components/Service';
|
||||||
@@ -21,49 +16,49 @@ import UseCases from './components/UseCases';
|
|||||||
import Privacy from './components/Service/Privacy';
|
import Privacy from './components/Service/Privacy';
|
||||||
import Terms from './components/Service/Terms';
|
import Terms from './components/Service/Terms';
|
||||||
import FAQ from './components/FAQ/Index';
|
import FAQ from './components/FAQ/Index';
|
||||||
|
import AppDownload from './components/AppDownload/AppDownload';
|
||||||
|
|
||||||
function Routes() {
|
function Routes() {
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
});
|
});
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}, 2000);
|
}, 2000);
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{loading && (
|
{loading && (
|
||||||
<div className={`appie-loader ${loading ? 'active' : ''}`}>
|
<div className={`appie-loader ${loading ? 'active' : ''}`}>
|
||||||
<Loader />
|
<Loader />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className={`appie-visible ${loading === false ? 'active' : ''}`}>
|
<div className={`appie-visible ${loading === false ? 'active' : ''}`}>
|
||||||
<Router>
|
<ScrollToTop>
|
||||||
<ScrollToTop>
|
<Switch>
|
||||||
<Switch>
|
{/*<Route exact path="/" component={HomeSix} />*/}
|
||||||
{/*<Route exact path="/" component={HomeSix} />*/}
|
|
||||||
|
|
||||||
<Route exact path="/" component={HomeOne} />
|
<Route exact path="/" component={HomeOne} />
|
||||||
<Route exact path="/news" component={News} />
|
<Route exact path="/news" component={News} />
|
||||||
<Route exact path="/blog" component={News} />
|
<Route exact path="/blog" component={News} />
|
||||||
<Route exact path="/use-cases" component={UseCases} />
|
<Route exact path="/use-cases" component={UseCases} />
|
||||||
<Route exact path="/news/single-news" component={SingleNews} />
|
<Route exact path="/news/single-news" component={SingleNews} />
|
||||||
<Route exact path="/service" component={Service} />
|
<Route exact path="/service" component={Service} />
|
||||||
<Route exact path="/terms" component={Terms} />
|
<Route exact path="/terms" component={Terms} />
|
||||||
<Route exact path="/privacy" component={Privacy} />
|
<Route exact path="/privacy" component={Privacy} />
|
||||||
<Route exact path="/about-us" component={AboutUs} />
|
<Route exact path="/about-us" component={AboutUs} />
|
||||||
<Route exact path="/contact" component={Contact} />
|
<Route exact path="/contact" component={Contact} />
|
||||||
<Route exact path="/faq" component={FAQ} />
|
<Route exact path="/faq" component={FAQ} />
|
||||||
<Route exact path="/error" component={Error} />
|
<Route exact path="/error" component={Error} />
|
||||||
<Route component={Error} />
|
<Route exact path="/app" component={AppDownload} />
|
||||||
</Switch>
|
<Route component={Error} />
|
||||||
</ScrollToTop>
|
</Switch>
|
||||||
</Router>
|
</ScrollToTop>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Routes;
|
export default Routes;
|
||||||
|
|||||||
@@ -899,6 +899,11 @@ p {
|
|||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.appie-title .earn-rewards {
|
||||||
|
background-color: #f54747!important;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
.header-nav-box .appie-btn-box {
|
.header-nav-box .appie-btn-box {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@@ -5903,6 +5908,22 @@ blockquote cite {
|
|||||||
|
|
||||||
.appie-error-area {
|
.appie-error-area {
|
||||||
padding-top: 250px;
|
padding-top: 250px;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
background: url("../images/wrenchng-page-notfound.jpg") center/cover;
|
||||||
|
position: relative;
|
||||||
|
/* z-index: 1; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.appie-error-area::before{
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: #cdcdcd;
|
||||||
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.appie-error-content span {
|
.appie-error-content span {
|
||||||
@@ -7563,7 +7584,11 @@ blockquote cite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ab-social a.twi {
|
.ab-social a.twi {
|
||||||
background: #00aced;
|
background: #fff;
|
||||||
|
color: #0e1133;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ab-social a.you {
|
.ab-social a.you {
|
||||||
@@ -8339,4 +8364,33 @@ blockquote cite {
|
|||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-duration: .5s;
|
animation-duration: .5s;
|
||||||
animation-fill-mode: forwards; */
|
animation-fill-mode: forwards; */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -----------Interface_Section-Css-Start----------------- */
|
||||||
|
|
||||||
|
/* interface wraper */
|
||||||
|
.interface_section .screen_slider {
|
||||||
|
margin-top: 35px;
|
||||||
|
/* min-height: 520px; */
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* interface images */
|
||||||
|
.interface_section .owl-item .screen_frame_img img {
|
||||||
|
transform: scale(.9);
|
||||||
|
border: 2px solid #000;
|
||||||
|
border-radius: 20px;
|
||||||
|
transition: 1s all;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 520px;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.interface_section .owl-item.center .screen_frame_img img {
|
||||||
|
transform: scale(1);
|
||||||
|
border: 3px solid #000;
|
||||||
|
padding: 5px;
|
||||||
}
|
}
|
||||||
@@ -117,6 +117,27 @@ font-size: 15px;
|
|||||||
margin-top: -20px;
|
margin-top: -20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.app-download.options{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-download.options .main-btn {
|
||||||
|
color: #0e1133;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 3px solid #3EAFCC;
|
||||||
|
padding: 2px 112px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-download.appie-hero-content h5 {
|
||||||
|
color: #51B5D0;
|
||||||
|
/* border-color: #fff; */
|
||||||
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 300px) and (max-width: 1024px) {
|
@media only screen and (min-width: 300px) and (max-width: 1024px) {
|
||||||
.testimonial-about-slider-active .testimonial-box {
|
.testimonial-about-slider-active .testimonial-box {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
|
|||||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 626 KiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 765 KiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 690 KiB |
|
After Width: | Height: | Size: 485 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 100 KiB |
@@ -0,0 +1,11 @@
|
|||||||
|
import HomeOneHeader from '../HomeOne/HomeOneHeader';
|
||||||
|
import AppDownloadDetails from './AppDownloadDetails';
|
||||||
|
|
||||||
|
export default function AppDownload() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<HomeOneHeader showLogoOnly={true} />
|
||||||
|
<AppDownloadDetails />
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import heroThumbOne from '../../assets/images/app-thumb-1.png';
|
||||||
|
import heroThumbOne1 from '../../assets/images/app-thumb-2.png';
|
||||||
|
|
||||||
|
import heroThumbTwo from '../../assets/images/app-pic.png';
|
||||||
|
import CustomSlider from '../customSlider/CustomSlider';
|
||||||
|
|
||||||
|
const AppDownloadDetails = () => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section className="appie-hero-area">
|
||||||
|
<div className="container">
|
||||||
|
<div className="row align-items-center">
|
||||||
|
<div className="col-lg-6">
|
||||||
|
<div className="app-download appie-hero-content appie-hero-content-6">
|
||||||
|
<h5 className='title'>Download from</h5>
|
||||||
|
<div className='flex app-download options'>
|
||||||
|
<ul>
|
||||||
|
<li className=''>
|
||||||
|
<a className="item-2" target='_blank' href={process.env.REACT_APP_APPLE_APP}>
|
||||||
|
<i className="fab fa-apple"></i>
|
||||||
|
<span>
|
||||||
|
Available on the <span>App Store</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className=''>
|
||||||
|
<a className="item-2" target='_blank' href={process.env.REACT_APP_ANDROID_APP}>
|
||||||
|
<i className="fab fa-google-play"></i>
|
||||||
|
<span>
|
||||||
|
Available on the <span>Google Play</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h5>OR</h5>
|
||||||
|
<a target='_blank' href={process.env.REACT_APP_DASH_URL_SIGNUP} className='main-btn'>
|
||||||
|
Register Online
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 className="appie-title"> Turn Chores into Exciting Challenges and Earn <span className='earn-rewards px-2'>Rewards!</span> </h1>
|
||||||
|
<p>Your place to set family goals and reward achievements. Find tasks to earn from, or build a tasks portfolio and find others to perform tasks for you.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-lg-6">
|
||||||
|
<div className="appie-hero-thumb">
|
||||||
|
<div
|
||||||
|
className="thumb wow animated fadeInUp"
|
||||||
|
data-wow-duration="2000ms"
|
||||||
|
data-wow-delay="200ms"
|
||||||
|
>
|
||||||
|
{/* <img src={heroThumbOne} alt="WrenchBoard" /> */}
|
||||||
|
<div style={{ width: '350px', margin: 'auto' }}>
|
||||||
|
<CustomSlider
|
||||||
|
images={[heroThumbOne, heroThumbOne1, heroThumbOne]}
|
||||||
|
speed='5'
|
||||||
|
indicatorColor='#333'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="thumb-2 wow animated fadeInRight"
|
||||||
|
data-wow-duration="2000ms"
|
||||||
|
data-wow-delay="600ms"
|
||||||
|
>
|
||||||
|
<img src={heroThumbTwo} alt="" width="100%" height="100%" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AppDownloadDetails
|
||||||
@@ -33,8 +33,8 @@ function Forms() {
|
|||||||
|
|
||||||
const callRet = ContactData(callData);
|
const callRet = ContactData(callData);
|
||||||
console.log('You clicked submit========> '+ callRet);
|
console.log('You clicked submit========> '+ callRet);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -82,7 +82,7 @@ function Forms() {
|
|||||||
<i className="fab fa-facebook-f"></i>
|
<i className="fab fa-facebook-f"></i>
|
||||||
</a>
|
</a>
|
||||||
<a className="twi" href={process.env.REACT_APP_TWITTER_LINK}>
|
<a className="twi" href={process.env.REACT_APP_TWITTER_LINK}>
|
||||||
<i className="fab fa-twitter"></i>
|
<i className="fab fa-x-twitter"></i>
|
||||||
</a>
|
</a>
|
||||||
<a className="you" href="#">
|
<a className="you" href="#">
|
||||||
<i className="fab fa-youtube"></i>
|
<i className="fab fa-youtube"></i>
|
||||||
|
|||||||
@@ -1,29 +1,24 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import blogOne from '../../assets/images/blog-1.jpg';
|
import blogOne from '../../assets/images/blog-1.jpg';
|
||||||
import blogTwo from '../../assets/images/blog-2.jpg';
|
import blogTwo from '../../assets/images/blog-2.jpg';
|
||||||
import blogThree from '../../assets/images/blog-3.jpg';
|
import blogThree from '../../assets/images/blog-3.jpg';
|
||||||
import JobsData from '../../Services/JobsData';
|
import JobsData from '../../Services/JobsData';
|
||||||
import getConfig from './../../Config/config'
|
import getConfig from './../../Config/config'
|
||||||
import CountDownTimer from '../Helper/CountDownTimer';
|
import CountDownTimer from '../Helper/CountDownTimer';
|
||||||
|
import { SocketValues } from '../../Contexts/SocketIOContext';
|
||||||
|
|
||||||
class CurrentJobsHero extends Component {
|
let CurrentJobsHero = () => {
|
||||||
|
|
||||||
constructor() {
|
let {socketMsgReceived} = SocketValues() // destructure FROM SOCKET
|
||||||
// debugger;
|
|
||||||
super();
|
|
||||||
this.state = { jobsDataResults: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
async componentDidMount(){
|
|
||||||
// debugger;
|
|
||||||
JobsData().then(res => {
|
|
||||||
this.setState({jobsDataResults:res.data.result_list});
|
|
||||||
}).catch(err => {
|
|
||||||
console.log('startjoblist error', err)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
titleLen(title){
|
var site = getConfig()[0];
|
||||||
|
|
||||||
|
var dashUrl = process.env.REACT_APP_DASH_URL;
|
||||||
|
|
||||||
|
let [jobs, setJobs] = useState([])
|
||||||
|
|
||||||
|
function titleLen(title){
|
||||||
let maxl = 45;
|
let maxl = 45;
|
||||||
title.replace('/', ' ');
|
title.replace('/', ' ');
|
||||||
title.replace('www.', '');
|
title.replace('www.', '');
|
||||||
@@ -32,107 +27,106 @@ class CurrentJobsHero extends Component {
|
|||||||
|
|
||||||
return (title.length > maxl)? title.substring(0,maxl-2)+'...': title;
|
return (title.length > maxl)? title.substring(0,maxl-2)+'...': title;
|
||||||
}
|
}
|
||||||
// if (jobsDataResults ()== null){
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
render() {
|
|
||||||
var site = getConfig()[0];
|
|
||||||
if ( this.state.jobsDataResults== undefined ){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var dashUrl = process.env.REACT_APP_DASH_URL;
|
|
||||||
|
|
||||||
if (this.state.jobsDataResults.length == 0){
|
useEffect(()=>{
|
||||||
return <></>;
|
JobsData().then(res => {
|
||||||
}
|
setJobs(res.data.result_list);
|
||||||
return (
|
}).catch(err => {
|
||||||
<>
|
console.log('startjoblist error', err)
|
||||||
<section className="appie-blog-area">
|
})
|
||||||
<div className="container">
|
},[socketMsgReceived])
|
||||||
<div className="row">
|
|
||||||
<p className='pl-15'>Recent jobs.</p>
|
|
||||||
|
|
||||||
{
|
return (
|
||||||
this.state.jobsDataResults.map((i, index) => {
|
<>
|
||||||
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
|
{jobs.length < 1 ?
|
||||||
var postDt = new Date(i.expire).toLocaleDateString("en-US", options);
|
null
|
||||||
let hourRemaining = Math.floor(Math.abs(new Date() - new Date(i.expire)) / (1000*60*60))
|
:
|
||||||
|
<section className="appie-blog-area">
|
||||||
|
<div className="container">
|
||||||
|
<div className="row">
|
||||||
|
<p className='pl-15'>Recent jobs.</p>
|
||||||
|
|
||||||
if(index < 5){
|
{
|
||||||
return (
|
jobs.map((i, index) => {
|
||||||
<div className="col-12">
|
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
|
||||||
<div
|
var postDt = new Date(i.expire).toLocaleDateString("en-US", options);
|
||||||
className="container-fluid mb-10 wow animated fadeInUp boxBorder d-flex align-items-center rounded"
|
let hourRemaining = Math.floor(Math.abs(new Date() - new Date(i.expire)) / (1000*60*60))
|
||||||
data-wow-duration="3000ms"
|
|
||||||
data-wow-delay="200ms"
|
if(index < 5){
|
||||||
>
|
return (
|
||||||
<div className="content d-flex flex-column justify-content-between" style={{height: '50px', width: '100%'}}>
|
<div className="col-12">
|
||||||
<div className="titleBox">
|
<div
|
||||||
<h3 className="title_hero">
|
className="container-fluid mb-10 wow animated fadeInUp boxBorder d-flex align-items-center rounded"
|
||||||
<a href={dashUrl}>
|
data-wow-duration="3000ms"
|
||||||
<span className='font_black_hero'>{this.titleLen(i.title)} </span>
|
data-wow-delay="200ms"
|
||||||
</a>
|
>
|
||||||
</h3>
|
<div className="content d-flex flex-column justify-content-between" style={{height: '50px', width: '100%'}}>
|
||||||
</div>
|
<div className="titleBox">
|
||||||
<div className='p-0 container-fluid'>
|
<h3 className="title_hero">
|
||||||
{/*<div><hr /></div>*/}
|
<a href={dashUrl}>
|
||||||
{/*<div className="blog-meta">*/}
|
<span className='font_black_hero'>{titleLen(i.title)} </span>
|
||||||
{/* <ul>*/}
|
</a>
|
||||||
{/* <li className="expire">*/}
|
</h3>
|
||||||
{/* <a href={dashUrl} className='d-block'>*/}
|
</div>
|
||||||
{/* <div className='font_red d-flex align-items-start'>*/}
|
<div className='p-0 container-fluid'>
|
||||||
{/* <div className='pr-2'>Expires :</div>*/}
|
{/*<div><hr /></div>*/}
|
||||||
{/* <CountDownTimer targetDate={postDt}/>*/}
|
{/*<div className="blog-meta">*/}
|
||||||
{/* </div>*/}
|
{/* <ul>*/}
|
||||||
{/* </a>*/}
|
{/* <li className="expire">*/}
|
||||||
{/* </li>*/}
|
{/* <a href={dashUrl} className='d-block'>*/}
|
||||||
{/* </ul>*/}
|
{/* <div className='font_red d-flex align-items-start'>*/}
|
||||||
{/*</div>*/}
|
{/* <div className='pr-2'>Expires :</div>*/}
|
||||||
<div className='lmoreTxt d-flex justify-content-between align-items-center'>
|
{/* <CountDownTimer targetDate={postDt}/>*/}
|
||||||
<p className='text-danger' style={{fontSize: '12px'}}>{hourRemaining > 24 ? `available in the next ${hourRemaining%24} ${hourRemaining%24 > 1 ? 'days':'day'}` : `available in the next 12hrs 30mins`}</p>
|
{/* </div>*/}
|
||||||
<a href={dashUrl} className=''>
|
{/* </a>*/}
|
||||||
Learn More <i className="fal fa-arrow-right" />
|
{/* </li>*/}
|
||||||
</a>
|
{/* </ul>*/}
|
||||||
</div>
|
{/*</div>*/}
|
||||||
</div>
|
<div className='lmoreTxt d-flex justify-content-between align-items-center'>
|
||||||
|
<p className='text-danger' style={{fontSize: '12px'}}>{hourRemaining > 24 ? `available in the next ${hourRemaining%24} ${hourRemaining%24 > 1 ? 'days':'day'}` : `available in the next 12hrs 30mins`}</p>
|
||||||
|
<a href={dashUrl} className=''>
|
||||||
|
Learn More <i className="fal fa-arrow-right" />
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
</div>
|
||||||
}
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
<div className="col-md-6 col-xl-12">
|
})
|
||||||
<div
|
}
|
||||||
className="appie-blog-item mt-15 wow animated fadeInUp"
|
|
||||||
data-wow-duration="3000ms"
|
|
||||||
data-wow-delay="600ms"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div className="pt-10 d-flex flex-column gap-2">
|
|
||||||
|
|
||||||
<h3 className="title">
|
<div className="col-md-6 col-xl-12">
|
||||||
<a href={dashUrl}>
|
<div
|
||||||
Find more opportunities at our marketplace.
|
className="appie-blog-item mt-15 wow animated fadeInUp"
|
||||||
</a>
|
data-wow-duration="3000ms"
|
||||||
</h3>
|
data-wow-delay="600ms"
|
||||||
<a className='align-self-end' href="https://users.wrenchboard.com/login">
|
>
|
||||||
Login now <i className="fal fa-arrow-right" />
|
|
||||||
</a>
|
<div className="pt-10 d-flex flex-column gap-2">
|
||||||
</div>
|
|
||||||
</div>
|
<h3 className="title">
|
||||||
|
<a href={dashUrl}>
|
||||||
|
Find more opportunities at our marketplace.
|
||||||
|
</a>
|
||||||
|
</h3>
|
||||||
|
<a className='align-self-end' href="https://users.wrenchboard.com/login">
|
||||||
|
Login now <i className="fal fa-arrow-right" />
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
|
||||||
</>
|
</div>
|
||||||
);
|
</div>
|
||||||
}
|
</section>
|
||||||
|
}
|
||||||
|
</>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default CurrentJobsHero;
|
export default CurrentJobsHero;
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import OwlCarousel from 'react-owl-carousel'
|
||||||
|
import localImgLoad from '../../lib/localImgLoad'
|
||||||
|
|
||||||
|
import 'owl.carousel/dist/assets/owl.carousel.css'
|
||||||
|
import 'owl.carousel/dist/assets/owl.theme.default.css'
|
||||||
|
|
||||||
|
export default function FeaturedScreen() {
|
||||||
|
|
||||||
|
const screen_slider = {
|
||||||
|
loop:true,
|
||||||
|
margin:10,
|
||||||
|
nav:false,
|
||||||
|
autoplay: true,
|
||||||
|
smartSpeed: 1500,
|
||||||
|
center: true,
|
||||||
|
dots: true,
|
||||||
|
responsive:{
|
||||||
|
0:{
|
||||||
|
items:2
|
||||||
|
},
|
||||||
|
600:{
|
||||||
|
items:3
|
||||||
|
},
|
||||||
|
1000:{
|
||||||
|
items:5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section className="appie-service-area pt-50 pb-50 interface_section">
|
||||||
|
<div className="container-fluid">
|
||||||
|
<div className="appie-traffic-title section_title text-center" data-aos="fade-up" data-aos-duration="1500" data-aos-delay="100" style={{padding: '0'}}>
|
||||||
|
<h3 className='title'>App Screens <div className='section_sub_title'></div></h3>
|
||||||
|
<p>Simplicity of use is our goal always. Here are some of our featured screens.</p>
|
||||||
|
</div>
|
||||||
|
<div className="screen_slider" >
|
||||||
|
<OwlCarousel id="screen_slider" {...screen_slider} className="owl-carousel owl-theme owl-loaded owl-drag">
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_1.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_2.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_3.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_4.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_5.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_6.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="item">
|
||||||
|
<div className="screen_frame_img">
|
||||||
|
<img src={localImgLoad('images/slider/slider_7.png')} alt="image" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</OwlCarousel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -4,136 +4,139 @@ import logo from '../../assets/images/wrenchboard.png';
|
|||||||
import getConfig from './../../Config/config'
|
import getConfig from './../../Config/config'
|
||||||
|
|
||||||
function FooterHomeOne({ className }) {
|
function FooterHomeOne({ className }) {
|
||||||
var site = getConfig()[0];
|
var site = getConfig()[0];
|
||||||
let newDate = new Date().getFullYear()
|
let newDate = new Date().getFullYear()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<section className={`appie-footer-area ${className || ''}`}>
|
<section className={`appie-footer-area ${className || ''}`}>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-lg-4 col-md-6">
|
<div className="col-lg-4 col-md-6">
|
||||||
<div className="footer-about-widget">
|
<div className="footer-about-widget">
|
||||||
<div className="logo">
|
<div className="logo">
|
||||||
<a href="#">
|
<a href="#">
|
||||||
<img src={logo} alt="WrenchBoard" />
|
<img src={logo} alt="WrenchBoard" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
<p>
|
|
||||||
{`It is simple. You can do something that somebody is ready to pay you for. WrenchBoard is the platform to connect you with earning opportunities. `}
|
|
||||||
</p>
|
|
||||||
<a href="/service">
|
|
||||||
Read More <i className="fal fa-arrow-right" />
|
|
||||||
</a>
|
|
||||||
<div className="social mt-30">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href={site.facebook_link}>
|
|
||||||
<i className="fab fa-facebook-f" />
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href={process.env.REACT_APP_TWITTER_LINK}>
|
|
||||||
<i className="fab fa-twitter" />
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="col-lg-2 col-md-6">
|
|
||||||
<div className="footer-navigation">
|
|
||||||
<h4 className="title">Company</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<Link to="/about-us">About Us</Link>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<Link to="/service">Our Services</Link>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/use-cases">Use Cases</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<Link to="/blog">Blog</Link>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="col-lg-3 col-md-6">
|
|
||||||
<div className="footer-navigation">
|
|
||||||
<h4 className="title">Support</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<Link to="/contact">Contact</Link>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/faq">Faqs</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="https://blog.wrenchboard.com/resources/">Resources</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/privacy">Privacy Policy</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/terms">Terms of use</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="col-lg-3 col-md-6">
|
|
||||||
<div className="footer-widget-info">
|
|
||||||
<h4 className="title">Get In Touch</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#">
|
|
||||||
<i className="fal fa-envelope" /> {site.support_email}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">
|
|
||||||
<i className="fal fa-phone" /> 404 855-7966
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">
|
|
||||||
<i className="fal fa-map-marker-alt" />Atlanta,GA 30339
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="row">
|
|
||||||
<div className="col-lg-12">
|
|
||||||
<div className="footer-copyright d-flex align-items-center justify-content-between pt-2">
|
|
||||||
<div className="apps-download-btn">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href={process.env.APPLE_APP}>
|
|
||||||
<i className="fab fa-apple" /> Download for iOS
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a className="item-2" href={process.env.REACT_APP_ANDROID_APP}>
|
|
||||||
<i className="fab fa-google-play" /> Download for
|
|
||||||
Android
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div className="copyright-text">
|
|
||||||
<p>Copyright © {newDate} WrenchBoard. All rights reserved.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
<p>
|
||||||
</>
|
{`It is simple. You can do something that somebody is ready to pay you for. WrenchBoard is the platform to connect you with earning opportunities. `}
|
||||||
);
|
</p>
|
||||||
|
<a href="/service">
|
||||||
|
Read More <i className="fal fa-arrow-right" />
|
||||||
|
</a>
|
||||||
|
<div className="social mt-30">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href={site.facebook_link}>
|
||||||
|
<i className="fab fa-facebook-f" />
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a className="twi" href={process.env.REACT_APP_TWITTER_LINK}>
|
||||||
|
<i className="fab fa-x-twitter"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-lg-2 col-md-6">
|
||||||
|
<div className="footer-navigation">
|
||||||
|
<h4 className="title">Company</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<Link to="/about-us">About Us</Link>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<Link to="/service">Our Services</Link>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/use-cases">Use Cases</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a target='_blank' href={process.env.REACT_APP_AGENT_LINK}>Agent</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<Link to="/blog">Blog</Link>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-lg-3 col-md-6">
|
||||||
|
<div className="footer-navigation">
|
||||||
|
<h4 className="title">Support</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<Link to="/contact">Contact</Link>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/faq">Faqs</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://blog.wrenchboard.com/resources/">Resources</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/privacy">Privacy Policy</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/terms">Terms of use</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="col-lg-3 col-md-6">
|
||||||
|
<div className="footer-widget-info">
|
||||||
|
<h4 className="title">Get In Touch</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="#">
|
||||||
|
<i className="fal fa-envelope" /> {site.support_email}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#">
|
||||||
|
<i className="fal fa-phone" /> 404-855-7966
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#">
|
||||||
|
<i className="fal fa-map-marker-alt" />Atlanta, GA 30339
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-lg-12">
|
||||||
|
<div className="footer-copyright d-flex align-items-center justify-content-between pt-2">
|
||||||
|
<div className="apps-download-btn">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href={process.env.APPLE_APP}>
|
||||||
|
<i className="fab fa-apple" /> Download for iOS
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a className="item-2" href={process.env.REACT_APP_ANDROID_APP}>
|
||||||
|
<i className="fab fa-google-play" /> Download for
|
||||||
|
Android
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div className="copyright-text">
|
||||||
|
<p>Copyright © {newDate} WrenchBoard. All rights reserved.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default FooterHomeOne;
|
export default FooterHomeOne;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ function HomeNigeria() {
|
|||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li className=''>
|
<li className=''>
|
||||||
<a className="item-2" href={process.env.REACT_APP_APPLE_APP}>
|
<a className="item-2" target='_blank' href={process.env.REACT_APP_APPLE_APP}>
|
||||||
<i className="fab fa-apple"></i>
|
<i className="fab fa-apple"></i>
|
||||||
<span>
|
<span>
|
||||||
Available on the <span>App Store</span>
|
Available on the <span>App Store</span>
|
||||||
@@ -26,7 +26,7 @@ function HomeNigeria() {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li className=''>
|
<li className=''>
|
||||||
<a className="item-2" href={process.env.REACT_APP_ANDROID_APP}>
|
<a className="item-2" target='_blank' href={process.env.REACT_APP_ANDROID_APP}>
|
||||||
<i className="fab fa-google-play"></i>
|
<i className="fab fa-google-play"></i>
|
||||||
<span>
|
<span>
|
||||||
Available on the <span>Google Play</span>
|
Available on the <span>Google Play</span>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import StickyMenu from '../../lib/StickyMenu';
|
|||||||
import Navigation from '../Navigation';
|
import Navigation from '../Navigation';
|
||||||
import getConfig from './../../Config/config'
|
import getConfig from './../../Config/config'
|
||||||
|
|
||||||
function HomeOneHeader({ action }) {
|
function HomeOneHeader({ action, showLogoOnly = false }) {
|
||||||
var site = getConfig()[0];
|
var site = getConfig()[0];
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
StickyMenu();
|
StickyMenu();
|
||||||
@@ -21,27 +21,29 @@ function HomeOneHeader({ action }) {
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-lg-6 col-md-1 col-sm-1 order-3 order-sm-2">
|
{!showLogoOnly && <>
|
||||||
<div className="appie-header-main-menu">
|
<div className="col-lg-6 col-md-1 col-sm-1 order-3 order-sm-2">
|
||||||
<Navigation />
|
<div className="appie-header-main-menu">
|
||||||
</div>
|
<Navigation />
|
||||||
</div>
|
|
||||||
<div className="col-lg-4 col-md-7 col-sm-6 col-6 order-2 order-sm-3">
|
|
||||||
<div className="appie-btn-box text-right">
|
|
||||||
<a className="login-btn" href={process.env.REACT_APP_DASH_URL_LOGIN}>
|
|
||||||
<i className="fal fa-user" /> Login
|
|
||||||
</a>
|
|
||||||
<a className="main-btn ml-30" href={process.env.REACT_APP_DASH_URL_SIGNUP}>
|
|
||||||
Get Started
|
|
||||||
</a>
|
|
||||||
<div
|
|
||||||
onClick={(e) => action(e)}
|
|
||||||
className="toggle-btn ml-30 canvas_open d-lg-none d-block"
|
|
||||||
>
|
|
||||||
<i className="fa fa-bars" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div className="col-lg-4 col-md-7 col-sm-6 col-6 order-2 order-sm-3">
|
||||||
|
<div className="appie-btn-box text-right">
|
||||||
|
<a className="login-btn" href={process.env.REACT_APP_DASH_URL_LOGIN}>
|
||||||
|
<i className="fal fa-user" /> Login
|
||||||
|
</a>
|
||||||
|
<a className="main-btn ml-30" href={process.env.REACT_APP_DASH_URL_SIGNUP}>
|
||||||
|
Get Started
|
||||||
|
</a>
|
||||||
|
<div
|
||||||
|
onClick={(e) => action(e)}
|
||||||
|
className="toggle-btn ml-30 canvas_open d-lg-none d-block"
|
||||||
|
>
|
||||||
|
<i className="fa fa-bars" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import IconOne from '../../assets/images/icon/usericon.png';
|
import IconOne from '../../assets/images/icon/account_login.png';
|
||||||
import IconTwo from '../../assets/images/icon/Findtaskicon.png';
|
import IconTwo from '../../assets/images/icon/task.png';
|
||||||
import IconThree from '../../assets/images/icon/taskicon.png';
|
import IconThree from '../../assets/images/icon/target.png';
|
||||||
import IconFour from '../../assets/images/icon/walleticon.png';
|
import IconFour from '../../assets/images/icon/reward.png';
|
||||||
|
|
||||||
// import FirstSlide from '../../assets/images/icon/Untitledxyz.png';
|
// import FirstSlide from '../../assets/images/icon/Untitledxyz.png';
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import TrafficHomeTwo from './TrafficHomeTwo';
|
|||||||
import WrenchBoardHome from './WrenchBoardHome';
|
import WrenchBoardHome from './WrenchBoardHome';
|
||||||
import RecentJobsOne from './RecentJobsOne';
|
import RecentJobsOne from './RecentJobsOne';
|
||||||
import HomeNigeria from "./HomeNigeria";
|
import HomeNigeria from "./HomeNigeria";
|
||||||
|
import FeaturedScreen from './FeaturedScreen';
|
||||||
//import BlogData from './../../Services/BlogData';
|
//import BlogData from './../../Services/BlogData';
|
||||||
|
|
||||||
function HomeOne() {
|
function HomeOne() {
|
||||||
@@ -36,6 +37,7 @@ function HomeOne() {
|
|||||||
{/*<FaqHomeOne />*/}
|
{/*<FaqHomeOne />*/}
|
||||||
{/*<TrafficHomeOne />*/}
|
{/*<TrafficHomeOne />*/}
|
||||||
<TrafficHomeTwo />
|
<TrafficHomeTwo />
|
||||||
|
<FeaturedScreen />
|
||||||
{/*<TestimonialHomeOne />*/}
|
{/*<TestimonialHomeOne />*/}
|
||||||
{/*<TeamHomeOne />*/}
|
{/*<TeamHomeOne />*/}
|
||||||
{/*<PricingHomeOne />*/}
|
{/*<PricingHomeOne />*/}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ function MissionStatement() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
title: "Get you work done",
|
title: "Get your work done",
|
||||||
content: "For other tasks you need to get done, we will be there for smooth engagement",
|
content: "For other tasks you need to get done, we will be there for smooth engagement",
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ function Service() {
|
|||||||
<HeroNews
|
<HeroNews
|
||||||
title="Services"
|
title="Services"
|
||||||
breadcrumb={[
|
breadcrumb={[
|
||||||
{ link: '/', title: 'home' },
|
{ link: '/', title: 'Home' },
|
||||||
{ link: '/service', title: 'Service' },
|
{ link: '/service', title: 'Service' },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
|
||||||
|
function CustomSlider({ images, speed, indicatorColor, indicatorClass }) {
|
||||||
|
let [sliderCount, setSliderCount] = useState(0);
|
||||||
|
|
||||||
|
const sliderStart = (count) => {
|
||||||
|
if (count + 1 && typeof count == "number") {
|
||||||
|
return setSliderCount(count);
|
||||||
|
}
|
||||||
|
if (sliderCount >= images.length - 1) {
|
||||||
|
return setSliderCount(0);
|
||||||
|
}
|
||||||
|
setSliderCount((prev) => prev + 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const sliderInterval = setInterval(() => {
|
||||||
|
sliderStart();
|
||||||
|
}, speed * 1000);
|
||||||
|
return () => {
|
||||||
|
clearInterval(sliderInterval);
|
||||||
|
};
|
||||||
|
}, [sliderCount]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className=""
|
||||||
|
style={{
|
||||||
|
width: "100%",
|
||||||
|
margin: "auto",
|
||||||
|
position: "relative",
|
||||||
|
overflow: "hidden",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className="" style={{ width: "100%", display: "flex" }}>
|
||||||
|
{images.map((image, index) => (
|
||||||
|
<img
|
||||||
|
key={index}
|
||||||
|
src={image}
|
||||||
|
alt="image"
|
||||||
|
style={{
|
||||||
|
width: "100%",
|
||||||
|
minWidth: "100%",
|
||||||
|
maxHeight: "695px",
|
||||||
|
height: "100%",
|
||||||
|
position: "relative",
|
||||||
|
transition: ".9s",
|
||||||
|
right: `${
|
||||||
|
sliderCount == index ? sliderCount * 100 + "%" : "-100%"
|
||||||
|
}`,
|
||||||
|
opacity: `${sliderCount == index ? "1" : "0"}`,
|
||||||
|
}}
|
||||||
|
// style={{minWidth:'100%', height:'auto', position:'relative', transition:'.9s', right:`${sliderCount*100}%`, opacity:`${sliderCount == index ? '1':'0'}`}}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="custom_indicators"
|
||||||
|
style={{
|
||||||
|
margin: "10px auto",
|
||||||
|
display: "flex",
|
||||||
|
gap: "10px",
|
||||||
|
justifyContent: "center",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{images.map((image, index) => (
|
||||||
|
<div
|
||||||
|
key={index}
|
||||||
|
onClick={() => sliderStart(index)}
|
||||||
|
className={`custom_indicator ${indicatorClass}`}
|
||||||
|
style={{
|
||||||
|
backgroundColor: `${
|
||||||
|
sliderCount == index ? `${indicatorColor}` : ""
|
||||||
|
}`,
|
||||||
|
width: "15px",
|
||||||
|
height: "15px",
|
||||||
|
borderRadius: "999px",
|
||||||
|
border: `1px solid ${indicatorColor}`,
|
||||||
|
cursor: "pointer",
|
||||||
|
}}
|
||||||
|
></div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default CustomSlider;
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
|
import { BrowserRouter as Router } from 'react-router-dom';
|
||||||
|
import SocketIOContextProvider from './Contexts/SocketIOContext';
|
||||||
|
|
||||||
import App from './App';
|
import App from './App';
|
||||||
import './assets/css/bootstrap.min.css';
|
import './assets/css/bootstrap.min.css';
|
||||||
import './assets/css/custom-animated.css';
|
import './assets/css/custom-animated.css';
|
||||||
@@ -12,7 +15,11 @@ import './assets/css/style.css';
|
|||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<React.StrictMode>
|
<React.StrictMode>
|
||||||
<App />
|
<Router>
|
||||||
|
<SocketIOContextProvider>
|
||||||
|
<App />
|
||||||
|
</SocketIOContextProvider>
|
||||||
|
</Router>
|
||||||
</React.StrictMode>,
|
</React.StrictMode>,
|
||||||
document.getElementById('root')
|
document.getElementById('root')
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
const localImgLoad = (location) => require(`../assets/${location}`);
|
||||||
|
export default localImgLoad
|
||||||